ethdev: prevent duplicate event callback
This change prevents the attempt to add a structure which is already on the callback list. If a struct with matching parameters is found on the list, then no action is taken. Fixes: ac2f69c ("ethdev: fix crash if malloc of user callback fails") Signed-off-by: E. Scott Daniels <daniels@research.att.com> Acked-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
This commit is contained in:
parent
1e975578bc
commit
dbffbf80e9
@ -2449,14 +2449,15 @@ rte_eth_dev_callback_register(uint8_t port_id,
|
||||
}
|
||||
|
||||
/* create a new callback. */
|
||||
if (user_cb == NULL)
|
||||
if (user_cb == NULL) {
|
||||
user_cb = rte_zmalloc("INTR_USER_CALLBACK",
|
||||
sizeof(struct rte_eth_dev_callback), 0);
|
||||
if (user_cb != NULL) {
|
||||
user_cb->cb_fn = cb_fn;
|
||||
user_cb->cb_arg = cb_arg;
|
||||
user_cb->event = event;
|
||||
TAILQ_INSERT_TAIL(&(dev->link_intr_cbs), user_cb, next);
|
||||
if (user_cb != NULL) {
|
||||
user_cb->cb_fn = cb_fn;
|
||||
user_cb->cb_arg = cb_arg;
|
||||
user_cb->event = event;
|
||||
TAILQ_INSERT_TAIL(&(dev->link_intr_cbs), user_cb, next);
|
||||
}
|
||||
}
|
||||
|
||||
rte_spinlock_unlock(&rte_eth_dev_cb_lock);
|
||||
|
Loading…
x
Reference in New Issue
Block a user