Found by coccinelle script.  If rte_zmalloc() failed in 
rte_eth_dev_callback_register
then NULL pointer would be dereferenced.

Signed-off-by: Stephen Hemminger <stephen at networkplumber.org>
---
 lib/librte_ether/rte_ethdev.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index ddf3658..aa363be 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -2929,9 +2929,10 @@ rte_eth_dev_callback_register(uint8_t port_id,
        }

        /* create a new callback. */
-       if (user_cb == NULL &&
-           (user_cb = rte_zmalloc("INTR_USER_CALLBACK",
-                                  sizeof(struct rte_eth_dev_callback), 0))) {
+       if (!user_cb)
+           user_cb = rte_zmalloc("INTR_USER_CALLBACK",
+                                 sizeof(struct rte_eth_dev_callback), 0);
+       if (user_cb) {
                user_cb->cb_fn = cb_fn;
                user_cb->cb_arg = cb_arg;
                user_cb->event = event;
-- 
2.1.4

Reply via email to