On Sat, Jun 23, 2012 at 05:30:57 +0200, Antonio Quartulli wrote:
Hello David,
here are two fixes intended for net/linux-3.5.
Patch 1 is a fix for the AP-Isolation feature. A wrong check made all the broadcast packets coming from any client be dropped before delivery to the interface. Patch 2 instead fixes a "real" race condition in the TranslationTable code.
Please, tell me if there is any problem. Thank you, Antonio
The following changes since commit a18e08bdcf845efb7344cea146e683df746bbfb4:
net: sh_eth: fix the condition to fix the cur_tx/dirty_rx (2012-06-22 21:50:37 -0700)
are available in the git repository at:
git://git.open-mesh.org/linux-merge.git batman-adv/maint
for you to fetch changes up to 8b8e4bc0391f8abbcdb9e1c54415bcc0f4f5a2a0:
batman-adv: fix race condition in TT full-table replacement (2012-06-23 17:21:35 +0200)
Hello David,
after pulling these patchset in net, you should hit a conflict while trying to merge net into net-next. The conflict is caused by the renaming patches that you already have in the next tree.
Here are our instructions about how to solve it. Hope they will help. Thank you.
Conflict 1: <<<<<<< orig_entry = container_of(rcu, struct batadv_tt_orig_list_entry, rcu); atomic_dec(&orig_entry->orig_node->tt_size); batadv_orig_node_free_ref(orig_entry->orig_node); ======= orig_entry = container_of(rcu, struct tt_orig_list_entry, rcu); orig_node_free_ref(orig_entry->orig_node);
>
Resolves to: ======= orig_entry = container_of(rcu, struct batadv_tt_orig_list_entry, rcu); batadv_orig_node_free_ref(orig_entry->orig_node); =======
Conflict 2: <<<<<<< call_rcu(&orig_entry->rcu, batadv_tt_orig_list_entry_free_rcu); ======= /* to avoid race conditions, immediately decrease the tt counter */ atomic_dec(&orig_entry->orig_node->tt_size); call_rcu(&orig_entry->rcu, batadv_tt_orig_list_entry_free_rcu);
>
Resolves to: ======= /* to avoid race conditions, immediately decrease the tt counter */ atomic_dec(&orig_entry->orig_node->tt_size); call_rcu(&orig_entry->rcu, batadv_tt_orig_list_entry_free_rcu); =======
Conflict 3: <<<<<<< struct batadv_tt_local_entry *tt_local_entry = NULL; struct batadv_tt_global_entry *tt_global_entry = NULL; bool ret = true; ======= struct tt_local_entry *tt_local_entry = NULL; struct tt_global_entry *tt_global_entry = NULL; bool ret = false;
>
Resolves to: ======= struct batadv_tt_local_entry *tt_local_entry = NULL; struct batadv_tt_global_entry *tt_global_entry = NULL; bool ret = false; =======
Conflict 4: <<<<<<< if (_batadv_is_ap_isolated(tt_local_entry, tt_global_entry)) ======= if (!_is_ap_isolated(tt_local_entry, tt_global_entry))
>
Resolves to: ======= if (!_batadv_is_ap_isolated(tt_local_entry, tt_global_entry)) =======