Re: [patch] mmap bug with drivers that adjust vm_start

Andrea Arcangeli (andrea@suse.de)
Tue, 26 Mar 2002 17:42:36 +0100


On Mon, Mar 25, 2002 at 11:00:47PM -0500, Benjamin LaHaise wrote:
> Hello all,
>
> The patch below fixes a problem whereby a vma which has its vm_start
> address changed by the file's mmap operation can result in the vma
> being inserted into the wrong location within the vma tree. This
> results in page faults not being handled correctly leading to SEGVs,
> as well as various BUG()s hitting on exit of the mm. The fix is to
> recalculate the insertion point when we know the address has changed.
> Comments? Patch is against 2.4.19-pre4.

The patch is obviously safe.

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). 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)?

Andrea
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/