When I set the timeout to a specific value such as 500ms, the timeout event will not happen in time due to the overflow in function check_msg_timeout: ... ent->timeout -= timeout_period; if (ent->timeout > 0) return; ...
The type of timeout_period is long, but ent->timeout is unsigned long. This patch makes the type consistent. Signed-off-by: Weilong Chen <chenweil...@huawei.com> --- drivers/char/ipmi/ipmi_msghandler.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c index 810b138..4c806e9 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c @@ -135,8 +135,8 @@ struct seq_table { unsigned int inuse : 1; unsigned int broadcast : 1; - unsigned long timeout; - unsigned long orig_timeout; + long timeout; + long orig_timeout; unsigned int retries_left; /* -- 1.8.3.1