diff options
Diffstat (limited to 'net/xfrm/xfrm_state.c')
| -rw-r--r-- | net/xfrm/xfrm_state.c | 6 | 
1 files changed, 3 insertions, 3 deletions
diff --git a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c index f5e39e35d73a..9895a8c56d8c 100644 --- a/net/xfrm/xfrm_state.c +++ b/net/xfrm/xfrm_state.c @@ -927,8 +927,8 @@ struct xfrm_state *xfrm_state_lookup_byspi(struct net *net, __be32 spi,  			x->id.spi != spi)  			continue; -		spin_unlock_bh(&net->xfrm.xfrm_state_lock);  		xfrm_state_hold(x); +		spin_unlock_bh(&net->xfrm.xfrm_state_lock);  		return x;  	}  	spin_unlock_bh(&net->xfrm.xfrm_state_lock); @@ -1626,7 +1626,7 @@ int xfrm_state_walk(struct net *net, struct xfrm_state_walk *walk,  	if (list_empty(&walk->all))  		x = list_first_entry(&net->xfrm.state_all, struct xfrm_state_walk, all);  	else -		x = list_entry(&walk->all, struct xfrm_state_walk, all); +		x = list_first_entry(&walk->all, struct xfrm_state_walk, all);  	list_for_each_entry_from(x, &net->xfrm.state_all, all) {  		if (x->state == XFRM_STATE_DEAD)  			continue; @@ -1908,7 +1908,7 @@ int xfrm_state_register_afinfo(struct xfrm_state_afinfo *afinfo)  		return -EAFNOSUPPORT;  	spin_lock_bh(&xfrm_state_afinfo_lock);  	if (unlikely(xfrm_state_afinfo[afinfo->family] != NULL)) -		err = -ENOBUFS; +		err = -EEXIST;  	else  		rcu_assign_pointer(xfrm_state_afinfo[afinfo->family], afinfo);  	spin_unlock_bh(&xfrm_state_afinfo_lock);  |