2021-11-30 04:30:08

by Parav Pandit

[permalink] [raw]
Subject: [PATCH v1] vdpa: Consider device id larger than 31

virtio device id value can be more than 31. Hence, use BIT_ULL in
assignment.

Fixes: 33b347503f01 ("vdpa: Define vdpa mgmt device, ops and a netlink interface")
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>
Signed-off-by: Parav Pandit <[email protected]>
Acked-by: Jason Wang <[email protected]>
---
changelog:
v0->v1:
- supporting device id up to 63
---
drivers/vdpa/vdpa.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c
index 7332a74a4b00..09bbe53c3ac4 100644
--- a/drivers/vdpa/vdpa.c
+++ b/drivers/vdpa/vdpa.c
@@ -404,7 +404,8 @@ static int vdpa_mgmtdev_fill(const struct vdpa_mgmt_dev *mdev, struct sk_buff *m
goto msg_err;

while (mdev->id_table[i].device) {
- supported_classes |= BIT(mdev->id_table[i].device);
+ if (mdev->id_table[i].device <= 63)
+ supported_classes |= BIT_ULL(mdev->id_table[i].device);
i++;
}

--
2.26.2



2021-11-30 23:35:01

by Michael S. Tsirkin

[permalink] [raw]
Subject: Re: [PATCH v1] vdpa: Consider device id larger than 31

On Tue, Nov 30, 2021 at 06:29:49AM +0200, Parav Pandit wrote:
> virtio device id value can be more than 31. Hence, use BIT_ULL in
> assignment.
>
> Fixes: 33b347503f01 ("vdpa: Define vdpa mgmt device, ops and a netlink interface")
> Reported-by: kernel test robot <[email protected]>
> Reported-by: Dan Carpenter <[email protected]>
> Signed-off-by: Parav Pandit <[email protected]>
> Acked-by: Jason Wang <[email protected]>
> ---
> changelog:
> v0->v1:
> - supporting device id up to 63
> ---
> drivers/vdpa/vdpa.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/vdpa/vdpa.c b/drivers/vdpa/vdpa.c
> index 7332a74a4b00..09bbe53c3ac4 100644
> --- a/drivers/vdpa/vdpa.c
> +++ b/drivers/vdpa/vdpa.c
> @@ -404,7 +404,8 @@ static int vdpa_mgmtdev_fill(const struct vdpa_mgmt_dev *mdev, struct sk_buff *m
> goto msg_err;
>
> while (mdev->id_table[i].device) {
> - supported_classes |= BIT(mdev->id_table[i].device);
> + if (mdev->id_table[i].device <= 63)
> + supported_classes |= BIT_ULL(mdev->id_table[i].device);
> i++;
> }


Not for this release, but a for loop will be cleaner here.

> --
> 2.26.2