xref: /illumos-gate/usr/src/tools/smatch/src/validation/sm_locking4.c (revision 31ad075e90bf5afda8ab4b8cc4d3ca3e89946115)
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