From a4c4ab2f3a2fa197a3796f2a8a5f92eca98fe969 Mon Sep 17 00:00:00 2001 From: Jianwei Fan Date: Wed, 8 May 2024 18:47:49 +0800 Subject: [PATCH] media: rockchip: vicap fix current files is NULL when release fd Change-Id: I1a0907bcf2c75518e8998df3d50136008d3a67f7 Signed-off-by: Jianwei Fan --- drivers/media/platform/rockchip/cif/capture.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/rockchip/cif/capture.c b/drivers/media/platform/rockchip/cif/capture.c index 23ea4c72d633..db6a7ca3f237 100644 --- a/drivers/media/platform/rockchip/cif/capture.c +++ b/drivers/media/platform/rockchip/cif/capture.c @@ -5080,6 +5080,7 @@ static void rkcif_free_fence(struct rkcif_stream *stream) unsigned long lock_flags = 0; struct rkcif_fence *vb_fence, *done_fence; struct v4l2_device *v4l2_dev = &stream->cifdev->v4l2_dev; + struct files_struct *files = current->files; LIST_HEAD(local_list); spin_lock_irqsave(&stream->fence_lock, lock_flags); @@ -5100,8 +5101,10 @@ static void rkcif_free_fence(struct rkcif_stream *stream) v4l2_dbg(2, rkcif_debug, v4l2_dev, "%s: free qbuf_fence fd:%d\n", __func__, vb_fence->fence_fd); dma_fence_put(vb_fence->fence); - put_unused_fd(vb_fence->fence_fd); - close_fd(vb_fence->fence_fd); + if (files) { + put_unused_fd(vb_fence->fence_fd); + close_fd(vb_fence->fence_fd); + } kfree(vb_fence); } @@ -5115,8 +5118,10 @@ static void rkcif_free_fence(struct rkcif_stream *stream) v4l2_dbg(2, rkcif_debug, v4l2_dev, "%s: free done_fence fd:%d\n", __func__, done_fence->fence_fd); dma_fence_put(done_fence->fence); - put_unused_fd(done_fence->fence_fd); - close_fd(done_fence->fence_fd); + if (files) { + put_unused_fd(done_fence->fence_fd); + close_fd(done_fence->fence_fd); + } kfree(done_fence); } }