All of lore.kernel.org
 help / color / mirror / Atom feed
* [LTP] pidns31: fix EACCESS error in mq_open()
@ 2010-08-04 23:52 Sukadev Bhattiprolu
  2010-08-05  0:40 ` Garrett Cooper
  0 siblings, 1 reply; 9+ messages in thread
From: Sukadev Bhattiprolu @ 2010-08-04 23:52 UTC (permalink / raw)
  To: subrata; +Cc: ltp-list


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 <sukadev@linux.vnet.ibm.com>
---
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)",

------------------------------------------------------------------------------
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
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] pidns31: fix EACCESS error in mq_open()
  2010-08-04 23:52 [LTP] pidns31: fix EACCESS error in mq_open() Sukadev Bhattiprolu
@ 2010-08-05  0:40 ` Garrett Cooper
  2010-08-05  1:43   ` Sukadev Bhattiprolu
  0 siblings, 1 reply; 9+ messages in thread
From: Garrett Cooper @ 2010-08-05  0:40 UTC (permalink / raw)
  To: Sukadev Bhattiprolu; +Cc: ltp-list

On Wed, Aug 4, 2010 at 4:52 PM, Sukadev Bhattiprolu
<sukadev@linux.vnet.ibm.com> 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 <sukadev@linux.vnet.ibm.com>
> ---
> 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
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] pidns31: fix EACCESS error in mq_open()
  2010-08-05  0:40 ` Garrett Cooper
@ 2010-08-05  1:43   ` Sukadev Bhattiprolu
  2010-08-16 14:52     ` Subrata Modak
  0 siblings, 1 reply; 9+ messages in thread
From: Sukadev Bhattiprolu @ 2010-08-05  1:43 UTC (permalink / raw)
  To: Garrett Cooper; +Cc: ltp-list

Garrett Cooper [yanegomi@gmail.com] wrote:
| On Wed, Aug 4, 2010 at 4:52 PM, Sukadev Bhattiprolu
| <sukadev@linux.vnet.ibm.com> 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 <sukadev@linux.vnet.ibm.com>
| > ---
| > 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>)?

Heh. Good question but I think the mq_open() from glibc is compliant
with this. I am just not sure if the call via syscall() needs to be
compliant.

But if that is a concern, we need a separate a test case for that -
pidns31 is using mq_* to test an unrelated feature. I think would
make sense to apply this fix, allowing LTP to test the feature even
on older distros.

Or pidns31 can go back to using the library interface and we could
skip the test on old distros.

Sukadev.

------------------------------------------------------------------------------
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
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] pidns31: fix EACCESS error in mq_open()
  2010-08-05  1:43   ` Sukadev Bhattiprolu
@ 2010-08-16 14:52     ` Subrata Modak
  2010-08-16 23:01       ` Garrett Cooper
  0 siblings, 1 reply; 9+ messages in thread
From: Subrata Modak @ 2010-08-16 14:52 UTC (permalink / raw)
  To: Sukadev Bhattiprolu; +Cc: ltp-list


On Wed, 2010-08-04 at 18:43 -0700, Sukadev Bhattiprolu wrote: 
> Garrett Cooper [yanegomi@gmail.com] wrote:
> | On Wed, Aug 4, 2010 at 4:52 PM, Sukadev Bhattiprolu
> | <sukadev@linux.vnet.ibm.com> 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 <sukadev@linux.vnet.ibm.com>
> | > ---
> | > 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>)?
> 
> Heh. Good question but I think the mq_open() from glibc is compliant
> with this. I am just not sure if the call via syscall() needs to be
> compliant.
> 
> But if that is a concern, we need a separate a test case for that -
> pidns31 is using mq_* to test an unrelated feature. I think would
> make sense to apply this fix, allowing LTP to test the feature even
> on older distros.
> 
> Or pidns31 can go back to using the library interface and we could
> skip the test on old distros.

I would prefer this.

Regards--
Subrata

> 
> Sukadev.


------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] pidns31: fix EACCESS error in mq_open()
  2010-08-16 14:52     ` Subrata Modak
@ 2010-08-16 23:01       ` Garrett Cooper
  2010-08-24 11:02         ` Subrata Modak
  2010-10-28  5:22         ` Sukadev Bhattiprolu
  0 siblings, 2 replies; 9+ messages in thread
From: Garrett Cooper @ 2010-08-16 23:01 UTC (permalink / raw)
  To: subrata; +Cc: ltp-list, Sukadev Bhattiprolu

On Mon, Aug 16, 2010 at 7:52 AM, Subrata Modak
<subrata@linux.vnet.ibm.com> wrote:
>
> On Wed, 2010-08-04 at 18:43 -0700, Sukadev Bhattiprolu wrote:
>> Garrett Cooper [yanegomi@gmail.com] wrote:
>> | On Wed, Aug 4, 2010 at 4:52 PM, Sukadev Bhattiprolu
>> | <sukadev@linux.vnet.ibm.com> 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 <sukadev@linux.vnet.ibm.com>
>> | > ---
>> | > 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>)?
>>
>> Heh. Good question but I think the mq_open() from glibc is compliant
>> with this. I am just not sure if the call via syscall() needs to be
>> compliant.
>>
>> But if that is a concern, we need a separate a test case for that -
>> pidns31 is using mq_* to test an unrelated feature. I think would
>> make sense to apply this fix, allowing LTP to test the feature even
>> on older distros.
>>
>> Or pidns31 can go back to using the library interface and we could
>> skip the test on old distros.
>
> I would prefer this.

Do I hear someone volunteering to add the required autoconf tests and
tests for this :)?

------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] pidns31: fix EACCESS error in mq_open()
  2010-08-16 23:01       ` Garrett Cooper
