diff mbox series

selinux: fix misuse of mutex_is_locked()

Message ID 20220221140649.360897-1-omosnace@redhat.com (mailing list archive)
State Accepted
Delegated to: Paul Moore
Headers show
Series selinux: fix misuse of mutex_is_locked() | expand

Commit Message

Ondrej Mosnacek Feb. 21, 2022, 2:06 p.m. UTC
mutex_is_locked() tests whether the mutex is locked *by any task*, while
here we want to test if it is held *by the current task*. To avoid
false/missed WARNINGs, use lockdep_assert_is_held() and
lockdep_assert_is_not_held() instead, which do the right thing (though
they are a no-op if CONFIG_LOCKDEP=n).

Fixes: 2554a48f4437 ("selinux: measure state and policy capabilities")
Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
---
 security/selinux/ima.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Paul Moore Feb. 22, 2022, 11:11 p.m. UTC | #1
On Mon, Feb 21, 2022 at 9:06 AM Ondrej Mosnacek <omosnace@redhat.com> wrote:
>
> mutex_is_locked() tests whether the mutex is locked *by any task*, while
> here we want to test if it is held *by the current task*. To avoid
> false/missed WARNINGs, use lockdep_assert_is_held() and
> lockdep_assert_is_not_held() instead, which do the right thing (though
> they are a no-op if CONFIG_LOCKDEP=n).
>
> Fixes: 2554a48f4437 ("selinux: measure state and policy capabilities")
> Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
> ---
>  security/selinux/ima.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Merged into selinux/stable-5.17, thanks.  Assuming no surprises during
testing I'll send this up to Linus tomorrow.
diff mbox series

Patch

diff --git a/security/selinux/ima.c b/security/selinux/ima.c
index 727c4e43219d..ff7aea6b3774 100644
--- a/security/selinux/ima.c
+++ b/security/selinux/ima.c
@@ -77,7 +77,7 @@  void selinux_ima_measure_state_locked(struct selinux_state *state)
 	size_t policy_len;
 	int rc = 0;
 
-	WARN_ON(!mutex_is_locked(&state->policy_mutex));
+	lockdep_assert_held(&state->policy_mutex);
 
 	state_str = selinux_ima_collect_state(state);
 	if (!state_str) {
@@ -117,7 +117,7 @@  void selinux_ima_measure_state_locked(struct selinux_state *state)
  */
 void selinux_ima_measure_state(struct selinux_state *state)
 {
-	WARN_ON(mutex_is_locked(&state->policy_mutex));
+	lockdep_assert_not_held(&state->policy_mutex);
 
 	mutex_lock(&state->policy_mutex);
 	selinux_ima_measure_state_locked(state);