diff options
| author | Pengcheng Yang <yangpc@wangsu.com> | 2022-11-29 18:40:39 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2022-12-31 13:14:14 +0100 |
| commit | 6105ed3598e19e419221edad6a0436eb568501c6 (patch) | |
| tree | 4fa44bdbdd006df65aafd0713d3d5cf5b1d5e014 /include/linux | |
| parent | 8786bde11a4f31b63b3036731df0b47337a7a245 (diff) | |
| download | linux-6105ed3598e19e419221edad6a0436eb568501c6.tar.gz linux-6105ed3598e19e419221edad6a0436eb568501c6.tar.bz2 linux-6105ed3598e19e419221edad6a0436eb568501c6.zip | |
bpf, sockmap: Fix missing BPF_F_INGRESS flag when using apply_bytes
[ Upstream commit a351d6087bf7d3d8440d58d3bf244ec64b89394a ]
When redirecting, we use sk_msg_to_ingress() to get the BPF_F_INGRESS
flag from the msg->flags. If apply_bytes is used and it is larger than
the current data being processed, sk_psock_msg_verdict() will not be
called when sendmsg() is called again. At this time, the msg->flags is 0,
and we lost the BPF_F_INGRESS flag.
So we need to save the BPF_F_INGRESS flag in sk_psock and use it when
redirection.
Fixes: 8934ce2fd081 ("bpf: sockmap redirect ingress support")
Signed-off-by: Pengcheng Yang <yangpc@wangsu.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Jakub Sitnicki <jakub@cloudflare.com>
Link: https://lore.kernel.org/bpf/1669718441-2654-3-git-send-email-yangpc@wangsu.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/skmsg.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/skmsg.h b/include/linux/skmsg.h index ba015a77238a..6e18ca234f81 100644 --- a/include/linux/skmsg.h +++ b/include/linux/skmsg.h @@ -83,6 +83,7 @@ struct sk_psock { u32 apply_bytes; u32 cork_bytes; u32 eval; + bool redir_ingress; /* undefined if sk_redir is null */ struct sk_msg *cork; struct sk_psock_progs progs; #if IS_ENABLED(CONFIG_BPF_STREAM_PARSER) |
