svn commit: r286661 - head/sys/compat/cloudabi
Ed Schouten
ed at FreeBSD.org
Wed Aug 12 11:07:04 UTC 2015
Author: ed
Date: Wed Aug 12 11:07:03 2015
New Revision: 286661
URL: https://svnweb.freebsd.org/changeset/base/286661
Log:
Use CAP_EVENT instead of CAP_PDWAIT.
The cloudlibc pdwait() function ends up using FreeBSD's kqueue() in
combination with EVFILT_PROCDESC. This depends on CAP_EVENT -- not
CAP_PDWAIT.
Obtained from: https://github.com/NuxiNL/freebsd
Modified:
head/sys/compat/cloudabi/cloudabi_fd.c
head/sys/compat/cloudabi/cloudabi_proc.c
Modified: head/sys/compat/cloudabi/cloudabi_fd.c
==============================================================================
--- head/sys/compat/cloudabi/cloudabi_fd.c Wed Aug 12 10:34:05 2015 (r286660)
+++ head/sys/compat/cloudabi/cloudabi_fd.c Wed Aug 12 11:07:03 2015 (r286661)
@@ -74,7 +74,7 @@ __FBSDID("$FreeBSD$");
MAPPING(CLOUDABI_RIGHT_MEM_MAP_EXEC, CAP_MMAP_X) \
MAPPING(CLOUDABI_RIGHT_POLL_FD_READWRITE, CAP_EVENT) \
MAPPING(CLOUDABI_RIGHT_POLL_MODIFY, CAP_KQUEUE_CHANGE) \
- MAPPING(CLOUDABI_RIGHT_POLL_PROC_TERMINATE, CAP_PDWAIT) \
+ MAPPING(CLOUDABI_RIGHT_POLL_PROC_TERMINATE, CAP_EVENT) \
MAPPING(CLOUDABI_RIGHT_POLL_WAIT, CAP_KQUEUE_EVENT) \
MAPPING(CLOUDABI_RIGHT_PROC_EXEC, CAP_FEXECVE) \
MAPPING(CLOUDABI_RIGHT_SOCK_ACCEPT, CAP_ACCEPT) \
@@ -380,7 +380,8 @@ cloudabi_remove_conflicting_rights(cloud
*inheriting = 0;
break;
case CLOUDABI_FILETYPE_PROCESS:
- *base &= ~CLOUDABI_RIGHT_FILE_ADVISE;
+ *base &= ~(CLOUDABI_RIGHT_FILE_ADVISE |
+ CLOUDABI_RIGHT_POLL_FD_READWRITE);
*inheriting = 0;
break;
case CLOUDABI_FILETYPE_REGULAR_FILE:
Modified: head/sys/compat/cloudabi/cloudabi_proc.c
==============================================================================
--- head/sys/compat/cloudabi/cloudabi_proc.c Wed Aug 12 10:34:05 2015 (r286660)
+++ head/sys/compat/cloudabi/cloudabi_proc.c Wed Aug 12 11:07:03 2015 (r286661)
@@ -74,7 +74,7 @@ cloudabi_sys_proc_fork(struct thread *td
struct proc *p2;
int error, fd;
- cap_rights_init(&fcaps.fc_rights, CAP_FSTAT, CAP_PDWAIT);
+ cap_rights_init(&fcaps.fc_rights, CAP_FSTAT, CAP_EVENT);
error = fork1(td, RFFDG | RFPROC | RFPROCDESC, 0, &p2, &fd, 0, &fcaps);
if (error != 0)
return (error);
More information about the svn-src-head
mailing list