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 <jdelvare@xxxxxxxx> Cc: Wolfram Sang <wsa@xxxxxxxxxxxxx> Cc: linux-i2c@xxxxxxxxxxxxxxx Reported-by: Hulk Robot <hulkci@xxxxxxxxxx> Signed-off-by: Kefeng Wang <wangkefeng.wang@xxxxxxxxxx> --- 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