|
@@ -890,7 +890,7 @@ xfrm_stateonly_find(struct net *net, u32 mark,
|
|
|
unsigned int h;
|
|
unsigned int h;
|
|
|
struct xfrm_state *rx = NULL, *x = NULL;
|
|
struct xfrm_state *rx = NULL, *x = NULL;
|
|
|
|
|
|
|
|
- spin_lock(&net->xfrm.xfrm_state_lock);
|
|
|
|
|
|
|
+ spin_lock_bh(&net->xfrm.xfrm_state_lock);
|
|
|
h = xfrm_dst_hash(net, daddr, saddr, reqid, family);
|
|
h = xfrm_dst_hash(net, daddr, saddr, reqid, family);
|
|
|
hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) {
|
|
hlist_for_each_entry(x, net->xfrm.state_bydst+h, bydst) {
|
|
|
if (x->props.family == family &&
|
|
if (x->props.family == family &&
|
|
@@ -908,7 +908,7 @@ xfrm_stateonly_find(struct net *net, u32 mark,
|
|
|
|
|
|
|
|
if (rx)
|
|
if (rx)
|
|
|
xfrm_state_hold(rx);
|
|
xfrm_state_hold(rx);
|
|
|
- spin_unlock(&net->xfrm.xfrm_state_lock);
|
|
|
|
|
|
|
+ spin_unlock_bh(&net->xfrm.xfrm_state_lock);
|
|
|
|
|
|
|
|
|
|
|
|
|
return rx;
|
|
return rx;
|