* [GIT PULL] capabilities
@ 2024-11-18 15:26 sergeh
2024-11-22 17:34 ` Serge E. Hallyn
2024-11-27 17:30 ` Linus Torvalds
0 siblings, 2 replies; 11+ messages in thread
From: sergeh @ 2024-11-18 15:26 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Paul Moore, Jordan Rome, linux-security-module
Hi Linus,
The following changes since commit 9852d85ec9d492ebef56dc5f229416c925758edc:
Linux 6.12-rc1 (2024-09-29 15:06:19 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/sergeh/linux.git tags/caps-6.12-rc1
for you to fetch changes up to 54eb2cec2ed7aaf25524dd5ebeaa4f87ed5c6bd6:
security: add trace event for cap_capable (2024-10-30 14:40:02 -0500)
This branch contains two patches:
1. Remove the cap_mmap_file() hook (Paul Moore), as it wasn't actually doing anything.
de2433c608c2c2633b8a452dd4925d876f3d5add
2. Add a trace event for cap_capable (Jordan Rome).
54eb2cec2ed7aaf25524dd5ebeaa4f87ed5c6bd6
Both patches have been sitting in linux-next for quite some time with no apparent
issues.
thanks,
-serge
----------------------------------------------------------------
Jordan Rome (1):
security: add trace event for cap_capable
Paul Moore (1):
capabilities: remove cap_mmap_file()
MAINTAINERS | 1 +
include/trace/events/capability.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
security/commoncap.c | 37 ++++++++++++++++++++++---------------
3 files changed, 83 insertions(+), 15 deletions(-)
create mode 100644 include/trace/events/capability.h
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [GIT PULL] capabilities 2024-11-18 15:26 [GIT PULL] capabilities sergeh @ 2024-11-22 17:34 ` Serge E. Hallyn 2024-11-25 18:52 ` Paul Moore 2024-11-27 17:30 ` Linus Torvalds 1 sibling, 1 reply; 11+ messages in thread From: Serge E. Hallyn @ 2024-11-22 17:34 UTC (permalink / raw) To: sergeh; +Cc: Linus Torvalds, Paul Moore, Jordan Rome, linux-security-module, lkml On Mon, Nov 18, 2024 at 03:26:31PM +0000, sergeh@kernel.org wrote: > Hi Linus, Hi, before the merge window closes, I just wanted to make sure this didn't get lost. thanks, -serge > The following changes since commit 9852d85ec9d492ebef56dc5f229416c925758edc: > > Linux 6.12-rc1 (2024-09-29 15:06:19 -0700) > > are available in the Git repository at: > > git://git.kernel.org/pub/scm/linux/kernel/git/sergeh/linux.git tags/caps-6.12-rc1 > > for you to fetch changes up to 54eb2cec2ed7aaf25524dd5ebeaa4f87ed5c6bd6: > > security: add trace event for cap_capable (2024-10-30 14:40:02 -0500) > > This branch contains two patches: > > 1. Remove the cap_mmap_file() hook (Paul Moore), as it wasn't actually doing anything. > de2433c608c2c2633b8a452dd4925d876f3d5add > > 2. Add a trace event for cap_capable (Jordan Rome). > 54eb2cec2ed7aaf25524dd5ebeaa4f87ed5c6bd6 > > Both patches have been sitting in linux-next for quite some time with no apparent > issues. > > thanks, > -serge > > ---------------------------------------------------------------- > Jordan Rome (1): > security: add trace event for cap_capable > > Paul Moore (1): > capabilities: remove cap_mmap_file() > > MAINTAINERS | 1 + > include/trace/events/capability.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ > security/commoncap.c | 37 ++++++++++++++++++++++--------------- > 3 files changed, 83 insertions(+), 15 deletions(-) > create mode 100644 include/trace/events/capability.h ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] capabilities 2024-11-22 17:34 ` Serge E. Hallyn @ 2024-11-25 18:52 ` Paul Moore 2024-11-27 17:20 ` Serge E. Hallyn 0 siblings, 1 reply; 11+ messages in thread From: Paul Moore @ 2024-11-25 18:52 UTC (permalink / raw) To: Serge E. Hallyn Cc: sergeh, Linus Torvalds, Jordan Rome, linux-security-module, lkml On Fri, Nov 22, 2024 at 12:34 PM Serge E. Hallyn <serge@hallyn.com> wrote: > > On Mon, Nov 18, 2024 at 03:26:31PM +0000, sergeh@kernel.org wrote: > > Hi Linus, > > Hi, > > before the merge window closes, I just wanted to make sure this didn't get > lost. ... and while Serge may not have sent a pull request for the capability code in a while, I just want to vouch that Serge is a real person and this is a legit pull request :) -- paul-moore.com ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] capabilities 2024-11-25 18:52 ` Paul Moore @ 2024-11-27 17:20 ` Serge E. Hallyn 0 siblings, 0 replies; 11+ messages in thread From: Serge E. Hallyn @ 2024-11-27 17:20 UTC (permalink / raw) To: Linus Torvalds Cc: Serge E. Hallyn, Jordan Rome, linux-security-module, lkml, Paul Moore On Mon, Nov 25, 2024 at 01:52:59PM -0500, Paul Moore wrote: > On Fri, Nov 22, 2024 at 12:34 PM Serge E. Hallyn <serge@hallyn.com> wrote: > > > > On Mon, Nov 18, 2024 at 03:26:31PM +0000, sergeh@kernel.org wrote: > > > Hi Linus, > > > > Hi, > > > > before the merge window closes, I just wanted to make sure this didn't get > > lost. > > ... and while Serge may not have sent a pull request for the > capability code in a while, I just want to vouch that Serge is a real > person and this is a legit pull request :) Hi Linus, don't mean to nag, but as the end of the merge window is approaching, figure I should try one more time (or else ask Paul to send it instead). Did you receive this PR? Are there any changes I need to make? thanks, -serge ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] capabilities 2024-11-18 15:26 [GIT PULL] capabilities sergeh 2024-11-22 17:34 ` Serge E. Hallyn @ 2024-11-27 17:30 ` Linus Torvalds 2024-11-27 17:31 ` Linus Torvalds 2024-11-27 21:42 ` Serge E. Hallyn 1 sibling, 2 replies; 11+ messages in thread From: Linus Torvalds @ 2024-11-27 17:30 UTC (permalink / raw) To: Serge Hallyn; +Cc: Paul Moore, Jordan Rome, linux-security-module On Mon, 18 Nov 2024 at 07:26, <sergeh@kernel.org> wrote: > > 2. Add a trace event for cap_capable (Jordan Rome). So I've finally gotten around to this, but I absolutely detest how this was written. It was oddly written before, but now it's absolutely illegible. All just to have one single tracepoint. And it's all *stupid*. The "capable_ns" thing is entirely pointless. Why? It always has exactly one value: 'cred->user_ns'. Lookie here, it's assigned exactly twice: if (ns == cred->user_ns) { if (cap_raised(cred->cap_effective, cap)) { capable_ns = ns; ... if ((ns->parent == cred->user_ns) && uid_eq(ns->owner, cred->euid)) { capable_ns = ns->parent; and *both* times it's assigned something that we just checked is equal to cred->user_ns. And for this useless value, the already odd for-loop was written to be even more odd, and the code added a new variable 'capable_ns'. So I pulled this, tried to figure out _why_ it was written that oddly, decided that the "why" was "because it's being stupid", and I unpulled it again. If we really need that trace point, I have a few requirements: - none of this crazy stuff - use a simple inline helper - make the pointers 'const', because there is no reason not to. Something *UNTESTED* like the attached diff. Again: very untested. But at least this generates good code, and doesn't have pointless crazy variables. Yes, I add that const struct user_namespace *cred_ns = cred->user_ns; because while I think gcc may be smart enough to figure out that it's all the same value, I wanted to make sure. Then the tracepoint would look something like trace_cap_capable(cred, targ_ns, cred_ns, cap, opts, ret); although I don't understand why you'd even trace that 'opts' value that is never used. Linus ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] capabilities 2024-11-27 17:30 ` Linus Torvalds @ 2024-11-27 17:31 ` Linus Torvalds 2024-11-27 17:49 ` Linus Torvalds 2024-11-27 21:42 ` Serge E. Hallyn 1 sibling, 1 reply; 11+ messages in thread From: Linus Torvalds @ 2024-11-27 17:31 UTC (permalink / raw) To: Serge Hallyn; +Cc: Paul Moore, Jordan Rome, linux-security-module [-- Attachment #1: Type: text/plain, Size: 363 bytes --] On Wed, 27 Nov 2024 at 09:30, Linus Torvalds <torvalds@linux-foundation.org> wrote: > > Something *UNTESTED* like the attached diff. Well, that "attached diff" wass again something I forgot to actually attach. Here. Again: very much untested. But at least the code makes a bit of sense, and code generation is actually improved by this. Linus [-- Attachment #2: patch.diff --] [-- Type: text/x-patch, Size: 1991 bytes --] security/commoncap.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/security/commoncap.c b/security/commoncap.c index cefad323a0b1..2fadbda75131 100644 --- a/security/commoncap.c +++ b/security/commoncap.c @@ -64,18 +64,18 @@ static void warn_setuid_and_fcaps_mixed(const char *fname) * cap_has_capability() returns 0 when a task has a capability, but the * kernel's capable() and has_capability() returns 1 for this case. */ -int cap_capable(const struct cred *cred, struct user_namespace *targ_ns, - int cap, unsigned int opts) +static int cap_capable_helper(const struct cred *cred, + const struct user_namespace *ns, + const struct user_namespace *cred_ns, + int cap) { - struct user_namespace *ns = targ_ns; - /* See if cred has the capability in the target user namespace * by examining the target user namespace and all of the target * user namespace's parents. */ for (;;) { /* Do we have the necessary capabilities? */ - if (ns == cred->user_ns) + if (likely(ns == cred_ns)) return cap_raised(cred->cap_effective, cap) ? 0 : -EPERM; /* @@ -89,7 +89,7 @@ int cap_capable(const struct cred *cred, struct user_namespace *targ_ns, * The owner of the user namespace in the parent of the * user namespace has all caps. */ - if ((ns->parent == cred->user_ns) && uid_eq(ns->owner, cred->euid)) + if ((ns->parent == cred_ns) && uid_eq(ns->owner, cred->euid)) return 0; /* @@ -102,6 +102,15 @@ int cap_capable(const struct cred *cred, struct user_namespace *targ_ns, /* We never get here */ } +int cap_capable(const struct cred *cred, struct user_namespace *target_ns, + int cap, unsigned int opts) +{ + const struct user_namespace *cred_ns = cred->user_ns; + int ret = cap_capable_helper(cred, target_ns, cred_ns, cap); + /* tracepoint here */ + return ret; +} + /** * cap_settime - Determine whether the current process may set the system clock * @ts: The time to set ^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [GIT PULL] capabilities 2024-11-27 17:31 ` Linus Torvalds @ 2024-11-27 17:49 ` Linus Torvalds 0 siblings, 0 replies; 11+ messages in thread From: Linus Torvalds @ 2024-11-27 17:49 UTC (permalink / raw) To: Serge Hallyn; +Cc: Paul Moore, Jordan Rome, linux-security-module On Wed, 27 Nov 2024 at 09:31, Linus Torvalds <torvalds@linux-foundation.org> wrote: > > Again: very much untested. But at least the code makes a bit of sense, > and code generation is actually improved by this. Oh, and the 'cap_capable_helper()' function should be marked inline. Gcc does do it automatically for this kind of static functions only used once, but just for clarity it's best to mark it explicitly. Linus ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] capabilities 2024-11-27 17:30 ` Linus Torvalds 2024-11-27 17:31 ` Linus Torvalds @ 2024-11-27 21:42 ` Serge E. Hallyn 2024-11-28 15:42 ` Jordan Rome 1 sibling, 1 reply; 11+ messages in thread From: Serge E. Hallyn @ 2024-11-27 21:42 UTC (permalink / raw) To: Linus Torvalds Cc: Serge Hallyn, Paul Moore, Jordan Rome, linux-security-module On Wed, Nov 27, 2024 at 09:30:14AM -0800, Linus Torvalds wrote: > On Mon, 18 Nov 2024 at 07:26, <sergeh@kernel.org> wrote: > > > > 2. Add a trace event for cap_capable (Jordan Rome). > > So I've finally gotten around to this, but I absolutely detest how > this was written. > > It was oddly written before, but now it's absolutely illegible. All > just to have one single tracepoint. > > And it's all *stupid*. > > The "capable_ns" thing is entirely pointless. > > Why? It always has exactly one value: 'cred->user_ns'. Lookie here, > it's assigned exactly twice: > > if (ns == cred->user_ns) { > if (cap_raised(cred->cap_effective, cap)) { > capable_ns = ns; > ... > if ((ns->parent == cred->user_ns) && uid_eq(ns->owner, > cred->euid)) { > capable_ns = ns->parent; > > and *both* times it's assigned something that we just checked is equal > to cred->user_ns. > > And for this useless value, the already odd for-loop was written to be > even more odd, and the code added a new variable 'capable_ns'. > > So I pulled this, tried to figure out _why_ it was written that oddly, > decided that the "why" was "because it's being stupid", and I unpulled > it again. > > If we really need that trace point, I have a few requirements: > > - none of this crazy stuff > > - use a simple inline helper > > - make the pointers 'const', because there is no reason not to. > > Something *UNTESTED* like the attached diff. > > Again: very untested. But at least this generates good code, and > doesn't have pointless crazy variables. Yes, I add that > > const struct user_namespace *cred_ns = cred->user_ns; > > because while I think gcc may be smart enough to figure out that it's > all the same value, I wanted to make sure. > > Then the tracepoint would look something like > > trace_cap_capable(cred, targ_ns, cred_ns, cap, opts, ret); > > although I don't understand why you'd even trace that 'opts' value > that is never used. You mean cap_capable doesn't use opts? Yeah, it's used only by other LSMs. I suppose knowing the value might in some cases help to figure out caller state, but dropping it seems sensible. Jordan is working on a new version based on your feedback. thanks, -serge ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] capabilities 2024-11-27 21:42 ` Serge E. Hallyn @ 2024-11-28 15:42 ` Jordan Rome 2024-11-28 16:28 ` Serge E. Hallyn 0 siblings, 1 reply; 11+ messages in thread From: Jordan Rome @ 2024-11-28 15:42 UTC (permalink / raw) To: Serge E. Hallyn Cc: Linus Torvalds, Serge Hallyn, Paul Moore, linux-security-module On Wed, Nov 27, 2024 at 4:42 PM Serge E. Hallyn <serge@hallyn.com> wrote: > > On Wed, Nov 27, 2024 at 09:30:14AM -0800, Linus Torvalds wrote: > > On Mon, 18 Nov 2024 at 07:26, <sergeh@kernel.org> wrote: > > > > > > 2. Add a trace event for cap_capable (Jordan Rome). > > > > So I've finally gotten around to this, but I absolutely detest how > > this was written. > > > > It was oddly written before, but now it's absolutely illegible. All > > just to have one single tracepoint. > > > > And it's all *stupid*. > > > > The "capable_ns" thing is entirely pointless. > > > > Why? It always has exactly one value: 'cred->user_ns'. Lookie here, > > it's assigned exactly twice: > > > > if (ns == cred->user_ns) { > > if (cap_raised(cred->cap_effective, cap)) { > > capable_ns = ns; > > ... > > if ((ns->parent == cred->user_ns) && uid_eq(ns->owner, > > cred->euid)) { > > capable_ns = ns->parent; > > > > and *both* times it's assigned something that we just checked is equal > > to cred->user_ns. > > > > And for this useless value, the already odd for-loop was written to be > > even more odd, and the code added a new variable 'capable_ns'. > > > > So I pulled this, tried to figure out _why_ it was written that oddly, > > decided that the "why" was "because it's being stupid", and I unpulled > > it again. > > > > If we really need that trace point, I have a few requirements: > > > > - none of this crazy stuff > > > > - use a simple inline helper > > > > - make the pointers 'const', because there is no reason not to. > > > > Something *UNTESTED* like the attached diff. > > > > Again: very untested. But at least this generates good code, and > > doesn't have pointless crazy variables. Yes, I add that > > > > const struct user_namespace *cred_ns = cred->user_ns; > > > > because while I think gcc may be smart enough to figure out that it's > > all the same value, I wanted to make sure. > > > > Then the tracepoint would look something like > > > > trace_cap_capable(cred, targ_ns, cred_ns, cap, opts, ret); > > > > although I don't understand why you'd even trace that 'opts' value > > that is never used. > > You mean cap_capable doesn't use opts? Yeah, it's used only by other > LSMs. I suppose knowing the value might in some cases help to figure > out caller state, but dropping it seems sensible. > > Jordan is working on a new version based on your feedback. > > thanks, > -serge Here is the new patch: https://patchwork.kernel.org/project/linux-security-module/patch/20241128153733.1542817-1-linux@jordanrome.com/ I applied the suggested changes but left the local `struct user_namespace *ns` in the helper (as it gets updated in the loop to the ns parent). Though it feels a bit icky that there is not a null check against the `ns` variable (maybe it's not possible to reach that condition though). Jordan ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] capabilities 2024-11-28 15:42 ` Jordan Rome @ 2024-11-28 16:28 ` Serge E. Hallyn 2024-11-28 16:35 ` Serge E. Hallyn 0 siblings, 1 reply; 11+ messages in thread From: Serge E. Hallyn @ 2024-11-28 16:28 UTC (permalink / raw) To: Jordan Rome Cc: Serge E. Hallyn, Linus Torvalds, Serge Hallyn, Paul Moore, linux-security-module On Thu, Nov 28, 2024 at 10:42:16AM -0500, Jordan Rome wrote: > On Wed, Nov 27, 2024 at 4:42 PM Serge E. Hallyn <serge@hallyn.com> wrote: > > > > On Wed, Nov 27, 2024 at 09:30:14AM -0800, Linus Torvalds wrote: > > > On Mon, 18 Nov 2024 at 07:26, <sergeh@kernel.org> wrote: > > > > > > > > 2. Add a trace event for cap_capable (Jordan Rome). > > > > > > So I've finally gotten around to this, but I absolutely detest how > > > this was written. > > > > > > It was oddly written before, but now it's absolutely illegible. All > > > just to have one single tracepoint. > > > > > > And it's all *stupid*. > > > > > > The "capable_ns" thing is entirely pointless. > > > > > > Why? It always has exactly one value: 'cred->user_ns'. Lookie here, > > > it's assigned exactly twice: > > > > > > if (ns == cred->user_ns) { > > > if (cap_raised(cred->cap_effective, cap)) { > > > capable_ns = ns; > > > ... > > > if ((ns->parent == cred->user_ns) && uid_eq(ns->owner, > > > cred->euid)) { > > > capable_ns = ns->parent; > > > > > > and *both* times it's assigned something that we just checked is equal > > > to cred->user_ns. > > > > > > And for this useless value, the already odd for-loop was written to be > > > even more odd, and the code added a new variable 'capable_ns'. > > > > > > So I pulled this, tried to figure out _why_ it was written that oddly, > > > decided that the "why" was "because it's being stupid", and I unpulled > > > it again. > > > > > > If we really need that trace point, I have a few requirements: > > > > > > - none of this crazy stuff > > > > > > - use a simple inline helper > > > > > > - make the pointers 'const', because there is no reason not to. > > > > > > Something *UNTESTED* like the attached diff. > > > > > > Again: very untested. But at least this generates good code, and > > > doesn't have pointless crazy variables. Yes, I add that > > > > > > const struct user_namespace *cred_ns = cred->user_ns; > > > > > > because while I think gcc may be smart enough to figure out that it's > > > all the same value, I wanted to make sure. > > > > > > Then the tracepoint would look something like > > > > > > trace_cap_capable(cred, targ_ns, cred_ns, cap, opts, ret); > > > > > > although I don't understand why you'd even trace that 'opts' value > > > that is never used. > > > > You mean cap_capable doesn't use opts? Yeah, it's used only by other > > LSMs. I suppose knowing the value might in some cases help to figure > > out caller state, but dropping it seems sensible. > > > > Jordan is working on a new version based on your feedback. > > > > thanks, > > -serge > > Here is the new patch: > https://patchwork.kernel.org/project/linux-security-module/patch/20241128153733.1542817-1-linux@jordanrome.com/ > > I applied the suggested changes but left the local `struct > user_namespace *ns` in the helper (as it gets updated in the loop to > the ns parent). > Though it feels a bit icky that there is not a null check against the > `ns` variable (maybe it's not possible to reach that condition > though). Feels like a lot of bikeshedding here, but... Is there any reason at this point not to just pass in cred_euid as a uid_t, and not pass the cred in at all? Avoid a few more dereferences... ^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [GIT PULL] capabilities 2024-11-28 16:28 ` Serge E. Hallyn @ 2024-11-28 16:35 ` Serge E. Hallyn 0 siblings, 0 replies; 11+ messages in thread From: Serge E. Hallyn @ 2024-11-28 16:35 UTC (permalink / raw) To: Serge E. Hallyn Cc: Jordan Rome, Linus Torvalds, Serge Hallyn, Paul Moore, linux-security-module On Thu, Nov 28, 2024 at 10:28:56AM -0600, Serge E. Hallyn wrote: > On Thu, Nov 28, 2024 at 10:42:16AM -0500, Jordan Rome wrote: > > On Wed, Nov 27, 2024 at 4:42 PM Serge E. Hallyn <serge@hallyn.com> wrote: > > > > > > On Wed, Nov 27, 2024 at 09:30:14AM -0800, Linus Torvalds wrote: > > > > On Mon, 18 Nov 2024 at 07:26, <sergeh@kernel.org> wrote: > > > > > > > > > > 2. Add a trace event for cap_capable (Jordan Rome). > > > > > > > > So I've finally gotten around to this, but I absolutely detest how > > > > this was written. > > > > > > > > It was oddly written before, but now it's absolutely illegible. All > > > > just to have one single tracepoint. > > > > > > > > And it's all *stupid*. > > > > > > > > The "capable_ns" thing is entirely pointless. > > > > > > > > Why? It always has exactly one value: 'cred->user_ns'. Lookie here, > > > > it's assigned exactly twice: > > > > > > > > if (ns == cred->user_ns) { > > > > if (cap_raised(cred->cap_effective, cap)) { > > > > capable_ns = ns; > > > > ... > > > > if ((ns->parent == cred->user_ns) && uid_eq(ns->owner, > > > > cred->euid)) { > > > > capable_ns = ns->parent; > > > > > > > > and *both* times it's assigned something that we just checked is equal > > > > to cred->user_ns. > > > > > > > > And for this useless value, the already odd for-loop was written to be > > > > even more odd, and the code added a new variable 'capable_ns'. > > > > > > > > So I pulled this, tried to figure out _why_ it was written that oddly, > > > > decided that the "why" was "because it's being stupid", and I unpulled > > > > it again. > > > > > > > > If we really need that trace point, I have a few requirements: > > > > > > > > - none of this crazy stuff > > > > > > > > - use a simple inline helper > > > > > > > > - make the pointers 'const', because there is no reason not to. > > > > > > > > Something *UNTESTED* like the attached diff. > > > > > > > > Again: very untested. But at least this generates good code, and > > > > doesn't have pointless crazy variables. Yes, I add that > > > > > > > > const struct user_namespace *cred_ns = cred->user_ns; > > > > > > > > because while I think gcc may be smart enough to figure out that it's > > > > all the same value, I wanted to make sure. > > > > > > > > Then the tracepoint would look something like > > > > > > > > trace_cap_capable(cred, targ_ns, cred_ns, cap, opts, ret); > > > > > > > > although I don't understand why you'd even trace that 'opts' value > > > > that is never used. > > > > > > You mean cap_capable doesn't use opts? Yeah, it's used only by other > > > LSMs. I suppose knowing the value might in some cases help to figure > > > out caller state, but dropping it seems sensible. > > > > > > Jordan is working on a new version based on your feedback. > > > > > > thanks, > > > -serge > > > > Here is the new patch: > > https://patchwork.kernel.org/project/linux-security-module/patch/20241128153733.1542817-1-linux@jordanrome.com/ > > > > I applied the suggested changes but left the local `struct > > user_namespace *ns` in the helper (as it gets updated in the loop to > > the ns parent). > > Though it feels a bit icky that there is not a null check against the > > `ns` variable (maybe it's not possible to reach that condition > > though). > > Feels like a lot of bikeshedding here, but... > > Is there any reason at this point not to just pass in cred_euid as a uid_t, > and not pass the cred in at all? Avoid a few more dereferences... Sorry, I don't know how I missed the use of cred->cap_effective. Please ignore. ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2024-11-28 16:35 UTC | newest] Thread overview: 11+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-11-18 15:26 [GIT PULL] capabilities sergeh 2024-11-22 17:34 ` Serge E. Hallyn 2024-11-25 18:52 ` Paul Moore 2024-11-27 17:20 ` Serge E. Hallyn 2024-11-27 17:30 ` Linus Torvalds 2024-11-27 17:31 ` Linus Torvalds 2024-11-27 17:49 ` Linus Torvalds 2024-11-27 21:42 ` Serge E. Hallyn 2024-11-28 15:42 ` Jordan Rome 2024-11-28 16:28 ` Serge E. Hallyn 2024-11-28 16:35 ` Serge E. Hallyn
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).