On 16/02/14 13:01, Linus Lüssing wrote:
> @@ -371,12 +372,13 @@ static int __batadv_interface_tx(struct sk_buff *skb, \
>
> #ifndef netdev_master_upper_dev_get_rcu
> #define netdev_master_upper_dev_get_rcu(dev) \
> - NULL; \
> + upper; \
> if (dev->priv_flags & IFF_BRIDGE_PORT) { \
> rcu_read_unlock(); \
> dev_hold(dev); \
> return dev; \
> - }
> + } else \
> + dev = NULL;
>
Following your patch the code in multicast.c will become:
172 do {
173 upper = upper;
if (dev->priv_flags & IFF_BRIDGE_PORT) {
rcu_read_unlock();
dev_hold(dev);
return dev;
} else
dev = NULL;
174 } while (upper && !(upper->priv_flags & IFF_EBRIDGE));
am I wrong or this is going to break the while? I think there is a
missing '}'.
What about a simplified version like this:
#define netdev_master_upper_dev_get_rcu(dev) \
- NULL; \
- if (dev->priv_flags & IFF_BRIDGE_PORT) { \
+ ({if (dev->priv_flags & IFF_BRIDGE_PORT) { \
rcu_read_unlock(); \
dev_hold(dev); \
return dev; \
- }
+ }\
+ NULL;})
Cheers,
--
Antonio Quartulli
signature.asc
Description: OpenPGP digital signature
