]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
bpf: sk_msg, fix socket data_ready events
authorJohn Fastabend <john.fastabend@gmail.com>
Thu, 20 Dec 2018 19:35:33 +0000 (11:35 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Feb 2019 19:02:26 +0000 (20:02 +0100)
commit47c12a8a77e129fa934226af414a38043ab69d46
treed7642daba52c8a29a25bd6472ed974916b6d23e6
parenta802513bff9657bbc60aea34f8932692f3c471eb
bpf: sk_msg, fix socket data_ready events

[ Upstream commit 552de91068828daef50a227a665068cf8dde835e ]

When a skb verdict program is in-use and either another BPF program
redirects to that socket or the new SK_PASS support is used the
data_ready callback does not wake up application. Instead because
the stream parser/verdict is using the sk data_ready callback we wake
up the stream parser/verdict block.

Fix this by adding a helper to check if the stream parser block is
enabled on the sk and if so call the saved pointer which is the
upper layers wake up function.

This fixes application stalls observed when an application is waiting
for data in a blocking read().

Fixes: d829e9c4112b ("tls: convert to generic sk_msg interface")
Signed-off-by: John Fastabend <john.fastabend@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
include/linux/skmsg.h
net/core/skmsg.c
net/ipv4/tcp_bpf.c