Re: [Question] Usage of ENOTSUPP error code

From: Masahiro Yamada
Date: Mon Jul 06 2015 - 12:25:29 EST


Hi Clemens,

Thanks for your clarification.


2015-07-06 16:37 GMT+09:00 Clemens Ladisch <clemens@xxxxxxxxxx>:
> Masahiro Yamada wrote:
>> I noticed many drivers return -ENOTSUPP on error.
>>
>> I assume ENOTSUPP is defined in include/linux/errno.h
>> as follows:
>>
>> /* Defined for the NFSv3 protocol */
>> ...
>> #define ENOTSUPP 524 /* Operation is not supported */
>>
>> If so, should ENOTSUPP be only used for NFS-related errors?
>
> There is typcially no such restriction.


Maybe, shoulld such a confusing comment be deleted?


> However, the problem with ENOTSUPP is that it is not defined in
> the uapi header, so it will not be known to user space programs.
>
>> In fact, ENOTSUPP is used by various drivers
>> including non-network ones such as pinctrl, USB, etc.
>
> If it is possible that the error code shows up for user space, ENOTSUPP
> should not be used. Alternatives would be something like ENOTSUP,
> EOPNOTSUPP, ENOIOCTLCMD, ENOSYS, or EINVAL.
>

Oh dear, we have ENOTSUP as well as ENOTSUPP...
but, it looks like ENOTSUP is only defined by
arch/parisc/include/uapi/asm/errno.h,
so it is not globally available.

EOPNOTSUPP is also accompanied with a comment that implies it is
intended for network.


After all, I often use EINVAL when unsupported operations are requested.



--
Best Regards
Masahiro Yamada
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/