packet: compat support for sock_fprog
authorWillem de Bruijn <willemb@google.com>
Tue, 7 Jun 2016 16:06:34 +0000 (12:06 -0400)
committerDavid S. Miller <davem@davemloft.net>
Fri, 10 Jun 2016 06:41:03 +0000 (23:41 -0700)
commit719c44d340beeecd22cbda91b00ef55585b3c1a0
tree5e53d5a92c7548ee9464b2133ad4651c23871297
parentca8bdaf13abbdcbb12ff12164aa2d5b522ec524d
packet: compat support for sock_fprog

Socket option PACKET_FANOUT_DATA takes a struct sock_fprog as argument
if PACKET_FANOUT has mode PACKET_FANOUT_CBPF. This structure contains
a pointer into user memory. If userland is 32-bit and kernel is 64-bit
the two disagree about the layout of struct sock_fprog.

Add compat setsockopt support to convert a 32-bit compat_sock_fprog to
a 64-bit sock_fprog. This is analogous to compat_sock_fprog support for
SO_REUSEPORT added in commit 1957598840f4 ("soreuseport: add compat
case for setsockopt SO_ATTACH_REUSEPORT_CBPF").

Reported-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Willem de Bruijn <willemb@google.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/compat.h
net/compat.c
net/packet/af_packet.c