[SCSI] scsi_sysfs: restore prep_fn when ULD is removed
authorJames Bottomley <James.Bottomley@HansenPartnership.com>
Wed, 2 Jan 2008 17:14:30 +0000 (11:14 -0600)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Wed, 2 Jan 2008 19:08:00 +0000 (13:08 -0600)
commit751bf4d7865e4ced406be93b04c7436d866d3684
treebb5d45ec9af0dc3cf22d3a21364c13f6ae2e5358
parentdc512814b5f8b7b80c74d6170b93a606ae4f36c5
[SCSI] scsi_sysfs: restore prep_fn when ULD is removed

A recent bug report:

http://bugzilla.kernel.org/show_bug.cgi?id=9674

Was caused because the ULDs now set their own prep functions, but
don't necessarily reset the prep function back to the SCSI default
when they are removed.  This leads to panics if commands are sent to
the device after the module is removed because the prep_fn is still
pointing to the old module code.  The fix for this is to implement a
bus remove method that resets the prep_fn pointer correctly before
calling the ULD specific driver remove method.

Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_priv.h
drivers/scsi/scsi_sysfs.c