mirror of
https://github.com/torvalds/linux.git
synced 2026-10-24 16:55:02 +02:00
drm/aspeed: Balance the display clock enable on teardown
aspeed_gfx_load() enables the display clock without checking the return
value and never disables it on probe failure or removal. devm_clk_get()
only releases the clock reference, leaving the enable unbalanced.
Use devm_clk_get_enabled() to handle enable failures and automatically
disable and unprepare the clock on probe failure or removal.
This issue was identified during our ongoing static-analysis research
while reviewing kernel code.
Fixes: 4f2a8f5898 ("drm: Add ASPEED GFX driver")
Co-developed-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Ijae Kim <ae878000@gmail.com>
Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
Assisted-by: OpenAI:GPT-5.6
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patch.msgid.link/20260913223019.89651-1-mhun512@gmail.com
Link: https://patch.msgid.link/20260905080426.34224-1-kmehltretter@gmail.com
This commit is contained in:
parent
755c94d178
commit
ecce445c64
|
|
@ -189,13 +189,12 @@ static int aspeed_gfx_load(struct drm_device *drm)
|
|||
}
|
||||
reset_control_deassert(priv->rst);
|
||||
|
||||
priv->clk = devm_clk_get(drm->dev, NULL);
|
||||
priv->clk = devm_clk_get_enabled(drm->dev, NULL);
|
||||
if (IS_ERR(priv->clk)) {
|
||||
dev_err(&pdev->dev,
|
||||
"missing or invalid clk device tree entry");
|
||||
"failed to get and enable clock\n");
|
||||
return PTR_ERR(priv->clk);
|
||||
}
|
||||
clk_prepare_enable(priv->clk);
|
||||
|
||||
/* Sanitize control registers */
|
||||
writel(0, priv->base + CRT_CTRL1);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user