Re: [PATCH] module: Remove module size limit
From: Josh Boyer <hidden>
Date: 2012-01-31 14:07:09
Also in:
lkml
On Mon, Jan 30, 2012 at 11:07 PM, Sasha Levin [off-list ref] wrote:
quoted hunk ↗ jump to hunk
Module size was limited to 64MB, this was legacy limitation due to vmalloc() which was removed a while ago. Limiting module size to 64MB is both pointless and affects real world use cases. Cc: Rusty Russell <redacted> Cc: Tim Abbott <redacted> Cc: stable@vger.kernel.org Signed-off-by: Sasha Levin <redacted> --- kernel/module.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)diff --git a/kernel/module.c b/kernel/module.c index 2c93276..3d56b6f 100644 --- a/kernel/module.c +++ b/kernel/module.c@@ -2380,8 +2380,7 @@ static int copy_and_check(struct load_info *info,return -ENOEXEC; /* Suck in entire file: we'll want most of it. */ - /* vmalloc barfs on "unusual" numbers. Check here */ - if (len > 64 * 1024 * 1024 || (hdr = vmalloc(len)) == NULL) + if ((hdr = vmalloc(len)) == NULL) return -ENOMEM; if (copy_from_user(hdr, umod, len) != 0) {
I could be missing something somewhere, but this is the only upper bounds check that is in place on the overall module size. If we remove this without putting some other kind of sanity check, wouldn't it be possible for someone to exhaust the entire vmalloc space for the kernel by loading a bloated module? I would think we still want to have some form of upper bounds check to prevent that, but maybe I'm paranoid. As an aside, which real world use cases are blocked by having a 64MB limit? That is already HUGE. josh