mirror of
https://github.com/torvalds/linux.git
synced 2024-11-25 05:32:00 +00:00
livepatch: Reorder to use before freeing a pointer
Clang static analysis reports this issue livepatch-shadow-fix1.c:113:2: warning: Use of memory after it is freed pr_info("%s: dummy @ %p, prevented leak @ %p\n", ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The pointer is freed in the previous statement. Reorder the pr_info to report before the free. Similar issue in livepatch-shadow-fix2.c Note that it is a false positive. pr_info() just prints the address. The freed memory is not accessed. Well, the static analyzer could not know this easily. Signed-off-by: Tom Rix <trix@redhat.com> Reviewed-by: Petr Mladek <pmladek@suse.com> Acked-by: David Vernet <void@manifault.com> Acked-by: Joe Lawrence <joe.lawrence@redhat.com> [pmladek@suse.com: Note about that it was false positive.] Signed-off-by: Petr Mladek <pmladek@suse.com> Link: https://lore.kernel.org/r/20220320015143.2208591-1-trix@redhat.com
This commit is contained in:
parent
4327b9eaf8
commit
5e6ded2e7a
@ -109,9 +109,9 @@ static void livepatch_fix1_dummy_leak_dtor(void *obj, void *shadow_data)
|
|||||||
void *d = obj;
|
void *d = obj;
|
||||||
int **shadow_leak = shadow_data;
|
int **shadow_leak = shadow_data;
|
||||||
|
|
||||||
kfree(*shadow_leak);
|
|
||||||
pr_info("%s: dummy @ %p, prevented leak @ %p\n",
|
pr_info("%s: dummy @ %p, prevented leak @ %p\n",
|
||||||
__func__, d, *shadow_leak);
|
__func__, d, *shadow_leak);
|
||||||
|
kfree(*shadow_leak);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void livepatch_fix1_dummy_free(struct dummy *d)
|
static void livepatch_fix1_dummy_free(struct dummy *d)
|
||||||
|
@ -61,9 +61,9 @@ static void livepatch_fix2_dummy_leak_dtor(void *obj, void *shadow_data)
|
|||||||
void *d = obj;
|
void *d = obj;
|
||||||
int **shadow_leak = shadow_data;
|
int **shadow_leak = shadow_data;
|
||||||
|
|
||||||
kfree(*shadow_leak);
|
|
||||||
pr_info("%s: dummy @ %p, prevented leak @ %p\n",
|
pr_info("%s: dummy @ %p, prevented leak @ %p\n",
|
||||||
__func__, d, *shadow_leak);
|
__func__, d, *shadow_leak);
|
||||||
|
kfree(*shadow_leak);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void livepatch_fix2_dummy_free(struct dummy *d)
|
static void livepatch_fix2_dummy_free(struct dummy *d)
|
||||||
|
Loading…
Reference in New Issue
Block a user