forked from luck/tmp_suning_uos_patched
HID: intel-ish-hid: Fix potential race condition
Although unlikely but it is possible that when a connect or disconnect request is issued to the firmware, before the response comes, user terminates the client session. In this case when the response is arrived there is no matching client instance in the list of currently active clients. In this case, don't issue call to wake up a waiting client. Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
e5b56aa790
commit
6d290391be
|
@ -378,11 +378,10 @@ static void ishtp_hbm_cl_disconnect_res(struct ishtp_device *dev,
|
|||
list_for_each_entry(cl, &dev->cl_list, link) {
|
||||
if (!rs->status && ishtp_hbm_cl_addr_equal(cl, rs)) {
|
||||
cl->state = ISHTP_CL_DISCONNECTED;
|
||||
wake_up_interruptible(&cl->wait_ctrl_res);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (cl)
|
||||
wake_up_interruptible(&cl->wait_ctrl_res);
|
||||
spin_unlock_irqrestore(&dev->cl_list_lock, flags);
|
||||
}
|
||||
|
||||
|
@ -431,11 +430,10 @@ static void ishtp_hbm_cl_connect_res(struct ishtp_device *dev,
|
|||
cl->state = ISHTP_CL_DISCONNECTED;
|
||||
cl->status = -ENODEV;
|
||||
}
|
||||
wake_up_interruptible(&cl->wait_ctrl_res);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (cl)
|
||||
wake_up_interruptible(&cl->wait_ctrl_res);
|
||||
spin_unlock_irqrestore(&dev->cl_list_lock, flags);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user