Re: 2.6.36/2.6.37: broken compatibility with userspace input-utils ?
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2011-01-25 21:21:00
Also in:
linux-media, lkml
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2011-01-25 21:21:00
Also in:
linux-media, lkml
On Wed, Jan 26, 2011 at 7:01 AM, Dmitry Torokhov [off-list ref] wrote:
BTW, another issue is that evdev's ioctl returns -EINVAL for unknown ioctls so applications would have hard time figuring out whether error returned because of kernel being too old or because they are trying to retrieve/establish invalid mapping if they had to go only by the error code.
So that's just another evdev interface bug.
As far as I can see EINVAL is a proper error for unknown ioctls: [dtor@hammer work]$ man 2 ioctl | grep EINVAL EINVAL Request or argp is not valid.
Yeah, there's some confusion there.
The "unknown ioctl" error code is (for traditional reasons) ENOTTY,
but yes, the EINVAL thing admittedly has a lot of legacy use too.
Inside the kernel, the preferred way to say "I don't recognize that
ioctl number" is actually ENOIOCTLCMD. That's exactly so that various
nested ioctl handlers can then tell the difference between "I didn't
recognize that ioctl" and "I understand what you asked me to do, but
your arguments were crap".
vfs_ioctl() will then turn ENOIOCTLCMD to EINVAL to return to user space.
Linus
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html