From nobody Mon Feb 9 12:25:03 2026 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.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 A4E2B350A29 for ; Fri, 9 Jan 2026 08:38:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767947928; cv=none; b=C+AbkjAOzBgJV9g11PShBmZ9U6wOwG9W/6GEjgZngZ7gY1MNur2QwZv4voDXKQ3fTCCJjo5vCZ9EqufNxnT6n9GSaysi0Uwrw49oLvGL4n07aRoIWRvD4Kse9Ys+TGRK6rlSGTsIJGazwweHQz3Ku8l1fOmQSY1Oumewp9vNVMU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767947928; c=relaxed/simple; bh=K5tgOiq77r3lfwLEiFdQfx8ViR1Uk6xWP59K0FlgwXE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=s83j9WYTrETVzdqu7NCIQ3KbfgRB0+effExG/H0w6LNztR5+8J0WJ00vmYJ50JUrzhuotV6Pk0ZJvl9j5u0dBu9qvEsvn6NFrwk9rs8zSzQ1GGTj3PnycP3vld8HgEyi+Z99410h5Rh2sjUJdzjrK6ixYIqinUJzz7pb/Yf86b8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org; spf=pass smtp.mailfrom=linaro.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b=ji4+9gdK; arc=none smtp.client-ip=209.85.208.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linaro.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=linaro.org header.i=@linaro.org header.b="ji4+9gdK" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-64b7a38f07eso6134492a12.0 for ; Fri, 09 Jan 2026 00:38:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1767947920; x=1768552720; 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=uC8GxDilhXr5xxzhTNKaI/12HBAgcI5kP1knrtl3u+U=; b=ji4+9gdKSRwFVS7cBRig0R7w0aGAUWiboStFiYalpy2l+bKoFZdHcC9+zvbyeExgmU YxbifEVoI9FPvoYGCx5vTC9D/ku99ysRNqzZqPeyyY4m4FWTltHCsD4CJK8WuDlQzeKl kTNUeA+sjeoQIwZTYv7vRikI69F19dWa6P450UKYNWMMmw4j5d8TaX/LkKaOFOPZygnj U7Jdvb6RQK2gymijH9Gsc/4kaQSv2deC2sVW4eFtX4hQnxKd/zFbJuUnLbuPlxqH4eS3 df0hye2p4Y8CtqTyErA4HJyIUDhBj4ZfZs3tQK3nfCyN3vF+b/ukL4xbJGTOpMq7acZr kNxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767947920; x=1768552720; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uC8GxDilhXr5xxzhTNKaI/12HBAgcI5kP1knrtl3u+U=; b=XD0gEgTe97AxkUHAVc/WnjEY9xDmD/DwcLcBloPUTZTBf9Ux52ilXLfbysslwpfUPc XAPAfHH08DrK5dGpN1UXgAyUxed+EKQzchUKLQW3k7T1XxCHPyyidAjvGLhdp2CT0NjP CZKq9Q5mZYA6s5hHs71wo7vaYD4/3tPfLuONYim/c9YqJNrajqh8VB1z84iMeE1T4zj5 d9hdviWdzZd2I27nVHLW17Ue3+8cZ6uIZpyHi58qZV4WxSsuypG0aSv2946V3reCiVbU egAPrRVREPFOvKQ5SQDgTwntCPNBAINZgWd2JSOPDPT05OGsyb6aAnHQUk8TK5TSmedV Bh+w== X-Forwarded-Encrypted: i=1; AJvYcCU3hRogeHpdpsdgy0khS+bdpEjHRZSKoIk/IaZZT3raPXGPUmm6FI865mGbcKrkm18x8KZrRVwdQmQtc1Q=@vger.kernel.org X-Gm-Message-State: AOJu0YzdRnvCQBB6U7AAIxHowpl/wIfvw0+WfcAXDtE9n9jixw1JwDqG dGFQkH0TgsRIbFQWMQkaVc0O/mM08HSWNaTDLYlIXazPxRkIanNF4iGj7ZB/u9vb0HE= X-Gm-Gg: AY/fxX5qCUZIlA3/9dinNSTI2ym5Ev8UD0cDzg82sR2xb6+zqyS+6erC4FMfTZ73Mz0 myPZ9y0ceg0/W7qMqy9hDMEhnmEkfRyyLQIFRASMhsMv0GHb60CN7ztpBhQ6rjDVx8ajwpBoQoB hLruzr23N+Ubx47mKBURy0AxahZ4H09lp18jZ8HoECQceAN7t5J7ibBFk1WlGQudIkjnvE+OIGa dXg86Yy/UEHwRMXYD00RHGHuKxmu3CNWeoF7ommytrYrxw8IOrzVs0FvbCtWq7PtO9zs9fbVwDI 55au+1Xegw2kk1GIT9OCln91HmHGqJXnMakfXW+t7zEKSHzo+kbgEFs86lN5Ntqqv6FE8g0eoNS gHG7qlToF+MTZjuX82UK4cdSTjlPUjKoTuHHxkmQs7+RXpuKBU5HkURy3cgopgmO7FBb7gsbtfR bZinT9HFtMbk7NFo92YVJR+B9RyydVG497eZHVTkqoYG6ewJI/eUKYoWJgwf7lJ80LklU610OLa 6oFJA== X-Google-Smtp-Source: AGHT+IFDH/o78VbXPhGGAflSnPiHmLX0RmySvMYvEZDhaC2NdO/ElgxNE7vLs94AbRVB7D03NVhjXQ== X-Received: by 2002:a05:6402:270c:b0:64d:65d:230b with SMTP id 4fb4d7f45d1cf-65097decd6fmr7904920a12.12.1767947920253; Fri, 09 Jan 2026 00:38:40 -0800 (PST) Received: from puffmais2.c.googlers.com (244.175.141.34.bc.googleusercontent.com. [34.141.175.244]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6507be658b3sm9472950a12.18.2026.01.09.00.38.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 Jan 2026 00:38:39 -0800 (PST) From: =?utf-8?q?Andr=C3=A9_Draszik?= Date: Fri, 09 Jan 2026 08:38:38 +0000 Subject: [PATCH v2 2/8] regulator: core: fix locking in regulator_resolve_supply() error 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: <20260109-regulators-defer-v2-2-1a25dc968e60@linaro.org> References: <20260109-regulators-defer-v2-0-1a25dc968e60@linaro.org> In-Reply-To: <20260109-regulators-defer-v2-0-1a25dc968e60@linaro.org> To: Liam Girdwood , Mark Brown , Javier Martinez Canillas , Jon Hunter , Dmitry Baryshkov , Oleksij Rempel Cc: Peter Griffin , Tudor Ambarus , Will McVicker , Juan Yescas , kernel-team@android.com, linux-kernel@vger.kernel.org, =?utf-8?q?Andr=C3=A9_Draszik?= X-Mailer: b4 0.14.2 If late enabling of a supply regulator fails in regulator_resolve_supply(), the code currently triggers a lockdep warning: WARNING: drivers/regulator/core.c:2649 at _regulator_put+0x80/0xa0, CPU= #6: kworker/u32:4/596 ... Call trace: _regulator_put+0x80/0xa0 (P) regulator_resolve_supply+0x7cc/0xbe0 regulator_register_resolve_supply+0x28/0xb8 as the regulator_list_mutex must be held when calling _regulator_put(). To solve this, simply switch to using regulator_put(). While at it, we should also make sure that no concurrent access happens to our rdev while we clear out the supply pointer. Add appropriate locking to ensure that. While the code in question will be removed altogether in a follow-up commit, I believe it is still beneficial to have this corrected before removal for future reference. Fixes: 36a1f1b6ddc6 ("regulator: core: Fix memory leak in regulator_resolve= _supply()") Fixes: 8e5356a73604 ("regulator: core: Clear the supply pointer if enabling= fails") Signed-off-by: Andr=C3=A9 Draszik --- drivers/regulator/core.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/regulator/core.c b/drivers/regulator/core.c index a723bd00e1716c2c3899c63314c6249015698216..48c091de68d81e3e89eacecd852= 6255ab9a446b2 100644 --- a/drivers/regulator/core.c +++ b/drivers/regulator/core.c @@ -2285,8 +2285,16 @@ static int regulator_resolve_supply(struct regulator= _dev *rdev) if (rdev->use_count) { ret =3D regulator_enable(rdev->supply); if (ret < 0) { - _regulator_put(rdev->supply); + struct regulator *supply; + + regulator_lock_two(rdev, rdev->supply->rdev, &ww_ctx); + + supply =3D rdev->supply; rdev->supply =3D NULL; + + regulator_unlock_two(rdev, supply->rdev, &ww_ctx); + + regulator_put(supply); goto out; } } --=20 2.52.0.457.g6b5491de43-goog