Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 60fcdac8 authored by Vitaly Kuznetsov's avatar Vitaly Kuznetsov Committed by Bjorn Helgaas
Browse files

PCI: hv: Don't leak buffer in hv_pci_onchannelcallback()



We don't free buffer on several code paths in hv_pci_onchannelcallback(),
put kfree() to the end of the function to fix the issue.  Direct { kfree();
return; } can now be replaced with a simple 'break';

Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Acked-by: default avatarJake Oshins <jakeo@microsoft.com>
parent af8c34ce
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -1661,10 +1661,8 @@ static void hv_pci_onchannelcallback(void *context)
		 * All incoming packets must be at least as large as a
		 * response.
		 */
		if (bytes_recvd <= sizeof(struct pci_response)) {
			kfree(buffer);
			return;
		}
		if (bytes_recvd <= sizeof(struct pci_response))
			break;
		desc = (struct vmpacket_descriptor *)buffer;

		switch (desc->type) {
@@ -1679,8 +1677,7 @@ static void hv_pci_onchannelcallback(void *context)
			comp_packet->completion_func(comp_packet->compl_ctxt,
						     response,
						     bytes_recvd);
			kfree(buffer);
			return;
			break;

		case VM_PKT_DATA_INBAND:

@@ -1729,6 +1726,8 @@ static void hv_pci_onchannelcallback(void *context)
		}
		break;
	}

	kfree(buffer);
}

/**