Commit b6d397e4 authored by Mike Rapoport's avatar Mike Rapoport Committed by Andrei Vagin

kdat: lazy-thp: split error paths cleanups to two cases

When an error occurs we need to close a file descriptor and unmap a region.
Use a separate label for each cleanup.

Fix CID 182644 (#1-2 of 2): Use after close (USE_AFTER_FREE)8. pass_closed_arg:
Passing closed handle f.fd as an argument to bclose
Signed-off-by: 's avatarMike Rapoport <rppt@linux.vnet.ibm.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent f7724aa5
......@@ -784,21 +784,21 @@ int kerndat_has_thp_disable(void)
f.fd = open("/proc/self/smaps", O_RDONLY);
if (f.fd < 0) {
pr_perror("Can't open /proc/self/smaps");
goto out;
goto out_unmap;
}
if (bfdopenr(&f))
goto out;
goto out_unmap;
while ((str = breadline(&f)) != NULL) {
if (IS_ERR(str))
goto out;
goto out_close;
if (is_vma_range_fmt(str)) {
unsigned long vma_addr;
if (sscanf(str, "%lx-", &vma_addr) != 1) {
pr_err("Can't parse: %s\n", str);
goto out;
goto out_close;
}
if (vma_addr == (unsigned long)addr)
......@@ -818,8 +818,9 @@ int kerndat_has_thp_disable(void)
ret = 0;
out:
out_close:
bclose(&f);
out_unmap:
munmap(addr, PAGE_SIZE);
return ret;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment