All of lore.kernel.org
 help / color / mirror / Atom feed
From: WANG Cong <xiyou.wangcong@gmail.com>
To: Al Viro <viro@ZenIV.linux.org.uk>
Cc: WANG Cong <xiyou.wangcong@gmail.com>,
	LKML <linux-kernel@vger.kernel.org>,
	Andrew Morton <akpm@osdl.org>, WANG Cong <wangcong@zeuux.org>
Subject: Re: [Patch 7/9] fs/exec.c: fix wrong return value of prepare_binprm()
Date: Mon, 12 May 2008 12:15:34 +0800	[thread overview]
Message-ID: <20080512041534.GG2572@hacking> (raw)
In-Reply-To: <20080512040122.GN13907@ZenIV.linux.org.uk>

On Mon, May 12, 2008 at 05:01:22AM +0100, Al Viro wrote:
>On Mon, May 12, 2008 at 11:56:43AM +0800, WANG Cong wrote:
>> On Sat, May 10, 2008 at 08:31:05PM +0100, Al Viro wrote:
>> >On Thu, May 08, 2008 at 09:52:32PM +0800, WANG Cong wrote:
>> >> All prepare_binprm()'s callers assume that prepare_binprm() fails
>> >> when it returns negative. However, prepare_binprm() most probably returns
>> >> the return value of kernel_read(), which may return positive on failure!
>> >> 
>> >> Thus this should be fixed.
>> >
>> >Since when does read return positive on failure?
>> 
>> When an EIO occurs, I think. For example,
>
>No.  On EIO it returns -EIO, TYVM...
>

Hmm, it should. Thanks for your correction.


>>         retval = kernel_read(interpreter, interp_elf_ex->e_phoff,
>>                              (char *)elf_phdata,size);
>>         error = -EIO;
>>         if (retval != size) {
>>                 if (retval < 0)
>>                         error = retval;
>>                 goto out_close;
>>         }
>
>Which is what we do on short read here.  FWIW, -EINVAL might be saner
>choice - it's "binary is corrupted", not "read had failed".

IMO, -EIO is fine, because -EINVAL means "Invalid argument", but
there's nothing wrong with arguments here, just some bad things occurred
on reading the binary.

And even if it is really "binary is corrupted", then -ENOEXEC is
better than -EINVAL, isn't it?

Anyway, kernel_read() may return postive when not success.

Thanks.

-- 
Hi, I'm a .signature virus, please copy/paste me to help me spread
all over the world.

  reply	other threads:[~2008-05-12  4:17 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-08 13:52 [Patch 0/9] Fix resource leaks for exec related stuffs WANG Cong
2008-05-08 13:52 ` [Patch 1/9] fs/exec.c: export free_arg_pages WANG Cong
2008-05-10 19:12   ` Al Viro
2008-05-12  3:59     ` WANG Cong
2008-05-08 13:52 ` [Patch 2/9] fs/exec.c: fix resource leaks and wrong goto's WANG Cong
2008-05-10 19:16   ` Al Viro
2008-05-08 13:52 ` [Patch 3/9] fs/compat.c: " WANG Cong
2008-05-10 19:21   ` Al Viro
2008-05-10 20:35     ` Al Viro
2008-05-12  3:46       ` WANG Cong
2008-05-12  4:05         ` Al Viro
2008-05-08 13:52 ` [Patch 4/9] fs/binfmt_script.c: fix resource leaks WANG Cong
2008-05-10 19:24   ` Al Viro
2008-05-08 13:52 ` [Patch 5/9] fs/binfmt_em86.c: " WANG Cong
2008-05-10 19:25   ` Al Viro
2008-05-12  3:53     ` WANG Cong
2008-05-08 13:52 ` [Patch 6/9] fs/binfmt_misc.c: " WANG Cong
2008-05-10 19:25   ` Al Viro
2008-05-08 13:52 ` [Patch 7/9] fs/exec.c: fix wrong return value of prepare_binprm() WANG Cong
2008-05-10 19:31   ` Al Viro
2008-05-12  3:56     ` WANG Cong
2008-05-12  4:01       ` Al Viro
2008-05-12  4:15         ` WANG Cong [this message]
2008-05-12  4:37           ` Al Viro
2008-05-12  4:52             ` WANG Cong
2008-05-08 13:52 ` [Patch 8/9] fs/binfmt_elf.c: fix wrong return values WANG Cong
2008-05-08 13:52 ` [Patch 9/9] fs/exec.c: fix a wrong goto path WANG Cong
2008-05-10 19:37   ` Al Viro
2008-05-12  3:51     ` WANG Cong
2008-05-12  3:58       ` Al Viro
2008-05-10 20:47 ` [Patch 0/9] Fix resource leaks for exec related stuffs Al Viro

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=20080512041534.GG2572@hacking \
    --to=xiyou.wangcong@gmail.com \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=viro@ZenIV.linux.org.uk \
    --cc=wangcong@zeuux.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.