lkml.org 
[lkml]   [2012]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH -mm 4/7] mm: make page colouring code generic
On 06/21/2012 08:37 AM, Borislav Petkov wrote:

>> -unsigned long align_addr(unsigned long addr, struct file *filp,
>> - enum align_flags flags)
>> +unsigned long arch_align_addr(unsigned long addr, struct file *filp,
>> + unsigned long pgoff, unsigned long flags,
>> + enum mmap_allocation_direction direction)
>
> Arguments vertical alignment too, not only addr alignment :-)

Will do.

>> {
>> - unsigned long tmp_addr;
>> + unsigned long tmp_addr = PAGE_ALIGN(addr);
>
> I'm guessing addr coming from arch_get_unmapped_area(_topdown) might not
> be page-aligned in all cases?

That is my guess, too :)

In some places arch_get_unmapped_area(_topdown) called
PAGE_ALIGN(addr), so we should make sure it is called.

It is probably masking bugs in some old old application,
and calling it here really should not hurt.

>> - if (!(current->flags& PF_RANDOMIZE))
>> - return addr;
>> + /* Always allow MAP_FIXED. Colouring is a performance thing only. */
>> + if (flags& MAP_FIXED)
>> + return tmp_addr;
>
> Why here? Maybe we should push this MAP_FIXED check up in the
> arch_get_unmapped_area(_topdown) and not call arch_align_addr() for
> MAP_FIXED requests?
>
> Or do you want to save some code duplication?

The problem is that certain other architectures have
data cache alignment requirements, where mis-aligning
somebody's mmap of a file could result in actual data
corruption.

This means that, for those architectures, we have to
refuse non-colour-aligned MAP_FIXED mappings.

On x86 we can allow them, so we do. But that decision
needs to be taken in architecture specific code, not
in the shared arch_get_unmapped_area(_topdown) :)

>> + /*
>> + * When aligning down, make sure we did not accidentally go up.
>> + * The caller will check for underflow.
>> + */
>
> Can we add this comment to the x86-64 version of arch_align_addr too pls?

Will do.

--
All rights reversed


\
 
 \ /
  Last update: 2012-06-21 16:01    [W:0.165 / U:0.620 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site