Messages in this thread Patch in this message | | | Subject | [2.6.24-rc BUGFIX] SRP transport: only remove our own entries | From | Dave Dillow <> | Date | Thu, 03 Jan 2008 21:34:49 -0500 |
| |
The SCSI SRP transport class currently iterates over all children devices of the host that is being removed in srp_remove_host(). However, not all of those children were created by the SRP transport, and removing them will cause corruption and an oops when their creator tries to remove them.
Signed-off-by: David Dillow <dillowda@ornl.gov> Acked-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> --- On Fri, 2008-01-04 at 09:47 +0900, FUJITA Tomonori wrote: > On Thu, 03 Jan 2008 15:51:25 -0500 > I think that this is the root problem and the patch fixes it in the > right way. Please send this patch to linux-scsi@vger.kernel.org and a > patch to move srp_remove_host before scsi_remove_host in > srp_remove_one to Roland. > > Acked-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
diff --git a/drivers/scsi/scsi_transport_srp.c b/drivers/scsi/scsi_transport_srp.c index 44a340b..65c584d 100644 --- a/drivers/scsi/scsi_transport_srp.c +++ b/drivers/scsi/scsi_transport_srp.c @@ -265,7 +265,8 @@ EXPORT_SYMBOL_GPL(srp_rport_del); static int do_srp_rport_del(struct device *dev, void *data) { - srp_rport_del(dev_to_rport(dev)); + if (scsi_is_srp_rport(dev)) + srp_rport_del(dev_to_rport(dev)); return 0; }
| |