All of lore.kernel.org
 help / color / mirror / Atom feed
* [bug report] net: sched: use block index as a handle instead of qdisc when block is shared
@ 2018-01-19 13:49 Dan Carpenter
  2018-01-19 18:38 ` Jiri Pirko
  0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2018-01-19 13:49 UTC (permalink / raw)
  To: kernel-janitors

Hello Jiri Pirko,

The patch 7960d1daf278: "net: sched: use block index as a handle
instead of qdisc when block is shared" from Jan 17, 2018, leads to
the following static checker warning:

	net/sched/cls_api.c:1362 tc_dump_tfilter()
	error: uninitialized symbol 'parent'.

net/sched/cls_api.c
  1296  static int tc_dump_tfilter(struct sk_buff *skb, struct netlink_callback *cb)
  1297  {
  1298          struct net *net = sock_net(skb->sk);
  1299          struct nlattr *tca[TCA_MAX + 1];
  1300          struct Qdisc *q = NULL;
  1301          struct tcf_block *block;
  1302          struct tcf_chain *chain;
  1303          struct tcmsg *tcm = nlmsg_data(cb->nlh);
  1304          long index_start;
  1305          long index;
  1306          u32 parent;
                ^^^^^^^^^^
  1307          int err;
  1308  
  1309          if (nlmsg_len(cb->nlh) < sizeof(*tcm))
  1310                  return skb->len;
  1311  
  1312          err = nlmsg_parse(cb->nlh, sizeof(*tcm), tca, TCA_MAX, NULL, NULL);
  1313          if (err)
  1314                  return err;
  1315  
  1316          if (tcm->tcm_ifindex = TCM_IFINDEX_MAGIC_BLOCK) {
  1317                  block = tcf_block_lookup(net, tcm->tcm_block_index);
  1318                  if (!block)
  1319                          goto out;

Assume tcf_block_lookup() succeeds.

  1320          } else {
  1321                  const struct Qdisc_class_ops *cops;
  1322                  struct net_device *dev;
  1323                  unsigned long cl = 0;
  1324  
  1325                  dev = __dev_get_by_index(net, tcm->tcm_ifindex);
  1326                  if (!dev)
  1327                          return skb->len;
  1328  
  1329                  parent = tcm->tcm_parent;
  1330                  if (!parent) {
  1331                          q = dev->qdisc;
  1332                          parent = q->handle;
  1333                  } else {
  1334                          q = qdisc_lookup(dev, TC_H_MAJ(tcm->tcm_parent));
  1335                  }
  1336                  if (!q)
  1337                          goto out;
  1338                  cops = q->ops->cl_ops;
  1339                  if (!cops)
  1340                          goto out;
  1341                  if (!cops->tcf_block)
  1342                          goto out;
  1343                  if (TC_H_MIN(tcm->tcm_parent)) {
  1344                          cl = cops->find(q, tcm->tcm_parent);
  1345                          if (cl = 0)
  1346                                  goto out;
  1347                  }
  1348                  block = cops->tcf_block(q, cl, NULL);
  1349                  if (!block)
  1350                          goto out;
  1351                  if (tcf_block_shared(block))
  1352                          q = NULL;
  1353          }
  1354  
  1355          index_start = cb->args[0];
  1356          index = 0;
  1357  
  1358          list_for_each_entry(chain, &block->chain_list, list) {
  1359                  if (tca[TCA_CHAIN] &&
  1360                      nla_get_u32(tca[TCA_CHAIN]) != chain->index)
  1361                          continue;
  1362                  if (!tcf_chain_dump(chain, q, parent, skb, cb,
                                                      ^^^^^^
Smatch thinks "parent" is uninitialized here.

  1363                                      index_start, &index))
  1364                          break;
  1365          }
  1366  
  1367          cb->args[0] = index;
  1368  
  1369  out:
  1370          return skb->len;
  1371  }

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [bug report] net: sched: use block index as a handle instead of qdisc when block is shared
  2018-01-19 13:49 [bug report] net: sched: use block index as a handle instead of qdisc when block is shared Dan Carpenter
@ 2018-01-19 18:38 ` Jiri Pirko
  0 siblings, 0 replies; 2+ messages in thread
From: Jiri Pirko @ 2018-01-19 18:38 UTC (permalink / raw)
  To: kernel-janitors

Fri, Jan 19, 2018 at 02:49:29PM CET, dan.carpenter@oracle.com wrote:
>Hello Jiri Pirko,
>
>The patch 7960d1daf278: "net: sched: use block index as a handle
>instead of qdisc when block is shared" from Jan 17, 2018, leads to
>the following static checker warning:
>
>	net/sched/cls_api.c:1362 tc_dump_tfilter()
>	error: uninitialized symbol 'parent'.

Fixed already in net-next.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-01-19 18:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-19 13:49 [bug report] net: sched: use block index as a handle instead of qdisc when block is shared Dan Carpenter
2018-01-19 18:38 ` Jiri Pirko

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.