aboutsummaryrefslogtreecommitdiffstats
path: root/net/netlink/genetlink.c
diff options
context:
space:
mode:
authorPaolo Abeni <pabeni@redhat.com>2020-02-21 19:42:13 +0100
committerDavid S. Miller <davem@davemloft.net>2020-02-22 21:58:33 -0800
commit39f3b41aa7cae917f928ef9f31d09da28188e5ed (patch)
treeeeb14d63e1a74be8a39bf4de03a3ec059e0690ae /net/netlink/genetlink.c
parentipv4: ensure rcu_read_lock() in cipso_v4_error() (diff)
downloadlinux-dev-39f3b41aa7cae917f928ef9f31d09da28188e5ed.tar.xz
linux-dev-39f3b41aa7cae917f928ef9f31d09da28188e5ed.zip
net: genetlink: return the error code when attribute parsing fails.
Currently if attribute parsing fails and the genl family does not support parallel operation, the error code returned by __nlmsg_parse() is discarded by genl_family_rcv_msg_attrs_parse(). Be sure to report the error for all genl families. Fixes: c10e6cf85e7d ("net: genetlink: push attrbuf allocation and parsing to a separate function") Fixes: ab5b526da048 ("net: genetlink: always allocate separate attrs for dumpit ops") Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r--net/netlink/genetlink.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/net/netlink/genetlink.c b/net/netlink/genetlink.c
index 0522b2b1fd95..9f357aa22b94 100644
--- a/net/netlink/genetlink.c
+++ b/net/netlink/genetlink.c
@@ -497,8 +497,9 @@ genl_family_rcv_msg_attrs_parse(const struct genl_family *family,
err = __nlmsg_parse(nlh, hdrlen, attrbuf, family->maxattr,
family->policy, validate, extack);
- if (err && parallel) {
- kfree(attrbuf);
+ if (err) {
+ if (parallel)
+ kfree(attrbuf);
return ERR_PTR(err);
}
return attrbuf;