diff options
author | Julia Lawall <julia@diku.dk> | 2009-09-22 16:47:39 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-09-23 07:39:56 -0700 |
commit | ff8147fe71246b81a48de5f37041b026b57d60ca (patch) | |
tree | 9ae6fb50b937d1b38a7d53a925d5fb9759db1cd4 | |
parent | f7a595e98c3140f1271957aa742a6b84407620d4 (diff) | |
download | linux-3.10-ff8147fe71246b81a48de5f37041b026b57d60ca.tar.gz linux-3.10-ff8147fe71246b81a48de5f37041b026b57d60ca.tar.bz2 linux-3.10-ff8147fe71246b81a48de5f37041b026b57d60ca.zip |
drivers/video: add kmalloc NULL tests
Check that the result of kmalloc is not NULL before passing it to other
functions.
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>
[akpm@linux-foundation.org: convert to kstrdup() as well]
Signed-off-by: Julia Lawall <julia@diku.dk>
Cc: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | drivers/video/au1100fb.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/video/au1100fb.c b/drivers/video/au1100fb.c index 378f27745a1..a699aab6382 100644 --- a/drivers/video/au1100fb.c +++ b/drivers/video/au1100fb.c @@ -715,8 +715,11 @@ int au1100fb_setup(char *options) } /* Mode option (only option that start with digit) */ else if (isdigit(this_opt[0])) { - mode = kmalloc(strlen(this_opt) + 1, GFP_KERNEL); - strncpy(mode, this_opt, strlen(this_opt) + 1); + mode = kstrdup(this_opt, GFP_KERNEL); + if (!mode) { + print_err("memory allocation failed"); + return -ENOMEM; + } } /* Unsupported option */ else { |