Hi Peter, On ke, 2014-10-15 at 16:46 -0400, Peter Hurley wrote: > That's happening because 6lowpan.c:send_mcast_pkt() is disabling > interrupts with the read_lock_irqsave() before calling send_pkt(). > > It's unclear browsing through the lowpan driver why the > irqflags save/restore read_lock flavors are being used; is there a > place where the bluetooth core is calling the driver in atomic > context (ie., where interrupts are disabled)? > > The devices_lock/bt_6lowpan_devices list looks ideal for > converting to RCU. > > Regards, > Peter Hurley > > PS - list_for_each_entry_safe() is only required when the reference > to the list entry may become invalid _while_ still iterating the list. > So not necessary in peer_lookup_conn(), lookup_peer(), lookup_dev(), > peer_lookup_chan(), peer_lookup_ba(), send_mcast_pkt(), maybe others. > Thanks for the explanations, these were very valuable. I will investigate the RCU conversion and fixes to list handling. Cheers, Jukka -- To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html