Subject: [PATCH] ARM: Do not call flush_cache_user_range with mmap_sem held

From: [email-masked] (Catalin Marinas)
Date: Thu, 17 Nov 2011 10:59:36 +0000

On Thu, Nov 17, 2011 at 10:42:46AM +0000, Russell King - ARM Linux wrote:
> On Thu, Nov 17, 2011 at 10:22:05AM +0000, Catalin Marinas wrote:
> > BTW, we could even go a step further an remove the vma checks entirely,
> > just use access_ok() since __cpuc_coherent_user_range() can handle
> > unmapped ranges properly (though it may introduce some latency if some
> > user app passes a 3G range but we can change the fixup code to abort the
> > operation when it gets a fault that can't be fixed up).
> 
> So, do you think that it is acceptable to be able to pass into this from
> userspace the arguments '0', '~0', '0' and have the kernel spin over the
> entire 4G space, including IO space on any of the supported architectures.

We have access_ok() to check for user only space.

> Note that pre-ARMv6 CPUs will spin over that range in 32-byte steps
> whether or not there's a page present.

You are right, the pre-v6 hardware would not trigger a fault. So if we
don't want another #ifdef in this function, we just keep the vma checks
for all architecture versions.

But I consider that the original patch is still valid.

-- 
Catalin