ipv6: properly prevent temp_prefered_lft sysctl race
authorJiri Bohac <jbohac@suse.cz>
Thu, 20 Oct 2016 10:29:26 +0000 (12:29 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 20 Oct 2016 18:29:11 +0000 (14:29 -0400)
commit7aa8e63f0d0f2e0ae353632bca1ce75a258696c6
tree296d579460ec8de98617fd4c63945f4cf4db2aae
parent8be0328e52dc2c8c6f61563c9ccc95ae4d63e9ce
ipv6: properly prevent temp_prefered_lft sysctl race

The check for an underflow of tmp_prefered_lft is always false
because tmp_prefered_lft is unsigned. The intention of the check
was to guard against racing with an update of the
temp_prefered_lft sysctl, potentially resulting in an underflow.

As suggested by David Miller, the best way to prevent the race is
by reading the sysctl variable using READ_ONCE.

Signed-off-by: Jiri Bohac <jbohac@suse.cz>
Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Fixes: 76506a986dc3 ("IPv6: fix DESYNC_FACTOR")
Signed-off-by: David S. Miller <davem@davemloft.net>
net/ipv6/addrconf.c