event/sw: fix missing device pointer
Checks
Commit Message
After calling rte_event_dev_info_get() the ".dev" field of the info
structure should have a pointer to the underlying device, allowing the
user to e.g. get the device name using using rte_dev_name(info.dev).
The SW eventdev info structure did not return a correct device pointer,
though, instead returning NULL, which caused crashes getting
"rte_dev_name". Initializing the dev pointer inside the "eventdev"
struct in the device probe function fixes this by ensuring we have a
valid pointer to return in info_get calls.
Fixes: aaa4a221da26 ("event/sw: add new software-only eventdev driver")
Cc: stable@dpdk.org
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
---
drivers/event/sw/sw_evdev.c | 1 +
1 file changed, 1 insertion(+)
Comments
> -----Original Message-----
> From: Richardson, Bruce <bruce.richardson@intel.com>
> Sent: Monday, October 16, 2023 4:17 PM
> To: dev@dpdk.org
> Cc: Richardson, Bruce <bruce.richardson@intel.com>; stable@dpdk.org; Van
> Haaren, Harry <harry.van.haaren@intel.com>; Jerin Jacob
> <jerin.jacob@caviumnetworks.com>
> Subject: [PATCH] event/sw: fix missing device pointer
>
> After calling rte_event_dev_info_get() the ".dev" field of the info
> structure should have a pointer to the underlying device, allowing the
> user to e.g. get the device name using using rte_dev_name(info.dev).
>
> The SW eventdev info structure did not return a correct device pointer,
> though, instead returning NULL, which caused crashes getting
> "rte_dev_name". Initializing the dev pointer inside the "eventdev"
> struct in the device probe function fixes this by ensuring we have a
> valid pointer to return in info_get calls.
>
> Fixes: aaa4a221da26 ("event/sw: add new software-only eventdev driver")
> Cc: stable@dpdk.org
>
> Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Harry van Haaren <harry.van.haaren@intel.com>
@@ -1080,6 +1080,7 @@ sw_probe(struct rte_vdev_device *vdev)
SW_LOG_ERR("eventdev vdev init() failed");
return -EFAULT;
}
+ dev->dev = &vdev->device;
dev->dev_ops = &evdev_sw_ops;
dev->enqueue = sw_event_enqueue;
dev->enqueue_burst = sw_event_enqueue_burst;