All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrea Arcangeli <andrea@suse.de>
To: Benjamin LaHaise <bcrl@redhat.com>
Cc: Marcelo Tosatti <marcelo@conectiva.com.br>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [patch] mmap bug with drivers that adjust vm_start
Date: Tue, 26 Mar 2002 20:15:02 +0100	[thread overview]
Message-ID: <20020326201502.J13052@dualathlon.random> (raw)
In-Reply-To: <20020325230046.A14421@redhat.com> <20020326174236.B13052@dualathlon.random> <20020326135703.B25375@redhat.com>

On Tue, Mar 26, 2002 at 01:57:03PM -0500, Benjamin LaHaise wrote:
> On Tue, Mar 26, 2002 at 05:42:36PM +0100, Andrea Arcangeli wrote:
> > However if the patch is needed it means the ->mmap also must do the
> > do_munmap stuff by hand internally, which is very ugly given we also did
> > our own do_munmap in a completly different region (the one requested by
> > the user).
> 
> At least my own code checks for that and fails if there is a mapping 
> already placed at the fixed address it needs to use.  If we're paranoid, 

Ok, so it's safe.

> we could BUG() on getting a vma back from the new find_vma_prepare call.

yes, it sounds a good idea to verify there's no other mapping in the way
of the relocation (until a better fix is implemented), it's a slow path
so we won't hurt performance.

> 
> > Our do_munmap should not happen if we place the mapping
> > elsewhere. If possible I would prefer to change those drivers to
> > advertise their enforced vm_start with a proper callback, the current
> > way is halfway broken still. BTW, which are those drivers, and why they
> > needs to enforce a certain vm_start (also despite MAP_FIXED that they
> > cannot check within the ->mmap callback)?
> 
> Video drivers, others that require specific alignment (4MB pages for 
> example).  Historically, the mmap call has been the hook for doing this, 
> hence the comment in do_mmap from davem.  Unless there's a really good 
> reason for changing the hook, I don't see doing so as providing much 
> benefit other than making source compatibility hard.

The good reason, is that currently we're literally corrupting the
userspace with the senseless do_munmap call in the add<->addr+len area
before the ->mmap lowlevel callback. And such an munmap is certainly not
required to maintain source and binary compatibility (otherwise it would
be insane in the first place :).

Andrea

WARNING: multiple messages have this Message-ID (diff)
From: Andrea Arcangeli <andrea@suse.de>
To: Benjamin LaHaise <bcrl@redhat.com>
Cc: Marcelo Tosatti <marcelo@conectiva.com.br>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org
Subject: Re: [patch] mmap bug with drivers that adjust vm_start
Date: Tue, 26 Mar 2002 20:15:02 +0100	[thread overview]
Message-ID: <20020326201502.J13052@dualathlon.random> (raw)
In-Reply-To: <20020326135703.B25375@redhat.com>

On Tue, Mar 26, 2002 at 01:57:03PM -0500, Benjamin LaHaise wrote:
> On Tue, Mar 26, 2002 at 05:42:36PM +0100, Andrea Arcangeli wrote:
> > However if the patch is needed it means the ->mmap also must do the
> > do_munmap stuff by hand internally, which is very ugly given we also did
> > our own do_munmap in a completly different region (the one requested by
> > the user).
> 
> At least my own code checks for that and fails if there is a mapping 
> already placed at the fixed address it needs to use.  If we're paranoid, 

Ok, so it's safe.

> we could BUG() on getting a vma back from the new find_vma_prepare call.

yes, it sounds a good idea to verify there's no other mapping in the way
of the relocation (until a better fix is implemented), it's a slow path
so we won't hurt performance.

> 
> > Our do_munmap should not happen if we place the mapping
> > elsewhere. If possible I would prefer to change those drivers to
> > advertise their enforced vm_start with a proper callback, the current
> > way is halfway broken still. BTW, which are those drivers, and why they
> > needs to enforce a certain vm_start (also despite MAP_FIXED that they
> > cannot check within the ->mmap callback)?
> 
> Video drivers, others that require specific alignment (4MB pages for 
> example).  Historically, the mmap call has been the hook for doing this, 
> hence the comment in do_mmap from davem.  Unless there's a really good 
> reason for changing the hook, I don't see doing so as providing much 
> benefit other than making source compatibility hard.

The good reason, is that currently we're literally corrupting the
userspace with the senseless do_munmap call in the add<->addr+len area
before the ->mmap lowlevel callback. And such an munmap is certainly not
required to maintain source and binary compatibility (otherwise it would
be insane in the first place :).

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

  reply	other threads:[~2002-03-26 19:15 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-26  4:00 [patch] mmap bug with drivers that adjust vm_start Benjamin LaHaise
2002-03-26  4:00 ` Benjamin LaHaise
2002-03-26  4:00 ` David S. Miller
2002-03-26  4:00   ` David S. Miller
2002-03-26 16:42 ` Andrea Arcangeli
2002-03-26 16:42   ` Andrea Arcangeli
2002-03-26 18:57   ` Benjamin LaHaise
2002-03-26 18:57     ` Benjamin LaHaise
2002-03-26 19:15     ` Andrea Arcangeli [this message]
2002-03-26 19:15       ` Andrea Arcangeli
2002-03-26 20:43       ` Benjamin LaHaise
2002-03-26 20:43         ` Benjamin LaHaise
2002-03-26 21:18         ` Andrea Arcangeli
2002-03-26 21:18           ` Andrea Arcangeli

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=20020326201502.J13052@dualathlon.random \
    --to=andrea@suse.de \
    --cc=bcrl@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=marcelo@conectiva.com.br \
    /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.