1. 13 Jan, 2015 36 commits
  2. 07 Jan, 2015 1 commit
  3. 06 Jan, 2015 3 commits
    • Michael S. Tsirkin's avatar
      virtio_pci: document why we defer kfree · a1eb03f5
      Michael S. Tsirkin authored
      The reason we defer kfree until release function is because it's a
      general rule for kobjects: kfree of the reference counter itself is only
      legal in the release function.
      
      Previous patch didn't make this clear, document this in code.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      
      a1eb03f5
    • Sasha Levin's avatar
      virtio_pci: defer kfree until release callback · 63bd62a0
      Sasha Levin authored
      A struct device which has just been unregistered can live on past the
      point at which a driver decides to drop it's initial reference to the
      kobject gained on allocation.
      
      This implies that when releasing a virtio device, we can't free a struct
      virtio_device until the underlying struct device has been released,
      which might not happen immediately on device_unregister().
      
      Unfortunately, this is exactly what virtio pci does:
      it has an empty release callback, and frees memory immediately
      after unregistering the device.
      
      This causes an easy to reproduce crash if CONFIG_DEBUG_KOBJECT_RELEASE
      it enabled.
      
      To fix, free the memory only once we know the device is gone in the release
      callback.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      
      63bd62a0
    • Michael S. Tsirkin's avatar
      virtio_pci: device-specific release callback · 945399a8
      Michael S. Tsirkin authored
      It turns out we need to add device-specific code
      in release callback. Move it to virtio_pci_legacy.c.
      Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      
      945399a8