mac80211: fix ie memory allocation for scheduled scans
[pandora-kernel.git] / net / ipv6 / ip6_fib.c
index 7548905..4076a0b 100644 (file)
@@ -134,9 +134,9 @@ static __inline__ u32 fib6_new_sernum(void)
 # define BITOP_BE32_SWIZZLE    0
 #endif
 
-static __inline__ __be32 addr_bit_set(void *token, int fn_bit)
+static __inline__ __be32 addr_bit_set(const void *token, int fn_bit)
 {
-       __be32 *addr = token;
+       const __be32 *addr = token;
        /*
         * Here,
         *      1 << ((~fn_bit ^ BITOP_BE32_SWIZZLE) & 0x1f)
@@ -394,10 +394,11 @@ static int inet6_dump_fib(struct sk_buff *skb, struct netlink_callback *cb)
        arg.net = net;
        w->args = &arg;
 
+       rcu_read_lock();
        for (h = s_h; h < FIB6_TABLE_HASHSZ; h++, s_e = 0) {
                e = 0;
                head = &net->ipv6.fib_table_hash[h];
-               hlist_for_each_entry(tb, node, head, tb6_hlist) {
+               hlist_for_each_entry_rcu(tb, node, head, tb6_hlist) {
                        if (e < s_e)
                                goto next;
                        res = fib6_dump_table(tb, skb, cb);
@@ -408,6 +409,7 @@ next:
                }
        }
 out:
+       rcu_read_unlock();
        cb->args[1] = e;
        cb->args[0] = h;
 
@@ -822,7 +824,7 @@ st_failure:
 
 struct lookup_args {
        int             offset;         /* key offset on rt6_info       */
-       struct in6_addr *addr;          /* search key                   */
+       const struct in6_addr   *addr;          /* search key                   */
 };
 
 static struct fib6_node * fib6_lookup_1(struct fib6_node *root,
@@ -881,8 +883,8 @@ static struct fib6_node * fib6_lookup_1(struct fib6_node *root,
        return NULL;
 }
 
-struct fib6_node * fib6_lookup(struct fib6_node *root, struct in6_addr *daddr,
-                              struct in6_addr *saddr)
+struct fib6_node * fib6_lookup(struct fib6_node *root, const struct in6_addr *daddr,
+                              const struct in6_addr *saddr)
 {
        struct fib6_node *fn;
        struct lookup_args args[] = {
@@ -916,7 +918,7 @@ struct fib6_node * fib6_lookup(struct fib6_node *root, struct in6_addr *daddr,
 
 
 static struct fib6_node * fib6_locate_1(struct fib6_node *root,
-                                       struct in6_addr *addr,
+                                       const struct in6_addr *addr,
                                        int plen, int offset)
 {
        struct fib6_node *fn;
@@ -946,8 +948,8 @@ static struct fib6_node * fib6_locate_1(struct fib6_node *root,
 }
 
 struct fib6_node * fib6_locate(struct fib6_node *root,
-                              struct in6_addr *daddr, int dst_len,
-                              struct in6_addr *saddr, int src_len)
+                              const struct in6_addr *daddr, int dst_len,
+                              const struct in6_addr *saddr, int src_len)
 {
        struct fib6_node *fn;