11f5207b7SJohn Levon void _spin_lock(int name); 21f5207b7SJohn Levon void _spin_unlock(int name); 31f5207b7SJohn Levon 41f5207b7SJohn Levon void frob(void){} 51f5207b7SJohn Levon int a; 61f5207b7SJohn Levon int b; 71f5207b7SJohn Levon void func (void) 81f5207b7SJohn Levon { 91f5207b7SJohn Levon int mylock = 1; 101f5207b7SJohn Levon int mylock2 = 2; 111f5207b7SJohn Levon 121f5207b7SJohn Levon if (1) 131f5207b7SJohn Levon _spin_unlock(mylock); 141f5207b7SJohn Levon frob(); 151f5207b7SJohn Levon if (a) 161f5207b7SJohn Levon return; 171f5207b7SJohn Levon if (!0) 181f5207b7SJohn Levon _spin_lock(mylock); 191f5207b7SJohn Levon if (0) 201f5207b7SJohn Levon _spin_unlock(mylock); 211f5207b7SJohn Levon if (b) 221f5207b7SJohn Levon return; 231f5207b7SJohn Levon if (!1) 241f5207b7SJohn Levon _spin_lock(mylock); 251f5207b7SJohn Levon } 261f5207b7SJohn Levon /* 271f5207b7SJohn Levon * check-name: Smatch locking #4 281f5207b7SJohn Levon * check-command: smatch --project=kernel sm_locking4.c 291f5207b7SJohn Levon * 301f5207b7SJohn Levon * check-output-start 31*31ad075eSJohn Levon sm_locking4.c:23 func() warn: inconsistent returns 'mylock'. 32*31ad075eSJohn Levon Locked on : 22-23 33*31ad075eSJohn Levon Unlocked on: 16 341f5207b7SJohn Levon * check-output-end 351f5207b7SJohn Levon */ 36