Messages in this thread | | | Date | Tue, 26 Apr 2011 16:55:19 +0800 | Subject | Re: [PATCH] proc: put check_mem_permission before __get_free_page in mem_read | From | Jovi Zhang <> |
| |
On Tue, Apr 26, 2011 at 11:56 AM, Hugh Dickins <hughd@google.com> wrote: > On Sun, 17 Apr 2011, bookjovi@gmail.com wrote: >> From: Jovi Zhang <bookjovi@gmail.com> >> >> It should be better if put check_mem_permission before __get_free_page >> in mem_read, to be same as function mem_write. >> >> Signed-off-by: Jovi Zhang <bookjovi@gmail.com> > > Sorry to be contrary, but I disagree with this. I'm all for consistency, > but is there a particular reason why you think the mem_write ordering is > right and mem_read wrong? > > My reason for preferring the current mem_read ordering is this: > > check_mem_permission gets a reference to the mm. If we __get_free_page > after check_mem_permission, imagine what happens if the system is out > of memory, and the mm we're looking at is selected for killing by the > OOM killer: while we wait in __get_free_page for more memory, no memory > is freed from the selected mm because it cannot reach exit_mmap while > we hold that reference. > > (I may be overstating the case: a little memory may be freed from the > exiting task's stack, and kswapd should still be able to pick some pages > off the mm. But nonetheless, we would do better to let this mm go.) >
Indeed, I missed that point. Thanks. -- 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/
| |