• Cornelia Huck's avatar
    [S390] cio: Fix I/O subchannel refcounting. · 6eff208f
    Cornelia Huck authored
    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: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
device.c 49 KB