From: Ashish Gupta <[email protected]> nb_devs is incremented / decremented each time a compressdev is created/released. However, releasing device 1 incorrectly make device N invalid and inaccessible. Similarly when first half of the devices are released, rest half of the devices become inaccessible. This patch updates the validation check to ensure correct behavior.
Signed-off-by: Ashish Gupta <[email protected]> --- lib/compressdev/rte_compressdev.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/compressdev/rte_compressdev.c b/lib/compressdev/rte_compressdev.c index 33de3f511b..8435bfa134 100644 --- a/lib/compressdev/rte_compressdev.c +++ b/lib/compressdev/rte_compressdev.c @@ -104,12 +104,22 @@ rte_compressdev_pmd_get_named_dev(const char *name) return NULL; } +static inline uint8_t +rte_compressdev_is_valid_device_data(uint8_t dev_id) +{ + if (dev_id >= RTE_COMPRESS_MAX_DEVS || + compressdev_globals.devs[dev_id].data == NULL) + return 0; + + return 1; +} + static unsigned int rte_compressdev_is_valid_dev(uint8_t dev_id) { struct rte_compressdev *dev = NULL; - if (dev_id >= compressdev_globals.nb_devs) + if (!rte_compressdev_is_valid_device_data(dev_id)) return 0; dev = rte_compressdev_get_dev(dev_id); -- 2.43.0

