Commit b12045fb authored by Gui-Dong Han's avatar Gui-Dong Han
Browse files

ktask: add null-pointer checks for ktask_works in ktask_init()

BUAA inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I85XYM



-----------------------------------------------------

In ktask_init(), the pointer ktask_works
is allocated using kmalloc_array, which can fail and return NULL.
The pointer ktask_works is used in the following code:
list_add_tail(&ktask_works[i].kw_list, &ktask_free_works);
Thus, a null-pointer dereference can occur, crashing the kernel.
To fix this bug, the pointer ktask_works should be checked for NULL
after the call to kmalloc_array to avoid null-pointer dereference.

Signed-off-by: default avatarGui-Dong Han <hanguidong@buaa.edu.cn>
parent 9afce123
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -572,6 +572,10 @@ void __init ktask_init(void)


	ktask_works = kmalloc_array(ktask_rlim_max, sizeof(struct ktask_work),
	ktask_works = kmalloc_array(ktask_rlim_max, sizeof(struct ktask_work),
				    GFP_KERNEL);
				    GFP_KERNEL);
	if (!ktask_works) {
		pr_warn("disabled (failed to alloc ktask_works)");
		goto out;
	}
	for (i = 0; i < ktask_rlim_max; ++i)
	for (i = 0; i < ktask_rlim_max; ++i)
		list_add_tail(&ktask_works[i].kw_list, &ktask_free_works);
		list_add_tail(&ktask_works[i].kw_list, &ktask_free_works);