libsys: various updates
- move system calls for use by services from libminlib into libsys; - move srv_fork(2) and srv_kill(2) from RS and into libsys; - replace getprocnr(2) with sef_self(3); - rename previous getnprocnr(2) to getprocnr(2); - clean up getepinfo(2); - change all libsys calls that used _syscall to use _taskcall, so as to avoid going through errno to pass errors; this is already how most calls work anyway, and many of the calls previously using _syscall were already assumed to return the actual error; - initialize request messages to zero, for future compatibility (note that this does not include PCI calls, which are in need of a much bigger overhaul, nor kernel calls); - clean up more of dead DS code as a side effect. Change-Id: I8788f54c68598fcf58e23486e270c2d749780ebb
This commit is contained in:
@@ -166,9 +166,9 @@ do_connect(devminor_t minor, endpoint_t endpt, cp_grant_id_t grant)
|
||||
sizeof(struct sockaddr_un))) != OK)
|
||||
return rc;
|
||||
|
||||
if (checkperms(uds_fd_table[minor].owner, addr.sun_path,
|
||||
UNIX_PATH_MAX) != OK)
|
||||
return -errno;
|
||||
if ((rc = checkperms(uds_fd_table[minor].owner, addr.sun_path,
|
||||
UNIX_PATH_MAX)) != OK)
|
||||
return rc;
|
||||
|
||||
/*
|
||||
* Look for a socket of the same type that is listening on the
|
||||
@@ -355,9 +355,9 @@ do_bind(devminor_t minor, endpoint_t endpt, cp_grant_id_t grant)
|
||||
if (addr.sun_path[0] == '\0')
|
||||
return ENOENT;
|
||||
|
||||
if (checkperms(uds_fd_table[minor].owner, addr.sun_path,
|
||||
UNIX_PATH_MAX) != OK)
|
||||
return -errno;
|
||||
if ((rc = checkperms(uds_fd_table[minor].owner, addr.sun_path,
|
||||
UNIX_PATH_MAX)) != OK)
|
||||
return rc;
|
||||
|
||||
/* Make sure the address isn't already in use by another socket. */
|
||||
for (i = 0; i < NR_FDS; i++) {
|
||||
@@ -523,7 +523,7 @@ do_getsockopt_peercred(devminor_t minor, endpoint_t endpt, cp_grant_id_t grant)
|
||||
|
||||
/* Obtain the peer's credentials and copy them out. */
|
||||
if ((rc = getnucred(uds_fd_table[peer_minor].owner, &cred)) < 0)
|
||||
return -errno;
|
||||
return rc;
|
||||
|
||||
return sys_safecopyto(endpt, grant, 0, (vir_bytes) &cred,
|
||||
sizeof(struct uucred));
|
||||
@@ -611,9 +611,9 @@ do_sendto(devminor_t minor, endpoint_t endpt, cp_grant_id_t grant)
|
||||
if (addr.sun_family != AF_UNIX || addr.sun_path[0] == '\0')
|
||||
return EINVAL;
|
||||
|
||||
if (checkperms(uds_fd_table[minor].owner, addr.sun_path,
|
||||
UNIX_PATH_MAX) != OK)
|
||||
return -errno;
|
||||
if ((rc = checkperms(uds_fd_table[minor].owner, addr.sun_path,
|
||||
UNIX_PATH_MAX)) != OK)
|
||||
return rc;
|
||||
|
||||
memcpy(&uds_fd_table[minor].target, &addr, sizeof(struct sockaddr_un));
|
||||
|
||||
@@ -645,7 +645,7 @@ send_fds(devminor_t minor, struct msg_control *msg_ctrl,
|
||||
|
||||
/* Obtain this socket's credentials. */
|
||||
if ((rc = getnucred(from_ep, &data->cred)) < 0)
|
||||
return -errno;
|
||||
return rc;
|
||||
|
||||
dprintf(("UDS: minor=%d cred={%d,%d,%d}\n", minor, data->cred.pid,
|
||||
data->cred.uid, data->cred.gid));
|
||||
@@ -677,8 +677,6 @@ send_fds(devminor_t minor, struct msg_control *msg_ctrl,
|
||||
|
||||
for (i = data->nfiledes; i < totalfds; i++) {
|
||||
if ((rc = copyfd(from_ep, data->fds[i], COPYFD_FROM)) < 0) {
|
||||
rc = -errno;
|
||||
|
||||
printf("UDS: copyfd(COPYFD_FROM) failed: %d\n", rc);
|
||||
|
||||
/* Revert the successful copyfd() calls made so far. */
|
||||
@@ -747,8 +745,6 @@ recv_fds(devminor_t minor, struct ancillary *data,
|
||||
/* Copy to the target endpoint. */
|
||||
for (i = 0; i < data->nfiledes; i++) {
|
||||
if ((rc = copyfd(to_ep, data->fds[i], COPYFD_TO)) < 0) {
|
||||
rc = -errno;
|
||||
|
||||
printf("UDS: copyfd(COPYFD_TO) failed: %d\n", rc);
|
||||
|
||||
/* Revert the successful copyfd() calls made so far. */
|
||||
|
||||
@@ -384,9 +384,10 @@ vnd_ioctl(devminor_t UNUSED(minor), unsigned long request, endpoint_t endpt,
|
||||
* making the IOCTL call. The result is either a newly
|
||||
* allocated file descriptor or an error.
|
||||
*/
|
||||
if ((state.fd = copyfd(user_endpt, vnd.vnd_fildes,
|
||||
COPYFD_FROM)) == -1)
|
||||
return -errno;
|
||||
if ((r = copyfd(user_endpt, vnd.vnd_fildes, COPYFD_FROM)) < 0)
|
||||
return r;
|
||||
|
||||
state.fd = r;
|
||||
|
||||
/* The target file must be regular. */
|
||||
if (fstat(state.fd, &st) == -1) {
|
||||
|
||||
Reference in New Issue
Block a user