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

Commit cd0bf2d7 authored by Patrick McHardy's avatar Patrick McHardy Committed by David S. Miller
Browse files

[NETFILTER]: Fix rcu race in ipt_REDIRECT

parent e7fa1bd9
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -88,14 +88,18 @@ redirect_target(struct sk_buff **pskb,
		newdst = htonl(0x7F000001);
	else {
		struct in_device *indev;
		struct in_ifaddr *ifa;

		/* Device might not have an associated in_device. */
		indev = (struct in_device *)(*pskb)->dev->ip_ptr;
		if (indev == NULL || indev->ifa_list == NULL)
			return NF_DROP;
		newdst = 0;
		
		rcu_read_lock();
		indev = __in_dev_get((*pskb)->dev);
		if (indev && (ifa = indev->ifa_list))
			newdst = ifa->ifa_local;
		rcu_read_unlock();

		/* Grab first address on interface. */
		newdst = indev->ifa_list->ifa_local;
		if (!newdst)
			return NF_DROP;
	}

	/* Transfer from original range. */