RE: [PATCH 1/1] cciss: scsi error handling

From: James Bottomley
Date: Fri Nov 11 2005 - 16:42:05 EST


On Fri, 2005-11-11 at 13:38 -0600, Cameron, Steve wrote:
> About the locking first,
>
> So, there's one part that I was a little worried about, where
> it does this in a couple places:
>
> c = (ctlr_info_t **) &scsicmd->device->host->hostdata[0];
>
> (gets our adapter structure by following pointers in the scsi
> command)
>
> So, if that pointer chain can change suddenly, then my code is bad.
>
> Can doing "echo scsi remove-single-device . . . > /proc/scsi/scsi"
> cause that pointer chain to break? I noticed I can yank a disk
> out from under a mounted filesystem with
> "echo scsi remove-single-device" It wasn't obvious to me whether
> doing that would affect that pointer chain though, though I could
> imagine it might.
>
> Or am I barking up the wrong tree worrying about
> the scsicmd->device->host->hostdata pointer chain
> getting yanked out from under me?

No, the pointers are all held in place. Even if everyone else releases
their references, the commmand still contains a reference to the device
(which holds it from being released) and the device likewise contains a
reference to the host.

James


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/