summaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorShuai Xue <xueshuai@linux.alibaba.com>2023-01-18 07:35:04 +0100
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2023-01-30 16:40:05 +0100
commit53fc7e80f3aa9c34d396bcfbcc03a4c0d2eaac96 (patch)
tree0be02a46fe518e2e719db8f28966f05a08483b8a /drivers/acpi
parentLinux 6.2-rc6 (diff)
downloadlinux-53fc7e80f3aa9c34d396bcfbcc03a4c0d2eaac96.tar.xz
linux-53fc7e80f3aa9c34d396bcfbcc03a4c0d2eaac96.zip
ACPI: APEI: EINJ: Limit error type to 32-bit width
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>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/apei/einj.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/acpi/apei/einj.c b/drivers/acpi/apei/einj.c
index ab86b2f4e719..b4373e575660 100644
--- a/drivers/acpi/apei/einj.c
+++ b/drivers/acpi/apei/einj.c
@@ -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