net: rtnetlink: fix error handling in rtnl_fill_statsinfo()
The clang static analyzer reports this issue
rtnetlink.c:5481:2: warning: Undefined or garbage
value returned to caller
return err;
^~~~~~~~~~
There is a function level err variable, in the
list_for_each_entry_rcu block there is a shadow
err. Remove the shadow.
In the same block, the call to nla_nest_start_noflag()
can fail without setting an err. Set the err
to -EMSGSIZE.
Fixes: 216e690631
("net: rtnetlink: rtnl_fill_statsinfo(): Permit non-EMSGSIZE error returns")
Signed-off-by: Tom Rix <trix@redhat.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
cd5169841c
Коммит
57d29a2935
|
@ -5440,12 +5440,12 @@ static int rtnl_fill_statsinfo(struct sk_buff *skb, struct net_device *dev,
|
||||||
list_for_each_entry_rcu(af_ops, &rtnl_af_ops, list) {
|
list_for_each_entry_rcu(af_ops, &rtnl_af_ops, list) {
|
||||||
if (af_ops->fill_stats_af) {
|
if (af_ops->fill_stats_af) {
|
||||||
struct nlattr *af;
|
struct nlattr *af;
|
||||||
int err;
|
|
||||||
|
|
||||||
af = nla_nest_start_noflag(skb,
|
af = nla_nest_start_noflag(skb,
|
||||||
af_ops->family);
|
af_ops->family);
|
||||||
if (!af) {
|
if (!af) {
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
err = -EMSGSIZE;
|
||||||
goto nla_put_failure;
|
goto nla_put_failure;
|
||||||
}
|
}
|
||||||
err = af_ops->fill_stats_af(skb, dev);
|
err = af_ops->fill_stats_af(skb, dev);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче