However are you taking some semaphore/scheduling, while in_interrupt is true?
i checked this in_interrupt() in the handler i.e my work that is queued (bottom half) which ideally should not be any positive value since it is not running in interrupt context. however i see it returns a positive value.
ya i do take spinlock. it should not be a problem right since we have the context now !!! with work queues.
regards
Srinivas