return afinfo;
 }
 
-static void xfrm_policy_put_afinfo(struct xfrm_policy_afinfo *afinfo)
-{
-       rcu_read_unlock();
-}
-
 static inline struct dst_entry *__xfrm_dst_lookup(struct net *net,
                                                  int tos, int oif,
                                                  const xfrm_address_t *saddr,
 
        dst = afinfo->dst_lookup(net, tos, oif, saddr, daddr);
 
-       xfrm_policy_put_afinfo(afinfo);
+       rcu_read_unlock();
 
        return dst;
 }
        if (unlikely(afinfo == NULL))
                return -EINVAL;
        err = afinfo->get_saddr(net, oif, local, remote);
-       xfrm_policy_put_afinfo(afinfo);
+       rcu_read_unlock();
        return err;
 }
 
        afinfo = xfrm_policy_get_afinfo(family);
        tos = afinfo ? afinfo->get_tos(fl) : 0;
 
-       xfrm_policy_put_afinfo(afinfo);
+       rcu_read_unlock();
 
        return tos;
 }
        } else
                xdst = ERR_PTR(-ENOBUFS);
 
-       xfrm_policy_put_afinfo(afinfo);
+       rcu_read_unlock();
 
        return xdst;
 }
 
        err = afinfo->init_path(path, dst, nfheader_len);
 
-       xfrm_policy_put_afinfo(afinfo);
+       rcu_read_unlock();
 
        return err;
 }
 
        err = afinfo->fill_dst(xdst, dev, fl);
 
-       xfrm_policy_put_afinfo(afinfo);
+       rcu_read_unlock();
 
        return err;
 }
        } else {
                ret = afinfo->blackhole_route(net, dst_orig);
        }
-       xfrm_policy_put_afinfo(afinfo);
+       rcu_read_unlock();
 
        return ret;
 }
 
        afinfo->decode_session(skb, fl, reverse);
        err = security_xfrm_decode_session(skb, &fl->flowi_secid);
-       xfrm_policy_put_afinfo(afinfo);
+       rcu_read_unlock();
        return err;
 }
 EXPORT_SYMBOL(__xfrm_decode_session);