diff --git a/drivers/ub/urma/ubcore/ubcore_genl_admin.c b/drivers/ub/urma/ubcore/ubcore_genl_admin.c index 5b49137efb06a6e5c0428212b02e103fc00ec7cd..e3e34536a430dda31e83047b6192bae2ef896cf5 100644 --- a/drivers/ub/urma/ubcore/ubcore_genl_admin.c +++ b/drivers/ub/urma/ubcore/ubcore_genl_admin.c @@ -172,9 +172,13 @@ static int ubcore_update_ueid(struct netlink_callback *cb, if (arg.in.ns_fd >= 0) { net = get_net_ns_by_fd(arg.in.ns_fd); if (IS_ERR(net) || !ubcore_dev_accessible(dev, net)) { + int err = IS_ERR(net) ? (int)PTR_ERR(net) : -EPERM; + ubcore_put_device(dev); + if (!IS_ERR(net)) + put_net(net); ubcore_log_err("invalid net ns.\n"); - return (int)PTR_ERR(net); + return err; } } else if (op == UBCORE_MSG_ALLOC_EID) { net = read_pnet(&dev->ldev.net);