Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aea1a72f authored by Mohit Aggarwal's avatar Mohit Aggarwal
Browse files

diag: Flush control workqueue immediately on channel close



Currently, flushing of control workqueue is happening
under protection which is causing a deadlock. The patch
fixes the issue by flushing the control workqueue on
immediate closure of channel.

CRs-Fixed: 2081948
Change-Id: I6a7b1ee7cbabf2974700e28fc62c6d8fa3d464ed
Signed-off-by: default avatarMohit Aggarwal <maggarwa@codeaurora.org>
parent 70be28c9
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -68,7 +68,6 @@ void diag_cntl_channel_close(struct diagfwd_info *p_info)

	driver->feature[peripheral].sent_feature_mask = 0;
	driver->feature[peripheral].rcvd_feature_mask = 0;
	flush_workqueue(driver->cntl_wq);
	reg_dirty |= PERIPHERAL_MASK(peripheral);
	diag_cmd_remove_reg_by_proc(peripheral);
	driver->feature[peripheral].stm_support = DISABLE_STM;
+3 −0
Original line number Diff line number Diff line
@@ -897,6 +897,9 @@ int diagfwd_channel_close(struct diagfwd_info *fwd_info)
	if (!fwd_info)
		return -EIO;

	if (fwd_info->type == TYPE_CNTL)
		flush_workqueue(driver->cntl_wq);

	mutex_lock(&driver->diagfwd_channel_mutex[fwd_info->peripheral]);
	fwd_info->ch_open = 0;
	if (fwd_info && fwd_info->c_ops && fwd_info->c_ops->close)