All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kernel-janitors@vger.kernel.org
Subject: [bug report] net/sched: cls_flower: Set the filter Hardware device for all use-cases
Date: Tue, 17 Jan 2017 22:57:03 +0000	[thread overview]
Message-ID: <20170117225703.GA21380@mwanda> (raw)

Hello Hadar Hen Zion,

The patch a6e169312971: "net/sched: cls_flower: Set the filter
Hardware device for all use-cases" from Dec 4, 2016, leads to the
following static checker warning:

	net/sched/cls_flower.c:272 fl_hw_replace_filter()
	error: we previously assumed 'dev' could be null (see line 256)

net/sched/cls_flower.c
   240  static int fl_hw_replace_filter(struct tcf_proto *tp,
   241                                  struct flow_dissector *dissector,
   242                                  struct fl_flow_key *mask,
   243                                  struct cls_fl_filter *f)
   244  {
   245          struct net_device *dev = tp->q->dev_queue->dev;
   246          struct tc_cls_flower_offload offload = {0};
   247          struct tc_to_netdev *tc = &f->tc;
   248          int err;
   249  
   250          if (!tc_can_offload(dev, tp)) {
   251                  if (tcf_exts_get_dev(dev, &f->exts, &f->hw_dev) ||
   252                      (f->hw_dev && !tc_can_offload(f->hw_dev, tp))) {
                             ^^^^^^^^^
Let's say this is NULL.

   253                          f->hw_dev = dev;
   254                          return tc_skip_sw(f->flags) ? -EINVAL : 0;
   255                  }
   256                  dev = f->hw_dev;

That means "dev" is NULL.

   257                  tc->egress_dev = true;
   258          } else {
   259                  f->hw_dev = dev;
   260          }
   261  
   262          offload.command = TC_CLSFLOWER_REPLACE;
   263          offload.cookie = (unsigned long)f;
   264          offload.dissector = dissector;
   265          offload.mask = mask;
   266          offload.key = &f->mkey;
   267          offload.exts = &f->exts;
   268  
   269          tc->type = TC_SETUP_CLSFLOWER;
   270          tc->cls_flower = &offload;
   271  
   272          err = dev->netdev_ops->ndo_setup_tc(dev, tp->q->handle, tp->protocol,

So we oops here.

   273                                              tc);
   274  
   275          if (tc_skip_sw(f->flags))
   276                  return err;
   277          return 0;
   278  }

regards,
dan carpenter

             reply	other threads:[~2017-01-17 22:57 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-17 22:57 Dan Carpenter [this message]
2017-01-18  8:35 ` [bug report] net/sched: cls_flower: Set the filter Hardware device for all use-cases Hadar Hen Zion
2017-01-18 14:01 ` Hadar Hen Zion
2017-01-18 14:50 ` Dan Carpenter

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=20170117225703.GA21380@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=kernel-janitors@vger.kernel.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.