um: virtio_uml: free command if adding to virtqueue failed
authorBenjamin Berg <benjamin.berg@intel.com>
Thu, 9 Feb 2023 09:00:02 +0000 (10:00 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 11 Mar 2023 12:55:22 +0000 (13:55 +0100)
[ Upstream commit 8a6ca543646f2940832665dbf4e04105262505e2 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/um/drivers/virt-pci.c

index 3ac220d..3b637ad 100644 (file)
@@ -132,8 +132,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);