linux/drivers/s390
Benjamin Block 71159b6ecb scsi: zfcp: Fence early sysfs interfaces for accesses of shost objects
When setting an adapter online for the first time, we also create a couple
of entries for it in the sysfs device tree. This is also true even if the
adapter has not yet ever gone successfully through exchange config and
exchange port data.

When moving the scsi host object allocation and registration to after the
first exchange config and exchange port data, this make the `port_rescan`
attribute susceptible to invalid pointer-dereferences of the shost field
before the adapter is fully initialized.

When written to, it schedules a `scan_work` item that will in turn make use
of the associated fibre channel host object to check the topology used for
this FCP device.

Because scanning for remote ports can't be done successfully without
completing exchange config and exchange port data first, we can simply
fence `port_rescan`, and so prevent the illegal access.

As with cases where we can't get a reference to the adapter, we also return
-ENODEV here. Applications need to handle that errno today already.

After a successful allocation of the scsi host object nothing changes in
the work flow.

Link: https://lore.kernel.org/r/ef65366d309993ca91b6917727590ca7ca166c8f.1588956679.git.bblock@linux.ibm.com
Reviewed-by: Steffen Maier <maier@linux.ibm.com>
Signed-off-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
2020-05-11 23:19:50 -04:00
..
block libnvdimm for 5.7 2020-04-08 21:03:40 -07:00
char s390: use fallthrough; 2020-03-25 12:39:37 +01:00
cio s390/cio: generate delayed uevent for vfio-ccw subchannels 2020-04-06 14:02:28 +02:00
crypto s390 updates for the 5.7 merge window 2020-04-04 09:45:50 -07:00
net s390/qdio: remove cdev from init_data 2020-04-06 13:13:50 +02:00
scsi scsi: zfcp: Fence early sysfs interfaces for accesses of shost objects 2020-05-11 23:19:50 -04:00
virtio
Makefile s390: remove pointless drivers-y in drivers/s390/Makefile 2019-09-16 13:21:51 +02:00