summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_descrip.c
diff options
context:
space:
mode:
authortmm <tmm@FreeBSD.org>2002-09-13 15:15:16 +0000
committertmm <tmm@FreeBSD.org>2002-09-13 15:15:16 +0000
commit3103a45bbfcd593503595c5717f40de30d985210 (patch)
tree01fb1a3815e9330055006ffaf5bd3163d737262a /sys/kern/kern_descrip.c
parent798f40001b65e7625e99265423cb6d7863aba8e4 (diff)
downloadFreeBSD-src-3103a45bbfcd593503595c5717f40de30d985210.zip
FreeBSD-src-3103a45bbfcd593503595c5717f40de30d985210.tar.gz
Fix fcntl(..., F_GETOWN, ...) and fcntl(..., F_SETOWN, ...) on sparc64
by not passing a pointer to a register_t or intptr_t when the code in the lower layers expects one to an int.
Diffstat (limited to 'sys/kern/kern_descrip.c')
-rw-r--r--sys/kern/kern_descrip.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/kern/kern_descrip.c b/sys/kern/kern_descrip.c
index 08eeb70..d88156b 100644
--- a/sys/kern/kern_descrip.c
+++ b/sys/kern/kern_descrip.c
@@ -326,15 +326,17 @@ kern_fcntl(struct thread *td, int fd, int cmd, intptr_t arg)
case F_GETOWN:
fhold(fp);
FILEDESC_UNLOCK(fdp);
- error = fo_ioctl(fp, FIOGETOWN, (void *)td->td_retval,
- td->td_ucred, td);
+ error = fo_ioctl(fp, FIOGETOWN, &tmp, td->td_ucred, td);
+ if (error == 0)
+ td->td_retval[0] = tmp;
fdrop(fp, td);
break;
case F_SETOWN:
fhold(fp);
FILEDESC_UNLOCK(fdp);
- error = fo_ioctl(fp, FIOSETOWN, &arg, td->td_ucred, td);
+ tmp = arg;
+ error = fo_ioctl(fp, FIOSETOWN, &tmp, td->td_ucred, td);
fdrop(fp, td);
break;
OpenPOWER on IntegriCloud