2023-01-14 18:32:21

by Mateusz Guzik

[permalink] [raw]
Subject: [PATCH 1/2] capability: add cap_isidentical

Signed-off-by: Mateusz Guzik <[email protected]>
---
include/linux/capability.h | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/include/linux/capability.h b/include/linux/capability.h
index 65efb74c3585..736a973c677a 100644
--- a/include/linux/capability.h
+++ b/include/linux/capability.h
@@ -156,6 +156,16 @@ static inline bool cap_isclear(const kernel_cap_t a)
return true;
}

+static inline bool cap_isidentical(const kernel_cap_t a, const kernel_cap_t b)
+{
+ unsigned __capi;
+ CAP_FOR_EACH_U32(__capi) {
+ if (a.cap[__capi] != b.cap[__capi])
+ return false;
+ }
+ return true;
+}
+
/*
* Check if "a" is a subset of "set".
* return true if ALL of the capabilities in "a" are also in "set"
--
2.34.1


2023-01-14 19:48:01

by Serge E. Hallyn

[permalink] [raw]
Subject: Re: [PATCH 1/2] capability: add cap_isidentical

On Sat, Jan 14, 2023 at 07:02:23PM +0100, Mateusz Guzik wrote:
> Signed-off-by: Mateusz Guzik <[email protected]>

Reviewed-by: Serge Hallyn <[email protected]>

> ---
> include/linux/capability.h | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/include/linux/capability.h b/include/linux/capability.h
> index 65efb74c3585..736a973c677a 100644
> --- a/include/linux/capability.h
> +++ b/include/linux/capability.h
> @@ -156,6 +156,16 @@ static inline bool cap_isclear(const kernel_cap_t a)
> return true;
> }
>
> +static inline bool cap_isidentical(const kernel_cap_t a, const kernel_cap_t b)
> +{
> + unsigned __capi;
> + CAP_FOR_EACH_U32(__capi) {
> + if (a.cap[__capi] != b.cap[__capi])
> + return false;
> + }
> + return true;
> +}
> +
> /*
> * Check if "a" is a subset of "set".
> * return true if ALL of the capabilities in "a" are also in "set"
> --
> 2.34.1