On Tue, Oct 15, 2024 at 8:58 AM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > > Hi Wang, > > On Mon, Oct 14, 2024 at 4:43 PM Wang Hai <wanghai38@xxxxxxxxxx> wrote: > > The rtsn_start_xmit() returns NETDEV_TX_OK without freeing skb > > in case of skb->len being too long, add dev_kfree_skb_any() to fix it. > > > > Fixes: b0d3969d2b4d ("net: ethernet: rtsn: Add support for Renesas Ethernet-TSN") > > Signed-off-by: Wang Hai <wanghai38@xxxxxxxxxx> > > Thanks for your patch! > > > --- a/drivers/net/ethernet/renesas/rtsn.c > > +++ b/drivers/net/ethernet/renesas/rtsn.c > > @@ -1057,6 +1057,7 @@ static netdev_tx_t rtsn_start_xmit(struct sk_buff *skb, struct net_device *ndev) > > if (skb->len >= TX_DS) { > > priv->stats.tx_dropped++; > > priv->stats.tx_errors++; > > + dev_kfree_skb_any(skb); > > goto out; > > } > > Does the same apply to the skb_put_padto() failure path below? > > drivers/net/ethernet/renesas/rtsn.c- if (skb_put_padto(skb, ETH_ZLEN)) > drivers/net/ethernet/renesas/rtsn.c- goto out; In case of error, skb_put_padto() frees the skb. /** * skb_put_padto - increase size and pad an skbuff up to a minimal size * @skb: buffer to pad * @len: minimal length * * Pads up a buffer to ensure the trailing bytes exist and are * blanked. If the buffer already contains sufficient data it * is untouched. Otherwise it is extended. Returns zero on * success. The skb is freed on error. */ static inline int __must_check skb_put_padto(struct sk_buff *skb, unsigned int len) { return __skb_put_padto(skb, len, true); }