forked from Minki/linux
efivarfs: efivarfs_file_read ensure we free data in error paths
Signed-off-by: Andy Whitcroft <apw@canonical.com> Acked-by: Matthew Garrett <mjg@redhat.com> Acked-by: Jeremy Kerr <jeremy.kerr@canonical.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
This commit is contained in:
parent
bd52276fa1
commit
d142df03a7
@ -766,7 +766,7 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf,
|
||||
unsigned long datasize = 0;
|
||||
u32 attributes;
|
||||
void *data;
|
||||
ssize_t size;
|
||||
ssize_t size = 0;
|
||||
|
||||
status = efivars->ops->get_variable(var->var.VariableName,
|
||||
&var->var.VendorGuid,
|
||||
@ -784,13 +784,13 @@ static ssize_t efivarfs_file_read(struct file *file, char __user *userbuf,
|
||||
&var->var.VendorGuid,
|
||||
&attributes, &datasize,
|
||||
(data + 4));
|
||||
|
||||
if (status != EFI_SUCCESS)
|
||||
return 0;
|
||||
goto out_free;
|
||||
|
||||
memcpy(data, &attributes, 4);
|
||||
size = simple_read_from_buffer(userbuf, count, ppos,
|
||||
data, datasize + 4);
|
||||
out_free:
|
||||
kfree(data);
|
||||
|
||||
return size;
|
||||
|
Loading…
Reference in New Issue
Block a user