]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
fs/buffer: remove the min and max limit checks in __getblk_slow()
authorPankaj Raghav <p.raghav@samsung.com>
Thu, 26 Jun 2025 11:32:23 +0000 (13:32 +0200)
committerChristian Brauner <brauner@kernel.org>
Tue, 8 Jul 2025 14:48:12 +0000 (16:48 +0200)
All filesystems will already check the max and min value of their block
size during their initialization. __getblk_slow() is a very low-level
function to have these checks. Remove them and only check for logical
block size alignment.

As this check with logical block size alignment might never trigger, add
WARN_ON_ONCE() to the check. As WARN_ON_ONCE() will already print the
stack, remove the call to dump_stack().

Suggested-by: Matthew Wilcox <willy@infradead.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Pankaj Raghav <p.raghav@samsung.com>
Link: https://lore.kernel.org/20250626113223.181399-1-p.raghav@samsung.com
Reviewed-by: Baokun Li <libaokun1@huawei.com>
Signed-off-by: Christian Brauner <brauner@kernel.org>
fs/buffer.c

index d6107314312774ee6077d8da386dbe3c39222fa2..565fe88773c2d0a0da35c2926a487d9c66c900be 100644 (file)
@@ -1122,14 +1122,9 @@ __getblk_slow(struct block_device *bdev, sector_t block,
 {
        bool blocking = gfpflags_allow_blocking(gfp);
 
-       if (unlikely(size & (bdev_logical_block_size(bdev) - 1) ||
-                    (size < 512 || size > PAGE_SIZE))) {
-               printk(KERN_ERR "getblk(): invalid block size %d requested\n",
-                                       size);
-               printk(KERN_ERR "logical block size: %d\n",
-                                       bdev_logical_block_size(bdev));
-
-               dump_stack();
+       if (WARN_ON_ONCE(!IS_ALIGNED(size, bdev_logical_block_size(bdev)))) {
+               printk(KERN_ERR "getblk(): block size %d not aligned to logical block size %d\n",
+                      size, bdev_logical_block_size(bdev));
                return NULL;
        }