From: Jason Gunthorpe <jgg@nvidia.com>
To: Danilo Krummrich <dakr@kernel.org>
Cc: Tzung-Bi Shih <tzungbi@kernel.org>,
Benson Leung <bleung@chromium.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J . Wysocki" <rafael@kernel.org>,
Jonathan Corbet <corbet@lwn.net>, Shuah Khan <shuah@kernel.org>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
chrome-platform@lists.linux.dev, linux-kselftest@vger.kernel.org,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Bartosz Golaszewski <brgl@bgdev.pl>,
Wolfram Sang <wsa+renesas@sang-engineering.com>,
Simona Vetter <simona.vetter@ffwll.ch>,
Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH v5 5/7] revocable: Add fops replacement
Date: Fri, 17 Oct 2025 19:56:32 -0300 [thread overview]
Message-ID: <20251017225632.GF316284@nvidia.com> (raw)
In-Reply-To: <DDKXACTUJ9IT.3W11J2HE7SLJW@kernel.org>
On Fri, Oct 17, 2025 at 11:41:56PM +0200, Danilo Krummrich wrote:
> On Fri Oct 17, 2025 at 8:44 PM CEST, Jason Gunthorpe wrote:
> > On Fri, Oct 17, 2025 at 08:19:06PM +0200, Danilo Krummrich wrote:
> >> On 10/17/25 6:37 PM, Jason Gunthorpe wrote:
> >> > On Fri, Oct 17, 2025 at 06:29:10PM +0200, Danilo Krummrich wrote:
> >> >
> >> >> I'm not sure about MISC device though. Unless there's a good reason,
> >> >> I think MISC device should be "fenced" instead.
> >> >
> >> > misc is a very small wrapper around raw fops, and raw fops are
> >> > optimized for performance. Adding locking that many important things
> >> > like normal files don't need to all fops would not be agreed.
> >> >
> >> > The sketch in this series where we have a core helper to provide a
> >> > shim fops that adds on the lock is smart and I think could be an
> >> > agreeable way to make a synchronous misc and cdev unregister for
> >> > everyone to trivially use.
> >>
> >> Sure, for MISC devices without a parent for instance there are no device
> >> resources to access anyways.
> >
> > There are many situations with misc that can get people into trouble without
> > parent:
> >
> > misc_deregister(x);
> > timer_shutdown_sync(y);
> > kfree(z);
> >
> > For example. It is is buggy if the fops touch y or z.
> >
> > This is why a _sync version is such a nice clean idea because with 5
> > letters the above can just be fixed.
> >
> > Wrapping everything in a revocable would be a huge PITA.
>
> That's a bit of a different problem though. Revocable clearly isn't the
> solution. _sync() works, but doesn't account for the actual problem, which is
> that the file private has at least shared ownership of y and z.
>
> So, it's more of an ownership / lifetime problem. The file private data should
> either own y and z entirely or a corresponding reference count that is dropped
> in fops release().
I think both versions are popular in the kernel.. You can legimately
treat y and z the same as device resources without creating a
correctness problem and it is less code.
You can also do refcounts.
For instance at least in C you'd never argue that people should use
refcount private data when they use a timer or irq subsystem. You'd
use a simple sync cleanup and be done with it.
These bugs are coming because of mixing models, we have a bunch of
sync APIs in the kernel that are easy to use and then you get these
weird non-sync ones without any clear documentation :)
Jason
next prev parent reply other threads:[~2025-10-17 22:56 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-16 5:41 [PATCH v5 0/7] platform/chrome: Fix a possible UAF via revocable Tzung-Bi Shih
2025-10-16 5:41 ` [PATCH v5 1/7] revocable: Revocable resource management Tzung-Bi Shih
2025-10-16 5:41 ` [PATCH v5 2/7] revocable: Add Kunit test cases Tzung-Bi Shih
2025-10-16 5:42 ` [PATCH v5 3/7] selftests: revocable: Add kselftest cases Tzung-Bi Shih
2025-10-16 5:42 ` [PATCH v5 4/7] platform/chrome: Protect cros_ec_device lifecycle with revocable Tzung-Bi Shih
2025-10-16 5:42 ` [PATCH v5 5/7] revocable: Add fops replacement Tzung-Bi Shih
2025-10-16 12:31 ` Jason Gunthorpe
2025-10-17 2:36 ` Tzung-Bi Shih
2025-10-17 13:49 ` Jason Gunthorpe
2025-10-17 16:07 ` Tzung-Bi Shih
2025-10-17 16:21 ` Jason Gunthorpe
2025-10-19 15:08 ` Tzung-Bi Shih
2025-10-20 11:57 ` Jason Gunthorpe
2025-10-21 4:49 ` Tzung-Bi Shih
2025-10-21 12:15 ` Jason Gunthorpe
2025-10-23 14:22 ` Tzung-Bi Shih
2025-10-23 14:51 ` Jason Gunthorpe
2025-10-23 15:04 ` Greg Kroah-Hartman
2025-10-23 15:57 ` Jason Gunthorpe
2025-10-23 16:20 ` Danilo Krummrich
2025-10-23 16:48 ` Jason Gunthorpe
2025-10-23 18:30 ` Danilo Krummrich
2025-12-11 3:23 ` Laurent Pinchart
2025-12-11 3:47 ` Wolfram Sang
2025-12-11 8:05 ` Laurent Pinchart
2025-12-11 8:36 ` Wolfram Sang
2025-12-11 13:43 ` Laurent Pinchart
2025-12-11 14:46 ` Tzung-Bi Shih
2025-12-12 8:32 ` Tzung-Bi Shih
2025-11-07 4:11 ` Tzung-Bi Shih
2025-11-07 14:12 ` Jason Gunthorpe
2025-10-17 16:29 ` Danilo Krummrich
2025-10-17 16:37 ` Jason Gunthorpe
2025-10-17 18:19 ` Danilo Krummrich
2025-10-17 18:44 ` Jason Gunthorpe
2025-10-17 21:41 ` Danilo Krummrich
2025-10-17 22:56 ` Jason Gunthorpe [this message]
2025-10-23 15:32 ` Danilo Krummrich
2025-10-16 18:38 ` Randy Dunlap
2025-10-17 2:41 ` Tzung-Bi Shih
2025-10-16 5:42 ` [PATCH v5 6/7] char: misc: Leverage revocable " Tzung-Bi Shih
2025-10-16 5:42 ` [PATCH v5 7/7] platform/chrome: cros_ec_chardev: Secure cros_ec_device via revocable Tzung-Bi Shih
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=20251017225632.GF316284@nvidia.com \
--to=jgg@nvidia.com \
--cc=bleung@chromium.org \
--cc=brgl@bgdev.pl \
--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=laurent.pinchart@ideasonboard.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=shuah@kernel.org \
--cc=simona.vetter@ffwll.ch \
--cc=tzungbi@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.