[WIP] BZ #14362: POSIX vs. BSD and the `ioctl' interface.

Roland McGrath roland@hack.frob.com
Thu Jul 26 22:42:00 GMT 2012


[Note I changed the Subject: line because it unhelpfully had the wrong BZ#.]

> The problem is that for kernels not configured with HAVE_SYSCALL_WRAPPERS,
> calling ioctl() with a value that has bit 31 set will result in a value
> that does not compare equal within the kernel:  the passed-in value will
> have zero high bits (since the ioctl argument was prototyped as a long) but
> the kernel constant that the comparison is done against will be
> sign-extended (since it's prototyped as an int).  So the comparison fails. 
> This is true for both tilegx and mipsn64 as far as I know.

In http://sourceware.org/bugzilla/show_bug.cgi?id=14362#c5 Linus claims
that the kernel uses 'unsigned int' everywhere for ioctl requests.
If that is so, then there should be no such problem.
If it's not so, please educate Linus about his error.


Thanks,
Roland



More information about the Libc-alpha mailing list