um: remove file pointer from ioctl
[pandora-kernel.git] / net / batman-adv / originator.h
index b4b9a09..5cc0110 100644 (file)
 int originator_init(struct bat_priv *bat_priv);
 void originator_free(struct bat_priv *bat_priv);
 void purge_orig_ref(struct bat_priv *bat_priv);
-void orig_node_free_ref(struct kref *refcount);
+void orig_node_free_ref(struct orig_node *orig_node);
 struct orig_node *get_orig_node(struct bat_priv *bat_priv, uint8_t *addr);
 struct neigh_node *create_neighbor(struct orig_node *orig_node,
                                   struct orig_node *orig_neigh_node,
                                   uint8_t *neigh,
-                                  struct batman_if *if_incoming);
+                                  struct hard_iface *if_incoming);
 void neigh_node_free_ref(struct neigh_node *neigh_node);
 int orig_seq_print_text(struct seq_file *seq, void *offset);
-int orig_hash_add_if(struct batman_if *batman_if, int max_if_num);
-int orig_hash_del_if(struct batman_if *batman_if, int max_if_num);
+int orig_hash_add_if(struct hard_iface *hard_iface, int max_if_num);
+int orig_hash_del_if(struct hard_iface *hard_iface, int max_if_num);
 
 
 /* returns 1 if they are the same originator */
@@ -88,8 +88,10 @@ static inline struct orig_node *orig_hash_find(struct bat_priv *bat_priv,
                if (!compare_eth(orig_node, data))
                        continue;
 
+               if (!atomic_inc_not_zero(&orig_node->refcount))
+                       continue;
+
                orig_node_tmp = orig_node;
-               kref_get(&orig_node_tmp->refcount);
                break;
        }
        rcu_read_unlock();