1 void *kmalloc(void); 2 void free(void *); 3 4 struct ture { 5 int *a; 6 }; 7 8 struct ture *a; 9 struct ture *b; 10 void func (void) 11 { 12 struct ture *aa; 13 struct ture *ab; 14 struct ture *ac; 15 aa = kmalloc(); 16 ab = kmalloc(); 17 ac = kmalloc(); 18 19 a = aa; 20 if (ab) { 21 free(ab); 22 return; 23 } 24 free(ac); 25 return; 26 } 27 /* 28 * check-name: leak test #1 29 * check-command: smatch sm_memory.c 30 * 31 * check-output-start 32 sm_memory.c:22 func() warn: possible memory leak of 'ac' 33 sm_memory.c:22 func() error: memory leak of 'ac' 34 * check-output-end 35 */