spin_lock -> spin_lock_irqsave and matching unlock
authorDan Cross <crossd@gmail.com>
Mon, 10 Apr 2017 18:47:46 +0000 (14:47 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 17 Apr 2017 18:07:36 +0000 (14:07 -0400)
commit561382a809a228d133f19b098039686f433b10f6
treeb90ae1bff9d3541e9f28fc5de79401b3137bd3c3
parentb69303c4afcaba088fc9d772da7d10430eb02b8b
spin_lock -> spin_lock_irqsave and matching unlock

I discovered a kernel panic when the mlx driver tried
to spinlock an IRQ-saving lock.  This is the result of
a manual audit to look for such bugs and repair them.
Is it all correct?  Who knows.  These drivers are
behemoths and actively searching through all of them
and verifing actual correctness of all locking calls in
all contexts is a big job that, frankly, none of us
have adequate time for at the moment.

Spinlock debugging FTW for pointing the problem out in
the first place.  Arguably, we ought to have separate
structure types for the different kinds of locks so
that this could be a compile time error.

Change-Id: I314c285672d15a5b43e0c2b0cb70b9b259c6c437
Signed-off-by: Dan Cross <crossd@gmail.com>
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/drivers/net/bnx2x/bnx2x_main.c
kern/drivers/net/mlx4/en_netdev.c
kern/drivers/net/mlx4/mlx4_en.h
kern/drivers/net/mlx4/qp.c
kern/drivers/net/mlx4/resource_tracker.c
kern/drivers/net/mlx4/srq.c
kern/drivers/net/mlx4u/qp.c
kern/drivers/net/mlx4u/srq.c