The setgroup03 test also fails:
setgroups03 1 FAIL : setgroups() fails, Size is > NGROUPS, errno=1,
Is this a kernel failure or a LTP failure ?
The kernel do the following check in sys_setgroups:
if ((unsigned) gidsetsize > NGROUPS)
If I changes the kernel, so it does the size check first, then the test passes.
But one could also changes the LTP, so it makes sure that one is super user
when making the size check test.
So my question is, should this be fixed in the kernel or in LTP ?
Robert Williamson wrote:
> We actually try to stick to the Single Unix Specification whenever
> possible. I agree that the test should handle the SIGSEGV call. We
> actually have had other tests with the same scenario and have fixed them.
> These tests were ported from OS's with strict guidelines on what to expect
> that matched the manpages....this is obviously not the case with Linux.
> We'll take a look at it and hopefully have a fixed version by the July
> release...if not a patch will be supplied on the LTP mailing list
> - Robbie
> Robert V. Williamson <email@example.com>
> Linux Test Project
> IBM Linux Technology Center
> Phone: (512) 838-9295 T/L: 638-9295
> Johannes Stezenbach
> <firstname.lastname@example.org> To: "Maciej W.
> Rozycki" <email@example.com>
> Sent by: cc: Carsten
> Langgaard <firstname.lastname@example.org>, Ralf Baechle
> email@example.com <firstname.lastname@example.org>,
> Subject: [LTP] Re:
> LTP testing
> 06/25/2002 09:28 AM
> On Tue, Jun 25, 2002 at 03:53:25PM +0200, Maciej W. Rozycki wrote:
> > On Tue, 25 Jun 2002, Carsten Langgaard wrote:
> > > The next LTP failure line is:
> > > pipe05 1 BROK : Unexpected signal 11 received.
> > >
> > > For this one I haven't got a fix, because the failure is due to the way
> > > the pipe syscall is implemented for MIPS (so we need a fix in both the
> > > kernel and glibc).
> > >
> > > The glibc code look like this
> > > SYSCALL__ (pipe, 1)
> > > /* Plop in the two descriptors. */
> > > sw v0, 0(a0)
> > > sw v1, 4(a0)
> > >
> > > /* Go out with a clean status. */
> > > move v0, zero
> > > j ra
> > > .end __pipe
> > >
> > > The problem is that the code is called with $a0 = 0. So the 'sw v0,
> > > 0(a0)' after the syscall generates a segmentation fault.
> > The test is broken and it's what should be fixed, instead -- several
> > Linux platforms do it this way, e.g. Alpha and IA-64. A SIGSEGV is a
> > valid response for an invalid address. Remember you test pipe(3) and not
> > pipe(2).
> The question is what API spec is relevant for Linux. My pipe(2) man page
> says (there is no pipe(3) man page):
> int pipe(int filedes);
> EFAULT filedes is not valid.
> whereas The Single UNIX ® Specification, Version 2
> implies the SIGSEGV is OK.
> Maybe the LTP folks can shed a light on this.
> Sponsored by:
> ThinkGeek at http://www.ThinkGeek.com/
> Ltp-list mailing list
_ _ ____ ___ Carsten Langgaard Mailto:email@example.com
|\ /|||___)(___ MIPS Denmark Direct: +45 4486 5527
| \/ ||| ____) Lautrupvang 4B Switch: +45 4486 5555
TECHNOLOGIES 2750 Ballerup Fax...: +45 4486 5556