The hwa742_init() function did not check the return value of clk_get(). This could lead to dereferencing an error pointer in subsequent clock operations, potentially causing a kernel crash.
Fix this by adding a missing error check and ensuring proper clock resource cleanup on failure and driver removal. Signed-off-by: Chen Ni <[email protected]> --- drivers/video/fbdev/omap/hwa742.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/video/fbdev/omap/hwa742.c b/drivers/video/fbdev/omap/hwa742.c index 64e76e1f5388..68a677f824e9 100644 --- a/drivers/video/fbdev/omap/hwa742.c +++ b/drivers/video/fbdev/omap/hwa742.c @@ -950,6 +950,8 @@ static int hwa742_init(struct omapfb_device *fbdev, int ext_mode, omapfb_conf = dev_get_platdata(fbdev->dev); hwa742.sys_ck = clk_get(NULL, "hwa_sys_ck"); + if (IS_ERR(hwa742.sys_ck)) + return PTR_ERR(hwa742.sys_ck); spin_lock_init(&hwa742.req_lock); @@ -1028,6 +1030,7 @@ static int hwa742_init(struct omapfb_device *fbdev, int ext_mode, err2: hwa742.int_ctrl->cleanup(); err1: + clk_put(hwa742.sys_ck); return r; } @@ -1037,6 +1040,7 @@ static void hwa742_cleanup(void) hwa742.extif->cleanup(); hwa742.int_ctrl->cleanup(); clk_disable_unprepare(hwa742.sys_ck); + clk_put(hwa742.sys_ck); } struct lcd_ctrl hwa742_ctrl = { -- 2.25.1
