2013-07-29 06:23:09

by Michal Simek

[permalink] [raw]

2013-07-29 06:41:21

by Rich Felker

[permalink] [raw]
Subject: Re: [microblaze-linux] [RESEND PATCH v2] microblaze: Fix clone syscall

On Mon, Jul 29, 2013 at 08:22:56AM +0200, Michal Simek wrote:
> Microblaze was assign to CLONE_BACKWARDS type where
> parent tid was passed via 3rd argument.
> Microblaze glibc is using 4th argument for it.
>
> Create new CLONE_BACKWARDS3 type where stack_size is passed
> via 3rd argument, parent thread id pointer via 4th,
> child thread id pointer via 5th and tls value as 6th
> argument
>
> Inconsistency was introduced by this patch:
> "microblaze: switch to generic fork/vfork/clone"
> (sha1: f3268edbe6fe0ce56e62c6d6b14640aeb04864b7)

I still don't think this is clear. I would suggest language like:

==
Fix inadvertent breakage in the clone syscall ABI for Microblaze
that was introduced in this patch:

"microblaze: switch to generic fork/vfork/clone"
(sha1: f3268edbe6fe0ce56e62c6d6b14640aeb04864b7)

The Microblaze syscall ABI for clone takes the parent tid address in
the 4th argument; the third argument slot is used for the stack size.
The incorrectly-used CLONE_BACKWARDS type assigned parent tid to the
3rd slot.

This commit restores the original ABI so that existing userspace libc
code will work correctly.
==

And maybe add something about which versions were affected by the
breakage.

Rich