Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1300528 > unrolled thread
| Started by | Andrzej Hajda <a.hajda@samsung.com> |
|---|---|
| First post | 2016-01-04 08:50 +0100 |
| Last post | 2016-01-07 15:40 +0100 |
| Articles | 12 — 4 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero Andrzej Hajda <a.hajda@samsung.com> - 2016-01-04 08:50 +0100
Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero "Geyslan G. Bem" <geyslan@gmail.com> - 2016-01-05 14:00 +0100
Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero Julia Lawall <julia.lawall@lip6.fr> - 2016-01-05 14:10 +0100
Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero "Geyslan G. Bem" <geyslan@gmail.com> - 2016-01-05 15:20 +0100
Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero "Geyslan G. Bem" <geyslan@gmail.com> - 2016-01-05 17:50 +0100
Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero Andrzej Hajda <a.hajda@samsung.com> - 2016-01-05 15:00 +0100
Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero "Geyslan G. Bem" <geyslan@gmail.com> - 2016-01-05 15:20 +0100
Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero Julia Lawall <julia.lawall@lip6.fr> - 2016-01-05 15:20 +0100
Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero Andrzej Hajda <a.hajda@samsung.com> - 2016-01-05 15:30 +0100
[PATCH v7] coccinelle: tests: unsigned value cannot be lesser than zero Andrzej Hajda <a.hajda@samsung.com> - 2016-01-07 10:40 +0100
Re: [PATCH v7] coccinelle: tests: unsigned value cannot be lesser than zero Julia Lawall <julia.lawall@lip6.fr> - 2016-01-07 12:40 +0100
Re: [PATCH v7] coccinelle: tests: unsigned value cannot be lesser than zero Michal Marek <mmarek@suse.com> - 2016-01-07 15:40 +0100
| From | Andrzej Hajda <a.hajda@samsung.com> |
|---|---|
| Date | 2016-01-04 08:50 +0100 |
| Subject | [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qN83U-op-13@gated-at.bofh.it> |
Unsigned expressions cannot be lesser than zero. Presence of comparisons
'unsigned (<|<=|>|>=) 0' often indicates a bug, usually wrong type of variable.
The patch beside finding such comparisons tries to eliminate false positives,
mainly by bypassing range checks.
gcc can detect such comparisons also using -Wtype-limits switch, but it warns
also in correct cases, making too much noise.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
v6: improved range check detection (according to Julia suggestion)
v5: improved range check detection
v4: added range check detection, added full check in case value holds a result
of signed function
v3: added bool type
v2: added --all-includes option
---
.../tests/unsigned_lesser_than_zero.cocci | 76 ++++++++++++++++++++++
1 file changed, 76 insertions(+)
create mode 100644 scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
diff --git a/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
new file mode 100644
index 0000000..b9c7ed8
--- /dev/null
+++ b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
@@ -0,0 +1,76 @@
+/// Unsigned expressions cannot be lesser than zero. Presence of
+/// comparisons 'unsigned (<|<=|>|>=) 0' often indicates a bug,
+/// usually wrong type of variable.
+///
+/// To reduce number of false positives following tests have been added:
+/// - parts of range checks are skipped, eg. "if (u < 0 || u > 15) ...",
+/// developers prefer to keep such code,
+/// - comparisons "<= 0" and "> 0" are performed only on results of
+/// signed functions/macros,
+/// - hardcoded list of signed functions/macros with always non-negative
+/// result is used to avoid false positives difficult to detect by other ways
+///
+// Confidence: Average
+// Copyright: (C) 2016 Andrzej Hajda, Samsung Electronics Co., Ltd. GPLv2.
+// URL: http://coccinelle.lip6.fr/
+// Options: --all-includes
+
+virtual context
+virtual org
+virtual report
+
+@r_cmp@
+position p;
+typedef bool, u8, u16, u32, u64;
+{unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long,
+ size_t, bool, u8, u16, u32, u64} v;
+expression e;
+@@
+
+ \( v = e \| &v \)
+ ...
+ (\( v@p < 0 \| v@p <= 0 \| v@p >= 0 \| v@p > 0 \))
+
+@r@
+position r_cmp.p;
+typedef s8, s16, s32, s64;
+{char, short, int, long, long long, ssize_t, s8, s16, s32, s64} vs;
+expression c, e, v;
+identifier f !~ "^(ata_id_queue_depth|btrfs_copy_from_user|dma_map_sg|dma_map_sg_attrs|fls|fls64|gameport_time|get_write_extents|nla_len|ntoh24|of_flat_dt_match|of_get_child_count|uart_circ_chars_pending|[A-Z0-9_]+)$";
+@@
+
+(
+ v = f(...)@vs;
+ ... when != v = e;
+* (\( v@p <=@e 0 \| v@p >@e 0 \))
+ ... when any
+|
+(
+ (\( v@p < 0 \| v@p <= 0 \)) || ... || (\( v >= c \| v > c \))
+|
+ (\( v >= c \| v > c \)) || ... || (\( v@p < 0 \| v@p <= 0 \))
+|
+ (\( v@p >= 0 \| v@p > 0 \)) && ... && (\( v < c \| v <= c \))
+|
+ ((\( v < c \| v <= c \) && ... && \( v@p >= 0 \| v@p > 0 \)))
+|
+* (\( v@p <@e 0 \| v@p >=@e 0 \))
+)
+)
+
+@script:python depends on org@
+p << r_cmp.p;
+e << r.e = "";
+@@
+
+msg = "WARNING: Unsigned expression compared with zero: %s" % (e)
+coccilib.org.print_todo(p[0], msg)
+
+@script:python depends on report@
+p << r_cmp.p;
+e << r.e = "";
+@@
+
+msg = "WARNING: Unsigned expression compared with zero: %s" % (e)
+if e:
+ coccilib.report.print_report(p[0], msg)
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | "Geyslan G. Bem" <geyslan@gmail.com> |
|---|---|
| Date | 2016-01-05 14:00 +0100 |
| Subject | Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qNznt-2S7-17@gated-at.bofh.it> |
| In reply to | #1300528 |
Hello,
2016-01-04 4:45 GMT-03:00 Andrzej Hajda <a.hajda@samsung.com>:
> Unsigned expressions cannot be lesser than zero. Presence of comparisons
> 'unsigned (<|<=|>|>=) 0' often indicates a bug, usually wrong type of variable.
> The patch beside finding such comparisons tries to eliminate false positives,
> mainly by bypassing range checks.
>
> gcc can detect such comparisons also using -Wtype-limits switch, but it warns
> also in correct cases, making too much noise.
>
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
> v6: improved range check detection (according to Julia suggestion)
> v5: improved range check detection
> v4: added range check detection, added full check in case value holds a result
> of signed function
> v3: added bool type
> v2: added --all-includes option
> ---
> .../tests/unsigned_lesser_than_zero.cocci | 76 ++++++++++++++++++++++
> 1 file changed, 76 insertions(+)
> create mode 100644 scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
>
> diff --git a/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
> new file mode 100644
> index 0000000..b9c7ed8
> --- /dev/null
> +++ b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
> @@ -0,0 +1,76 @@
> +/// Unsigned expressions cannot be lesser than zero. Presence of
> +/// comparisons 'unsigned (<|<=|>|>=) 0' often indicates a bug,
> +/// usually wrong type of variable.
> +///
> +/// To reduce number of false positives following tests have been added:
> +/// - parts of range checks are skipped, eg. "if (u < 0 || u > 15) ...",
> +/// developers prefer to keep such code,
> +/// - comparisons "<= 0" and "> 0" are performed only on results of
> +/// signed functions/macros,
Why common unsigned comparisons with <= 0 are not being detected? I
think that it misleads the code reading and induces further bugs.
Just reading "var <= 0" infers that var can receive signed value. The
be clear the comparison should be against zero only "var == 0" or
depending of the context "!var".
> +/// - hardcoded list of signed functions/macros with always non-negative
> +/// result is used to avoid false positives difficult to detect by other ways
> +///
> +// Confidence: Average
> +// Copyright: (C) 2016 Andrzej Hajda, Samsung Electronics Co., Ltd. GPLv2.
> +// URL: http://coccinelle.lip6.fr/
> +// Options: --all-includes
> +
> +virtual context
> +virtual org
> +virtual report
> +
> +@r_cmp@
> +position p;
> +typedef bool, u8, u16, u32, u64;
> +{unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long,
> + size_t, bool, u8, u16, u32, u64} v;
> +expression e;
> +@@
> +
> + \( v = e \| &v \)
> + ...
> + (\( v@p < 0 \| v@p <= 0 \| v@p >= 0 \| v@p > 0 \))
> +
> +@r@
> +position r_cmp.p;
> +typedef s8, s16, s32, s64;
> +{char, short, int, long, long long, ssize_t, s8, s16, s32, s64} vs;
> +expression c, e, v;
> +identifier f !~ "^(ata_id_queue_depth|btrfs_copy_from_user|dma_map_sg|dma_map_sg_attrs|fls|fls64|gameport_time|get_write_extents|nla_len|ntoh24|of_flat_dt_match|of_get_child_count|uart_circ_chars_pending|[A-Z0-9_]+)$";
> +@@
> +
> +(
> + v = f(...)@vs;
> + ... when != v = e;
> +* (\( v@p <=@e 0 \| v@p >@e 0 \))
> + ... when any
> +|
> +(
> + (\( v@p < 0 \| v@p <= 0 \)) || ... || (\( v >= c \| v > c \))
> +|
> + (\( v >= c \| v > c \)) || ... || (\( v@p < 0 \| v@p <= 0 \))
> +|
> + (\( v@p >= 0 \| v@p > 0 \)) && ... && (\( v < c \| v <= c \))
> +|
> + ((\( v < c \| v <= c \) && ... && \( v@p >= 0 \| v@p > 0 \)))
> +|
> +* (\( v@p <@e 0 \| v@p >=@e 0 \))
> +)
> +)
> +
> +@script:python depends on org@
> +p << r_cmp.p;
> +e << r.e = "";
> +@@
> +
> +msg = "WARNING: Unsigned expression compared with zero: %s" % (e)
> +coccilib.org.print_todo(p[0], msg)
> +
> +@script:python depends on report@
> +p << r_cmp.p;
> +e << r.e = "";
> +@@
> +
> +msg = "WARNING: Unsigned expression compared with zero: %s" % (e)
> +if e:
> + coccilib.report.print_report(p[0], msg)
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
This cocci triggered an error in spatch:
$ make coccicheck
COCCI=~/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
You have not explicitly specified the mode to use. Using default "report" mode.
Available modes are the following: patch, report, context, org
You can specify the mode with "make coccicheck MODE=<mode>"
Note however that some modes are not implemented by some semantic patches.
Please check for false positives in the output before submitting a patch.
When using "patch" mode, carefully review the patch before submitting it.
./drivers/staging/media/lirc/lirc_parallel.c:163:22-33: WARNING:
Unsigned expression compared with zero: timeelapsed > 0
./drivers/hwmon/amc6821.c:228:6-9: WARNING: Unsigned expression
compared with zero: reg > 0
./drivers/hwmon/amc6821.c:241:6-9: WARNING: Unsigned expression
compared with zero: reg > 0
*** Error in `/usr/lib/coccinelle/spatch': corrupted double-linked
list (not small): 0x0000000001c523d0 ***
======= Backtrace: =========
/usr/lib/libc.so.6(+0x72055)[0x7fb3ec683055]
/usr/lib/libc.so.6(+0x779a6)[0x7fb3ec6889a6]
/usr/lib/libc.so.6(+0x7a2d3)[0x7fb3ec68b2d3]
/usr/lib/libc.so.6(__libc_malloc+0x54)[0x7fb3ec68c3d4]
/usr/lib/coccinelle/spatch(caml_stat_alloc+0x9)[0x42dd14]
/usr/lib/coccinelle/spatch(caml_open_descriptor_in+0x12)[0x432fe2]
/usr/lib/coccinelle/spatch(caml_ml_open_descriptor_in+0xc)[0x43368f]
/usr/lib/coccinelle/spatch(caml_interprete+0x14ba)[0x43e9e1]
/usr/lib/coccinelle/spatch(caml_main+0x371)[0x42b327]
/usr/lib/coccinelle/spatch(main+0xc)[0x43d513]
/usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7fb3ec631610]
/usr/lib/coccinelle/spatch(_start+0x29)[0x417609]
======= Memory map: ========
00400000-00452000 r-xp 00000000 08:03 1318169
/usr/lib/coccinelle/spatch
00651000-00656000 rw-p 00051000 08:03 1318169
/usr/lib/coccinelle/spatch
00656000-00664000 rw-p 00000000 00:00 0
019ea000-0c642000 rw-p 00000000 00:00 0 [heap]
7fb3e4000000-7fb3e4021000 rw-p 00000000 00:00 0
7fb3e4021000-7fb3e8000000 ---p 00000000 00:00 0
7fb3ea931000-7fb3eab32000 rw-p 00000000 00:00 0
7fb3eae36000-7fb3eaef6000 rw-p 00000000 00:00 0
7fb3eaef6000-7fb3eaef8000 r-xp 00000000 08:03 2365929
/usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so
7fb3eaef8000-7fb3eb0f7000 ---p 00002000 08:03 2365929
/usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so
7fb3eb0f7000-7fb3eb0f8000 r--p 00001000 08:03 2365929
/usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so
7fb3eb0f8000-7fb3eb0fa000 rw-p 00002000 08:03 2365929
/usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so
7fb3eb0fa000-7fb3eb13a000 rw-p 00000000 00:00 0
7fb3eb787000-7fb3ebb31000 r--p 00000000 08:03 2119451
/usr/lib/locale/locale-archive
7fb3ebb31000-7fb3ebe4a000 rw-p 00000000 00:00 0
7fb3ebfbe000-7fb3ebfd4000 r-xp 00000000 08:03 2100676
/usr/lib/libgcc_s.so.1
7fb3ebfd4000-7fb3ec1d3000 ---p 00016000 08:03 2100676
/usr/lib/libgcc_s.so.1
7fb3ec1d3000-7fb3ec1d4000 rw-p 00015000 08:03 2100676
/usr/lib/libgcc_s.so.1
7fb3ec20c000-7fb3ec40e000 rw-p 00000000 00:00 0
7fb3ec40e000-7fb3ec410000 r-xp 00000000 08:03 2100408
/usr/lib/libutil-2.22.so
7fb3ec410000-7fb3ec60f000 ---p 00002000 08:03 2100408
/usr/lib/libutil-2.22.so
7fb3ec60f000-7fb3ec610000 r--p 00001000 08:03 2100408
/usr/lib/libutil-2.22.so
7fb3ec610000-7fb3ec611000 rw-p 00002000 08:03 2100408
/usr/lib/libutil-2.22.so
7fb3ec611000-7fb3ec7ac000 r-xp 00000000 08:03 2100354
/usr/lib/libc-2.22.so
7fb3ec7ac000-7fb3ec9ab000 ---p 0019b000 08:03 2100354
/usr/lib/libc-2.22.so
7fb3ec9ab000-7fb3ec9af000 r--p 0019a000 08:03 2100354
/usr/lib/libc-2.22.so
7fb3ec9af000-7fb3ec9b1000 rw-p 0019e000 08:03 2100354
/usr/lib/libc-2.22.so
7fb3ec9b1000-7fb3ec9b5000 rw-p 00000000 00:00 0
7fb3ec9b5000-7fb3ec9cd000 r-xp 00000000 08:03 2100335
/usr/lib/libpthread-2.22.so
7fb3ec9cd000-7fb3ecbcc000 ---p 00018000 08:03 2100335
/usr/lib/libpthread-2.22.so
7fb3ecbcc000-7fb3ecbcd000 r--p 00017000 08:03 2100335
/usr/lib/libpthread-2.22.so
7fb3ecbcd000-7fb3ecbce000 rw-p 00018000 08:03 2100335
/usr/lib/libpthread-2.22.so
7fb3ecbce000-7fb3ecbd2000 rw-p 00000000 00:00 0
7fb3ecbd2000-7fb3ecc39000 r-xp 00000000 08:03 2100758
/usr/lib/libncursesw.so.6.0
7fb3ecc39000-7fb3ece39000 ---p 00067000 08:03 2100758
/usr/lib/libncursesw.so.6.0
7fb3ece39000-7fb3ece3d000 r--p 00067000 08:03 2100758
/usr/lib/libncursesw.so.6.0
7fb3ece3d000-7fb3ece3f000 rw-p 0006b000 08:03 2100758
/usr/lib/libncursesw.so.6.0
7fb3ece3f000-7fb3ece42000 r-xp 00000000 08:03 2100403
/usr/lib/libdl-2.22.so
7fb3ece42000-7fb3ed041000 ---p 00003000 08:03 2100403
/usr/lib/libdl-2.22.so
7fb3ed041000-7fb3ed042000 r--p 00002000 08:03 2100403
/usr/lib/libdl-2.22.so
7fb3ed042000-7fb3ed043000 rw-p 00003000 08:03 2100403
/usr/lib/libdl-2.22.so
7fb3ed043000-7fb3ed140000 r-xp 00000000 08:03 2100404
/usr/lib/libm-2.22.so
7fb3ed140000-7fb3ed33f000 ---p 000fd000 08:03 2100404
/usr/lib/libm-2.22.so
7fb3ed33f000-7fb3ed340000 r--p 000fc000 08:03 2100404
/usr/lib/libm-2.22.so
7fb3ed340000-7fb3ed341000 rw-p 000fd000 08:03 2100404
/usr/lib/libm-2.22.so
7fb3ed341000-7fb3ed578000 r-xp 00000000 08:03 2128110
/usr/lib/libpython3.5m.so.1.0
7fb3ed578000-7fb3ed778000 ---p 00237000 08:03 2128110
/usr/lib/libpython3.5m.so.1.0
7fb3ed778000-7fb3ed77a000 r--p 00237000 08:03 2128110
/usr/lib/libpython3.5m.so.1.0
7fb3ed77a000-7fb3ed7df000 rw-p 00239000 08:03 2128110
/usr/lib/libpython3.5m.so.1.0
7fb3ed7df000-7fb3ed80f000 rw-p 00000000 00:00 0
7fb3ed80f000-7fb3ed87e000 r-xp 00000000 08:03 2108758
/usr/lib/libpcre.so.1.2.6
7fb3ed87e000-7fb3eda7d000 ---p 0006f000 08:03 2108758
/usr/lib/libpcre.so.1.2.6
7fb3eda7d000-7fb3eda7e000 r--p 0006e000 08:03 2108758
/usr/lib/libpcre.so.1.2.6
7fb3eda7e000-7fb3eda7f000 rw-p 0006f000 08:03 2108758
/usr/lib/libpcre.so.1.2.6
7fb3eda7f000-7fb3edaa1000 r-xp 00000000 08:03 2100353
/usr/lib/ld-2.22.so
7fb3edaa2000-7fb3edc68000 rw-p 00000000 00:00 0
7fb3edc9f000-7fb3edca0000 rw-p 00000000 00:00 0
7fb3edca0000-7fb3edca1000 r--p 00021000 08:03 2100353
/usr/lib/ld-2.22.so
7fb3edca1000-7fb3edca2000 rw-p 00022000 08:03 2100353
/usr/lib/ld-2.22.so
7fb3edca2000-7fb3edca3000 rw-p 00000000 00:00 0
7ffdc8750000-7ffdc8773000 rw-p 00000000 00:00 0 [stack]
7ffdc8796000-7ffdc8798000 r--p 00000000 00:00 0 [vvar]
7ffdc8798000-7ffdc879a000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]
./scripts/coccicheck: line 97: 18682 Segmentation fault (core
dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff
--cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
--all-includes --dir . -I ./arch/x86/include -I
arch/x86/include/generated/uapi -I arch/x86/include/generated -I
include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi
-I ./include/uapi -I include/generated/uapi --include
./include/linux/kconfig.h --max 8 --index 0
./scripts/coccicheck: line 97: 18684 Segmentation fault (core
dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff
--cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
--all-includes --dir . -I ./arch/x86/include -I
arch/x86/include/generated/uapi -I arch/x86/include/generated -I
include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi
-I ./include/uapi -I include/generated/uapi --include
./include/linux/kconfig.h --max 8 --index 2
./scripts/coccicheck: line 97: 18685 Aborted (core
dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff
--cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
--all-includes --dir . -I ./arch/x86/include -I
arch/x86/include/generated/uapi -I arch/x86/include/generated -I
include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi
-I ./include/uapi -I include/generated/uapi --include
./include/linux/kconfig.h --max 8 --index 3
./scripts/coccicheck: line 97: 18686 Segmentation fault (core
dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff
--cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
--all-includes --dir . -I ./arch/x86/include -I
arch/x86/include/generated/uapi -I arch/x86/include/generated -I
include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi
-I ./include/uapi -I include/generated/uapi --include
./include/linux/kconfig.h --max 8 --index 4
./scripts/coccicheck: line 97: 18689 Segmentation fault (core
dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff
--cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
--all-includes --dir . -I ./arch/x86/include -I
arch/x86/include/generated/uapi -I arch/x86/include/generated -I
include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi
-I ./include/uapi -I include/generated/uapi --include
./include/linux/kconfig.h --max 8 --index 7
./drivers/cpufreq/cpufreq-dt.c:87:20-28: WARNING: Unsigned expression
compared with zero: volt_old > 0
./drivers/cpufreq/scpi-cpufreq.c:36:5-11: WARNING: Unsigned expression
compared with zero: domain < 0
./drivers/hsi/controllers/omap_ssi.c:327:5-12: WARNING: Unsigned
expression compared with zero: ssi -> id < 0
./drivers/clk/clk-vt8500.c:462:16-20: WARNING: Unsigned expression
compared with zero: div1 >= 0
./drivers/clk/clk-vt8500.c:506:16-20: WARNING: Unsigned expression
compared with zero: div1 >= 0
./drivers/clk/clk-vt8500.c:395:17-21: WARNING: Unsigned expression
compared with zero: div2 >= 0
./drivers/clk/clk-vt8500.c:463:17-21: WARNING: Unsigned expression
compared with zero: div2 >= 0
./drivers/clk/clk-vt8500.c:507:17-21: WARNING: Unsigned expression
compared with zero: div2 >= 0
^CMakefile:1488: recipe for target 'coccicheck' failed
make: *** [coccicheck] Error 1
--
Regards,
Geyslan G. Bem
hackingbits.com
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Julia Lawall <julia.lawall@lip6.fr> |
|---|---|
| Date | 2016-01-05 14:10 +0100 |
| Subject | Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qNzx9-3cW-25@gated-at.bofh.it> |
| In reply to | #1301508 |
> *** Error in `/usr/lib/coccinelle/spatch': corrupted double-linked > list (not small): 0x0000000001c523d0 *** > ======= Backtrace: ========= Wow... I've never seen an error from OCaml like that. What version of ocaml and Coccinelle are you using? julia > /usr/lib/libc.so.6(+0x72055)[0x7fb3ec683055] > /usr/lib/libc.so.6(+0x779a6)[0x7fb3ec6889a6] > /usr/lib/libc.so.6(+0x7a2d3)[0x7fb3ec68b2d3] > /usr/lib/libc.so.6(__libc_malloc+0x54)[0x7fb3ec68c3d4] > /usr/lib/coccinelle/spatch(caml_stat_alloc+0x9)[0x42dd14] > /usr/lib/coccinelle/spatch(caml_open_descriptor_in+0x12)[0x432fe2] > /usr/lib/coccinelle/spatch(caml_ml_open_descriptor_in+0xc)[0x43368f] > /usr/lib/coccinelle/spatch(caml_interprete+0x14ba)[0x43e9e1] > /usr/lib/coccinelle/spatch(caml_main+0x371)[0x42b327] > /usr/lib/coccinelle/spatch(main+0xc)[0x43d513] > /usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7fb3ec631610] > /usr/lib/coccinelle/spatch(_start+0x29)[0x417609] > ======= Memory map: ======== > 00400000-00452000 r-xp 00000000 08:03 1318169 > /usr/lib/coccinelle/spatch > 00651000-00656000 rw-p 00051000 08:03 1318169 > /usr/lib/coccinelle/spatch > 00656000-00664000 rw-p 00000000 00:00 0 > 019ea000-0c642000 rw-p 00000000 00:00 0 [heap] > 7fb3e4000000-7fb3e4021000 rw-p 00000000 00:00 0 > 7fb3e4021000-7fb3e8000000 ---p 00000000 00:00 0 > 7fb3ea931000-7fb3eab32000 rw-p 00000000 00:00 0 > 7fb3eae36000-7fb3eaef6000 rw-p 00000000 00:00 0 > 7fb3eaef6000-7fb3eaef8000 r-xp 00000000 08:03 2365929 > /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so > 7fb3eaef8000-7fb3eb0f7000 ---p 00002000 08:03 2365929 > /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so > 7fb3eb0f7000-7fb3eb0f8000 r--p 00001000 08:03 2365929 > /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so > 7fb3eb0f8000-7fb3eb0fa000 rw-p 00002000 08:03 2365929 > /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so > 7fb3eb0fa000-7fb3eb13a000 rw-p 00000000 00:00 0 > 7fb3eb787000-7fb3ebb31000 r--p 00000000 08:03 2119451 > /usr/lib/locale/locale-archive > 7fb3ebb31000-7fb3ebe4a000 rw-p 00000000 00:00 0 > 7fb3ebfbe000-7fb3ebfd4000 r-xp 00000000 08:03 2100676 > /usr/lib/libgcc_s.so.1 > 7fb3ebfd4000-7fb3ec1d3000 ---p 00016000 08:03 2100676 > /usr/lib/libgcc_s.so.1 > 7fb3ec1d3000-7fb3ec1d4000 rw-p 00015000 08:03 2100676 > /usr/lib/libgcc_s.so.1 > 7fb3ec20c000-7fb3ec40e000 rw-p 00000000 00:00 0 > 7fb3ec40e000-7fb3ec410000 r-xp 00000000 08:03 2100408 > /usr/lib/libutil-2.22.so > 7fb3ec410000-7fb3ec60f000 ---p 00002000 08:03 2100408 > /usr/lib/libutil-2.22.so > 7fb3ec60f000-7fb3ec610000 r--p 00001000 08:03 2100408 > /usr/lib/libutil-2.22.so > 7fb3ec610000-7fb3ec611000 rw-p 00002000 08:03 2100408 > /usr/lib/libutil-2.22.so > 7fb3ec611000-7fb3ec7ac000 r-xp 00000000 08:03 2100354 > /usr/lib/libc-2.22.so > 7fb3ec7ac000-7fb3ec9ab000 ---p 0019b000 08:03 2100354 > /usr/lib/libc-2.22.so > 7fb3ec9ab000-7fb3ec9af000 r--p 0019a000 08:03 2100354 > /usr/lib/libc-2.22.so > 7fb3ec9af000-7fb3ec9b1000 rw-p 0019e000 08:03 2100354 > /usr/lib/libc-2.22.so > 7fb3ec9b1000-7fb3ec9b5000 rw-p 00000000 00:00 0 > 7fb3ec9b5000-7fb3ec9cd000 r-xp 00000000 08:03 2100335 > /usr/lib/libpthread-2.22.so > 7fb3ec9cd000-7fb3ecbcc000 ---p 00018000 08:03 2100335 > /usr/lib/libpthread-2.22.so > 7fb3ecbcc000-7fb3ecbcd000 r--p 00017000 08:03 2100335 > /usr/lib/libpthread-2.22.so > 7fb3ecbcd000-7fb3ecbce000 rw-p 00018000 08:03 2100335 > /usr/lib/libpthread-2.22.so > 7fb3ecbce000-7fb3ecbd2000 rw-p 00000000 00:00 0 > 7fb3ecbd2000-7fb3ecc39000 r-xp 00000000 08:03 2100758 > /usr/lib/libncursesw.so.6.0 > 7fb3ecc39000-7fb3ece39000 ---p 00067000 08:03 2100758 > /usr/lib/libncursesw.so.6.0 > 7fb3ece39000-7fb3ece3d000 r--p 00067000 08:03 2100758 > /usr/lib/libncursesw.so.6.0 > 7fb3ece3d000-7fb3ece3f000 rw-p 0006b000 08:03 2100758 > /usr/lib/libncursesw.so.6.0 > 7fb3ece3f000-7fb3ece42000 r-xp 00000000 08:03 2100403 > /usr/lib/libdl-2.22.so > 7fb3ece42000-7fb3ed041000 ---p 00003000 08:03 2100403 > /usr/lib/libdl-2.22.so > 7fb3ed041000-7fb3ed042000 r--p 00002000 08:03 2100403 > /usr/lib/libdl-2.22.so > 7fb3ed042000-7fb3ed043000 rw-p 00003000 08:03 2100403 > /usr/lib/libdl-2.22.so > 7fb3ed043000-7fb3ed140000 r-xp 00000000 08:03 2100404 > /usr/lib/libm-2.22.so > 7fb3ed140000-7fb3ed33f000 ---p 000fd000 08:03 2100404 > /usr/lib/libm-2.22.so > 7fb3ed33f000-7fb3ed340000 r--p 000fc000 08:03 2100404 > /usr/lib/libm-2.22.so > 7fb3ed340000-7fb3ed341000 rw-p 000fd000 08:03 2100404 > /usr/lib/libm-2.22.so > 7fb3ed341000-7fb3ed578000 r-xp 00000000 08:03 2128110 > /usr/lib/libpython3.5m.so.1.0 > 7fb3ed578000-7fb3ed778000 ---p 00237000 08:03 2128110 > /usr/lib/libpython3.5m.so.1.0 > 7fb3ed778000-7fb3ed77a000 r--p 00237000 08:03 2128110 > /usr/lib/libpython3.5m.so.1.0 > 7fb3ed77a000-7fb3ed7df000 rw-p 00239000 08:03 2128110 > /usr/lib/libpython3.5m.so.1.0 > 7fb3ed7df000-7fb3ed80f000 rw-p 00000000 00:00 0 > 7fb3ed80f000-7fb3ed87e000 r-xp 00000000 08:03 2108758 > /usr/lib/libpcre.so.1.2.6 > 7fb3ed87e000-7fb3eda7d000 ---p 0006f000 08:03 2108758 > /usr/lib/libpcre.so.1.2.6 > 7fb3eda7d000-7fb3eda7e000 r--p 0006e000 08:03 2108758 > /usr/lib/libpcre.so.1.2.6 > 7fb3eda7e000-7fb3eda7f000 rw-p 0006f000 08:03 2108758 > /usr/lib/libpcre.so.1.2.6 > 7fb3eda7f000-7fb3edaa1000 r-xp 00000000 08:03 2100353 > /usr/lib/ld-2.22.so > 7fb3edaa2000-7fb3edc68000 rw-p 00000000 00:00 0 > 7fb3edc9f000-7fb3edca0000 rw-p 00000000 00:00 0 > 7fb3edca0000-7fb3edca1000 r--p 00021000 08:03 2100353 > /usr/lib/ld-2.22.so > 7fb3edca1000-7fb3edca2000 rw-p 00022000 08:03 2100353 > /usr/lib/ld-2.22.so > 7fb3edca2000-7fb3edca3000 rw-p 00000000 00:00 0 > 7ffdc8750000-7ffdc8773000 rw-p 00000000 00:00 0 [stack] > 7ffdc8796000-7ffdc8798000 r--p 00000000 00:00 0 [vvar] > 7ffdc8798000-7ffdc879a000 r-xp 00000000 00:00 0 [vdso] > ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 > [vsyscall] > ./scripts/coccicheck: line 97: 18682 Segmentation fault (core > dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff > --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci > --all-includes --dir . -I ./arch/x86/include -I > arch/x86/include/generated/uapi -I arch/x86/include/generated -I > include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi > -I ./include/uapi -I include/generated/uapi --include > ./include/linux/kconfig.h --max 8 --index 0 > ./scripts/coccicheck: line 97: 18684 Segmentation fault (core > dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff > --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci > --all-includes --dir . -I ./arch/x86/include -I > arch/x86/include/generated/uapi -I arch/x86/include/generated -I > include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi > -I ./include/uapi -I include/generated/uapi --include > ./include/linux/kconfig.h --max 8 --index 2 > ./scripts/coccicheck: line 97: 18685 Aborted (core > dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff > --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci > --all-includes --dir . -I ./arch/x86/include -I > arch/x86/include/generated/uapi -I arch/x86/include/generated -I > include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi > -I ./include/uapi -I include/generated/uapi --include > ./include/linux/kconfig.h --max 8 --index 3 > ./scripts/coccicheck: line 97: 18686 Segmentation fault (core > dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff > --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci > --all-includes --dir . -I ./arch/x86/include -I > arch/x86/include/generated/uapi -I arch/x86/include/generated -I > include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi > -I ./include/uapi -I include/generated/uapi --include > ./include/linux/kconfig.h --max 8 --index 4 > ./scripts/coccicheck: line 97: 18689 Segmentation fault (core > dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff > --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci > --all-includes --dir . -I ./arch/x86/include -I > arch/x86/include/generated/uapi -I arch/x86/include/generated -I > include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi > -I ./include/uapi -I include/generated/uapi --include > ./include/linux/kconfig.h --max 8 --index 7 > ./drivers/cpufreq/cpufreq-dt.c:87:20-28: WARNING: Unsigned expression > compared with zero: volt_old > 0 > ./drivers/cpufreq/scpi-cpufreq.c:36:5-11: WARNING: Unsigned expression > compared with zero: domain < 0 > ./drivers/hsi/controllers/omap_ssi.c:327:5-12: WARNING: Unsigned > expression compared with zero: ssi -> id < 0 > ./drivers/clk/clk-vt8500.c:462:16-20: WARNING: Unsigned expression > compared with zero: div1 >= 0 > ./drivers/clk/clk-vt8500.c:506:16-20: WARNING: Unsigned expression > compared with zero: div1 >= 0 > ./drivers/clk/clk-vt8500.c:395:17-21: WARNING: Unsigned expression > compared with zero: div2 >= 0 > ./drivers/clk/clk-vt8500.c:463:17-21: WARNING: Unsigned expression > compared with zero: div2 >= 0 > ./drivers/clk/clk-vt8500.c:507:17-21: WARNING: Unsigned expression > compared with zero: div2 >= 0 > ^CMakefile:1488: recipe for target 'coccicheck' failed > make: *** [coccicheck] Error 1 > > > -- > Regards, > > Geyslan G. Bem > hackingbits.com > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Geyslan G. Bem" <geyslan@gmail.com> |
|---|---|
| Date | 2016-01-05 15:20 +0100 |
| Subject | Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qNACT-3VY-15@gated-at.bofh.it> |
| In reply to | #1301518 |
2016-01-05 10:02 GMT-03:00 Julia Lawall <julia.lawall@lip6.fr>: >> *** Error in `/usr/lib/coccinelle/spatch': corrupted double-linked >> list (not small): 0x0000000001c523d0 *** >> ======= Backtrace: ========= > > Wow... I've never seen an error from OCaml like that. > > What version of ocaml and Coccinelle are you using? $ ocaml -version The OCaml toplevel, version 4.02.3 $ spatch --version spatch version 1.0.4 with Python support and with PCRE support > > julia > >> /usr/lib/libc.so.6(+0x72055)[0x7fb3ec683055] >> /usr/lib/libc.so.6(+0x779a6)[0x7fb3ec6889a6] >> /usr/lib/libc.so.6(+0x7a2d3)[0x7fb3ec68b2d3] >> /usr/lib/libc.so.6(__libc_malloc+0x54)[0x7fb3ec68c3d4] >> /usr/lib/coccinelle/spatch(caml_stat_alloc+0x9)[0x42dd14] >> /usr/lib/coccinelle/spatch(caml_open_descriptor_in+0x12)[0x432fe2] >> /usr/lib/coccinelle/spatch(caml_ml_open_descriptor_in+0xc)[0x43368f] >> /usr/lib/coccinelle/spatch(caml_interprete+0x14ba)[0x43e9e1] >> /usr/lib/coccinelle/spatch(caml_main+0x371)[0x42b327] >> /usr/lib/coccinelle/spatch(main+0xc)[0x43d513] >> /usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7fb3ec631610] >> /usr/lib/coccinelle/spatch(_start+0x29)[0x417609] >> ======= Memory map: ======== >> 00400000-00452000 r-xp 00000000 08:03 1318169 >> /usr/lib/coccinelle/spatch >> 00651000-00656000 rw-p 00051000 08:03 1318169 >> /usr/lib/coccinelle/spatch >> 00656000-00664000 rw-p 00000000 00:00 0 >> 019ea000-0c642000 rw-p 00000000 00:00 0 [heap] >> 7fb3e4000000-7fb3e4021000 rw-p 00000000 00:00 0 >> 7fb3e4021000-7fb3e8000000 ---p 00000000 00:00 0 >> 7fb3ea931000-7fb3eab32000 rw-p 00000000 00:00 0 >> 7fb3eae36000-7fb3eaef6000 rw-p 00000000 00:00 0 >> 7fb3eaef6000-7fb3eaef8000 r-xp 00000000 08:03 2365929 >> /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so >> 7fb3eaef8000-7fb3eb0f7000 ---p 00002000 08:03 2365929 >> /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so >> 7fb3eb0f7000-7fb3eb0f8000 r--p 00001000 08:03 2365929 >> /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so >> 7fb3eb0f8000-7fb3eb0fa000 rw-p 00002000 08:03 2365929 >> /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so >> 7fb3eb0fa000-7fb3eb13a000 rw-p 00000000 00:00 0 >> 7fb3eb787000-7fb3ebb31000 r--p 00000000 08:03 2119451 >> /usr/lib/locale/locale-archive >> 7fb3ebb31000-7fb3ebe4a000 rw-p 00000000 00:00 0 >> 7fb3ebfbe000-7fb3ebfd4000 r-xp 00000000 08:03 2100676 >> /usr/lib/libgcc_s.so.1 >> 7fb3ebfd4000-7fb3ec1d3000 ---p 00016000 08:03 2100676 >> /usr/lib/libgcc_s.so.1 >> 7fb3ec1d3000-7fb3ec1d4000 rw-p 00015000 08:03 2100676 >> /usr/lib/libgcc_s.so.1 >> 7fb3ec20c000-7fb3ec40e000 rw-p 00000000 00:00 0 >> 7fb3ec40e000-7fb3ec410000 r-xp 00000000 08:03 2100408 >> /usr/lib/libutil-2.22.so >> 7fb3ec410000-7fb3ec60f000 ---p 00002000 08:03 2100408 >> /usr/lib/libutil-2.22.so >> 7fb3ec60f000-7fb3ec610000 r--p 00001000 08:03 2100408 >> /usr/lib/libutil-2.22.so >> 7fb3ec610000-7fb3ec611000 rw-p 00002000 08:03 2100408 >> /usr/lib/libutil-2.22.so >> 7fb3ec611000-7fb3ec7ac000 r-xp 00000000 08:03 2100354 >> /usr/lib/libc-2.22.so >> 7fb3ec7ac000-7fb3ec9ab000 ---p 0019b000 08:03 2100354 >> /usr/lib/libc-2.22.so >> 7fb3ec9ab000-7fb3ec9af000 r--p 0019a000 08:03 2100354 >> /usr/lib/libc-2.22.so >> 7fb3ec9af000-7fb3ec9b1000 rw-p 0019e000 08:03 2100354 >> /usr/lib/libc-2.22.so >> 7fb3ec9b1000-7fb3ec9b5000 rw-p 00000000 00:00 0 >> 7fb3ec9b5000-7fb3ec9cd000 r-xp 00000000 08:03 2100335 >> /usr/lib/libpthread-2.22.so >> 7fb3ec9cd000-7fb3ecbcc000 ---p 00018000 08:03 2100335 >> /usr/lib/libpthread-2.22.so >> 7fb3ecbcc000-7fb3ecbcd000 r--p 00017000 08:03 2100335 >> /usr/lib/libpthread-2.22.so >> 7fb3ecbcd000-7fb3ecbce000 rw-p 00018000 08:03 2100335 >> /usr/lib/libpthread-2.22.so >> 7fb3ecbce000-7fb3ecbd2000 rw-p 00000000 00:00 0 >> 7fb3ecbd2000-7fb3ecc39000 r-xp 00000000 08:03 2100758 >> /usr/lib/libncursesw.so.6.0 >> 7fb3ecc39000-7fb3ece39000 ---p 00067000 08:03 2100758 >> /usr/lib/libncursesw.so.6.0 >> 7fb3ece39000-7fb3ece3d000 r--p 00067000 08:03 2100758 >> /usr/lib/libncursesw.so.6.0 >> 7fb3ece3d000-7fb3ece3f000 rw-p 0006b000 08:03 2100758 >> /usr/lib/libncursesw.so.6.0 >> 7fb3ece3f000-7fb3ece42000 r-xp 00000000 08:03 2100403 >> /usr/lib/libdl-2.22.so >> 7fb3ece42000-7fb3ed041000 ---p 00003000 08:03 2100403 >> /usr/lib/libdl-2.22.so >> 7fb3ed041000-7fb3ed042000 r--p 00002000 08:03 2100403 >> /usr/lib/libdl-2.22.so >> 7fb3ed042000-7fb3ed043000 rw-p 00003000 08:03 2100403 >> /usr/lib/libdl-2.22.so >> 7fb3ed043000-7fb3ed140000 r-xp 00000000 08:03 2100404 >> /usr/lib/libm-2.22.so >> 7fb3ed140000-7fb3ed33f000 ---p 000fd000 08:03 2100404 >> /usr/lib/libm-2.22.so >> 7fb3ed33f000-7fb3ed340000 r--p 000fc000 08:03 2100404 >> /usr/lib/libm-2.22.so >> 7fb3ed340000-7fb3ed341000 rw-p 000fd000 08:03 2100404 >> /usr/lib/libm-2.22.so >> 7fb3ed341000-7fb3ed578000 r-xp 00000000 08:03 2128110 >> /usr/lib/libpython3.5m.so.1.0 >> 7fb3ed578000-7fb3ed778000 ---p 00237000 08:03 2128110 >> /usr/lib/libpython3.5m.so.1.0 >> 7fb3ed778000-7fb3ed77a000 r--p 00237000 08:03 2128110 >> /usr/lib/libpython3.5m.so.1.0 >> 7fb3ed77a000-7fb3ed7df000 rw-p 00239000 08:03 2128110 >> /usr/lib/libpython3.5m.so.1.0 >> 7fb3ed7df000-7fb3ed80f000 rw-p 00000000 00:00 0 >> 7fb3ed80f000-7fb3ed87e000 r-xp 00000000 08:03 2108758 >> /usr/lib/libpcre.so.1.2.6 >> 7fb3ed87e000-7fb3eda7d000 ---p 0006f000 08:03 2108758 >> /usr/lib/libpcre.so.1.2.6 >> 7fb3eda7d000-7fb3eda7e000 r--p 0006e000 08:03 2108758 >> /usr/lib/libpcre.so.1.2.6 >> 7fb3eda7e000-7fb3eda7f000 rw-p 0006f000 08:03 2108758 >> /usr/lib/libpcre.so.1.2.6 >> 7fb3eda7f000-7fb3edaa1000 r-xp 00000000 08:03 2100353 >> /usr/lib/ld-2.22.so >> 7fb3edaa2000-7fb3edc68000 rw-p 00000000 00:00 0 >> 7fb3edc9f000-7fb3edca0000 rw-p 00000000 00:00 0 >> 7fb3edca0000-7fb3edca1000 r--p 00021000 08:03 2100353 >> /usr/lib/ld-2.22.so >> 7fb3edca1000-7fb3edca2000 rw-p 00022000 08:03 2100353 >> /usr/lib/ld-2.22.so >> 7fb3edca2000-7fb3edca3000 rw-p 00000000 00:00 0 >> 7ffdc8750000-7ffdc8773000 rw-p 00000000 00:00 0 [stack] >> 7ffdc8796000-7ffdc8798000 r--p 00000000 00:00 0 [vvar] >> 7ffdc8798000-7ffdc879a000 r-xp 00000000 00:00 0 [vdso] >> ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 >> [vsyscall] >> ./scripts/coccicheck: line 97: 18682 Segmentation fault (core >> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >> --all-includes --dir . -I ./arch/x86/include -I >> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >> -I ./include/uapi -I include/generated/uapi --include >> ./include/linux/kconfig.h --max 8 --index 0 >> ./scripts/coccicheck: line 97: 18684 Segmentation fault (core >> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >> --all-includes --dir . -I ./arch/x86/include -I >> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >> -I ./include/uapi -I include/generated/uapi --include >> ./include/linux/kconfig.h --max 8 --index 2 >> ./scripts/coccicheck: line 97: 18685 Aborted (core >> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >> --all-includes --dir . -I ./arch/x86/include -I >> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >> -I ./include/uapi -I include/generated/uapi --include >> ./include/linux/kconfig.h --max 8 --index 3 >> ./scripts/coccicheck: line 97: 18686 Segmentation fault (core >> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >> --all-includes --dir . -I ./arch/x86/include -I >> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >> -I ./include/uapi -I include/generated/uapi --include >> ./include/linux/kconfig.h --max 8 --index 4 >> ./scripts/coccicheck: line 97: 18689 Segmentation fault (core >> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >> --all-includes --dir . -I ./arch/x86/include -I >> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >> -I ./include/uapi -I include/generated/uapi --include >> ./include/linux/kconfig.h --max 8 --index 7 >> ./drivers/cpufreq/cpufreq-dt.c:87:20-28: WARNING: Unsigned expression >> compared with zero: volt_old > 0 >> ./drivers/cpufreq/scpi-cpufreq.c:36:5-11: WARNING: Unsigned expression >> compared with zero: domain < 0 >> ./drivers/hsi/controllers/omap_ssi.c:327:5-12: WARNING: Unsigned >> expression compared with zero: ssi -> id < 0 >> ./drivers/clk/clk-vt8500.c:462:16-20: WARNING: Unsigned expression >> compared with zero: div1 >= 0 >> ./drivers/clk/clk-vt8500.c:506:16-20: WARNING: Unsigned expression >> compared with zero: div1 >= 0 >> ./drivers/clk/clk-vt8500.c:395:17-21: WARNING: Unsigned expression >> compared with zero: div2 >= 0 >> ./drivers/clk/clk-vt8500.c:463:17-21: WARNING: Unsigned expression >> compared with zero: div2 >= 0 >> ./drivers/clk/clk-vt8500.c:507:17-21: WARNING: Unsigned expression >> compared with zero: div2 >= 0 >> ^CMakefile:1488: recipe for target 'coccicheck' failed >> make: *** [coccicheck] Error 1 >> >> >> -- >> Regards, >> >> Geyslan G. Bem >> hackingbits.com >> -- Regards, Geyslan G. Bem hackingbits.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Geyslan G. Bem" <geyslan@gmail.com> |
|---|---|
| Date | 2016-01-05 17:50 +0100 |
| Subject | Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qNCY2-5qN-9@gated-at.bofh.it> |
| In reply to | #1301557 |
2016-01-05 11:10 GMT-03:00 Geyslan G. Bem <geyslan@gmail.com>: > 2016-01-05 10:02 GMT-03:00 Julia Lawall <julia.lawall@lip6.fr>: >>> *** Error in `/usr/lib/coccinelle/spatch': corrupted double-linked >>> list (not small): 0x0000000001c523d0 *** >>> ======= Backtrace: ========= >> >> Wow... I've never seen an error from OCaml like that. >> >> What version of ocaml and Coccinelle are you using? > $ ocaml -version > The OCaml toplevel, version 4.02.3 > > $ spatch --version > spatch version 1.0.4 with Python support and with PCRE support Please let me know anything about this issue. I would like to help. > >> >> julia >> >>> /usr/lib/libc.so.6(+0x72055)[0x7fb3ec683055] >>> /usr/lib/libc.so.6(+0x779a6)[0x7fb3ec6889a6] >>> /usr/lib/libc.so.6(+0x7a2d3)[0x7fb3ec68b2d3] >>> /usr/lib/libc.so.6(__libc_malloc+0x54)[0x7fb3ec68c3d4] >>> /usr/lib/coccinelle/spatch(caml_stat_alloc+0x9)[0x42dd14] >>> /usr/lib/coccinelle/spatch(caml_open_descriptor_in+0x12)[0x432fe2] >>> /usr/lib/coccinelle/spatch(caml_ml_open_descriptor_in+0xc)[0x43368f] >>> /usr/lib/coccinelle/spatch(caml_interprete+0x14ba)[0x43e9e1] >>> /usr/lib/coccinelle/spatch(caml_main+0x371)[0x42b327] >>> /usr/lib/coccinelle/spatch(main+0xc)[0x43d513] >>> /usr/lib/libc.so.6(__libc_start_main+0xf0)[0x7fb3ec631610] >>> /usr/lib/coccinelle/spatch(_start+0x29)[0x417609] >>> ======= Memory map: ======== >>> 00400000-00452000 r-xp 00000000 08:03 1318169 >>> /usr/lib/coccinelle/spatch >>> 00651000-00656000 rw-p 00051000 08:03 1318169 >>> /usr/lib/coccinelle/spatch >>> 00656000-00664000 rw-p 00000000 00:00 0 >>> 019ea000-0c642000 rw-p 00000000 00:00 0 [heap] >>> 7fb3e4000000-7fb3e4021000 rw-p 00000000 00:00 0 >>> 7fb3e4021000-7fb3e8000000 ---p 00000000 00:00 0 >>> 7fb3ea931000-7fb3eab32000 rw-p 00000000 00:00 0 >>> 7fb3eae36000-7fb3eaef6000 rw-p 00000000 00:00 0 >>> 7fb3eaef6000-7fb3eaef8000 r-xp 00000000 08:03 2365929 >>> /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so >>> 7fb3eaef8000-7fb3eb0f7000 ---p 00002000 08:03 2365929 >>> /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so >>> 7fb3eb0f7000-7fb3eb0f8000 r--p 00001000 08:03 2365929 >>> /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so >>> 7fb3eb0f8000-7fb3eb0fa000 rw-p 00002000 08:03 2365929 >>> /usr/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so >>> 7fb3eb0fa000-7fb3eb13a000 rw-p 00000000 00:00 0 >>> 7fb3eb787000-7fb3ebb31000 r--p 00000000 08:03 2119451 >>> /usr/lib/locale/locale-archive >>> 7fb3ebb31000-7fb3ebe4a000 rw-p 00000000 00:00 0 >>> 7fb3ebfbe000-7fb3ebfd4000 r-xp 00000000 08:03 2100676 >>> /usr/lib/libgcc_s.so.1 >>> 7fb3ebfd4000-7fb3ec1d3000 ---p 00016000 08:03 2100676 >>> /usr/lib/libgcc_s.so.1 >>> 7fb3ec1d3000-7fb3ec1d4000 rw-p 00015000 08:03 2100676 >>> /usr/lib/libgcc_s.so.1 >>> 7fb3ec20c000-7fb3ec40e000 rw-p 00000000 00:00 0 >>> 7fb3ec40e000-7fb3ec410000 r-xp 00000000 08:03 2100408 >>> /usr/lib/libutil-2.22.so >>> 7fb3ec410000-7fb3ec60f000 ---p 00002000 08:03 2100408 >>> /usr/lib/libutil-2.22.so >>> 7fb3ec60f000-7fb3ec610000 r--p 00001000 08:03 2100408 >>> /usr/lib/libutil-2.22.so >>> 7fb3ec610000-7fb3ec611000 rw-p 00002000 08:03 2100408 >>> /usr/lib/libutil-2.22.so >>> 7fb3ec611000-7fb3ec7ac000 r-xp 00000000 08:03 2100354 >>> /usr/lib/libc-2.22.so >>> 7fb3ec7ac000-7fb3ec9ab000 ---p 0019b000 08:03 2100354 >>> /usr/lib/libc-2.22.so >>> 7fb3ec9ab000-7fb3ec9af000 r--p 0019a000 08:03 2100354 >>> /usr/lib/libc-2.22.so >>> 7fb3ec9af000-7fb3ec9b1000 rw-p 0019e000 08:03 2100354 >>> /usr/lib/libc-2.22.so >>> 7fb3ec9b1000-7fb3ec9b5000 rw-p 00000000 00:00 0 >>> 7fb3ec9b5000-7fb3ec9cd000 r-xp 00000000 08:03 2100335 >>> /usr/lib/libpthread-2.22.so >>> 7fb3ec9cd000-7fb3ecbcc000 ---p 00018000 08:03 2100335 >>> /usr/lib/libpthread-2.22.so >>> 7fb3ecbcc000-7fb3ecbcd000 r--p 00017000 08:03 2100335 >>> /usr/lib/libpthread-2.22.so >>> 7fb3ecbcd000-7fb3ecbce000 rw-p 00018000 08:03 2100335 >>> /usr/lib/libpthread-2.22.so >>> 7fb3ecbce000-7fb3ecbd2000 rw-p 00000000 00:00 0 >>> 7fb3ecbd2000-7fb3ecc39000 r-xp 00000000 08:03 2100758 >>> /usr/lib/libncursesw.so.6.0 >>> 7fb3ecc39000-7fb3ece39000 ---p 00067000 08:03 2100758 >>> /usr/lib/libncursesw.so.6.0 >>> 7fb3ece39000-7fb3ece3d000 r--p 00067000 08:03 2100758 >>> /usr/lib/libncursesw.so.6.0 >>> 7fb3ece3d000-7fb3ece3f000 rw-p 0006b000 08:03 2100758 >>> /usr/lib/libncursesw.so.6.0 >>> 7fb3ece3f000-7fb3ece42000 r-xp 00000000 08:03 2100403 >>> /usr/lib/libdl-2.22.so >>> 7fb3ece42000-7fb3ed041000 ---p 00003000 08:03 2100403 >>> /usr/lib/libdl-2.22.so >>> 7fb3ed041000-7fb3ed042000 r--p 00002000 08:03 2100403 >>> /usr/lib/libdl-2.22.so >>> 7fb3ed042000-7fb3ed043000 rw-p 00003000 08:03 2100403 >>> /usr/lib/libdl-2.22.so >>> 7fb3ed043000-7fb3ed140000 r-xp 00000000 08:03 2100404 >>> /usr/lib/libm-2.22.so >>> 7fb3ed140000-7fb3ed33f000 ---p 000fd000 08:03 2100404 >>> /usr/lib/libm-2.22.so >>> 7fb3ed33f000-7fb3ed340000 r--p 000fc000 08:03 2100404 >>> /usr/lib/libm-2.22.so >>> 7fb3ed340000-7fb3ed341000 rw-p 000fd000 08:03 2100404 >>> /usr/lib/libm-2.22.so >>> 7fb3ed341000-7fb3ed578000 r-xp 00000000 08:03 2128110 >>> /usr/lib/libpython3.5m.so.1.0 >>> 7fb3ed578000-7fb3ed778000 ---p 00237000 08:03 2128110 >>> /usr/lib/libpython3.5m.so.1.0 >>> 7fb3ed778000-7fb3ed77a000 r--p 00237000 08:03 2128110 >>> /usr/lib/libpython3.5m.so.1.0 >>> 7fb3ed77a000-7fb3ed7df000 rw-p 00239000 08:03 2128110 >>> /usr/lib/libpython3.5m.so.1.0 >>> 7fb3ed7df000-7fb3ed80f000 rw-p 00000000 00:00 0 >>> 7fb3ed80f000-7fb3ed87e000 r-xp 00000000 08:03 2108758 >>> /usr/lib/libpcre.so.1.2.6 >>> 7fb3ed87e000-7fb3eda7d000 ---p 0006f000 08:03 2108758 >>> /usr/lib/libpcre.so.1.2.6 >>> 7fb3eda7d000-7fb3eda7e000 r--p 0006e000 08:03 2108758 >>> /usr/lib/libpcre.so.1.2.6 >>> 7fb3eda7e000-7fb3eda7f000 rw-p 0006f000 08:03 2108758 >>> /usr/lib/libpcre.so.1.2.6 >>> 7fb3eda7f000-7fb3edaa1000 r-xp 00000000 08:03 2100353 >>> /usr/lib/ld-2.22.so >>> 7fb3edaa2000-7fb3edc68000 rw-p 00000000 00:00 0 >>> 7fb3edc9f000-7fb3edca0000 rw-p 00000000 00:00 0 >>> 7fb3edca0000-7fb3edca1000 r--p 00021000 08:03 2100353 >>> /usr/lib/ld-2.22.so >>> 7fb3edca1000-7fb3edca2000 rw-p 00022000 08:03 2100353 >>> /usr/lib/ld-2.22.so >>> 7fb3edca2000-7fb3edca3000 rw-p 00000000 00:00 0 >>> 7ffdc8750000-7ffdc8773000 rw-p 00000000 00:00 0 [stack] >>> 7ffdc8796000-7ffdc8798000 r--p 00000000 00:00 0 [vvar] >>> 7ffdc8798000-7ffdc879a000 r-xp 00000000 00:00 0 [vdso] >>> ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 >>> [vsyscall] >>> ./scripts/coccicheck: line 97: 18682 Segmentation fault (core >>> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >>> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >>> --all-includes --dir . -I ./arch/x86/include -I >>> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >>> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >>> -I ./include/uapi -I include/generated/uapi --include >>> ./include/linux/kconfig.h --max 8 --index 0 >>> ./scripts/coccicheck: line 97: 18684 Segmentation fault (core >>> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >>> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >>> --all-includes --dir . -I ./arch/x86/include -I >>> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >>> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >>> -I ./include/uapi -I include/generated/uapi --include >>> ./include/linux/kconfig.h --max 8 --index 2 >>> ./scripts/coccicheck: line 97: 18685 Aborted (core >>> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >>> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >>> --all-includes --dir . -I ./arch/x86/include -I >>> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >>> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >>> -I ./include/uapi -I include/generated/uapi --include >>> ./include/linux/kconfig.h --max 8 --index 3 >>> ./scripts/coccicheck: line 97: 18686 Segmentation fault (core >>> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >>> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >>> --all-includes --dir . -I ./arch/x86/include -I >>> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >>> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >>> -I ./include/uapi -I include/generated/uapi --include >>> ./include/linux/kconfig.h --max 8 --index 4 >>> ./scripts/coccicheck: line 97: 18689 Segmentation fault (core >>> dumped) /usr/bin/spatch -D report --very-quiet --no-show-diff >>> --cocci-file /home/geyslan/Projects/linuxtest/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >>> --all-includes --dir . -I ./arch/x86/include -I >>> arch/x86/include/generated/uapi -I arch/x86/include/generated -I >>> include -I ./arch/x86/include/uapi -I arch/x86/include/generated/uapi >>> -I ./include/uapi -I include/generated/uapi --include >>> ./include/linux/kconfig.h --max 8 --index 7 >>> ./drivers/cpufreq/cpufreq-dt.c:87:20-28: WARNING: Unsigned expression >>> compared with zero: volt_old > 0 >>> ./drivers/cpufreq/scpi-cpufreq.c:36:5-11: WARNING: Unsigned expression >>> compared with zero: domain < 0 >>> ./drivers/hsi/controllers/omap_ssi.c:327:5-12: WARNING: Unsigned >>> expression compared with zero: ssi -> id < 0 >>> ./drivers/clk/clk-vt8500.c:462:16-20: WARNING: Unsigned expression >>> compared with zero: div1 >= 0 >>> ./drivers/clk/clk-vt8500.c:506:16-20: WARNING: Unsigned expression >>> compared with zero: div1 >= 0 >>> ./drivers/clk/clk-vt8500.c:395:17-21: WARNING: Unsigned expression >>> compared with zero: div2 >= 0 >>> ./drivers/clk/clk-vt8500.c:463:17-21: WARNING: Unsigned expression >>> compared with zero: div2 >= 0 >>> ./drivers/clk/clk-vt8500.c:507:17-21: WARNING: Unsigned expression >>> compared with zero: div2 >= 0 >>> ^CMakefile:1488: recipe for target 'coccicheck' failed >>> make: *** [coccicheck] Error 1 >>> >>> >>> -- >>> Regards, >>> >>> Geyslan G. Bem >>> hackingbits.com >>> > > > > -- > Regards, > > Geyslan G. Bem > hackingbits.com -- Regards, Geyslan G. Bem hackingbits.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Andrzej Hajda <a.hajda@samsung.com> |
|---|---|
| Date | 2016-01-05 15:00 +0100 |
| Subject | Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qNAjx-3vz-27@gated-at.bofh.it> |
| In reply to | #1301508 |
On 01/05/2016 01:59 PM, Geyslan G. Bem wrote: > Hello, > > 2016-01-04 4:45 GMT-03:00 Andrzej Hajda <a.hajda@samsung.com>: >> Unsigned expressions cannot be lesser than zero. Presence of comparisons >> 'unsigned (<|<=|>|>=) 0' often indicates a bug, usually wrong type of variable. >> The patch beside finding such comparisons tries to eliminate false positives, >> mainly by bypassing range checks. >> >> gcc can detect such comparisons also using -Wtype-limits switch, but it warns >> also in correct cases, making too much noise. >> >> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> >> --- >> v6: improved range check detection (according to Julia suggestion) >> v5: improved range check detection >> v4: added range check detection, added full check in case value holds a result >> of signed function >> v3: added bool type >> v2: added --all-includes option >> --- >> .../tests/unsigned_lesser_than_zero.cocci | 76 ++++++++++++++++++++++ >> 1 file changed, 76 insertions(+) >> create mode 100644 scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >> >> diff --git a/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >> new file mode 100644 >> index 0000000..b9c7ed8 >> --- /dev/null >> +++ b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >> @@ -0,0 +1,76 @@ >> +/// Unsigned expressions cannot be lesser than zero. Presence of >> +/// comparisons 'unsigned (<|<=|>|>=) 0' often indicates a bug, >> +/// usually wrong type of variable. >> +/// >> +/// To reduce number of false positives following tests have been added: >> +/// - parts of range checks are skipped, eg. "if (u < 0 || u > 15) ...", >> +/// developers prefer to keep such code, >> +/// - comparisons "<= 0" and "> 0" are performed only on results of >> +/// signed functions/macros, > Why common unsigned comparisons with <= 0 are not being detected? I > think that it misleads the code reading and induces further bugs. > Just reading "var <= 0" infers that var can receive signed value. The > be clear the comparison should be against zero only "var == 0" or > depending of the context "!var". > Many developers prefer to use "unsigned <= 0" comparison, as more descriptive and less fragile. See for example for the last phrase of Linus email[1]. [1]: http://permalink.gmane.org/gmane.linux.kernel/2054063 Regards Andrzej -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | "Geyslan G. Bem" <geyslan@gmail.com> |
|---|---|
| Date | 2016-01-05 15:20 +0100 |
| Subject | Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qNACS-3VY-13@gated-at.bofh.it> |
| In reply to | #1301550 |
2016-01-05 10:49 GMT-03:00 Andrzej Hajda <a.hajda@samsung.com>: > On 01/05/2016 01:59 PM, Geyslan G. Bem wrote: >> Hello, >> >> 2016-01-04 4:45 GMT-03:00 Andrzej Hajda <a.hajda@samsung.com>: >>> Unsigned expressions cannot be lesser than zero. Presence of comparisons >>> 'unsigned (<|<=|>|>=) 0' often indicates a bug, usually wrong type of variable. >>> The patch beside finding such comparisons tries to eliminate false positives, >>> mainly by bypassing range checks. >>> >>> gcc can detect such comparisons also using -Wtype-limits switch, but it warns >>> also in correct cases, making too much noise. >>> >>> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> >>> --- >>> v6: improved range check detection (according to Julia suggestion) >>> v5: improved range check detection >>> v4: added range check detection, added full check in case value holds a result >>> of signed function >>> v3: added bool type >>> v2: added --all-includes option >>> --- >>> .../tests/unsigned_lesser_than_zero.cocci | 76 ++++++++++++++++++++++ >>> 1 file changed, 76 insertions(+) >>> create mode 100644 scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >>> >>> diff --git a/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >>> new file mode 100644 >>> index 0000000..b9c7ed8 >>> --- /dev/null >>> +++ b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci >>> @@ -0,0 +1,76 @@ >>> +/// Unsigned expressions cannot be lesser than zero. Presence of >>> +/// comparisons 'unsigned (<|<=|>|>=) 0' often indicates a bug, >>> +/// usually wrong type of variable. >>> +/// >>> +/// To reduce number of false positives following tests have been added: >>> +/// - parts of range checks are skipped, eg. "if (u < 0 || u > 15) ...", >>> +/// developers prefer to keep such code, >>> +/// - comparisons "<= 0" and "> 0" are performed only on results of >>> +/// signed functions/macros, >> Why common unsigned comparisons with <= 0 are not being detected? I >> think that it misleads the code reading and induces further bugs. >> Just reading "var <= 0" infers that var can receive signed value. The >> be clear the comparison should be against zero only "var == 0" or >> depending of the context "!var". >> > > Many developers prefer to use "unsigned <= 0" comparison, as more > descriptive > and less fragile. See for example for the last phrase of Linus email[1]. > > [1]: http://permalink.gmane.org/gmane.linux.kernel/2054063 I got it. Tks. > > Regards > Andrzej > -- Regards, Geyslan G. Bem hackingbits.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Julia Lawall <julia.lawall@lip6.fr> |
|---|---|
| Date | 2016-01-05 15:20 +0100 |
| Subject | Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qNACT-3VY-31@gated-at.bofh.it> |
| In reply to | #1300528 |
> +@script:python depends on org@ > +p << r_cmp.p; > +e << r.e = ""; > +@@ > + > +msg = "WARNING: Unsigned expression compared with zero: %s" % (e) > +coccilib.org.print_todo(p[0], msg) > + > +@script:python depends on report@ > +p << r_cmp.p; > +e << r.e = ""; > +@@ > + > +msg = "WARNING: Unsigned expression compared with zero: %s" % (e) > +if e: > + coccilib.report.print_report(p[0], msg) Is it intentional that these don't do the same thing? The report case has an if on e, while the org case does not. If you don't want a report when e doesn't have a value, you could just remove the = "" from the declaration of e. That is to give a default value of e, to allow the rule to be executed when e doesn't have a value. julia -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Andrzej Hajda <a.hajda@samsung.com> |
|---|---|
| Date | 2016-01-05 15:30 +0100 |
| Subject | Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qNAMx-3Zq-5@gated-at.bofh.it> |
| In reply to | #1301559 |
On 01/05/2016 03:17 PM, Julia Lawall wrote: >> +@script:python depends on org@ >> +p << r_cmp.p; >> +e << r.e = ""; >> +@@ >> + >> +msg = "WARNING: Unsigned expression compared with zero: %s" % (e) >> +coccilib.org.print_todo(p[0], msg) >> + >> +@script:python depends on report@ >> +p << r_cmp.p; >> +e << r.e = ""; >> +@@ >> + >> +msg = "WARNING: Unsigned expression compared with zero: %s" % (e) >> +if e: >> + coccilib.report.print_report(p[0], msg) > Is it intentional that these don't do the same thing? The report case has > an if on e, while the org case does not. If you don't want a report when e > doesn't have a value, you could just remove the = "" from the declaration of > e. That is to give a default value of e, to allow the rule to be executed > when e doesn't have a value. > > julia > > No, I forgot to adjust it. I will fix it then, thanks. Regards Andrzej -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Andrzej Hajda <a.hajda@samsung.com> |
|---|---|
| Date | 2016-01-07 10:40 +0100 |
| Subject | [PATCH v7] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qOfd0-6ef-19@gated-at.bofh.it> |
| In reply to | #1301559 |
Unsigned expressions cannot be lesser than zero. Presence of comparisons
'unsigned (<|<=|>|>=) 0' often indicates a bug, usually wrong type of variable.
The patch beside finding such comparisons tries to eliminate false positives,
mainly by bypassing range checks.
gcc can detect such comparisons also using -Wtype-limits switch, but it warns
also in correct cases, making too much noise.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
v6: improved range check detection (according to Julia suggestion)
v5: improved range check detection
v4: added range check detection, added full check in case value holds a result
of signed function
v3: added bool type
v2: added --all-includes option
---
.../tests/unsigned_lesser_than_zero.cocci | 75 ++++++++++++++++++++++
1 file changed, 75 insertions(+)
create mode 100644 scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
diff --git a/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
new file mode 100644
index 0000000..8fa5a3c
--- /dev/null
+++ b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
@@ -0,0 +1,75 @@
+/// Unsigned expressions cannot be lesser than zero. Presence of
+/// comparisons 'unsigned (<|<=|>|>=) 0' often indicates a bug,
+/// usually wrong type of variable.
+///
+/// To reduce number of false positives following tests have been added:
+/// - parts of range checks are skipped, eg. "if (u < 0 || u > 15) ...",
+/// developers prefer to keep such code,
+/// - comparisons "<= 0" and "> 0" are performed only on results of
+/// signed functions/macros,
+/// - hardcoded list of signed functions/macros with always non-negative
+/// result is used to avoid false positives difficult to detect by other ways
+///
+// Confidence: Average
+// Copyright: (C) 2015 Andrzej Hajda, Samsung Electronics Co., Ltd. GPLv2.
+// URL: http://coccinelle.lip6.fr/
+// Options: --all-includes
+
+virtual context
+virtual org
+virtual report
+
+@r_cmp@
+position p;
+typedef bool, u8, u16, u32, u64;
+{unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long,
+ size_t, bool, u8, u16, u32, u64} v;
+expression e;
+@@
+
+ \( v = e \| &v \)
+ ...
+ (\( v@p < 0 \| v@p <= 0 \| v@p >= 0 \| v@p > 0 \))
+
+@r@
+position r_cmp.p;
+typedef s8, s16, s32, s64;
+{char, short, int, long, long long, ssize_t, s8, s16, s32, s64} vs;
+expression c, e, v;
+identifier f !~ "^(ata_id_queue_depth|btrfs_copy_from_user|dma_map_sg|dma_map_sg_attrs|fls|fls64|gameport_time|get_write_extents|nla_len|ntoh24|of_flat_dt_match|of_get_child_count|uart_circ_chars_pending|[A-Z0-9_]+)$";
+@@
+
+(
+ v = f(...)@vs;
+ ... when != v = e;
+* (\( v@p <=@e 0 \| v@p >@e 0 \))
+ ... when any
+|
+(
+ (\( v@p < 0 \| v@p <= 0 \)) || ... || (\( v >= c \| v > c \))
+|
+ (\( v >= c \| v > c \)) || ... || (\( v@p < 0 \| v@p <= 0 \))
+|
+ (\( v@p >= 0 \| v@p > 0 \)) && ... && (\( v < c \| v <= c \))
+|
+ ((\( v < c \| v <= c \) && ... && \( v@p >= 0 \| v@p > 0 \)))
+|
+* (\( v@p <@e 0 \| v@p >=@e 0 \))
+)
+)
+
+@script:python depends on org@
+p << r_cmp.p;
+e << r.e;
+@@
+
+msg = "WARNING: Unsigned expression compared with zero: %s" % (e)
+coccilib.org.print_todo(p[0], msg)
+
+@script:python depends on report@
+p << r_cmp.p;
+e << r.e;
+@@
+
+msg = "WARNING: Unsigned expression compared with zero: %s" % (e)
+coccilib.report.print_report(p[0], msg)
--
1.9.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Julia Lawall <julia.lawall@lip6.fr> |
|---|---|
| Date | 2016-01-07 12:40 +0100 |
| Subject | Re: [PATCH v7] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qOh57-7sH-1@gated-at.bofh.it> |
| In reply to | #1303422 |
On Thu, 7 Jan 2016, Andrzej Hajda wrote:
> Unsigned expressions cannot be lesser than zero. Presence of comparisons
> 'unsigned (<|<=|>|>=) 0' often indicates a bug, usually wrong type of variable.
> The patch beside finding such comparisons tries to eliminate false positives,
> mainly by bypassing range checks.
>
> gcc can detect such comparisons also using -Wtype-limits switch, but it warns
> also in correct cases, making too much noise.
>
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Looks good, thanks!
julia
> ---
> v6: improved range check detection (according to Julia suggestion)
> v5: improved range check detection
> v4: added range check detection, added full check in case value holds a result
> of signed function
> v3: added bool type
> v2: added --all-includes option
> ---
> .../tests/unsigned_lesser_than_zero.cocci | 75 ++++++++++++++++++++++
> 1 file changed, 75 insertions(+)
> create mode 100644 scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
>
> diff --git a/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
> new file mode 100644
> index 0000000..8fa5a3c
> --- /dev/null
> +++ b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci
> @@ -0,0 +1,75 @@
> +/// Unsigned expressions cannot be lesser than zero. Presence of
> +/// comparisons 'unsigned (<|<=|>|>=) 0' often indicates a bug,
> +/// usually wrong type of variable.
> +///
> +/// To reduce number of false positives following tests have been added:
> +/// - parts of range checks are skipped, eg. "if (u < 0 || u > 15) ...",
> +/// developers prefer to keep such code,
> +/// - comparisons "<= 0" and "> 0" are performed only on results of
> +/// signed functions/macros,
> +/// - hardcoded list of signed functions/macros with always non-negative
> +/// result is used to avoid false positives difficult to detect by other ways
> +///
> +// Confidence: Average
> +// Copyright: (C) 2015 Andrzej Hajda, Samsung Electronics Co., Ltd. GPLv2.
> +// URL: http://coccinelle.lip6.fr/
> +// Options: --all-includes
> +
> +virtual context
> +virtual org
> +virtual report
> +
> +@r_cmp@
> +position p;
> +typedef bool, u8, u16, u32, u64;
> +{unsigned char, unsigned short, unsigned int, unsigned long, unsigned long long,
> + size_t, bool, u8, u16, u32, u64} v;
> +expression e;
> +@@
> +
> + \( v = e \| &v \)
> + ...
> + (\( v@p < 0 \| v@p <= 0 \| v@p >= 0 \| v@p > 0 \))
> +
> +@r@
> +position r_cmp.p;
> +typedef s8, s16, s32, s64;
> +{char, short, int, long, long long, ssize_t, s8, s16, s32, s64} vs;
> +expression c, e, v;
> +identifier f !~ "^(ata_id_queue_depth|btrfs_copy_from_user|dma_map_sg|dma_map_sg_attrs|fls|fls64|gameport_time|get_write_extents|nla_len|ntoh24|of_flat_dt_match|of_get_child_count|uart_circ_chars_pending|[A-Z0-9_]+)$";
> +@@
> +
> +(
> + v = f(...)@vs;
> + ... when != v = e;
> +* (\( v@p <=@e 0 \| v@p >@e 0 \))
> + ... when any
> +|
> +(
> + (\( v@p < 0 \| v@p <= 0 \)) || ... || (\( v >= c \| v > c \))
> +|
> + (\( v >= c \| v > c \)) || ... || (\( v@p < 0 \| v@p <= 0 \))
> +|
> + (\( v@p >= 0 \| v@p > 0 \)) && ... && (\( v < c \| v <= c \))
> +|
> + ((\( v < c \| v <= c \) && ... && \( v@p >= 0 \| v@p > 0 \)))
> +|
> +* (\( v@p <@e 0 \| v@p >=@e 0 \))
> +)
> +)
> +
> +@script:python depends on org@
> +p << r_cmp.p;
> +e << r.e;
> +@@
> +
> +msg = "WARNING: Unsigned expression compared with zero: %s" % (e)
> +coccilib.org.print_todo(p[0], msg)
> +
> +@script:python depends on report@
> +p << r_cmp.p;
> +e << r.e;
> +@@
> +
> +msg = "WARNING: Unsigned expression compared with zero: %s" % (e)
> +coccilib.report.print_report(p[0], msg)
> --
> 1.9.1
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Michal Marek <mmarek@suse.com> |
|---|---|
| Date | 2016-01-07 15:40 +0100 |
| Subject | Re: [PATCH v7] coccinelle: tests: unsigned value cannot be lesser than zero |
| Message-ID | <qOjTl-SP-29@gated-at.bofh.it> |
| In reply to | #1303497 |
On Thu, Jan 07, 2016 at 12:35:34PM +0100, Julia Lawall wrote: > > On Thu, 7 Jan 2016, Andrzej Hajda wrote: > > > Unsigned expressions cannot be lesser than zero. Presence of comparisons > > 'unsigned (<|<=|>|>=) 0' often indicates a bug, usually wrong type of variable. > > The patch beside finding such comparisons tries to eliminate false positives, > > mainly by bypassing range checks. > > > > gcc can detect such comparisons also using -Wtype-limits switch, but it warns > > also in correct cases, making too much noise. > > > > Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> > > Acked-by: Julia Lawall <julia.lawall@lip6.fr> Thanks to both of you, applied to kbuild.git#misc now. Michal -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web