Whamcloud - gitweb
LU-18966 o2iblnd: Missing spin lock in poolset destroy 59/59059/2
authorFrank Sehr <fsehr@whamcloud.com>
Thu, 1 May 2025 20:19:39 +0000 (13:19 -0700)
committerOleg Drokin <green@whamcloud.com>
Wed, 21 May 2025 05:18:09 +0000 (05:18 +0000)
Put a spin lock around pool set destroy in
kiblnd_fini_fmr_poolset() and kiblnd_fini_poolset()

Test-Parameters: trivial testlist=sanity-lnet
Signed-off-by: Frank Sehr <fsehr@whamcloud.com>
Change-Id: I4a2864a64b1c1389cab84b120f889b1414a5d0de
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/59059
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Chris Horn <chris.horn@hpe.com>
Reviewed-by: Timothy Day <timday@amazon.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lnet/klnds/o2iblnd/o2iblnd.c

index 710dd26..6cd6c3d 100644 (file)
@@ -1856,8 +1856,11 @@ static void
 kiblnd_fini_fmr_poolset(struct kib_fmr_poolset *fps)
 {
        if (fps->fps_net != NULL) { /* initialized? */
+               /* added spinlock to protect poolset */
+               spin_lock(&fps->fps_lock);
                kiblnd_destroy_fmr_pool_list(&fps->fps_failed_pool_list);
                kiblnd_destroy_fmr_pool_list(&fps->fps_pool_list);
+               spin_unlock(&fps->fps_lock);
        }
 }
 
@@ -2245,8 +2248,11 @@ static void
 kiblnd_fini_poolset(struct kib_poolset *ps)
 {
        if (ps->ps_net != NULL) { /* initialized? */
+               /* added spinlock to protect poolset */
+               spin_lock(&ps->ps_lock);
                kiblnd_destroy_pool_list(&ps->ps_failed_pool_list);
                kiblnd_destroy_pool_list(&ps->ps_pool_list);
+               spin_unlock(&ps->ps_lock);
        }
 }