]> www.infradead.org Git - nvme.git/commitdiff
md: Fix linear_set_limits()
authorBart Van Assche <bvanassche@acm.org>
Wed, 29 Jan 2025 22:56:35 +0000 (14:56 -0800)
committerSong Liu <song@kernel.org>
Fri, 31 Jan 2025 18:18:50 +0000 (10:18 -0800)
queue_limits_cancel_update() must only be called if
queue_limits_start_update() is called first. Remove the
queue_limits_cancel_update() call from linear_set_limits() because
there is no corresponding queue_limits_start_update() call.

This bug was discovered by annotating all mutex operations with clang
thread-safety attributes and by building the kernel with clang and
-Wthread-safety.

Cc: Yu Kuai <yukuai3@huawei.com>
Cc: Coly Li <colyli@kernel.org>
Cc: Mike Snitzer <snitzer@kernel.org>
Cc: Christoph Hellwig <hch@lst.de>
Fixes: 127186cfb184 ("md: reintroduce md-linear")
Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20250129225636.2667932-1-bvanassche@acm.org
Signed-off-by: Song Liu <song@kernel.org>
drivers/md/md-linear.c

index a382929ce7bab43d953efa3babc0df7f19e8d2cd..369aed044b409f14bb5a84b9158f1514c888f66f 100644 (file)
@@ -76,10 +76,8 @@ static int linear_set_limits(struct mddev *mddev)
        lim.max_write_zeroes_sectors = mddev->chunk_sectors;
        lim.io_min = mddev->chunk_sectors << 9;
        err = mddev_stack_rdev_limits(mddev, &lim, MDDEV_STACK_INTEGRITY);
-       if (err) {
-               queue_limits_cancel_update(mddev->gendisk->queue);
+       if (err)
                return err;
-       }
 
        return queue_limits_set(mddev->gendisk->queue, &lim);
 }