linux-hardened/drivers/virtio
Sasha Levin 63bd62a08c virtio_pci: defer kfree until release callback
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: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2015-01-06 16:35:36 +02:00
..
config.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
Kconfig mm/balloon_compaction: add vmstat counters and kpageflags bit 2014-10-09 22:26:01 -04:00
Makefile virtio_pci: rename virtio_pci -> virtio_pci_common 2014-12-09 21:42:05 +02:00
virtio.c virtio: set VIRTIO_CONFIG_S_FEATURES_OK on restore 2014-12-11 20:04:38 +02:00
virtio_balloon.c virtio_balloon: drop legacy_only driver flag 2014-12-09 21:41:59 +02:00
virtio_mmio.c Driver core patches for 3.19-rc1 2014-12-14 16:10:09 -08:00
virtio_pci_common.c virtio_pci: device-specific release callback 2015-01-06 16:35:36 +02:00
virtio_pci_common.h virtio_pci: device-specific release callback 2015-01-06 16:35:36 +02:00
virtio_pci_legacy.c virtio_pci: defer kfree until release callback 2015-01-06 16:35:36 +02:00
virtio_ring.c virtio: make VIRTIO_F_VERSION_1 a transport bit 2014-12-09 12:06:32 +02:00