On Wed, Jan 25, 2023 at 10:00 AM Mateusz Guzik <mjguzik@xxxxxxxxx> wrote: > On 1/24/23, Paul Moore <paul@xxxxxxxxxxxxxx> wrote: > > Although I'm looking at this again and realized that only > > do_faccessat() calls access_override_creds(), so why not just fold the > > new access_need_override_creds() logic into access_override_creds()? > > Just have one function that takes the flag value, and returns an > > old_cred/NULL pointer (or pass old_cred to the function by reference > > and return an error code); that should still provide the performance > > win Mateusz is looking for while providing additional safety against > > out-of-sync changes. I would guess the code would be smaller too. > > It is unclear from the description if you are arguing for moving the new > func into access_override_creds almost as is just put prior to existing > code *or* mixing checks with assignments. "arguing" is a bit strong of a word for what I was thinking, it was more of just tossing out an idea to see if it has any merit with you, the VFS folks, and possibly Linus. > static bool *access_override_creds(struct cred **ptr) > [snip] > if (!uid_eq(cred->fsuid, cred->uid) || > !gid_eq(cred->fsgid, cred->gid)) > return false; > /* remaining checks go here as well */ > [snip] > > override_cred = prepare_creds(); > if (!override_cred) { > *ptr = NULL; > return true; > } > > override_cred->fsuid = override_cred->uid; > override_cred->fsgid = override_cred->gid; > [snip] > > If this is what you had in mind, I note it retains all the duplication > except in one func body which I'm confident does not buy anything, > provided the warning comment is added. > > At the same time the downside is that it uglifies error handling at the > callsite, so I would say a net loss. Yes, I was thinking of combining the two functions into one to better link the cred checks with the cred adjustments. > Addition of the warning comment makes sense, but concerns after that > don't sound legitimate to me. Well, as we talked about earlier, it's really up to the VFS folks to pick what they want, and they have been suspiciously quiet thus far. -- paul-moore.com