On Tue, Jul 17, 2018 at 02:40:04PM -0700, Benedict Wong wrote: > @@ -2301,6 +2322,13 @@ int __xfrm_policy_check(struct sock *sk, int dir, > struct sk_buff *skb, > int reverse; > struct flowi fl; > int xerr_idx = -1; > + const struct xfrm_if_cb *ifcb; > + struct xfrm_if *xi; > + u32 if_id = 0; > + > + rcu_read_lock(); > + ifcb = xfrm_if_get_cb(); > + rcu_read_unlock(); > > reverse = dir & ~XFRM_POLICY_MASK; > dir &= XFRM_POLICY_MASK; > @@ -2325,10 +2353,16 @@ int __xfrm_policy_check(struct sock *sk, int dir, > struct sk_buff *skb, > } > } > > + if (ifcb) { > + xi = ifcb->decode_session(skb); > + if (xi) > + if_id = xi->p.if_id; > + }
The usage of the ifcb pointer should go into the rcu_read_lock section above. Looks good otherwise, nice improvement. Please respin and do an official submission of this patch, I'd like to merge it before I send the pull request for the ipsec-next tree.