summaryrefslogtreecommitdiffstats
path: root/arch/um/drivers
diff options
context:
space:
mode:
authorBenjamin Berg <benjamin.berg@intel.com>2023-02-09 10:00:02 +0100
committerRichard Weinberger <richard@nod.at>2023-02-13 10:14:32 +0100
commit8a6ca543646f2940832665dbf4e04105262505e2 (patch)
tree9a09cf12984a511a2fdd10bdee9395300c2bf447 /arch/um/drivers
parentb99ddbe8336ee680257c8ab479f75051eaa49dcf (diff)
downloadlinux-8a6ca543646f2940832665dbf4e04105262505e2.tar.gz
linux-8a6ca543646f2940832665dbf4e04105262505e2.tar.bz2
linux-8a6ca543646f2940832665dbf4e04105262505e2.zip
um: virtio_uml: free command if adding to virtqueue failed
If adding the command fails (i.e. the virtqueue is broken) then free it again if the function allocated a new buffer for it. Fixes: 68f5d3f3b654 ("um: add PCI over virtio emulation driver") Signed-off-by: Benjamin Berg <benjamin.berg@intel.com> Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um/drivers')
-rw-r--r--arch/um/drivers/virt-pci.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/um/drivers/virt-pci.c b/arch/um/drivers/virt-pci.c
index 2ba89347053a..035c97aadb38 100644
--- a/arch/um/drivers/virt-pci.c
+++ b/arch/um/drivers/virt-pci.c
@@ -137,8 +137,11 @@ static int um_pci_send_cmd(struct um_pci_device *dev,
out ? 1 : 0,
posted ? cmd : HANDLE_NO_FREE(cmd),
GFP_ATOMIC);
- if (ret)
+ if (ret) {
+ if (posted)
+ kfree(cmd);
goto out;
+ }
if (posted) {
virtqueue_kick(dev->cmd_vq);