ACPI: APEI: EINJ: Limit error type to 32-bit width
authorShuai Xue <xueshuai@linux.alibaba.com>
Wed, 18 Jan 2023 06:35:04 +0000 (14:35 +0800)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Mon, 30 Jan 2023 15:40:05 +0000 (16:40 +0100)
The bit map of error types to inject is 32-bit width [1].

Add parameter check to reflect the fact.

[1] ACPI Specification 6.4, Section 18.6.4. Error Types

Signed-off-by: Shuai Xue <xueshuai@linux.alibaba.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/apei/einj.c

index ab86b2f..b4373e5 100644 (file)
@@ -616,6 +616,10 @@ static int error_type_set(void *data, u64 val)
        u32 available_error_type = 0;
        u32 tval, vendor;
 
+       /* Only low 32 bits for error type are valid */
+       if (val & GENMASK_ULL(63, 32))
+               return -EINVAL;
+
        /*
         * Vendor defined types have 0x80000000 bit set, and
         * are not enumerated by ACPI_EINJ_GET_ERROR_TYPE