Subject: re: int/register_t mismatch
To: None <tech-kern@netbsd.org>
From: matthew green <mrg@eterna.com.au>
List: tech-kern
Date: 09/05/2005 22:20:05
a long time ago mouse said...
kern/kern_descrip.c:
/* ARGSUSED */
int
sys_fcntl(struct proc *p, void *v, register_t *retval)
{
...
case F_GETOWN:
...
error = (*fp->f_ops->fo_ioctl)
(fp, TIOCGPGRP, (caddr_t)retval, p);
Wait a second. Isn't TIOCGPGRP expecting pointer to int, not pointer
to register_t? Won't this break on big-endian LP64?
Or has this been fixed since last May?
looks like it's still a bug to me... i think this patch should work ok.
i'll test it on i386 & sparc64 and then commit.
.mrg.
Index: kern_descrip.c
===================================================================
RCS file: /cvsroot/src/sys/kern/kern_descrip.c,v
retrieving revision 1.135
diff -p -r1.135 kern_descrip.c
*** kern_descrip.c 19 Aug 2005 02:04:03 -0000 1.135
--- kern_descrip.c 5 Sep 2005 12:18:28 -0000
*************** sys_fcntl(struct lwp *l, void *v, regist
*** 554,560 ****
break;
case F_GETOWN:
! error = (*fp->f_ops->fo_ioctl)(fp, FIOGETOWN, retval, p);
break;
case F_SETOWN:
--- 554,561 ----
break;
case F_GETOWN:
! error = (*fp->f_ops->fo_ioctl)(fp, FIOGETOWN, &tmp, p);
! *retval = tmp;
break;
case F_SETOWN: