Skip to content

Commit c9600c6

Browse files
YuKuai-huaweiAl Viro
authored andcommitted
block2mtd: prevent direct access of bd_inode
All we need is size, and that can be obtained via bdev_nr_bytes() Signed-off-by: Yu Kuai <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Reviewed-by: Jan Kara <[email protected]> Signed-off-by: Al Viro <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Christian Brauner <[email protected]>
1 parent dc0fdfc commit c9600c6

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

drivers/mtd/devices/block2mtd.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size,
265265
struct file *bdev_file;
266266
struct block_device *bdev;
267267
struct block2mtd_dev *dev;
268+
loff_t size;
268269
char *name;
269270

270271
if (!devname)
@@ -291,7 +292,8 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size,
291292
goto err_free_block2mtd;
292293
}
293294

294-
if ((long)bdev->bd_inode->i_size % erase_size) {
295+
size = bdev_nr_bytes(bdev);
296+
if ((long)size % erase_size) {
295297
pr_err("erasesize must be a divisor of device size\n");
296298
goto err_free_block2mtd;
297299
}
@@ -309,7 +311,7 @@ static struct block2mtd_dev *add_device(char *devname, int erase_size,
309311

310312
dev->mtd.name = name;
311313

312-
dev->mtd.size = bdev->bd_inode->i_size & PAGE_MASK;
314+
dev->mtd.size = size & PAGE_MASK;
313315
dev->mtd.erasesize = erase_size;
314316
dev->mtd.writesize = 1;
315317
dev->mtd.writebufsize = PAGE_SIZE;

0 commit comments

Comments
 (0)