All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: horatiu.vultur@microchip.com
Cc: kernel-janitors@vger.kernel.org
Subject: Re: [bug report] net: ocelot: Extend MRP
Date: Thu, 18 Mar 2021 15:11:28 +0300	[thread overview]
Message-ID: <20210318121128.GA21246@kadam> (raw)
In-Reply-To: <YFNChN/C6JwVAV2t@mwanda>

See also:

drivers/net/ethernet/mscc/ocelot_mrp.c:254 ocelot_mrp_del_ring_role() error: we previously assumed 'ocelot_port' could be null (see line 247)

regards,
dan carpenter

On Thu, Mar 18, 2021 at 03:07:32PM +0300, Dan Carpenter wrote:
> Hello Horatiu Vultur,
> 
> This is a semi-automatic email about new static checker warnings.
> 
> The patch 7c588c3e96e9: "net: ocelot: Extend MRP" from Mar 16, 2021,
> leads to the following Smatch complaint:
> 
>     drivers/net/ethernet/mscc/ocelot_mrp.c:180 ocelot_mrp_del()
>     error: we previously assumed 'ocelot_port' could be null (see line 173)
> 
> drivers/net/ethernet/mscc/ocelot_mrp.c
>    153  int ocelot_mrp_del(struct ocelot *ocelot, int port,
>    154                     const struct switchdev_obj_mrp *mrp)
>    155  {
>    156          struct ocelot_port *ocelot_port = ocelot->ports[port];
>    157          int i;
>    158  
>    159          if (!ocelot_port)
>    160                  return -EOPNOTSUPP;
>    161  
>    162          if (ocelot_port->mrp_ring_id != mrp->ring_id)
>    163                  return 0;
>    164  
>    165          ocelot_mrp_del_vcap(ocelot, port);
>    166          ocelot_mrp_del_vcap(ocelot, port + ocelot->num_phys_ports);
>    167  
>    168          ocelot_port->mrp_ring_id = 0;
>    169  
>    170          for (i = 0; i < ocelot->num_phys_ports; ++i) {
> 
> This loop tries to verify that all the ports have ring_id == 0 otherwise
> we return.  It's slightly confusing why this matters.
> 
>    171                  ocelot_port = ocelot->ports[i];
>    172	
>    173			if (!ocelot_port)
>                              ^^^^^^^^^^^
> Assume the last element of the array is NULL
> 
>    174				continue;
>    175	
>    176			if (ocelot_port->mrp_ring_id != 0)
>    177				goto out;
> 
> This would be more clear if instead of a "goto out;" it just did a
> direct "return 0;"
> 
>    178		}
>    179	
>    180		ocelot_mrp_del_mac(ocelot, ocelot_port);
> 
> We delete the last mac address of all the ring_ids are zero but if the
> last port is zero it will crash.
> 
>    181	out:
>    182		return 0;
> 
> regards,
> dan carpenter

  reply	other threads:[~2021-03-18 12:12 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-18 12:07 [bug report] net: ocelot: Extend MRP Dan Carpenter
2021-03-18 12:11 ` Dan Carpenter [this message]
2021-03-18 18:57   ` Horatiu Vultur

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=20210318121128.GA21246@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=horatiu.vultur@microchip.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.