Re: Commit breaks strace: ARM: entry: allow ARM-private syscalls to be restarted

2013-10-04 Thread Arokux X
On Wed, Sep 18, 2013 at 11:50 AM, Will Deacon  wrote:
> On Wed, Sep 18, 2013 at 10:17:48AM +0100, Will Deacon wrote:
>> On Tue, Sep 17, 2013 at 10:57:49PM +0100, Jason Gunthorpe wrote:
>> > This happens with the latest git head for strace, as well as the 4.7
>> > release.
>> >
>> > Hopefully you can cook up a fix :)
>>
>> I'll take a look today, thanks.
>
> Ok, looks like the backwards branch to the syscall dispatching logic from
> the trace entry is busted. Can you try the patch below please?
>
> I might also take a look at unifying the function prototypes for arm_syscall
> and syscall_trace_enter, since it should help us remove some of the argument
> shuffling in the trace path.
>
> Will
>
> --->8
>
> diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
> index 74ad15d1..bc6bd96 100644
> --- a/arch/arm/kernel/entry-common.S
> +++ b/arch/arm/kernel/entry-common.S
> @@ -442,10 +442,10 @@ local_restart:
> ldrcc   pc, [tbl, scno, lsl #2] @ call sys_* routine
>
> add r1, sp, #S_OFF
> -   cmp scno, #(__ARM_NR_BASE - __NR_SYSCALL_BASE)
> +2: cmp scno, #(__ARM_NR_BASE - __NR_SYSCALL_BASE)
> eor r0, scno, #__NR_SYSCALL_BASE@ put OS number back
> bcs arm_syscall
> -2: mov why, #0 @ no longer a real syscall
> +   mov why, #0 @ no longer a real syscall
> b   sys_ni_syscall  @ not private func
>
>  #if defined(CONFIG_OABI_COMPAT) || !defined(CONFIG_AEABI)

Just stumbled upon the same issue. The patch seems to cure the problem. Thanks.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Commit breaks strace: ARM: entry: allow ARM-private syscalls to be restarted

2013-10-04 Thread Arokux X
On Wed, Sep 18, 2013 at 11:50 AM, Will Deacon will.dea...@arm.com wrote:
 On Wed, Sep 18, 2013 at 10:17:48AM +0100, Will Deacon wrote:
 On Tue, Sep 17, 2013 at 10:57:49PM +0100, Jason Gunthorpe wrote:
  This happens with the latest git head for strace, as well as the 4.7
  release.
 
  Hopefully you can cook up a fix :)

 I'll take a look today, thanks.

 Ok, looks like the backwards branch to the syscall dispatching logic from
 the trace entry is busted. Can you try the patch below please?

 I might also take a look at unifying the function prototypes for arm_syscall
 and syscall_trace_enter, since it should help us remove some of the argument
 shuffling in the trace path.

 Will

 ---8

 diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
 index 74ad15d1..bc6bd96 100644
 --- a/arch/arm/kernel/entry-common.S
 +++ b/arch/arm/kernel/entry-common.S
 @@ -442,10 +442,10 @@ local_restart:
 ldrcc   pc, [tbl, scno, lsl #2] @ call sys_* routine

 add r1, sp, #S_OFF
 -   cmp scno, #(__ARM_NR_BASE - __NR_SYSCALL_BASE)
 +2: cmp scno, #(__ARM_NR_BASE - __NR_SYSCALL_BASE)
 eor r0, scno, #__NR_SYSCALL_BASE@ put OS number back
 bcs arm_syscall
 -2: mov why, #0 @ no longer a real syscall
 +   mov why, #0 @ no longer a real syscall
 b   sys_ni_syscall  @ not private func

  #if defined(CONFIG_OABI_COMPAT) || !defined(CONFIG_AEABI)

Just stumbled upon the same issue. The patch seems to cure the problem. Thanks.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Commit breaks strace: ARM: entry: allow ARM-private syscalls to be restarted

2013-09-18 Thread Will Deacon
On Wed, Sep 18, 2013 at 10:17:48AM +0100, Will Deacon wrote:
> On Tue, Sep 17, 2013 at 10:57:49PM +0100, Jason Gunthorpe wrote:
> > This happens with the latest git head for strace, as well as the 4.7
> > release.
> > 
> > Hopefully you can cook up a fix :)
> 
> I'll take a look today, thanks.

Ok, looks like the backwards branch to the syscall dispatching logic from
the trace entry is busted. Can you try the patch below please?

I might also take a look at unifying the function prototypes for arm_syscall
and syscall_trace_enter, since it should help us remove some of the argument
shuffling in the trace path.

Will

--->8

diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 74ad15d1..bc6bd96 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -442,10 +442,10 @@ local_restart:
ldrcc   pc, [tbl, scno, lsl #2] @ call sys_* routine
 
add r1, sp, #S_OFF
-   cmp scno, #(__ARM_NR_BASE - __NR_SYSCALL_BASE)
+2: cmp scno, #(__ARM_NR_BASE - __NR_SYSCALL_BASE)
eor r0, scno, #__NR_SYSCALL_BASE@ put OS number back
bcs arm_syscall
-2: mov why, #0 @ no longer a real syscall
+   mov why, #0 @ no longer a real syscall
b   sys_ni_syscall  @ not private func
 
 #if defined(CONFIG_OABI_COMPAT) || !defined(CONFIG_AEABI)

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Commit breaks strace: ARM: entry: allow ARM-private syscalls to be restarted

2013-09-18 Thread Will Deacon
On Tue, Sep 17, 2013 at 10:57:49PM +0100, Jason Gunthorpe wrote:
> Hi Will,

Hi Jason,

> I was just testing v3.12-rc1 (on kirkwood) and noticed that strace is
> not working:

Thanks for the report!

> $ strace /bin/ls
> mmap2(0xb6f79000, 9552, PROT_READ|PROT_WRITE, 
> MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6f79000
> close(3)= 0
> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
> 0xb6fad000
> set_tls(0xb6fad4c0, 0xb6fadb98, 0xb6fb1050, 0xb6fad4c0, 0xb6fb1050) = -1 
> ENOSYS (Function not implemented)
> writev(2, [{"cannot set up thread-local stora"..., 36}, {"unknown error", 
> 13}, {"\n", 1}], 3cannot set up thread-local storage: unknown error
> ) = 50
> exit_group(127) = ?
> +++ exited with 127 +++
> 
> I determined that reverting your commit below makes strace work again.
> I've tested 3.10.12 and it is OK.

Hmm, so if you don't run with strace, does `/bin/ls' work as expected? From
the trace above, it seems that set_tls is failing rather than anything in
strace (unless of course, the trace is just plain wrong).

> This happens with the latest git head for strace, as well as the 4.7
> release.
> 
> Hopefully you can cook up a fix :)

I'll take a look today, thanks.

Will
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Commit breaks strace: ARM: entry: allow ARM-private syscalls to be restarted

2013-09-18 Thread Will Deacon
On Tue, Sep 17, 2013 at 10:57:49PM +0100, Jason Gunthorpe wrote:
 Hi Will,

Hi Jason,

 I was just testing v3.12-rc1 (on kirkwood) and noticed that strace is
 not working:

Thanks for the report!

 $ strace /bin/ls
 mmap2(0xb6f79000, 9552, PROT_READ|PROT_WRITE, 
 MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb6f79000
 close(3)= 0
 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 
 0xb6fad000
 set_tls(0xb6fad4c0, 0xb6fadb98, 0xb6fb1050, 0xb6fad4c0, 0xb6fb1050) = -1 
 ENOSYS (Function not implemented)
 writev(2, [{cannot set up thread-local stora..., 36}, {unknown error, 
 13}, {\n, 1}], 3cannot set up thread-local storage: unknown error
 ) = 50
 exit_group(127) = ?
 +++ exited with 127 +++
 
 I determined that reverting your commit below makes strace work again.
 I've tested 3.10.12 and it is OK.

Hmm, so if you don't run with strace, does `/bin/ls' work as expected? From
the trace above, it seems that set_tls is failing rather than anything in
strace (unless of course, the trace is just plain wrong).

 This happens with the latest git head for strace, as well as the 4.7
 release.
 
 Hopefully you can cook up a fix :)

I'll take a look today, thanks.

Will
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: Commit breaks strace: ARM: entry: allow ARM-private syscalls to be restarted

2013-09-18 Thread Will Deacon
On Wed, Sep 18, 2013 at 10:17:48AM +0100, Will Deacon wrote:
 On Tue, Sep 17, 2013 at 10:57:49PM +0100, Jason Gunthorpe wrote:
  This happens with the latest git head for strace, as well as the 4.7
  release.
  
  Hopefully you can cook up a fix :)
 
 I'll take a look today, thanks.

Ok, looks like the backwards branch to the syscall dispatching logic from
the trace entry is busted. Can you try the patch below please?

I might also take a look at unifying the function prototypes for arm_syscall
and syscall_trace_enter, since it should help us remove some of the argument
shuffling in the trace path.

Will

---8

diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 74ad15d1..bc6bd96 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -442,10 +442,10 @@ local_restart:
ldrcc   pc, [tbl, scno, lsl #2] @ call sys_* routine
 
add r1, sp, #S_OFF
-   cmp scno, #(__ARM_NR_BASE - __NR_SYSCALL_BASE)
+2: cmp scno, #(__ARM_NR_BASE - __NR_SYSCALL_BASE)
eor r0, scno, #__NR_SYSCALL_BASE@ put OS number back
bcs arm_syscall
-2: mov why, #0 @ no longer a real syscall
+   mov why, #0 @ no longer a real syscall
b   sys_ni_syscall  @ not private func
 
 #if defined(CONFIG_OABI_COMPAT) || !defined(CONFIG_AEABI)

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/