* [PATCH net-next v4] net/core: fix wrong return value in __splice_segment
@ 2025-08-14 1:01 Pengtao He
2025-08-14 13:38 ` Willem de Bruijn
0 siblings, 1 reply; 3+ messages in thread
From: Pengtao He @ 2025-08-14 1:01 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Willem de Bruijn, Mina Almasry, Jason Xing,
Michal Luczaj, Eric Biggers, Alexander Lobakin
Cc: netdev, linux-kernel, Pengtao He
If *len is equal to 0 at the beginning of __splice_segment
it returns true directly. But when decreasing *len from
a positive number to 0 in __splice_segment, it returns false.
The caller needs to call __splice_segment again.
Recheck *len if it changes, return true in time.
Reduce unnecessary calls to __splice_segment.
Signed-off-by: Pengtao He <hept.hept.hept@gmail.com>
---
v4:
Correct the commit message.
v3:
Reduce once condition evaluation.
v2:
Correct the commit message and target tree.
v1:
https://lore.kernel.org/netdev/20250723063119.24059-1-hept.hept.hept@gmail.com/
---
net/core/skbuff.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index ee0274417948..23b776cd9879 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3112,7 +3112,9 @@ static bool __splice_segment(struct page *page, unsigned int poff,
poff += flen;
plen -= flen;
*len -= flen;
- } while (*len && plen);
+ if (!*len)
+ return true;
+ } while (plen);
return false;
}
--
2.49.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next v4] net/core: fix wrong return value in __splice_segment
2025-08-14 1:01 [PATCH net-next v4] net/core: fix wrong return value in __splice_segment Pengtao He
@ 2025-08-14 13:38 ` Willem de Bruijn
2025-08-19 2:07 ` Pengtao He
0 siblings, 1 reply; 3+ messages in thread
From: Willem de Bruijn @ 2025-08-14 13:38 UTC (permalink / raw)
To: Pengtao He, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Willem de Bruijn, Mina Almasry,
Jason Xing, Michal Luczaj, Eric Biggers, Alexander Lobakin
Cc: netdev, linux-kernel, Pengtao He
Pengtao He wrote:
> If *len is equal to 0 at the beginning of __splice_segment
> it returns true directly. But when decreasing *len from
> a positive number to 0 in __splice_segment, it returns false.
> The caller needs to call __splice_segment again.
>
> Recheck *len if it changes, return true in time.
> Reduce unnecessary calls to __splice_segment.
Fix is a strong term. The existing behavior is correct, it just takes
an extra pass through the loop in caller __skb_splice_bits. As also
indicated by this patch targeting net-next.
I would suggest something like "net: avoid one loop iteration in __skb_splice_bits"
> Signed-off-by: Pengtao He <hept.hept.hept@gmail.com>
> ---
> v4:
> Correct the commit message.
> v3:
> Reduce once condition evaluation.
> v2:
> Correct the commit message and target tree.
> v1:
> https://lore.kernel.org/netdev/20250723063119.24059-1-hept.hept.hept@gmail.com/
> ---
> net/core/skbuff.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> index ee0274417948..23b776cd9879 100644
> --- a/net/core/skbuff.c
> +++ b/net/core/skbuff.c
> @@ -3112,7 +3112,9 @@ static bool __splice_segment(struct page *page, unsigned int poff,
> poff += flen;
> plen -= flen;
> *len -= flen;
> - } while (*len && plen);
> + if (!*len)
> + return true;
> + } while (plen);
>
> return false;
> }
> --
> 2.49.0
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next v4] net/core: fix wrong return value in __splice_segment
2025-08-14 13:38 ` Willem de Bruijn
@ 2025-08-19 2:07 ` Pengtao He
0 siblings, 0 replies; 3+ messages in thread
From: Pengtao He @ 2025-08-19 2:07 UTC (permalink / raw)
To: willemdebruijn.kernel
Cc: aleksander.lobakin, almasrymina, davem, ebiggers, edumazet,
hept.hept.hept, horms, kerneljasonxing, kuba, linux-kernel, mhal,
netdev, pabeni, willemb
> Pengtao He wrote:
> > If *len is equal to 0 at the beginning of __splice_segment
> > it returns true directly. But when decreasing *len from
> > a positive number to 0 in __splice_segment, it returns false.
> > The caller needs to call __splice_segment again.
> >
> > Recheck *len if it changes, return true in time.
> > Reduce unnecessary calls to __splice_segment.
>
> Fix is a strong term. The existing behavior is correct, it just takes
> an extra pass through the loop in caller __skb_splice_bits. As also
> indicated by this patch targeting net-next.
>
> I would suggest something like "net: avoid one loop iteration in __skb_splice_bits"
Thanks for the detailed and good suggestion. I will correct it.
>
>
> > Signed-off-by: Pengtao He <hept.hept.hept@gmail.com>
> > ---
> > v4:
> > Correct the commit message.
> > v3:
> > Reduce once condition evaluation.
> > v2:
> > Correct the commit message and target tree.
> > v1:
> > https://lore.kernel.org/netdev/20250723063119.24059-1-hept.hept.hept@gmail.com/
> > ---
> > net/core/skbuff.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> > index ee0274417948..23b776cd9879 100644
> > --- a/net/core/skbuff.c
> > +++ b/net/core/skbuff.c
> > @@ -3112,7 +3112,9 @@ static bool __splice_segment(struct page *page, unsigned int poff,
> > poff += flen;
> > plen -= flen;
> > *len -= flen;
> > - } while (*len && plen);
> > + if (!*len)
> > + return true;
> > + } while (plen);
> >
> > return false;
> > }
> > --
> > 2.49.0
> >
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-08-19 2:07 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-14 1:01 [PATCH net-next v4] net/core: fix wrong return value in __splice_segment Pengtao He
2025-08-14 13:38 ` Willem de Bruijn
2025-08-19 2:07 ` Pengtao He
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).