mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [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®