On allocation failure, dump_features() would set ret to -ENOMEM but then return 0 anyway. As there is nothing to free in this case anyway, the easiest fix is to simply return -ENOMEM rather than jumping to out_free label - which can be dropped as well as this was its only use.
Fixes: f2c17e107900 ("netlink: add netlink handler for gfeatures (-k)") Reported-by: Ivan Vecera <ivec...@redhat.com> Signed-off-by: Michal Kubecek <mkube...@suse.cz> --- netlink/features.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/netlink/features.c b/netlink/features.c index 3f1240437350..2a0899e6eb04 100644 --- a/netlink/features.c +++ b/netlink/features.c @@ -117,11 +117,9 @@ int dump_features(const struct nlattr *const *tb, ret = prepare_feature_results(tb, &results); if (ret < 0) return -EFAULT; - - ret = -ENOMEM; feature_flags = calloc(results.count, sizeof(feature_flags[0])); if (!feature_flags) - goto out_free; + return -ENOMEM; /* map netdev features to legacy flags */ for (i = 0; i < results.count; i++) { @@ -182,7 +180,6 @@ int dump_features(const struct nlattr *const *tb, dump_feature(&results, NULL, NULL, i, name, ""); } -out_free: free(feature_flags); return 0; } -- 2.28.0