Skip to content

Commit abb4cf2

Browse files
author
Mikulas Patocka
committed
dm: lock limits when reading them
Lock queue limits when reading them, so that we don't read halfway modified values. Signed-off-by: Mikulas Patocka <[email protected]> Cc: [email protected]
1 parent f1e2404 commit abb4cf2

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

drivers/md/dm-table.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,7 @@ static int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev,
431431
return 0;
432432
}
433433

434+
mutex_lock(&q->limits_lock);
434435
if (blk_stack_limits(limits, &q->limits,
435436
get_start_sect(bdev) + start) < 0)
436437
DMWARN("%s: adding target device %pg caused an alignment inconsistency: "
@@ -448,6 +449,7 @@ static int dm_set_device_limits(struct dm_target *ti, struct dm_dev *dev,
448449
*/
449450
if (!dm_target_has_integrity(ti->type))
450451
queue_limits_stack_integrity_bdev(limits, bdev);
452+
mutex_unlock(&q->limits_lock);
451453
return 0;
452454
}
453455

@@ -1734,8 +1736,12 @@ static int device_not_write_zeroes_capable(struct dm_target *ti, struct dm_dev *
17341736
sector_t start, sector_t len, void *data)
17351737
{
17361738
struct request_queue *q = bdev_get_queue(dev->bdev);
1739+
int b;
17371740

1738-
return !q->limits.max_write_zeroes_sectors;
1741+
mutex_lock(&q->limits_lock);
1742+
b = !q->limits.max_write_zeroes_sectors;
1743+
mutex_unlock(&q->limits_lock);
1744+
return b;
17391745
}
17401746

17411747
static bool dm_table_supports_write_zeroes(struct dm_table *t)

0 commit comments

Comments
 (0)