Move setuid() hack where it belongs.
This commit is contained in:
parent
6f912993ff
commit
f24f987b95
1 changed files with 13 additions and 13 deletions
|
@ -1159,19 +1159,6 @@ endpoint_t *endpoint;
|
||||||
init_pci(rp, child_proc_nr_e);
|
init_pci(rp, child_proc_nr_e);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The purpose of non-blocking forks is to avoid involving VFS in the forking
|
|
||||||
* process, because VFS may be blocked on a sendrec() to a MFS that is
|
|
||||||
* waiting for a endpoint update for a dead driver. We have just published
|
|
||||||
* that update, but VFS may still be blocked. As a result, VFS may not yet
|
|
||||||
* have received PM's fork message. Hence, if we call mapdriver5()
|
|
||||||
* immediately, VFS may not know about the process and thus refuse to add the
|
|
||||||
* driver entry. The following temporary hack works around this by forcing
|
|
||||||
* blocking communication from PM to VFS. Once VFS has been made non-blocking
|
|
||||||
* towards MFS instances, this hack and the entire fork_nb() call can go.
|
|
||||||
*/
|
|
||||||
if (use_copy)
|
|
||||||
setuid(0);
|
|
||||||
|
|
||||||
/* Publish the new system service. */
|
/* Publish the new system service. */
|
||||||
s = publish_service(rp);
|
s = publish_service(rp);
|
||||||
if (s != OK) {
|
if (s != OK) {
|
||||||
|
@ -1192,6 +1179,19 @@ endpoint_t *endpoint;
|
||||||
return(s); /* return error */
|
return(s); /* return error */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The purpose of non-blocking forks is to avoid involving VFS in the forking
|
||||||
|
* process, because VFS may be blocked on a sendrec() to a MFS that is
|
||||||
|
* waiting for a endpoint update for a dead driver. We have just published
|
||||||
|
* that update, but VFS may still be blocked. As a result, VFS may not yet
|
||||||
|
* have received PM's fork message. Hence, if we call mapdriver5()
|
||||||
|
* immediately, VFS may not know about the process and thus refuse to add the
|
||||||
|
* driver entry. The following temporary hack works around this by forcing
|
||||||
|
* blocking communication from PM to VFS. Once VFS has been made non-blocking
|
||||||
|
* towards MFS instances, this hack and the entire fork_nb() call can go.
|
||||||
|
*/
|
||||||
|
if (use_copy)
|
||||||
|
setuid(0);
|
||||||
|
|
||||||
/* Map the new service. */
|
/* Map the new service. */
|
||||||
if (rp->r_dev_nr > 0) { /* set driver map */
|
if (rp->r_dev_nr > 0) { /* set driver map */
|
||||||
if ((s=mapdriver5(rp->r_label, strlen(rp->r_label),
|
if ((s=mapdriver5(rp->r_label, strlen(rp->r_label),
|
||||||
|
|
Loading…
Reference in a new issue