Messages in this thread | ![/](/images/icornerl.gif) | | Date | Mon, 1 Dec 2008 15:09:47 -0800 | From | Andrew Morton <> | Subject | Re: + make-get_user_pages-interruptible.patch added to -mm tree |
| |
On Mon, 1 Dec 2008 15:00:14 -0800 Ying Han <yinghan@google.com> wrote:
> On Thu, Nov 27, 2008 at 12:04 PM, Oleg Nesterov <oleg@redhat.com> wrote: > > Ying Han wrote: > >> > >> -static int sigkill_pending(struct task_struct *tsk) > >> +int sigkill_pending(struct task_struct *tsk) > >> { > >> return sigismember(&tsk->pending.signal, SIGKILL) || > >> sigismember(&tsk->signal->shared_pending.signal, SIGKILL); > >> diff -puN mm/memory.c~make-get_user_pages-interruptible mm/memory.c > >> --- a/mm/memory.c~make-get_user_pages-interruptible > >> +++ a/mm/memory.c > >> @@ -1219,12 +1219,12 @@ int __get_user_pages(struct task_struct > >> struct page *page; > >> > >> /* > >> - * If tsk is ooming, cut off its access to large memory > >> - * allocations. It has a pending SIGKILL, but it can't > >> - * be processed until returning to user space. > >> + * If we have a pending SIGKILL, don't keep > >> + * allocating memory. > >> */ > >> - if (unlikely(test_tsk_thread_flag(tsk, TIF_MEMDIE))) > >> - return i ? i : -ENOMEM; > >> + if (unlikely(sigkill_pending(current) || > >> + sigkill_pending(tsk))) > > > > Please do not export/use sigkill_pending(). It is "private" for ptrace_stop() > > (and actually should die imho). > > > > We have fatal_signal_pending() for that. > > > > Oleg. > >
(top-posting repaired..)
> Thanks Oleg, i looked at the code again and this is a reasonable > change. I will make the change on the patch. > Andrew, > should i make a patch based on current change or make the same > patch as [V6]?
I don't mind either way. I guess a fresh new patch would simplify review for everyone.
Note that fatal_signal_pending() is not an exact replacement for sigkill_pending() - fatal_signal_pending() doesn't test the shared pending signals.
| ![\](/images/icornerr.gif) |