Thread (21 messages) 21 messages, 5 authors, 2022-01-14

Re: [dpdk-dev] [dpdk-stable] [PATCH] ethdev: fix crash on owner delete

From: Thomas Monjalon <hidden>
Date: 2021-11-05 13:16:34

05/11/2021 04:03, Xia, Chenbo:
From: stable <redacted> On Behalf Of Ferruh Yigit
quoted
'eth_dev->data' can be null before ethdev allocated. The API walks
through all eth devices, at least for some data can be null.

Adding 'eth_dev->data' null check before accessing it.

Fixes: 33c73aae32e4 ("ethdev: allow ownership operations on unused port")
Cc: stable@dpdk.org

Signed-off-by: Ferruh Yigit <redacted>
[...]
quoted
@@ -757,10 +757,13 @@ rte_eth_dev_owner_delete(const uint64_t owner_id)
      rte_spinlock_lock(&eth_dev_shared_data->ownership_lock);

      if (eth_is_valid_owner_id(owner_id)) {
-             for (port_id = 0; port_id < RTE_MAX_ETHPORTS; port_id++)
-                     if (rte_eth_devices[port_id].data->owner.id == owner_id)
-                             memset(&rte_eth_devices[port_id].data->owner, 0,
+             for (port_id = 0; port_id < RTE_MAX_ETHPORTS; port_id++) {
+                     struct rte_eth_dev_data *data =
+                             rte_eth_devices[port_id].data;
+                     if (data != NULL && data->owner.id == owner_id)
Indeed the NULL check was missing.
Acked-by: Chenbo Xia <redacted>
Acked-by: Thomas Monjalon <redacted>

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help