android_kernel_xiaomi_sm8450/drivers/char/ipmi
Petr Pavlu ef5066f95c ipmi/watchdog: Stop watchdog timer when the current action is 'none'
commit 2253042d86f57d90a621ac2513a7a7a13afcf809 upstream.

When an IPMI watchdog timer is being stopped in ipmi_close() or
ipmi_ioctl(WDIOS_DISABLECARD), the current watchdog action is updated to
WDOG_TIMEOUT_NONE and _ipmi_set_timeout(IPMI_SET_TIMEOUT_NO_HB) is called
to install this action. The latter function ends up invoking
__ipmi_set_timeout() which makes the actual 'Set Watchdog Timer' IPMI
request.

For IPMI 1.0, this operation results in fully stopping the watchdog timer.
For IPMI >= 1.5, function __ipmi_set_timeout() always specifies the "don't
stop" flag in the prepared 'Set Watchdog Timer' IPMI request. This causes
that the watchdog timer has its action correctly updated to 'none' but the
timer continues to run. A problem is that IPMI firmware can then still log
an expiration event when the configured timeout is reached, which is
unexpected because the watchdog timer was requested to be stopped.

The patch fixes this problem by not setting the "don't stop" flag in
__ipmi_set_timeout() when the current action is WDOG_TIMEOUT_NONE which
results in stopping the watchdog timer. This makes the behaviour for
IPMI >= 1.5 consistent with IPMI 1.0. It also matches the logic in
__ipmi_heartbeat() which does not allow to reset the watchdog if the
current action is WDOG_TIMEOUT_NONE as that would start the timer.

Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
Message-Id: <10a41bdc-9c99-089c-8d89-fa98ce5ea080@suse.com>
Cc: stable@vger.kernel.org
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-07-19 09:44:59 +02:00
..
bt-bmc.c ipmi:bt-bmc: Fix error handling and status check 2020-05-18 06:32:02 -05:00
ipmb_dev_int.c drivers: ipmi: fix off-by-one bounds check that leads to a out-of-bounds write 2020-01-20 11:01:00 -06:00
ipmi_bt_sm.c ipmi: Clean up some printks 2020-09-15 09:57:45 -05:00
ipmi_devintf.c ipmi: Remove file from ipmi_file_private 2019-04-17 13:14:25 -05:00
ipmi_dmi.c ipmi_si: Rework some include files 2019-08-02 07:25:03 -05:00
ipmi_dmi.h ipmi_si: Rework some include files 2019-08-02 07:25:03 -05:00
ipmi_kcs_sm.c ipmi: Clean up some printks 2020-09-15 09:57:45 -05:00
ipmi_msghandler.c ipmi: msghandler: Fix a signedness bug 2020-09-18 16:34:52 -05:00
ipmi_plat_data.c ipmi: Add the i2c-addr property for SSIF interfaces 2019-04-24 09:02:53 -05:00
ipmi_plat_data.h ipmi: Add the i2c-addr property for SSIF interfaces 2019-04-24 09:02:53 -05:00
ipmi_powernv.c ipmi:powernv: Convert ipmi_smi_t to struct ipmi_smi 2018-09-18 16:15:33 -05:00
ipmi_poweroff.c ipmi: Use more common logging styles 2018-09-18 16:15:33 -05:00
ipmi_si_hardcode.c ipmi: Add the i2c-addr property for SSIF interfaces 2019-04-24 09:02:53 -05:00
ipmi_si_hotmod.c docs: fix references for ipmi.rst file 2020-05-15 11:55:21 -06:00
ipmi_si_intf.c ipmi_si: Fix wrong return value in try_smi_init() 2020-10-05 13:30:51 -05:00
ipmi_si_mem_io.c ipmi_si: Rework some include files 2019-08-02 07:25:03 -05:00
ipmi_si_parisc.c ipmi_si: Rename addr_type to addr_space to match what it does 2019-02-22 07:12:41 -06:00
ipmi_si_pci.c ipmi_si: Rework some include files 2019-08-02 07:25:03 -05:00
ipmi_si_platform.c ipmi_si: Load acpi_ipmi when ACPI IPMI interface added 2020-05-18 06:32:02 -05:00
ipmi_si_port_io.c ipmi_si: Rework some include files 2019-08-02 07:25:03 -05:00
ipmi_si_sm.h ipmi_si: Rework some include files 2019-08-02 07:25:03 -05:00
ipmi_si.h ipmi_si: Rework some include files 2019-08-02 07:25:03 -05:00
ipmi_smic_sm.c ipmi: Clean up some printks 2020-09-15 09:57:45 -05:00
ipmi_ssif.c ipmi: ssif: Remove finished TODO comment about SMBus alert 2020-06-24 06:41:42 -05:00
ipmi_watchdog.c ipmi/watchdog: Stop watchdog timer when the current action is 'none' 2021-07-19 09:44:59 +02:00
Kconfig docs: fix references for ipmi.rst file 2020-05-15 11:55:21 -06:00
kcs_bmc_aspeed.c ipmi: kcs: Fix aspeed_kcs_probe_of_v1() 2020-04-07 08:35:40 -05:00
kcs_bmc_npcm7xx.c ipmi: NPCM7xx KCS BMC: enable interrupt to the host 2018-05-23 08:29:23 -05:00
kcs_bmc.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
kcs_bmc.h ipmi: kcs_bmc: coding-style fixes and use new poll type 2018-02-26 09:49:21 -06:00
Makefile Add support for IPMB driver 2019-06-10 14:47:10 -05:00