mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 13:49:24 -04:00
msm: camera: isp: Check whether flush list is empty
We will get invalid req from flush_list if the flush list is empty when we get each req by list API list_for_each_entry_safe. This change checks whether flush list is empty before accessing this list. CRs-Fixed: 2885145 Change-Id: I9b2828b03706a0f7412828905cc0a9e28d15fd76 Signed-off-by: Depeng Shao <depengs@codeaurora.org>
This commit is contained in:
parent
6ef679859d
commit
b7e6988ef4
1 changed files with 12 additions and 7 deletions
|
|
@ -1,6 +1,6 @@
|
|||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
#include <linux/debugfs.h>
|
||||
|
|
@ -3520,6 +3520,17 @@ static int __cam_isp_ctx_flush_req(struct cam_context *ctx,
|
|||
CAM_ISP_STATE_CHANGE_TRIGGER_FLUSH, req->request_id);
|
||||
}
|
||||
|
||||
if (list_empty(&flush_list)) {
|
||||
/*
|
||||
* Maybe the req isn't sent to KMD since UMD already skip
|
||||
* req in CSL layer.
|
||||
*/
|
||||
CAM_INFO(CAM_ISP,
|
||||
"flush list is empty, flush type %d for req %llu",
|
||||
flush_req->type, flush_req->req_id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
list_for_each_entry_safe(req, req_temp, &flush_list, list) {
|
||||
req_isp = (struct cam_isp_ctx_req *) req->req_priv;
|
||||
for (i = 0; i < req_isp->num_fence_map_out; i++) {
|
||||
|
|
@ -3545,12 +3556,6 @@ static int __cam_isp_ctx_flush_req(struct cam_context *ctx,
|
|||
list_add_tail(&req->list, &ctx->free_req_list);
|
||||
}
|
||||
|
||||
if (flush_req->type == CAM_REQ_MGR_FLUSH_TYPE_CANCEL_REQ &&
|
||||
!cancel_req_id_found)
|
||||
CAM_DBG(CAM_ISP,
|
||||
"Flush request id:%lld is not found in the list",
|
||||
flush_req->req_id);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue