diff --git a/drivers/soc/qcom/glink_smd_xprt.c b/drivers/soc/qcom/glink_smd_xprt.c index cb5bf94b8e67..6abe943069d0 100644 --- a/drivers/soc/qcom/glink_smd_xprt.c +++ b/drivers/soc/qcom/glink_smd_xprt.c @@ -731,6 +731,7 @@ static void process_reopen_event(struct work_struct *work) mutex_unlock(&einfo->rx_cmd_lock); } if (ch->local_legacy) { + ch->local_legacy = false; mutex_lock(&einfo->rx_cmd_lock); einfo->xprt_if.glink_core_if_ptr->rx_cmd_ch_close_ack( &einfo->xprt_if, @@ -944,6 +945,7 @@ static void smd_data_ch_close(struct channel *ch) ch->smd_ch = NULL; } else if (ch->local_legacy) { ch_work = kzalloc(sizeof(*ch_work), GFP_KERNEL); + ch->local_legacy = false; if (ch_work) { ch_work->ch = ch; INIT_WORK(&ch_work->work, deferred_close_ack); @@ -952,7 +954,6 @@ static void smd_data_ch_close(struct channel *ch) } mutex_unlock(&ch->ch_probe_lock); - ch->local_legacy = false; spin_lock_irqsave(&ch->intents_lock, flags); while (!list_empty(&ch->intents)) {