From: Vivek Goyal <vgoyal@redhat.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: mjg59@srcf.ucam.org, bhe@redhat.com, greg@kroah.com,
kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
bp@alien8.de, ebiederm@xmission.com, hpa@zytor.com,
dyoung@redhat.com, chaowang@redhat.com
Subject: Re: [PATCH 09/15] kexec: Implementation of new syscall kexec_file_load
Date: Tue, 1 Jul 2014 16:25:40 -0400 [thread overview]
Message-ID: <20140701202540.GC19352@redhat.com> (raw)
In-Reply-To: <20140627163141.GE13337@redhat.com>
On Fri, Jun 27, 2014 at 12:31:41PM -0400, Vivek Goyal wrote:
> On Thu, Jun 26, 2014 at 01:58:26PM -0700, Andrew Morton wrote:
>
> [..]
> > > + while (pos < stat.size) {
> > > + bytes = kernel_read(f.file, pos, (char *)(*buf) + pos,
> > > + stat.size - pos);
> > > + if (bytes < 0) {
> > > + vfree(*buf);
> > > + ret = bytes;
> > > + goto out;
> > > + }
> > > +
> > > + if (bytes == 0)
> > > + break;
> >
> > Here we can get a short read: (pos < stat.size). Seems to me that it
> > is risky to return this result to the caller as if all is well.
>
> Hi Andrew,
>
> That's a good point. Please find attached the patch which fixes both
> the issues.
>
> Thanks
> Vivek
>
>
>
Hi Andrew,
Based on your feedback, I wrote following patch. Does it look good to
you. If yes, can you please include this one too. Do let me know if you
want me to post it separately.
Thanks
Vivek
> Subject: kexec: Return error if file bytes are less then file size
>
> If number of bytes read from file are not same as file size, return error.
>
> Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
> ---
> kernel/kexec.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> Index: linux-2.6/kernel/kexec.c
> ===================================================================
> --- linux-2.6.orig/kernel/kexec.c 2014-06-27 09:55:41.826755422 -0400
> +++ linux-2.6/kernel/kexec.c 2014-06-27 10:04:23.409024171 -0400
> @@ -343,7 +343,7 @@ out_free_image:
> static int copy_file_from_fd(int fd, void **buf, unsigned long *buf_len)
> {
> struct fd f = fdget(fd);
> - int ret = 0;
> + int ret;
> struct kstat stat;
> loff_t pos;
> ssize_t bytes = 0;
> @@ -387,6 +387,12 @@ static int copy_file_from_fd(int fd, voi
> pos += bytes;
> }
>
> + if (pos != stat.size) {
> + ret = -EBADF;
> + vfree(*buf);
> + goto out;
> + }
> +
> *buf_len = pos;
> out:
> fdput(f);
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2014-07-01 20:26 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-26 20:33 [PATCH 00/15][V4] kexec: A new system call to allow in kernel loading Vivek Goyal
2014-06-26 20:33 ` [PATCH 01/15] bin2c: Move bin2c in scripts/basic Vivek Goyal
2014-06-26 20:33 ` [PATCH 02/15] kernel: Build bin2c based on config option CONFIG_BUILD_BIN2C Vivek Goyal
2014-06-26 20:33 ` [PATCH 03/15] kexec: rename unusebale_pages to unusable_pages Vivek Goyal
2014-06-26 20:33 ` [PATCH 04/15] kexec: Move segment verification code in a separate function Vivek Goyal
2014-06-26 20:33 ` [PATCH 05/15] kexec: Use common function for kimage_normal_alloc() and kimage_crash_alloc() Vivek Goyal
2014-06-26 20:33 ` [PATCH 06/15] resource: Provide new functions to walk through resources Vivek Goyal
2014-06-26 20:33 ` [PATCH 07/15] kexec: Make kexec_segment user buffer pointer a union Vivek Goyal
2014-06-26 20:33 ` [PATCH 08/15] kexec: New syscall kexec_file_load() declaration Vivek Goyal
2014-06-26 20:43 ` Vivek Goyal
2014-06-26 21:03 ` Andy Lutomirski
2014-06-27 11:50 ` Vivek Goyal
2014-06-27 12:20 ` Michael Kerrisk (man-pages)
2014-06-26 20:33 ` [PATCH 09/15] kexec: Implementation of new syscall kexec_file_load Vivek Goyal
2014-06-26 20:58 ` Andrew Morton
2014-06-27 16:31 ` Vivek Goyal
2014-07-01 20:25 ` Vivek Goyal [this message]
2014-06-26 20:33 ` [PATCH 10/15] purgatory/sha256: Provide implementation of sha256 in purgaotory context Vivek Goyal
2014-06-26 20:33 ` [PATCH 11/15] purgatory: Core purgatory functionality Vivek Goyal
2014-08-11 17:40 ` Shaun Ruffell
2014-08-11 17:51 ` H. Peter Anvin
2014-08-11 18:02 ` Vivek Goyal
2014-08-11 18:08 ` H. Peter Anvin
2014-08-11 18:15 ` Vivek Goyal
2014-08-11 20:23 ` Vivek Goyal
2014-06-26 20:33 ` [PATCH 12/15] kexec: Load and Relocate purgatory at kernel load time Vivek Goyal
2014-06-26 20:33 ` [PATCH 13/15] kexec-bzImage64: Support for loading bzImage using 64bit entry Vivek Goyal
2014-06-26 20:33 ` [PATCH 14/15] kexec: Support for kexec on panic using new system call Vivek Goyal
2014-06-26 20:33 ` [PATCH 15/15] kexec: Support kexec/kdump on EFI systems Vivek Goyal
2014-07-01 19:46 ` Matt Fleming
2014-07-01 20:14 ` Andrew Morton
2014-07-01 20:21 ` Vivek Goyal
2014-07-01 21:23 ` Matt Fleming
2014-07-01 20:09 ` [PATCH 17/15] kexec-bzimage: Change EFI helper function names Vivek Goyal
2014-06-26 20:39 ` [PATCH 00/15][V4] kexec: A new system call to allow in kernel loading Vivek Goyal
2014-06-26 20:58 ` Andrew Morton
2014-06-26 21:21 ` Borislav Petkov
2014-06-27 11:33 ` Vivek Goyal
2014-06-27 16:34 ` [PATCH 16/15] kexec: Fix freeing up for image loader data loading 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=20140701202540.GC19352@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=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