All of lore.kernel.org
 help / color / mirror / Atom feed
From: Rik van Riel <riel@redhat.com>
To: Borislav Petkov <bp@amd64.org>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
	aarcange@redhat.com, peterz@infradead.org, minchan@gmail.com,
	kosaki.motohiro@gmail.com, andi@firstfloor.org,
	hannes@cmpxchg.org, mel@csn.ul.ie, linux-kernel@vger.kernel.org,
	Rik van Riel <riel@surriel.com>
Subject: Re: [PATCH -mm 4/7] mm: make page colouring code generic
Date: Thu, 21 Jun 2012 09:24:19 -0400	[thread overview]
Message-ID: <4FE32083.4000805@redhat.com> (raw)
In-Reply-To: <20120621123743.GA7121@aftab.osrc.amd.com>

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

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Rik van Riel <riel@redhat.com>
To: Borislav Petkov <bp@amd64.org>
Cc: linux-mm@kvack.org, akpm@linux-foundation.org,
	aarcange@redhat.com, peterz@infradead.org, minchan@gmail.com,
	kosaki.motohiro@gmail.com, andi@firstfloor.org,
	hannes@cmpxchg.org, mel@csn.ul.ie, linux-kernel@vger.kernel.org,
	Rik van Riel <riel@surriel.com>
Subject: Re: [PATCH -mm 4/7] mm: make page colouring code generic
Date: Thu, 21 Jun 2012 09:24:19 -0400	[thread overview]
Message-ID: <4FE32083.4000805@redhat.com> (raw)
In-Reply-To: <20120621123743.GA7121@aftab.osrc.amd.com>

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

  reply	other threads:[~2012-06-21 13:25 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-18 22:05 [PATCH -mm 0/7] mm: scalable and unified arch_get_unmapped_area Rik van Riel
2012-06-18 22:05 ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 1/7] mm: track free size between VMAs in VMA rbtree Rik van Riel
2012-06-18 22:05   ` Rik van Riel
2012-06-19 23:25   ` Andrew Morton
2012-06-19 23:25     ` Andrew Morton
2012-06-21 11:01   ` Peter Zijlstra
2012-06-21 11:01     ` Peter Zijlstra
2012-06-21 11:07   ` Peter Zijlstra
2012-06-21 11:07     ` Peter Zijlstra
2012-06-21 14:47   ` Mel Gorman
2012-06-21 14:47     ` Mel Gorman
2012-06-18 22:05 ` [PATCH -mm 2/7] mm: get unmapped area from VMA tree Rik van Riel
2012-06-18 22:05   ` Rik van Riel
2012-06-21  9:01   ` Johannes Weiner
2012-06-21  9:01     ` Johannes Weiner
2012-06-21 13:17     ` Rik van Riel
2012-06-21 13:17       ` Rik van Riel
2012-06-21 16:50     ` Rik van Riel
2012-06-21 16:50       ` Rik van Riel
2012-06-21 16:16   ` Mel Gorman
2012-06-21 16:16     ` Mel Gorman
2012-06-21 17:27     ` Rik van Riel
2012-06-21 17:27       ` Rik van Riel
2012-06-21 21:06   ` Peter Zijlstra
2012-06-21 21:06     ` Peter Zijlstra
2012-06-18 22:05 ` [PATCH -mm 3/7] Allow each architecture to specify the address range that can be used for this allocation Rik van Riel
2012-06-18 22:05   ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 4/7] mm: make page colouring code generic Rik van Riel
2012-06-18 22:05   ` Rik van Riel
2012-06-19 23:27   ` Andrew Morton
2012-06-19 23:27     ` Andrew Morton
2012-06-21 17:52     ` Rik van Riel
2012-06-21 17:52       ` Rik van Riel
2012-06-21 19:22       ` Borislav Petkov
2012-06-21 19:22         ` Borislav Petkov
2012-06-21 11:20   ` Peter Zijlstra
2012-06-21 11:20     ` Peter Zijlstra
2012-06-21 14:30     ` Rik van Riel
2012-06-21 14:30       ` Rik van Riel
2012-06-21 17:40       ` Andrew Morton
2012-06-21 17:40         ` Andrew Morton
2012-06-21 17:45         ` Rik van Riel
2012-06-21 17:45           ` Rik van Riel
2012-06-21 12:37   ` Borislav Petkov
2012-06-21 12:37     ` Borislav Petkov
2012-06-21 13:24     ` Rik van Riel [this message]
2012-06-21 13:24       ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 5/7] mm: remove x86 arch_get_unmapped_area(_topdown) Rik van Riel
2012-06-18 22:05   ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 6/7] remove MIPS arch_get_unmapped_area code Rik van Riel
2012-06-18 22:05   ` Rik van Riel
2012-06-18 22:05 ` [PATCH -mm 7/7] remove ARM arch_get_unmapped_area functions Rik van Riel
2012-06-18 22:05   ` Rik van Riel
2012-06-19 23:20 ` [PATCH -mm 0/7] mm: scalable and unified arch_get_unmapped_area Andrew Morton
2012-06-19 23:20   ` Andrew Morton
2012-06-21 10:18 ` Johannes Weiner
2012-06-21 10:18   ` Johannes Weiner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4FE32083.4000805@redhat.com \
    --to=riel@redhat.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=andi@firstfloor.org \
    --cc=bp@amd64.org \
    --cc=hannes@cmpxchg.org \
    --cc=kosaki.motohiro@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mel@csn.ul.ie \
    --cc=minchan@gmail.com \
    --cc=peterz@infradead.org \
    --cc=riel@surriel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.