diff options
author | tmm <tmm@FreeBSD.org> | 2002-09-13 15:15:16 +0000 |
---|---|---|
committer | tmm <tmm@FreeBSD.org> | 2002-09-13 15:15:16 +0000 |
commit | 3103a45bbfcd593503595c5717f40de30d985210 (patch) | |
tree | 01fb1a3815e9330055006ffaf5bd3163d737262a /sys/kern/kern_descrip.c | |
parent | 798f40001b65e7625e99265423cb6d7863aba8e4 (diff) | |
download | FreeBSD-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.c | 8 |
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; |