mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-21 08:19:28 +00:00
arch/blackfin: Add kmalloc NULL tests
Check that the result of kmalloc is not NULL before passing it to other functions. In the first two cases, the new code returns -ENOMEM, which seems compatible with what is done for similar functions for other architectures. In the last two cases, the new code fails silently, ie just returns, because the function has void return type. The semantic match that finds this problem is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ expression *x; identifier f; constant char *C; @@ x = \(kmalloc\|kcalloc\|kzalloc\)(...); ... when != x == NULL when != x != NULL when != (x || ...) ( kfree(x) | f(...,C,...,x,...) | *f(...,x,...) | *x->f ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
parent
5bc6e3cfe6
commit
994e9a2e01
1 changed files with 8 additions and 0 deletions
|
@ -211,6 +211,8 @@ int smp_call_function(void (*func)(void *info), void *info, int wait)
|
|||
return 0;
|
||||
|
||||
msg = kmalloc(sizeof(*msg), GFP_ATOMIC);
|
||||
if (!msg)
|
||||
return -ENOMEM;
|
||||
INIT_LIST_HEAD(&msg->list);
|
||||
msg->call_struct.func = func;
|
||||
msg->call_struct.info = info;
|
||||
|
@ -252,6 +254,8 @@ int smp_call_function_single(int cpuid, void (*func) (void *info), void *info,
|
|||
cpu_set(cpu, callmap);
|
||||
|
||||
msg = kmalloc(sizeof(*msg), GFP_ATOMIC);
|
||||
if (!msg)
|
||||
return -ENOMEM;
|
||||
INIT_LIST_HEAD(&msg->list);
|
||||
msg->call_struct.func = func;
|
||||
msg->call_struct.info = info;
|
||||
|
@ -287,6 +291,8 @@ void smp_send_reschedule(int cpu)
|
|||
return;
|
||||
|
||||
msg = kmalloc(sizeof(*msg), GFP_ATOMIC);
|
||||
if (!msg)
|
||||
return;
|
||||
memset(msg, 0, sizeof(msg));
|
||||
INIT_LIST_HEAD(&msg->list);
|
||||
msg->type = BFIN_IPI_RESCHEDULE;
|
||||
|
@ -314,6 +320,8 @@ void smp_send_stop(void)
|
|||
return;
|
||||
|
||||
msg = kmalloc(sizeof(*msg), GFP_ATOMIC);
|
||||
if (!msg)
|
||||
return;
|
||||
memset(msg, 0, sizeof(msg));
|
||||
INIT_LIST_HEAD(&msg->list);
|
||||
msg->type = BFIN_IPI_CPU_STOP;
|
||||
|
|
Loading…
Reference in a new issue