From: Christian Brauner <brauner@kernel.org>
To: Amir Goldstein <amir73il@gmail.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Miklos Szeredi <miklos@szeredi.hu>,
linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: Re: [PATCH 00/26] cred: rework {override,revert}_creds()
Date: Mon, 25 Nov 2024 15:13:47 +0100 [thread overview]
Message-ID: <20241125-golfplatz-benommen-46e80ad2b601@brauner> (raw)
In-Reply-To: <CAOQ4uxgYf2kEkYSz=AC++B6cb643Aq82En5QjwDwsSpPRf+A6w@mail.gmail.com>
On Mon, Nov 25, 2024 at 01:55:25PM +0100, Amir Goldstein wrote:
> On Sun, Nov 24, 2024 at 7:00 PM Linus Torvalds
> <torvalds@linux-foundation.org> wrote:
> >
> > On Sun, 24 Nov 2024 at 05:44, Christian Brauner <brauner@kernel.org> wrote:
> > >
> > > This series does all that. Afaict, most callers can be directly
> > > converted over and can avoid the extra reference count completely.
> > >
> > > Lightly tested.
> >
> > Thanks, this looks good to me. I only had two reactions:
> >
> > (a) I was surprised that using get_new_cred() apparently "just worked".
> >
> > I was expecting us to have cases where the cred was marked 'const',
> > because I had this memory of us actively marking things const to make
> > sure people didn't play games with modifying the creds in-place (and
> > then casting away the const just for ref updates).
> >
> > But apparently that's never the case for override_creds() users, so
> > your patch actually ended up even simpler than I expected in that you
> > didn't end up needing any new helper for just incrementing the
> > refcount on a const cred.
> >
> > (b) a (slight) reaction was to wish for a short "why" on the
> > pointless reference bumps
> >
> > partly to show that it was thought about, but also partly to
> > discourage people from doing it entirely mindlessly in other cases.
> >
> > I mean, sometimes the reference bumps were just obviously pointless
> > because they ended up being right next to each other after being
> > exposed, like the get/put pattern in access_override_creds().
> >
> > But in some other cases, like the aio_write case, I think it would
> > have been good to just say
> >
> > "The refcount is held by iocb->fsync.creds that cannot change over
> > the operation"
> >
> > or similar. Or - very similarly - the binfmt_misc uses "file->f_cred",
> > and again, file->f_cred is set at open time and never changed, so we
> > can rely on it staying around for the file lifetime.
> >
> > I actually don't know if there were any exceptions to this (ie cases
> > where the source of the override cred could actually go away from
> > under us during the operation) where you didn't end up removing the
> > refcount games as a result.
>
> I was asking myself the same question.
>
> I see that cachefiles_{begin,end}_secure() bump the refcount, but they
> mostly follow a very similar pattern to the cases that do not bump the refcount,
> so I wonder if you left this out because they were hidden in those
> inline helpers
> or because of the non-trivial case of cachefiles_determine_cache_security()
> which replaces the 'master' cache_creds?
>
> Other that that, I stared at the creds code in nfsd_file_acquire_local() and
> nfsd_setuser() more than I would like to admit, with lines like:
>
> /* discard any old override before preparing the new set */
> put_cred(revert_creds(get_cred(current_real_cred())));
>
> And my only conclusion was this code is complicated enough,
> so it'd better not use borrowed creds..
I actually ported cachefilesd and and nfsd in v2. I simply missed them.
next prev parent reply other threads:[~2024-11-25 14:13 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-22 9:57 [GIT PULL] overlayfs updates for 6.13 Amir Goldstein
2024-11-23 5:21 ` Linus Torvalds
2024-11-23 5:22 ` Linus Torvalds
2024-11-23 6:09 ` Linus Torvalds
2024-11-23 6:14 ` Al Viro
2024-11-23 17:18 ` Linus Torvalds
2024-11-23 12:06 ` Christian Brauner
2024-11-23 17:29 ` Linus Torvalds
2024-11-24 13:43 ` [PATCH 00/26] cred: rework {override,revert}_creds() Christian Brauner
2024-11-24 13:43 ` [PATCH 01/26] tree-wide: s/override_creds()/override_creds_light(get_new_cred())/g Christian Brauner
2024-11-24 13:43 ` [PATCH 02/26] cred: return old creds from revert_creds_light() Christian Brauner
2024-11-24 13:43 ` [PATCH 03/26] tree-wide: s/revert_creds()/put_cred(revert_creds_light())/g Christian Brauner
2024-11-24 13:43 ` [PATCH 04/26] cred: remove old {override,revert}_creds() helpers Christian Brauner
2024-11-24 13:43 ` [PATCH 05/26] tree-wide: s/override_creds_light()/override_creds()/g Christian Brauner
2024-11-24 13:43 ` [PATCH 06/26] tree-wide: s/revert_creds_light()/revert_creds()/g Christian Brauner
2024-11-24 13:43 ` [PATCH 07/26] firmware: avoid pointless reference count bump Christian Brauner
2024-11-24 14:56 ` Amir Goldstein
2024-11-24 13:43 ` [PATCH 08/26] sev-dev: avoid pointless cred " Christian Brauner
2024-11-24 18:19 ` Al Viro
2024-11-24 13:43 ` [PATCH 09/26] target_core_configfs: " Christian Brauner
2024-11-24 18:26 ` Al Viro
2024-11-25 11:31 ` Christian Brauner
2024-11-24 13:43 ` [PATCH 10/26] aio: " Christian Brauner
2024-11-24 13:43 ` [PATCH 11/26] binfmt_misc: " Christian Brauner
2024-11-24 13:43 ` [PATCH 12/26] coredump: " Christian Brauner
2024-11-24 13:43 ` [PATCH 13/26] nfs/localio: avoid pointless cred reference count bumps Christian Brauner
2024-11-24 13:44 ` [PATCH 14/26] nfs/nfs4idmap: avoid pointless reference count bump Christian Brauner
2024-11-24 13:44 ` [PATCH 15/26] nfs/nfs4recover: avoid pointless cred " Christian Brauner
2024-11-25 13:10 ` Chuck Lever
2024-11-24 13:44 ` [PATCH 16/26] nfsfh: " Christian Brauner
2024-11-25 13:11 ` Chuck Lever
2024-11-24 13:44 ` [PATCH 17/26] open: " Christian Brauner
2024-11-24 13:44 ` [PATCH 18/26] ovl: " Christian Brauner
2024-11-24 14:59 ` Amir Goldstein
2024-11-25 11:30 ` Christian Brauner
2024-11-24 13:44 ` [PATCH 19/26] cifs: " Christian Brauner
2024-11-24 13:44 ` [PATCH 20/26] " Christian Brauner
2024-11-24 13:44 ` [PATCH 21/26] smb: " Christian Brauner
2024-11-24 18:37 ` Al Viro
2024-11-25 11:22 ` Christian Brauner
2024-11-24 13:44 ` [PATCH 22/26] io_uring: " Christian Brauner
2024-11-24 13:44 ` [PATCH 23/26] acct: avoid pointless " Christian Brauner
2024-11-24 13:44 ` [PATCH 24/26] cgroup: avoid pointless cred " Christian Brauner
2024-11-24 13:44 ` [PATCH 25/26] trace: " Christian Brauner
2024-11-24 13:44 ` [PATCH 26/26] dns_resolver: " Christian Brauner
2024-11-24 17:00 ` [PATCH 00/26] cred: rework {override,revert}_creds() Amir Goldstein
2024-11-24 18:00 ` Linus Torvalds
2024-11-25 11:46 ` Christian Brauner
2024-11-25 12:55 ` Amir Goldstein
2024-11-25 14:13 ` Christian Brauner [this message]
2024-11-25 13:51 ` Jeff Layton
2024-11-23 18:47 ` [GIT PULL] overlayfs updates for 6.13 Christian Brauner
2024-11-23 5:57 ` pr-tracker-bot
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=20241125-golfplatz-benommen-46e80ad2b601@brauner \
--to=brauner@kernel.org \
--cc=amir73il@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®