diff options
Diffstat (limited to 'drivers/misc/lkdtm.c')
-rw-r--r-- | drivers/misc/lkdtm.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/misc/lkdtm.c b/drivers/misc/lkdtm.c index 5f1a36b8fbb0..0a5cbbe12452 100644 --- a/drivers/misc/lkdtm.c +++ b/drivers/misc/lkdtm.c | |||
@@ -458,8 +458,10 @@ static void lkdtm_do_action(enum ctype which) | |||
458 | break; | 458 | break; |
459 | 459 | ||
460 | val = kmalloc(len, GFP_KERNEL); | 460 | val = kmalloc(len, GFP_KERNEL); |
461 | if (!val) | 461 | if (!val) { |
462 | kfree(base); | ||
462 | break; | 463 | break; |
464 | } | ||
463 | 465 | ||
464 | *val = 0x12345678; | 466 | *val = 0x12345678; |
465 | base[offset] = *val; | 467 | base[offset] = *val; |
@@ -498,14 +500,17 @@ static void lkdtm_do_action(enum ctype which) | |||
498 | } | 500 | } |
499 | case CT_READ_BUDDY_AFTER_FREE: { | 501 | case CT_READ_BUDDY_AFTER_FREE: { |
500 | unsigned long p = __get_free_page(GFP_KERNEL); | 502 | unsigned long p = __get_free_page(GFP_KERNEL); |
501 | int saw, *val = kmalloc(1024, GFP_KERNEL); | 503 | int saw, *val; |
502 | int *base; | 504 | int *base; |
503 | 505 | ||
504 | if (!p) | 506 | if (!p) |
505 | break; | 507 | break; |
506 | 508 | ||
507 | if (!val) | 509 | val = kmalloc(1024, GFP_KERNEL); |
510 | if (!val) { | ||
511 | free_page(p); | ||
508 | break; | 512 | break; |
513 | } | ||
509 | 514 | ||
510 | base = (int *)p; | 515 | base = (int *)p; |
511 | 516 | ||