Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=a050c33f4a4d5babaf94a8ba6ae7a200135240b3
Commit:     a050c33f4a4d5babaf94a8ba6ae7a200135240b3
Parent:     abf07acbb9f122218095d0d221e0f949160ccc37
Author:     Daniel Lezcano <[EMAIL PROTECTED]>
AuthorDate: Wed Sep 12 14:57:09 2007 +0200
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Wed Oct 10 16:49:18 2007 -0700

    [NETNS]: Fix bad macro definition.
    
    The macro definition is bad. When calling next_net_device with
    parameter name "dev", the resulting code is:
          struct net_device *dev = dev and that leads to an unexpected
    behavior. Especially when llc_core is compiled in, the kernel panics
    at boot time.
    The patchset change macro definition with static inline functions as
    they were defined before.
    
    Signed-off-by: Benjamin Thery <[EMAIL PROTECTED]>
    Signed-off-by: Daniel Lezcano <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 include/linux/netdevice.h |   35 +++++++++++++++++------------------
 1 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 407658c..625240c 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -41,7 +41,8 @@
 #include <linux/dmaengine.h>
 #include <linux/workqueue.h>
 
-struct net;
+#include <net/net_namespace.h>
+
 struct vlan_group;
 struct ethtool_ops;
 struct netpoll_info;
@@ -753,23 +754,21 @@ extern rwlock_t                           dev_base_lock;  
        /* Device list lock */
                list_for_each_entry_continue(d, &(net)->dev_base_head, dev_list)
 #define net_device_entry(lh)   list_entry(lh, struct net_device, dev_list)
 
-#define next_net_device(d)                                             \
-({                                                                     \
-       struct net_device *dev = d;                                     \
-       struct list_head *lh;                                           \
-       struct net *net;                                                \
-                                                                       \
-       net = dev->nd_net;                                              \
-       lh = dev->dev_list.next;                                        \
-       lh == &net->dev_base_head ? NULL : net_device_entry(lh);        \
-})
-
-#define first_net_device(N)                                    \
-({                                                             \
-       struct net *NET = (N);                                  \
-       list_empty(&NET->dev_base_head) ? NULL :                \
-               net_device_entry(NET->dev_base_head.next);      \
-})
+static inline struct net_device *next_net_device(struct net_device *dev)
+{
+       struct list_head *lh;
+       struct net *net;
+
+       net = dev->nd_net;
+       lh = dev->dev_list.next;
+       return lh == &net->dev_base_head ? NULL : net_device_entry(lh);
+}
+
+static inline struct net_device *first_net_device(struct net *net)
+{
+       return list_empty(&net->dev_base_head) ? NULL :
+               net_device_entry(net->dev_base_head.next);
+}
 
 extern int                     netdev_boot_setup_check(struct net_device *dev);
 extern unsigned long           netdev_boot_base(const char *prefix, int unit);
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to