mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 08:44:21 +08:00
[SCSI] scsi_transport_spi: fix oops in revalidate
The class_device->device conversion is causing an oops in revalidate because it's assuming that the device_for_each_child iterator will only return struct scsi_device children. The conversion made all former class_devices children of the device as well, so this assumption is broken. Fix it. Cc: Stable Tree <stable@kernel.org> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
671a99c8eb
commit
e8bac9e064
@ -366,12 +366,14 @@ spi_transport_rd_attr(rti, "%d\n");
|
|||||||
spi_transport_rd_attr(pcomp_en, "%d\n");
|
spi_transport_rd_attr(pcomp_en, "%d\n");
|
||||||
spi_transport_rd_attr(hold_mcs, "%d\n");
|
spi_transport_rd_attr(hold_mcs, "%d\n");
|
||||||
|
|
||||||
/* we only care about the first child device so we return 1 */
|
/* we only care about the first child device that's a real SCSI device
|
||||||
|
* so we return 1 to terminate the iteration when we find it */
|
||||||
static int child_iter(struct device *dev, void *data)
|
static int child_iter(struct device *dev, void *data)
|
||||||
{
|
{
|
||||||
struct scsi_device *sdev = to_scsi_device(dev);
|
if (!scsi_is_sdev_device(dev))
|
||||||
|
return 0;
|
||||||
|
|
||||||
spi_dv_device(sdev);
|
spi_dv_device(to_scsi_device(dev));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user