Sven Eckelmann wrote:
Linus Lüssing wrote:
hardif_remove_interfaces() removes all hard interfaces from the hardif_list before freeing and cleaning up any device. However the clean up procedures in orig_hash_del_if() (hardif_remove_interface()->hardif_disable_interface()-> orig_hash_del_if()) need the other interfaces still to be present in the hardif_list. Otherwise it won't renumber any preceding interfaces, which leads to an unhandled kernel paging request in orig_node_del_if()'s "/* copy second part */" due to wrong hard_if->if_num's.
With this commit the interface removal on module shutdown will be down in the same way as removing single interfaces from batman only: One interface will be removed and cleaned at a time.
Signed-off-by: Linus Lüssing linus.luessing@web.de
Please use --patience as requested in http://www.open-mesh.org/wiki/open-mesh/Contribute
Please show us (as part of the commit message) why the information in http://www.open-mesh.org/projects/batman-adv/repository/revisions/132b776c 22c9b71962a3ed9a33e5b6f9218dae1b isn't valid anymore and explain why it is save to use the spin_lock only inside the loop (but it would have to protect the loop in normal situations).
Sry, this was not the correct commit - The commit which fixed a problematic locking behaviour was 5d4b5a4d - but I didn't gave a lockdep output there.
The other question must still be answered.
Btw. what is the status of the sysfs_addrm_finish vs. rtnl_lock patch?
Kind regards, Sven