[PATCH net] net: ethernet: ti: am65-cpsw-nuss: Fix skb size by accounting for skb_shared_info

Chintan Vankar posted 1 patch 3 months, 2 weeks ago
There is a newer version of this series
drivers/net/ethernet/ti/am65-cpsw-nuss.c | 1 +
1 file changed, 1 insertion(+)
[PATCH net] net: ethernet: ti: am65-cpsw-nuss: Fix skb size by accounting for skb_shared_info
Posted by Chintan Vankar 3 months, 2 weeks ago
While transitioning from netdev_alloc_ip_align to build_skb, memory for
skb_shared_info was not allocated. Fix this by including
sizeof(skb_shared_info) in the packet length during allocation.

Fixes: 8acacc40f733 ("net: ethernet: ti: am65-cpsw: Add minimal XDP support")
Signed-off-by: Chintan Vankar <c-vankar@ti.com>
---

This patch is based on the commit '9caca6ac0e26' of origin/main branch of
Linux-net repository.

 drivers/net/ethernet/ti/am65-cpsw-nuss.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
index f20d1ff192ef..3905eec0b11e 100644
--- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c
+++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
@@ -857,6 +857,7 @@ static struct sk_buff *am65_cpsw_build_skb(void *page_addr,
 	struct sk_buff *skb;
 
 	len += AM65_CPSW_HEADROOM;
+	len += SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
 
 	skb = build_skb(page_addr, len);
 	if (unlikely(!skb))
-- 
2.34.1
Re: [PATCH net] net: ethernet: ti: am65-cpsw-nuss: Fix skb size by accounting for skb_shared_info
Posted by Siddharth Vadapalli 3 months, 2 weeks ago
On Wed, Jun 25, 2025 at 04:57:25PM +0530, Chintan Vankar wrote:

Hello Chintan,

> While transitioning from netdev_alloc_ip_align to build_skb, memory for

nitpick: Add parantheses when referring to functions:
netdev_alloc_ip_align()
build_skb()

> skb_shared_info was not allocated. Fix this by including

Enclose structures within double quotes and preferably refer to them
in the context of an "skb":

...memory for the "skb_shared_info" member of an "skb" was not allocated...

> sizeof(skb_shared_info) in the packet length during allocation.
> 
> Fixes: 8acacc40f733 ("net: ethernet: ti: am65-cpsw: Add minimal XDP support")

> Signed-off-by: Chintan Vankar <c-vankar@ti.com>
> ---
> 
> This patch is based on the commit '9caca6ac0e26' of origin/main branch of
> Linux-net repository.
> 
>  drivers/net/ethernet/ti/am65-cpsw-nuss.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
> index f20d1ff192ef..3905eec0b11e 100644
> --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c
> +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
> @@ -857,6 +857,7 @@ static struct sk_buff *am65_cpsw_build_skb(void *page_addr,
>  	struct sk_buff *skb;
>  
>  	len += AM65_CPSW_HEADROOM;
> +	len += SKB_DATA_ALIGN(sizeof(struct skb_shared_info));

This could be added to the previous line itself:

	len += AM65_CPSW_HEADROOM + SKB_DATA_ALIGN(sizeof(struct skb_shared_info));

>  
>  	skb = build_skb(page_addr, len);
>  	if (unlikely(!skb))

Thank you for finding the bug and fixing it.

Regards,
Siddharth.
Re: [PATCH net] net: ethernet: ti: am65-cpsw-nuss: Fix skb size by accounting for skb_shared_info
Posted by Chintan Vankar 3 months, 2 weeks ago
Hello Siddharth,

On 25/06/25 19:07, Siddharth Vadapalli wrote:
> On Wed, Jun 25, 2025 at 04:57:25PM +0530, Chintan Vankar wrote:
> 
> Hello Chintan,
> 
>> While transitioning from netdev_alloc_ip_align to build_skb, memory for
> 
> nitpick: Add parantheses when referring to functions:
> netdev_alloc_ip_align()
> build_skb()
> 
>> skb_shared_info was not allocated. Fix this by including
> 
> Enclose structures within double quotes and preferably refer to them
> in the context of an "skb":
> 
> ...memory for the "skb_shared_info" member of an "skb" was not allocated...
> 
>> sizeof(skb_shared_info) in the packet length during allocation.
>>
>> Fixes: 8acacc40f733 ("net: ethernet: ti: am65-cpsw: Add minimal XDP support")
> 
>> Signed-off-by: Chintan Vankar <c-vankar@ti.com>
>> ---
>>
>> This patch is based on the commit '9caca6ac0e26' of origin/main branch of
>> Linux-net repository.
>>
>>   drivers/net/ethernet/ti/am65-cpsw-nuss.c | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/net/ethernet/ti/am65-cpsw-nuss.c b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
>> index f20d1ff192ef..3905eec0b11e 100644
>> --- a/drivers/net/ethernet/ti/am65-cpsw-nuss.c
>> +++ b/drivers/net/ethernet/ti/am65-cpsw-nuss.c
>> @@ -857,6 +857,7 @@ static struct sk_buff *am65_cpsw_build_skb(void *page_addr,
>>   	struct sk_buff *skb;
>>   
>>   	len += AM65_CPSW_HEADROOM;
>> +	len += SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
> 
> This could be added to the previous line itself:
> 
> 	len += AM65_CPSW_HEADROOM + SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
> 
>>   
>>   	skb = build_skb(page_addr, len);
>>   	if (unlikely(!skb))
> 
> Thank you for finding the bug and fixing it.
> 

Thank you for reviewing patch. I have posted v2 by addressing your
comments at:
https://lore.kernel.org/r/20250626051226.2418638-1-c-vankar@ti.com/

Regards,
Chintan.

> Regards,
> Siddharth.