eal: fix leak on hotplug parsing error
authorGaetan Rivet <gaetan.rivet@6wind.com>
Thu, 3 Aug 2017 12:34:31 +0000 (14:34 +0200)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 3 Aug 2017 20:08:46 +0000 (22:08 +0200)
If rte_eal_devargs_parse fails, the rte_devargs has not yet been inserted
in the global list. When jumping to err_devarg, the removal fails and it
is not properly freed.

Free the allocated rte_devargs if its removal failed.

Coverity issue: 158658
Fixes: 7e8b26650146 ("eal: fix hotplug add / remove")

Signed-off-by: Gaetan Rivet <gaetan.rivet@6wind.com>
lib/librte_eal/common/eal_common_dev.c

index d19232d..fc8a4d2 100644 (file)
@@ -204,7 +204,10 @@ int rte_eal_hotplug_add(const char *busname, const char *devname,
        return 0;
 
 err_devarg:
-       rte_eal_devargs_remove(busname, devname);
+       if (rte_eal_devargs_remove(busname, devname)) {
+               free(da->args);
+               free(da);
+       }
 err_name:
        free(name);
        return ret;