[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LRH.2.21.1806201725520.28187@math.ut.ee>
Date: Wed, 20 Jun 2018 17:26:49 +0300 (EEST)
From: Meelis Roos <mroos@...ux.ee>
To: minyard@....org
cc: Linux Kernel list <linux-kernel@...r.kernel.org>,
openipmi-developer@...ts.sourceforge.net,
Corey Minyard <cminyard@...sta.com>
Subject: Re: [PATCH] ipmi: Cleanup oops on initialization failure
> Commit 93c303d2045b3 "ipmi_si: Clean up shutdown a bit" didn't
> copy the behavior of the cleanup in one spot, it needed to
> check for a non-NULL interface before cleaning it up.
>
> Signed-off-by: Corey Minyard <cminyard@...sta.com>
Tested-by: Meelis Roos <mroos@...ux.ee>
The corresponding dmesg:
[ 7.372830] IPMI System Interface driver.
[ 7.373034] ipmi_si dmi-ipmi-si.0: ipmi_platform: probing via SMBIOS
[ 7.373109] ipmi_si: SMBIOS: mem 0x0 regsize 1 spacing 1 irq 0
[ 7.373182] ipmi_si: Adding SMBIOS-specified kcs state machine
[ 7.373352] ipmi_si: Trying SMBIOS-specified kcs state machine at mem address 0x0, slave address 0x20, irq 0
[ 7.373479] ipmi_si dmi-ipmi-si.0: Could not set up I/O space
> BTW, can you send me at least the IPMI portion of the output of
> dmidecode for your machine? I have seen a lot of these where the
> address in the SMBIOS tables is incorrect, and I'm wondering if
> it's something in the driver, or if it's really the tables that
> are bad.
Handle 0x001B, DMI type 38, 18 bytes
IPMI Device Information
Interface Type: KCS (Keyboard Control Style)
Specification Version: 2.0
I2C Slave Address: 0x10
NV Storage Device: Not Present
Base Address: 0x0000000000000000 (Memory-mapped)
Register Spacing: Successive Byte Boundaries
>
> Thanks for reporting this. On your tested-by I'll send this up
> to Linus.
>
> -corey
>
> drivers/char/ipmi/ipmi_si_intf.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
> index 3d0add6..a5987f8 100644
> --- a/drivers/char/ipmi/ipmi_si_intf.c
> +++ b/drivers/char/ipmi/ipmi_si_intf.c
> @@ -2088,8 +2088,10 @@ static int try_smi_init(struct smi_info *new_smi)
> return 0;
>
> out_err:
> - ipmi_unregister_smi(new_smi->intf);
> - new_smi->intf = NULL;
> + if (new_smi->intf) {
> + ipmi_unregister_smi(new_smi->intf);
> + new_smi->intf = NULL;
> + }
>
> kfree(init_name);
>
>
--
Meelis Roos (mroos@...ux.ee)
Powered by blists - more mailing lists