Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1300528 > unrolled thread

[PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

Started byAndrzej Hajda <a.hajda@samsung.com>
First post2016-01-04 08:50 +0100
Last post2016-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.


Contents

  [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

#1300528 — [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

FromAndrzej Hajda <a.hajda@samsung.com>
Date2016-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]


#1301508 — Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

From"Geyslan G. Bem" <geyslan@gmail.com>
Date2016-01-05 14:00 +0100
SubjectRe: [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]


#1301518 — Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

FromJulia Lawall <julia.lawall@lip6.fr>
Date2016-01-05 14:10 +0100
SubjectRe: [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]


#1301557 — Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

From"Geyslan G. Bem" <geyslan@gmail.com>
Date2016-01-05 15:20 +0100
SubjectRe: [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]


#1301694 — Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

From"Geyslan G. Bem" <geyslan@gmail.com>
Date2016-01-05 17:50 +0100
SubjectRe: [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]


#1301550 — Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

FromAndrzej Hajda <a.hajda@samsung.com>
Date2016-01-05 15:00 +0100
SubjectRe: [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]


#1301556 — Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

From"Geyslan G. Bem" <geyslan@gmail.com>
Date2016-01-05 15:20 +0100
SubjectRe: [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]


#1301559 — Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

FromJulia Lawall <julia.lawall@lip6.fr>
Date2016-01-05 15:20 +0100
SubjectRe: [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]


#1301562 — Re: [PATCH v6] coccinelle: tests: unsigned value cannot be lesser than zero

FromAndrzej Hajda <a.hajda@samsung.com>
Date2016-01-05 15:30 +0100
SubjectRe: [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]


#1303422 — [PATCH v7] coccinelle: tests: unsigned value cannot be lesser than zero

FromAndrzej Hajda <a.hajda@samsung.com>
Date2016-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]


#1303497 — Re: [PATCH v7] coccinelle: tests: unsigned value cannot be lesser than zero

FromJulia Lawall <julia.lawall@lip6.fr>
Date2016-01-07 12:40 +0100
SubjectRe: [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]


#1303621 — Re: [PATCH v7] coccinelle: tests: unsigned value cannot be lesser than zero

FromMichal Marek <mmarek@suse.com>
Date2016-01-07 15:40 +0100
SubjectRe: [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