Print this page
12257 resync smatch to 0.6.1-rc1-il-4
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/tools/smatch/src/validation/sm_locking6.c
+++ new/usr/src/tools/smatch/src/validation/sm_locking6.c
1 1 int __raw_local_irq_save();
2 2 int _spin_trylock(int x);
3 3 int raw_local_irq_restore(flags);
4 4
5 5 #define spin_trylock_irqsave(lock, flags) \
6 6 ({ \
7 7 (flags) = __raw_local_irq_save(); \
8 8 _spin_trylock(lock) ? 1 : ({ raw_local_irq_restore(flags); 0; }); \
9 9 })
10 10
11 11 void _spin_unlock_irqrestore(int lock, int flags);
12 12
13 13 int zzz;
14 14
15 15 void func (void)
16 16 {
17 17 int lock = 1;
18 18 int flags = 1;
19 19
20 20 if (!spin_trylock_irqsave(lock, flags))
21 21 return;
22 22 _spin_unlock_irqrestore(lock, flags);
23 23 if (zzz)
↓ open down ↓ |
23 lines elided |
↑ open up ↑ |
24 24 return;
25 25 if (spin_trylock_irqsave(lock, flags))
26 26 return;
27 27 return;
28 28 }
29 29 /*
30 30 * check-name: Smatch locking #6
31 31 * check-command: smatch -p=kernel sm_locking6.c
32 32 *
33 33 * check-output-start
34 -sm_locking6.c:27 func() warn: inconsistent returns 'irqsave:flags'.
35 - Locked on: line 26
36 - Unlocked on: line 21
37 - line 24
38 - line 27
39 -sm_locking6.c:27 func() warn: inconsistent returns 'spin_lock:lock'.
40 - Locked on: line 26
41 - Unlocked on: line 21
42 - line 24
43 - line 27
34 +sm_locking6.c:27 func() warn: inconsistent returns 'flags'.
35 + Locked on : 26
36 + Unlocked on: 21,24,27
37 +sm_locking6.c:27 func() warn: inconsistent returns 'lock'.
38 + Locked on : 26
39 + Unlocked on: 21,24,27
44 40 * check-output-end
45 41 */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX