From 9f37bae407c022ca37afe16fbc962fffce9fa70e Mon Sep 17 00:00:00 2001 From: Wang Panzhenzhuan Date: Wed, 27 Nov 2019 14:05:03 +0800 Subject: [PATCH] media: rockchip: isp1: fix crash issue vb2_fop_release should be called before v4l2_pipeline_pm_use, otherwise it causes system crash when start stream with v4l2-ctl command, and stop stream unexpected with ctrl+c. Change-Id: Ia46078aaf1e436fdc10272ef778b4d8b11589520 Signed-off-by: Wang Panzhenzhuan --- drivers/media/platform/rockchip/isp1/capture.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/rockchip/isp1/capture.c b/drivers/media/platform/rockchip/isp1/capture.c index 5707a0a31e27..3fc56166356f 100644 --- a/drivers/media/platform/rockchip/isp1/capture.c +++ b/drivers/media/platform/rockchip/isp1/capture.c @@ -1757,10 +1757,14 @@ int rkisp1_fop_release(struct file *file) struct rkisp1_device *dev = stream->ispdev; int ret; - ret = v4l2_pipeline_pm_use(&stream->vnode.vdev.entity, 0); - ret |= vb2_fop_release(file); - atomic_dec(&dev->open_cnt); - + ret = vb2_fop_release(file); + if (!ret) { + ret = v4l2_pipeline_pm_use(&stream->vnode.vdev.entity, 0); + if (ret < 0) + v4l2_err(&dev->v4l2_dev, + "set pipeline power failed %d\n", ret); + atomic_dec(&dev->open_cnt); + } return ret; }