On Wed, Aug 4, 2010 at 4:52 PM, Sukadev Bhattiprolu
<[email protected]> wrote:
>
> pidns31: mq_open() fails with EACCESS.
>
> pidns31 test case fails with EACCESS - due to the leading '/' in
> mqname. See comments in the patch below for details.
>
> Signed-off-by: Sukadev Bhattiprolu <[email protected]>
> ---
> Index: testcases/kernel/containers/pidns/pidns31.c
> ===================================================================
> RCS file: /cvsroot/ltp/ltp/testcases/kernel/containers/pidns/pidns31.c,v
> retrieving revision 1.6
> diff -u -p -r1.6 pidns31.c
> --- testcases/kernel/containers/pidns/pidns31.c 14 Nov 2009 23:58:26 -0000    
>   1.6
> +++ testcases/kernel/containers/pidns/pidns31.c 4 Aug 2010 23:24:54 -0000
> @@ -61,7 +61,14 @@
>  char *TCID = "pidns31";
>  int TST_TOTAL = 1;
>
> -char *mqname = "/mq1";
> +
> +/*
> + * NOTE: The mq_open() interface in glibc requires mqname to start with a '/'
> + *      and the glibc call skips the leading '/' when invoking the system
> + *      call. Since we bypass the glibc mq_open() (and use syscall()) we
> + *      define mqname without the leading '/'.
> + */
> +char *mqname = "mq1";
>  int result = TFAIL;
>
>  int errno;
> @@ -264,6 +271,7 @@ int main(int argc, char *argv[])
>        }
>
>        syscall(__NR_mq_unlink, mqname);
> +
>        mqd = syscall(__NR_mq_open, mqname, O_RDWR|O_CREAT|O_EXCL, 0777, NULL);
>        if (mqd == (mqd_t)-1) {
>                tst_resm(TBROK, "parent: mq_open() failed (%s)",

Did Linux become non-POSIX compliant :) (from
<http://www.opengroup.org/onlinepubs/000095399/functions/mq_open.html>)?

If name begins with the slash character, then processes calling
mq_open() with the same value of name shall refer to the same message
queue object, as long as that name has not been removed. If name does
not begin with the slash character, the effect is
implementation-defined. The interpretation of slash characters other
than the leading slash character in name is implementation-defined. If
the name argument is not the name of an existing message queue and
creation is not requested, mq_open() shall fail and return an error.

...

[EACCES]
    The message queue exists and the permissions specified by oflag
are denied, or the message queue does not exist and permission to
create the message queue is denied.

I think that one needs to do more digging to determine whether or not
the error is valid, because your description and the requirements
above don't make sense...

Thanks,
-Garrett

------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to