diff options
-rw-r--r-- | scripts/coccinelle/misc/boolconv.cocci | 90 | ||||
-rw-r--r-- | scripts/coccinelle/misc/irqf_oneshot.cocci | 52 | ||||
-rwxr-xr-x | scripts/package/mkspec | 3 |
3 files changed, 128 insertions, 17 deletions
diff --git a/scripts/coccinelle/misc/boolconv.cocci b/scripts/coccinelle/misc/boolconv.cocci new file mode 100644 index 000000000000..33c464d6bc71 --- /dev/null +++ b/scripts/coccinelle/misc/boolconv.cocci | |||
@@ -0,0 +1,90 @@ | |||
1 | /// Remove unneeded conversion to bool | ||
2 | /// | ||
3 | //# Relational and logical operators evaluate to bool, | ||
4 | //# explicit conversion is overly verbose and unneeded. | ||
5 | // | ||
6 | // Copyright: (C) 2016 Andrew F. Davis <afd@ti.com> GPLv2. | ||
7 | |||
8 | virtual patch | ||
9 | virtual context | ||
10 | virtual org | ||
11 | virtual report | ||
12 | |||
13 | //---------------------------------------------------------- | ||
14 | // For patch mode | ||
15 | //---------------------------------------------------------- | ||
16 | |||
17 | @depends on patch@ | ||
18 | expression A, B; | ||
19 | symbol true, false; | ||
20 | @@ | ||
21 | |||
22 | ( | ||
23 | A == B | ||
24 | | | ||
25 | A != B | ||
26 | | | ||
27 | A > B | ||
28 | | | ||
29 | A < B | ||
30 | | | ||
31 | A >= B | ||
32 | | | ||
33 | A <= B | ||
34 | | | ||
35 | A && B | ||
36 | | | ||
37 | A || B | ||
38 | ) | ||
39 | - ? true : false | ||
40 | |||
41 | //---------------------------------------------------------- | ||
42 | // For context mode | ||
43 | //---------------------------------------------------------- | ||
44 | |||
45 | @r depends on !patch@ | ||
46 | expression A, B; | ||
47 | symbol true, false; | ||
48 | position p; | ||
49 | @@ | ||
50 | |||
51 | ( | ||
52 | A == B | ||
53 | | | ||
54 | A != B | ||
55 | | | ||
56 | A > B | ||
57 | | | ||
58 | A < B | ||
59 | | | ||
60 | A >= B | ||
61 | | | ||
62 | A <= B | ||
63 | | | ||
64 | A && B | ||
65 | | | ||
66 | A || B | ||
67 | ) | ||
68 | * ? true : false@p | ||
69 | |||
70 | //---------------------------------------------------------- | ||
71 | // For org mode | ||
72 | //---------------------------------------------------------- | ||
73 | |||
74 | @script:python depends on r&&org@ | ||
75 | p << r.p; | ||
76 | @@ | ||
77 | |||
78 | msg = "WARNING: conversion to bool not needed here" | ||
79 | coccilib.org.print_todo(p[0], msg) | ||
80 | |||
81 | //---------------------------------------------------------- | ||
82 | // For report mode | ||
83 | //---------------------------------------------------------- | ||
84 | |||
85 | @script:python depends on r&&report@ | ||
86 | p << r.p; | ||
87 | @@ | ||
88 | |||
89 | msg = "WARNING: conversion to bool not needed here" | ||
90 | coccilib.report.print_report(p[0], msg) | ||
diff --git a/scripts/coccinelle/misc/irqf_oneshot.cocci b/scripts/coccinelle/misc/irqf_oneshot.cocci index b421150a2eff..f698d6d0f5d7 100644 --- a/scripts/coccinelle/misc/irqf_oneshot.cocci +++ b/scripts/coccinelle/misc/irqf_oneshot.cocci | |||
@@ -5,7 +5,7 @@ | |||
5 | /// So pass the IRQF_ONESHOT flag in this case. | 5 | /// So pass the IRQF_ONESHOT flag in this case. |
6 | /// | 6 | /// |
7 | // | 7 | // |
8 | // Confidence: Good | 8 | // Confidence: Moderate |
9 | // Comments: | 9 | // Comments: |
10 | // Options: --no-includes | 10 | // Options: --no-includes |
11 | 11 | ||
@@ -15,16 +15,13 @@ virtual org | |||
15 | virtual report | 15 | virtual report |
16 | 16 | ||
17 | @r1@ | 17 | @r1@ |
18 | expression dev; | 18 | expression dev, irq, thread_fn; |
19 | expression irq; | ||
20 | expression thread_fn; | ||
21 | expression flags; | ||
22 | position p; | 19 | position p; |
23 | @@ | 20 | @@ |
24 | ( | 21 | ( |
25 | request_threaded_irq@p(irq, NULL, thread_fn, | 22 | request_threaded_irq@p(irq, NULL, thread_fn, |
26 | ( | 23 | ( |
27 | flags | IRQF_ONESHOT | 24 | IRQF_ONESHOT | ... |
28 | | | 25 | | |
29 | IRQF_ONESHOT | 26 | IRQF_ONESHOT |
30 | ) | 27 | ) |
@@ -32,21 +29,34 @@ IRQF_ONESHOT | |||
32 | | | 29 | | |
33 | devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, | 30 | devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, |
34 | ( | 31 | ( |
35 | flags | IRQF_ONESHOT | 32 | IRQF_ONESHOT | ... |
36 | | | 33 | | |
37 | IRQF_ONESHOT | 34 | IRQF_ONESHOT |
38 | ) | 35 | ) |
39 | , ...) | 36 | , ...) |
40 | ) | 37 | ) |
41 | 38 | ||
42 | @depends on patch@ | 39 | @r2@ |
43 | expression dev; | 40 | expression dev, irq, thread_fn, flags, e; |
44 | expression irq; | ||
45 | expression thread_fn; | ||
46 | expression flags; | ||
47 | position p != r1.p; | 41 | position p != r1.p; |
48 | @@ | 42 | @@ |
49 | ( | 43 | ( |
44 | flags = IRQF_ONESHOT | ... | ||
45 | | | ||
46 | flags |= IRQF_ONESHOT | ... | ||
47 | ) | ||
48 | ... when != flags = e | ||
49 | ( | ||
50 | request_threaded_irq@p(irq, NULL, thread_fn, flags, ...); | ||
51 | | | ||
52 | devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, flags, ...); | ||
53 | ) | ||
54 | |||
55 | @depends on patch@ | ||
56 | expression dev, irq, thread_fn, flags; | ||
57 | position p != {r1.p,r2.p}; | ||
58 | @@ | ||
59 | ( | ||
50 | request_threaded_irq@p(irq, NULL, thread_fn, | 60 | request_threaded_irq@p(irq, NULL, thread_fn, |
51 | ( | 61 | ( |
52 | -0 | 62 | -0 |
@@ -69,15 +79,25 @@ devm_request_threaded_irq@p(dev, irq, NULL, thread_fn, | |||
69 | ) | 79 | ) |
70 | 80 | ||
71 | @depends on context@ | 81 | @depends on context@ |
72 | position p != r1.p; | 82 | expression dev, irq; |
83 | position p != {r1.p,r2.p}; | ||
73 | @@ | 84 | @@ |
74 | *request_threaded_irq@p(...) | 85 | ( |
86 | *request_threaded_irq@p(irq, NULL, ...) | ||
87 | | | ||
88 | *devm_request_threaded_irq@p(dev, irq, NULL, ...) | ||
89 | ) | ||
90 | |||
75 | 91 | ||
76 | @match depends on report || org@ | 92 | @match depends on report || org@ |
77 | expression irq; | 93 | expression dev, irq; |
78 | position p != r1.p; | 94 | position p != {r1.p,r2.p}; |
79 | @@ | 95 | @@ |
96 | ( | ||
80 | request_threaded_irq@p(irq, NULL, ...) | 97 | request_threaded_irq@p(irq, NULL, ...) |
98 | | | ||
99 | devm_request_threaded_irq@p(dev, irq, NULL, ...) | ||
100 | ) | ||
81 | 101 | ||
82 | @script:python depends on org@ | 102 | @script:python depends on org@ |
83 | p << match.p; | 103 | p << match.p; |
diff --git a/scripts/package/mkspec b/scripts/package/mkspec index 57673bae5597..bb43f153fd8e 100755 --- a/scripts/package/mkspec +++ b/scripts/package/mkspec | |||
@@ -116,7 +116,8 @@ echo 'mv vmlinux.bz2 $RPM_BUILD_ROOT'"/boot/vmlinux-$KERNELRELEASE.bz2" | |||
116 | echo "%endif" | 116 | echo "%endif" |
117 | 117 | ||
118 | if ! $PREBUILT; then | 118 | if ! $PREBUILT; then |
119 | echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/{build,source}" | 119 | echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/build" |
120 | echo 'rm -f $RPM_BUILD_ROOT'"/lib/modules/$KERNELRELEASE/source" | ||
120 | echo "mkdir -p "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE" | 121 | echo "mkdir -p "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE" |
121 | echo "EXCLUDES=\"$RCS_TAR_IGNORE --exclude .tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d\"" | 122 | echo "EXCLUDES=\"$RCS_TAR_IGNORE --exclude .tmp_versions --exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation --exclude=firmware --exclude .config.old --exclude .missing-syscalls.d\"" |
122 | echo "tar "'$EXCLUDES'" -cf- . | (cd "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE;tar xvf -)" | 123 | echo "tar "'$EXCLUDES'" -cf- . | (cd "'$RPM_BUILD_ROOT'"/usr/src/kernels/$KERNELRELEASE;tar xvf -)" |