From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 90E953C060B for ; Sat, 25 Jul 2026 11:35:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784979333; cv=none; b=hj/l4MJ+PM+GJNHclpwmAO/rw/Fm1Tjxdm76oBro9mBJXK3IA6Pn4vopk/aD5Ru/vssmtxp7hs5N8y8CISTitG7+OlvizjoOC2SHca2EoYE5HfSuhdwg+o1PiTkrUSWjcM76f4QcZUptAo5JgOTYQIK7PU8hM2Cv0/lUVfFKv2g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784979333; c=relaxed/simple; bh=xVWDdVbruyUT7ZVf11JANID5lz4PM0CmhWCEhHUeBEg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rWJav1GaLTnRV4iffF9iYkB01oMFvl2fZVxZhFSVIIZiO1+b6TQ3T7IlLjw4g5dEzL8H32Egz5vDQfoyfSCJzKkOZ/PH6S53OQ7Kq8ufE27pIaMDUbgqYJMhI84SgE8jMh2H70ccDzVV543db0UvT7whFNcqHGnFG9O3Kwdbw7o= 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=Yd8afgkM; arc=none smtp.client-ip=209.85.216.49 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="Yd8afgkM" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-381216921aaso1222532a91.1 for ; Sat, 25 Jul 2026 04:35:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784979332; x=1785584132; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=2buC29pHpV7yBLh0Jy1hPDXrgiyuJc6NYxwfRn0zPQ0=; b=Yd8afgkMEN79WkCllu9lFJqUAtZmhtqStzTSIBabZCWUCBqX/h0sYWXIbVVyhth8Kv +6Qyi84sSFGpt6EKQOw6w0q7ZLc9bKVcPUPn8T/JMKInYP1cw11crMwqQqBq3VpJHH74 Ah7BmaIGvAxJeO5cf4ZUXK97OPxg2ayR6AUQWfaIQlye9cLH/wCykjhRMYExkd+OdbAw +P9iKp07pz1ZuILTJHjqJXuQ/e7rYe1uIkiLL4tSLH5cxzTh/j/VvX1rzZtMokoMjyjX nqev3gpppMQiDM4vOCh0Rka3UdFK/4KnTIaVthLHmkC57aadTPmqe6KUFNu8gdOw/LJR Fenw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784979332; x=1785584132; h=content-transfer-encoding:mime-version:references:in-reply-to :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=2buC29pHpV7yBLh0Jy1hPDXrgiyuJc6NYxwfRn0zPQ0=; b=ki3cpceWqWkDC3HwOddqSp7nt6UXHjyRYiMjIzN6uhjK4a5BMwOkOaFStkHkjtGUao tT4OtoN/P7ymBwVZDdXXz1yiGVOHAMoF1O9b5TZiim0tMxf4Nvp85Y397TgWPP5qVySC j/UNtyuoV3nCviCPPPvB+nzKCrPZ0uKO41Elyoqa2iPHLL2ZSVsy5Csy0mb6MF7LGeV7 Fcmw8/BKWFdxTsFCLS5gdbNQV3Aq4FgcpLz4N4NwZjgAzCTPSKl8WxmJU8KBUNnngpz+ T9NT0DcugQ0Gi0ltefh47rCpzkvUDWorCVR23s6oUuAVnzQyo+zP3lGR/eDStRydI1WC bCAw== X-Forwarded-Encrypted: i=1; AHgh+Rreuu3D/6ptmJjjD1cRixOdwQoLGEUHbSDISpbx/EjOwRYrobV4EHI63bJT3i1BHhLlIowjlTli2g81uPc=@vger.kernel.org X-Gm-Message-State: AOJu0YzQJ8CTgXK6miG7EWMeigHrN2VrJ1LOfR/zvrlJrFi+mbSvuChc wqYrkcP7RvTd8EtKuTaR2EoISr+MCRv0TNwYdf3TU3nYSiYFt16sD2+h X-Gm-Gg: AR+sD13c53321cZ7wJTH9cL4MJoLPzriNdMAboV4tAq6qFELGbEDqoKc7hiw+v+kEA8 ATthUWR2AqnHSMh3LTUBMr6MYURnaAG0PgLwY6fOgFvKYJx96mHXNLhvpyZuY9k1GLcQDWr+ltk vnIoqldRMrxPCVa8mfKgQG6T+EKj3NCz09obmANJozuNeMTsRyxBQ86irnmY4hJjClKAyUFUhLQ sykBVWZxYywDjmVzlBOT/JmGLoD+KGXPRnU4GSvblxWtKl+hKWVlNDn5H0f+spMjJ5RwX4a086b rTQyitkQK1HiPR7mzqfphGHBK076J1N+JWd/RkuOrC7k/+FMZDErF/Y/goDFYeBKM0CwGN2400G KZFkTX8mtKriHo1Ol2aqxKvhOVtPUBRgu+W6aFGXwhzRolOIpLMjjgwDgy8RXjhipO3M0fKyK X-Received: by 2002:a17:90b:3bce:b0:38e:e0b:320d with SMTP id 98e67ed59e1d1-38f297812c8mr2044827a91.41.1784979331848; Sat, 25 Jul 2026 04:35:31 -0700 (PDT) Received: from ubuntu.. ([110.9.142.4]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-38f08ae3079sm1539083a91.3.2026.07.25.04.35.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Jul 2026 04:35:30 -0700 (PDT) From: Sang-Heon Jeon To: Julia Lawall , Nicolas Palix Cc: cocci@inria.fr, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] coccinelle: mini_lock: improve performance when searching loops Date: Sat, 25 Jul 2026 20:32:39 +0900 Message-ID: <20260725113303.691676-2-ekffu200098@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260725113303.691676-1-ekffu200098@gmail.com> References: <20260725113303.691676-1-ekffu200098@gmail.com> 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 --- 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..54e06cced63b 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 depends on err_candidate@ +position err_candidate.rc; position r; @@ -for(...;...;...) { <+... return@r ...; ...+> } +for(...;...;...) { <+... return@rc@r ...; ...+> } @err exists@ expression E1; -- 2.43.0