[SCSI] esp: Fix OOPS in esp_reset_cleanup().
authorDavid S. Miller <davem@davemloft.net>
Wed, 18 Jun 2008 06:53:22 +0000 (23:53 -0700)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Tue, 24 Jun 2008 20:48:56 +0000 (15:48 -0500)
commiteadc49b1a8d09480f14caea292142f103a89c77a
treeed78a3cfdd22e9754eaadcd1c73c5edd2d03cf5b
parentc95e62ce8905aab62fed224eaaa9b8558a0ef652
[SCSI] esp: Fix OOPS in esp_reset_cleanup().

OOPS reported by Friedrich Oslage <bluebird@porno-bullen.de>

The problem here is that tp->starget is set every time a lun
is allocated for a particular target so we can catch the
sdev_target parent value.

The reset handler uses the NULL'ness of this value to determine
which targets are active.

But esp_slave_destroy() does not NULL out this value when appropriate.

So for every target that doesn't respond, the SCSI bus scan causes
a stale pointer to be left here, with ensuing crashes like you're
seeing.

Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: Stable Tree <stable@kernel.org>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/esp_scsi.c
drivers/scsi/esp_scsi.h