Skip to content

Commit 1da67b5

Browse files
johnpgarryaxboe
authored andcommitted
block: Enforce power-of-2 physical block size
The merging/splitting code and other queue limits checking depends on the physical block size being a power-of-2, so enforce it. Reviewed-by: Martin K. Petersen <[email protected]> Signed-off-by: John Garry <[email protected]> Reviewed-by: Damien Le Moal <[email protected]> Reviewed-by: Hannes Reinecke <[email protected]> Link: https://lore.kernel.org/r/[email protected] [axboe: add missing braces] Signed-off-by: Jens Axboe <[email protected]>
1 parent 448dfec commit 1da67b5

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

block/blk-settings.c

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,8 +320,12 @@ int blk_validate_limits(struct queue_limits *lim)
320320
pr_warn("Invalid logical block size (%d)\n", lim->logical_block_size);
321321
return -EINVAL;
322322
}
323-
if (lim->physical_block_size < lim->logical_block_size)
323+
if (lim->physical_block_size < lim->logical_block_size) {
324324
lim->physical_block_size = lim->logical_block_size;
325+
} else if (!is_power_of_2(lim->physical_block_size)) {
326+
pr_warn("Invalid physical block size (%d)\n", lim->physical_block_size);
327+
return -EINVAL;
328+
}
325329

326330
/*
327331
* The minimum I/O size defaults to the physical block size unless

0 commit comments

Comments
 (0)