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

Unified Diff: src/trusted/service_runtime/nacl_signal_common.c

Issue 12218089: Remove nacl_user[] array lookup from syscall code path on x86-64 and MIPS (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: src/trusted/service_runtime/nacl_signal_common.c
diff --git a/src/trusted/service_runtime/nacl_signal_common.c b/src/trusted/service_runtime/nacl_signal_common.c
index 41174b66e9e71b60c40b1882eb2ef4c8e6989bab..5a3be45a995f153980897d78d4e9a1e12b8c7ef7 100644
--- a/src/trusted/service_runtime/nacl_signal_common.c
+++ b/src/trusted/service_runtime/nacl_signal_common.c
@@ -67,7 +67,7 @@ ssize_t NaClSignalErrorMessage(const char *msg) {
*
* Note that this should only be called from the thread in which the
* signal occurred, because on x86-64 it reads a thread-local variable
- * (nacl_thread_index).
+ * (nacl_current_thread).
*/
void NaClSignalContextGetCurrentThread(const struct NaClSignalContext *sig_ctx,
int *is_untrusted,
@@ -89,18 +89,16 @@ void NaClSignalContextGetCurrentThread(const struct NaClSignalContext *sig_ctx,
#elif (NACL_ARCH(NACL_BUILD_ARCH) == NACL_x86 && NACL_BUILD_SUBARCH == 64) || \
NACL_ARCH(NACL_BUILD_ARCH) == NACL_arm || \
NACL_ARCH(NACL_BUILD_ARCH) == NACL_mips
- uint32_t current_thread_index = NaClTlsGetIdx();
- if (NACL_TLS_INDEX_INVALID == current_thread_index) {
+ struct NaClAppThread *natp = NaClTlsGetCurrentThread();
+ if (natp == NULL) {
*is_untrusted = 0;
*result_thread = NULL;
} else {
- struct NaClAppThread *thread =
- NaClAppThreadGetFromIndex(current_thread_index);
/*
* Get the address of an arbitrary local, stack-allocated variable,
* just for the purpose of doing a sanity check.
*/
- void *pointer_into_stack = &thread;
+ void *pointer_into_stack = &natp;
/*
* Sanity check: Make sure the stack we are running on is not
* allocated in untrusted memory. This checks that the alternate
@@ -116,10 +114,10 @@ void NaClSignalContextGetCurrentThread(const struct NaClSignalContext *sig_ctx,
* insecure there.
*/
if (!NACL_WINDOWS) {
- DCHECK(!NaClIsUserAddr(thread->nap, (uintptr_t) pointer_into_stack));
+ DCHECK(!NaClIsUserAddr(natp->nap, (uintptr_t) pointer_into_stack));
}
- *is_untrusted = NaClIsUserAddr(thread->nap, sig_ctx->prog_ctr);
- *result_thread = thread;
+ *is_untrusted = NaClIsUserAddr(natp->nap, sig_ctx->prog_ctr);
+ *result_thread = natp;
}
#else
# error Unsupported architecture

Powered by Google App Engine
This is Rietveld 408576698