Skip to content

Commit

Permalink
[NETFILTER]: Fix rcu race in ipt_REDIRECT
Browse files Browse the repository at this point in the history
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Patrick McHardy authored and David S. Miller committed Sep 13, 2005
1 parent e7fa1bd commit cd0bf2d
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions net/ipv4/netfilter/ipt_REDIRECT.c
Original file line number Diff line number Diff line change
Expand Up @@ -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. */
Expand Down

0 comments on commit cd0bf2d

Please sign in to comment.