From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 27E7C3314C3 for ; Thu, 23 Oct 2025 15:14:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761232475; cv=none; b=ZFnli8Lrk4nsT9/1DCjDbZR1Nq/WfvruXpF2LRckwFMA2+0pPAh64sZ6U0BLnvkM4guEy2BTu4MuuSWQpP0iSRrZn89VbAE6IJNBJWr/F0Br4JdiwvCQK+kzsy/+kCPK7NUkuMAm7QBPbIUpgpplUdA+KeGoXVHbvrWnYUlsfIQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761232475; c=relaxed/simple; bh=IlUUH9LIumXJC7hPJml9W0fQIcePXt8C72UdTwhHdhs=; h=Message-ID:Subject:From:To:Cc:Date:In-Reply-To:References: Content-Type:MIME-Version; b=GWDckw5g6+cigE9ZhzizvPtxiPRPkagxkjs7FKHW4xSmYbimDLlnrN3VtK8pgtHwpuuwMWuk/5o43GhAYmi+F4CaJZ2qRxj4qgzyu6CmUegFbms86vXikIQp8jaCYONcfygp/FvP1RUZL2EkwbGQzXj0UKT5xhdmnW+6k3fTjsw= 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=FLV15zP3; arc=none smtp.client-ip=209.85.216.42 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="FLV15zP3" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-33bc2178d6aso764030a91.0 for ; Thu, 23 Oct 2025 08:14:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1761232471; x=1761837271; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=vkqLO4+M3z7w/Lrmi0Fd0kvLJlcc3V6C2w66dX/d/Xw=; b=FLV15zP3k8p+Ylipj9P2be1to839gkkbWuBHc7AF2ZzUTT50qplv2DhIA+5wNbhJvK QHlJ9Stru6EsBNm/IzR1XoKQY0u7r8ZE8ZOK6bdUKVdzcXo8VgGBEBLJJQtS1NndDmRG v1yDw0ZANnv+ja0EjnDRP7rWkKRcdIYcRVvfaqNVIzoBcwV7YEqLmmx6KQp5aeEXx4yG tIZT8nAWLcc0efFTWi7ghKFWdJAWXvzEgGu/30TK2PSYS/AccxOlfYWSZuDcCgTbbexO New1KMrI09iux4rf9VIvmy/2lrEOfHR/Hy4aXCeO2Eo+Mut45Uk3atXEHvOnrcee2nGs tmgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761232471; x=1761837271; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=vkqLO4+M3z7w/Lrmi0Fd0kvLJlcc3V6C2w66dX/d/Xw=; b=XLxKMzMaM1Lv8EKB6a+Q6xgn0zo9IXIiZ9Ro7kxfHYJeNdH6J21LDLqu3U4Gp9uvn4 NytGm0yqLfkIVv4FHs6pskMRQBrRG1vUB7SWZpZKlQcW2Sh/XsZhy6/yevSJf0z8dRhf bkSWfzMdOvuUeDVNmpVMyOKxa2jdq2nkTL+8nkSs1JRT5QtKoreVNYaAmIUkrivsWt+C FQQFwc5QuT8Hgf6xzGMqsn52qmbuE8gnOCT6LaDUQJMV7V/EvlJrb9Ev6DEjrxJn+8l2 SpcIY8VsgVGISHrKc12x/Ph3lcV/CvTW/1MOckwatTXw1oNjT+imlLylfqRHZVhwKKtM UpyQ== X-Gm-Message-State: AOJu0YzNGbQvbd4vDPkh78j7X4cZ+2O+r2EXvEHozf3HZFpRLpvljwTz F2CxftVSTU/HA/lLE36BNnZtQAboFuXYrTeXeqjZbwvH97HNw3YviDQ5 X-Gm-Gg: ASbGncuxGwSK4kWDtjPWMvrw4nAtZQnouoCLb0FUWSqPggGOnvnIo57ZhEQvS1IS8f5 2uZkIa9kFAqcYEQc4sjzGK7iSnNfB4eYey0of04xtfAysaU1/Rrczd9W4zYnI9hVIdcL6XqDlBv oT5/0rNl7p8E7zPe6J5xFXBYueFiHsQvcJcXZ4b3fmvSY8rT4UNI+YLK8WKS5AwMIqtd8yfwia4 4GsqXiL82qPdKsNpzYyTWO7EEev4WY/U24M2873qXb//qHwg7EP1UWb3925ABQDmy2Oenr0b6uG kLafGyfL3GISSHMFF2Q2mGxhj6eyx8xNsme8vyxwmkR7EnDVPJQW5dgE5VO4Cc734qm5z1LWYD2 xNlAcg9RbltJE3S8VE/YNJ4/I8QJ77bTVlNGfQUMpo6kwXyfHreK3iPTkys37fEbnL1Zr9E6aY7 /7d+EZcjK9xRvR0IVtoLbwnz+1aXjQUMxvmF4qc97RJd8XmJFO2hJ4eMjs X-Google-Smtp-Source: AGHT+IFxcOTWNeoO0U9x1abyfX1fIUDpLCIWWsm5Uw/xj/ptlbhHm2XiUrn0s7mXgS6AUwx9tm10+Q== X-Received: by 2002:a17:90b:5623:b0:33b:d371:1131 with SMTP id 98e67ed59e1d1-33bd3711391mr30176242a91.34.1761232471346; Thu, 23 Oct 2025 08:14:31 -0700 (PDT) Received: from ?IPv6:2401:4900:88f6:3367:7bc9:63ec:e54:c1d0? ([2401:4900:88f6:3367:7bc9:63ec:e54:c1d0]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-33fb00500b8sm2704496a91.6.2025.10.23.08.14.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Oct 2025 08:14:30 -0700 (PDT) Message-ID: Subject: Re: [PATCH] checkpatch: add uninitialized pointer with __free attribute check From: ally heev To: Joe Perches , Dwaipayan Ray , Lukas Bulwahn , Jonathan Corbet , Andy Whitcroft Cc: workflows@vger.kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, Dan Carpenter , David Hunter , Shuah Khan , Viresh Kumar , Nishanth Menon , Stephen Boyd , linux-pm , dan.j.williams@intel.com Date: Thu, 23 Oct 2025 20:44:23 +0530 In-Reply-To: <5e11f1bacb6430e1331f02e3e0e326a78e5b0d12.camel@perches.com> References: <20251021-aheev-checkpatch-uninitialized-free-v1-1-18fb01bc6a7a@gmail.com> <5e11f1bacb6430e1331f02e3e0e326a78e5b0d12.camel@perches.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.56.1-1 Precedence: bulk X-Mailing-List: workflows@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 On Tue, 2025-10-21 at 10:06 -0700, Joe Perches wrote: > On Tue, 2025-10-21 at 17:00 +0530, Ally Heev wrote: > > uninitialized pointers with __free attribute can cause undefined > > behaviour as the memory allocated to the pointer is freed > > automatically when the pointer goes out of scope. > > add check in checkpatch to detect such issues >=20 > Seems sensible. Couple minor points below: >=20 > > diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl > [] > > @@ -7721,6 +7721,12 @@ sub process { > > ERROR("MISSING_SENTINEL", "missing sentinel in ID array\n" . "$her= e\n$stat\n"); > > } > > } > > + > > +# check for uninitialized pointers with __free attribute > > + if ($line =3D~ /\s*$Type\s*($Ident)\s+__free\s*\(\s*$Ident\s*\)\s*;/= ) { >=20 > The leading \s* isn't useful, but \b should be used. Sure >=20 > Perhaps verify that $Type is a pointer as well >=20 > if ($line =3D~ /\b($Type)\s*($Ident)\s*__free\s*\(\s*$Ident\s*\)\s*;/ &= & > $1 =3D~ /\*\s*$/) { >=20 > to avoid things like: >=20 > drivers/net/ethernet/microsoft/mana/gdma_main.c: cpumask_var_t cpus __fre= e(free_cpumask_var); >=20 >=20 > > + WARN("UNINITIALIZED_PTR_WITH_FREE", > > + "pointer '$1' with __free attribute should be initialized\n" = . $herecurr); >=20 > pointer '$2' etc >=20 Nice find. Thanks!=20 > And this would not find uses like the below where another definition > is done before a definition with __free on the same line: >=20 > crypto/testmgr.c: u8 *ptr, *key __free(kfree); I will add the check for each pointer defined on the same line