From nobody Fri Oct 3 16:38:38 2025 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (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 3D27A26A0BD for ; Thu, 28 Aug 2025 16:00:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756396836; cv=none; b=HCSnL7MASeIig4bXuPmkQ7JQajSswauaYZ11VZsxn3yjeg+6TBWctrYkHuwVBMVRa/f36kodyZ2vBSXFBlijSCUZEqyMDjXVuJ8VygoB+jv7oXvkc/qGY9RTDCCfqTaBxzHTrbaHp4rfJTF5Q0vqyjLwSM6y6Rx662a0TtLMTg4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756396836; c=relaxed/simple; bh=8LckYYbv7wEiVDCoVOTbwt+nYJz1zV0AkW539eEIzwQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hKJL9eFMxptTp44l/JAEZATMx+dfs5GpIogNx8+hbt3pnNQtuaXMBgMWPPLwMQ5L+xj5p5m2rcg3FCQCllyca8O2MoL6Xe36hSaDpOUVY8r8TR6ttFfJ0uKqhmXJRbtyKCv/s9TU2GimAsjvwb7smVq8+6Opb7hF5iNpPAfR2Xc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl; spf=none smtp.mailfrom=bgdev.pl; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b=bPNneU8D; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=bgdev.pl Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=bgdev-pl.20230601.gappssmtp.com header.i=@bgdev-pl.20230601.gappssmtp.com header.b="bPNneU8D" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-45a1b05fe23so7081315e9.1 for ; Thu, 28 Aug 2025 09:00:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bgdev-pl.20230601.gappssmtp.com; s=20230601; t=1756396830; x=1757001630; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rcnhHIb6eNEwdjxZYrigpF4SQxNgYqLi3t6s+DqhmIc=; b=bPNneU8DkNbGvwvoIhfgnA/1yDK1Cel/S894RSctbOUuwiG8xyhY4m3RP/vyqrjE8X SKMUeXWusEzYtdoqKbD0FG6c+6yjribeMAgr1Rutg9X8zp9Wqrh5W8HKSdDfUWNM+NFK gWIxAH8RB6EA3kGaQxJbPupAVUHCkd+I0GBcSXuAWeMGq4GUwLJB5Yyu4SzPiDtr5Q8U HWNmoT00KKW8RIW4+CRw6mS3kJKM5lfcRFWahZwr/Jvx0BgHGfEmRSIMwLYIFaQKEhVP z7O0qcl/MZ2nEFHr9eMD75fyJHlrUl6iy3vfzhvWN5kUE3Fuzm4LvtLYQhx51TSz38OY r9dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756396831; x=1757001631; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=rcnhHIb6eNEwdjxZYrigpF4SQxNgYqLi3t6s+DqhmIc=; b=eWSnEcy8wBDLwe69hCsgoPmJnyE26d+o/TLI1ZxVf4c4M1IUcaRfCM/srD0vktcD4Q ieTirASdSXjS5lcxpazP+feNRznMqNk1IaiKfE7p4whDBozq1isUjRJ92h7zwmhloX9j utJaNY1tpBMla8a8wcSjrCqAteBQJ1VV3CHp45uXVgQimULL5vr4A45UpKzQ4XJjtHux CggnKpmWPamZlTwqive3TiZczGtT50tOT2C6EbFon5Hr8CO12EQfxpReOCf9MVIVvty3 hLNGx9yIU9+ybQcfVjbGRyuoyHcB1MuDnABfbku6V+uF23YAzsaRe+3wAcYCVFOQ5CBt WKGQ== X-Forwarded-Encrypted: i=1; AJvYcCWE1JUme7DuUoIEd1pCTpiX9tPrYo6zOuSl5efuVWQBGzNAmVXzgTgZ5FQ3SR/5tIXFjIA6vQBrRfUyruA=@vger.kernel.org X-Gm-Message-State: AOJu0YxB85KiX1SiZ4yvLML9lgWm//n0wQ83j41Kzj8qnRr0tlMRtPqh Q2DU3ZCSLDi7wVVkR+qZ+BPkHjBzlCt5Xv0g2XH+EZre2T2TLFa5IyQw+z8IwXq2RGE= X-Gm-Gg: ASbGncs/ikkw79WFNRPKXJGC6iPEBSpqRKArpG0BCmp/HrWJnxL4CyZ0XvoroAIbqX5 xeFwYzmMZ7RLD1lB3ep+TU+mlDbFCZ0DLNfIUe+LUfAlytWu+7ieToCVW0jhuUC3KwgGFTzh7hM PmRlf5zYfTR/sxMyg7Dpg4ccl5eQneggnMiyAdnoIYPq20zV2zfTSJ7T4HDxXO4biI3UQYYHoLE Syqr7QpRtv43oTOM5B76Th6BD3nTXEI1PAfc8dBuTOei0JOtpMwODaXh/fQeNVnVeSrP7tz/35P kfZa6TTgtJ0KZHHWntVJXF5u+vb7yBvKtazTYAq2DsC6cls0fvYjG1U805NqRGcdAhOv9lcGasW 49R695e8DDHiZ24viVw== X-Google-Smtp-Source: AGHT+IFFepUYI+bxIRTxDUeMnPHpoc8pmGJqVENaUjjXrMHXXy2WRVR0FTskPq39jX17KmytYEjexA== X-Received: by 2002:a05:600c:3b04:b0:439:86fb:7340 with SMTP id 5b1f17b1804b1-45b517e9d34mr225147805e9.30.1756396830367; Thu, 28 Aug 2025 09:00:30 -0700 (PDT) Received: from [127.0.1.1] ([2a01:cb1d:dc:7e00:4933:4d7c:cf69:9502]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-45b6f0c6fe5sm80211675e9.5.2025.08.28.09.00.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Aug 2025 09:00:29 -0700 (PDT) From: Bartosz Golaszewski Date: Thu, 28 Aug 2025 18:00:15 +0200 Subject: [PATCH v6 07/15] pinctrl: keembay: release allocated memory in detach path Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250828-pinctrl-gpio-pinfuncs-v6-7-c9abb6bdb689@linaro.org> References: <20250828-pinctrl-gpio-pinfuncs-v6-0-c9abb6bdb689@linaro.org> In-Reply-To: <20250828-pinctrl-gpio-pinfuncs-v6-0-c9abb6bdb689@linaro.org> To: Linus Walleij , Bjorn Andersson , Konrad Dybcio , Alexey Klimov , Lorenzo Bianconi , Sean Wang , Matthias Brugger , AngeloGioacchino Del Regno , Paul Cercueil , Kees Cook , Andy Shevchenko , Andrew Morton , David Hildenbrand , Lorenzo Stoakes , "Liam R. Howlett" , Vlastimil Babka , Mike Rapoport , Suren Baghdasaryan , Michal Hocko , Dong Aisheng , Fabio Estevam , Shawn Guo , Jacky Bai , Pengutronix Kernel Team , NXP S32 Linux Team , Sascha Hauer , Tony Lindgren , Haojian Zhuang , Geert Uytterhoeven , Greg Kroah-Hartman , "Rafael J. Wysocki" , Danilo Krummrich , Neil Armstrong , Mark Brown Cc: linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mips@vger.kernel.org, linux-hardening@vger.kernel.org, linux-mm@kvack.org, imx@lists.linux.dev, linux-omap@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Bartosz Golaszewski X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1867; i=bartosz.golaszewski@linaro.org; h=from:subject:message-id; bh=qPaUa8oAewMMgl8vCYU8JU6h4WrDoK89nonD2PTBKh4=; b=owEBbQKS/ZANAwAKARGnLqAUcddyAcsmYgBosH0OrC02A7A3w/syOmHWmFD75kiKFWOGyfOfU IkOZw9hCMKJAjMEAAEKAB0WIQQWnetsC8PEYBPSx58Rpy6gFHHXcgUCaLB9DgAKCRARpy6gFHHX cog4EACpRHc2z4CEO5/+sWycbTJ/Lv36XdsRhCdryTDmJugI9ckFKoQSZSCDj/EPSYTLap4IRcK v9nSbe3GHgyhCBsI4oPZRLALF/GxIpu/uT6Km1hMYNz0BKb73ON/KkKX2YjD6FDJmZxw+Vu6UVN WM9eKdip1jecx1xnrqabz4R4N+ToGOw8uBEpUBFz+GxzItCcchdLGaDiVu5sSr+vQqBIRi02YVw nMlphUxtITQbANQYECx1Nv1wP0FC3z/NrADiA7uTJmmpoQ9/oGlBIxsk3oaFapoPnuJGo3SJHgW mmck7aZcXXhlAVZIiw9AIJJh/pgBI9uk7x1EcsNXWmikxyDmqd6lCXPMdIoknKVfyRqWnkCSgQ9 TXbSuYZKBlETf4DXch3J0+3Gzk048a+TZ3AGds07+/KPC1otJhyxKQk9l33053cVyeXhjYOH12w NmL9X+K1QkmH632UgY1mZUockXDkxaq77pVHpq7LhuGkPXIO7OQ4Z9s6joU6MzhxlIPSvHywpkm eO/vZTvIhUNoYQh3fEW1qBuMVuvoh9jDfivIMlZC5aDXleNbJrQTlT9uKils+YyNyOsXfM9sejY tdyEgsTDn1lfM8sKVtJe8RRgFOBmDbxsHb04CG5Olf9wBaVFRC3YBSJ5c5ro5ldHl3e+V93Ildw o6i4ZvyV6pa1cVg== X-Developer-Key: i=bartosz.golaszewski@linaro.org; a=openpgp; fpr=169DEB6C0BC3C46013D2C79F11A72EA01471D772 From: Bartosz Golaszewski Unlike all the other allocations in this driver, the memory for storing the pin function descriptions allocated with kcalloc() and later resized with krealloc() is never freed. Use devres like elsewhere to handle that. While at it - replace krealloc() with more suitable devm_krealloc_array(). Note: the logic in this module is pretty convoluted and could probably use some revisiting, we should probably be able to calculate the exact amount of memory needed in advance or even skip the allocation altogether and just add each function to the radix tree separately. Signed-off-by: Bartosz Golaszewski --- drivers/pinctrl/pinctrl-keembay.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/pinctrl/pinctrl-keembay.c b/drivers/pinctrl/pinctrl-ke= embay.c index 60cf017498b32a9f36a1f8608e372951c2b8f12a..6aefcbc31309995ec1e235416b4= 0aab3e4a073a9 100644 --- a/drivers/pinctrl/pinctrl-keembay.c +++ b/drivers/pinctrl/pinctrl-keembay.c @@ -1603,7 +1603,8 @@ static int keembay_build_functions(struct keembay_pin= ctrl *kpc) * being part of 8 (hw maximum) globally unique muxes. */ kpc->nfuncs =3D 0; - keembay_funcs =3D kcalloc(kpc->npins * 8, sizeof(*keembay_funcs), GFP_KER= NEL); + keembay_funcs =3D devm_kcalloc(kpc->dev, kpc->npins * 8, + sizeof(*keembay_funcs), GFP_KERNEL); if (!keembay_funcs) return -ENOMEM; =20 @@ -1634,7 +1635,9 @@ static int keembay_build_functions(struct keembay_pin= ctrl *kpc) } =20 /* Reallocate memory based on actual number of functions */ - new_funcs =3D krealloc(keembay_funcs, kpc->nfuncs * sizeof(*new_funcs), G= FP_KERNEL); + new_funcs =3D devm_krealloc_array(kpc->dev, keembay_funcs, + kpc->nfuncs, sizeof(*new_funcs), + GFP_KERNEL); if (!new_funcs) { kfree(keembay_funcs); return -ENOMEM; --=20 2.48.1