From: Ralf Baechle <ralf@linux-mips.org>
To: David Daney <david.daney@cavium.com>
Cc: Yong Zhang <yong.zhang@windriver.com>,
linux-mips@linux-mips.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] MIPS: use 32-bit wrapper for compat_sys_futex
Date: Thu, 18 Aug 2011 21:19:11 +0100 [thread overview]
Message-ID: <20110818201911.GF22920@linux-mips.org> (raw)
In-Reply-To: <4E4BF7C0.80703@cavium.com>
On Wed, Aug 17, 2011 at 10:17:52AM -0700, David Daney wrote:
> >diff --git a/arch/mips/kernel/scall64-o32.S b/arch/mips/kernel/scall64-o32.S
> >index 46c4763..f48b18e 100644
> >--- a/arch/mips/kernel/scall64-o32.S
> >+++ b/arch/mips/kernel/scall64-o32.S
> >@@ -441,7 +441,7 @@ sys_call_table:
> > PTR sys_fremovexattr /* 4235 */
> > PTR sys_tkill
> > PTR sys_sendfile64
> >- PTR compat_sys_futex
> >+ PTR sys_32_futex
>
> This change is redundant, scall64-o32.S already does the right thing
> so additional zero extending is not needed and is just extra
> instructions to execute for no reason.
Compat_sys_futex is a syscall entry point and for some configurations
such as CONFIG_FTRACE_SYSCALLS SYSCALL_DEFINE*() will do additional work
beyond cleaning up the arguments. The 3 unnecessary shifts are the
overhead we just gotta live with.
> > PTR compat_sys_sched_setaffinity
> > PTR compat_sys_sched_getaffinity /* 4240 */
> > PTR compat_sys_io_setup
>
> But really I think this patch fixes things at the wrong level. Each
> architecture potentially needs a similar patch. What would happen if
> we did something like:
> +++ b/kernel/futex_compat.c
> @@ -180,9 +180,9 @@ err_unlock:
> return ret;
> }
>
> -asmlinkage long compat_sys_futex(u32 __user *uaddr, int op, u32 val,
> - struct compat_timespec __user *utime, u32 __user *uaddr2,
> - u32 val3)
> +SYSCALL_DEFINE6(compat_sys_futex, u32 __user *, uaddr, int , op, u32, val,
> + struct compat_timespec __user *, utime, u32 __user *, uaddr2,
> + u32, val3)
> {
> struct timespec ts;
> ktime_t t, *tp = NULL;
>
> Obviously the function name is wrong, but a varient of
> SYSCALL_DEFINE*() could be created so the proper function names are
> produced.
Right now none of the the generic compat_ functions is wrapped in
SYSCALL_DEFINE* because for some architectures a further wrapper function
is needed. It seems some architectures call compat_ calls directly
without SYSCALL_DEFINE* which with CONFIG_FTRACE_SYSCALLS is a bug ...
Ralf
next prev parent reply other threads:[~2011-08-18 20:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-17 1:54 [PATCH] MIPS: use 32-bit wrapper for compat_sys_futex Yong Zhang
2011-08-17 1:54 ` Yong Zhang
2011-08-17 12:43 ` Ralf Baechle
2011-08-17 17:17 ` David Daney
2011-08-18 2:32 ` Yong Zhang
2011-08-18 2:32 ` Yong Zhang
2011-08-18 16:23 ` David Daney
2011-08-19 1:56 ` Yong Zhang
2011-08-19 1:56 ` Yong Zhang
2011-08-18 2:44 ` Yong Zhang
2011-08-18 2:44 ` Yong Zhang
2011-08-18 20:19 ` Ralf Baechle [this message]
2011-08-19 3:49 ` How to trace compat syscalls? [Was Re: [PATCH] MIPS: use 32-bit wrapper for compat_sys_futex] Yong Zhang
2011-08-19 3:49 ` Yong Zhang
2011-08-19 4:15 ` Yong Zhang
2011-08-19 4:15 ` Yong Zhang
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=20110818201911.GF22920@linux-mips.org \
--to=ralf@linux-mips.org \
--cc=david.daney@cavium.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=yong.zhang@windriver.com \
/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.