Re: [PATCH] usbhid: replace inappropriate ENOSYS with ENODEV

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Jan 22, 2016 at 3:30 PM, Jiri Kosina <jikos@xxxxxxxxxx> wrote:
> On Thu, 21 Jan 2016, Dmitry Torokhov wrote:
>
>> On Thu, Jan 21, 2016 at 6:18 AM, Jiri Kosina <jikos@xxxxxxxxxx> wrote:
>> > On Wed, 20 Jan 2016, Heiner Kallweit wrote:
>> >
>> >> Primary meaning of ENOSYS is "system call not available" but it's also used
>> >> with meaning "function not implemented". Both are not applicable here.
>> >>
>> >> Typically this error occurs when the device was unplugged.
>> >> usbhid_raw_request returns -ENODEV in such a case what seems to be more
>> >> reasonable. Therefore use -ENODEV also here.
>> >>
>> >> Primary motivation for this change is a change in the LED subsystem to
>> >> ignore -ENODEV if the device was most likely unplugged.
>> >
>> > I believe POSIX defines ENOSYS as "Function not implemented". In this
>> > case, we are signalling there is no "URB OUT" function.
>> >
>>
>> Well, it looks like ENOSYS is really reserved for unimplemented system calls:
>>
>> commit 91c9afaf97ee554d2cd3042a5ad01ad21c99e8c4
>> Author: Andy Lutomirski <luto@xxxxxxxxxxxxxx>
>> Date:   Thu Apr 16 12:44:44 2015 -0700
>>
>>     checkpatch.pl: new instances of ENOSYS are errors
>>
>>     ENOSYS means that a nonexistent system call was called.  We have a
>>     bad habit of using it for things like invalid operations on
>>     otherwise valid syscalls.  We should avoid this in new code.
>>
>>     Pervasive incorrect usage of ENOSYS came up at the kernel summit ABI
>>     review discussion.  Let's see if checkpatch can help.
>>
>>     I'll submit a separate patch for include/uapi/asm-generic/errno.h.
>
> Let's add Andy to CC.
>
> Andy, my understanding of POSIX is that ENOSYS is "function not
> implemented", meaning whatever internal function of kernel, not strictly
> just syscall entrypoint.
>
> Where does your explanation of ENOSYS as "syscall not implemented" come
> from, please?
>

Userspace likes to be able to tell whether a given syscall is
implemented by the running kernel.  Unimplemented syscalls return
-ENOSYS, and having syscalls that *are* implemented return -ENOSYS can
confuse things.

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux