From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f171.google.com (mail-pg1-f171.google.com [209.85.215.171]) (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 AAD763E6DF7 for ; Mon, 8 Jun 2026 19:39:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780947587; cv=none; b=JsCo3OAnuSqORmunVbxCqd/mz49ykliT+EHqyMKvE39Cg+MX9qneFt6ZRc7En4EXyLzH4rMFS3sw2q8g/S2qo8HTqfjgqXY4OJIAasV9VEVfVjCrm0Rfxz6KrW8eFbZrJnf0JUJ+Hh+VO4+YG9oEJCTLsr1FNwJfcAoXeJzdigM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780947587; c=relaxed/simple; bh=3j8dNNSJeoF7jcZhQTeeTh2t4eVcLuzkLRDOwhU9gG8=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=KqNjcu3cG0/ZCxMcm2Oj5fFDmPd+xMaS+IS5fRO7HF+CSdnpTloICJhu2i6j75NHPTIFDEKKlbkmEFuoJFTfc+T077ks5VFOL/xMDn+JZwG4GFKW2yK6AWRyXHzWuLHknlnKLIoLiyZSIdbUJcRUINKPSpJZ3XigolRGo1SE2Fs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=roeck-us.net; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=lHKioarK; arc=none smtp.client-ip=209.85.215.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=roeck-us.net 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="lHKioarK" Received: by mail-pg1-f171.google.com with SMTP id 41be03b00d2f7-c8584bbbf2cso3092084a12.3 for ; Mon, 08 Jun 2026 12:39:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780947585; x=1781552385; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:sender:from:to:cc:subject:date:message-id :reply-to; bh=hmQl7nKoLuGAiX+6QzzNqkp9oEPlCQzeoRFYAPNXRs0=; b=lHKioarKsBDj4AtEUiNKMkHQxUgcpA4xkJgv/HUYiUhkxth8K4cJ9swPYRzRC5MqCh eM2/rg81Mq1N+QaQoeG26Vj75ZsHcihM8zyqNL7UmHyo3p7gtxpt7UywW4wgD84DLFz2 HvD55pfFUd6ZxaRSRXlvr09UM5CxH4HHRmMG6lxEptnqKpzuToCS4VBnxYbFA1EVx1mY 4X6gGsq25hzZDw46+KUnYtbwE40zbYbS85fQVnJzabdmQHXsWlJoHl9rsSitICpyvmfV YByNY8BTm603TpyRLvbkrWlV0s58sjHHyagN0b4YdaBmnssf2h9JDbp4RkTCJBj7bn7e 0A8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780947585; x=1781552385; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:sender:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=hmQl7nKoLuGAiX+6QzzNqkp9oEPlCQzeoRFYAPNXRs0=; b=jtqTt51sBHRf8wRiESol084L8+1E7wvccKTfwdKfl5TzGAJCJsbHpePqzkrw6zYL16 IP+Mqln8zFiOi43sZWCOx9LzPmsN6phfj16iTqgWtabtULUAck4YwmgQ0Q7CXF8dkiqo /Y9zN6eOg0AvGCILaPCIFpMEBNNpbUTcV52so4s2hCBH0e7h3dcu7FYac3qILrIv6PyM xCDBJYLXPRmd8+A1wr+tY4HvOONAeihnHDbwZp+cNZuSTMhCa+WzZKqTTYLm7I0HL520 V6vTGCM328c++XlAQnWfr52zHoGMzg0IE2WQCqV9h1cGsTK333LkMOcFye4++eAPLQ2w Lk5w== X-Forwarded-Encrypted: i=1; AFNElJ/9OEr7u+4C+81ljKpgynAvvl8y6v3CVFXJ5LrkEZ4+bUyI3qzP9rpUmZMgSTUMZE/fsfujiPAbjW93zow=@vger.kernel.org X-Gm-Message-State: AOJu0YzB/yZcGug+ieXfV+4BzsgQ7GjM/7Dqunrv7/XlC9oSqi8zpvaJ UvRvFh3+n3ZHbPh7m1RnU+tV1CXgWRU+71Ai6hCwGecTG/pkgNl7EW1J X-Gm-Gg: Acq92OEYID5OXWXPPjwLs8ErD7SUbbDpxx3dg9IrKcMNIOg0fB6LAcjSXmZuoShvSjD UAhsov7+rHMMq2esOrhfTeMRDq+gOjr2GxnUWOwOoSRkgrTqHyOfWnAHsGxN5RxJHE7qolM1Xdy ylFGyJnYFdAOZoY/6jkgjf5ncQkM0Zf7ThTJtN+Cy9qF7A2xDjg4CcioQvyiPVclRZR345JFDl2 id+J+jsTNmo0EB+AUXPRQOFLFTNXagLuy9v1DGewgFYOnLQU2KlujObipzJNSjuiBAjDea21sOY G+b8f2r8QBXkj9d4WHjAzQzh3OBjmlLAO8SPek9Kz9iYHbPx7MUEvP3Hp6tiR82GvKJ9kpTxjBN 98wT103yLRMK41eE+bh8+ZSsncmwPbiLHfeEZ0VNDvUNGM+IJZNkz0Ng0ONcyp6zTUhOWeX3NQz R+n0g+z5OzqeivJNbcrHPrvyd6zzRRb2rX2l6Eo6tervm7PUU= X-Received: by 2002:a05:6a00:1302:b0:82c:9897:70e6 with SMTP id d2e1a72fcca58-842b0f9c4abmr17330232b3a.34.1780947584928; Mon, 08 Jun 2026 12:39:44 -0700 (PDT) Received: from server.roeck-us.net ([2600:1700:e321:62f0:da43:aeff:fecc:bfd5]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm21158772b3a.2.2026.06.08.12.39.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 08 Jun 2026 12:39:44 -0700 (PDT) Sender: Guenter Roeck Date: Mon, 8 Jun 2026 12:39:43 -0700 From: Guenter Roeck To: William Theesfeld Cc: Xingyu Wu , Ziv Xu , Wim Van Sebroeck , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 1/6] watchdog: starfive: balance PM refcount when start operation fails Message-ID: <271cd3d3-eed4-4ed1-bbe4-ffa65434182f@roeck-us.net> References: <3a2ba59a0ed3e5ee121a49e04c5bed0c452af238.1780666366.git.william@theesfeld.net> 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=us-ascii Content-Disposition: inline In-Reply-To: <3a2ba59a0ed3e5ee121a49e04c5bed0c452af238.1780666366.git.william@theesfeld.net> On Fri, Jun 05, 2026 at 01:19:37PM -0400, William Theesfeld wrote: > After pm_runtime_resume_and_get() succeeds in starfive_wdt_pm_start(), > the runtime PM usage counter is incremented. If starfive_wdt_start() > subsequently fails, the function returns the error without releasing > that reference, leaking the usage counter. > > Call pm_runtime_put_sync() on the start failure path so the counter > is balanced. > > This also folds in the v1 conversion of pm_runtime_get_sync() to > pm_runtime_resume_and_get(), which was the original purpose of this > patch; both fixes together close the refcount-leak window in this > function as flagged by the maintainer on the v1 thread. That description doesn't really match the code. The purpose of this patch is to fix a refcount leak in the upstream code, not to fix the refcount leak introduced by the first version of this patch. That the first version of the patch introduced a new refcount leak is irrelevant (and actually confusing). Guenter > > Signed-off-by: William Theesfeld > --- > drivers/watchdog/starfive-wdt.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/watchdog/starfive-wdt.c b/drivers/watchdog/starfive-wdt.c > index af55adc4a..ed8c5711a 100644 > --- a/drivers/watchdog/starfive-wdt.c > +++ b/drivers/watchdog/starfive-wdt.c > @@ -371,12 +371,16 @@ static void starfive_wdt_stop(struct starfive_wdt *wdt) > static int starfive_wdt_pm_start(struct watchdog_device *wdd) > { > struct starfive_wdt *wdt = watchdog_get_drvdata(wdd); > - int ret = pm_runtime_get_sync(wdd->parent); > + int ret = pm_runtime_resume_and_get(wdd->parent); > > if (ret < 0) > return ret; > > - return starfive_wdt_start(wdt); > + ret = starfive_wdt_start(wdt); > + if (ret) > + pm_runtime_put_sync(wdd->parent); > + > + return ret; > } > > static int starfive_wdt_pm_stop(struct watchdog_device *wdd)