linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Vivek Goyal <vgoyal@redhat.com>
To: WANG Chao <chaowang@redhat.com>
Cc: Dave Young <dyoung@redhat.com>,
	mjg59@srcf.ucam.org, bhe@redhat.com, jkosina@suse.cz,
	greg@kroah.com, kexec@lists.infradead.org,
	linux-kernel@vger.kernel.org, bp@alien8.de,
	ebiederm@xmission.com, hpa@zytor.com, akpm@linux-foundation.org
Subject: Re: [PATCH 07/13] kexec: Implementation of new syscall kexec_file_load
Date: Mon, 9 Jun 2014 11:41:37 -0400	[thread overview]
Message-ID: <20140609154137.GD22049@redhat.com> (raw)
In-Reply-To: <20140609053538.GA2874@dhcp-17-89.nay.redhat.com>

On Mon, Jun 09, 2014 at 01:35:38PM +0800, WANG Chao wrote:

[..]
> > > What's the upper length of vzalloc(). I think if it is too big to alloc,
> > > then vzalloc() should return me an error?
> 
> When allocating too large, eg. vzalloc(-1), kernel spits:
> 
> [  457.407579] vmalloc: allocation failure: 18446744073709551606 bytes
> [  457.413854] kexec: page allocation failure: order:0, mode:0x80d2
> [  457.419853] CPU: 3 PID: 2058 Comm: kexec Not tainted
> 3.15.0-rc8-00096-g3dc85e8 #10
> [  457.427408] Hardware name: Dell Inc. OptiPlex 760
> /0M860N, BIOS A12 05/23/2011
> [  457.435999]  ffffffff81a2f678 ffff8800bfb03db0 ffffffff816944fd
> 00000000000080d2
> [  457.443422]  ffff8800bfb03e38 ffffffff8118a31a ffffffff81a2f678
> ffff8800bfb03dd0
> [  457.450851]  ffff880100000018 ffff8800bfb03e48 ffff8800bfb03de8
> ffff8800bfb03e10
> [  457.458278] Call Trace:
> [  457.460731]  [<ffffffff816944fd>] dump_stack+0x45/0x56
> [  457.465865]  [<ffffffff8118a31a>] warn_alloc_failed+0xda/0x140
> [  457.471693]  [<ffffffff811f56d1>] ? kernel_read+0x41/0x60
> [  457.477085]  [<ffffffff811bf466>] __vmalloc_node_range+0x1b6/0x270
> [  457.483256]  [<ffffffff811bf5bb>] vzalloc+0x4b/0x50
> [  457.488132]  [<ffffffff81121815>] ?
> kimage_file_prepare_segments.part.10+0x85/0x140
> [  457.495774]  [<ffffffff81121815>]
> kimage_file_prepare_segments.part.10+0x85/0x140
> [  457.503244]  [<ffffffff8112301a>] SyS_kexec_file_load+0x38a/0x690
> [  457.509330]  [<ffffffff816a2f29>] system_call_fastpath+0x16/0x1b
> [..]
> 
> I think it's better to do some sane check to prevent such warning when
> taking arbitrary argument from user space.

Hmm.., I did not know that memory allocation failures had to dump stack
trace.

Anyway, I think I can implement another function which calls into image
loader and query the maximum command length size they will support and
use that number as uppper limit. It is little more code and one extra
call. Hopefully it is worth it.

> 
 > 
> > function __vmalloc_node_range:
> >         if (!size || (size >> PAGE_SHIFT) > totalram_pages)
> >                 goto fail;
> > 
> > So I think only checking cmdline_len == 0 is enough.
> > 
> > For the upper length shouldn't it be stripped to COMMAND_LINE_SIZE?
> 
> Yes, COMMAND_LINE_SIZE

IIUC, COMMAND_LINE_SIZE gives max limits of running kernel and it does
not tell us anything about command line size supported by kernel being
loaded.

Thanks
Vivek

  reply	other threads:[~2014-06-09 15:42 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-03 13:06 [RFC PATCH 00/13][V3] kexec: A new system call to allow in kernel loading Vivek Goyal
2014-06-03 13:06 ` [PATCH 01/13] bin2c: Move bin2c in scripts/basic Vivek Goyal
2014-06-03 16:01   ` Borislav Petkov
2014-06-03 17:13     ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 02/13] kernel: Build bin2c based on config option CONFIG_BUILD_BIN2C Vivek Goyal
2014-06-04  9:13   ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 03/13] kexec: Move segment verification code in a separate function Vivek Goyal
2014-06-04  9:32   ` Borislav Petkov
2014-06-04 18:47     ` Vivek Goyal
2014-06-04 20:30       ` Borislav Petkov
2014-06-05 14:05         ` Vivek Goyal
2014-06-05 14:07           ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 04/13] resource: Provide new functions to walk through resources Vivek Goyal
2014-06-04 10:24   ` Borislav Petkov
2014-06-05 13:58     ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 05/13] kexec: Make kexec_segment user buffer pointer a union Vivek Goyal
2014-06-04 10:34   ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 06/13] kexec: New syscall kexec_file_load() declaration Vivek Goyal
2014-06-04 15:18   ` Borislav Petkov
2014-06-05  9:56   ` WANG Chao
2014-06-05 15:16     ` Vivek Goyal
2014-06-05 15:22       ` Vivek Goyal
2014-06-06  6:34         ` WANG Chao
2014-06-03 13:06 ` [PATCH 07/13] kexec: Implementation of new syscall kexec_file_load Vivek Goyal
2014-06-05 11:15   ` Borislav Petkov
2014-06-05 20:17     ` Vivek Goyal
2014-06-06  2:11       ` Borislav Petkov
2014-06-06 18:02         ` Vivek Goyal
2014-06-11 14:13           ` Borislav Petkov
2014-06-11 17:04             ` Vivek Goyal
2014-06-06  6:56   ` WANG Chao
2014-06-06 18:19     ` Vivek Goyal
2014-06-09  2:11       ` Dave Young
2014-06-09  5:35         ` WANG Chao
2014-06-09 15:41           ` Vivek Goyal [this message]
2014-06-13  7:50             ` Borislav Petkov
2014-06-13  8:00               ` WANG Chao
2014-06-13  8:10                 ` Borislav Petkov
2014-06-13  8:24                   ` WANG Chao
2014-06-13  8:30                     ` Borislav Petkov
2014-06-13 12:49                 ` Vivek Goyal
2014-06-13 12:46               ` Vivek Goyal
2014-06-13 15:36                 ` Borislav Petkov
2014-06-16 17:38                   ` Vivek Goyal
2014-06-16 20:05                     ` Borislav Petkov
2014-06-16 20:53                       ` Vivek Goyal
2014-06-16 21:09                         ` Borislav Petkov
2014-06-16 21:25                           ` H. Peter Anvin
2014-06-16 21:43                             ` Vivek Goyal
2014-06-16 22:10                               ` Borislav Petkov
2014-06-16 22:49                               ` H. Peter Anvin
2014-06-09 15:30         ` Vivek Goyal
2014-06-03 13:06 ` [PATCH 08/13] purgatory/sha256: Provide implementation of sha256 in purgaotory context Vivek Goyal
2014-06-03 13:06 ` [PATCH 09/13] purgatory: Core purgatory functionality Vivek Goyal
2014-06-05 20:05   ` Borislav Petkov
2014-06-06 19:51     ` Vivek Goyal
2014-06-13 10:17       ` Borislav Petkov
2014-06-16 17:25         ` Vivek Goyal
2014-06-16 20:10           ` Borislav Petkov
2014-06-03 13:06 ` [PATCH 10/13] kexec: Load and Relocate purgatory at kernel load time Vivek Goyal
2014-06-10 16:31   ` Borislav Petkov
2014-06-11 19:24     ` Vivek Goyal
2014-06-13 16:14       ` Borislav Petkov
2014-06-03 13:07 ` [PATCH 11/13] kexec-bzImage: Support for loading bzImage using 64bit entry Vivek Goyal
2014-06-15 16:35   ` Borislav Petkov
2014-06-15 16:56     ` H. Peter Anvin
2014-06-16 20:06     ` Vivek Goyal
2014-06-16 20:57       ` Borislav Petkov
2014-06-16 21:15         ` Vivek Goyal
2014-06-16 21:27           ` Borislav Petkov
2014-06-16 21:45             ` Vivek Goyal
2014-06-24 17:31     ` Vivek Goyal
2014-06-24 18:23       ` Borislav Petkov
2014-06-03 13:07 ` [PATCH 12/13] kexec: Support for Kexec on panic using new system call Vivek Goyal
2014-06-17 21:43   ` Borislav Petkov
2014-06-18 14:20     ` Vivek Goyal
2014-06-03 13:07 ` [PATCH 13/13] kexec: Support kexec/kdump on EFI systems Vivek Goyal
2014-06-18 15:43   ` Borislav Petkov
2014-06-18 16:06   ` Borislav Petkov
2014-06-18 17:39     ` Vivek Goyal
2014-06-03 13:12 ` [RFC PATCH 00/13][V3] kexec: A new system call to allow in kernel loading Vivek Goyal
2014-06-04  9:22   ` WANG Chao
2014-06-04 17:50     ` Vivek Goyal
2014-06-04 19:39       ` Michael Kerrisk
2014-06-05 14:04         ` Vivek Goyal
2014-06-06  5:45           ` Michael Kerrisk (man-pages)
2014-06-06 18:04             ` Vivek Goyal
2014-06-05  8:31   ` Dave Young
2014-06-05 15:01     ` Vivek Goyal
2014-06-06  7:37       ` Dave Young
2014-06-06 20:04         ` Vivek Goyal
2014-06-09  1:57           ` Dave Young
2014-06-06 20:37         ` H. Peter Anvin
2014-06-06 20:58           ` Matt Fleming
2014-06-06 21:00             ` H. Peter Anvin
2014-06-06 21:02               ` Matt Fleming
2014-06-12  5:42 ` Dave Young
2014-06-12 12:36   ` Vivek Goyal
2014-06-17 14:24   ` Vivek Goyal
2014-06-18  1:45     ` Dave Young
2014-06-18  1:52       ` Dave Young
2014-06-18 12:40         ` Vivek Goyal
2014-06-16 21:13 ` Borislav Petkov
2014-06-17 13:24   ` Vivek Goyal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140609154137.GD22049@redhat.com \
    --to=vgoyal@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=bhe@redhat.com \
    --cc=bp@alien8.de \
    --cc=chaowang@redhat.com \
    --cc=dyoung@redhat.com \
    --cc=ebiederm@xmission.com \
    --cc=greg@kroah.com \
    --cc=hpa@zytor.com \
    --cc=jkosina@suse.cz \
    --cc=kexec@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mjg59@srcf.ucam.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).