All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net] nsh: set mac len based on inner packet
@ 2018-07-11 16:00 Willem de Bruijn
  2018-07-11 16:00 ` [PATCH net] packet: reset network header if packet shorter than ll reserved space Willem de Bruijn
                   ` (3 more replies)
  0 siblings, 4 replies; 7+ messages in thread
From: Willem de Bruijn @ 2018-07-11 16:00 UTC (permalink / raw)
  To: netdev; +Cc: davem, Willem de Bruijn

From: Willem de Bruijn <willemb@google.com>

When pulling the NSH header in nsh_gso_segment, set the mac length
based on the encapsulated packet type.

skb_reset_mac_len computes an offset to the network header, which
here still points to the outer packet:

  >     skb_reset_network_header(skb);
  >     [...]
  >     __skb_pull(skb, nsh_len);
  >     skb_reset_mac_header(skb);    // now mac hdr starts nsh_len == 8B after net hdr
  >     skb_reset_mac_len(skb);       // mac len = net hdr - mac hdr == (u16) -8 == 65528
  >     [..]
  >     skb_mac_gso_segment(skb, ..)

Link: http://lkml.kernel.org/r/CAF=yD-KeAcTSOn4AxirAxL8m7QAS8GBBe1w09eziYwvPbbUeYA@mail.gmail.com
Reported-by: syzbot+7b9ed9872dab8c32305d@syzkaller.appspotmail.com
Fixes: c411ed854584 ("nsh: add GSO support")
Signed-off-by: Willem de Bruijn <willemb@google.com>
---
 net/nsh/nsh.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/nsh/nsh.c b/net/nsh/nsh.c
index 9696ef96b719..1a30e165eeb4 100644
--- a/net/nsh/nsh.c
+++ b/net/nsh/nsh.c
@@ -104,7 +104,7 @@ static struct sk_buff *nsh_gso_segment(struct sk_buff *skb,
 	__skb_pull(skb, nsh_len);
 
 	skb_reset_mac_header(skb);
-	skb_reset_mac_len(skb);
+	skb->mac_len = proto == htons(ETH_P_TEB) ? ETH_HLEN : 0;
 	skb->protocol = proto;
 
 	features &= NETIF_F_SG;
-- 
2.18.0.203.gfac676dfb9-goog

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net] packet: reset network header if packet shorter than ll reserved space
  2018-07-11 16:00 [PATCH net] nsh: set mac len based on inner packet Willem de Bruijn
@ 2018-07-11 16:00 ` Willem de Bruijn
  2018-07-12 23:57   ` David Miller
  2018-07-11 16:00 ` [PATCH net] selftests: in udpgso_bench do not test udp zerocopy Willem de Bruijn
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 7+ messages in thread
From: Willem de Bruijn @ 2018-07-11 16:00 UTC (permalink / raw)
  To: netdev; +Cc: davem, Willem de Bruijn

From: Willem de Bruijn <willemb@google.com>

If variable length link layer headers result in a packet shorter
than dev->hard_header_len, reset the network header offset. Else
skb->mac_len may exceed skb->len after skb_mac_reset_len.

packet_sendmsg_spkt already has similar logic.

Fixes: b84bbaf7a6c8 ("packet: in packet_snd start writing at link layer allocation")
Signed-off-by: Willem de Bruijn <willemb@google.com>
---
 net/packet/af_packet.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index 57634bc3da74..9b27d0cd766d 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -2878,6 +2878,8 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len)
 			goto out_free;
 	} else if (reserve) {
 		skb_reserve(skb, -reserve);
+		if (len < reserve)
+			skb_reset_network_header(skb);
 	}
 
 	/* Returns -EFAULT on error */
-- 
2.18.0.203.gfac676dfb9-goog

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH net] selftests: in udpgso_bench do not test udp zerocopy
  2018-07-11 16:00 [PATCH net] nsh: set mac len based on inner packet Willem de Bruijn
  2018-07-11 16:00 ` [PATCH net] packet: reset network header if packet shorter than ll reserved space Willem de Bruijn
