From: Oleg Nesterov <oleg@redhat.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Andy Lutomirski <luto@kernel.org>,
Denys Vlasenko <dvlasenk@redhat.com>,
"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
Jan Kratochvil <jan.kratochvil@redhat.com>,
Pedro Alves <palves@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
the arch/x86 maintainers <x86@kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: syscall_get_error() && TS_ checks
Date: Wed, 29 Mar 2017 18:55:54 +0200 [thread overview]
Message-ID: <20170329165554.GA24250@redhat.com> (raw)
In-Reply-To: <CA+55aFy1Dayhmw0r8syRPBJo+10EOfPmeCTTTxzcLiQRrG69jg@mail.gmail.com>
On 03/29, Linus Torvalds wrote:
>
> On Wed, Mar 29, 2017 at 9:33 AM, Oleg Nesterov <oleg@redhat.com> wrote:
> >
> > Firstly, why do we need the IS_ERR_VALUE() check? This is only used by
> > do_signal/handle_signal, we do not care if it returns non-zero as long
> > as the value can't be confused with -ERESTART.* codes.
>
> There are system calls that can return "negative" values that aren't errors.
>
> Notably mmap() can return a valid pointer with the high bit set.
>
> So syscall_get_error() should return 0 for not just positive return
> values, but for those kinds of negative non-error values.
Once again, it is only used in arch/x86/kernel/signal.c by do_signal() and
handle_signal(). We do not care if mmap() returns a valid pointer with the
high bit set, regs-ax can't be confused with -ERESTART code.
> > And why do we need the TS_ checks?
>
> Those may be bogus.
>
> > So why we can't simply change putreg32() to always sign-extend regs->ax
> > regs->orig_ax and just do
> >
> > static inline long syscall_get_error(struct task_struct *task,
> > struct pt_regs *regs)
> > {
> > return regs-ax;
> > }
>
> That would be *complete* garbage. Lots of system calls return positive
> values that sure as hell aren't errors.
See above. And please note that I actually suggest to kill this helper and
just use syscall_get_return_value() in arch/x86/kernel/signal.c.
Oleg.
next prev parent reply other threads:[~2017-03-29 16:56 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-28 14:54 [PATCH 0/1] get_nr_restart_syscall() should return __NR_ia32_restart_syscall if __USER32_CS Oleg Nesterov
2017-03-28 14:54 ` [PATCH 1/1] " Oleg Nesterov
2017-03-28 15:03 ` Andy Lutomirski
2017-03-28 16:27 ` Oleg Nesterov
2017-03-28 17:10 ` Andy Lutomirski
2017-03-29 15:05 ` Oleg Nesterov
2017-03-29 16:59 ` Andy Lutomirski
2017-03-30 15:28 ` Oleg Nesterov
2017-03-30 18:36 ` Andy Lutomirski
2017-03-29 16:33 ` syscall_get_error() && TS_ checks Oleg Nesterov
2017-03-29 16:45 ` Linus Torvalds
2017-03-29 16:55 ` Oleg Nesterov [this message]
2017-03-29 16:59 ` Linus Torvalds
2017-03-29 17:04 ` Oleg Nesterov
2017-03-29 17:16 ` Linus Torvalds
2017-03-29 18:50 ` Oleg Nesterov
2017-03-29 18:56 ` Linus Torvalds
2017-03-30 13:51 ` Oleg Nesterov
2017-03-30 15:49 ` Oleg Nesterov
2017-03-30 17:46 ` Linus Torvalds
2017-03-30 18:23 ` Andy Lutomirski
2017-03-30 18:35 ` Linus Torvalds
2017-03-30 18:59 ` Andy Lutomirski
2017-03-30 19:11 ` Linus Torvalds
2017-03-30 19:21 ` Andy Lutomirski
2017-03-30 19:29 ` Linus Torvalds
2017-03-29 16:56 ` Andy Lutomirski
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=20170329165554.GA24250@redhat.com \
--to=oleg@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=dvlasenk@redhat.com \
--cc=hpa@zytor.com \
--cc=jan.kratochvil@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=mingo@redhat.com \
--cc=palves@redhat.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.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.