From nobody Sat Sep 26 22:55:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 62CE537E5F5; Fri, 28 Aug 2026 16:14:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933646; cv=none; b=CxBcIGvscAQFt6J++vxaKm+sthWjfhcHm+6vmYxuYM1uBg1u5b2vvZbdzBvuuXdKcoKAw90AUK21PuQ5tadTwg4ExfyE5DJoAE6rWl/4VrQA+kBWGiavilnh7cee7iMK5bJnrllGBzjzEV9X+yVwg6PX+zxJuO+D+I0Jew4qPxo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933646; c=relaxed/simple; bh=58gMZiQdo9xgQTc+9CgMaP90LgU1OrYjGTf28AJgEG8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=P51hnWqZIkmmVNYG8dX4cjzdxEYBHZ0E1AuMg5sL3sbYcYBqs+MztUxNIUFVwMQzZsAbagNJ5WQtkqbUZ7cb6bH2STJqDiAoSlMFYFtRH7qZ05SDzQVE1G+jIr5Fsg71rdOiKidljkaAYaO4dfh/c5gpHNGpeHirht7majGZGak= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DJszZP+5; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DJszZP+5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 613211F00A3D; Fri, 28 Aug 2026 16:14:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787933645; bh=A+7kA2H8Mxmbnq2nhnANIpMB0DXOUGYwR1/+QLmtRcU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=DJszZP+5ghB40KPyQss0sib17WWFlB931rPFEmN7ZbJcLID1kXq/p8IXCdy7sudjl X34mlP4JdqoBniLgfBu3XtBjtK0FBui7sf57yccMjbNIUiLhpn2yyQLebxHRfb6cOS 73G44TFD0R6cmeTBdyQNAqRkvYQPlM7tXb/I+lNObXx9Zjli4YwBbaZ6AkGIduGq72 wxFVO33pDdgC72OMP1O8Kp866UwqvK8wT0/rVrBlph1PfXQj63/i/KhCaUFypJ0KN1 GPFaX/jgWGR+H8uUToqzn04/TmO6ypXISf5HNkvHUEppkW2DxRwNpaE/93YIYwGFAh BTydJfbpOARoQ== From: Tzung-Bi Shih To: Wim Van Sebroeck , Guenter Roeck Cc: Daniel Palmer , Romain Perier , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, tzungbi@kernel.org Subject: [PATCH v2 1/9] watchdog: msc313e: Fix NULL pointer dereference in PM callbacks Date: Sat, 29 Aug 2026 00:13:40 +0800 Message-ID: <20260828161348.13212-2-tzungbi@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260828161348.13212-1-tzungbi@kernel.org> References: <20260828161348.13212-1-tzungbi@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" msc313e_wdt_probe() doesn't set the driver data for the platform device. As a result, dev_get_drvdata() in msc313e_wdt_suspend() and msc313e_wdt_resume() will return NULL, leading to a NULL pointer dereference afterward. Set the platform device driver data in msc313e_wdt_probe(). Fixes: e9800b799464 ("watchdog: Add Mstar MSC313e WDT driver") Signed-off-by: Tzung-Bi Shih --- v2: - No changes. v1: https://lore.kernel.org/all/20260827044700.554333-2-tzungbi@kernel.org --- drivers/watchdog/msc313e_wdt.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_wdt.c index d962589e2c55..f69d66971c41 100644 --- a/drivers/watchdog/msc313e_wdt.c +++ b/drivers/watchdog/msc313e_wdt.c @@ -124,6 +124,7 @@ static int msc313e_wdt_probe(struct platform_device *pd= ev) set_bit(WDOG_HW_RUNNING, &priv->wdev.status); =20 watchdog_set_drvdata(&priv->wdev, priv); + platform_set_drvdata(pdev, priv); =20 watchdog_init_timeout(&priv->wdev, timeout, dev); watchdog_stop_on_reboot(&priv->wdev); --=20 2.53.0 From nobody Sat Sep 26 22:55:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1C5B9374A0C; Fri, 28 Aug 2026 16:14:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933648; cv=none; b=rjzjlnlFrCPCnqqkkYQVkTVPItWBkPof31jTP4AWOMh7VA/L51LTCsm9EOQL9mqtv/Quw4K40jo6lcPMi9ru8HAl9mS099AlPUKHwDE30Y3RwtsrS1sueXQvnScwcD8cwPyJ2iA3fQq/tqnkjV9zrPe0tDwnR29PktCqrqw8uEs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933648; c=relaxed/simple; bh=OI1gnMNlvOgrvAGGV2Cm5sMcmuSRCXQ1XJJXH6CRrO8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Yx+URF79Omcbabkd1LvJxYLjHtf1kMDvu1Bkju0Fjk5qDlPwpGd1WgmA2YextXFNF7TGErzCmfc5ttvoOJwiEYX6BrPQqSaFqbX+Lb36AUvUavFBSTGqPtAIImiSqi0q/qnWCI2BqPeHdzuJn0ck+/svoA4A7XUU5g6EKH+gErw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=d1Ebrr4G; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="d1Ebrr4G" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5E7F51F000E9; Fri, 28 Aug 2026 16:14:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787933647; bh=lVZVYg+bDdK1zVHqn8k5MSf2PwzC871N3x+gQ/FCclE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=d1Ebrr4Gr3uRXuLIyvSiM/awqnfTJZFvwWzfvneayBDm/mkzw+AK4G7M3mAjBgqyH wkdV5WiiqEVPEn69UxRfXBAyOcZolZfPSc29dGhSCUScInNRKj5+J7FOh0l8xaZLuD VPnF9wpo13SrZRhohjKHZjueqHohCghXsc6mGCtF5BkGv68zlHZ1KJ0uBSwBpjABky GFqja39xzFHdUq2h2IDRnOz5oq5Xt99Gu83h+Wwm73bYptI7S1DVqJtBQwhZ0xQzJm U513gDXZG1j7KD6lMzGVS0LKZswknwwNGtvkrxfm/xxZlhAsrTRGEhyIqCpwkTJF1n HQGgzf0bhTM4Q== From: Tzung-Bi Shih To: Wim Van Sebroeck , Guenter Roeck Cc: Daniel Palmer , Romain Perier , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, tzungbi@kernel.org Subject: [PATCH v2 2/9] watchdog: msc313e: Avoid division by zero Date: Sat, 29 Aug 2026 00:13:41 +0800 Message-ID: <20260828161348.13212-3-tzungbi@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260828161348.13212-1-tzungbi@kernel.org> References: <20260828161348.13212-1-tzungbi@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" clk_get_rate() could return 0. Avoid a division by zero panic. Fixes: e9800b799464 ("watchdog: Add Mstar MSC313e WDT driver") Signed-off-by: Tzung-Bi Shih --- Simply browsed code under drivers/watchdog/, the following drivers also use clk_get_rate() as a denominator directly: - drivers/watchdog/digicolor_wdt.c - drivers/watchdog/rtd119x_wdt.c - drivers/watchdog/rzv2h_wdt.c Let me know if you think we should fix them as well. --- v2: - New to the series. --- drivers/watchdog/msc313e_wdt.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_wdt.c index f69d66971c41..c3018b970164 100644 --- a/drivers/watchdog/msc313e_wdt.c +++ b/drivers/watchdog/msc313e_wdt.c @@ -97,6 +97,7 @@ static int msc313e_wdt_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; struct msc313e_wdt_priv *priv; + unsigned long rate; =20 priv =3D devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) @@ -116,7 +117,10 @@ static int msc313e_wdt_probe(struct platform_device *p= dev) priv->wdev.ops =3D &msc313e_wdt_ops, priv->wdev.parent =3D dev; priv->wdev.min_timeout =3D MSC313E_WDT_MIN_TIMEOUT; - priv->wdev.max_timeout =3D U32_MAX / clk_get_rate(priv->clk); + rate =3D clk_get_rate(priv->clk); + if (!rate) + return -EINVAL; + priv->wdev.max_timeout =3D U32_MAX / rate; priv->wdev.timeout =3D MSC313E_WDT_DEFAULT_TIMEOUT; =20 /* If the period is non-zero the WDT is running */ --=20 2.53.0 From nobody Sat Sep 26 22:55:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AF1B37E5D2; Fri, 28 Aug 2026 16:14:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933652; cv=none; b=lR60AG43D7bxJdJNysAl97C+ZXN583oIjvHiSOXBsnSYoW9tqBANuQ+1mbUBrAI+CQoiA3CO8FMnpgw9hK6Wh+0LEdkuEzucmxxTxdzhPlvu76wUcFhCvLrrt/0kLHPS57nS6YXu3qaKSktRODsMA8mn+Vo2dDfo6mRWVimRJfo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933652; c=relaxed/simple; bh=KvPX89e/Pc7vuzH/R6tsZQ9S5MksA7zPyxXeBhJRgIk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZDstbx9DIBtEXauENxhdilrgQKPMP+a9if9rvK9e9nAdfQmErsiLKqFj4fSGxk+ZRq/hwDRoE69auiuwetJFjqWy8QX0hppsz3sR3AjPFuS+qTAsC1HcLzqkzD5J+ev4nr8g7QhkyFp8EWlrphnKROGrxuo1Ao9UuPt6yS4DN44= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Ze40caVR; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Ze40caVR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 6FDC31F00A3D; Fri, 28 Aug 2026 16:14:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787933649; bh=hfZ1+eqosKhDqwThr4Dsvg9FoS2dJuKMoaU3lxy4VVA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Ze40caVRAOqysKX9yWo4u2ijWcMVLmja9Uju1hH/Xu1fE1fSt62MjBbu6qinF415N V5KJzsEdR/F0rBGgWvCNss4VQcXH1hdKUPIN9qy5pi1cFyAPn+AVQv8ygbMmwSrrvx NwFACOk/vo8ylZiciJodz1lebn9VLRXYBQ4/OfSAzvRAgOw9Nlr8GSr3ibt/JF043e lR5dnZ9XWIpSqLVFbeycwVQPpVxq8uC88+F6Lxx0iF14tODE4vxmqjKV/A3m2Hk1yl g3ZRRe24B2k2NhI+uLCM8Bj7qRwq3jAnYUbmCi8URWZzTWmMB5NHdWqF8hLC8TgAO+ N5l+OBc/OInFg== From: Tzung-Bi Shih To: Wim Van Sebroeck , Guenter Roeck Cc: Daniel Palmer , Romain Perier , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, tzungbi@kernel.org Subject: [PATCH v2 3/9] watchdog: msc313e: Fix clock leak and spurious timer in settimeout() Date: Sat, 29 Aug 2026 00:13:42 +0800 Message-ID: <20260828161348.13212-4-tzungbi@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260828161348.13212-1-tzungbi@kernel.org> References: <20260828161348.13212-1-tzungbi@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" msc313e_wdt_settimeout() unconditionally calls msc313e_wdt_start() which introduces two severe bugs: 1. If the watchdog is already active, calling start() again will increase the reference count of the clock again. However stop() is only called once, the reference count is unbalance. 2. If the watchdog is stopped, calling settimeout() will start the hardware timer accidentally. Factor out the register-writing logic into a helper function. Only call it in settimeout() if the watchdog is running. Otherwise, simply update `wdev->timeout`. Fixes: e9800b799464 ("watchdog: Add Mstar MSC313e WDT driver") Signed-off-by: Tzung-Bi Shih --- v2: - New to the series. --- drivers/watchdog/msc313e_wdt.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_wdt.c index c3018b970164..8ce24df8e338 100644 --- a/drivers/watchdog/msc313e_wdt.c +++ b/drivers/watchdog/msc313e_wdt.c @@ -31,20 +31,26 @@ struct msc313e_wdt_priv { struct clk *clk; }; =20 +static void msc313e_wdt_set_hw_timeout(struct msc313e_wdt_priv *priv, + unsigned int timeout) +{ + u32 t =3D timeout * clk_get_rate(priv->clk); + + writew(t & 0xffff, priv->base + REG_WDT_MAX_PRD_L); + writew((t >> 16) & 0xffff, priv->base + REG_WDT_MAX_PRD_H); + writew(1, priv->base + REG_WDT_CLR); +} + static int msc313e_wdt_start(struct watchdog_device *wdev) { struct msc313e_wdt_priv *priv =3D watchdog_get_drvdata(wdev); - u32 timeout; int err; =20 err =3D clk_prepare_enable(priv->clk); if (err) return err; =20 - timeout =3D wdev->timeout * clk_get_rate(priv->clk); - writew(timeout & 0xffff, priv->base + REG_WDT_MAX_PRD_L); - writew((timeout >> 16) & 0xffff, priv->base + REG_WDT_MAX_PRD_H); - writew(1, priv->base + REG_WDT_CLR); + msc313e_wdt_set_hw_timeout(priv, wdev->timeout); return 0; } =20 @@ -69,9 +75,13 @@ static int msc313e_wdt_stop(struct watchdog_device *wdev) =20 static int msc313e_wdt_settimeout(struct watchdog_device *wdev, unsigned i= nt new_time) { + struct msc313e_wdt_priv *priv =3D watchdog_get_drvdata(wdev); + wdev->timeout =3D new_time; =20 - return msc313e_wdt_start(wdev); + if (watchdog_hw_running(wdev) || watchdog_active(wdev)) + msc313e_wdt_set_hw_timeout(priv, wdev->timeout); + return 0; } =20 static const struct watchdog_info msc313e_wdt_ident =3D { --=20 2.53.0 From nobody Sat Sep 26 22:55:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3AE8A226D18; Fri, 28 Aug 2026 16:14:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933652; cv=none; b=dyHTEyjIKKwrFk9/RIvFjEKB5Q2qmuo9en6jHmPTXBCQzsbYYcU6wnEBhnWgRBcKMgP3j+R9hHHHimMG+eAeQTwDv4nUwtgsjlAtxnzo9RgS4r19Gr7rySoOK+rnn1FkNIXc13iCa4oKY/QpvNdr+8yrf0YYcmQj47bM0dx9tss= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933652; c=relaxed/simple; bh=GvI9aClyaWPCW4DyL3u15cesj03hvc2tbpILcGQoK+A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=r92zy3TGtPoX5u9bCPv0QFsHeE0wuJEsvDQvklARK1oSQ1dVm9WVeePjT69GBnFmYU4/59OKGwlfH0sLwxNfCz9pEV9D8G3ub0pnPLaBxIM1camBGsRmciUHYtZmpokm1Vb+JpwW6T6US3zwogbmy0tP+0sNQUg4yJEl0sCLIig= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jDMnf9Bt; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jDMnf9Bt" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5FFE21F000E9; Fri, 28 Aug 2026 16:14:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787933650; bh=2kNYHCYTLJtdZIB7MaD/zUwd8rkpEDZp2kmjhvGkm+w=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=jDMnf9BtE9Mo0rWUwJQT8wS57QwnVhLK/sGOS1lTX4a4knPg3Ocrhv36bkOtzaVV8 UvTM7ua0Xpahcoixe0bDcSNULeYr6sWVRhbuTTt6C8Nfs9y6pk+nRll3GTRa5MYSqE avuTXk9PMotdVRfHdcEPscLu1mR07rnDC/LRFg+0yVXLkwIv4MVnsdEnmCtrZ7x/a8 7caiW4KmbgspOlq8/jNCt8FTXeI8W9tf//i+4Y2COnlWbVJblF9ZP+0MsLdt8lCGLw GSMciGV3fL8IKsE7o5aUXDiyQMYx9PLF4+1iewR1Xe7bLWs5Eh3cA7XUItrJGIsyPm Gh0OXTvKIzuSw== From: Tzung-Bi Shih To: Wim Van Sebroeck , Guenter Roeck Cc: Daniel Palmer , Romain Perier , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, tzungbi@kernel.org Subject: [PATCH v2 4/9] watchdog: msc313e: Enable clock before accessing hardware registers Date: Sat, 29 Aug 2026 00:13:43 +0800 Message-ID: <20260828161348.13212-5-tzungbi@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260828161348.13212-1-tzungbi@kernel.org> References: <20260828161348.13212-1-tzungbi@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" msc313e_wdt_probe() reads from hardware registers without ensuring the required clock is enabled. Furthermore, if the bootloader leaves the watchdog running, msc313e_wdt_probe() sets WDOG_HW_RUNNING without increasing the clock's reference count. While the clock is currently supplied as a fixed clock by the device tree (`xtal_div2` in arch/arm/boot/dts/sigmastar/mstar-v7.dtsi) which masks the physical issue, this still violates the API usage. Call clk_prepare_enable() before reading WDT registers. If the WDT is running, leave the clock enabled so the CCF reference counter is balanced. Fixes: ffd264bd152c ("watchdog: msc313e: Check if the WDT was running at bo= ot") Signed-off-by: Tzung-Bi Shih --- v2: - Fix a clock leak issue in the error handling path (Sashiko reported). v1: https://lore.kernel.org/all/20260827044700.554333-3-tzungbi@kernel.org --- drivers/watchdog/msc313e_wdt.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_wdt.c index 8ce24df8e338..7c4593566781 100644 --- a/drivers/watchdog/msc313e_wdt.c +++ b/drivers/watchdog/msc313e_wdt.c @@ -108,6 +108,7 @@ static int msc313e_wdt_probe(struct platform_device *pd= ev) struct device *dev =3D &pdev->dev; struct msc313e_wdt_priv *priv; unsigned long rate; + int ret; =20 priv =3D devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); if (!priv) @@ -133,9 +134,21 @@ static int msc313e_wdt_probe(struct platform_device *p= dev) priv->wdev.max_timeout =3D U32_MAX / rate; priv->wdev.timeout =3D MSC313E_WDT_DEFAULT_TIMEOUT; =20 + ret =3D clk_prepare_enable(priv->clk); + if (ret) + return ret; + /* If the period is non-zero the WDT is running */ - if (readw(priv->base + REG_WDT_MAX_PRD_L) | (readw(priv->base + REG_WDT_M= AX_PRD_H) << 16)) + if (readw(priv->base + REG_WDT_MAX_PRD_L) | (readw(priv->base + REG_WDT_M= AX_PRD_H) << 16)) { set_bit(WDOG_HW_RUNNING, &priv->wdev.status); + /* + * Keep the clock enabled. The watchdog core will skip the next + * start() and a future stop() will balance the CCF reference + * count. + */ + } else { + clk_disable_unprepare(priv->clk); + } =20 watchdog_set_drvdata(&priv->wdev, priv); platform_set_drvdata(pdev, priv); @@ -144,7 +157,13 @@ static int msc313e_wdt_probe(struct platform_device *p= dev) watchdog_stop_on_reboot(&priv->wdev); watchdog_stop_on_unregister(&priv->wdev); =20 - return devm_watchdog_register_device(dev, &priv->wdev); + ret =3D devm_watchdog_register_device(dev, &priv->wdev); + + /* If the WDT is running and anything goes wrong, disable the clock. */ + if (ret && test_bit(WDOG_HW_RUNNING, &priv->wdev.status)) + clk_disable_unprepare(priv->clk); + + return ret; } =20 static int __maybe_unused msc313e_wdt_suspend(struct device *dev) --=20 2.53.0 From nobody Sat Sep 26 22:55:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 45FD637F315; Fri, 28 Aug 2026 16:14:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933654; cv=none; b=hnNrNq8hb/zJDMGvKgZ6CcugQhwSa/2deK3RzHDSw0y7rDlHQgHBaPFt1KvwTAmfMKCXj5KtCOD1R4UnHzjhBmuD9pNpcPL7/VeYW4fv7FN26lUwh+m0rBt7pWQrr9Mw2vFufwhRqPSIlxhqSx+tpHrKQsE8oSWXsx8CPEk1kXY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933654; c=relaxed/simple; bh=78UyeKnTuR1HMcTrBPFeRNj9ltmFhAMuhAPCzXgaBqY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QNaDVUqEnqcIltu4Jiupcwwh7eR2yER2JdSNYbkxJHzKrCNlOj/UVOjJFER6hU287FeU3AKO3u55HjXBUcnwobOe+hrjDf2OYgw9YexuPYdieD1mbr5hEmcEyrCzKlUrcmUvT93tBLL8cogJOOeERCtz+ST1eP8xQ21tZx+3juA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P/3Ati08; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P/3Ati08" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 554031F00A3E; Fri, 28 Aug 2026 16:14:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787933652; bh=UZiMUMZYTeZUMYYUpWKxLwPcbLWlj/7++vEMATDzQBM=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=P/3Ati08HIfdhNltaq77WQBwct+hxmieGIobP1T2DvWuN7Iry3MGyHUuBCIuA5+59 wgkXX8MsLEJ28xOlFj+uV8QoG5Ytp+iEdlySkI66+r10zSfPEYvaWSA3Au6LUQcIyq cAv1ukct9/7kdCXaV2a3FMTGjIBtB63IdPKSeiC5Z7y40yX8xXXvrUYG9SMhzfIjaM faATB/fAAafeHyKZNwyUzRwfSO+hrQ1NVW+Rum4cwZGXgJVRooLzgh/jPdxJd8VHAI hcMFX6qo0rXeyMftcVt0yG6Xt51blq3NUQg4zoUElpXiOCjkSA+ShdEgmDaCRHi4ws BZYpYeBPXMuGg== From: Tzung-Bi Shih To: Wim Van Sebroeck , Guenter Roeck Cc: Daniel Palmer , Romain Perier , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, tzungbi@kernel.org Subject: [PATCH v2 5/9] watchdog: msc313e: Fix spurious reset on suspend Date: Sat, 29 Aug 2026 00:13:44 +0800 Message-ID: <20260828161348.13212-6-tzungbi@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260828161348.13212-1-tzungbi@kernel.org> References: <20260828161348.13212-1-tzungbi@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If the hardware watchdog was started by the bootloader and the device is suspended before userspace opens it, the ping worker (from watchdog core) is frozen and the active hardware timer continues running. This leads to a spurious system reset. Check both watchdog_active() and watchdog_hw_running() when deciding whether to start or stop the watchdog during suspend and resume. Additionally, call watchdog_stop_ping_on_suspend() to ensure the ping worker be correctly paused and restarted during suspend and resume. Fixes: ffd264bd152c ("watchdog: msc313e: Check if the WDT was running at bo= ot") Signed-off-by: Tzung-Bi Shih --- v2: - New to the series. --- drivers/watchdog/msc313e_wdt.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_wdt.c index 7c4593566781..c7d558fefc86 100644 --- a/drivers/watchdog/msc313e_wdt.c +++ b/drivers/watchdog/msc313e_wdt.c @@ -156,6 +156,7 @@ static int msc313e_wdt_probe(struct platform_device *pd= ev) watchdog_init_timeout(&priv->wdev, timeout, dev); watchdog_stop_on_reboot(&priv->wdev); watchdog_stop_on_unregister(&priv->wdev); + watchdog_stop_ping_on_suspend(&priv->wdev); =20 ret =3D devm_watchdog_register_device(dev, &priv->wdev); =20 @@ -170,7 +171,7 @@ static int __maybe_unused msc313e_wdt_suspend(struct de= vice *dev) { struct msc313e_wdt_priv *priv =3D dev_get_drvdata(dev); =20 - if (watchdog_active(&priv->wdev)) + if (watchdog_active(&priv->wdev) || watchdog_hw_running(&priv->wdev)) msc313e_wdt_stop(&priv->wdev); =20 return 0; @@ -180,7 +181,7 @@ static int __maybe_unused msc313e_wdt_resume(struct dev= ice *dev) { struct msc313e_wdt_priv *priv =3D dev_get_drvdata(dev); =20 - if (watchdog_active(&priv->wdev)) + if (watchdog_active(&priv->wdev) || watchdog_hw_running(&priv->wdev)) msc313e_wdt_start(&priv->wdev); =20 return 0; --=20 2.53.0 From nobody Sat Sep 26 22:55:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0E06637F30A; Fri, 28 Aug 2026 16:14:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933656; cv=none; b=L7seZ5JT4NBxs7xZODl+GJgRx555Y1eW5T36yxPDoymjvuhKvCXALeqyrWIYGoH63w36xRjrCixsTkZEXxwMmOTdrkPWhzhXdob9DyVaDEHFDQh6FszyF3AZE2fJm36ih/xYwsuFgVcOTvOu+szzNvpSShRTujEIeG/5fr0BAQY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933656; c=relaxed/simple; bh=CzNXetXzMpV5laXvu1UZuBL1MVCgiPCImOmLppOahzw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SnhFeTNpp3lwiA0SHH2airIRxTTjUAgzB8vT4W8GAPMcLqzi/oMyR39WZdjYPLCqK0ISIzXSLYE7u13UTkNGsUB9XMo7ZALp0qhMPo9DMHMGtIsN6kGyeZ36fo2k0KNuUeWL/lQ+bdkJ7cLIqtQ9sTDgDy8OzrjHY1UVErdXplk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=kCh16YUq; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="kCh16YUq" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 54B9E1F000E9; Fri, 28 Aug 2026 16:14:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787933654; bh=yyE0NU9jUPYovPGQZ2kNJN+/27g7SBh3xX6czLk4DQc=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=kCh16YUqWtR0nDpTCNgGe4aC4V96Yo0m6sd7o6aDUP/xDdPdg/SDbdiW+I6zo5xfb 6sl/2msranaaqzGKsP25j+eR+umf/5dzB32vBg78LJOGmnU3dW8ZVHqQ8RQpn23J4Q QtEmPyjhufVYkduRvP4vHC8TBRr9Gi7yyvA9TiJaxyV4ZaQhFOfBA2ZYPOjyfKXo+g e6ZhLc3uQz8lUzwnlpuKd+mXFwzTAaWESdG0+epIFScvaQKEfBzM/uGpGgq0Hp0cZr KfZAArWfyh/cSbXL4xVdq3Y+G+S7SLysM3tHRMJNjmkIgPRk5Ahjbsl6NlfADANRbs ywJ7Quz6NsTDA== From: Tzung-Bi Shih To: Wim Van Sebroeck , Guenter Roeck Cc: Daniel Palmer , Romain Perier , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, tzungbi@kernel.org Subject: [PATCH v2 6/9] watchdog: msc313e: Fix undefined behavior Date: Sat, 29 Aug 2026 00:13:45 +0800 Message-ID: <20260828161348.13212-7-tzungbi@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260828161348.13212-1-tzungbi@kernel.org> References: <20260828161348.13212-1-tzungbi@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" readw() returns a u16. Left shifting a u16 by 16 bits yields undefined behavior. Cast to u32 explicitly before the shift. Fixes: ffd264bd152c ("watchdog: msc313e: Check if the WDT was running at bo= ot") Signed-off-by: Tzung-Bi Shih --- v2: - New to the series. --- drivers/watchdog/msc313e_wdt.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_wdt.c index c7d558fefc86..e28261c7a8d4 100644 --- a/drivers/watchdog/msc313e_wdt.c +++ b/drivers/watchdog/msc313e_wdt.c @@ -31,6 +31,16 @@ struct msc313e_wdt_priv { struct clk *clk; }; =20 +static u32 msc313e_wdt_get_hw_timeout(struct msc313e_wdt_priv *priv) +{ + u16 low, high; + + low =3D readw(priv->base + REG_WDT_MAX_PRD_L); + high =3D readw(priv->base + REG_WDT_MAX_PRD_H); + + return ((u32)high << 16) | low; +} + static void msc313e_wdt_set_hw_timeout(struct msc313e_wdt_priv *priv, unsigned int timeout) { @@ -139,7 +149,7 @@ static int msc313e_wdt_probe(struct platform_device *pd= ev) return ret; =20 /* If the period is non-zero the WDT is running */ - if (readw(priv->base + REG_WDT_MAX_PRD_L) | (readw(priv->base + REG_WDT_M= AX_PRD_H) << 16)) { + if (msc313e_wdt_get_hw_timeout(priv)) { set_bit(WDOG_HW_RUNNING, &priv->wdev.status); /* * Keep the clock enabled. The watchdog core will skip the next --=20 2.53.0 From nobody Sat Sep 26 22:55:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0F7DD37DABD; Fri, 28 Aug 2026 16:14:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933660; cv=none; b=AZFtO9PMJ3Gs+3oR3Lftl3u1cQdK34WpqgMmbJ5i2b9+SI5D7k64vB7izEjJgaLN0NO8oXHFqeov/zqAqbud33JyFK0LBOiyW5rbTOM5z1qVkvrmOhnbx/44511lvYviG0abYnGJEb+YayrwWkeFGMjc/lLg0GwLH4m4A7PS7h4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933660; c=relaxed/simple; bh=oOkpWtUMAUJLti+Ijk/FxgjRTu/C2Jf5f3qJLsk+4OQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nPr3Hvb+79TvGroUTNOKf2yYw/XQg7mFRpySe1t+Og7sPokO9i8X2WPAd25gLQPA9x9SEGXjP+sY5H8nqvvwH9fFKT+0YOA1QsAlGoIF9r158OHWVpCPS6Nuai2oVxR1xpNK/ugUApvTLMoT4/ZByYzRT5O8ua0O5dP+uNUo3Sk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=P9YyrebN; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="P9YyrebN" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 314A41F00A3E; Fri, 28 Aug 2026 16:14:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787933656; bh=z+AQ26u/l1sde0n0uA4+tLVnvqdLJJKD0io6VCXqwM4=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=P9YyrebNW5Yi8+4elIylFL3RLEATSwPy5yrruZaSAKmUqyWI5oxJxuZVlw5E9jhne ZIzmnTfZ1FTRBEMfujuo5JfFq9bmntTnCLxUDxlGvIx0MnaRFV31WN5PDx3KQwz/P5 7pLePq/qLcJ70Z1HlSWWiXfrhaBfFBlR6Um+PE04b/wi4F8iCZ7XJurHz0Li0ER257 kVo3LCwC3/GpnjmEshhlCDCsL0bk419IOyZWthn8FJGYJGyynMRRSg2jxZ6jlne/rb O586bZX59/717yiKmt09BGcg7aW40dGYIFbwSvanvkcpSYkx8gTii9fyGYPwkqm2fu IpXdzfPrkDw3w== From: Tzung-Bi Shih To: Wim Van Sebroeck , Guenter Roeck Cc: Daniel Palmer , Romain Perier , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, tzungbi@kernel.org Subject: [PATCH v2 7/9] watchdog: msc313e: Sync timeout value if WDT was running at boot Date: Sat, 29 Aug 2026 00:13:46 +0800 Message-ID: <20260828161348.13212-8-tzungbi@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260828161348.13212-1-tzungbi@kernel.org> References: <20260828161348.13212-1-tzungbi@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If WDT was running at boot, the hardware timeout might be set to values other than the final software timeout. To be consistent, set the hardware timeout to match the final software timeout (i.e., after watchdog_init_timeout()) if WDT was running. Fixes: ffd264bd152c ("watchdog: msc313e: Check if the WDT was running at bo= ot") Signed-off-by: Tzung-Bi Shih --- v2: - New to the series. --- drivers/watchdog/msc313e_wdt.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_wdt.c index e28261c7a8d4..4a5cce2a16b1 100644 --- a/drivers/watchdog/msc313e_wdt.c +++ b/drivers/watchdog/msc313e_wdt.c @@ -144,12 +144,21 @@ static int msc313e_wdt_probe(struct platform_device *= pdev) priv->wdev.max_timeout =3D U32_MAX / rate; priv->wdev.timeout =3D MSC313E_WDT_DEFAULT_TIMEOUT; =20 + watchdog_set_drvdata(&priv->wdev, priv); + platform_set_drvdata(pdev, priv); + + watchdog_init_timeout(&priv->wdev, timeout, dev); + watchdog_stop_on_reboot(&priv->wdev); + watchdog_stop_on_unregister(&priv->wdev); + watchdog_stop_ping_on_suspend(&priv->wdev); + ret =3D clk_prepare_enable(priv->clk); if (ret) return ret; =20 /* If the period is non-zero the WDT is running */ if (msc313e_wdt_get_hw_timeout(priv)) { + msc313e_wdt_set_hw_timeout(priv, priv->wdev.timeout); set_bit(WDOG_HW_RUNNING, &priv->wdev.status); /* * Keep the clock enabled. The watchdog core will skip the next @@ -160,14 +169,6 @@ static int msc313e_wdt_probe(struct platform_device *p= dev) clk_disable_unprepare(priv->clk); } =20 - watchdog_set_drvdata(&priv->wdev, priv); - platform_set_drvdata(pdev, priv); - - watchdog_init_timeout(&priv->wdev, timeout, dev); - watchdog_stop_on_reboot(&priv->wdev); - watchdog_stop_on_unregister(&priv->wdev); - watchdog_stop_ping_on_suspend(&priv->wdev); - ret =3D devm_watchdog_register_device(dev, &priv->wdev); =20 /* If the WDT is running and anything goes wrong, disable the clock. */ --=20 2.53.0 From nobody Sat Sep 26 22:55:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0F86937E5D0; Fri, 28 Aug 2026 16:14:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933660; cv=none; b=C6z1ibCfetYcp1C4XrdjtzQL5dUvVfz3Y1HtL11igxgglR9c4y9YtaNUmgIVJZAHYp21C69iV7tWZhLkkw6qG8fwZKrfpGZCq2e8zSoIfLAfIGFShMIToCk2y8gAl13B8x0VfoYpARqxBoBXiMv0T5p8C0KhVMSDVsltaUv/R6Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933660; c=relaxed/simple; bh=ghgsdUJbjxaKgxTgH8Wu37cUASStopDWJUZzYgevVCM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JsRSjDS12rEmSTODSZkqhFrJiBIuV8qwHJ5+662lZqnhIWqsVbQ71MApnkuoQgyfdhBDzE76S8tRoom8zgQsIBnpff4boTyhgJZTEqTQb3CuS8YLLSel39/3dbX25FLVMhpPVtz7cXTzMpfy4+MiiYvhE38cyk/XMSA0FoMWkJU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=W+cP7HP7; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="W+cP7HP7" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A63C1F000E9; Fri, 28 Aug 2026 16:14:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787933658; bh=ZbDGeNSgdoxsaEjVkrddzqnoUdHJdNf2C4trTgK/gG8=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=W+cP7HP7XObtptQOXxraoBCABMvEGlZgHqyt58NVO9M1LMolrvLXRAHvVgh75gueN qssWKccw0sKwH4OoVU7KDkYDSKXBi/uRBo66W2dqiCTIT6ZuDLQzEYsOd8f3jqWATo A/7g0fiepWLIEshxGhNhmDKEUUMdyEPexmiKI+7jhcQH9F3uYPvu7WcKXczyFa9is5 2XHeMinyhU05+OVRDFYakhvEiXA3m6kcirGIyJvfyWBGfiWfvkNYgmUXGI1z3kAXyX 3Muhi/kY0dfuP4LN4DlsE0ayPqQryZe6As2iwJaarIyAk3beMeaUDCMpIPyeVO5MoU yIZuy0ptNmioQ== From: Tzung-Bi Shih To: Wim Van Sebroeck , Guenter Roeck Cc: Daniel Palmer , Romain Perier , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, tzungbi@kernel.org Subject: [PATCH v2 8/9] watchdog: msc313e: Propagate error code in resume() Date: Sat, 29 Aug 2026 00:13:47 +0800 Message-ID: <20260828161348.13212-9-tzungbi@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260828161348.13212-1-tzungbi@kernel.org> References: <20260828161348.13212-1-tzungbi@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If msc313e_wdt_start() fails during system resume, the error is currently ignored. Consequently, the watchdog isn't running without the user's knowledge. Propagate the error code, print a message, and explicitly clear both the WDOG_HW_RUNNING and WDOG_ACTIVE flags if start fails. Signed-off-by: Tzung-Bi Shih --- v2: - New to the series. --- drivers/watchdog/msc313e_wdt.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_wdt.c index 4a5cce2a16b1..6af865750ad0 100644 --- a/drivers/watchdog/msc313e_wdt.c +++ b/drivers/watchdog/msc313e_wdt.c @@ -191,11 +191,19 @@ static int __maybe_unused msc313e_wdt_suspend(struct = device *dev) static int __maybe_unused msc313e_wdt_resume(struct device *dev) { struct msc313e_wdt_priv *priv =3D dev_get_drvdata(dev); + int ret =3D 0; =20 - if (watchdog_active(&priv->wdev) || watchdog_hw_running(&priv->wdev)) - msc313e_wdt_start(&priv->wdev); + if (watchdog_active(&priv->wdev) || watchdog_hw_running(&priv->wdev)) { + ret =3D msc313e_wdt_start(&priv->wdev); + if (ret) { + dev_err(dev, "Failed to restart watchdog (err=3D%d)\n", ret); =20 - return 0; + clear_bit(WDOG_HW_RUNNING, &priv->wdev.status); + clear_bit(WDOG_ACTIVE, &priv->wdev.status); + } + } + + return ret; } =20 static SIMPLE_DEV_PM_OPS(msc313e_wdt_pm_ops, msc313e_wdt_suspend, msc313e_= wdt_resume); --=20 2.53.0 From nobody Sat Sep 26 22:55:40 2026 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3555137F005; Fri, 28 Aug 2026 16:14:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933662; cv=none; b=NhrHNS6PdtaBGIMTziDR/VnrY7whlWUDcQKhLMMPMdrm5UMgucEHFuMtP8wUUKf/fAhvzWpjJoINUFofG0xvSlskyUDUoG37HrQ9+FV12eVlg0rgdmuiWbbpMADAQCFrC8XBAsNSR6HbbBxVXxxCVU8EULTWSpz0zkLE7S8I09g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787933662; c=relaxed/simple; bh=GUVMlPBqorGNHEaYkE5JHdBzgeJmUwRqUdNGKalZWeo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LdizEdT1tgtdSEl8pGobUs011JtxK6YkVd5y9hA3o2YsWrEEVdLrN6fCXlItrF8JaDmWIUpubs26wf/DWklu9DuX/IHc7W7W28h+sl7OXxSRpz66ZHSIcwQXgp8Bp/GLnfcfzduhV+D8gKyHTP7PAudkgjWVzgf1YzhMCE5aEVs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=mER4yMBC; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="mER4yMBC" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 20B9B1F00A3D; Fri, 28 Aug 2026 16:14:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1787933660; bh=1He0nuVEZ70S3mDkyW6KyaGY0qZMdr5/mK+PSSvUnpE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=mER4yMBCDUxzVUrs+HhMywGGVYWLVeWOaMCuarKxey5fjAbm+piWI1BpWZ1soK/g5 X907VVnknmmfelI1hHo8d21hQ7LDnajwumXPgyzpxc4Sjst0ghzEKzeboyIe9lr0y4 UkIuP7oqYsyyN79KvFIcZWazcp1ALjtPnDWThlhAagd04nuf55/AoHIdS92zs6xrVb /X3VV7PI0rO7C6hPgrF7rsO8Yccjjm39DSPxQ3TTL6PzmtElK2037fk0+E+u9gVY93 FeIdkFlpCn8h9dHc42mTXAcC/S63D5L1BZ3BdZ4radj7L/Lb7KGvPpdKGcW6rqeVq+ fUAVz2BgEtvyg== From: Tzung-Bi Shih To: Wim Van Sebroeck , Guenter Roeck Cc: Daniel Palmer , Romain Perier , linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org, tzungbi@kernel.org Subject: [PATCH v2 9/9] watchdog: msc313e: Replace commas with semicolons in probe() Date: Sat, 29 Aug 2026 00:13:48 +0800 Message-ID: <20260828161348.13212-10-tzungbi@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260828161348.13212-1-tzungbi@kernel.org> References: <20260828161348.13212-1-tzungbi@kernel.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Replace commas at the end of statements with semicolons in probe(). Signed-off-by: Tzung-Bi Shih --- v2: - New to the series. --- drivers/watchdog/msc313e_wdt.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/watchdog/msc313e_wdt.c b/drivers/watchdog/msc313e_wdt.c index 6af865750ad0..e375810bfc2c 100644 --- a/drivers/watchdog/msc313e_wdt.c +++ b/drivers/watchdog/msc313e_wdt.c @@ -134,8 +134,8 @@ static int msc313e_wdt_probe(struct platform_device *pd= ev) return PTR_ERR(priv->clk); } =20 - priv->wdev.info =3D &msc313e_wdt_ident, - priv->wdev.ops =3D &msc313e_wdt_ops, + priv->wdev.info =3D &msc313e_wdt_ident; + priv->wdev.ops =3D &msc313e_wdt_ops; priv->wdev.parent =3D dev; priv->wdev.min_timeout =3D MSC313E_WDT_MIN_TIMEOUT; rate =3D clk_get_rate(priv->clk); --=20 2.53.0