ipmi_si: Fix crash when using hard-coded device
mainline inclusion from mainline-5.1 commit 41b766d6 Bugzilla: 10639 CVE: NA ---------------------------------------- When excuting a command like: modprobe ipmi_si ports=0xffc0e3 type=bt The system would get an oops. The trouble here is that ipmi_si_hardcode_find_bmc() is called before ipmi_si_platform_init(), but initialization of the hard-coded device creates an IPMI platform device, which won't be initialized yet. The real trouble is that hard-coded devices aren't created with any device, and the fixup is done later. So do it right, create the hard-coded devices as normal platform devices. This required adding some new resource types to the IPMI platform code for passing information required by the hard-coded device and adding some code to remove the hard-coded platform devices on module removal. To enforce the "hard-coded devices passed by the user take priority over firmware devices" rule, some special code was added to check and see if a hard-coded device already exists. Reported-by: NYang Yingliang <yangyingliang@huawei.com> Signed-off-by: NCorey Minyard <cminyard@mvista.com> Conflicts: drivers/char/ipmi/ipmi_si_hardcode.c drivers/char/ipmi/ipmi_si_intf.c drivers/char/ipmi/ipmi_si_platform.c [yyl: adjust context] Signed-off-by: NYang Yingliang <yangyingliang@huawei.com> Reviewed-by: NHanjun Guo <guohanjun@huawei.com> Signed-off-by: NYang Yingliang <yangyingliang@huawei.com>
Showing
想要评论请 注册 或 登录