* [PATCH net-next v2] net/core: fix wrong return value in __splice_segment
@ 2025-07-24 10:29 Pengtao He
2025-07-24 11:18 ` Eric Dumazet
0 siblings, 1 reply; 3+ messages in thread
From: Pengtao He @ 2025-07-24 10:29 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
Return true immediately when the last segment is processed,
avoid to walking once more in the frags loop.
Signed-off-by: Pengtao He <hept.hept.hept@gmail.com>
---
v2->v1:
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 | 3 +++
1 file changed, 3 insertions(+)
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index ee0274417948..cc3339ab829a 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -3114,6 +3114,9 @@ static bool __splice_segment(struct page *page, unsigned int poff,
*len -= flen;
} while (*len && plen);
+ if (!*len)
+ return true;
+
return false;
}
--
2.49.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next v2] net/core: fix wrong return value in __splice_segment
2025-07-24 10:29 [PATCH net-next v2] net/core: fix wrong return value in __splice_segment Pengtao He
@ 2025-07-24 11:18 ` Eric Dumazet
2025-07-24 12:02 ` Pengtao He
0 siblings, 1 reply; 3+ messages in thread
From: Eric Dumazet @ 2025-07-24 11:18 UTC (permalink / raw)
To: Pengtao He
Cc: David S. Miller, Jakub Kicinski, Paolo Abeni, Simon Horman,
Willem de Bruijn, Mina Almasry, Jason Xing, Michal Luczaj,
Eric Biggers, Alexander Lobakin, netdev, linux-kernel
On Thu, Jul 24, 2025 at 3:29 AM Pengtao He <hept.hept.hept@gmail.com> wrote:
>
> Return true immediately when the last segment is processed,
> avoid to walking once more in the frags loop.
>
> Signed-off-by: Pengtao He <hept.hept.hept@gmail.com>
> ---
> v2->v1:
> 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 | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> index ee0274417948..cc3339ab829a 100644
> --- a/net/core/skbuff.c
> +++ b/net/core/skbuff.c
> @@ -3114,6 +3114,9 @@ static bool __splice_segment(struct page *page, unsigned int poff,
> *len -= flen;
> } while (*len && plen);
>
> + if (!*len)
> + return true;
> +
> return false;
> }
>
Condition is evaluated twice. What about this instead ?
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index ee0274417948e0eb121792a400a0455884c92e56..23b776cd98796cf8eb4d19868a0506423226914d
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;
}
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [PATCH net-next v2] net/core: fix wrong return value in __splice_segment
2025-07-24 11:18 ` Eric Dumazet
@ 2025-07-24 12:02 ` Pengtao He
0 siblings, 0 replies; 3+ messages in thread
From: Pengtao He @ 2025-07-24 12:02 UTC (permalink / raw)
To: edumazet
Cc: aleksander.lobakin, almasrymina, davem, ebiggers, hept.hept.hept,
horms, kerneljasonxing, kuba, linux-kernel, mhal, netdev, pabeni,
willemb
> >
> > Return true immediately when the last segment is processed,
> > avoid to walking once more in the frags loop.
> >
> > Signed-off-by: Pengtao He <hept.hept.hept@gmail.com>
> > ---
> > v2->v1:
> > Correct the commit message and target tree.
> > v1:
> > https://lore.kernel.org/netdev/20250723063119.24059-1-hept.hept.hept@gmai=
> l.com/
> > ---
> > net/core/skbuff.c | 3 +++
> > 1 file changed, 3 insertions(+)
> >
> > diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> > index ee0274417948..cc3339ab829a 100644
> > --- a/net/core/skbuff.c
> > +++ b/net/core/skbuff.c
> > @@ -3114,6 +3114,9 @@ static bool __splice_segment(struct page *page, uns=
> igned int poff,
> > *len -=3D flen;
> > } while (*len && plen);
> >
> > + if (!*len)
> > + return true;
> > +
> > return false;
> > }
> >
>
> Condition is evaluated twice. What about this instead ?
>
> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> index ee0274417948e0eb121792a400a0455884c92e56..23b776cd98796cf8eb4d19868a0=
> 506423226914d
> 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 +=3D flen;
> plen -=3D flen;
> *len -=3D flen;
> - } while (*len && plen);
> + if (!*len)
> + return true;
> + } while (plen);
>
> return false;
> }
>
Ok, this is better.
Thanks.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-07-24 12:02 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-07-24 10:29 [PATCH net-next v2] net/core: fix wrong return value in __splice_segment Pengtao He
2025-07-24 11:18 ` Eric Dumazet
2025-07-24 12:02 ` Pengtao He
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®