arm_syscall cacheflush breakage on VIPT platforms

Imre Deak imre.deak at nokia.com
Mon Sep 28 05:54:29 EDT 2009


On Mon, Sep 28, 2009 at 11:41:40AM +0200, ext Russell King - ARM Linux wrote:
> On Mon, Sep 28, 2009 at 12:29:19PM +0300, Imre Deak wrote:
> > Hi,
> > 
> > the following test app will cause an unhandled kernel paging request
> > on VIPT platforms. The triggering condition is the mmap_sem held by
> > thread_func while the main thread performs cache flushing.
> > 
> > Since the likelihood of this to trigger is relatively low, a patch will
> > follow that makes similar bugs more visible.
> 
> The problem is that, unlike previous cache architectures, if a page is
> not present we now get a data abort during cache maintainence.  That
> means the cache maintainence instructions used for this call need to
> be marked with user fixups, so that the kernel knows how to handle
> such an abort.
> 
> It is not caused by the holding of mmap_sem.

This particular bug is caused by holding of mmap_sem, without any fixup
being defined.

> However, do_cache_op()
> should hold something to ensure the VMA doesn't disappear beneath it.

Yes, agreed.

--Imre




More information about the linux-arm-kernel mailing list