diff mbox series

xfrm: support output_mark for offload ESP packets

Message ID 20200114132954.6373-1-ulrich.weber@gmail.com
State Awaiting Upstream
Delegated to: David Miller
Headers show
Series xfrm: support output_mark for offload ESP packets | expand

Commit Message

Ulrich Weber Jan. 14, 2020, 1:29 p.m. UTC
Commit 9b42c1f179a6 ("xfrm: Extend the output_mark") added output_mark
support but missed ESP offload support.

xfrm_smark_get() is not called within xfrm_input() for packets coming
from esp4_gro_receive() or esp6_gro_receive(). Therefore call
xfrm_smark_get() directly within these functions.

Signed-off-by: Ulrich Weber <ulrich.weber@gmail.com>
---
 net/ipv4/esp4_offload.c | 2 ++
 net/ipv6/esp6_offload.c | 2 ++
 2 files changed, 4 insertions(+)

Comments

Steffen Klassert Jan. 15, 2020, 9:53 a.m. UTC | #1
On Tue, Jan 14, 2020 at 02:29:54PM +0100, Ulrich Weber wrote:
> Commit 9b42c1f179a6 ("xfrm: Extend the output_mark") added output_mark
> support but missed ESP offload support.
> 
> xfrm_smark_get() is not called within xfrm_input() for packets coming
> from esp4_gro_receive() or esp6_gro_receive(). Therefore call
> xfrm_smark_get() directly within these functions.
> 
> Signed-off-by: Ulrich Weber <ulrich.weber@gmail.com>

Can you please add a 'Fixes' tag, so that it can be properly backported
to the -stable trees.

Thanks!
diff mbox series

Patch

diff --git a/net/ipv4/esp4_offload.c b/net/ipv4/esp4_offload.c
index 0e4a7cf6bc87..e2e219c7854a 100644
--- a/net/ipv4/esp4_offload.c
+++ b/net/ipv4/esp4_offload.c
@@ -57,6 +57,8 @@  static struct sk_buff *esp4_gro_receive(struct list_head *head,
 		if (!x)
 			goto out_reset;
 
+		skb->mark = xfrm_smark_get(skb->mark, x);
+
 		sp->xvec[sp->len++] = x;
 		sp->olen++;
 
diff --git a/net/ipv6/esp6_offload.c b/net/ipv6/esp6_offload.c
index e31626ffccd1..fd535053245b 100644
--- a/net/ipv6/esp6_offload.c
+++ b/net/ipv6/esp6_offload.c
@@ -79,6 +79,8 @@  static struct sk_buff *esp6_gro_receive(struct list_head *head,
 		if (!x)
 			goto out_reset;
 
+		skb->mark = xfrm_smark_get(skb->mark, x);
+
 		sp->xvec[sp->len++] = x;
 		sp->olen++;