WSL2-Linux-Kernel/drivers/s390/cio
Cornelia Huck 6eff208f47 [S390] cio: Fix I/O subchannel refcounting.
Subchannel refcounting was incorrect in some places, especially
a refcount was missing when ccw_device_call_sch_unregister()
was called and the refcount was not correctly switched after
moving devices.

Fix this by establishing the following rules:
- The ccw_device obtains a reference on its parent subchannel
  when dev.parent is set and gives it up in its release
  function. This is needed because we need a parent reference
  for correct refcounting even before the ccw device is (if at
  all) registered.
- When calling device_move(), obtain a reference on the new
  subchannel before moving the ccw device and give up the
  reference on the old parent after moving. This brings the
  refcount in line with the first rule.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2008-12-25 13:39:08 +01:00
..
Makefile [S390] qdio: new qdio driver. 2008-07-17 17:22:10 +02:00
airq.c [S390] cio: Allow adapter interrupt handlers per isc. 2008-07-14 10:02:10 +02:00
blacklist.c [S390] cio: introduce purge function for /proc/cio_ignore 2008-10-10 21:33:47 +02:00
blacklist.h
ccwgroup.c [S390] cio: fix ccwgroup online vs. ungroup race condition 2008-12-25 13:39:06 +01:00
chp.c [S390] bus_id -> dev_set_name() changes 2008-10-10 21:33:50 +02:00
chp.h [S390] cio: Repair chpid event handling. 2008-07-14 10:02:11 +02:00
chsc.c [S390] cio: Export chsc_error_from_response(). 2008-07-17 17:22:10 +02:00
chsc.h [S390] cio: Export chsc_error_from_response(). 2008-07-17 17:22:10 +02:00
chsc_sch.c [S390] cio: Correct use of ! and & 2008-10-10 21:33:54 +02:00
chsc_sch.h [S390] cio: Add chsc subchannel driver. 2008-07-14 10:02:12 +02:00
cio.c [S390] cio: get rid of compile warning 2008-12-25 13:39:05 +01:00
cio.h [S390] bus_id -> dev_set_name() for css and ccw busses 2008-10-10 21:33:53 +02:00
cio_debug.h
cmf.c [S390] Cleanup cio printk messages. 2008-07-14 10:02:18 +02:00
css.c [S390] bus_id -> dev_set_name() changes 2008-10-10 21:33:50 +02:00
css.h [S390] cio: Add chsc subchannel driver. 2008-07-14 10:02:12 +02:00
device.c [S390] cio: Fix I/O subchannel refcounting. 2008-12-25 13:39:08 +01:00
device.h [S390] cio: introduce purge function for /proc/cio_ignore 2008-10-10 21:33:47 +02:00
device_fsm.c [S390] cio: Fix reference counting for online/offline. 2008-12-25 13:39:07 +01:00
device_id.c [S390] cio: provide functions for fcx enabled I/O 2008-07-14 10:02:08 +02:00
device_ops.c [S390] bus_id -> dev_name conversions 2008-10-10 21:33:49 +02:00
device_pgid.c [S390] cio: provide functions for fcx enabled I/O 2008-07-14 10:02:08 +02:00
device_status.c
fcx.c [S390] cio: provide functions for fcx enabled I/O 2008-07-14 10:02:08 +02:00
idset.c [S390] cio: Memory allocation for idset changed. 2008-08-01 16:39:31 +02:00
idset.h [S390] cio: Add chsc subchannel driver. 2008-07-14 10:02:12 +02:00
io_sch.h [S390] cio: inline assembly cleanup 2008-10-10 21:33:53 +02:00
ioasm.h [S390] cio: inline assembly cleanup 2008-10-10 21:33:53 +02:00
isc.c [S390] cio: introduce isc_(un)register functions. 2008-07-14 10:02:11 +02:00
itcw.c [S390] cio: provide helper functions for fcx enabled I/O 2008-07-14 10:02:08 +02:00
qdio.h [S390] qdio: fix error reporting for hipersockets 2008-12-25 13:39:00 +01:00
qdio_debug.c [S390] qdio: improve inbound buffer acknowledgement 2008-12-25 13:38:59 +01:00
qdio_debug.h [S390] qdio: rework debug feature logging 2008-12-25 13:38:59 +01:00
qdio_main.c [S390] qdio: fix error reporting for hipersockets 2008-12-25 13:39:00 +01:00
qdio_perf.c [S390] qdio: improve inbound buffer acknowledgement 2008-12-25 13:38:59 +01:00
qdio_perf.h [S390] qdio: improve inbound buffer acknowledgement 2008-12-25 13:38:59 +01:00
qdio_setup.c [S390] qdio: fix error reporting for hipersockets 2008-12-25 13:39:00 +01:00
qdio_thinint.c [S390] qdio: improve inbound buffer acknowledgement 2008-12-25 13:38:59 +01:00
scsw.c