From: Klaus Jensen <[email protected]>

Fix potentially overflowing shift operation.

Cc: [email protected]
Suggested-by: Peter Maydell <[email protected]>
Suggested-by: Philippe Mathieu-Daudé <[email protected]>
Resolves: Coverity CID 1663674
Fixes: ec917cd49918 ("hw/nvme: fix FDP set FDP events")
Reviewed-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Klaus Jensen <[email protected]>
(cherry picked from commit c39e05af439a3a2bd58a847fc30d7eb590fcf61e)
Signed-off-by: Michael Tokarev <[email protected]>

diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 258ad5f38ec..46f44f28922 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -194,6 +194,7 @@
  */
 
 #include "qemu/osdep.h"
+#include "qemu/bitops.h"
 #include "qemu/cutils.h"
 #include "qemu/error-report.h"
 #include "qemu/log.h"
@@ -6538,7 +6539,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) {
-- 
2.47.3


Reply via email to