[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [PATCH net-next v2 09/10] qlcnic: use pskb_may_pull() to pull excess TX frags into the head
- To: Josef Bacik <josef@xxxxxxxxxxxxxx>, Jakub Kicinski <kuba@xxxxxxxxxx>, Paolo Abeni <pabeni@xxxxxxxxxx>, Eric Dumazet <edumazet@xxxxxxxxxx>, "David S. Miller" <davem@xxxxxxxxxxxxx>, Andrew Lunn <andrew+netdev@xxxxxxx>
- From: "Loktionov, Aleksandr" <aleksandr.loktionov@xxxxxxxxx>
- Date: Wed, 14 Oct 2026 10:44:30 +0000
- Accept-language: en-US
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CcSB8elyvCi+p1mtt6572P5Aq3yd8cAvJuoCNeew4eI=; b=Xg6rk3qOD6e8tBlaLzOkJttntuWIQU+Yd3InB5t1QnXQmrZ1h/AfsZBfQALgG3a4hAS7KoS2/MmFnS8BR98ER7+37aSqw4JWysI+K4couBRo+wlRHXf7+s4AAdyz0kMtDwltPGv3QMstXj24mvd+ESI85zc0etJZP34lJ8YRCKd1CAHthex58NhPVNcB1PfQzXF6JUGbkOIS9zASCqdBsg8r0G48wyMKEHZFIIDzWI1ivU6VYO8xB96B8aK+vtvlXajop4B4sQi97tvcWdfmgN2ag4uqccm1gBTDEkyDZcOWuOlPGZOQ6gMe2OF2zqQXCaj2WIFOgV+ILmGgoFduZA==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c7Be2v8yviWubEKFJAdIw0TKazXCP9AyRq9zTW8oaCJBcsqCnMts1/qzdk2ao2KaMisx9iESbu7qwMA6t2sBg9JOMUE9RBtG6lNG1EcFP3En2w2udoVeDfv1Sr7hjS/yuEXipPWTVo+OzjZudYngs/akCLnYbWer2BeZMe8G9/sSViYt+wcAITUHDy9hYGw3PiFH5Mj7KUJZ2Qjpyx6L/E8iwR1ztpKkpTs2Ymj3mcvk+3/Tn3ea8WWPQh2f8gDtTHqJ3GY6hxnbq15AOgKbZKvTPoR/2g54nIn9MyiM129Nd6BAaM0mL2i89hs/5h/jQDfM15GsrANgd2YjKahZqg==
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=Intel header.d=intel.com header.i="@intel.com" header.h="From:To:CC:Subject:Date:Message-ID:References:In-Reply-To:Content-Transfer-Encoding:MIME-Version"
- Authentication-results: mx.microsoft.com 1; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com;
- Cc: Saeed Mahameed <saeedm@xxxxxxxxxx>, Tariq Toukan <tariqt@xxxxxxxxxx>, Mark Bloch <mbloch@xxxxxxxxxx>, Leon Romanovsky <leon@xxxxxxxxxx>, "Juergen Gross" <jgross@xxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Oleksandr Tyshchenko <oleksandr_tyshchenko@xxxxxxxx>, "Nguyen, Anthony L" <anthony.l.nguyen@xxxxxxxxx>, "Kitszel, Przemyslaw" <przemyslaw.kitszel@xxxxxxxxx>, Manish Chopra <manishc@xxxxxxxxxxx>, "Rahul Verma" <rahulv@xxxxxxxxxxx>, "GR-Linux-NIC-Dev@xxxxxxxxxxx" <GR-Linux-NIC-Dev@xxxxxxxxxxx>, Shahed Shaikh <shshaikh@xxxxxxxxxxx>, "Simon Horman" <horms@xxxxxxxxxx>, "netdev@xxxxxxxxxxxxxxx" <netdev@xxxxxxxxxxxxxxx>, "linux-kernel@xxxxxxxxxxxxxxx" <linux-kernel@xxxxxxxxxxxxxxx>, "linux-rdma@xxxxxxxxxxxxxxx" <linux-rdma@xxxxxxxxxxxxxxx>, "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, "intel-wired-lan@xxxxxxxxxxxxxxxx" <intel-wired-lan@xxxxxxxxxxxxxxxx>
- Delivery-date: Thu, 15 Oct 2026 12:02:04 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
- Thread-index: AQHdV2iPhjcjoTngS0CJA/3Rchai4rb84yFw
- Thread-topic: [PATCH net-next v2 09/10] qlcnic: use pskb_may_pull() to pull excess TX frags into the head
> -----Original Message-----
> From: Josef Bacik <josef@xxxxxxxxxxxxxx>
> Sent: Thursday, October 8, 2026 11:03 PM
> To: Jakub Kicinski <kuba@xxxxxxxxxx>; Paolo Abeni <pabeni@xxxxxxxxxx>;
> Eric Dumazet <edumazet@xxxxxxxxxx>; David S. Miller
> <davem@xxxxxxxxxxxxx>; Andrew Lunn <andrew+netdev@xxxxxxx>
> Cc: Saeed Mahameed <saeedm@xxxxxxxxxx>; Tariq Toukan
> <tariqt@xxxxxxxxxx>; Mark Bloch <mbloch@xxxxxxxxxx>; Leon Romanovsky
> <leon@xxxxxxxxxx>; Juergen Gross <jgross@xxxxxxxx>; Stefano Stabellini
> <sstabellini@xxxxxxxxxx>; Oleksandr Tyshchenko
> <oleksandr_tyshchenko@xxxxxxxx>; Nguyen, Anthony L
> <anthony.l.nguyen@xxxxxxxxx>; Kitszel, Przemyslaw
> <przemyslaw.kitszel@xxxxxxxxx>; Manish Chopra <manishc@xxxxxxxxxxx>;
> Rahul Verma <rahulv@xxxxxxxxxxx>; GR-Linux-NIC-Dev@xxxxxxxxxxx; Shahed
> Shaikh <shshaikh@xxxxxxxxxxx>; Simon Horman <horms@xxxxxxxxxx>;
> netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; linux-
> rdma@xxxxxxxxxxxxxxx; xen-devel@xxxxxxxxxxxxxxxxxxxx; intel-wired-
> lan@xxxxxxxxxxxxxxxx; Josef Bacik <josef@xxxxxxxxxxxxxx>
> Subject: [PATCH net-next v2 09/10] qlcnic: use pskb_may_pull() to pull
> excess TX frags into the head
>
> qlcnic_xmit_frame() pulls the frags that don't fit in a TX descriptor
> into the head with __pskb_pull_tail(). It already checks the result.
> Switch to pskb_may_pull(), which takes the length the head should end up
> with and checks it against the skb, so this driver no longer calls
> __pskb_pull_tail() directly.
>
> __pskb_pull_tail() also releases empty frags, even when there's nothing
> to pull, so if the frags being pulled are all empty it still gets the
> frag count under the limit. pskb_may_pull() returns early in that case,
> so follow it with skb_drop_empty_frags().
>
> Assisted-by: LLM
> Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx>
> ---
> drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
> b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
> index 761ef3bc8193..e7ab5586798b 100644
> --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
> +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_io.c
> @@ -682,7 +682,8 @@ netdev_tx_t qlcnic_xmit_frame(struct sk_buff *skb,
> struct net_device *netdev)
> for (i = 0; i < (frag_count - QLCNIC_MAX_FRAGS_PER_TX);
> i++)
> delta += skb_frag_size(&skb_shinfo(skb)->frags[i]);
>
> - if (!__pskb_pull_tail(skb, delta))
> + if (!pskb_may_pull(skb, skb_headlen(skb) + delta) ||
> + skb_drop_empty_frags(skb, GFP_ATOMIC))
> goto drop_packet;
>
> frag_count = 1 + skb_shinfo(skb)->nr_frags;
>
> --
> 2.55.0
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@xxxxxxxxx>
|