Re: current->mm == NULL in security_vm_enough_memory().

From: hooanon05
Date: Thu Mar 26 2009 - 00:28:24 EST



James Morris:
> On Thu, 26 Mar 2009, Tetsuo Handa wrote:
>
> > [ 28.765817] ------------[ cut here ]------------
> > [ 28.768916] WARNING: at security/security.c:217 security_vm_enough_memory+0xa0/0xb0()
> > [ 28.772484] Hardware name: VMware Virtual Platform
> > [ 28.774099] Modules linked in: pcnet32 crc32
> > [ 28.776920] Pid: 3286, comm: khelper Not tainted 2.6.29-next-20090324-dirty #3
> > [ 28.780317] Call Trace:
> > [ 28.781323] [<c0159200>] ? have_callable_console+0x30/0x50
> > [ 28.784171] [<c0158497>] warn_slowpath+0x97/0xf0
> > [ 28.785739] [<c0190f7c>] ? validate_chain+0x3fc/0x540
> > [ 28.788402] [<c0190f7c>] ? validate_chain+0x3fc/0x540
> > [ 28.790103] [<c0192dfc>] ? __lock_acquire+0x29c/0x8a0
> > [ 28.792809] [<c0194859>] ? __lock_acquired+0x109/0x1c0
> > [ 28.794539] [<c0338ea0>] security_vm_enough_memory+0xa0/0xb0
> > [ 28.797391] [<c0202117>] acct_stack_growth+0xd7/0x160
> > [ 28.798842] [<c02022b9>] expand_downwards+0x119/0x150
> > [ 28.801709] [<c020230d>] expand_stack+0xd/0x10
:::
> > May I ignore this warning?
>
> khelper is a kernel thread, so it should not have an ->mm, but I wonder
> why this hasn't shown up before. Odd...

The patch was merged in 2.6.28. See this url in detail.
http://marc.info/?t=122460314500001&r=1&w=2
Subject: __vm_enough_memory(), OVERCOMMIT_NEVER, current->mm, kernel thread

With this discussion, a new function security_vm_enough_memory_kern()
was introduced. All kernel thread should call this new one instead of
security_vm_enough_memory(). The added WARN_ON() worked exactly as Alan
Cox expected.
But I am not sure this is the case. When expand_stack() is called in the
user context, to call ..._kern() may be a bad idea.


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