From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756573AbbIUKiT (ORCPT ); Mon, 21 Sep 2015 06:38:19 -0400 Received: from mailout3.w1.samsung.com ([210.118.77.13]:31675 "EHLO mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756405AbbIUKiR (ORCPT ); Mon, 21 Sep 2015 06:38:17 -0400 X-AuditID: cbfec7f5-f794b6d000001495-c5-55ffde17abe7 From: Andrzej Hajda To: Julia Lawall Cc: Andrzej Hajda , SF Markus Elfring , Bartlomiej Zolnierkiewicz , Gilles Muller , Joe Perches , Nicolas Palix , Michal Marek , linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org, cocci@systeme.lip6.fr Subject: [PATCH v3] coccinelle: tests: unsigned value cannot be lesser than zero Date: Mon, 21 Sep 2015 12:37:44 +0200 Message-id: <1442831864-25759-1-git-send-email-a.hajda@samsung.com> X-Mailer: git-send-email 1.9.1 In-reply-to: References: X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCLMWRmVeSWpSXmKPExsVy+t/xK7ri9/6HGnx/wmxxa905VouNM9az WvzYtJrN4nzncmaL2T8vMVnMvv+YxWLZg9OMFltvSVtc3jWHzWJO6yw2i2MvlzM5cHscO9bK 7LF3S5bHl1XXmD36tqxi9Fi/5SqLx6Nl91k8mk61s3p83iQXwBHFZZOSmpNZllqkb5fAlbFm R3jBT76KrzdXMTYw7uDpYuTkkBAwkZjx8QMzhC0mceHeerYuRi4OIYGljBIf9lxnhXCamCRW 7FnEBFLFJqAp8XfzTaAqDg4RAXWJ3g+5IDXMAv+ZJJY3NrOD1AgLBEisnLsLrJ5FQFXi/K4P LCA2r4CzROeLe6wQ2+QkTh6bDGZzCnhK/F3zFewKIQEPiQVr9jNOYORdwMiwilE0tTS5oDgp PddIrzgxt7g0L10vOT93EyMkLL/uYFx6zOoQowAHoxIPr6PA/1Ah1sSy4srcQ4wSHMxKIrw6 s4BCvCmJlVWpRfnxRaU5qcWHGKU5WJTEeWfueh8iJJCeWJKanZpakFoEk2Xi4JRqYAzdIs6X z+6bV3P43PvJKyq01La+nJ3kzvrhYlTzUWm+y+/cFLQ/S97XbvJtyNxuxnPphvu7PsGb/xcX xE2vfOf4x9wsue+0SMT+3TMCfZWWhEqnueXmTDv7QKX3Q0x8vRBf6MFTb7akf+rw2LK/b9fH 87dYr04+sq+tt+u7zNYNSmeXJMeuY1JiKc5INNRiLipOBAAFCOyZRwIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Code comparing unsigned variables with zero using operators < or >= does not make sense. It is always false or true, respectively. However, its presence often indicates bugs in the code. gcc can detect it also using -Wtype-limits switch, but it warns also in correct cases, making too much noise. Signed-off-by: Andrzej Hajda Acked-by: Julia Lawall --- v3: added bool type v2: added --all-includes option --- .../tests/unsigned_lesser_than_zero.cocci | 37 ++++++++++++++++++++++ 1 file changed, 37 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..70e71c8 --- /dev/null +++ b/scripts/coccinelle/tests/unsigned_lesser_than_zero.cocci @@ -0,0 +1,37 @@ +/// Unsigned variables cannot be lesser than zero. Presence of such checks +/// can indicate incorrect variable type or just unnecessary code. +/// +// Confidence: High +// Copyright: (C) 2015 Andrzej Hajda, Samsung Electronics Co., Ltd. GPLv2. +// URL: http://coccinelle.lip6.fr/ +// Options: --include-headers --all-includes + +virtual context +virtual org +virtual report + +@r depends on context || org || report@ +position p; +typedef bool, u8, u16, u32, u64; +{unsigned char, unsigned short int, unsigned int, unsigned long, unsigned long long, size_t, bool, u8, u16, u32, u64} v; +@@ + +( +*v@p < 0 +| +*v@p >= 0 +) + +@script:python depends on org@ +p << r.p; +@@ + +msg = "WARNING: Unsigned value cannot be lesser than zero" +coccilib.org.print_todo(p[0], msg) + +@script:python depends on report@ +p << r.p; +@@ + +msg = "WARNING: Unsigned value cannot be lesser than zero" +coccilib.report.print_report(p[0], msg) -- 1.9.1