Commit c39e05af43 for qemu.org
commit c39e05af439a3a2bd58a847fc30d7eb590fcf61e
Author: Klaus Jensen <k.jensen@samsung.com>
Date: Tue Jul 28 11:42:29 2026 +0200
hw/nvme: fix unintentional integer overflow in shift
Fix potentially overflowing shift operation.
Cc: qemu-stable@nongnu.org
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Suggested-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Resolves: Coverity CID 1663674
Fixes: ec917cd49918 ("hw/nvme: fix FDP set FDP events")
Reviewed-by: Philippe Mathieu-Daudé <philmd@oss.qualcomm.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index acd10fcc67..bd6ad64b20 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -196,6 +196,7 @@
*/
#include "qemu/osdep.h"
+#include "qemu/bitops.h"
#include "qemu/cutils.h"
#include "qemu/error-report.h"
#include "qemu/log.h"
@@ -6625,7 +6626,8 @@ 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 =
+ deposit64(event_mask, nvme_fdp_evf_shifts[events[i]], 1, 1);
}
if (enable) {