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: Jean Delvare <jdelv...@suse.com> Cc: Wolfram Sang <w...@the-dreams.de> Cc: linux-...@vger.kernel.org Reported-by: Hulk Robot <hul...@huawei.com> Signed-off-by: Kefeng Wang <wangkefeng.w...@huawei.com> --- drivers/i2c/busses/i2c-i801.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c index 679c6c41f64b..fc6ccb8aba17 100644 --- a/drivers/i2c/busses/i2c-i801.c +++ b/drivers/i2c/busses/i2c-i801.c @@ -1068,7 +1068,10 @@ static void __init input_apanel_init(void) void __iomem *bios; const void __iomem *p; - bios = ioremap(0xF0000, 0x10000); /* Can't fail */ + bios = ioremap(0xF0000, 0x10000); + if (!base) + return -ENOMEM; + p = bios_signature(bios); if (p) { /* just use the first address */ -- 2.20.1