]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
md: fix return value of mddev_trylock
authorXiao Ni <xni@redhat.com>
Tue, 27 Jan 2026 07:39:27 +0000 (15:39 +0800)
committerYu Kuai <yukuai@fnnas.com>
Mon, 2 Feb 2026 07:39:55 +0000 (15:39 +0800)
A return value of 0 is treaded as successful lock acquisition. In fact, a
return value of 1 means getting the lock successfully.

Link: https://lore.kernel.org/linux-raid/20260127073951.17248-1-xni@redhat.com
Fixes: 9e59d609763f ("md: call del_gendisk in control path")
Reported-by: Bart Van Assche <bvanassche@acm.org>
Closes: https://lore.kernel.org/linux-raid/20250611073108.25463-1-xni@redhat.com/T/#mfa369ef5faa4aa58e13e6d9fdb88aecd862b8f2f
Signed-off-by: Xiao Ni <xni@redhat.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Li Nan <linan122@huawei.com>
Signed-off-by: Yu Kuai <yukuai@fnnas.com>
drivers/md/md.h

index e6d3d88698edf09d36141dc314dbaba7dabdd73d..ac84289664cd7e5bcaa8a809d40460997c009323 100644 (file)
@@ -735,8 +735,8 @@ static inline int mddev_trylock(struct mddev *mddev)
        int ret;
 
        ret = mutex_trylock(&mddev->reconfig_mutex);
-       if (!ret && test_bit(MD_DELETED, &mddev->flags)) {
-               ret = -ENODEV;
+       if (ret && test_bit(MD_DELETED, &mddev->flags)) {
+               ret = 0;
                mutex_unlock(&mddev->reconfig_mutex);
        }
        return ret;