Commit 33635bd9 authored by weiping zhang's avatar weiping zhang Committed by Michael S. Tsirkin

virtio_pci: don't kfree device on register failure

As mentioned at drivers/base/core.c:
 * NOTE: _Never_ directly free @dev after calling this function, even
 * if it returned an error! Always use put_device() to give up the
 * reference initialized in this function instead.
so we don't free vp_dev until vp_dev-> be called.
Signed-off-by: default avatarweiping zhang <>
Reviewed-by: default avatarCornelia Huck <>
Signed-off-by: Michael S. Tsirkin's avatarMichael S. Tsirkin <>
parent f2b44cde
......@@ -513,7 +513,7 @@ static void virtio_pci_release_dev(struct device *_d)
static int virtio_pci_probe(struct pci_dev *pci_dev,
const struct pci_device_id *id)
struct virtio_pci_device *vp_dev;
struct virtio_pci_device *vp_dev, *reg_dev = NULL;
int rc;
/* allocate our structure and fill it out */
......@@ -551,6 +551,7 @@ static int virtio_pci_probe(struct pci_dev *pci_dev,
rc = register_virtio_device(&vp_dev->vdev);
reg_dev = vp_dev;
if (rc)
goto err_register;
......@@ -564,6 +565,9 @@ static int virtio_pci_probe(struct pci_dev *pci_dev,
if (reg_dev)
return rc;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment