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

Unified Diff: trunk/src/components/nacl/browser/nacl_process_host.cc

Issue 413063003: Revert 285028 "Pepper: Remove LOAD_MODULE SRPC call in SFI mode." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 5 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: trunk/src/components/nacl/browser/nacl_process_host.cc
===================================================================
--- trunk/src/components/nacl/browser/nacl_process_host.cc (revision 285116)
+++ trunk/src/components/nacl/browser/nacl_process_host.cc (working copy)
@@ -250,7 +250,6 @@
NaClProcessHost::NaClProcessHost(const GURL& manifest_url,
base::File nexe_file,
- NaClFileToken nexe_token,
ppapi::PpapiPermissions permissions,
int render_view_id,
uint32 permission_bits,
@@ -263,7 +262,6 @@
const base::FilePath& profile_directory)
: manifest_url_(manifest_url),
nexe_file_(nexe_file.Pass()),
- nexe_token_(nexe_token),
permissions_(permissions),
#if defined(OS_WIN)
process_launched_by_broker_(false),
@@ -822,6 +820,12 @@
if (uses_nonsfi_mode_) {
// Currently, non-SFI mode is supported only on Linux.
#if defined(OS_LINUX)
+ // nexe_file_ still keeps the ownership at this moment, because |params|
+ // may just be destroyed before sending IPC is properly processed.
+ // Note that although we set auto_close=true for FileDescriptor's
+ // constructor, it is not automatically handled in its destructor as RAII.
+ params.nexe_file =
+ base::FileDescriptor(nexe_file_.GetPlatformFile(), true);
// In non-SFI mode, we do not use SRPC. Make sure that the socketpair is
// not created.
DCHECK_EQ(internal_->socket_for_sel_ldr, NACL_INVALID_HANDLE);
@@ -836,11 +840,6 @@
params.uses_irt = uses_irt_;
params.enable_dyncode_syscalls = enable_dyncode_syscalls_;
- // TODO(teravest): Resolve the file tokens right now instead of making the
- // loader send IPC to resolve them later.
- params.nexe_token_lo = nexe_token_.lo;
- params.nexe_token_hi = nexe_token_.hi;
-
const ChildProcessData& data = process_->GetData();
if (!ShareHandleToSelLdr(data.handle,
internal_->socket_for_sel_ldr, true,
@@ -892,13 +891,14 @@
#endif
}
- if (!uses_nonsfi_mode_) {
+ // Here we are about to send the IPC, so release file descriptors to delegate
+ // the ownership to the message.
+ if (uses_nonsfi_mode_) {
+ nexe_file_.TakePlatformFile();
+ } else {
internal_->socket_for_sel_ldr = NACL_INVALID_HANDLE;
}
- params.nexe_file = IPC::TakeFileHandleForProcess(nexe_file_.Pass(),
- process_->GetData().handle);
-
process_->Send(new NaClProcessMsg_Start(params));
return true;
}
« no previous file with comments | « trunk/src/components/nacl/browser/nacl_process_host.h ('k') | trunk/src/components/nacl/common/nacl_host_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698