mirror of
https://github.com/SCST-project/scst.git
synced 2026-08-17 20:56:24 +00:00
scst_local: Fix bug in error path
device_unregister() invokes scst_local_release_adapter() and hence unregisters the session. Avoid that it is attempted a second time to unregister the session which would result in a crash. [3656]: scst: scst_unregister_target:680:Target local for template scst_local unregistered successfully [3656]: scst: scst_unregister_target_template:457:Target template scst_local unregistered successfully [3655]: scst_unregister_session:6795:Unregistering session ffff8800071a0000 (wait 0) general protection fault: 0000 [#1] SMP Modules linked in: iscsi_scst(O) scst_vdisk(O) scst(O) ntfs vfat msdos fat ext3 jbd ext2 brd netconsole configfs isofs ib_iser rdma_cm ib_cm iw_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi joydev hid_generic binfmt_misc usbhid hid intel_agp psmouse intel_gtt processor agpgart microcode i2c_piix4 button lp parport ext4 mbcache jbd2 floppy ata_piix zlib_deflate libcrc32c [last unloaded: scst_local] CPU 1 Pid: 3655, comm: scsi_id Tainted: G O 3.6.5-debug+ #1 Bochs Bochs RIP: 0010:[<ffffffffa0221a74>] [<ffffffffa0221a74>] scst_pre_rx_mgmt_cmd+0x64/0x210 [scst] RSP: 0018:ffff88000304d598 EFLAGS: 00010246 RAX: 6b6b6b6b6b6b6b6b RBX: 0000000000000001 RCX: 0000000000000000 RDX: 0000000000000001 RSI: 000000000000000a RDI: ffff8800071a0000 RBP: ffff88000304d5c8 R08: 0000000000000002 R09: 0000000000000000 R10: 000000000000c81d R11: 0000000000000000 R12: ffff8800071a0000 R13: 000000000000000a R14: 0000000000000000 R15: ffff880000000000 FS: 00007fb6fe8c6700(0000) GS:ffff88003e000000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b CR2: 00007f2169286bd0 CR3: 000000001cd26000 CR4: 00000000000006e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 Process scsi_id (pid: 3655, threadinfo ffff88000304c000, task ffff88003d9a0000) Stack: 0000000000000000 0000000000000282 ffff88000304d650 0000000000000000 ffff8800071a0000 dead4ead00000000 ffff88000304d638 ffffffffa0221fdf 0000000000000004 0000000000000000 ffff88000304d5f8 ffffffffa025d6a3 Call Trace: [<ffffffffa0221fdf>] scst_rx_mgmt_fn+0x7f/0x3a0 [scst] [<ffffffffa025d6a3>] ? spin_unlock_irqrestore.constprop.0+0x13/0x20 [scst] [<ffffffffa025d825>] ? debug_print_with_prefix+0x165/0x1f0 [scst] [<ffffffffa022acaa>] scst_rx_mgmt_fn_lun.constprop.34+0x4a/0x60 [scst] [<ffffffffa022adf1>] scst_unregister_session+0x131/0x320 [scst] [<ffffffff812bfce7>] ? device_release+0x27/0xa0 [<ffffffff8120450b>] ? kobject_release+0x8b/0x1d0 [<ffffffff8120438c>] ? kobject_put+0x2c/0x60 [<ffffffff812bfa97>] ? put_device+0x17/0x20 [<ffffffff812de820>] ? scsi_host_dev_release+0xc0/0xe0 [<ffffffff812bfce7>] ? device_release+0x27/0xa0 [<ffffffff8120450b>] ? kobject_release+0x8b/0x1d0 [<ffffffff8120438c>] ? kobject_put+0x2c/0x60 [<ffffffff812bfa97>] ? put_device+0x17/0x20 [<ffffffff812e7102>] ? scsi_target_dev_release+0x22/0x30 [<ffffffff812bfce7>] ? device_release+0x27/0xa0 [<ffffffff8120450b>] ? kobject_release+0x8b/0x1d0 [<ffffffff8120438c>] ? kobject_put+0x2c/0x60 [<ffffffff812bfa97>] ? put_device+0x17/0x20 [<ffffffff812ea858>] ? scsi_device_dev_release_usercontext+0x108/0x120 [<ffffffff812ea750>] ? scsi_device_cls_release+0x20/0x20 [<ffffffff8105a996>] ? execute_in_process_context+0x86/0xa0 [<ffffffff812ea72c>] ? scsi_device_dev_release+0x1c/0x20 [<ffffffff812bfce7>] ? device_release+0x27/0xa0 [<ffffffff8120450b>] ? kobject_release+0x8b/0x1d0 [<ffffffff8120438c>] ? kobject_put+0x2c/0x60 [<ffffffff812bfa97>] ? put_device+0x17/0x20 [<ffffffff812dc534>] ? scsi_device_put+0x44/0x60 [<ffffffff812f685d>] ? scsi_cd_put+0x4d/0x70 [<ffffffff812f69b0>] ? sr_block_open+0xd0/0x120 [<ffffffff81184389>] ? __blkdev_get+0xe9/0x4a0 [<ffffffff81183bb4>] ? bd_acquire+0x24/0xf0 [<ffffffff81184a90>] ? blkdev_get+0x350/0x350 [<ffffffff81184793>] ? blkdev_get+0x53/0x350 [<ffffffff81156a72>] ? complete_walk+0x52/0x140 [<ffffffff81184a90>] ? blkdev_get+0x350/0x350 [<ffffffff814ac49b>] ? _raw_spin_unlock+0x2b/0x50 [<ffffffff81184a90>] ? blkdev_get+0x350/0x350 [<ffffffff81184afc>] ? blkdev_open+0x6c/0x90 [<ffffffff81148fb6>] ? do_dentry_open.isra.19+0x216/0x2a0 [<ffffffff81149062>] ? finish_open+0x22/0x40 [<ffffffff8115a62e>] ? do_last+0x72e/0xe20 [<ffffffff811572d8>] ? inode_permission+0x18/0x50 [<ffffffff8115737b>] ? link_path_walk+0x6b/0x930 [<ffffffff8115add6>] ? path_openat+0xb6/0x4a0 [<ffffffff81097c9d>] ? trace_hardirqs_on+0xd/0x10 [<ffffffff8115b5d2>] ? do_filp_open+0x42/0xa0 [<ffffffff814ac49b>] ? _raw_spin_unlock+0x2b/0x50 [<ffffffff81168802>] ? alloc_fd+0xd2/0x120 [<ffffffff8114a150>] ? do_sys_open+0x100/0x1e0 [<ffffffff8114a251>] ? sys_open+0x21/0x30 [<ffffffff814b5029>] ? system_call_fastpath+0x16/0x1b Code: 00 00 65 48 8b 04 25 80 ba 00 00 8b b0 94 01 00 00 48 c7 c2 a0 b8 26 a0 31 c0 48 c7 c7 45 e0 27 a0 e8 23 15 28 e1 49 8b 44 24 08 <48> 8b 40 30 48 83 78 50 00 0f 84 52 01 00 00 83 fb 01 19 ff 81 Signed-off-by: Bart Van Assche <bvanassche@acm.org> git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@4658 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
@@ -1702,6 +1702,7 @@ out:
|
||||
#ifndef CONFIG_SCST_PROC
|
||||
unregister_dev:
|
||||
device_unregister(&sess->dev);
|
||||
goto out;
|
||||
#endif
|
||||
|
||||
unregister_session:
|
||||
|
||||
Reference in New Issue
Block a user