Re: [patch] mmap bug with drivers that adjust vm_start
From: Andrea Arcangeli <hidden>
Date: 2002-03-26 16:43:38
Also in:
lkml
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, 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/