From 0e331cdb700bc92c613fd4856af17ec8f84b622e Mon Sep 17 00:00:00 2001 From: Wesley Yao Date: Sat, 8 Feb 2025 16:20:01 +0800 Subject: [PATCH] iio: dac: rockchip-flexbus-dac: Set fb0_isr after init_completion Prevent panic caused by the completion not being initialized when the interrupt is triggered. Change-Id: I375d38505e1375983e74eadcf957b1d928bee355 Signed-off-by: Wesley Yao --- drivers/iio/dac/rockchip-flexbus-dac.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/drivers/iio/dac/rockchip-flexbus-dac.c b/drivers/iio/dac/rockchip-flexbus-dac.c index 6e703d2d4f97..c1f1c89da848 100644 --- a/drivers/iio/dac/rockchip-flexbus-dac.c +++ b/drivers/iio/dac/rockchip-flexbus-dac.c @@ -359,11 +359,10 @@ static int rockchip_flexbus_dac_probe(struct platform_device *pdev) platform_set_drvdata(pdev, indio_dev); rkfb_dac->dev = &pdev->dev; rkfb_dac->rkfb = rkfb; - rockchip_flexbus_set_fb0(rkfb, rkfb_dac, rockchip_flexbus_dac_isr); ret = rockchip_flexbus_dac_parse_dt(rkfb_dac); if (ret) - goto err_fb0; + return ret; mutex_init(&rkfb_dac->lock); init_completion(&rkfb_dac->completion); @@ -406,12 +405,12 @@ static int rockchip_flexbus_dac_probe(struct platform_device *pdev) if (ret) goto err_mutex_destroy; + rockchip_flexbus_set_fb0(rkfb, rkfb_dac, rockchip_flexbus_dac_isr); + return ret; err_mutex_destroy: mutex_destroy(&rkfb_dac->lock); -err_fb0: - rockchip_flexbus_set_fb0(rkfb, NULL, NULL); return ret; } @@ -422,8 +421,8 @@ static int rockchip_flexbus_dac_remove(struct platform_device *pdev) struct rockchip_flexbus_dac *rkfb_dac = iio_priv(indio_dev); struct rockchip_flexbus *rkfb = rkfb_dac->rkfb; - mutex_destroy(&rkfb_dac->lock); rockchip_flexbus_set_fb0(rkfb, NULL, NULL); + mutex_destroy(&rkfb_dac->lock); return 0; }