Vladislav Bolkhovitin 1f600fcc91 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
2012-12-20 02:32:25 +00:00
2012-09-14 01:31:05 +00:00
2012-07-18 21:28:57 +00:00
2012-07-18 21:28:57 +00:00
2012-12-19 07:37:32 +00:00
2012-12-20 02:26:28 +00:00
2012-10-12 21:04:28 +00:00
2011-04-19 22:56:07 +00:00
2012-04-24 21:34:11 +00:00
2008-06-26 16:35:10 +00:00
2012-01-26 05:43:48 +00:00

This is the SCST development repository. It contains not a single
project SCST as one can think, but a number of them, which are divided
as the following:

1. SCST core in scst/ subdirectory

2. Administration utility for SCST core scstadmin in scstadmin/

3. Target drivers in own subdirectories qla2x00t/, iscsi-scst/, etc.

4. User space programs in usr/ subdirectory, like fileio_tgt.

5. Some various docs in doc/ subdirectory.

Those subprojects are in most cases independent from each other,
although some of them depend from the SCST core. They put in the single
repository only to simplify their development, they are released
independently.

Thus, use "make all" only if you really need to build everything.
Otherwise build only what you need, like for iSCSI-SCST:

make scst scst_install iscsi iscsi_install

For more information about each subproject see their README files.

Vladislav Bolkhovitin <vst@vlnb.net>, http://scst.sourceforge.net
S
Description
No description provided
Readme
33 MiB
Languages
C 90.1%
Perl 4.2%
Shell 1.8%
HTML 1.7%
Makefile 1.2%
Other 0.9%