summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_generic.c
diff options
context:
space:
mode:
authorart <art@openbsd.org>2002-02-13 19:08:06 +0000
committerart <art@openbsd.org>2002-02-13 19:08:06 +0000
commit2cc38fedad07e26699fd31f343d5325058c8d847 (patch)
tree8cb82fa06cc657271a26abb480ea883cb7de524d /sys/kern/sys_generic.c
parentThe syscall numer is quad to __syscall(2). (diff)
downloadwireguard-openbsd-2cc38fedad07e26699fd31f343d5325058c8d847.tar.xz
wireguard-openbsd-2cc38fedad07e26699fd31f343d5325058c8d847.zip
More FREF/FRELE on relevant places. Now, only sys_mmap and a bunch of ioctl functions in sys/compat are left.
Diffstat (limited to 'sys/kern/sys_generic.c')
-rw-r--r--sys/kern/sys_generic.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/sys/kern/sys_generic.c b/sys/kern/sys_generic.c
index 08c3776d51e..de65194f32a 100644
--- a/sys/kern/sys_generic.c
+++ b/sys/kern/sys_generic.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sys_generic.c,v 1.36 2002/02/08 19:58:03 art Exp $ */
+/* $OpenBSD: sys_generic.c,v 1.37 2002/02/13 19:08:06 art Exp $ */
/* $NetBSD: sys_generic.c,v 1.24 1996/03/29 00:25:32 cgd Exp $ */
/*
@@ -504,16 +504,16 @@ sys_ioctl(p, v, retval)
void *v;
register_t *retval;
{
- register struct sys_ioctl_args /* {
+ struct sys_ioctl_args /* {
syscallarg(int) fd;
syscallarg(u_long) com;
syscallarg(caddr_t) data;
} */ *uap = v;
- register struct file *fp;
- register struct filedesc *fdp;
- register u_long com;
- register int error;
- register u_int size;
+ struct file *fp;
+ struct filedesc *fdp;
+ u_long com;
+ int error;
+ u_int size;
caddr_t data, memp;
int tmp;
#define STK_PARAMS 128
@@ -542,6 +542,7 @@ sys_ioctl(p, v, retval)
size = IOCPARM_LEN(com);
if (size > IOCPARM_MAX)
return (ENOTTY);
+ FREF(fp);
memp = NULL;
if (size > sizeof (stkbuf)) {
memp = (caddr_t)malloc((u_long)size, M_IOCTLOPS, M_WAITOK);
@@ -552,9 +553,7 @@ sys_ioctl(p, v, retval)
if (size) {
error = copyin(SCARG(uap, data), data, (u_int)size);
if (error) {
- if (memp)
- free(memp, M_IOCTLOPS);
- return (error);
+ goto out;
}
} else
*(caddr_t *)data = SCARG(uap, data);
@@ -630,6 +629,8 @@ sys_ioctl(p, v, retval)
error = copyout(data, SCARG(uap, data), (u_int)size);
break;
}
+out:
+ FRELE(fp);
if (memp)
free(memp, M_IOCTLOPS);
return (error);
@@ -789,10 +790,12 @@ selscan(p, ibits, obits, nfd, retval)
bits &= ~(1 << j);
if ((fp = fd_getfile(fdp, fd)) == NULL)
return (EBADF);
+ FREF(fp);
if ((*fp->f_ops->fo_select)(fp, flag[msk], p)) {
FD_SET(fd, pobits);
n++;
}
+ FRELE(fp);
}
}
}
@@ -892,6 +895,7 @@ pollscan(p, pl, nfd, retval)
n++;
continue;
}
+ FREF(fp);
for (x = msk = 0; msk < 3; msk++) {
if (pl[i].events & pflag[msk]) {
if ((*fp->f_ops->fo_select)(fp, flag[msk], p)) {
@@ -901,6 +905,7 @@ pollscan(p, pl, nfd, retval)
}
}
}
+ FRELE(fp);
if (x)
n++;
}