Skip to content

Commit 773ae06

Browse files
eunovmgregkh
authored andcommitted
media: vpss: clean up resources in init
[ Upstream commit 9c487b0 ] If platform_driver_register() fails within vpss_init() resources are not cleaned up. The patch fixes this issue by introducing the corresponding error handling. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Evgeny Novikov <novikov@ispras.ru> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent b5a5b21 commit 773ae06

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

  • drivers/media/platform/davinci

drivers/media/platform/davinci/vpss.c

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -514,19 +514,31 @@ static void vpss_exit(void)
514514

515515
static int __init vpss_init(void)
516516
{
517+
int ret;
518+
517519
if (!request_mem_region(VPSS_CLK_CTRL, 4, "vpss_clock_control"))
518520
return -EBUSY;
519521

520522
oper_cfg.vpss_regs_base2 = ioremap(VPSS_CLK_CTRL, 4);
521523
if (unlikely(!oper_cfg.vpss_regs_base2)) {
522-
release_mem_region(VPSS_CLK_CTRL, 4);
523-
return -ENOMEM;
524+
ret = -ENOMEM;
525+
goto err_ioremap;
524526
}
525527

526528
writel(VPSS_CLK_CTRL_VENCCLKEN |
527-
VPSS_CLK_CTRL_DACCLKEN, oper_cfg.vpss_regs_base2);
529+
VPSS_CLK_CTRL_DACCLKEN, oper_cfg.vpss_regs_base2);
530+
531+
ret = platform_driver_register(&vpss_driver);
532+
if (ret)
533+
goto err_pd_register;
534+
535+
return 0;
528536

529-
return platform_driver_register(&vpss_driver);
537+
err_pd_register:
538+
iounmap(oper_cfg.vpss_regs_base2);
539+
err_ioremap:
540+
release_mem_region(VPSS_CLK_CTRL, 4);
541+
return ret;
530542
}
531543
subsys_initcall(vpss_init);
532544
module_exit(vpss_exit);

0 commit comments

Comments
 (0)