Re: Regression in IPMI on 4.15.6

From: Corey Minyard
Date: Mon Mar 05 2018 - 14:31:57 EST


On 03/05/2018 01:07 PM, Laura Abbott wrote:
On 03/02/2018 05:46 AM, Corey Minyard wrote:
On 02/28/2018 01:07 PM, Corey Minyard wrote:
On 02/28/2018 08:17 AM, Corey Minyard wrote:
On 02/28/2018 07:53 AM, Corey Minyard wrote:
On 02/27/2018 05:55 PM, Laura Abbott wrote:
Hi,

Fedora got a bug report of a crash in IPMI on 4.15.6
https://bugzilla.redhat.com/show_bug.cgi?id=1549316
Unfortunately, it's only a screenshot but it's fairly
clear. It looks like a panic in the error handling path
in platform_device_unregister. Any ideas?



You may also run into another issue. You can pull the
individual patch at

https://github.com/cminyard/linux-ipmi.git c8a1972e77dbe321ce5ce0247056e727234cbaec

Actually, it needed a few more tweaks. Can you do change
426fa6179dae677134dfb37b21d057819418515b
instead? It's "ipmi: Fix some error cleanup issues"

I can send you patches, if you like. If you could test and get back
to me, that would be great.

Laura, have you had a chance to test this? I'd like to get it in soon,
if possible.

Thanks,

-corey


I think "ipmi: Re-use existing macros for built-in properties" is broken:


That particular requires some new stuff. I was just wanting you to pull that individual patch,
not the whole branch. I can just send the two patches, if you like.

-corey

In file included from ./include/linux/acpi.h:28:0,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ from ./include/linux/ipmi.h:21,
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ from drivers/char/ipmi/ipmi_dmi.c:7:
drivers/char/ipmi/ipmi_dmi.c: In function âdmi_add_platform_ipmiâ:
./include/linux/property.h:236:1: error: expected expression before â{â token
Â{ÂÂÂÂÂÂ \
Â^
./include/linux/property.h:244:2: note: in expansion of macro âPROPERTY_ENTRY_INTEGERâ
 PROPERTY_ENTRY_INTEGER(_name_, u8, _val_)
 ^~~~~~~~~~~~~~~~~~~~~~
drivers/char/ipmi/ipmi_dmi.c:79:15: note: in expansion of macro âPROPERTY_ENTRY_U8â
ÂÂ p[pidx++] = PROPERTY_ENTRY_U8("ipmi-type", si_type);
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ ^~~~~~~~~~~~~~~~~
./include/linux/property.h:236:1: error: expected expression before â{â token
Â{ÂÂÂÂÂÂ \
Â^
./include/linux/property.h:244:2: note: in expansion of macro âPROPERTY_ENTRY_INTEGERâ
 PROPERTY_ENTRY_INTEGER(_name_, u8, _val_)
 ^~~~~~~~~~~~~~~~~~~~~~
drivers/char/ipmi/ipmi_dmi.c:81:14: note: in expansion of macro âPROPERTY_ENTRY_U8â
 p[pidx++] = PROPERTY_ENTRY_U8("slave-addr", slave_addr);
ÂÂÂÂÂÂÂÂÂÂÂÂÂ ^~~~~~~~~~~~~~~~~
./include/linux/property.h:236:1: error: expected expression before â{â token
Â{ÂÂÂÂÂÂ \
Â^
./include/linux/property.h:244:2: note: in expansion of macro âPROPERTY_ENTRY_INTEGERâ
 PROPERTY_ENTRY_INTEGER(_name_, u8, _val_)
 ^~~~~~~~~~~~~~~~~~~~~~
drivers/char/ipmi/ipmi_dmi.c:82:14: note: in expansion of macro âPROPERTY_ENTRY_U8â
 p[pidx++] = PROPERTY_ENTRY_U8("addr-source", SI_SMBIOS);
ÂÂÂÂÂÂÂÂÂÂÂÂÂ ^~~~~~~~~~~~~~~~~
./include/linux/property.h:236:1: error: expected expression before â{â token
Â{ÂÂÂÂÂÂ \
Â^
./include/linux/property.h:246:2: note: in expansion of macro âPROPERTY_ENTRY_INTEGERâ
 PROPERTY_ENTRY_INTEGER(_name_, u16, _val_)
 ^~~~~~~~~~~~~~~~~~~~~~
drivers/char/ipmi/ipmi_dmi.c:107:15: note: in expansion of macro âPROPERTY_ENTRY_U16â
ÂÂ p[pidx++] = PROPERTY_ENTRY_U16("i2c-addr", base_addr);
ÂÂÂÂÂÂÂÂÂÂÂÂÂÂ ^~~~~~~~~~~~~~~~~~

I don't think that macro is actually a replacement?

Thanks,
Laura


BTW, the IPMI setup in your system is incorrect. SMBIOS says it's at a
memory address, but it's at an I/O address. And the address given
doesn't appear to be a valid address, the value read doesn't appear
to be a valid value.

-corey


for that fix.

-corey

Yeah, this is fixed by 174134ac7602 "ipmi_si: Fix error
handling of platform device" in mainstream.

I guess I need to request a backport of this.

Thanks for reporting.

-corey


Thanks,
Laura