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

Russell King - ARM Linux linux at arm.linux.org.uk
Thu Nov 17 06:03:39 EST 2011


On Thu, Nov 17, 2011 at 10:59:36AM +0000, Catalin Marinas wrote:
> 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.

You thinks it's safe to walk the vma list with no locks held?



More information about the linux-arm-kernel mailing list