[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220122023447.1480995-1-eugenis@google.com>
Date: Fri, 21 Jan 2022 18:34:47 -0800
From: Evgenii Stepanov <eugenis@...gle.com>
To: Catalin Marinas <catalin.marinas@....com>,
Will Deacon <will@...nel.org>,
Mark Rutland <mark.rutland@....com>,
Ard Biesheuvel <ardb@...nel.org>,
Robin Murphy <robin.murphy@....com>,
Jisheng Zhang <jszhang@...nel.org>
Cc: linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
Evgenii Stepanov <eugenis@...gle.com>
Subject: [PATCH] arm64: extable: fix null deref in load_unaligned_zeropad.
ex_handler_load_unaligned_zeropad extracts the source and data register
numbers from the wrong field of the exception table.
Fixes: 753b3236
Signed-off-by: Evgenii Stepanov <eugenis@...gle.com>
---
arch/arm64/mm/extable.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/mm/extable.c b/arch/arm64/mm/extable.c
index c0181e60cc98..489455309695 100644
--- a/arch/arm64/mm/extable.c
+++ b/arch/arm64/mm/extable.c
@@ -40,8 +40,8 @@ static bool
ex_handler_load_unaligned_zeropad(const struct exception_table_entry *ex,
struct pt_regs *regs)
{
- int reg_data = FIELD_GET(EX_DATA_REG_DATA, ex->type);
- int reg_addr = FIELD_GET(EX_DATA_REG_ADDR, ex->type);
+ int reg_data = FIELD_GET(EX_DATA_REG_DATA, ex->data);
+ int reg_addr = FIELD_GET(EX_DATA_REG_ADDR, ex->data);
unsigned long data, addr, offset;
addr = pt_regs_read_reg(regs, reg_addr);
--
2.35.0.rc0.227.g00780c9af4-goog
Powered by blists - more mailing lists