From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [jpirko-mlxsw:gearboxes 5/72] net/core/rtnetlink.c:5311:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
Date: Fri, 25 Feb 2022 21:49:16 +0800 [thread overview]
Message-ID: <202202252123.8OOEl3w7-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 24996 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Petr Machata <petrm@nvidia.com>
CC: Ido Schimmel <idosch@nvidia.com>
tree: https://github.com/jpirko/linux_mlxsw gearboxes
head: d58a6e73f8b9fad6ad13c269b9670388f242de6c
commit: ef1f07a8a52555ed2311efa7c44da698079e6278 [5/72] net: rtnetlink: rtnl_fill_statsinfo(): Permit non-EMSGSIZE error returns
:::::: branch date: 29 hours ago
:::::: commit date: 29 hours ago
config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220225/202202252123.8OOEl3w7-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/jpirko/linux_mlxsw/commit/ef1f07a8a52555ed2311efa7c44da698079e6278
git remote add jpirko-mlxsw https://github.com/jpirko/linux_mlxsw
git fetch --no-tags jpirko-mlxsw gearboxes
git checkout ef1f07a8a52555ed2311efa7c44da698079e6278
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
14 warnings generated.
net/core/rtnetlink.c:2710:28: warning: Array access (from variable 'ifname') results in a null pointer dereference [clang-analyzer-core.NullDereference]
if (ifm->ifi_index > 0 && ifname[0]) {
^~~~~~
net/core/rtnetlink.c:2616:6: note: Assuming 'err' is >= 0
if (err < 0)
^~~~~~~
net/core/rtnetlink.c:2616:2: note: Taking false branch
if (err < 0)
^
net/core/rtnetlink.c:2619:6: note: Assuming the condition is false
if (tb[IFLA_NET_NS_PID] || tb[IFLA_NET_NS_FD] || tb[IFLA_TARGET_NETNSID]) {
^~~~~~~~~~~~~~~~~~~
net/core/rtnetlink.c:2619:6: note: Left side of '||' is false
net/core/rtnetlink.c:2619:29: note: Assuming the condition is false
if (tb[IFLA_NET_NS_PID] || tb[IFLA_NET_NS_FD] || tb[IFLA_TARGET_NETNSID]) {
^~~~~~~~~~~~~~~~~~
net/core/rtnetlink.c:2619:6: note: Left side of '||' is false
if (tb[IFLA_NET_NS_PID] || tb[IFLA_NET_NS_FD] || tb[IFLA_TARGET_NETNSID]) {
^
net/core/rtnetlink.c:2619:51: note: Assuming the condition is true
if (tb[IFLA_NET_NS_PID] || tb[IFLA_NET_NS_FD] || tb[IFLA_TARGET_NETNSID]) {
^~~~~~~~~~~~~~~~~~~~~~~
net/core/rtnetlink.c:2619:2: note: Taking true branch
if (tb[IFLA_NET_NS_PID] || tb[IFLA_NET_NS_FD] || tb[IFLA_TARGET_NETNSID]) {
^
net/core/rtnetlink.c:2620:21: note: Assuming 'ifname' is null
const char *pat = ifname && ifname[0] ? ifname : NULL;
^~~~~~
net/core/rtnetlink.c:2620:28: note: Left side of '&&' is false
const char *pat = ifname && ifname[0] ? ifname : NULL;
^
net/core/rtnetlink.c:2626:7: note: Calling 'IS_ERR'
if (IS_ERR(net)) {
^~~~~~~~~~~
include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/core/rtnetlink.c:2626:7: note: Returning from 'IS_ERR'
if (IS_ERR(net)) {
^~~~~~~~~~~
net/core/rtnetlink.c:2626:3: note: Taking false branch
if (IS_ERR(net)) {
^
net/core/rtnetlink.c:2631:7: note: Assuming the condition is false
if (tb[IFLA_NEW_IFINDEX])
^~~~~~~~~~~~~~~~~~~~
net/core/rtnetlink.c:2631:3: note: Taking false branch
if (tb[IFLA_NEW_IFINDEX])
^
net/core/rtnetlink.c:2638:7: note: Assuming 'err' is 0
if (err)
^~~
net/core/rtnetlink.c:2638:3: note: Taking false branch
if (err)
^
net/core/rtnetlink.c:2643:6: note: Assuming the condition is false
if (tb[IFLA_MAP]) {
^~~~~~~~~~~~
net/core/rtnetlink.c:2643:2: note: Taking false branch
if (tb[IFLA_MAP]) {
^
net/core/rtnetlink.c:2672:6: note: Assuming the condition is false
if (tb[IFLA_ADDRESS]) {
^~~~~~~~~~~~~~~~
net/core/rtnetlink.c:2672:2: note: Taking false branch
if (tb[IFLA_ADDRESS]) {
^
net/core/rtnetlink.c:2693:6: note: Assuming the condition is false
if (tb[IFLA_MTU]) {
^~~~~~~~~~~~
net/core/rtnetlink.c:2693:2: note: Taking false branch
if (tb[IFLA_MTU]) {
^
net/core/rtnetlink.c:2700:6: note: Assuming the condition is false
if (tb[IFLA_GROUP]) {
^~~~~~~~~~~~~~
net/core/rtnetlink.c:2700:2: note: Taking false branch
if (tb[IFLA_GROUP]) {
^
net/core/rtnetlink.c:2710:6: note: Assuming field 'ifi_index' is > 0
if (ifm->ifi_index > 0 && ifname[0]) {
^~~~~~~~~~~~~~~~~~
net/core/rtnetlink.c:2710:6: note: Left side of '&&' is true
net/core/rtnetlink.c:2710:28: note: Array access (from variable 'ifname') results in a null pointer dereference
if (ifm->ifi_index > 0 && ifname[0]) {
^~~~~~
net/core/rtnetlink.c:2833:2: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores]
err = 0;
^ ~
net/core/rtnetlink.c:2833:2: note: Value stored to 'err' is never read
err = 0;
^ ~
net/core/rtnetlink.c:2868:2: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores]
err = 0;
^ ~
net/core/rtnetlink.c:2868:2: note: Value stored to 'err' is never read
err = 0;
^ ~
>> net/core/rtnetlink.c:5311:2: warning: Undefined or garbage value returned to caller [clang-analyzer-core.uninitialized.UndefReturn]
return err;
^
net/core/rtnetlink.c:5554:6: note: 'err' is 0
if (err)
^~~
net/core/rtnetlink.c:5554:2: note: Taking false branch
if (err)
^
net/core/rtnetlink.c:5558:6: note: Assuming field 'filter_mask' is not equal to 0
if (!ifsm->filter_mask) {
^~~~~~~~~~~~~~~~~~
net/core/rtnetlink.c:5558:2: note: Taking false branch
if (!ifsm->filter_mask) {
^
net/core/rtnetlink.c:5565:6: note: Assuming 'err' is 0
if (err)
^~~
net/core/rtnetlink.c:5565:2: note: Taking false branch
if (err)
^
net/core/rtnetlink.c:5568:16: note: Assuming the condition is true
for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) {
^~~~~~~~~~~~~~~~~~~~~~
net/core/rtnetlink.c:5568:2: note: Loop condition is true. Entering loop body
for (h = s_h; h < NETDEV_HASHENTRIES; h++, s_idx = 0) {
^
net/core/rtnetlink.c:5571:3: note: Assuming '____ptr' is non-null
hlist_for_each_entry(dev, head, index_hlist) {
^
include/linux/list.h:1003:13: note: expanded from macro 'hlist_for_each_entry'
for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/list.h:993:5: note: expanded from macro 'hlist_entry_safe'
____ptr ? hlist_entry(____ptr, type, member) : NULL; \
^~~~~~~
net/core/rtnetlink.c:5571:3: note: '?' condition is true
hlist_for_each_entry(dev, head, index_hlist) {
^
include/linux/list.h:1003:13: note: expanded from macro 'hlist_for_each_entry'
for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\
^
include/linux/list.h:993:5: note: expanded from macro 'hlist_entry_safe'
____ptr ? hlist_entry(____ptr, type, member) : NULL; \
^
net/core/rtnetlink.c:5571:3: note: Loop condition is true. Entering loop body
hlist_for_each_entry(dev, head, index_hlist) {
^
include/linux/list.h:1003:2: note: expanded from macro 'hlist_for_each_entry'
for (pos = hlist_entry_safe((head)->first, typeof(*(pos)), member);\
^
net/core/rtnetlink.c:5572:8: note: Assuming 'idx' is >= 's_idx'
if (idx < s_idx)
^~~~~~~~~~~
net/core/rtnetlink.c:5572:4: note: Taking false branch
if (idx < s_idx)
^
net/core/rtnetlink.c:5574:10: note: Calling 'rtnl_fill_statsinfo'
err = rtnl_fill_statsinfo(skb, dev, RTM_NEWSTATS,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/core/rtnetlink.c:5159:2: note: 'err' declared without an initial value
int err;
^~~~~~~
net/core/rtnetlink.c:5161:2: note: Assuming the condition is false
ASSERT_RTNL();
^
include/linux/rtnetlink.h:110:12: note: expanded from macro 'ASSERT_RTNL'
WARN_ONCE(!rtnl_is_locked(), \
^~~~~~~~~~~~~~~~~
include/asm-generic/bug.h:150:18: note: expanded from macro 'WARN_ONCE'
DO_ONCE_LITE_IF(condition, WARN, 1, format)
^~~~~~~~~
include/linux/once_lite.h:15:27: note: expanded from macro 'DO_ONCE_LITE_IF'
bool __ret_do_once = !!(condition); \
^~~~~~~~~
net/core/rtnetlink.c:5161:2: note: '__ret_do_once' is false
ASSERT_RTNL();
^
include/linux/rtnetlink.h:110:2: note: expanded from macro 'ASSERT_RTNL'
WARN_ONCE(!rtnl_is_locked(), \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/bug.h:150:2: note: expanded from macro 'WARN_ONCE'
DO_ONCE_LITE_IF(condition, WARN, 1, format)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/once_lite.h:17:16: note: expanded from macro 'DO_ONCE_LITE_IF'
if (unlikely(__ret_do_once && !__already_done)) { \
^~~~~~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
net/core/rtnetlink.c:5161:2: note: Left side of '&&' is false
ASSERT_RTNL();
^
include/linux/rtnetlink.h:110:2: note: expanded from macro 'ASSERT_RTNL'
WARN_ONCE(!rtnl_is_locked(), \
^
include/asm-generic/bug.h:150:2: note: expanded from macro 'WARN_ONCE'
DO_ONCE_LITE_IF(condition, WARN, 1, format)
^
include/linux/once_lite.h:17:30: note: expanded from macro 'DO_ONCE_LITE_IF'
if (unlikely(__ret_do_once && !__already_done)) { \
vim +5311 net/core/rtnetlink.c
a79159c08b5a56 Petr Machata 2022-02-21 5146
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5147 static int rtnl_fill_statsinfo(struct sk_buff *skb, struct net_device *dev,
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5148 int type, u32 pid, u32 seq, u32 change,
a79159c08b5a56 Petr Machata 2022-02-21 5149 unsigned int flags,
a79159c08b5a56 Petr Machata 2022-02-21 5150 const struct rtnl_stats_dump_filters *filters,
33f11b46a4f00f Petr Machata 2022-02-21 5151 int *idxattr, int *prividx,
33f11b46a4f00f Petr Machata 2022-02-21 5152 struct netlink_ext_ack *extack)
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5153 {
a79159c08b5a56 Petr Machata 2022-02-21 5154 unsigned int filter_mask = filters->mask[0];
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5155 struct if_stats_msg *ifsm;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5156 struct nlmsghdr *nlh;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5157 struct nlattr *attr;
e8872a25a05efc Nikolay Aleksandrov 2016-04-30 5158 int s_prividx = *prividx;
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5159 int err;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5160
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5161 ASSERT_RTNL();
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5162
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5163 nlh = nlmsg_put(skb, pid, seq, type, sizeof(*ifsm), flags);
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5164 if (!nlh)
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5165 return -EMSGSIZE;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5166
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5167 ifsm = nlmsg_data(nlh);
ce024f42c2e28b Nikolay Aleksandrov 2017-10-03 5168 ifsm->family = PF_UNSPEC;
ce024f42c2e28b Nikolay Aleksandrov 2017-10-03 5169 ifsm->pad1 = 0;
ce024f42c2e28b Nikolay Aleksandrov 2017-10-03 5170 ifsm->pad2 = 0;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5171 ifsm->ifindex = dev->ifindex;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5172 ifsm->filter_mask = filter_mask;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5173
e8872a25a05efc Nikolay Aleksandrov 2016-04-30 5174 if (stats_attr_valid(filter_mask, IFLA_STATS_LINK_64, *idxattr)) {
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5175 struct rtnl_link_stats64 *sp;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5176
58414d32a37e4c Nicolas Dichtel 2016-04-21 5177 attr = nla_reserve_64bit(skb, IFLA_STATS_LINK_64,
58414d32a37e4c Nicolas Dichtel 2016-04-21 5178 sizeof(struct rtnl_link_stats64),
58414d32a37e4c Nicolas Dichtel 2016-04-21 5179 IFLA_STATS_UNSPEC);
ef1f07a8a52555 Petr Machata 2022-02-21 5180 if (!attr) {
ef1f07a8a52555 Petr Machata 2022-02-21 5181 err = -EMSGSIZE;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5182 goto nla_put_failure;
ef1f07a8a52555 Petr Machata 2022-02-21 5183 }
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5184
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5185 sp = nla_data(attr);
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5186 dev_get_stats(dev, sp);
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5187 }
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5188
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5189 if (stats_attr_valid(filter_mask, IFLA_STATS_LINK_XSTATS, *idxattr)) {
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5190 const struct rtnl_link_ops *ops = dev->rtnl_link_ops;
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5191
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5192 if (ops && ops->fill_linkxstats) {
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5193 *idxattr = IFLA_STATS_LINK_XSTATS;
ae0be8de9a53cd Michal Kubecek 2019-04-26 5194 attr = nla_nest_start_noflag(skb,
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5195 IFLA_STATS_LINK_XSTATS);
ef1f07a8a52555 Petr Machata 2022-02-21 5196 if (!attr) {
ef1f07a8a52555 Petr Machata 2022-02-21 5197 err = -EMSGSIZE;
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5198 goto nla_put_failure;
ef1f07a8a52555 Petr Machata 2022-02-21 5199 }
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5200
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5201 err = ops->fill_linkxstats(skb, dev, prividx, *idxattr);
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5202 nla_nest_end(skb, attr);
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5203 if (err)
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5204 goto nla_put_failure;
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5205 *idxattr = 0;
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5206 }
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5207 }
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5208
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5209 if (stats_attr_valid(filter_mask, IFLA_STATS_LINK_XSTATS_SLAVE,
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5210 *idxattr)) {
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5211 const struct rtnl_link_ops *ops = NULL;
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5212 const struct net_device *master;
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5213
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5214 master = netdev_master_upper_dev_get(dev);
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5215 if (master)
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5216 ops = master->rtnl_link_ops;
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5217 if (ops && ops->fill_linkxstats) {
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5218 *idxattr = IFLA_STATS_LINK_XSTATS_SLAVE;
ae0be8de9a53cd Michal Kubecek 2019-04-26 5219 attr = nla_nest_start_noflag(skb,
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5220 IFLA_STATS_LINK_XSTATS_SLAVE);
ef1f07a8a52555 Petr Machata 2022-02-21 5221 if (!attr) {
ef1f07a8a52555 Petr Machata 2022-02-21 5222 err = -EMSGSIZE;
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5223 goto nla_put_failure;
ef1f07a8a52555 Petr Machata 2022-02-21 5224 }
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5225
80e73cc563c435 Nikolay Aleksandrov 2016-06-28 5226 err = ops->fill_linkxstats(skb, dev, prividx, *idxattr);
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5227 nla_nest_end(skb, attr);
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5228 if (err)
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5229 goto nla_put_failure;
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5230 *idxattr = 0;
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5231 }
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5232 }
97a47facf3468f Nikolay Aleksandrov 2016-04-30 5233
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5234 if (stats_attr_valid(filter_mask, IFLA_STATS_LINK_OFFLOAD_XSTATS,
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5235 *idxattr)) {
a79159c08b5a56 Petr Machata 2022-02-21 5236 u32 off_filter_mask;
a79159c08b5a56 Petr Machata 2022-02-21 5237
a79159c08b5a56 Petr Machata 2022-02-21 5238 off_filter_mask = filters->mask[IFLA_STATS_LINK_OFFLOAD_XSTATS];
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5239 *idxattr = IFLA_STATS_LINK_OFFLOAD_XSTATS;
ae0be8de9a53cd Michal Kubecek 2019-04-26 5240 attr = nla_nest_start_noflag(skb,
ae0be8de9a53cd Michal Kubecek 2019-04-26 5241 IFLA_STATS_LINK_OFFLOAD_XSTATS);
ef1f07a8a52555 Petr Machata 2022-02-21 5242 if (!attr) {
ef1f07a8a52555 Petr Machata 2022-02-21 5243 err = -EMSGSIZE;
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5244 goto nla_put_failure;
ef1f07a8a52555 Petr Machata 2022-02-21 5245 }
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5246
a79159c08b5a56 Petr Machata 2022-02-21 5247 err = rtnl_offload_xstats_fill(skb, dev, prividx,
33f11b46a4f00f Petr Machata 2022-02-21 5248 off_filter_mask, extack);
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5249 if (err == -ENODATA)
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5250 nla_nest_cancel(skb, attr);
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5251 else
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5252 nla_nest_end(skb, attr);
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5253
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5254 if (err && err != -ENODATA)
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5255 goto nla_put_failure;
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5256 *idxattr = 0;
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5257 }
69ae6ad2ff3791 Nogah Frankel 2016-09-16 5258
aefb4d4ad83b60 Robert Shearman 2017-01-16 5259 if (stats_attr_valid(filter_mask, IFLA_STATS_AF_SPEC, *idxattr)) {
aefb4d4ad83b60 Robert Shearman 2017-01-16 5260 struct rtnl_af_ops *af_ops;
aefb4d4ad83b60 Robert Shearman 2017-01-16 5261
aefb4d4ad83b60 Robert Shearman 2017-01-16 5262 *idxattr = IFLA_STATS_AF_SPEC;
ae0be8de9a53cd Michal Kubecek 2019-04-26 5263 attr = nla_nest_start_noflag(skb, IFLA_STATS_AF_SPEC);
ef1f07a8a52555 Petr Machata 2022-02-21 5264 if (!attr) {
ef1f07a8a52555 Petr Machata 2022-02-21 5265 err = -EMSGSIZE;
aefb4d4ad83b60 Robert Shearman 2017-01-16 5266 goto nla_put_failure;
ef1f07a8a52555 Petr Machata 2022-02-21 5267 }
aefb4d4ad83b60 Robert Shearman 2017-01-16 5268
5fa85a09390c4a Florian Westphal 2017-10-16 5269 rcu_read_lock();
5fa85a09390c4a Florian Westphal 2017-10-16 5270 list_for_each_entry_rcu(af_ops, &rtnl_af_ops, list) {
aefb4d4ad83b60 Robert Shearman 2017-01-16 5271 if (af_ops->fill_stats_af) {
aefb4d4ad83b60 Robert Shearman 2017-01-16 5272 struct nlattr *af;
aefb4d4ad83b60 Robert Shearman 2017-01-16 5273 int err;
aefb4d4ad83b60 Robert Shearman 2017-01-16 5274
ae0be8de9a53cd Michal Kubecek 2019-04-26 5275 af = nla_nest_start_noflag(skb,
ae0be8de9a53cd Michal Kubecek 2019-04-26 5276 af_ops->family);
5fa85a09390c4a Florian Westphal 2017-10-16 5277 if (!af) {
5fa85a09390c4a Florian Westphal 2017-10-16 5278 rcu_read_unlock();
aefb4d4ad83b60 Robert Shearman 2017-01-16 5279 goto nla_put_failure;
5fa85a09390c4a Florian Westphal 2017-10-16 5280 }
aefb4d4ad83b60 Robert Shearman 2017-01-16 5281 err = af_ops->fill_stats_af(skb, dev);
aefb4d4ad83b60 Robert Shearman 2017-01-16 5282
5fa85a09390c4a Florian Westphal 2017-10-16 5283 if (err == -ENODATA) {
aefb4d4ad83b60 Robert Shearman 2017-01-16 5284 nla_nest_cancel(skb, af);
5fa85a09390c4a Florian Westphal 2017-10-16 5285 } else if (err < 0) {
5fa85a09390c4a Florian Westphal 2017-10-16 5286 rcu_read_unlock();
aefb4d4ad83b60 Robert Shearman 2017-01-16 5287 goto nla_put_failure;
5fa85a09390c4a Florian Westphal 2017-10-16 5288 }
aefb4d4ad83b60 Robert Shearman 2017-01-16 5289
aefb4d4ad83b60 Robert Shearman 2017-01-16 5290 nla_nest_end(skb, af);
aefb4d4ad83b60 Robert Shearman 2017-01-16 5291 }
aefb4d4ad83b60 Robert Shearman 2017-01-16 5292 }
5fa85a09390c4a Florian Westphal 2017-10-16 5293 rcu_read_unlock();
aefb4d4ad83b60 Robert Shearman 2017-01-16 5294
aefb4d4ad83b60 Robert Shearman 2017-01-16 5295 nla_nest_end(skb, attr);
aefb4d4ad83b60 Robert Shearman 2017-01-16 5296
aefb4d4ad83b60 Robert Shearman 2017-01-16 5297 *idxattr = 0;
aefb4d4ad83b60 Robert Shearman 2017-01-16 5298 }
aefb4d4ad83b60 Robert Shearman 2017-01-16 5299
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5300 nlmsg_end(skb, nlh);
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5301
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5302 return 0;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5303
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5304 nla_put_failure:
e8872a25a05efc Nikolay Aleksandrov 2016-04-30 5305 /* not a multi message or no progress mean a real error */
e8872a25a05efc Nikolay Aleksandrov 2016-04-30 5306 if (!(flags & NLM_F_MULTI) || s_prividx == *prividx)
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5307 nlmsg_cancel(skb, nlh);
e8872a25a05efc Nikolay Aleksandrov 2016-04-30 5308 else
e8872a25a05efc Nikolay Aleksandrov 2016-04-30 5309 nlmsg_end(skb, nlh);
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5310
ef1f07a8a52555 Petr Machata 2022-02-21 @5311 return err;
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5312 }
10c9ead9f3c6bb Roopa Prabhu 2016-04-20 5313
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
reply other threads:[~2022-02-25 13:49 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202202252123.8OOEl3w7-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.