Commit 81c2bdb6 authored by David S. Miller's avatar David S. Miller

Merge branch 'batman-adv/merge-oopsonly' of git://git.open-mesh.org/ecsv/linux-merge

parents 709b46e8 1181e1da
...@@ -64,6 +64,7 @@ static void free_info(struct kref *ref) ...@@ -64,6 +64,7 @@ static void free_info(struct kref *ref)
spin_unlock_bh(&bat_priv->vis_list_lock); spin_unlock_bh(&bat_priv->vis_list_lock);
kfree_skb(info->skb_packet); kfree_skb(info->skb_packet);
kfree(info);
} }
/* Compare two vis packets, used by the hashing algorithm */ /* Compare two vis packets, used by the hashing algorithm */
...@@ -268,10 +269,10 @@ int vis_seq_print_text(struct seq_file *seq, void *offset) ...@@ -268,10 +269,10 @@ int vis_seq_print_text(struct seq_file *seq, void *offset)
buff_pos += sprintf(buff + buff_pos, "%pM,", buff_pos += sprintf(buff + buff_pos, "%pM,",
entry->addr); entry->addr);
for (i = 0; i < packet->entries; i++) for (j = 0; j < packet->entries; j++)
buff_pos += vis_data_read_entry( buff_pos += vis_data_read_entry(
buff + buff_pos, buff + buff_pos,
&entries[i], &entries[j],
entry->addr, entry->addr,
entry->primary); entry->primary);
...@@ -444,7 +445,7 @@ static struct vis_info *add_packet(struct bat_priv *bat_priv, ...@@ -444,7 +445,7 @@ static struct vis_info *add_packet(struct bat_priv *bat_priv,
info); info);
if (hash_added < 0) { if (hash_added < 0) {
/* did not work (for some reason) */ /* did not work (for some reason) */
kref_put(&old_info->refcount, free_info); kref_put(&info->refcount, free_info);
info = NULL; info = NULL;
} }
...@@ -815,7 +816,7 @@ static void send_vis_packets(struct work_struct *work) ...@@ -815,7 +816,7 @@ static void send_vis_packets(struct work_struct *work)
container_of(work, struct delayed_work, work); container_of(work, struct delayed_work, work);
struct bat_priv *bat_priv = struct bat_priv *bat_priv =
container_of(delayed_work, struct bat_priv, vis_work); container_of(delayed_work, struct bat_priv, vis_work);
struct vis_info *info, *temp; struct vis_info *info;
spin_lock_bh(&bat_priv->vis_hash_lock); spin_lock_bh(&bat_priv->vis_hash_lock);
purge_vis_packets(bat_priv); purge_vis_packets(bat_priv);
...@@ -825,8 +826,9 @@ static void send_vis_packets(struct work_struct *work) ...@@ -825,8 +826,9 @@ static void send_vis_packets(struct work_struct *work)
send_list_add(bat_priv, bat_priv->my_vis_info); send_list_add(bat_priv, bat_priv->my_vis_info);
} }
list_for_each_entry_safe(info, temp, &bat_priv->vis_send_list, while (!list_empty(&bat_priv->vis_send_list)) {
send_list) { info = list_first_entry(&bat_priv->vis_send_list,
typeof(*info), send_list);
kref_get(&info->refcount); kref_get(&info->refcount);
spin_unlock_bh(&bat_priv->vis_hash_lock); spin_unlock_bh(&bat_priv->vis_hash_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment