| From 5401e5f6e455482a5ecb4a7c5ddc6a80746663dc Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 21 Apr 2021 13:19:45 +0300 |
| Subject: ataflop: fix off by one in ataflop_probe() |
| |
| From: Dan Carpenter <dan.carpenter@oracle.com> |
| |
| [ Upstream commit b777f4c47781df6b23e3f4df6fdb92d9aceac7bb ] |
| |
| Smatch complains that the "type > NUM_DISK_MINORS" should be >= |
| instead of >. We also need to subtract one from "type" at the start. |
| |
| Fixes: bf9c0538e485 ("ataflop: use a separate gendisk for each media format") |
| Reported-by: kernel test robot <lkp@intel.com> |
| Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> |
| Reviewed-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Jens Axboe <axboe@kernel.dk> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/block/ataflop.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/block/ataflop.c b/drivers/block/ataflop.c |
| index aed2c2a4f4ea..d601e49f80e0 100644 |
| --- a/drivers/block/ataflop.c |
| +++ b/drivers/block/ataflop.c |
| @@ -2001,7 +2001,10 @@ static void ataflop_probe(dev_t dev) |
| int drive = MINOR(dev) & 3; |
| int type = MINOR(dev) >> 2; |
| |
| - if (drive >= FD_MAX_UNITS || type > NUM_DISK_MINORS) |
| + if (type) |
| + type--; |
| + |
| + if (drive >= FD_MAX_UNITS || type >= NUM_DISK_MINORS) |
| return; |
| mutex_lock(&ataflop_probe_lock); |
| if (!unit[drive].disk[type]) { |
| -- |
| 2.30.2 |
| |