Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 80c0bc9e authored by David S. Miller's avatar David S. Miller
Browse files

xfrm: Kill XFRM_LOOKUP_WAIT flag.



This can be determined from the flow flags instead.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a1414715
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -421,8 +421,7 @@ extern void dst_init(void);

/* Flags for xfrm_lookup flags argument. */
enum {
	XFRM_LOOKUP_WAIT = 1 << 0,
	XFRM_LOOKUP_ICMP = 1 << 1,
	XFRM_LOOKUP_ICMP = 1 << 0,
};

struct flowi;
+3 −2
Original line number Diff line number Diff line
@@ -1233,8 +1233,9 @@ int dn_route_output_sock(struct dst_entry **pprt, struct flowi *fl, struct sock

	err = __dn_route_output_key(pprt, fl, flags & MSG_TRYHARD);
	if (err == 0 && fl->proto) {
		err = xfrm_lookup(&init_net, pprt, fl, sk,
				 (flags & MSG_DONTWAIT) ? 0 : XFRM_LOOKUP_WAIT);
		if (!(flags & MSG_DONTWAIT))
			fl->flags |= FLOWI_FLAG_CAN_SLEEP;
		err = xfrm_lookup(&init_net, pprt, fl, sk, 0);
	}
	return err;
}
+1 −3
Original line number Diff line number Diff line
@@ -2732,9 +2732,7 @@ int ip_route_output_flow(struct net *net, struct rtable **rp, struct flowi *flp,
			flp->fl4_src = (*rp)->rt_src;
		if (!flp->fl4_dst)
			flp->fl4_dst = (*rp)->rt_dst;
		err = __xfrm_lookup(net, (struct dst_entry **)rp, flp, sk,
				    ((flp->flags & FLOWI_FLAG_CAN_SLEEP) ?
				     XFRM_LOOKUP_WAIT : 0));
		err = __xfrm_lookup(net, (struct dst_entry **)rp, flp, sk, 0);
		if (err == -EREMOTE)
			err = ipv4_dst_blackhole(net, rp, flp);

+2 −2
Original line number Diff line number Diff line
@@ -1027,7 +1027,7 @@ struct dst_entry *ip6_dst_lookup_flow(struct sock *sk, struct flowi *fl,
		ipv6_addr_copy(&fl->fl6_dst, final_dst);
	if (can_sleep) {
		fl->flags |= FLOWI_FLAG_CAN_SLEEP;
		err = __xfrm_lookup(sock_net(sk), &dst, fl, sk, XFRM_LOOKUP_WAIT);
		err = __xfrm_lookup(sock_net(sk), &dst, fl, sk, 0);
		if (err == -EREMOTE)
			err = ip6_dst_blackhole(sk, &dst, fl);
		if (err)
@@ -1072,7 +1072,7 @@ struct dst_entry *ip6_sk_dst_lookup_flow(struct sock *sk, struct flowi *fl,
		ipv6_addr_copy(&fl->fl6_dst, final_dst);
	if (can_sleep) {
		fl->flags |= FLOWI_FLAG_CAN_SLEEP;
		err = __xfrm_lookup(sock_net(sk), &dst, fl, sk, XFRM_LOOKUP_WAIT);
		err = __xfrm_lookup(sock_net(sk), &dst, fl, sk, 0);
		if (err == -EREMOTE)
			err = ip6_dst_blackhole(sk, &dst, fl);
		if (err)
+1 −1
Original line number Diff line number Diff line
@@ -1831,7 +1831,7 @@ int __xfrm_lookup(struct net *net, struct dst_entry **dst_p,
			XFRM_INC_STATS(net, LINUX_MIB_XFRMOUTNOSTATES);
			return -EREMOTE;
		}
		if (flags & XFRM_LOOKUP_WAIT) {
		if (fl->flags & FLOWI_FLAG_CAN_SLEEP) {
			DECLARE_WAITQUEUE(wait, current);

			add_wait_queue(&net->xfrm.km_waitq, &wait);