diff mbox series

block: nbd: fix sanity check for first_minor

Message ID 20211009053540.95100-1-ukernel@gmail.com (mailing list archive)
State New, archived
Headers show
Series block: nbd: fix sanity check for first_minor | expand

Commit Message

Yan, Zheng Oct. 9, 2021, 5:35 a.m. UTC
From: "Yan, Zheng" <yanzheng03@kuaishou.com>

Device's minor is a 20-bits number, max value is 0xfffff.

Fixes: b1a811633f ("block: nbd: add sanity check for first_minor").
Signed-off-by: "Yan, Zheng" <yanzheng03@kuaishou.com>
---
 drivers/block/nbd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Pavel Skripkin Oct. 9, 2021, 8:46 a.m. UTC | #1
On 10/9/21 08:35, Yan, Zheng wrote:

+CC Christoph

> From: "Yan, Zheng" <yanzheng03@kuaishou.com>
> 
> Device's minor is a 20-bits number, max value is 0xfffff.
> 
> Fixes: b1a811633f ("block: nbd: add sanity check for first_minor").
> Signed-off-by: "Yan, Zheng" <yanzheng03@kuaishou.com>
> ---
>   drivers/block/nbd.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
> index 1183f7872b71..53cd038c96e9 100644
> --- a/drivers/block/nbd.c
> +++ b/drivers/block/nbd.c
> @@ -1753,7 +1753,7 @@ static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
>   	 * byte in __device_add_disk().
>   	 */
>   	disk->first_minor = index << part_shift;
> -	if (disk->first_minor > 0xff) {
> +	if (disk->first_minor > MINORMASK) {
>   		err = -EINVAL;
>   		goto out_free_idr;
>   	}
> 

I've looked into what confused me with 0xff and I found that uapi's 
kdev_t.h has following MINOR definition:

#define MINOR(dev)	((dev) & 0xff)


But kernel's kdev_t.h is really allows 20 bit minor number :)

Also, can you, please, fix up comment above this check, since it 
contains info about max minor 0xff and it can confuse readers.




With regards,
Pavel Skripkin
diff mbox series

Patch

diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index 1183f7872b71..53cd038c96e9 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -1753,7 +1753,7 @@  static struct nbd_device *nbd_dev_add(int index, unsigned int refs)
 	 * byte in __device_add_disk().
 	 */
 	disk->first_minor = index << part_shift;
-	if (disk->first_minor > 0xff) {
+	if (disk->first_minor > MINORMASK) {
 		err = -EINVAL;
 		goto out_free_idr;
 	}