[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200108122658.GA2365903@kroah.com>
Date: Wed, 8 Jan 2020 13:26:58 +0100
From: Greg KH <gregkh@...uxfoundation.org>
To: Luo Jiaxing <luojiaxing@...wei.com>
Cc: saravanak@...gle.com, jejb@...ux.ibm.com, James.Bottomley@...e.de,
James.Bottomley@...senpartnership.com, john.garry@...wei.com,
linux-kernel@...r.kernel.org, linuxarm@...wei.com
Subject: Re: [PATCH v1] driver core: Use list_del_init to replace list_del at
device_links_purge()
On Wed, Jan 08, 2020 at 07:34:04PM +0800, Luo Jiaxing wrote:
> We found that enabling kernel compilation options CONFIG_SCSI_ENCLOSURE and
> CONFIG_ENCLOSURE_SERVICES, repeated initialization and deletion of the same
> SCSI device will cause system panic, as follows:
> [72.425705] Unable to handle kernel paging request at virtual address
> dead000000000108
> ...
> [72.595093] Call trace:
> [72.597532] device_del + 0x194 / 0x3a0
> [72.601012] enclosure_remove_device + 0xbc / 0xf8
> [72.605445] ses_intf_remove + 0x9c / 0xd8
> [72.609185] device_del + 0xf8 / 0x3a0
> [72.612576] device_unregister + 0x14 / 0x30
> [72.616489] __scsi_remove_device + 0xf4 / 0x140
> [72.620747] scsi_remove_device + 0x28 / 0x40
> [72.624745] scsi_remove_target + 0x1c8 / 0x220
>
> After analysis, we see that in the error scenario, the ses module has the
> following calling sequence:
> device_register() -> device_del() -> device_add() -> device_del().
> The first call to device_del() is fine, but the second call to device_del()
> will cause a system panic.
Is this all on the same device structure? If so, that's not ok, you
can't do that, once device_del() is called on the memory location, you
can not call device_add() on it again.
How are you triggering this from userspace?
thanks,
greg k-h
Powered by blists - more mailing lists