sparc64: kernel panic -- vds_bh_reset
Orabug:
23199936
The panic is an assertion failure in fs/buffer.c:1269
static inline void check_irqs_on(void)
{
*** BUG_ON(irqs_disabled()); ***
}
The vds reset path calls the backend fini routine which eventually calls
the file close interface:
vds_vio_lock(vio, flags);
vds_be_fini(port);
vds_vio_lock() grabs a spin lock and disables local irqs and thus
the eventual assertion failure.
The fix is to add a new r/w mutex to protect backend state and move the
vds_vio_lock() call after vds_be_fini().
Signed-off-by: Bijan Mottahedeh <bijan.mottahedeh@oracle.com>
Reviewed-by: Liam Merwick <Liam.Merwick@oracle.com>
(cherry picked from commit
6e33112afcdd654ada7c9414a1c4d83278533911)
(cherry picked from commit
e62908110662f009f2449df5faae496ac43a1d65)
Signed-off-by: Allen Pais <allen.pais@oracle.com>