Skip to contentSkip to conversation

Patch "sock, diag: fix panic in sock_diag_put_filterinfo" has been added to the 4.2-stable tree

PATCH [email protected] 1 participant 1 message Sep 30, 2015

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

sock, diag: fix panic in sock_diag_put_filterinfo

to the 4.2-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
sock-diag-fix-panic-in-sock_diag_put_filterinfo.patch
and it can be found in the queue-4.2 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo@baz Wed Sep 30 05:25:07 CEST 2015

From: Daniel Borkmann <[email protected]>
Date: Wed, 2 Sep 2015 14:00:36 +0200
Subject: sock, diag: fix panic in sock_diag_put_filterinfo

From: Daniel Borkmann <[email protected]>

[ Upstream commit b382c08656000c12a146723a153b85b13a855b49 ]

diag socket's sock_diag_put_filterinfo() dumps classic BPF programs upon request to user space (ss -0 -b). However, native eBPF programs attached to sockets (SO_ATTACH_BPF) cannot be dumped with this method:

Their orig_prog is always NULL. However, sock_diag_put_filterinfo() unconditionally tries to access its filter length resp. wants to copy the filter insns from there. Internal cBPF to eBPF transformations attached to sockets don't have this issue, as orig_prog state is kept.

It's currently only used by packet sockets. If we would want to add native eBPF support in the future, this needs to be done through a different attribute than PACKET_DIAG_FILTER to not confuse possible user space disassemblers that work on diag data.

Fixes 89aa075832b0 ("net: sock: allow eBPF programs to be attached to sockets")
---
 net/core/sock_diag.c |    3 +++
 1 file changed, 3 insertions(+)
net/core/sock_diag.c +3 -0
@@ -90,6 +90,9 @@ int sock_diag_put_filterinfo(bool may_re
 		goto out;
 
 	fprog = filter->prog->orig_prog;
+	if (!fprog)
+		goto out;
+
 	flen = bpf_classic_proglen(fprog);
 
 	attr = nla_reserve(skb, attrtype, flen);

Patches currently in stable-queue which might be from [email protected] are

queue-4.2/ipv6-fix-exthdrs-offload-registration-in-out_rt-path.patch queue-4.2/sock-diag-fix-panic-in-sock_diag_put_filterinfo.patch queue-4.2/netlink-mmap-transform-mmap-skb-into-full-skb-on-taps.patch