7 int mylock = 1;
8
9 if (!({frob(); frob(); _spin_trylock(mylock);}))
10 return;
11
12 frob();
13 _spin_unlock(mylock);
14
15 if (((_spin_trylock(mylock)?1:0)?1:0))
16 return;
17 frob_somemore();
18 _spin_unlock(mylock);
19
20 return;
21 }
22 /*
23 * check-name: Smatch locking #3
24 * check-command: smatch --project=kernel sm_locking3.c
25 *
26 * check-output-start
27 sm_locking3.c:18 func() error: double unlock 'spin_lock:mylock'
28 sm_locking3.c:20 func() warn: inconsistent returns 'spin_lock:mylock'.
29 Locked on: line 16
30 Unlocked on: line 10
31 line 20
32 * check-output-end
33 */
|
7 int mylock = 1;
8
9 if (!({frob(); frob(); _spin_trylock(mylock);}))
10 return;
11
12 frob();
13 _spin_unlock(mylock);
14
15 if (((_spin_trylock(mylock)?1:0)?1:0))
16 return;
17 frob_somemore();
18 _spin_unlock(mylock);
19
20 return;
21 }
22 /*
23 * check-name: Smatch locking #3
24 * check-command: smatch --project=kernel sm_locking3.c
25 *
26 * check-output-start
27 sm_locking3.c:18 func() error: double unlocked 'mylock' (orig line 15)
28 sm_locking3.c:20 func() warn: inconsistent returns 'mylock'.
29 Locked on : 16
30 Unlocked on: 10,20
31 * check-output-end
32 */
|