[PATCH] hw/nvme: fix unintentional integer overflow in shift

Klaus Jensen posted 1 patch 2 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20260728-fix-shift-v1-1-bdb98c205233@samsung.com
Maintainers: Keith Busch <kbusch@kernel.org>, Klaus Jensen <its@irrelevant.dk>, Jesper Devantier <foss@defmacro.it>
There is a newer version of this series
hw/nvme/ctrl.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] hw/nvme: fix unintentional integer overflow in shift
Posted by Klaus Jensen 2 months ago
From: Klaus Jensen <k.jensen@samsung.com>

Fix potentially overflowing shift operation.

Cc: qemu-stable@nongnu.org
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Resolves: Coverity CID 1663674
Fixes: ec917cd49918 ("hw/nvme: fix FDP set FDP events")
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
 hw/nvme/ctrl.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index a67e1598891c..40f22fdc40bd 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -6622,7 +6622,7 @@ static uint16_t nvme_set_feature_fdp_events(NvmeCtrl *n, NvmeNamespace *ns,
         if (!shift && event_type) {
             continue;
         }
-        event_mask |= (1 << nvme_fdp_evf_shifts[events[i]]);
+        event_mask |= (1ULL << nvme_fdp_evf_shifts[events[i]]);
     }
 
     if (enable) {

---
base-commit: 299e7557ed15a9a325620698add379a3ce2d1d95
change-id: 20260728-fix-shift-525e53c1df6f

Best regards,
-- 
Klaus Jensen <k.jensen@samsung.com>
Re: [PATCH] hw/nvme: fix unintentional integer overflow in shift
Posted by Philippe Mathieu-Daudé 2 months ago
On 28/7/26 11:26, Klaus Jensen wrote:
> From: Klaus Jensen <k.jensen@samsung.com>
> 
> Fix potentially overflowing shift operation.
> 
> Cc: qemu-stable@nongnu.org
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> Resolves: Coverity CID 1663674
> Fixes: ec917cd49918 ("hw/nvme: fix FDP set FDP events")
> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
> ---
>   hw/nvme/ctrl.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
> index a67e1598891c..40f22fdc40bd 100644
> --- a/hw/nvme/ctrl.c
> +++ b/hw/nvme/ctrl.c
> @@ -6622,7 +6622,7 @@ static uint16_t nvme_set_feature_fdp_events(NvmeCtrl *n, NvmeNamespace *ns,
>           if (!shift && event_type) {
>               continue;
>           }
> -        event_mask |= (1 << nvme_fdp_evf_shifts[events[i]]);
> +        event_mask |= (1ULL << nvme_fdp_evf_shifts[events[i]]);

Alternatively:

   event_mask = deposit64(event_mask, nvme_fdp_evf_shifts[events[i]], 1);

>       }
>   
>       if (enable) {
> 
> ---
> base-commit: 299e7557ed15a9a325620698add379a3ce2d1d95
> change-id: 20260728-fix-shift-525e53c1df6f
> 
> Best regards,
Re: [PATCH] hw/nvme: fix unintentional integer overflow in shift
Posted by Klaus Jensen 2 months ago
On Jul 28 11:34, Philippe Mathieu-Daudé wrote:
> On 28/7/26 11:26, Klaus Jensen wrote:
> > From: Klaus Jensen <k.jensen@samsung.com>
> > 
> > Fix potentially overflowing shift operation.
> > 
> > Cc: qemu-stable@nongnu.org
> > Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> > Resolves: Coverity CID 1663674
> > Fixes: ec917cd49918 ("hw/nvme: fix FDP set FDP events")
> > Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
> > ---
> >   hw/nvme/ctrl.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
> > index a67e1598891c..40f22fdc40bd 100644
> > --- a/hw/nvme/ctrl.c
> > +++ b/hw/nvme/ctrl.c
> > @@ -6622,7 +6622,7 @@ static uint16_t nvme_set_feature_fdp_events(NvmeCtrl *n, NvmeNamespace *ns,
> >           if (!shift && event_type) {
> >               continue;
> >           }
> > -        event_mask |= (1 << nvme_fdp_evf_shifts[events[i]]);
> > +        event_mask |= (1ULL << nvme_fdp_evf_shifts[events[i]]);
> 
> Alternatively:
> 
>   event_mask = deposit64(event_mask, nvme_fdp_evf_shifts[events[i]], 1);
> 

Better! Thanks!

> >       }
> >       if (enable) {
> > 
> > ---
> > base-commit: 299e7557ed15a9a325620698add379a3ce2d1d95
> > change-id: 20260728-fix-shift-525e53c1df6f
> > 
> > Best regards,
> 
> 
Re: [PATCH] hw/nvme: fix unintentional integer overflow in shift
Posted by Philippe Mathieu-Daudé 2 months ago
On 28/7/26 11:42, Klaus Jensen wrote:
> On Jul 28 11:34, Philippe Mathieu-Daudé wrote:
>> On 28/7/26 11:26, Klaus Jensen wrote:
>>> From: Klaus Jensen <k.jensen@samsung.com>
>>>
>>> Fix potentially overflowing shift operation.
>>>
>>> Cc: qemu-stable@nongnu.org
>>> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
>>> Resolves: Coverity CID 1663674
>>> Fixes: ec917cd49918 ("hw/nvme: fix FDP set FDP events")
>>> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
>>> ---
>>>    hw/nvme/ctrl.c | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
>>> index a67e1598891c..40f22fdc40bd 100644
>>> --- a/hw/nvme/ctrl.c
>>> +++ b/hw/nvme/ctrl.c
>>> @@ -6622,7 +6622,7 @@ static uint16_t nvme_set_feature_fdp_events(NvmeCtrl *n, NvmeNamespace *ns,
>>>            if (!shift && event_type) {
>>>                continue;
>>>            }
>>> -        event_mask |= (1 << nvme_fdp_evf_shifts[events[i]]);
>>> +        event_mask |= (1ULL << nvme_fdp_evf_shifts[events[i]]);
>>
>> Alternatively:
>>
>>    event_mask = deposit64(event_mask, nvme_fdp_evf_shifts[events[i]], 1);
>>
> 
> Better! Thanks!

Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>

> 
>>>        }
>>>        if (enable) {
>>>
>>> ---
>>> base-commit: 299e7557ed15a9a325620698add379a3ce2d1d95
>>> change-id: 20260728-fix-shift-525e53c1df6f
>>>
>>> Best regards,
>>
>>