From: Aarnav JP <[email protected]>

Cast uint16_t operands to uint64_t before bitwise OR with
uint64_t rx_offloads to fix operand size mismatches. Add NULL
check for bracket parser end pointer to prevent undefined
behavior from pointer comparison with NULL.

Fixes: 697883bcb0a8 ("event/cnxk: fix Rx timestamp handling")
Fixes: fe7ed2ebbf37 ("event/cnxk: set Rx offload flags")
Fixes: 38c2e3240ba8 ("event/cnxk: add option to control SSO HWGRP QoS")
Fixes: 8a3d58c189fd ("event/cnxk: add option to control timer adapters")
Cc: [email protected]

Signed-off-by: Aarnav JP <[email protected]>
---
Changes in v2: No change.

 drivers/event/cnxk/cn10k_eventdev.c      | 2 +-
 drivers/event/cnxk/cnxk_eventdev.c       | 2 +-
 drivers/event/cnxk/cnxk_eventdev_adptr.c | 4 ++--
 drivers/event/cnxk/cnxk_tim_evdev.c      | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/event/cnxk/cn10k_eventdev.c 
b/drivers/event/cnxk/cn10k_eventdev.c
index 2e4b8aab92..62fea93b0b 100644
--- a/drivers/event/cnxk/cn10k_eventdev.c
+++ b/drivers/event/cnxk/cn10k_eventdev.c
@@ -660,7 +660,7 @@ cn10k_sso_tstamp_hdl_update(uint16_t port_id, uint16_t 
flags, bool ptp_en)
        struct rte_eventdev *event_dev = cnxk_eth_dev->evdev_priv;
        struct cnxk_sso_evdev *evdev = cnxk_sso_pmd_priv(event_dev);

-       evdev->rx_offloads |= flags;
+       evdev->rx_offloads |= (uint64_t)flags;
        if (ptp_en)
                evdev->tstamp[port_id] = &cnxk_eth_dev->tstamp;
        else
diff --git a/drivers/event/cnxk/cnxk_eventdev.c 
b/drivers/event/cnxk/cnxk_eventdev.c
index be6a487b59..4aa16f9026 100644
--- a/drivers/event/cnxk/cnxk_eventdev.c
+++ b/drivers/event/cnxk/cnxk_eventdev.c
@@ -566,7 +566,7 @@ parse_list(const char *value, void *opaque, param_parse_t 
fn)
                else if (*s == ']')
                        end = s;

-               if (start && start < end) {
+               if (start && end && start < end) {
                        *end = 0;
                        fn(start + 1, opaque);
                        s = end;
diff --git a/drivers/event/cnxk/cnxk_eventdev_adptr.c 
b/drivers/event/cnxk/cnxk_eventdev_adptr.c
index 8536dee5bf..5678e5d264 100644
--- a/drivers/event/cnxk/cnxk_eventdev_adptr.c
+++ b/drivers/event/cnxk/cnxk_eventdev_adptr.c
@@ -285,7 +285,7 @@ cnxk_sso_rx_adapter_queues_add(const struct rte_eventdev 
*event_dev,
        /* Propagate force bp devarg */
        cnxk_eth_dev->nix.force_rx_aura_bp = dev->force_ena_bp;
        cnxk_sso_tstamp_cfg(eth_dev->data->port_id, eth_dev, dev);
-       dev->rx_offloads |= cnxk_eth_dev->rx_offload_flags;
+       dev->rx_offloads |= (uint64_t)cnxk_eth_dev->rx_offload_flags;
        return 0;

 fail:
@@ -330,7 +330,7 @@ cnxk_sso_rx_adapter_start(const struct rte_eventdev 
*event_dev,
 {
        struct cnxk_eth_dev *cnxk_eth_dev = eth_dev->data->dev_private;
        struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
-       dev->rx_offloads |= cnxk_eth_dev->rx_offload_flags;
+       dev->rx_offloads |= (uint64_t)cnxk_eth_dev->rx_offload_flags;
        return 0;
 }

diff --git a/drivers/event/cnxk/cnxk_tim_evdev.c 
b/drivers/event/cnxk/cnxk_tim_evdev.c
index 994d1d1090..8cdb8a72dd 100644
--- a/drivers/event/cnxk/cnxk_tim_evdev.c
+++ b/drivers/event/cnxk/cnxk_tim_evdev.c
@@ -508,7 +508,7 @@ cnxk_tim_parse_ring_ctl_list(const char *value, void 
*opaque)
                else
                        continue;

-               if (start && start < end) {
+               if (start && end && start < end) {
                        *end = 0;
                        cnxk_tim_parse_ring_param(start + 1, opaque);
                        start = end;
--
2.34.1

Reply via email to