All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tzung-Bi Shih <tzungbi@kernel.org>
To: Bartosz Golaszewski <brgl@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>, Shuah Khan <shuah@kernel.org>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Wolfram Sang <wsa+renesas@sang-engineering.com>,
	Jason Gunthorpe <jgg@nvidia.com>, Johan Hovold <johan@kernel.org>,
	linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org,
	chrome-platform@lists.linux.dev,
	Dan Williams <dan.j.williams@intel.com>,
	linux-gpio@vger.kernel.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Danilo Krummrich <dakr@kernel.org>,
	Linus Walleij <linusw@kernel.org>
Subject: Re: [PATCH v2 07/11] gpio: Add revocable provider handle for struct gpio_chip
Date: Fri, 6 Feb 2026 09:13:35 +0000	[thread overview]
Message-ID: <aYWwv2Ip_dvS7E9w@google.com> (raw)
In-Reply-To: <CAMRc=MeyfAMVOMVtC3zobv5XXGtthJxYGsTogNzRK3uhKo1TvQ@mail.gmail.com>

On Thu, Feb 05, 2026 at 05:57:15PM +0100, Bartosz Golaszewski wrote:
> On Thu, Feb 5, 2026 at 9:52 AM Tzung-Bi Shih <tzungbi@kernel.org> wrote:
> >
> > On Wed, Feb 04, 2026 at 07:58:44AM -0500, Bartosz Golaszewski wrote:
> > > On Tue, 3 Feb 2026 07:10:54 +0100, Tzung-Bi Shih <tzungbi@kernel.org> said:
> > > > diff --git a/drivers/gpio/gpiolib.h b/drivers/gpio/gpiolib.h
> > > > index 3abb90385829..cd136d5b52e9 100644
> > > > --- a/drivers/gpio/gpiolib.h
> > > > +++ b/drivers/gpio/gpiolib.h
> > > > @@ -52,6 +52,7 @@
> > > >   * @device_notifier: used to notify character device wait queues about the GPIO
> > > >   *                   device being unregistered
> > > >   * @srcu: protects the pointer to the underlying GPIO chip
> > > > + * @chip_rp: revocable provider handle for the corresponding struct gpio_chip.
> > > >   * @pin_ranges: range of pins served by the GPIO driver
> > > >   *
> > > >   * This state container holds most of the runtime variable data
> > > > @@ -79,6 +80,7 @@ struct gpio_device {
> > > >     struct workqueue_struct *line_state_wq;
> > > >     struct blocking_notifier_head device_notifier;
> > > >     struct srcu_struct      srcu;
> > > > +   struct revocable_provider __rcu *chip_rp;
> > > >
> > >
> > > Why __rcu? This doesn't live in a different address space, only the internal
> > > resource it protects does. If anything - this could be __attribute__((noderef))
> > > but even that is questionable as this is an opaque structure.
> >
> > For fixing a race on the pointer itself.  See also [1].
> >
> > [1] https://lore.kernel.org/all/20260129143733.45618-2-tzungbi@kernel.org
> 
> So we're just using a double RCU here? One to protect the resource and
> another to protect the protector of the resource? I can't say I'm a
> fan of this. I really want to like this interface but is there really
> no way to hide the implementation details from the caller? Isn't this
> the whole point? As it is: the user still has to care about an
> RCU-protected pointer.

Will think about it but I have no better idea for now.

Ideally, I think the user doesn't need to interact with the RCU (even if it's
annotated with __rcu) but revocable APIs should handle it correctly.

  reply	other threads:[~2026-02-06  9:13 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-03  6:10 [PATCH v2 00/11] gpio: Adopt revocable mechanism for UAF prevention Tzung-Bi Shih
2026-02-03  6:10 ` [PATCH v2 01/11] gpio: Access `gpio_bus_type` in gpiochip_setup_dev() Tzung-Bi Shih
2026-02-03  6:10 ` [PATCH v2 02/11] gpio: Remove redundant check for struct gpio_chip Tzung-Bi Shih
2026-02-03  6:10 ` [PATCH v2 03/11] gpio: sysfs: " Tzung-Bi Shih
2026-02-04 10:33   ` Bartosz Golaszewski
2026-02-05  8:51     ` Tzung-Bi Shih
2026-02-03  6:10 ` [PATCH v2 04/11] gpio: Ensure struct gpio_chip for gpiochip_setup_dev() Tzung-Bi Shih
2026-02-04 10:36   ` Bartosz Golaszewski
2026-02-05  8:51     ` Tzung-Bi Shih
2026-02-03  6:10 ` [PATCH v2 05/11] gpio: cdev: Don't check struct gpio_chip in gpio_chrdev_open() Tzung-Bi Shih
2026-02-03  6:10 ` [PATCH v2 06/11] selftests: gpio: Add gpio-cdev-uaf tests Tzung-Bi Shih
2026-02-03  6:10 ` [PATCH v2 07/11] gpio: Add revocable provider handle for struct gpio_chip Tzung-Bi Shih
2026-02-04 12:58   ` Bartosz Golaszewski
2026-02-05  8:52     ` Tzung-Bi Shih
2026-02-05 16:57       ` Bartosz Golaszewski
2026-02-06  9:13         ` Tzung-Bi Shih [this message]
2026-02-03  6:10 ` [PATCH v2 08/11] gpio: cdev: Leverage revocable for accessing " Tzung-Bi Shih
2026-02-03  9:51   ` Tzung-Bi Shih
2026-02-04 13:02   ` Bartosz Golaszewski
2026-02-03  6:10 ` [PATCH v2 09/11] gpio: Remove gpio_chip_guard by using revocable Tzung-Bi Shih
2026-02-04 13:05   ` Bartosz Golaszewski
2026-02-03  6:10 ` [PATCH v2 10/11] gpio: Leverage revocable for accessing struct gpio_chip Tzung-Bi Shih
2026-02-03  6:10 ` [PATCH v2 11/11] gpio: Remove unused `chip` and `srcu` in struct gpio_device Tzung-Bi Shih
2026-02-03 11:15 ` [PATCH v2 00/11] gpio: Adopt revocable mechanism for UAF prevention Bartosz Golaszewski
2026-02-03 16:53 ` Bartosz Golaszewski

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=aYWwv2Ip_dvS7E9w@google.com \
    --to=tzungbi@kernel.org \
    --cc=brgl@kernel.org \
    --cc=chrome-platform@lists.linux.dev \
    --cc=corbet@lwn.net \
    --cc=dakr@kernel.org \
    --cc=dan.j.williams@intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jgg@nvidia.com \
    --cc=johan@kernel.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linusw@kernel.org \
    --cc=linux-gpio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=shuah@kernel.org \
    --cc=wsa+renesas@sang-engineering.com \
    /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.