2020-08-27 12:01:03

by Miaohe Lin

[permalink] [raw]
Subject: [PATCH] net: exit immediately when off = 0 in skb_headers_offset_update()

In the case of off = 0, skb_headers_offset_update() do nothing indeed.

Signed-off-by: Miaohe Lin <[email protected]>
---
net/core/skbuff.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 18ed56316e56..f67f0da20a5b 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -1459,6 +1459,8 @@ EXPORT_SYMBOL(skb_clone);

void skb_headers_offset_update(struct sk_buff *skb, int off)
{
+ if (unlikely(off == 0))
+ return;
/* Only adjust this if it actually is csum_start rather than csum */
if (skb->ip_summed == CHECKSUM_PARTIAL)
skb->csum_start += off;
--
2.19.1


2020-08-27 15:17:52

by Eric Dumazet

[permalink] [raw]
Subject: Re: [PATCH] net: exit immediately when off = 0 in skb_headers_offset_update()

On Thu, Aug 27, 2020 at 4:25 AM Miaohe Lin <[email protected]> wrote:
>
> In the case of off = 0, skb_headers_offset_update() do nothing indeed.
>
> Signed-off-by: Miaohe Lin <[email protected]>
> ---
> net/core/skbuff.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> index 18ed56316e56..f67f0da20a5b 100644
> --- a/net/core/skbuff.c
> +++ b/net/core/skbuff.c
> @@ -1459,6 +1459,8 @@ EXPORT_SYMBOL(skb_clone);
>
> void skb_headers_offset_update(struct sk_buff *skb, int off)
> {
> + if (unlikely(off == 0))
> + return;

If this is unlikely, I doubt adding a test is going to save anything.

This will instead add a conditional test for the 'likely' cases.