If ioremap fails, NULL pointer dereference will happen and leading to a kernel panic when access the virtual address in check_signature().
Fix it by check the return value of ioremap. Cc: Dmitry Torokhov <dmitry.torok...@gmail.com> Cc: Miloslav Trmac <m...@volny.cz> Cc: Wolfram Sang <w...@the-dreams.de> Cc: linux-in...@vger.kernel.org Reported-by: Hulk Robot <hul...@huawei.com> Signed-off-by: Kefeng Wang <wangkefeng.w...@huawei.com> --- drivers/input/misc/wistron_btns.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/input/misc/wistron_btns.c b/drivers/input/misc/wistron_btns.c index 43e67f546366..a82ec3d102b4 100644 --- a/drivers/input/misc/wistron_btns.c +++ b/drivers/input/misc/wistron_btns.c @@ -107,7 +107,10 @@ static int __init map_bios(void) ssize_t offset; u32 entry_point; - base = ioremap(0xF0000, 0x10000); /* Can't fail */ + base = ioremap(0xF0000, 0x10000); + if (!base) + return -ENOMEM; + offset = locate_wistron_bios(base); if (offset < 0) { printk(KERN_ERR "wistron_btns: BIOS entry point not found\n"); -- 2.20.1