From: Kent Gibson <warthog618@gmail.com>
To: Bartosz Golaszewski <brgl@bgdev.pl>
Cc: Yihao Han <hanyihao@vivo.com>,
Linus Walleij <linus.walleij@linaro.org>,
"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] gpiolib: cdev: fix stream_open.cocci warnings
Date: Fri, 6 May 2022 11:38:49 +0800 [thread overview]
Message-ID: <20220506033849.GA12555@sol> (raw)
In-Reply-To: <20220505122450.GA23659@sol>
On Thu, May 05, 2022 at 08:24:50PM +0800, Kent Gibson wrote:
> On Thu, May 05, 2022 at 02:18:48PM +0200, Bartosz Golaszewski wrote:
> > On Thu, May 5, 2022 at 1:50 PM Yihao Han <hanyihao@vivo.com> wrote:
> > >
> > > ./drivers/gpio/gpiolib-cdev.c:2498:7-23: WARNING:
> > > gpio_fileops: .read() has stream semantic;
> > > safe to change nonseekable_open -> stream_open.
> > >
> > > Generated by: scripts/coccinelle/api/stream_open.cocci
> > >
> > > Signed-off-by: Yihao Han <hanyihao@vivo.com>
> > > ---
> > > drivers/gpio/gpiolib-cdev.c | 2 +-
> > > 1 file changed, 1 insertion(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/gpio/gpiolib-cdev.c b/drivers/gpio/gpiolib-cdev.c
> > > index f5aa5f93342a..d03c8e012c8c 100644
> > > --- a/drivers/gpio/gpiolib-cdev.c
> > > +++ b/drivers/gpio/gpiolib-cdev.c
> > > @@ -2495,7 +2495,7 @@ static int gpio_chrdev_open(struct inode *inode, struct file *file)
> > > get_device(&gdev->dev);
> > > file->private_data = cdev;
> > >
> > > - ret = nonseekable_open(inode, file);
> > > + ret = stream_open(inode, file);
> > > if (ret)
> > > goto out_unregister_notifier;
> > >
> > > --
> > > 2.17.1
> > >
> >
> > Cc'ing Kent.
> >
> > This patch doesn't seem to target current master or rc1.
> >
> > It also can't be right - we specifically mark all filesystem objects
> > exposed by the GPIO character device as non-seekable.
> >
>
> Agreed. I took the coccinelle warning as being a false positive.
> If I recall correctly I had a quick look to see if it could be disabled,
> but didn't find anything, and so just ignored it.
>
Further to this...
The coccinelle warning says:
// Search for stream-like files that are using nonseekable_open and convert
// them to stream_open. A stream-like file is a file that does not use ppos in
// its read and write. Rationale for the conversion is to avoid deadlock in
// between read and write.
The rationale is not applicable here, as all cdev files are non-writeable,
as well as being non-seekable.
But switching to stream_open(), as coccinelle suggests, is probably fine.
The doco for stream_open() says:
* stream_open is used by subsystems that want stream-like file descriptors.
* Such file descriptors are not seekable and don't have notion of position
* (file.f_pos is always 0 and ppos passed to .read()/.write() is always NULL).
* Contrary to file descriptors of other regular files, .read() and .write()
* can run simultaneously.
so it would also produce nonseekable files.
Comparing nonseekable_open() with stream_open(), the latter clears
FMODE_ATOMIC_POS and sets FMODE_STREAM, neither of which are relevant for
the cdev use cases, so that should be ok.
So I would be ok with the patch if it were updated to apply to the
current gpiolib-cdev.c.
Cheers,
Kent.
prev parent reply other threads:[~2022-05-06 3:39 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-05 11:50 [PATCH] gpiolib: cdev: fix stream_open.cocci warnings Yihao Han
2022-05-05 12:18 ` Bartosz Golaszewski
2022-05-05 12:24 ` Kent Gibson
2022-05-06 3:38 ` Kent Gibson [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220506033849.GA12555@sol \
--to=warthog618@gmail.com \
--cc=brgl@bgdev.pl \
--cc=hanyihao@vivo.com \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.