mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 10:04:04 +02:00
HID: intel-ish-ipc: Remove redundant ready check after timeout function
timed_wait_for_timeout() internally checks for ish_is_input_ready() and
ishtp_fw_is_ready() based on the provided parameters. If
timed_wait_for_timeout() returns 0, it indicates the status is ready. In
rare cases, another thread may send a message immediately after
timed_wait_for_timeout() returns, causing a subsequent ish_is_input_ready()
check to fail. Since the return value of timed_wait_for_timeout() is
sufficient to determine readiness, the additional ready check is
unnecessary and may introduce issues.
This patch removes the redundant check and relies solely on the return
value of timed_wait_for_timeout().
Fixes: ae02e5d40d ("HID: intel-ish-hid: ipc layer")
Signed-off-by: Zhang Lixu <lixu.zhang@intel.com>
Acked-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
This commit is contained in:
parent
02d6eeedbc
commit
8931f7b279
|
|
@ -498,6 +498,7 @@ static int ish_fw_reset_handler(struct ishtp_device *dev)
|
|||
{
|
||||
uint32_t reset_id;
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
/* Read reset ID */
|
||||
reset_id = ish_reg_read(dev, IPC_REG_ISH2HOST_MSG) & 0xFFFF;
|
||||
|
|
@ -510,12 +511,11 @@ static int ish_fw_reset_handler(struct ishtp_device *dev)
|
|||
/* ISHTP notification in IPC_RESET */
|
||||
ishtp_reset_handler(dev);
|
||||
|
||||
if (!ish_is_input_ready(dev))
|
||||
timed_wait_for_timeout(dev, WAIT_FOR_INPUT_RDY,
|
||||
TIME_SLICE_FOR_INPUT_RDY_MS, TIMEOUT_FOR_INPUT_RDY_MS);
|
||||
|
||||
ret = timed_wait_for_timeout(dev, WAIT_FOR_INPUT_RDY,
|
||||
TIME_SLICE_FOR_INPUT_RDY_MS,
|
||||
TIMEOUT_FOR_INPUT_RDY_MS);
|
||||
/* ISH FW is dead */
|
||||
if (!ish_is_input_ready(dev))
|
||||
if (ret)
|
||||
return -EPIPE;
|
||||
|
||||
/* Send clock sync at once after reset */
|
||||
|
|
@ -531,9 +531,10 @@ static int ish_fw_reset_handler(struct ishtp_device *dev)
|
|||
sizeof(uint32_t));
|
||||
|
||||
/* Wait for ISH FW'es ILUP and ISHTP_READY */
|
||||
timed_wait_for_timeout(dev, WAIT_FOR_FW_RDY,
|
||||
TIME_SLICE_FOR_FW_RDY_MS, TIMEOUT_FOR_FW_RDY_MS);
|
||||
if (!ishtp_fw_is_ready(dev)) {
|
||||
ret = timed_wait_for_timeout(dev, WAIT_FOR_FW_RDY,
|
||||
TIME_SLICE_FOR_FW_RDY_MS,
|
||||
TIMEOUT_FOR_FW_RDY_MS);
|
||||
if (ret) {
|
||||
/* ISH FW is dead */
|
||||
uint32_t ish_status;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user