Subject: Re: [Bug 7635] New: ioctl(fd,TCSBRK,1) on socket yields EFAULT, expected EINVAL/ENOTTY

From: Stephen Hemminger <[email-masked]>
Date: Fri, 8 Dec 2006 14:00:21 -0800

On Fri, 08 Dec 2006 13:36:33 -0800 (PST)
David Miller <[email-masked]> wrote:

> From: Stephen Hemminger <[email-masked]>
> Date: Fri, 8 Dec 2006 09:50:55 -0800
> 
> > ioctl(TCSBRK,1)	errno
> > pty		0
> > pipe		22/EINVAL
> > /dev/null	25/ENOTTY
> > reg_file	25/ENOTTY
> > socket		14/EFAULT
> 
> If you call a TTY ioctl on a socket, it might not work, don't
> you think?
> 
> ioctl values are numbered in the namespace of the object they are
> called upon, so an ioctl of value X can mean something different for a
> TTY than it does for socket.

That is not true on BSD or other unix standardish ioctl's.
There are no conflicts between the TIOC... values and the SIOC... values

> You're passing a garbage pointer to whatever socket ioctl happens
> to be aliased to the same value as TCSBRK on your platform.

It's not the garbage pointer. 

Seems like one of those annoying standards compliance test
return value bugs that shouldn't really hit an application.
-- 
Stephen Hemminger <[email-masked]>