On Tue, Jan 14, 2020 at 12:29 PM Dmitry V. Levin<br>
<notifications@github.com> wrote:<br>
> On Tue, Jan 14, 2020 at 02:55:08AM -0800, arndb wrote:<br>
> > > sparc:<br>
> > > according to struct compat_ipc64_perm defined in<br>
> > > arch/sparc/include/asm/compat.h,<br>
> > > the type of uid is __compat_uid32_t aka u32,<br>
> > > but, according to struct ipc64_perm defined in<br>
> > > arch/sparc/include/uapi/asm/ipcbuf.h,<br>
> > > the type of uid is __kernel_uid_t which is defined to unsigned short on<br>
> > > sparc.<br>
> > ><br>
> > > I suppose the regression was introduced by commit<br>
> > > 83c86984bff2d793c91eb710af7857828b9ddb49 aka v2.6.29-rc1~501^2~6<br>
> > ><br>
> > > If my guess is correct, then the only working form of IPC_STAT on sparc32<br>
> > > since that commit is sparc64 in compat mode.<br>
> ><br>
> > Ok, so this would be a bug with what sysvipc on sparc32 does in the kernel,<br>
> > rather than a bug of the uapi headers not describing what it does, correct?<br>
><br>
> Not really, from strace testsuite perspective it looks like tracing of<br>
> 32-bit processes by 64-bit strace produces wrong results on sparc64 when<br>
> strace is built with uapi headers instead of glibc headers, and this<br>
> happens because arch/sparc/include/uapi/asm/ipcbuf.h does not describe<br>
> the same structure the sparc64 kernel works with in to_compat_ipc64_perm.<br>
><br>
> So I'd say it's a bug of arch/sparc/include/uapi/asm/ipcbuf.h not<br>
> describing what ipc/compat.c actually does.<br>
<br>
Fair enough. The header matches the behavior of the native kernel,<br>
but both the header and the kernel are wrong, you are just lucky<br>
that in compat mode the glibc headers describe what the kernel does.<br>
<br>
> > Adding the SPARC list and maintainer to Cc. Yes, I read it the same way.<br>
> > In particular, Sam back then wrote<br>
> ><br>
> > commit 83c86984bff2d793c91eb710af7857828b9ddb49<br>
> > Author: Sam Ravnborg <sam@ravnborg.org><br>
> > Date: Sun Jan 4 15:44:22 2009 -0800<br>
> ><br>
> > sparc: unify ipcbuf.h<br>
> ><br>
> > The ony difference is the size of the mode.<br>
> > sparc has extra padding to compensate for this.<br>
> ><br>
> > Signed-off-by: Sam Ravnborg <sam@ravnborg.org><br>
> > Signed-off-by: David S. Miller <davem@davemloft.net><br>
> ><br>
> > However, aside from mode, the other fields that were changed are<br>
> > 'uid', 'gid', 'cuid' and 'cgid'. It's been 11 years since that ABI change,<br>
> > so I wonder if anyone has started relying on the changed behavior<br>
> > in the meantime, or sparc32 users just don't use sysvipc.<br>
> ><br>
> > I checked glibc and uclibc-ng, and both use the pre-2009 version<br>
> > of the ABI. I also checked the leon-linux patches from<br>
> > https://www.gaisler.com/anonftp/linux/linux-2.6/kernel/ to see<br>
> > if they had already come across this, but there is no fix either.<br>
><br>
> ... this definitely means users of sparc32 kernel (if any) don't use<br>
> IPC_STAT since 2009.<br>
<br>
I can see that it's being tested for each glibc release,<br>
e.g. https://sourceware.org/glibc/wiki/Release/2.30#SPARC_.2832-bit.29<br>
and it's probably a release blocker, but I guess that this has also<br>
been done on compat mode since at least 2009, rather than<br>
on native 32-bit sparc hardware.<br>
<br>
       Arnd<br>


<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/strace/strace/issues/116?email_source=notifications&email_token=AAFX7DDLAEG4PQJGYYLWCNDQ5WPYHA5CNFSM4J63O5QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI4JNEY#issuecomment-574133907">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AAFX7DD4765H5RNW72FYS3TQ5WPYHANCNFSM4J63O5QA">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AAFX7DCVD26MCQL2MXUJJ2TQ5WPYHA5CNFSM4J63O5QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI4JNEY.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/strace/strace/issues/116?email_source=notifications\u0026email_token=AAFX7DDLAEG4PQJGYYLWCNDQ5WPYHA5CNFSM4J63O5QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI4JNEY#issuecomment-574133907",
"url": "https://github.com/strace/strace/issues/116?email_source=notifications\u0026email_token=AAFX7DDLAEG4PQJGYYLWCNDQ5WPYHA5CNFSM4J63O5QKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEI4JNEY#issuecomment-574133907",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>