Messages in this thread | | | Date | Mon, 26 Oct 2020 19:24:57 +0100 | From | Stefano Garzarella <> | Subject | Re: [PATCH] vsock: ratelimit unknown ioctl error message |
| |
On Mon, Oct 26, 2020 at 10:55:48AM -0700, Jakub Kicinski wrote: >On Mon, 26 Oct 2020 11:01:12 +0100 Stefano Garzarella wrote: >> On Mon, Oct 26, 2020 at 09:46:17AM +0000, David Laight wrote: >> >From: Stefano Garzarella >> >> Sent: 26 October 2020 09:39 >> >> >> >> On Mon, Oct 26, 2020 at 09:13:23AM +0000, David Laight wrote: >> >> >From: Stefano Garzarella >> >> >> Sent: 26 October 2020 08:43 >> >> >... >> >> >> >Isn't the canonical error for unknown ioctl codes -ENOTTY? >> >> >> > >> >> >> >> >> >> Oh, thanks for pointing that out! >> >> >> >> >> >> I had not paid attention to the error returned, but looking at it I >> >> >> noticed that perhaps the most appropriate would be -ENOIOCTLCMD. >> >> >> In the ioctl syscall we return -ENOTTY, if the callback returns >> >> >> -ENOIOCTLCMD. >> >> >> >> >> >> What do you think? >> >> > >> >> >It is 729 v 443 in favour of ENOTTY (based on grep). >> >> >> >> Under net/ it is 6 vs 83 in favour of ENOIOCTLCMD. >> >> >> >> > >> >> >No idea where ENOIOCTLCMD comes from, but ENOTTY probably >> >> >goes back to the early 1970s. >> >> >> >> Me too. >> >> >> >> > >> >> >The fact that the ioctl wrapper converts the value is a good >> >> >hint that userspace expects ENOTTY. >> >> >> >> Agree on that, but since we are not interfacing directly with userspace, >> >> I think it is better to return the more specific error (ENOIOCTLCMD). >> > >> >I bet Linux thought it could use a different error code then >> >found that 'unknown ioctl' was spelt ENOTTY. >> >> It could be :-) >> >> Anyway, as you pointed out, I think we should change the -EINVAL with >> -ENOTTY or -ENOIOCTLCMD. >> >> @Jakub what do you suggest? > >ENOIOCTLCMD is a kernel-internal high return code (515) which should >be returned by the driver, but it's then caught inside the core and >translated to ENOTTY which is then returned to user space. > >So you're both right, I guess? But the driver should use ENOIOCTLCMD. >
Thanks for clarify!
@Colin, can you send a v2 removing the error message and updating the return value?
Thanks, Stefano
| |