Re: [PATCH net-next 1/2] ieee802154: sparse warnings: make symbols static
From: Alexander Smirnov <hidden>
Date: 2012-07-04 13:38:50
Hi Eric, just a several questions:
quoted
quoted
static DEFINE_SPINLOCK(flist_lock);and of course commit 768f7c7c121e80f4 (6lowpan: add missing spin_lock_init() ) must be reverted.
Do I need to create 2 separate patches: one for revert and second to initialize spinlock correctly, or I can combine these changes in one patch?
You should validate this code with LOCKDEP
Nothing was shown by LOCKDEP for 6lowpan. :-( I've selected the following options: -*- Spinlock and rw-lock debugging: basic checks -*- Mutex debugging: basic checks -*- Lock debugging: detect incorrect freeing of live locks [*] Lock usage statistics [*] Lock dependency engine debugging
lowpan_dellink() does a spin_lock(&flist_lock); while same lock can be taken by lowpan_fragment_timer_expired() from timer irq, -> deadlock.
What would be the best way to solve this context mismatch? Can I do something like following: 1. create some 6lowpan internal workqueue 2. replace lowpan_fragment_timer_expired() body by queue_work() with current list_deleting routine 3. when 6lowpan is going to be deleted - I'll flush the queue and remove all the timers and respective fragments Alex