Commit ca29cfcc authored by Russell King (Oracle)'s avatar Russell King (Oracle)
Browse files

ARM: fix cacheflush with PAN



It seems that the cacheflush syscall got broken when PAN for LPAE was
implemented. User access was not enabled around the cache maintenance
instructions, causing them to fault.

Fixes: 7af5b901 ("ARM: 9358/2: Implement PAN for LPAE by TTBR0 page table walks disablement")
Reported-by: default avatarMichał Pecio <michal.pecio@gmail.com>
Tested-by: default avatarMichał Pecio <michal.pecio@gmail.com>
Signed-off-by: default avatarRussell King (Oracle) <rmk+kernel@armlinux.org.uk>
parent fb5af7d5
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -570,6 +570,7 @@ static int bad_syscall(int n, struct pt_regs *regs)
static inline int
__do_cache_op(unsigned long start, unsigned long end)
{
	unsigned int ua_flags;
	int ret;

	do {
@@ -578,7 +579,9 @@ __do_cache_op(unsigned long start, unsigned long end)
		if (fatal_signal_pending(current))
			return 0;

		ua_flags = uaccess_save_and_enable();
		ret = flush_icache_user_range(start, start + chunk);
		uaccess_restore(ua_flags);
		if (ret)
			return ret;