From 1df5199097ef0d789fea050c0bc19358e2354063 Mon Sep 17 00:00:00 2001 From: James Simmons Date: Sun, 2 Oct 2022 09:45:42 -0400 Subject: [PATCH] LU-15807 ksocklnd: fix irq lock inversion while calling sk_data_ready() sk->sk_data_ready() of sctp socket can be called from both BH and non-BH contexts, but ksocklnd version of sk_data_ready, ksocknal_data_ready() does not handle the BH case. Change how ksnd_global_lock is taken in this case. Test-Parameters: trivial testlist=sanity-lnet Test-Parameters: testgroup=review-ldiskfs-arm testlist=sanity-lnet Change-Id: I07fade0da4cdfe095edc7a17e4f65012d6f92942 Signed-off-by: James Simmons Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/48715 Reviewed-by: Chris Horn Reviewed-by: Serguei Smirnov Reviewed-by: Frank Sehr Reviewed-by: Oleg Drokin Tested-by: Maloo Tested-by: jenkins --- lnet/klnds/socklnd/socklnd_lib.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lnet/klnds/socklnd/socklnd_lib.c b/lnet/klnds/socklnd/socklnd_lib.c index 46cb3c6..605777a 100644 --- a/lnet/klnds/socklnd/socklnd_lib.c +++ b/lnet/klnds/socklnd/socklnd_lib.c @@ -577,7 +577,7 @@ ksocknal_data_ready(struct sock *sk, int n) /* interleave correctly with closing sockets... */ LASSERT(!in_irq()); - read_lock(&ksocknal_data.ksnd_global_lock); + read_lock_bh(&ksocknal_data.ksnd_global_lock); conn = sk->sk_user_data; if (conn == NULL) { /* raced with ksocknal_terminate_conn */ @@ -590,7 +590,7 @@ ksocknal_data_ready(struct sock *sk, int n) } else ksocknal_read_callback(conn); - read_unlock(&ksocknal_data.ksnd_global_lock); + read_unlock_bh(&ksocknal_data.ksnd_global_lock); } static void -- 1.8.3.1