Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: src/trusted/service_runtime/sys_memory.c

Issue 1234393005: A mechanism to identify/forbid/"rewrite" non-temporal instructions (and other) (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client.git@master
Patch Set: Fixing nits Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013 The Native Client Authors. All rights reserved. 2 * Copyright (c) 2013 The Native Client Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be 3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file. 4 * found in the LICENSE file.
5 */ 5 */
6 6
7 #include "native_client/src/trusted/service_runtime/sys_memory.h" 7 #include "native_client/src/trusted/service_runtime/sys_memory.h"
8 8
9 #include <errno.h> 9 #include <errno.h>
10 #include <string.h> 10 #include <string.h>
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
260 uintptr_t endaddr; 260 uintptr_t endaddr;
261 int mapping_code; 261 int mapping_code;
262 uintptr_t map_result; 262 uintptr_t map_result;
263 int holding_app_lock; 263 int holding_app_lock;
264 struct nacl_abi_stat stbuf; 264 struct nacl_abi_stat stbuf;
265 size_t alloc_rounded_length; 265 size_t alloc_rounded_length;
266 nacl_off64_t file_size; 266 nacl_off64_t file_size;
267 nacl_off64_t file_bytes; 267 nacl_off64_t file_bytes;
268 nacl_off64_t host_rounded_file_bytes; 268 nacl_off64_t host_rounded_file_bytes;
269 size_t alloc_rounded_file_bytes; 269 size_t alloc_rounded_file_bytes;
270 uint32_t val_flags;
270 271
271 holding_app_lock = 0; 272 holding_app_lock = 0;
272 ndp = NULL; 273 ndp = NULL;
273 274
274 allowed_flags = (NACL_ABI_MAP_FIXED | NACL_ABI_MAP_SHARED 275 allowed_flags = (NACL_ABI_MAP_FIXED | NACL_ABI_MAP_SHARED
275 | NACL_ABI_MAP_PRIVATE | NACL_ABI_MAP_ANONYMOUS); 276 | NACL_ABI_MAP_PRIVATE | NACL_ABI_MAP_ANONYMOUS);
276 277
277 usraddr = (uintptr_t) start; 278 usraddr = (uintptr_t) start;
278 279
279 if (0 != (flags & ~allowed_flags)) { 280 if (0 != (flags & ~allowed_flags)) {
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 (void *) NULL, 715 (void *) NULL,
715 length, 716 length,
716 NACL_ABI_PROT_READ | NACL_ABI_PROT_WRITE, 717 NACL_ABI_PROT_READ | NACL_ABI_PROT_WRITE,
717 NACL_ABI_MAP_PRIVATE, 718 NACL_ABI_MAP_PRIVATE,
718 offset); 719 offset);
719 if (NaClPtrIsNegErrno(&image_sys_addr)) { 720 if (NaClPtrIsNegErrno(&image_sys_addr)) {
720 map_result = image_sys_addr; 721 map_result = image_sys_addr;
721 goto cleanup; 722 goto cleanup;
722 } 723 }
723 724
725 val_flags = nap->pnacl_mode ? DISABLE_NONTEMPORALS : 0;
724 /* Ask validator / validation cache */ 726 /* Ask validator / validation cache */
725 NaClMetadataFromNaClDescCtor(&metadata, ndp); 727 NaClMetadataFromNaClDescCtor(&metadata, ndp);
726 validator_status = NACL_FI("MMAP_FORCE_MMAP_VALIDATION_FAIL", 728 validator_status = NACL_FI("MMAP_FORCE_MMAP_VALIDATION_FAIL",
727 (*nap->validator-> 729 (*nap->validator->
728 Validate)(usraddr, 730 Validate)(usraddr,
729 (uint8_t *) image_sys_addr, 731 (uint8_t *) image_sys_addr,
730 length, 732 length,
731 0, /* stubout_mode: no */ 733 0, /* stubout_mode: no */
734 val_flags,
732 1, /* readonly_text: yes */ 735 1, /* readonly_text: yes */
733 nap->cpu_features, 736 nap->cpu_features,
734 &metadata, 737 &metadata,
735 nap->validation_cache), 738 nap->validation_cache),
736 NaClValidationFailed); 739 NaClValidationFailed);
737 NaClLog(3, "NaClSysMmap: prot_exec, validator_status %d\n", 740 NaClLog(3, "NaClSysMmap: prot_exec, validator_status %d\n",
738 validator_status); 741 validator_status);
739 NaClMetadataDtor(&metadata); 742 NaClMetadataDtor(&metadata);
740 743
741 if (NaClValidationSucceeded == validator_status) { 744 if (NaClValidationSucceeded == validator_status) {
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 size_t length, 1368 size_t length,
1366 int prot) { 1369 int prot) {
1367 struct NaClApp *nap = natp->nap; 1370 struct NaClApp *nap = natp->nap;
1368 1371
1369 NaClLog(3, "Entered NaClSysMprotect(0x%08"NACL_PRIxPTR", " 1372 NaClLog(3, "Entered NaClSysMprotect(0x%08"NACL_PRIxPTR", "
1370 "0x%08"NACL_PRIxPTR", 0x%"NACL_PRIxS", 0x%x)\n", 1373 "0x%08"NACL_PRIxPTR", 0x%"NACL_PRIxS", 0x%x)\n",
1371 (uintptr_t) natp, (uintptr_t) start, length, prot); 1374 (uintptr_t) natp, (uintptr_t) start, length, prot);
1372 1375
1373 return NaClSysMprotectInternal(nap, start, length, prot); 1376 return NaClSysMprotectInternal(nap, start, length, prot);
1374 } 1377 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698