packet: fix tp_reserve race in packet_set_ring
authorWillem de Bruijn <willemb@google.com>
Thu, 10 Aug 2017 16:41:58 +0000 (12:41 -0400)
committerBen Hutchings <ben@decadent.org.uk>
Sat, 26 Aug 2017 01:14:06 +0000 (02:14 +0100)
commit8f716035da0ad35d5a65668eb3c10aad6c439d7b
tree94be4741a38a53a6b340f3a9194fcc36c3f71d40
parent3557f62ec91e10cb2ac8e5f312bec0977d67803f
packet: fix tp_reserve race in packet_set_ring

commit c27927e372f0785f3303e8fad94b85945e2c97b7 upstream.

Updates to tp_reserve can race with reads of the field in
packet_set_ring. Avoid this by holding the socket lock during
updates in setsockopt PACKET_RESERVE.

This bug was discovered by syzkaller.

Fixes: 8913336a7e8d ("packet: add PACKET_RESERVE sockopt")
Reported-by: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/packet/af_packet.c