Revert "net: Make accesses to ->br_port safe for sparse RCU"
This reverts commit81bdf5bd73
, which is obsoleted by commitf350a0a873
from the net tree.
This commit is contained in:
parent
0a54cec0c2
commit
a53f4b61a7
8 changed files with 10 additions and 18 deletions
|
@ -101,9 +101,6 @@ struct __fdb_entry {
|
||||||
|
|
||||||
#include <linux/netdevice.h>
|
#include <linux/netdevice.h>
|
||||||
|
|
||||||
/* br_handle_frame_hook() needs the following forward declaration. */
|
|
||||||
struct net_bridge_port;
|
|
||||||
|
|
||||||
extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
|
extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
|
||||||
extern struct sk_buff *(*br_handle_frame_hook)(struct net_bridge_port *p,
|
extern struct sk_buff *(*br_handle_frame_hook)(struct net_bridge_port *p,
|
||||||
struct sk_buff *skb);
|
struct sk_buff *skb);
|
||||||
|
|
|
@ -244,7 +244,7 @@ int br_fdb_test_addr(struct net_device *dev, unsigned char *addr)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
fdb = __br_fdb_get(br_port(dev)->br, addr);
|
fdb = __br_fdb_get(dev->br_port->br, addr);
|
||||||
ret = fdb && fdb->dst->dev != dev &&
|
ret = fdb && fdb->dst->dev != dev &&
|
||||||
fdb->dst->state == BR_STATE_FORWARDING;
|
fdb->dst->state == BR_STATE_FORWARDING;
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
|
@ -268,11 +268,6 @@ static inline int br_is_root_bridge(const struct net_bridge *br)
|
||||||
return !memcmp(&br->bridge_id, &br->designated_root, 8);
|
return !memcmp(&br->bridge_id, &br->designated_root, 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline struct net_bridge_port *br_port(const struct net_device *dev)
|
|
||||||
{
|
|
||||||
return rcu_dereference(dev->br_port);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* br_device.c */
|
/* br_device.c */
|
||||||
extern void br_dev_setup(struct net_device *dev);
|
extern void br_dev_setup(struct net_device *dev);
|
||||||
extern netdev_tx_t br_dev_xmit(struct sk_buff *skb,
|
extern netdev_tx_t br_dev_xmit(struct sk_buff *skb,
|
||||||
|
|
|
@ -25,7 +25,7 @@ ebt_redirect_tg(struct sk_buff *skb, const struct xt_action_param *par)
|
||||||
|
|
||||||
if (par->hooknum != NF_BR_BROUTING)
|
if (par->hooknum != NF_BR_BROUTING)
|
||||||
memcpy(eth_hdr(skb)->h_dest,
|
memcpy(eth_hdr(skb)->h_dest,
|
||||||
br_port(par->in)->br->dev->dev_addr, ETH_ALEN);
|
par->in->br_port->br->dev->dev_addr, ETH_ALEN);
|
||||||
else
|
else
|
||||||
memcpy(eth_hdr(skb)->h_dest, par->in->dev_addr, ETH_ALEN);
|
memcpy(eth_hdr(skb)->h_dest, par->in->dev_addr, ETH_ALEN);
|
||||||
skb->pkt_type = PACKET_HOST;
|
skb->pkt_type = PACKET_HOST;
|
||||||
|
|
|
@ -178,7 +178,7 @@ static void ebt_ulog_packet(unsigned int hooknr, const struct sk_buff *skb,
|
||||||
strcpy(pm->physindev, in->name);
|
strcpy(pm->physindev, in->name);
|
||||||
/* If in isn't a bridge, then physindev==indev */
|
/* If in isn't a bridge, then physindev==indev */
|
||||||
if (in->br_port)
|
if (in->br_port)
|
||||||
strcpy(pm->indev, br_port(in)->br->dev->name);
|
strcpy(pm->indev, in->br_port->br->dev->name);
|
||||||
else
|
else
|
||||||
strcpy(pm->indev, in->name);
|
strcpy(pm->indev, in->name);
|
||||||
} else
|
} else
|
||||||
|
@ -187,7 +187,7 @@ static void ebt_ulog_packet(unsigned int hooknr, const struct sk_buff *skb,
|
||||||
if (out) {
|
if (out) {
|
||||||
/* If out exists, then out is a bridge port */
|
/* If out exists, then out is a bridge port */
|
||||||
strcpy(pm->physoutdev, out->name);
|
strcpy(pm->physoutdev, out->name);
|
||||||
strcpy(pm->outdev, br_port(out)->br->dev->name);
|
strcpy(pm->outdev, out->br_port->br->dev->name);
|
||||||
} else
|
} else
|
||||||
pm->outdev[0] = pm->physoutdev[0] = '\0';
|
pm->outdev[0] = pm->physoutdev[0] = '\0';
|
||||||
|
|
||||||
|
|
|
@ -141,10 +141,10 @@ ebt_basic_match(const struct ebt_entry *e, const struct ethhdr *h,
|
||||||
if (FWINV2(ebt_dev_check(e->out, out), EBT_IOUT))
|
if (FWINV2(ebt_dev_check(e->out, out), EBT_IOUT))
|
||||||
return 1;
|
return 1;
|
||||||
if ((!in || !in->br_port) ? 0 : FWINV2(ebt_dev_check(
|
if ((!in || !in->br_port) ? 0 : FWINV2(ebt_dev_check(
|
||||||
e->logical_in, br_port(in)->br->dev), EBT_ILOGICALIN))
|
e->logical_in, in->br_port->br->dev), EBT_ILOGICALIN))
|
||||||
return 1;
|
return 1;
|
||||||
if ((!out || !out->br_port) ? 0 : FWINV2(ebt_dev_check(
|
if ((!out || !out->br_port) ? 0 : FWINV2(ebt_dev_check(
|
||||||
e->logical_out, br_port(out)->br->dev), EBT_ILOGICALOUT))
|
e->logical_out, out->br_port->br->dev), EBT_ILOGICALOUT))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
if (e->bitmask & EBT_SOURCEMAC) {
|
if (e->bitmask & EBT_SOURCEMAC) {
|
||||||
|
|
|
@ -404,7 +404,7 @@ __build_packet_message(struct nfulnl_instance *inst,
|
||||||
htonl(indev->ifindex));
|
htonl(indev->ifindex));
|
||||||
/* this is the bridge group "brX" */
|
/* this is the bridge group "brX" */
|
||||||
NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_INDEV,
|
NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_INDEV,
|
||||||
htonl(br_port(indev)->br->dev->ifindex));
|
htonl(indev->br_port->br->dev->ifindex));
|
||||||
} else {
|
} else {
|
||||||
/* Case 2: indev is bridge group, we need to look for
|
/* Case 2: indev is bridge group, we need to look for
|
||||||
* physical device (when called from ipv4) */
|
* physical device (when called from ipv4) */
|
||||||
|
@ -431,7 +431,7 @@ __build_packet_message(struct nfulnl_instance *inst,
|
||||||
htonl(outdev->ifindex));
|
htonl(outdev->ifindex));
|
||||||
/* this is the bridge group "brX" */
|
/* this is the bridge group "brX" */
|
||||||
NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_OUTDEV,
|
NLA_PUT_BE32(inst->skb, NFULA_IFINDEX_OUTDEV,
|
||||||
htonl(br_port(outdev)->br->dev->ifindex));
|
htonl(outdev->br_port->br->dev->ifindex));
|
||||||
} else {
|
} else {
|
||||||
/* Case 2: indev is a bridge group, we need to look
|
/* Case 2: indev is a bridge group, we need to look
|
||||||
* for physical device (when called from ipv4) */
|
* for physical device (when called from ipv4) */
|
||||||
|
|
|
@ -297,7 +297,7 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
|
||||||
htonl(indev->ifindex));
|
htonl(indev->ifindex));
|
||||||
/* this is the bridge group "brX" */
|
/* this is the bridge group "brX" */
|
||||||
NLA_PUT_BE32(skb, NFQA_IFINDEX_INDEV,
|
NLA_PUT_BE32(skb, NFQA_IFINDEX_INDEV,
|
||||||
htonl(br_port(indev)->br->dev->ifindex));
|
htonl(indev->br_port->br->dev->ifindex));
|
||||||
} else {
|
} else {
|
||||||
/* Case 2: indev is bridge group, we need to look for
|
/* Case 2: indev is bridge group, we need to look for
|
||||||
* physical device (when called from ipv4) */
|
* physical device (when called from ipv4) */
|
||||||
|
@ -322,7 +322,7 @@ nfqnl_build_packet_message(struct nfqnl_instance *queue,
|
||||||
htonl(outdev->ifindex));
|
htonl(outdev->ifindex));
|
||||||
/* this is the bridge group "brX" */
|
/* this is the bridge group "brX" */
|
||||||
NLA_PUT_BE32(skb, NFQA_IFINDEX_OUTDEV,
|
NLA_PUT_BE32(skb, NFQA_IFINDEX_OUTDEV,
|
||||||
htonl(br_port(outdev)->br->dev->ifindex));
|
htonl(outdev->br_port->br->dev->ifindex));
|
||||||
} else {
|
} else {
|
||||||
/* Case 2: outdev is bridge group, we need to look for
|
/* Case 2: outdev is bridge group, we need to look for
|
||||||
* physical output device (when called from ipv4) */
|
* physical output device (when called from ipv4) */
|
||||||
|
|
Loading…
Add table
Reference in a new issue