|
@@ -458,8 +458,10 @@ static void lkdtm_do_action(enum ctype which)
|
|
|
break;
|
|
|
|
|
|
val = kmalloc(len, GFP_KERNEL);
|
|
|
- if (!val)
|
|
|
+ if (!val) {
|
|
|
+ kfree(base);
|
|
|
break;
|
|
|
+ }
|
|
|
|
|
|
*val = 0x12345678;
|
|
|
base[offset] = *val;
|
|
@@ -498,14 +500,17 @@ static void lkdtm_do_action(enum ctype which)
|
|
|
}
|
|
|
case CT_READ_BUDDY_AFTER_FREE: {
|
|
|
unsigned long p = __get_free_page(GFP_KERNEL);
|
|
|
- int saw, *val = kmalloc(1024, GFP_KERNEL);
|
|
|
+ int saw, *val;
|
|
|
int *base;
|
|
|
|
|
|
if (!p)
|
|
|
break;
|
|
|
|
|
|
- if (!val)
|
|
|
+ val = kmalloc(1024, GFP_KERNEL);
|
|
|
+ if (!val) {
|
|
|
+ free_page(p);
|
|
|
break;
|
|
|
+ }
|
|
|
|
|
|
base = (int *)p;
|
|
|
|