mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
cxl/mem: Fix potential memory leak
When submitting a command for userspace, input and output payload bounce
buffers are allocated. For a given command, both input and output
buffers may exist and so when allocation of the input buffer fails, the
output buffer must be freed too.
As far as I can tell, userspace can't easily exploit the leak to OOM a
machine unless the machine was already near OOM state.
Fixes: 583fa5e71c
("cxl/mem: Add basic IOCTL interface")
Reported-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Ben Widawsky <ben.widawsky@intel.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Link: https://lore.kernel.org/r/20210221035846.680145-1-ben.widawsky@intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
committed by
Dan Williams
parent
58294927f4
commit
88ff5d466c
@@ -514,9 +514,11 @@ static int handle_mailbox_cmd_from_user(struct cxl_mem *cxlm,
|
|||||||
if (cmd->info.size_in) {
|
if (cmd->info.size_in) {
|
||||||
mbox_cmd.payload_in = vmemdup_user(u64_to_user_ptr(in_payload),
|
mbox_cmd.payload_in = vmemdup_user(u64_to_user_ptr(in_payload),
|
||||||
cmd->info.size_in);
|
cmd->info.size_in);
|
||||||
if (IS_ERR(mbox_cmd.payload_in))
|
if (IS_ERR(mbox_cmd.payload_in)) {
|
||||||
|
kvfree(mbox_cmd.payload_out);
|
||||||
return PTR_ERR(mbox_cmd.payload_in);
|
return PTR_ERR(mbox_cmd.payload_in);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rc = cxl_mem_mbox_get(cxlm);
|
rc = cxl_mem_mbox_get(cxlm);
|
||||||
if (rc)
|
if (rc)
|
||||||
|
Reference in New Issue
Block a user