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: linux-in...@vger.kernel.org
Reported-by: Hulk Robot <hul...@huawei.com>
Signed-off-by: Kefeng Wang <wangkefeng.w...@huawei.com>
---
 drivers/input/misc/apanel.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/input/misc/apanel.c b/drivers/input/misc/apanel.c
index c1e66f45d552..1c7262ad4b5b 100644
--- a/drivers/input/misc/apanel.c
+++ b/drivers/input/misc/apanel.c
@@ -259,7 +259,9 @@ static int __init apanel_init(void)
        unsigned char i2c_addr;
        int found = 0;
 
-       bios = ioremap(0xF0000, 0x10000); /* Can't fail */
+       bios = ioremap(0xF0000, 0x10000);
+       if (!bios)
+               return -ENOMEM;
 
        p = bios_signature(bios);
        if (!p) {
-- 
2.20.1

Reply via email to