mirror of
https://gitee.com/openharmony/kernel_linux
synced 2025-01-27 12:33:03 +00:00
[PATCH] use device_for_each_child() to properly access child devices.
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
20b1e67423
commit
9a881f166f
@ -348,17 +348,21 @@ spi_transport_rd_attr(rd_strm, "%d\n");
|
|||||||
spi_transport_rd_attr(rti, "%d\n");
|
spi_transport_rd_attr(rti, "%d\n");
|
||||||
spi_transport_rd_attr(pcomp_en, "%d\n");
|
spi_transport_rd_attr(pcomp_en, "%d\n");
|
||||||
|
|
||||||
|
/* we only care about the first child device so we return 1 */
|
||||||
|
static int child_iter(struct device *dev, void *data)
|
||||||
|
{
|
||||||
|
struct scsi_device *sdev = to_scsi_device(dev);
|
||||||
|
|
||||||
|
spi_dv_device(sdev);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static ssize_t
|
static ssize_t
|
||||||
store_spi_revalidate(struct class_device *cdev, const char *buf, size_t count)
|
store_spi_revalidate(struct class_device *cdev, const char *buf, size_t count)
|
||||||
{
|
{
|
||||||
struct scsi_target *starget = transport_class_to_starget(cdev);
|
struct scsi_target *starget = transport_class_to_starget(cdev);
|
||||||
|
|
||||||
/* FIXME: we're relying on an awful lot of device internals
|
device_for_each_child(&starget->dev, NULL, child_iter);
|
||||||
* here. We really need a function to get the first available
|
|
||||||
* child */
|
|
||||||
struct device *dev = container_of(starget->dev.children.next, struct device, node);
|
|
||||||
struct scsi_device *sdev = to_scsi_device(dev);
|
|
||||||
spi_dv_device(sdev);
|
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
static CLASS_DEVICE_ATTR(revalidate, S_IWUSR, NULL, store_spi_revalidate);
|
static CLASS_DEVICE_ATTR(revalidate, S_IWUSR, NULL, store_spi_revalidate);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user