2022-02-02 14:28:23

by Steen Hegelund

[permalink] [raw]
Subject: [PATCH net] net: sparx5: do not refer to skb after passing it on

Do not try to use any SKB fields after the packet has been passed up in the
receive stack.

This error was reported as shown below:
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

Fixes: f3cad2611a77 (net: sparx5: add hostmode with phylink support)

Signed-off-by: Steen Hegelund <[email protected]>
---
drivers/net/ethernet/microchip/sparx5/sparx5_packet.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c b/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
index dc7e5ea6ec15..ebdce4b35686 100644
--- a/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
+++ b/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
@@ -145,8 +145,8 @@ static void sparx5_xtr_grp(struct sparx5 *sparx5, u8 grp, bool byte_swap)
skb_put(skb, byte_cnt - ETH_FCS_LEN);
eth_skb_pad(skb);
skb->protocol = eth_type_trans(skb, netdev);
- netif_rx(skb);
netdev->stats.rx_bytes += skb->len;
+ netif_rx(skb);
netdev->stats.rx_packets++;
}

--
2.35.1


2022-02-02 21:15:04

by Steen Hegelund

[permalink] [raw]
Subject: Re: [PATCH net] net: sparx5: do not refer to skb after passing it on

Hi Jacub,

Thanks for the feedback.

I will update according to your suggestions.

BR
Steen

On Tue, 2022-02-01 at 20:05 -0800, Jakub Kicinski wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
>
> On Tue, 1 Feb 2022 15:30:57 +0100 Steen Hegelund wrote:
> > Do not try to use any SKB fields after the packet has been passed up in the
> > receive stack.
> >
> > This error was reported as shown below:
>
> No need to spell it out, the tags speak for themselves.
>
> > Reported-by: kernel test robot <[email protected]>
> > Reported-by: Dan Carpenter <[email protected]>
> >
>
> Drop this...
>
> > Fixes: f3cad2611a77 (net: sparx5: add hostmode with phylink support)
> >
>
> and this empty line - all the tags should be together.
>
> > Signed-off-by: Steen Hegelund <[email protected]>
> > ---
> >  drivers/net/ethernet/microchip/sparx5/sparx5_packet.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
> > b/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
> > index dc7e5ea6ec15..ebdce4b35686 100644
> > --- a/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
> > +++ b/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
> > @@ -145,8 +145,8 @@ static void sparx5_xtr_grp(struct sparx5 *sparx5, u8 grp, bool byte_swap)
> >       skb_put(skb, byte_cnt - ETH_FCS_LEN);
> >       eth_skb_pad(skb);
> >       skb->protocol = eth_type_trans(skb, netdev);
> > -     netif_rx(skb);
> >       netdev->stats.rx_bytes += skb->len;
> > +     netif_rx(skb);
> >       netdev->stats.rx_packets++;
>
> sorry to nit pick - wouldn't it be neater if both the stats were
> updated together?  Looks a little strange that netif_rx() is in
> between the two now.
>
> >  }
> >
> > --
> > 2.35.1
> >
>

2022-02-03 20:36:21

by Jakub Kicinski

[permalink] [raw]
Subject: Re: [PATCH net] net: sparx5: do not refer to skb after passing it on

On Tue, 1 Feb 2022 15:30:57 +0100 Steen Hegelund wrote:
> Do not try to use any SKB fields after the packet has been passed up in the
> receive stack.
>
> This error was reported as shown below:

No need to spell it out, the tags speak for themselves.

> Reported-by: kernel test robot <[email protected]>
> Reported-by: Dan Carpenter <[email protected]>
>

Drop this...

> Fixes: f3cad2611a77 (net: sparx5: add hostmode with phylink support)
>

and this empty line - all the tags should be together.

> Signed-off-by: Steen Hegelund <[email protected]>
> ---
> drivers/net/ethernet/microchip/sparx5/sparx5_packet.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c b/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
> index dc7e5ea6ec15..ebdce4b35686 100644
> --- a/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
> +++ b/drivers/net/ethernet/microchip/sparx5/sparx5_packet.c
> @@ -145,8 +145,8 @@ static void sparx5_xtr_grp(struct sparx5 *sparx5, u8 grp, bool byte_swap)
> skb_put(skb, byte_cnt - ETH_FCS_LEN);
> eth_skb_pad(skb);
> skb->protocol = eth_type_trans(skb, netdev);
> - netif_rx(skb);
> netdev->stats.rx_bytes += skb->len;
> + netif_rx(skb);
> netdev->stats.rx_packets++;

sorry to nit pick - wouldn't it be neater if both the stats were
updated together? Looks a little strange that netif_rx() is in
between the two now.

> }
>
> --
> 2.35.1
>