@ 2018-07-11 16:00 ` Willem de Bruijn
  2018-07-12 23:57   ` David Miller
  2018-07-12  7:28 ` [PATCH net] nsh: set mac len based on inner packet Jiri Benc
  2018-07-12 23:57 ` David Miller
  3 siblings, 1 reply; 7+ messages in thread
From: Willem de Bruijn @ 2018-07-11 16:00 UTC (permalink / raw)
  To: netdev; +Cc: davem, Willem de Bruijn

From: Willem de Bruijn <willemb@google.com>

The udpgso benchmark compares various configurations of UDP and TCP.
Including one that is not upstream, udp zerocopy. This is a leftover
from the earlier RFC patchset.

The test is part of kselftests and run in continuous spinners. Remove
the failing case to make the test start passing.

Fixes: 3a687bef148d ("selftests: udp gso benchmark")
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Willem de Bruijn <willemb@google.com>
---
 tools/testing/selftests/net/udpgso_bench.sh | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/tools/testing/selftests/net/udpgso_bench.sh b/tools/testing/selftests/net/udpgso_bench.sh
index 792fa4d0285e..850767befa47 100755
--- a/tools/testing/selftests/net/udpgso_bench.sh
+++ b/tools/testing/selftests/net/udpgso_bench.sh
@@ -35,9 +35,6 @@ run_udp() {
 
 	echo "udp gso"
 	run_in_netns ${args} -S
-
-	echo "udp gso zerocopy"
-	run_in_netns ${args} -S -z
 }
 
 run_tcp() {
-- 
2.18.0.203.gfac676dfb9-goog

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH net] nsh: set mac len based on inner packet
  2018-07-11 16:00 [PATCH net] nsh: set mac len based on inner packet Willem de Bruijn
  2018-07-11 16:00 ` [PATCH net] packet: reset network header if packet shorter than ll reserved space Willem de Bruijn
  2018-07-11 16:00 ` [PATCH net] selftests: in udpgso_bench do not test udp zerocopy Willem de Bruijn
@ 2018-07-12  7:28 ` Jiri Benc
  2018-07-12 23:57 ` David Miller
  3 siblings, 0 replies; 7+ messages in thread
From: Jiri Benc @ 2018-07-12  7:28 UTC (permalink / raw)
  To: Willem de Bruijn; +Cc: netdev, davem, Willem de Bruijn

On Wed, 11 Jul 2018 12:00:44 -0400, Willem de Bruijn wrote:
> From: Willem de Bruijn <willemb@google.com>
> 
> When pulling the NSH header in nsh_gso_segment, set the mac length
> based on the encapsulated packet type.
> 
> skb_reset_mac_len computes an offset to the network header, which
> here still points to the outer packet:
> 
>   >     skb_reset_network_header(skb);
>   >     [...]
>   >     __skb_pull(skb, nsh_len);
>   >     skb_reset_mac_header(skb);    // now mac hdr starts nsh_len == 8B after net hdr
>   >     skb_reset_mac_len(skb);       // mac len = net hdr - mac hdr == (u16) -8 == 65528
>   >     [..]
>   >     skb_mac_gso_segment(skb, ..)  
> 
> Link: http://lkml.kernel.org/r/CAF=yD-KeAcTSOn4AxirAxL8m7QAS8GBBe1w09eziYwvPbbUeYA@mail.gmail.com
> Reported-by: syzbot+7b9ed9872dab8c32305d@syzkaller.appspotmail.com
> Fixes: c411ed854584 ("nsh: add GSO support")
> Signed-off-by: Willem de Bruijn <willemb@google.com>

Acked-by: Jiri Benc <jbenc@redhat.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net] nsh: set mac len based on inner packet
  2018-07-11 16:00 [PATCH net] nsh: set mac len based on inner packet Willem de Bruijn
                   ` (2 preceding siblings ...)
  2018-07-12  7:28 ` [PATCH net] nsh: set mac len based on inner packet Jiri Benc
