summaryrefslogtreecommitdiffstats
path: root/fs/ufs/util.c
diff options
context:
space:
mode:
authorCraig Gallek <kraig@google.com>2017-10-19 15:00:29 -0400
committerDavid S. Miller <davem@davemloft.net>2017-10-22 02:03:51 +0100
commit1b5f962e71bfad6284574655c406597535c3ea7a (patch)
tree2f96c8a5f8251654c8aaf3874681cd04c02b24e8 /fs/ufs/util.c
parent66c54517540cedf5a22911c6b7f5c7d8b5d1e1be (diff)
downloadlinux-1b5f962e71bfad6284574655c406597535c3ea7a.tar.gz
linux-1b5f962e71bfad6284574655c406597535c3ea7a.tar.bz2
linux-1b5f962e71bfad6284574655c406597535c3ea7a.zip
soreuseport: fix initialization race
Syzkaller stumbled upon a way to trigger WARNING: CPU: 1 PID: 13881 at net/core/sock_reuseport.c:41 reuseport_alloc+0x306/0x3b0 net/core/sock_reuseport.c:39 There are two initialization paths for the sock_reuseport structure in a socket: Through the udp/tcp bind paths of SO_REUSEPORT sockets or through SO_ATTACH_REUSEPORT_[CE]BPF before bind. The existing implementation assumedthat the socket lock protected both of these paths when it actually only protects the SO_ATTACH_REUSEPORT path. Syzkaller triggered this double allocation by running these paths concurrently. This patch moves the check for double allocation into the reuseport_alloc function which is protected by a global spin lock. Fixes: e32ea7e74727 ("soreuseport: fast reuseport UDP socket selection") Fixes: c125e80b8868 ("soreuseport: fast reuseport TCP socket selection") Signed-off-by: Craig Gallek <kraig@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'fs/ufs/util.c')
0 files changed, 0 insertions, 0 deletions