Thanks for making these efforts to debug this. Ketan: can we try replace the one BUG_ON with two WARN_ON  to confirm the exact faulty condition? I wish I can do that myself but I don't have a box at hand.

Yuchung

On Sun, Jan 13, 2013 at 1:39 PM, Felix Fietkau <nbd@openwrt.org> wrote:
On 2013-01-13 7:03 PM, Eric Dumazet wrote:
> I suspect a bug in the spin_is_locked() implementation on your arch, as
> he socket lock should be held at this point.
I don't think this is an arch implementation bug, this probably happens
on all !SMP systems. See this bit from include/linux/spinlock_up.h:

#define arch_spin_is_locked(lock)   ((void)(lock), 0)

- Felix