The patch below does not apply to the 5.4-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to stable@vger.kernel.org.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 519ea6f1c82fcdc9842908155ae379de47818778 Mon Sep 17 00:00:00 2001
From: Vincenzo Frascino vincenzo.frascino@arm.com Date: Tue, 26 Jan 2021 13:40:56 +0000 Subject: [PATCH] arm64: Fix kernel address detection of __is_lm_address()
Currently, the __is_lm_address() check just masks out the top 12 bits of the address, but if they are 0, it still yields a true result. This has as a side effect that virt_addr_valid() returns true even for invalid virtual addresses (e.g. 0x0).
Fix the detection checking that it's actually a kernel address starting at PAGE_OFFSET.
Fixes: 68dd8ef32162 ("arm64: memory: Fix virt_addr_valid() using __is_lm_address()") Cc: stable@vger.kernel.org # 5.4.x Cc: Will Deacon will@kernel.org Suggested-by: Catalin Marinas catalin.marinas@arm.com Reviewed-by: Catalin Marinas catalin.marinas@arm.com Acked-by: Mark Rutland mark.rutland@arm.com Signed-off-by: Vincenzo Frascino vincenzo.frascino@arm.com Link: https://lore.kernel.org/r/20210126134056.45747-1-vincenzo.frascino@arm.com Signed-off-by: Catalin Marinas catalin.marinas@arm.com
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h index 18fce223b67b..99d7e1494aaa 100644 --- a/arch/arm64/include/asm/memory.h +++ b/arch/arm64/include/asm/memory.h @@ -247,9 +247,11 @@ static inline const void *__tag_set(const void *addr, u8 tag)
/* - * The linear kernel range starts at the bottom of the virtual address space. + * Check whether an arbitrary address is within the linear map, which + * lives in the [PAGE_OFFSET, PAGE_END) interval at the bottom of the + * kernel's TTBR1 address range. */ -#define __is_lm_address(addr) (((u64)(addr) & ~PAGE_OFFSET) < (PAGE_END - PAGE_OFFSET)) +#define __is_lm_address(addr) (((u64)(addr) ^ PAGE_OFFSET) < (PAGE_END - PAGE_OFFSET))
#define __lm_to_phys(addr) (((addr) & ~PAGE_OFFSET) + PHYS_OFFSET) #define __kimg_to_phys(addr) ((addr) - kimage_voffset)
Hi Greg,
On Sun, Jan 31, 2021 at 03:40:58PM +0100, Greg Kroah-Hartman wrote:
The patch below does not apply to the 5.4-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to stable@vger.kernel.org.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 519ea6f1c82fcdc9842908155ae379de47818778 Mon Sep 17 00:00:00 2001 From: Vincenzo Frascino vincenzo.frascino@arm.com Date: Tue, 26 Jan 2021 13:40:56 +0000 Subject: [PATCH] arm64: Fix kernel address detection of __is_lm_address()
Currently, the __is_lm_address() check just masks out the top 12 bits of the address, but if they are 0, it still yields a true result. This has as a side effect that virt_addr_valid() returns true even for invalid virtual addresses (e.g. 0x0).
Fix the detection checking that it's actually a kernel address starting at PAGE_OFFSET.
Fixes: 68dd8ef32162 ("arm64: memory: Fix virt_addr_valid() using __is_lm_address()") Cc: stable@vger.kernel.org # 5.4.x Cc: Will Deacon will@kernel.org Suggested-by: Catalin Marinas catalin.marinas@arm.com Reviewed-by: Catalin Marinas catalin.marinas@arm.com Acked-by: Mark Rutland mark.rutland@arm.com Signed-off-by: Vincenzo Frascino vincenzo.frascino@arm.com Link: https://lore.kernel.org/r/20210126134056.45747-1-vincenzo.frascino@arm.com Signed-off-by: Catalin Marinas catalin.marinas@arm.com
I sent you the 5.4 and 5.10 backports of this patch. There is another fix in this area which I'll send to Linus tonight. It should apply cleanly on 5.4 and 5.10.
Thanks.
On Wed, Feb 03, 2021 at 01:15:03PM +0000, Catalin Marinas wrote:
Hi Greg,
On Sun, Jan 31, 2021 at 03:40:58PM +0100, Greg Kroah-Hartman wrote:
The patch below does not apply to the 5.4-stable tree. If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to stable@vger.kernel.org.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 519ea6f1c82fcdc9842908155ae379de47818778 Mon Sep 17 00:00:00 2001 From: Vincenzo Frascino vincenzo.frascino@arm.com Date: Tue, 26 Jan 2021 13:40:56 +0000 Subject: [PATCH] arm64: Fix kernel address detection of __is_lm_address()
Currently, the __is_lm_address() check just masks out the top 12 bits of the address, but if they are 0, it still yields a true result. This has as a side effect that virt_addr_valid() returns true even for invalid virtual addresses (e.g. 0x0).
Fix the detection checking that it's actually a kernel address starting at PAGE_OFFSET.
Fixes: 68dd8ef32162 ("arm64: memory: Fix virt_addr_valid() using __is_lm_address()") Cc: stable@vger.kernel.org # 5.4.x Cc: Will Deacon will@kernel.org Suggested-by: Catalin Marinas catalin.marinas@arm.com Reviewed-by: Catalin Marinas catalin.marinas@arm.com Acked-by: Mark Rutland mark.rutland@arm.com Signed-off-by: Vincenzo Frascino vincenzo.frascino@arm.com Link: https://lore.kernel.org/r/20210126134056.45747-1-vincenzo.frascino@arm.com Signed-off-by: Catalin Marinas catalin.marinas@arm.com
I sent you the 5.4 and 5.10 backports of this patch. There is another fix in this area which I'll send to Linus tonight. It should apply cleanly on 5.4 and 5.10.
Both now applied. What is the git id of the other fix in Linus's tree?
thanks,
greg k-h
On Thu, Feb 04, 2021 at 04:08:02PM +0100, Greg Kroah-Hartman wrote:
On Wed, Feb 03, 2021 at 01:15:03PM +0000, Catalin Marinas wrote:
On Sun, Jan 31, 2021 at 03:40:58PM +0100, Greg Kroah-Hartman wrote:
From 519ea6f1c82fcdc9842908155ae379de47818778 Mon Sep 17 00:00:00 2001 From: Vincenzo Frascino vincenzo.frascino@arm.com Date: Tue, 26 Jan 2021 13:40:56 +0000 Subject: [PATCH] arm64: Fix kernel address detection of __is_lm_address()
Currently, the __is_lm_address() check just masks out the top 12 bits of the address, but if they are 0, it still yields a true result. This has as a side effect that virt_addr_valid() returns true even for invalid virtual addresses (e.g. 0x0).
Fix the detection checking that it's actually a kernel address starting at PAGE_OFFSET.
Fixes: 68dd8ef32162 ("arm64: memory: Fix virt_addr_valid() using __is_lm_address()") Cc: stable@vger.kernel.org # 5.4.x Cc: Will Deacon will@kernel.org Suggested-by: Catalin Marinas catalin.marinas@arm.com Reviewed-by: Catalin Marinas catalin.marinas@arm.com Acked-by: Mark Rutland mark.rutland@arm.com Signed-off-by: Vincenzo Frascino vincenzo.frascino@arm.com Link: https://lore.kernel.org/r/20210126134056.45747-1-vincenzo.frascino@arm.com Signed-off-by: Catalin Marinas catalin.marinas@arm.com
I sent you the 5.4 and 5.10 backports of this patch. There is another fix in this area which I'll send to Linus tonight. It should apply cleanly on 5.4 and 5.10.
Both now applied. What is the git id of the other fix in Linus's tree?
Thanks. The other commit is 91cb2c8b072e ("arm64: Do not pass tagged addresses to __is_lm_address()").
On Thu, Feb 04, 2021 at 03:12:52PM +0000, Catalin Marinas wrote:
On Thu, Feb 04, 2021 at 04:08:02PM +0100, Greg Kroah-Hartman wrote:
On Wed, Feb 03, 2021 at 01:15:03PM +0000, Catalin Marinas wrote:
On Sun, Jan 31, 2021 at 03:40:58PM +0100, Greg Kroah-Hartman wrote:
From 519ea6f1c82fcdc9842908155ae379de47818778 Mon Sep 17 00:00:00 2001 From: Vincenzo Frascino vincenzo.frascino@arm.com Date: Tue, 26 Jan 2021 13:40:56 +0000 Subject: [PATCH] arm64: Fix kernel address detection of __is_lm_address()
Currently, the __is_lm_address() check just masks out the top 12 bits of the address, but if they are 0, it still yields a true result. This has as a side effect that virt_addr_valid() returns true even for invalid virtual addresses (e.g. 0x0).
Fix the detection checking that it's actually a kernel address starting at PAGE_OFFSET.
Fixes: 68dd8ef32162 ("arm64: memory: Fix virt_addr_valid() using __is_lm_address()") Cc: stable@vger.kernel.org # 5.4.x Cc: Will Deacon will@kernel.org Suggested-by: Catalin Marinas catalin.marinas@arm.com Reviewed-by: Catalin Marinas catalin.marinas@arm.com Acked-by: Mark Rutland mark.rutland@arm.com Signed-off-by: Vincenzo Frascino vincenzo.frascino@arm.com Link: https://lore.kernel.org/r/20210126134056.45747-1-vincenzo.frascino@arm.com Signed-off-by: Catalin Marinas catalin.marinas@arm.com
I sent you the 5.4 and 5.10 backports of this patch. There is another fix in this area which I'll send to Linus tonight. It should apply cleanly on 5.4 and 5.10.
Both now applied. What is the git id of the other fix in Linus's tree?
Thanks. The other commit is 91cb2c8b072e ("arm64: Do not pass tagged addresses to __is_lm_address()").
Great, grabbed that now too, thanks.
greg k-h
On Thu, Feb 04, 2021 at 04:27:28PM +0100, Greg Kroah-Hartman wrote:
On Thu, Feb 04, 2021 at 03:12:52PM +0000, Catalin Marinas wrote:
On Thu, Feb 04, 2021 at 04:08:02PM +0100, Greg Kroah-Hartman wrote:
On Wed, Feb 03, 2021 at 01:15:03PM +0000, Catalin Marinas wrote:
On Sun, Jan 31, 2021 at 03:40:58PM +0100, Greg Kroah-Hartman wrote:
From 519ea6f1c82fcdc9842908155ae379de47818778 Mon Sep 17 00:00:00 2001 From: Vincenzo Frascino vincenzo.frascino@arm.com Date: Tue, 26 Jan 2021 13:40:56 +0000 Subject: [PATCH] arm64: Fix kernel address detection of __is_lm_address()
Currently, the __is_lm_address() check just masks out the top 12 bits of the address, but if they are 0, it still yields a true result. This has as a side effect that virt_addr_valid() returns true even for invalid virtual addresses (e.g. 0x0).
Fix the detection checking that it's actually a kernel address starting at PAGE_OFFSET.
Fixes: 68dd8ef32162 ("arm64: memory: Fix virt_addr_valid() using __is_lm_address()") Cc: stable@vger.kernel.org # 5.4.x Cc: Will Deacon will@kernel.org Suggested-by: Catalin Marinas catalin.marinas@arm.com Reviewed-by: Catalin Marinas catalin.marinas@arm.com Acked-by: Mark Rutland mark.rutland@arm.com Signed-off-by: Vincenzo Frascino vincenzo.frascino@arm.com Link: https://lore.kernel.org/r/20210126134056.45747-1-vincenzo.frascino@arm.com Signed-off-by: Catalin Marinas catalin.marinas@arm.com
I sent you the 5.4 and 5.10 backports of this patch. There is another fix in this area which I'll send to Linus tonight. It should apply cleanly on 5.4 and 5.10.
Both now applied. What is the git id of the other fix in Linus's tree?
Thanks. The other commit is 91cb2c8b072e ("arm64: Do not pass tagged addresses to __is_lm_address()").
Great, grabbed that now too, thanks.
Thanks Greg.
linux-stable-mirror@lists.linaro.org