xfrm: fix rcu_read_unlock usage in xfrm_local_error
authorTaehee Yoo <ap420073@gmail.com>
Fri, 16 Mar 2018 02:35:51 +0000 (11:35 +0900)
committerSteffen Klassert <steffen.klassert@secunet.com>
Fri, 16 Mar 2018 07:26:02 +0000 (08:26 +0100)
In the xfrm_local_error, rcu_read_unlock should be called when afinfo
is not NULL. because xfrm_state_get_afinfo calls rcu_read_unlock
if afinfo is NULL.

Fixes: af5d27c4e12b ("xfrm: remove xfrm_state_put_afinfo")
Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_output.c

index 2346867..89b178a 100644 (file)
@@ -285,8 +285,9 @@ void xfrm_local_error(struct sk_buff *skb, int mtu)
                return;
 
        afinfo = xfrm_state_get_afinfo(proto);
-       if (afinfo)
+       if (afinfo) {
                afinfo->local_error(skb, mtu);
-       rcu_read_unlock();
+               rcu_read_unlock();
+       }
 }
 EXPORT_SYMBOL_GPL(xfrm_local_error);