From: Colin Ian King <colin.k...@canonical.com>

family->id is unsigned, so the less than zero check for
failure return from idr_alloc is never true and so the error exit
is never handled.  Instead, assign err and check if this is less
than zero since this is a signed integer.

Issue found with static analysis with CoverityScan, CID 1375916

Signed-off-by: Colin Ian King <colin.k...@canonical.com>
---
 net/netlink/genetlink.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
index f0b65fe..2ea61ba 100644
--- a/net/netlink/genetlink.c
+++ b/net/netlink/genetlink.c
@@ -360,12 +360,10 @@ int genl_register_family(struct genl_family *family)
        } else
                family->attrbuf = NULL;
 
-       family->id = idr_alloc(&genl_fam_idr, family,
+       family->id = err = idr_alloc(&genl_fam_idr, family,
                               start, end + 1, GFP_KERNEL);
-       if (family->id < 0) {
-               err = family->id;
+       if (err < 0)
                goto errout_free;
-       }
 
        err = genl_validate_assign_mc_groups(family);
        if (err)
-- 
2.10.2

Reply via email to