I see. Thank you for the feedback. I will rework changes to get back
read permissions.

Best regards,
Petro

пт, 28 січ. 2022 р. о 14:41 Alan Carvalho de Assis <acas...@gmail.com> пише:
>
> Hi Petro,
>
> The read permission is needed even when you just want to open a file:
>
> $ vim noreadfile
>
> $ chmod 0000 noreadfile
>
> $ ls -l noreadfile
> ---------- 1 user user 5 jan 28 09:24 noreadfile
>
> $ cat noreadfile
> cat: noreadfile: Permission denied
>
> You can even try to create a C program just to open it, and it will fail.
>
> See the man page of open function:
>
>        The argument flags *must* include one of the  following  access
>  modes:  O_RDONLY,  O_WRONLY,  or
>        O_RDWR.  These request opening the file read-only, write-only,
> or read/write, respectively.
>
> This man page makes it clear you must include an access mode, but I
> passed 0 to the access mode flag of open() and it was accepted, but
> when the file has permission 0000 it returns -EPERM: "Failed to open
> file: error -1"
>
> BR,
>
> Alan
>
> On 1/28/22, Petro Karashchenko <petro.karashche...@gmail.com> wrote:
> > Hello,
> >
> > Yes, but how does this relate to "0000" mode for "register_driver()"?
> > Maybe you can describe some use case so it will become more clear?
> > Currently ioctl works fine if driver is registered with "0000" permission
> > mode.
> >
> > Best regards,
> > Petro
> >
> > пт, 28 січ. 2022 р. о 11:39 Xiang Xiao <xiaoxiang781...@gmail.com> пише:
> >>
> >> If we want to do the correct permission check, the ioctl handler needs to
> >> check R/W bit by itself based on how the ioctl is implemented.
> >> Or follow up how Linux encode the needed permission into each IOCTL:
> >> https://github.com/torvalds/linux/blob/master/include/uapi/asm-generic/ioctl.h#L85-L91
> >> and let's VFS layer do the check for each driver.
> >>
> >> On Fri, Jan 28, 2022 at 5:14 PM Petro Karashchenko <
> >> petro.karashche...@gmail.com> wrote:
> >>
> >> > Hello team,
> >> >
> >> > Recently I have noticed that there are many places in code where
> >> > register_driver() is called with non-zero mode with file operation
> >> > structures that have neither read nor write APIs implemented. For
> >> > example "ret = register_driver(path, &opamp_fops, 0444, dev);" while
> >> > opamp_fops has only "opamp_open", "opamp_close" and "opamp_ioctl"
> >> > implemented. I made a PR to fix it
> >> > https://github.com/apache/incubator-nuttx/pull/5347 and change mode
> >> > from "0444" to "0000", but want to ask if anyone sees any drawback in
> >> > such an approach? Maybe I'm missing something?
> >> >
> >> > Best regards,
> >> > Petro
> >> >
> >

Reply via email to