Re: [SCSI] fix scsi_reap_target() device_del from atomic context

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 23 Dec 2005, James Bottomley wrote:

> On Fri, 2005-12-23 at 12:05 -0800, Andrew Vasquez wrote:
> > 	EIP is at sysfs_hash_and_remove+0x31/0x11f
> > 	eax: 00000000   ebx: 6b6b6b6b   ecx: 00000000   edx: ee6aac68
> > 	esi: 6b6b6b6b   edi: f8839d44   ebp: f8839cc0   esp: c1af7e98
> > 	ds: 007b   es: 007b   ss: 0068
> > 	Process events/2 (pid: 16, threadinfo=c1af7000 task=c1aef030)
> > 	Stack: c03998d2 00000063 eb6a0e2c eb6a0e24 f8839d44 f8839cc0 c025877b e640aac0 
> > 	       ee000f5c ee000f5c 00000000 f8839cc0 f332e178 eb6a0e24 c025ab08 c025ab39 
> > 	       eb6a0e24 c0370606 eb6a0e00 f332e178 c1af7f00 e5a872dc c025a722 f332e178 
> > 	Call Trace:
> > 	 [<c025877b>] class_device_del+0x138/0x163
> > 	 [<c025ab08>] transport_remove_classdev+0x0/0x68
> 
> This one is the signal for class devices being deleted *after* the
> underlying device has been deleted, so the class device delete oopses
> trying to remove the symlink from the real device to the class device.
> 
> Strange it should show up now, since that particular piece of code
> hasn't been altered, just moved into a work queue.

Yes, that does seem odd..

> See if the attached fixes it (if it does, I'm mystified as to why you
> haven't always seen this).
> 
> James
> 
> diff --git a/drivers/scsi/scsi_scan.c b/drivers/scsi/scsi_scan.c
> --- a/drivers/scsi/scsi_scan.c
> +++ b/drivers/scsi/scsi_scan.c
> @@ -418,8 +418,9 @@ static void scsi_target_reap_work(void *
>  	if (--starget->reap_ref == 0 && list_empty(&starget->devices)) {
>  		list_del_init(&starget->siblings);
>  		spin_unlock_irqrestore(shost->host_lock, flags);
> +		transport_remove_device(&starget->dev);
>  		device_del(&starget->dev);
> -		transport_unregister_device(&starget->dev);
> +		transport_destroy_device(&starget->dev);
>  		put_device(&starget->dev);
>  		return;

This fixes the OOPS during unload problem...  Now the interesting
question... why...

--
av
-
: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux