From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C3D892BEC23 for ; Mon, 27 Jul 2026 13:53:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785160401; cv=none; b=Hh4tuj4OoAGdiChnyRFizvbVDfNm1gRcim61o4NXBzgJkvUgrvRiWWCAu7B7ZPK1QYRafGr9I392TURSxx75dX5HtW93hvBt5k8pu5AKIdISDy5sUKJenfqO9JqjVBDxurpNB4S7NwWbDWneia6F6VV2UcftVFw2b9CBq5qgR1A= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785160401; c=relaxed/simple; bh=spCveNP6N5eoJYl2hbAYxR4m+0+GBUUHTyDHI0BR7oU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=l8w+3vVzF/ndDRbHXP/K44Ja9vyN1vbHL4F/6Q7+ktU+AvHcbi4TDuox8jlebkk04657psWG/u0viQa38d8mGVrv+nAL0hvnshH0oY4WNnOpr52LMe5rhCquEFiubKkTS+l+kDuogQgrgvF/zxIwc1eupqACgvL6FbostJ+SUUI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=eWO6u1dc; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eWO6u1dc" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-84a2dcede83so3597113b3a.3 for ; Mon, 27 Jul 2026 06:53:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785160399; x=1785765199; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=E/BpeMc3/3WyExIZRcGyEsb+9g4ZP+W8ENqJd+owEHU=; b=eWO6u1dcgocqnsA/D998GOx/rhh48xMsNDLQ4lTB2mBJoLgyaattV/T8yYhFV7VsSG EyGJBKl6wHsomr9slgJiUbshMNqsWBkPFFfulvwtxP1tNiZiPiHYCxSb6VBHGCzeGYGJ yRv4K5TK5NrSVyHVgSisdIHGqMMQEojVq9MkdBDdUoRXs0P5lyEkl+Wu4lYFPy9WDMkW 1SolGqWhv5VSSObBOlMpE5cooImBNA3y9PglS/4YBPgUgEfmG0Om3ZcihGfU/mcC+2hP rP1gxNz1avAVUKU9+pSDQCXNGdb7HksO/FLyD4vYDoOeUMcPbFoPGfvd3/HEuAPkDgx7 I4kQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785160399; x=1785765199; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=E/BpeMc3/3WyExIZRcGyEsb+9g4ZP+W8ENqJd+owEHU=; b=KrsGz3ZCF5WGdDHbJZQQ0zUoNVTUuB4O2Em+Ldqf+ghaZyVdeltg5rpgiUQ35d2VuC I/NkNVym1VQTkGGISZNWlkwnocSBKKTMwfe7T/zH2+/MiNSKEebChYzt3CroS2NyL4/0 KI25Ae/D67+REhHK+1puSe7Xsl47SO+vmRYpwJwleOzrzFC7Raz7x8qWacP/XV7tzxe/ b3dGl832gIyz78dYGaXmNL8tv5FXojJgCY/BlR7PF4IJwoFDutho7euIWR5K7zG7yn3X ElpTn+rPh3gkR873ybn5ajWq6+rUauIovJeMe/b5r84r6T7dQjrmcLScCU7czKaSLsqW jhrQ== X-Forwarded-Encrypted: i=1; AHgh+RoWcHasumdu09TVYYJR2crJcTdOVHb9i7si9yiwFHRq/0jCuXTbkgrJX2iHP1xvOXGQWyQqwI78v4kdRgk=@vger.kernel.org X-Gm-Message-State: AOJu0YzrpRG9JU1zsql2NYq0W2yLnXoRhBv4ntebNzjtRk/oQBw8YoU+ DyrLt+Bva/NPePLgQb5QlvbN4bA9MgI+5LRULzzxaEssrYweZ+Az456c74VuRebNi6Y= X-Gm-Gg: AR+sD10nZappDcjtCQ/m/ljylpkwf3eKbBuBboCXGglWU23/hE49K/iys8pXCO8phw0 4/SeZ1UbQLKzjhQFFioug/PDBezpTJHI5KnzL5tMNpkl0JBbdXsNdnENHy2qZQYt+aMoA1n6fQr kb3prUW5yBwdmogq3VnvFc0v5ZrIqKHuI8eM9mNB2EObOxIUM9e7+EDoVB+AGszLhlq75AHD34+ CrHN9UcJug6YZEUxVcKXaY0W8/u4GcEUsI3wyCpnfqkNUvOuO/XxPx2FRzVle52AjcZ7ZhlafDg 9y1k1GbNtDwrQjteVlsH1lxUKQuyMtcNUCUKB2aKGsgBZZ/MpbE/NlojPTGeYP0ptp+ppErgeuP vw/imviUq2W5/6kgR4yakTA27g39feYOYiZSnM3lh41bJGRBhO/dW1e+qiABlnru0EAfjssQ4 X-Received: by 2002:a05:6a00:408b:b0:845:d284:9e11 with SMTP id d2e1a72fcca58-84e5959cb2dmr6888628b3a.56.1785160399108; Mon, 27 Jul 2026 06:53:19 -0700 (PDT) Received: from ubuntu.. ([110.9.142.4]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-84e53254dfdsm3025696b3a.7.2026.07.27.06.53.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jul 2026 06:53:18 -0700 (PDT) From: Sang-Heon Jeon To: Julia Lawall , Nicolas Palix Cc: cocci@inria.fr, linux-kernel@vger.kernel.org Subject: [PATCH v2] coccinelle: mini_lock: improve performance when searching loops Date: Mon, 27 Jul 2026 22:52:44 +0900 Message-ID: <20260727135249.1634580-1-ekffu200098@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The 'looped' rule collects the returns inside a for loop to prevent 'err' from reporting them. It searches every for loop in the file, and on files with large loop bodies the search explodes. For example, kernel/bpf/verifier.c runs for over 200 seconds, almost entirely in 'looped' according to --profile. Since the kernel .cocciconfig sets a 200 second timeout, coccicheck silently skips the file. To avoid this, collect the candidate returns first, so that 'looped' checks only those positions. 'err' then excludes what 'looped' found. Every return that 'err' can report is also a candidate, so the same returns are excluded as before and the output does not change. A report-mode run over every .c file in the tree produces identical output. So verifier.c now finishes well within the timeout, in a few seconds. Signed-off-by: Sang-Heon Jeon --- Changes from v1 [1] - remove unnecessary depends keyword as Julia suggested - add exists keyword to 'looped' rule [1] https://lore.kernel.org/all/20260725113303.691676-2-ekffu200098@gmail.com/ --- scripts/coccinelle/locks/mini_lock.cocci | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/scripts/coccinelle/locks/mini_lock.cocci b/scripts/coccinelle/locks/mini_lock.cocci index 71065d8a5d54..c65241c895ff 100644 --- a/scripts/coccinelle/locks/mini_lock.cocci +++ b/scripts/coccinelle/locks/mini_lock.cocci @@ -53,11 +53,31 @@ spin_lock_irq@p1 spin_lock_irqsave@p1 ) (E1@p,...); -@looped@ +@err_candidate exists@ +expression E1; +position prelocked.p; +position up != prelocked.p1; +position rc; +identifier lock,unlock; +@@ + +lock(E1@p,...); +... when != E1 + when any +if (...) { + ... when != E1 + return@rc ...; +} +... when != E1 + when any +unlock@up(E1,...); + +@looped exists@ +position err_candidate.rc; position r; @@ -for(...;...;...) { <+... return@r ...; ...+> } +for(...;...;...) { <+... return@rc@r ...; ...+> } @err exists@ expression E1; -- 2.43.0