lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 581/846] block: check minor range in device_add_disk()
    Date
    From: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>

    [ Upstream commit e338924bd05d6e71574bc13e310c89e10e49a8a5 ]

    ioctl(fd, LOOP_CTL_ADD, 1048576) causes

    sysfs: cannot create duplicate filename '/dev/block/7:0'

    message because such request is treated as if ioctl(fd, LOOP_CTL_ADD, 0)
    due to MINORMASK == 1048575. Verify that all minor numbers for that device
    fit in the minor range.

    Reported-by: wangyangbo <wangyangbo@uniontech.com>
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Link: https://lore.kernel.org/r/b1b19379-23ee-5379-0eb5-94bf5f79f1b4@i-love.sakura.ne.jp
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    block/genhd.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/block/genhd.c b/block/genhd.c
    index 22f899615801c..de789d1a1e3d2 100644
    --- a/block/genhd.c
    +++ b/block/genhd.c
    @@ -420,6 +420,8 @@ int device_add_disk(struct device *parent, struct gendisk *disk,
    DISK_MAX_PARTS);
    disk->minors = DISK_MAX_PARTS;
    }
    + if (disk->first_minor + disk->minors > MINORMASK + 1)
    + return -EINVAL;
    } else {
    if (WARN_ON(disk->minors))
    return -EINVAL;
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 00:40    [W:4.087 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site