All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2,bpf-next] bpf: Don't redirect packets with invalid pkt_len
@ 2022-07-14  6:09 Zhengchao Shao
  2022-07-14 18:22 ` Stanislav Fomichev
  0 siblings, 1 reply; 4+ messages in thread
From: Zhengchao Shao @ 2022-07-14  6:09 UTC (permalink / raw)
  To: bpf, netdev, linux-kernel, davem, edumazet, kuba, pabeni, hawk
  Cc: ast, daniel, andrii, martin.lau, song, yhs, john.fastabend,
	kpsingh, sdf, weiyongjun1, yuehaibing, shaozhengchao

Syzbot found an issue [1]: fq_codel_drop() try to drop a flow whitout any
skbs, that is, the flow->head is null.
The root cause, as the [2] says, is because that bpf_prog_test_run_skb()
run a bpf prog which redirects empty skbs.
So we should determine whether the length of the packet modified by bpf
prog is valid before forwarding it directly.

LINK: [1] https://syzkaller.appspot.com/bug?id=0b84da80c2917757915afa89f7738a9d16ec96c5
LINK: [2] https://www.spinics.net/lists/netdev/msg777503.html

Reported-by: syzbot+7a12909485b94426aceb@syzkaller.appspotmail.com
Signed-off-by: Zhengchao Shao <shaozhengchao@huawei.com>
---
v1: should not check len in fast path

 net/bpf/test_run.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c
index 2ca96acbc50a..750d7d173a20 100644
--- a/net/bpf/test_run.c
+++ b/net/bpf/test_run.c
@@ -1152,6 +1152,12 @@ int bpf_prog_test_run_skb(struct bpf_prog *prog, const union bpf_attr *kattr,
 	ret = convert___skb_to_skb(skb, ctx);
 	if (ret)
 		goto out;
+
+	if (skb->len == 0) {
+		ret = -EINVAL;
+		goto out;
+	}
+
 	ret = bpf_test_run(prog, skb, repeat, &retval, &duration, false);
 	if (ret)
 		goto out;
-- 
2.17.1


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

end of thread, other threads:[~2022-07-14 21:26 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-14  6:09 [PATCH v2,bpf-next] bpf: Don't redirect packets with invalid pkt_len Zhengchao Shao
2022-07-14 18:22 ` Stanislav Fomichev
2022-07-14 20:39   ` Daniel Borkmann
2022-07-14 21:26     ` Stanislav Fomichev

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.