Patch "ipmi: fix unsigned long underflow" has been added to the 4.13-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
ipmi: fix unsigned long underflow
to the 4.13-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
ipmi-fix-unsigned-long-underflow.patch
and it can be found in the queue-4.13 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
392a17b10ec4320d3c0e96e2a23ebaad1123b989Mon Sep 17 00:00:00 2001
From: Corey Minyard <[email protected]>
Date: Sat, 29 Jul 2017 21:14:55 -0500
Subject: ipmi: fix unsigned long underflow
From: Corey Minyard <[email protected]>
commit 392a17b10ec4320d3c0e96e2a23ebaad1123b989 upstream.
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.
--- drivers/char/ipmi/ipmi_msghandler.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-)
drivers/char/ipmi/ipmi_msghandler.c +6 -4
@@ -4030,7 +4030,8 @@ smi_from_recv_msg(ipmi_smi_t intf, struc }static void check_msg_timeout (ipmi_smi_t intf,struct seq_table *ent, -struct list_head *timeouts,long timeout_period, +struct list_head *timeouts, +unsigned long timeout_period,int slot,unsigned long *flags,unsigned int *waiting_msgs) {
@@ -4043,8 +4044,8 @@ static void check_msg_timeout(ipmi_smi_tif (!ent->inuse)return ; - ent->timeout -= timeout_period; -if (ent->timeout >0 ) { +if (timeout_period < ent->timeout) { + ent->timeout -= timeout_period; (*waiting_msgs)++;return ; }
@@ -4110,7 +4111,8 @@ static void check_msg_timeout(ipmi_smi_t } } -static unsigned int ipmi_timeout_handler (ipmi_smi_t intf,long timeout_period) +static unsigned int ipmi_timeout_handler (ipmi_smi_t intf, +unsigned long timeout_period) {struct list_head timeouts;struct ipmi_recv_msg *msg, *msg2;
Patches currently in stable-queue which might be from [email protected] are
queue-4.13/ipmi-fix-unsigned-long-underflow.patch