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: