Message ID | 20211203174413.13090-1-manishc@marvell.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 8e227b198a55859bf790dc7f4b1e30c0859c6756 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v2,net] qede: validate non LSO skb length | expand |
Hello: This patch was applied to netdev/net.git (master) by Jakub Kicinski <kuba@kernel.org>: On Fri, 3 Dec 2021 09:44:13 -0800 you wrote: > Although it is unlikely that stack could transmit a non LSO > skb with length > MTU, however in some cases or environment such > occurrences actually resulted into firmware asserts due to packet > length being greater than the max supported by the device (~9700B). > > This patch adds the safeguard for such odd cases to avoid firmware > asserts. > > [...] Here is the summary with links: - [v2,net] qede: validate non LSO skb length https://git.kernel.org/netdev/net/c/8e227b198a55 You are awesome, thank you!
diff --git a/drivers/net/ethernet/qlogic/qede/qede_fp.c b/drivers/net/ethernet/qlogic/qede/qede_fp.c index 065e900..999abcf 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_fp.c +++ b/drivers/net/ethernet/qlogic/qede/qede_fp.c @@ -1643,6 +1643,13 @@ netdev_tx_t qede_start_xmit(struct sk_buff *skb, struct net_device *ndev) data_split = true; } } else { + if (unlikely(skb->len > ETH_TX_MAX_NON_LSO_PKT_LEN)) { + DP_ERR(edev, "Unexpected non LSO skb length = 0x%x\n", skb->len); + qede_free_failed_tx_pkt(txq, first_bd, 0, false); + qede_update_tx_producer(txq); + return NETDEV_TX_OK; + } + val |= ((skb->len & ETH_TX_DATA_1ST_BD_PKT_LEN_MASK) << ETH_TX_DATA_1ST_BD_PKT_LEN_SHIFT); }