linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Christoph Hellwig <hch@infradead.org>,
	Nick Piggin <npiggin@suse.de>,
	akpm@linux-foundation.org, hugh@veritas.com,
	Linux Memory Management <linux-mm@kvack.org>
Subject: Re: [RFC/PATCH] prepare_unmapped_area
Date: Tue, 6 Feb 2007 10:23:12 +0000	[thread overview]
Message-ID: <20070206102312.GA11783@infradead.org> (raw)
In-Reply-To: <1170756442.2620.234.camel@localhost.localdomain>

On Tue, Feb 06, 2007 at 09:07:22PM +1100, Benjamin Herrenschmidt wrote:
> 
> > Eeek, this is more than fugly.  Dave Hansen suggested to move these
> > checks into a file operation in response to Adam Litke's hugetlb cleanups,
> > and this patch shows he was right :)
> 
> No, you don't understand... There is a fops for get_unmapped_area for
> the "special" file. It's currently not called for MAP_FIXED but that can
> be fixed easily enough (in fact, I have a few ideas to clean up some of
> that code, it's already horrible today).
> 
> The problem is to prevent something -else- from being mapped into one of
> those 256MB area once it's been switched to a different page size.
> 
> Right now, this is done via this hugetlbfs specific hack. I want to
> have instead some way to have the arch "validate" the address after
> get_unmapped_area(), in addition, hugetlbfs wants to "prepare" but that
> could indeed be done in hugetlbfs provided fops->get_unmapped_area() if
> we call it for MAP_FIXED as well.

Can we extent mm->get_unmapped_area for that if it's called for !MAP_FIXED
aswell instead of adding yet another arch hook?

This area is getting a little bit too messy with all the pseudo-generic code
and lots of arch hooks. Personally I'd prefer to let get_unmapped_area
look like the following:


unsigned long
get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
		  unsigned long pgoff, unsigned long flags)
{
	get_area = current->mm->get_unmapped_area;
	if (file && file->f_op && file->f_op->get_unmapped_area)
		get_area = file->f_op->get_unmapped_area;
	addr = get_area(file, addr, len, pgoff, flags);
	if (IS_ERR_VALUE(addr))
		return addr;
}

aka mm->get_unmapped_area is mandatory, and all arch specific code
is move into it.  We'd provide a default mm->get_unmapped_area that
doesn't even deal with hugetlb for all the trivial architectures,
and any arch that wants to do their own work can do all this through
a signle hook.

--
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>

  reply	other threads:[~2007-02-06 10:23 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200702060405.l1645R7G009668@shell0.pdx.osdl.net>
     [not found] ` <1170736938.2620.213.camel@localhost.localdomain>
     [not found]   ` <20070206044516.GA16647@wotan.suse.de>
2007-02-06  5:04     ` [RFC/PATCH] prepare_unmapped_area Benjamin Herrenschmidt
2007-02-06  5:31       ` Andrew Morton
2007-02-06  5:46         ` Benjamin Herrenschmidt
2007-02-06  5:58           ` Andrew Morton
2007-02-06  6:02             ` Benjamin Herrenschmidt
2007-02-06  6:08               ` Andrew Morton
2007-02-06  6:12             ` Nick Piggin
2007-02-06  6:37               ` Andrew Morton
2007-02-06  6:40                 ` Nick Piggin
2007-02-06  6:54                   ` Andrew Morton
2007-02-06  9:55       ` Christoph Hellwig
2007-02-06 10:07         ` Benjamin Herrenschmidt
2007-02-06 10:23           ` Christoph Hellwig [this message]
2007-02-06 15:56       ` Adam Litke
2007-02-06 20:12         ` Benjamin Herrenschmidt
2007-02-06 20:52           ` Adam Litke
2007-02-06 21:02             ` Benjamin Herrenschmidt

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=20070206102312.GA11783@infradead.org \
    --to=hch@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=benh@kernel.crashing.org \
    --cc=hugh@veritas.com \
    --cc=linux-mm@kvack.org \
    --cc=npiggin@suse.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).