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);
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "[email protected]"

Reply via email to