@ 2010-08-24 11:02         ` Subrata Modak
  2010-10-28  5:22         ` Sukadev Bhattiprolu
  1 sibling, 0 replies; 9+ messages in thread
From: Subrata Modak @ 2010-08-24 11:02 UTC (permalink / raw)
  To: Garrett Cooper; +Cc: ltp-list, Sukadev Bhattiprolu

On Mon, 2010-08-16 at 16:01 -0700, Garrett Cooper wrote: 
> On Mon, Aug 16, 2010 at 7:52 AM, Subrata Modak
> <subrata@linux.vnet.ibm.com> wrote:
> >
> > On Wed, 2010-08-04 at 18:43 -0700, Sukadev Bhattiprolu wrote:
> >> Garrett Cooper [yanegomi@gmail.com] wrote:
> >> | On Wed, Aug 4, 2010 at 4:52 PM, Sukadev Bhattiprolu
> >> | <sukadev@linux.vnet.ibm.com> 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 <sukadev@linux.vnet.ibm.com>
> >> | > ---
> >> | > 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>)?
> >>
> >> Heh. Good question but I think the mq_open() from glibc is compliant
> >> with this. I am just not sure if the call via syscall() needs to be
> >> compliant.
> >>
> >> But if that is a concern, we need a separate a test case for that -
> >> pidns31 is using mq_* to test an unrelated feature. I think would
> >> make sense to apply this fix, allowing LTP to test the feature even
> >> on older distros.
> >>
> >> Or pidns31 can go back to using the library interface and we could
> >> skip the test on old distros.
> >
> > I would prefer this.
> 
> Do I hear someone volunteering to add the required autoconf tests and
> tests for this :)?

Suka ?

Regards--
Subrata



------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users 
worldwide. Take advantage of special opportunities to increase revenue and 
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] pidns31: fix EACCESS error in mq_open()
  2010-08-16 23:01       ` Garrett Cooper
  2010-08-24 11:02         ` Subrata Modak
@ 2010-10-28  5:22         ` Sukadev Bhattiprolu
  2010-11-11  7:57           ` Subrata Modak
  1 sibling, 1 reply; 9+ messages in thread
From: Sukadev Bhattiprolu @ 2010-10-28  5:22 UTC (permalink / raw)
  To: Garrett Cooper; +Cc: ltp-list

Garrett Cooper [yanegomi@gmail.com] wrote:
| On Mon, Aug 16, 2010 at 7:52 AM, Subrata Modak
| <subrata@linux.vnet.ibm.com> wrote:
| >
| > On Wed, 2010-08-04 at 18:43 -0700, Sukadev Bhattiprolu wrote:
| >> Garrett Cooper [yanegomi@gmail.com] wrote:
| >> | On Wed, Aug 4, 2010 at 4:52 PM, Sukadev Bhattiprolu
| >> | <sukadev@linux.vnet.ibm.com> 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 <sukadev@linux.vnet.ibm.com>
| >> | > ---
| >> | > 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>)?
| >>
| >> Heh. Good question but I think the mq_open() from glibc is compliant
| >> with this. I am just not sure if the call via syscall() needs to be
| >> compliant.
| >>
| >> But if that is a concern, we need a separate a test case for that -
| >> pidns31 is using mq_* to test an unrelated feature. I think would
| >> make sense to apply this fix, allowing LTP to test the feature even
| >> on older distros.
| >>
| >> Or pidns31 can go back to using the library interface and we could
| >> skip the test on old distros.
| >
| > I would prefer this.
| 
| Do I hear someone volunteering to add the required autoconf tests and
| tests for this :)?

Well, I thought we could add a simple autoconf test for the pidns - but
then realized that mq_open() calls were changed for many other test cases
too. The test cases include mqueue.h, which would not be present in old
distros anyway.

So, I don't see the point in fixing this just for pidns tests. If we want 
to use the syscall() interface, why don't we just design the test to work 
with the syscall behavior - i.e  just remove the '/' from the name ?

