diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2006-08-09 23:52:04 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-08-09 23:52:04 (GMT) |
commit | 06aebfb7faa13258af5230ff3d1587ece6c0250e (patch) | |
tree | 8d2703662be840f8e64084d42706b1e4e5a354c9 /net/ipv6 | |
parent | 79860a9a79a17f1bed0713680a3995467405ba49 (diff) | |
download | linux-06aebfb7faa13258af5230ff3d1587ece6c0250e.tar.xz |
[IPV6]: The ifa lock is a BH lock
The ifa lock is expected to be taken in BH context (by addrconf timers)
so we must disable BH when accessing it from user context.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/addrconf.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 8ea1e36..0c5042e 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -1909,11 +1909,11 @@ static int inet6_addr_add(int ifindex, struct in6_addr *pfx, int plen, ifp = ipv6_add_addr(idev, pfx, plen, scope, ifa_flags); if (!IS_ERR(ifp)) { - spin_lock(&ifp->lock); + spin_lock_bh(&ifp->lock); ifp->valid_lft = valid_lft; ifp->prefered_lft = prefered_lft; ifp->tstamp = jiffies; - spin_unlock(&ifp->lock); + spin_unlock_bh(&ifp->lock); addrconf_dad_start(ifp, 0); in6_ifa_put(ifp); |