virt: vbox: Add vbg_req_free() helper function
This is a preparation patch for fixing issues on x86_64 virtual-machines with more then 4G of RAM, atm we pass __GFP_DMA32 to kmalloc, but kmalloc does not honor that, so we need to switch to get_pages, which means we will not be able to use kfree to free memory allocated with vbg_alloc_req. While at it also remove a comment on a vbg_alloc_req call which talks about Windows (inherited from the vbox upstream cross-platform code). Cc: stable@vger.kernel.org Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:

committed by
Greg Kroah-Hartman

parent
02cfde67df
commit
f6f9885b05
@@ -82,6 +82,14 @@ void *vbg_req_alloc(size_t len, enum vmmdev_request_type req_type)
|
||||
return req;
|
||||
}
|
||||
|
||||
void vbg_req_free(void *req, size_t len)
|
||||
{
|
||||
if (!req)
|
||||
return;
|
||||
|
||||
kfree(req);
|
||||
}
|
||||
|
||||
/* Note this function returns a VBox status code, not a negative errno!! */
|
||||
int vbg_req_perform(struct vbg_dev *gdev, void *req)
|
||||
{
|
||||
@@ -137,7 +145,7 @@ int vbg_hgcm_connect(struct vbg_dev *gdev,
|
||||
rc = hgcm_connect->header.result;
|
||||
}
|
||||
|
||||
kfree(hgcm_connect);
|
||||
vbg_req_free(hgcm_connect, sizeof(*hgcm_connect));
|
||||
|
||||
*vbox_status = rc;
|
||||
return 0;
|
||||
@@ -166,7 +174,7 @@ int vbg_hgcm_disconnect(struct vbg_dev *gdev, u32 client_id, int *vbox_status)
|
||||
if (rc >= 0)
|
||||
rc = hgcm_disconnect->header.result;
|
||||
|
||||
kfree(hgcm_disconnect);
|
||||
vbg_req_free(hgcm_disconnect, sizeof(*hgcm_disconnect));
|
||||
|
||||
*vbox_status = rc;
|
||||
return 0;
|
||||
@@ -623,7 +631,7 @@ int vbg_hgcm_call(struct vbg_dev *gdev, u32 client_id, u32 function,
|
||||
}
|
||||
|
||||
if (!leak_it)
|
||||
kfree(call);
|
||||
vbg_req_free(call, size);
|
||||
|
||||
free_bounce_bufs:
|
||||
if (bounce_bufs) {
|
||||
|
Reference in New Issue
Block a user