Sukadev

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] pidns31: fix EACCESS error in mq_open()
  2010-10-28  5:22         ` Sukadev Bhattiprolu
@ 2010-11-11  7:57           ` Subrata Modak
  2010-11-11  8:40             ` Garrett Cooper
  0 siblings, 1 reply; 9+ messages in thread
From: Subrata Modak @ 2010-11-11  7:57 UTC (permalink / raw)
  To: Sukadev Bhattiprolu, Garrett Cooper; +Cc: ltp-list

On Wed, 2010-10-27 at 22:22 -0700, Sukadev Bhattiprolu wrote: 
> Garrett Cooper [yanegomi@gmail.com] wrote:
> | On Mon, Aug 16, 2010 at 7:52 AM, Subrata Modak
> | <subrata@linux.vnet.ibm.com> wrote:
> | >
> | > On Wed, 2010-08-04 at 18:43 -0700, Sukadev Bhattiprolu wrote:
> | >> Garrett Cooper [yanegomi@gmail.com] wrote:
> | >> | On Wed, Aug 4, 2010 at 4:52 PM, Sukadev Bhattiprolu
> | >> | <sukadev@linux.vnet.ibm.com> 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 <sukadev@linux.vnet.ibm.com>
> | >> | > ---
> | >> | > 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>)?
> | >>
> | >> Heh. Good question but I think the mq_open() from glibc is compliant
> | >> with this. I am just not sure if the call via syscall() needs to be
> | >> compliant.
> | >>
> | >> But if that is a concern, we need a separate a test case for that -
> | >> pidns31 is using mq_* to test an unrelated feature. I think would
> | >> make sense to apply this fix, allowing LTP to test the feature even
> | >> on older distros.
> | >>
> | >> Or pidns31 can go back to using the library interface and we could
> | >> skip the test on old distros.
> | >
> | > I would prefer this.
> | 
> | Do I hear someone volunteering to add the required autoconf tests and
> | tests for this :)?
> 
> Well, I thought we could add a simple autoconf test for the pidns - but
> then realized that mq_open() calls were changed for many other test cases
> too. The test cases include mqueue.h, which would not be present in old
> distros anyway.
> 
> So, I don't see the point in fixing this just for pidns tests. If we want 
> to use the syscall() interface, why don't we just design the test to work 
> with the syscall behavior - i.e  just remove the '/' from the name ?

Garret,

Your thoughts ?

Regards--
Subrata

> 
> Sukadev


------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] pidns31: fix EACCESS error in mq_open()
  2010-11-11  7:57           ` Subrata Modak
@ 2010-11-11  8:40             ` Garrett Cooper
  0 siblings, 0 replies; 9+ messages in thread
From: Garrett Cooper @ 2010-11-11  8:40 UTC (permalink / raw)
  To: subrata; +Cc: ltp-list, Sukadev Bhattiprolu

On Wed, Nov 10, 2010 at 11:57 PM, Subrata Modak
<subrata@linux.vnet.ibm.com> wrote:
> On Wed, 2010-10-27 at 22:22 -0700, Sukadev Bhattiprolu wrote:
>> Garrett Cooper [yanegomi@gmail.com] wrote:
>> | On Mon, Aug 16, 2010 at 7:52 AM, Subrata Modak
>> | <subrata@linux.vnet.ibm.com> wrote:
>> | >
>> | > On Wed, 2010-08-04 at 18:43 -0700, Sukadev Bhattiprolu wrote:
>> | >> Garrett Cooper [yanegomi@gmail.com] wrote:
>> | >> | On Wed, Aug 4, 2010 at 4:52 PM, Sukadev Bhattiprolu
>> | >> | <sukadev@linux.vnet.ibm.com> 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 <sukadev@linux.vnet.ibm.com>
>> | >> | > ---
>> | >> | > 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>)?
>> | >>
>> | >> Heh. Good question but I think the mq_open() from glibc is compliant
>> | >> with this. I am just not sure if the call via syscall() needs to be
>> | >> compliant.
>> | >>
>> | >> But if that is a concern, we need a separate a test case for that -
>> | >> pidns31 is using mq_* to test an unrelated feature. I think would
>> | >> make sense to apply this fix, allowing LTP to test the feature even
>> | >> on older distros.
>> | >>
>> | >> Or pidns31 can go back to using the library interface and we could
>> | >> skip the test on old distros.
>> | >
>> | > I would prefer this.
>> |
>> | Do I hear someone volunteering to add the required autoconf tests and
>> | tests for this :)?
>>
>> Well, I thought we could add a simple autoconf test for the pidns - but
>> then realized that mq_open() calls were changed for many other test cases
>> too. The test cases include mqueue.h, which would not be present in old
>> distros anyway.
>>
>> So, I don't see the point in fixing this just for pidns tests. If we want
>> to use the syscall() interface, why don't we just design the test to work
>> with the syscall behavior - i.e  just remove the '/' from the name ?
>
> Garret,
>
> Your thoughts ?

Committed. Will push soon.
-Garrett

------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2010-11-11  8:40 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-04 23:52 [LTP] pidns31: fix EACCESS error in mq_open() Sukadev Bhattiprolu
2010-08-05  0:40 ` Garrett Cooper
2010-08-05  1:43   ` Sukadev Bhattiprolu
2010-08-16 14:52     ` Subrata Modak
2010-08-16 23:01       ` Garrett Cooper
2010-08-24 11:02         ` Subrata Modak
2010-10-28  5:22         ` Sukadev Bhattiprolu
2010-11-11  7:57           ` Subrata Modak
2010-11-11  8:40             ` Garrett Cooper

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.