@ 2018-07-12 23:57 ` David Miller
  3 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2018-07-12 23:57 UTC (permalink / raw)
  To: willemdebruijn.kernel; +Cc: netdev, willemb

From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Date: Wed, 11 Jul 2018 12:00:44 -0400

> From: Willem de Bruijn <willemb@google.com>
> 
> When pulling the NSH header in nsh_gso_segment, set the mac length
> based on the encapsulated packet type.
> 
> skb_reset_mac_len computes an offset to the network header, which
> here still points to the outer packet:
> 
>   >     skb_reset_network_header(skb);
>   >     [...]
>   >     __skb_pull(skb, nsh_len);
>   >     skb_reset_mac_header(skb);    // now mac hdr starts nsh_len == 8B after net hdr
>   >     skb_reset_mac_len(skb);       // mac len = net hdr - mac hdr == (u16) -8 == 65528
>   >     [..]
>   >     skb_mac_gso_segment(skb, ..)
> 
> Link: http://lkml.kernel.org/r/CAF=yD-KeAcTSOn4AxirAxL8m7QAS8GBBe1w09eziYwvPbbUeYA@mail.gmail.com
> Reported-by: syzbot+7b9ed9872dab8c32305d@syzkaller.appspotmail.com
> Fixes: c411ed854584 ("nsh: add GSO support")
> Signed-off-by: Willem de Bruijn <willemb@google.com>

Applied and queued up for -stable.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net] packet: reset network header if packet shorter than ll reserved space
  2018-07-11 16:00 ` [PATCH net] packet: reset network header if packet shorter than ll reserved space Willem de Bruijn
@ 2018-07-12 23:57   ` David Miller
  0 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2018-07-12 23:57 UTC (permalink / raw)
  To: willemdebruijn.kernel; +Cc: netdev, willemb

From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Date: Wed, 11 Jul 2018 12:00:45 -0400

> From: Willem de Bruijn <willemb@google.com>
> 
> If variable length link layer headers result in a packet shorter
> than dev->hard_header_len, reset the network header offset. Else
> skb->mac_len may exceed skb->len after skb_mac_reset_len.
> 
> packet_sendmsg_spkt already has similar logic.
> 
> Fixes: b84bbaf7a6c8 ("packet: in packet_snd start writing at link layer allocation")
> Signed-off-by: Willem de Bruijn <willemb@google.com>

Applied and queued up for -stable.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH net] selftests: in udpgso_bench do not test udp zerocopy
  2018-07-11 16:00 ` [PATCH net] selftests: in udpgso_bench do not test udp zerocopy Willem de Bruijn
@ 2018-07-12 23:57   ` David Miller
  0 siblings, 0 replies; 7+ messages in thread
From: David Miller @ 2018-07-12 23:57 UTC (permalink / raw)
  To: willemdebruijn.kernel; +Cc: netdev, willemb

From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
Date: Wed, 11 Jul 2018 12:00:46 -0400

> From: Willem de Bruijn <willemb@google.com>
> 
> The udpgso benchmark compares various configurations of UDP and TCP.
> Including one that is not upstream, udp zerocopy. This is a leftover
> from the earlier RFC patchset.
> 
> The test is part of kselftests and run in continuous spinners. Remove
> the failing case to make the test start passing.
> 
> Fixes: 3a687bef148d ("selftests: udp gso benchmark")
> Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
> Signed-off-by: Willem de Bruijn <willemb@google.com>

Applied.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2018-07-13  0:09 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-11 16:00 [PATCH net] nsh: set mac len based on inner packet Willem de Bruijn
2018-07-11 16:00 ` [PATCH net] packet: reset network header if packet shorter than ll reserved space Willem de Bruijn
2018-07-12 23:57   ` David Miller
2018-07-11 16:00 ` [PATCH net] selftests: in udpgso_bench do not test udp zerocopy Willem de Bruijn
2018-07-12 23:57   ` David Miller
2018-07-12  7:28 ` [PATCH net] nsh: set mac len based on inner packet Jiri Benc
2018-07-12 23:57 ` David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.