]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
sparc64: vds kernel BUG at fs/buffer.c:1269!
authorBijan Mottahedeh <bijan.mottahedeh@oracle.com>
Thu, 28 Jul 2016 15:34:18 +0000 (11:34 -0400)
committerAllen Pais <allen.pais@oracle.com>
Thu, 15 Sep 2016 06:40:31 +0000 (12:10 +0530)
Orabug: 24376791

Interrupts must be enabled before the fini call.

Signed-off-by: Bijan Mottahedeh <bijan.mottahedeh@oracle.com>
Signed-off-by: Allen Pais <allen.pais@oracle.com>
drivers/block/vds/vds_main.c

index a58c3f26e4cbc9ff1104c57afc6ec0c698ef6701..a3453181b9516edd66df03ecf6e8d61e9a31f7af 100644 (file)
@@ -464,8 +464,15 @@ static void vds_reset(struct vds_io *io)
 
        io->flags |= VDS_IO_FINI;
 
+       /*
+        * The FS layer asserts interrupts to be enabled and the
+        * fini call may cause IO activity so drop the lock before.
+        * Backend access is protected by a separate lock.
+        */
+       vds_vio_unlock(vio, flags);
        vds_be_fini(port);
 
+       vds_vio_lock(vio, flags);
        vio_link_state_change(vio, LDC_EVENT_RESET);
        vio->desc_buf_len = 0;