Explorar o código

Merge "msm: camera: reqmgr: check link state before taking mutex" into camera-kernel.lnx.5.0

Haritha Chintalapati %!s(int64=4) %!d(string=hai) anos
pai
achega
5971e01fa7
Modificáronse 1 ficheiros con 13 adicións e 0 borrados
  1. 13 0
      drivers/cam_req_mgr/cam_req_mgr_core.c

+ 13 - 0
drivers/cam_req_mgr/cam_req_mgr_core.c

@@ -1379,6 +1379,19 @@ static int __cam_req_mgr_process_req(struct cam_req_mgr_core_link *link,
 		return -EINVAL;
 	}
 
+	/*
+	 * In case if the wq is scheduled while destroying session
+	 * the session mutex is already taken and will cause a
+	 * dead lock. To avoid further processing check link state
+	 * and exit.
+	 */
+	spin_lock_bh(&link->link_state_spin_lock);
+	if (link->state == CAM_CRM_LINK_STATE_IDLE) {
+		spin_unlock_bh(&link->link_state_spin_lock);
+		return -EPERM;
+	}
+	spin_unlock_bh(&link->link_state_spin_lock);
+
 	mutex_lock(&session->lock);
 	in_q = link->req.in_q;
 	/*