platform/x86: think-lmi: Prevent underflow in index_store()
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 17 Dec 2021 07:12:09 +0000 (10:12 +0300)
committerHans de Goede <hdegoede@redhat.com>
Tue, 21 Dec 2021 17:57:14 +0000 (18:57 +0100)
There needs to be a check to prevent negative offsets for
setting->index.  I have reviewed this code and I think that the
"if (block->instance_count <= instance)" check in __query_block() will
prevent this from resulting in an out of bounds access.  But it's
still worth fixing.

Fixes: 640a5fa50a42 ("platform/x86: think-lmi: Opcode support")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Link: https://lore.kernel.org/r/20211217071209.GF26548@kili
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
drivers/platform/x86/think-lmi.c

index 27ab8e4e5b8369d62c84fe2f92176e0d969227b7..0b73e16cccea8889db52110ed104f6b8fd3ed1d4 100644 (file)
@@ -573,7 +573,7 @@ static ssize_t index_store(struct kobject *kobj,
        if (err < 0)
                return err;
 
-       if (val > TLMI_INDEX_MAX)
+       if (val < 0 || val > TLMI_INDEX_MAX)
                return -EINVAL;
 
        setting->index = val;