xref: /illumos-gate/usr/src/tools/smatch/src/validation/sm_locking4.c (revision 1f5207b7604fb44407eb4342aff613f7c4508508)
1 void _spin_lock(int name);
2 void _spin_unlock(int name);
3 
4 void frob(void){}
5 int a;
6 int b;
7 void func (void)
8 {
9 	int mylock = 1;
10 	int mylock2 = 2;
11 
12 	if (1)
13 	      	_spin_unlock(mylock);
14 	frob();
15 	if (a)
16 		return;
17 	if (!0)
18 	      	_spin_lock(mylock);
19 	if (0)
20 	      	_spin_unlock(mylock);
21 	if (b)
22 		return;
23 	if (!1)
24 	      	_spin_lock(mylock);
25 }
26 /*
27  * check-name: Smatch locking #4
28  * check-command: smatch --project=kernel sm_locking4.c
29  *
30  * check-output-start
31 sm_locking4.c:23 func() warn: inconsistent returns 'spin_lock:mylock'.
32   Locked on:   line 22
33                line 23
34   Unlocked on: line 16
35  * check-output-end
36  */
37