* [LTP] chown and 16 bit syscall testing
@ 2014-10-31 13:39 Han Pingtian
2014-11-10 9:07 ` Stanislav Kholmanskikh
0 siblings, 1 reply; 9+ messages in thread
From: Han Pingtian @ 2014-10-31 13:39 UTC (permalink / raw)
To: ltp-list
Hey there,
I found that looks like all chown test cases will be compiled to 16 bit
compat test case, but they just call chown() something like
TEST(chown(fname, uid, gid));
which won't test if there is a 16 bit chown() syscall. I think maybe we
should change it to something like below:
TEST(CHOWN(fname, uid, guid));
then define CHOWN like this
UID_T CHOWN(void (cleanup)(void))
{
LTP_CREATE_SYSCALL(chown, cleanup);
}
?
Thanks in advance!
------------------------------------------------------------------------------
_______________________________________________
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] chown and 16 bit syscall testing
2014-10-31 13:39 [LTP] chown and 16 bit syscall testing Han Pingtian
@ 2014-11-10 9:07 ` Stanislav Kholmanskikh
2014-11-13 7:57 ` Han Pingtian
0 siblings, 1 reply; 9+ messages in thread
From: Stanislav Kholmanskikh @ 2014-11-10 9:07 UTC (permalink / raw)
To: ltp-list, hanpt
Hi!
On 10/31/2014 04:39 PM, Han Pingtian wrote:
> Hey there,
>
> I found that looks like all chown test cases will be compiled to 16 bit
> compat test case, but they just call chown() something like
>
> TEST(chown(fname, uid, gid));
>
> which won't test if there is a 16 bit chown() syscall. I think maybe we
> should change it to something like below:
>
> TEST(CHOWN(fname, uid, guid));
>
> then define CHOWN like this
>
> UID_T CHOWN(void (cleanup)(void))
> {
> LTP_CREATE_SYSCALL(chown, cleanup);
> }
>
> ?
I think, this is a good idea.
And there are more such test cases, which are not fixed for the 16-bit
compat case. For example, setresuid.
So if it's possible, fixing them will be good as well;)
>
> Thanks in advance!
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> Ltp-list mailing list
> Ltp-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ltp-list
>
------------------------------------------------------------------------------
_______________________________________________
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] chown and 16 bit syscall testing
2014-11-10 9:07 ` Stanislav Kholmanskikh
@ 2014-11-13 7:57 ` Han Pingtian
2014-11-19 8:15 ` Stanislav Kholmanskikh
0 siblings, 1 reply; 9+ messages in thread
From: Han Pingtian @ 2014-11-13 7:57 UTC (permalink / raw)
To: ltp-list
On Mon, Nov 10, 2014 at 12:07:20PM +0300, Stanislav Kholmanskikh wrote:
> Hi!
>
> On 10/31/2014 04:39 PM, Han Pingtian wrote:
> >Hey there,
> >
> >I found that looks like all chown test cases will be compiled to 16 bit
> >compat test case, but they just call chown() something like
> >
> > TEST(chown(fname, uid, gid));
> >
> >which won't test if there is a 16 bit chown() syscall. I think maybe we
> >should change it to something like below:
> >
> > TEST(CHOWN(fname, uid, guid));
> >
> >then define CHOWN like this
> >
> > UID_T CHOWN(void (cleanup)(void))
> > {
> > LTP_CREATE_SYSCALL(chown, cleanup);
> > }
> >
> >?
>
> I think, this is a good idea.
>
> And there are more such test cases, which are not fixed for the 16-bit
> compat case. For example, setresuid.
>
> So if it's possible, fixing them will be good as well;)
>
Looks like those cases need to be fixed for the 16-bit compat, right?
chown0[1-5] fchown0[1-5] lchown03 setresgid0[1-4] setresuid0[1-3,5]
------------------------------------------------------------------------------
Comprehensive Server Monitoring with Site24x7.
Monitor 10 servers for $9/Month.
Get alerted through email, SMS, voice calls or mobile push notifications.
Take corrective actions from your mobile device.
http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
_______________________________________________
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] chown and 16 bit syscall testing
2014-11-13 7:57 ` Han Pingtian
@ 2014-11-19 8:15 ` Stanislav Kholmanskikh
2014-11-21 7:59 ` [LTP] [PATCH] fix some syscall tests for 16-bit compat testing Han Pingtian
0 siblings, 1 reply; 9+ messages in thread
From: Stanislav Kholmanskikh @ 2014-11-19 8:15 UTC (permalink / raw)
To: ltp-list
On 11/13/2014 10:57 AM, Han Pingtian wrote:
> On Mon, Nov 10, 2014 at 12:07:20PM +0300, Stanislav Kholmanskikh wrote:
>> Hi!
>>
>> On 10/31/2014 04:39 PM, Han Pingtian wrote:
>>> Hey there,
>>>
>>> I found that looks like all chown test cases will be compiled to 16 bit
>>> compat test case, but they just call chown() something like
>>>
>>> TEST(chown(fname, uid, gid));
>>>
>>> which won't test if there is a 16 bit chown() syscall. I think maybe we
>>> should change it to something like below:
>>>
>>> TEST(CHOWN(fname, uid, guid));
>>>
>>> then define CHOWN like this
>>>
>>> UID_T CHOWN(void (cleanup)(void))
>>> {
>>> LTP_CREATE_SYSCALL(chown, cleanup);
>>> }
>>>
>>> ?
>>
>> I think, this is a good idea.
>>
>> And there are more such test cases, which are not fixed for the 16-bit
>> compat case. For example, setresuid.
>>
>> So if it's possible, fixing them will be good as well;)
>>
> Looks like those cases need to be fixed for the 16-bit compat, right?
>
> chown0[1-5] fchown0[1-5] lchown03 setresgid0[1-4] setresuid0[1-3,5]
Looks so.
Sorry for the late response.
>
>
> ------------------------------------------------------------------------------
> Comprehensive Server Monitoring with Site24x7.
> Monitor 10 servers for $9/Month.
> Get alerted through email, SMS, voice calls or mobile push notifications.
> Take corrective actions from your mobile device.
> http://pubads.g.doubleclick.net/gampad/clk?id=154624111&iu=/4140/ostg.clktrk
> _______________________________________________
> Ltp-list mailing list
> Ltp-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ltp-list
>
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
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
* [LTP] [PATCH] fix some syscall tests for 16-bit compat testing
2014-11-19 8:15 ` Stanislav Kholmanskikh
@ 2014-11-21 7:59 ` Han Pingtian
2014-11-24 14:53 ` Stanislav Kholmanskikh
0 siblings, 1 reply; 9+ messages in thread
From: Han Pingtian @ 2014-11-21 7:59 UTC (permalink / raw)
To: ltp-list
On Wed, Nov 19, 2014 at 11:15:54AM +0300, Stanislav Kholmanskikh wrote:
> >Looks like those cases need to be fixed for the 16-bit compat, right?
> >
> >chown0[1-5] fchown0[1-5] lchown03 setresgid0[1-4] setresuid0[1-3,5]
>
> Looks so.
>
> Sorry for the late response.
>
I have composed a patch, please take a look. Thanks
From 71f5463f414e55d609603905e3f20b1f0eac2226 Mon Sep 17 00:00:00 2001
From: Han Pingtian <hanpt@linux.vnet.ibm.com>
Date: Fri, 21 Nov 2014 15:50:23 +0800
Subject: [PATCH] fix some syscall tests for 16-bit compat testing
Some syscall test cases have been compiled for 16-bit compat testing,
but doesn't change the code yet. This fix try to add proper code to let
them support this testing.
Signed-off-by: Han Pingtian <hanpt@linux.vnet.ibm.com>
---
testcases/kernel/syscalls/chown/chown01.c | 3 ++-
testcases/kernel/syscalls/chown/chown02.c | 3 ++-
testcases/kernel/syscalls/chown/chown03.c | 3 ++-
testcases/kernel/syscalls/chown/chown04.c | 3 ++-
testcases/kernel/syscalls/chown/chown05.c | 3 ++-
testcases/kernel/syscalls/fchown/fchown01.c | 3 ++-
testcases/kernel/syscalls/fchown/fchown02.c | 3 ++-
testcases/kernel/syscalls/fchown/fchown03.c | 3 ++-
testcases/kernel/syscalls/fchown/fchown04.c | 3 ++-
testcases/kernel/syscalls/fchown/fchown05.c | 3 ++-
testcases/kernel/syscalls/lchown/lchown03.c | 3 ++-
testcases/kernel/syscalls/setresgid/setresgid01.c | 3 ++-
testcases/kernel/syscalls/setresgid/setresgid02.c | 3 ++-
testcases/kernel/syscalls/setresgid/setresgid03.c | 3 ++-
testcases/kernel/syscalls/setresgid/setresgid04.c | 3 ++-
testcases/kernel/syscalls/setresuid/setresuid01.c | 3 ++-
testcases/kernel/syscalls/setresuid/setresuid02.c | 3 ++-
testcases/kernel/syscalls/setresuid/setresuid03.c | 2 +-
testcases/kernel/syscalls/setresuid/setresuid04.c | 9 +++++----
testcases/kernel/syscalls/setresuid/setresuid05.c | 3 ++-
testcases/kernel/syscalls/utils/compat_16.h | 20 ++++++++++++++++++++
21 files changed, 62 insertions(+), 23 deletions(-)
diff --git a/testcases/kernel/syscalls/chown/chown01.c b/testcases/kernel/syscalls/chown/chown01.c
index ef728e1..5cf33dc 100644
--- a/testcases/kernel/syscalls/chown/chown01.c
+++ b/testcases/kernel/syscalls/chown/chown01.c
@@ -117,6 +117,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
char *TCID = "chown01";
int TST_TOTAL = 1;
@@ -145,7 +146,7 @@ int main(int ac, char **av)
tst_count = 0;
- TEST(chown(fname, uid, gid));
+ TEST(CHOWN(cleanup, fname, uid, gid));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "chown(%s, %d,%d) failed",
diff --git a/testcases/kernel/syscalls/chown/chown02.c b/testcases/kernel/syscalls/chown/chown02.c
index 339b2e8..30394ec 100644
--- a/testcases/kernel/syscalls/chown/chown02.c
+++ b/testcases/kernel/syscalls/chown/chown02.c
@@ -79,6 +79,7 @@
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
#define NEW_PERMS1 (S_IFREG|S_IRWXU|S_IRWXG|S_ISUID|S_ISGID)
@@ -142,7 +143,7 @@ int main(int ac, char **av)
* Call chown(2) with different user id and
* group id (numeric values) to set it on testfile.
*/
- TEST(chown(file_name, user_id, group_id));
+ TEST(CHOWN(cleanup, file_name, user_id, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO,
diff --git a/testcases/kernel/syscalls/chown/chown03.c b/testcases/kernel/syscalls/chown/chown03.c
index 9780c2f..0ed4c91 100644
--- a/testcases/kernel/syscalls/chown/chown03.c
+++ b/testcases/kernel/syscalls/chown/chown03.c
@@ -82,6 +82,7 @@
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
#define NEW_PERMS (S_IFREG|S_IRWXU|S_IRWXG|S_ISUID|S_ISGID)
@@ -115,7 +116,7 @@ int main(int ac, char **av)
user_id = geteuid();
group_id = getegid();
- TEST(chown(TESTFILE, -1, group_id));
+ TEST(CHOWN(cleanup, TESTFILE, -1, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "chown(%s, ..) failed",
diff --git a/testcases/kernel/syscalls/chown/chown04.c b/testcases/kernel/syscalls/chown/chown04.c
index 1459227..b07dfa8 100644
--- a/testcases/kernel/syscalls/chown/chown04.c
+++ b/testcases/kernel/syscalls/chown/chown04.c
@@ -55,6 +55,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define MODE_RWX (S_IRWXU|S_IRWXG|S_IRWXO)
#define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
@@ -118,7 +119,7 @@ int main(int ac, char **av)
tst_count = 0;
for (i = 0; i < TST_TOTAL; i++) {
- TEST(chown(tc[i].pathname, user_id, group_id));
+ TEST(CHOWN(cleanup, tc[i].pathname, user_id, group_id));
if (TEST_RETURN == 0) {
tst_resm(TFAIL, "chown succeeded unexpectedly");
diff --git a/testcases/kernel/syscalls/chown/chown05.c b/testcases/kernel/syscalls/chown/chown05.c
index 92e1811..3ec4f13 100644
--- a/testcases/kernel/syscalls/chown/chown05.c
+++ b/testcases/kernel/syscalls/chown/chown05.c
@@ -77,6 +77,7 @@
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
#define TESTFILE "testfile"
@@ -121,7 +122,7 @@ int main(int ac, char **av)
user_id = test_cases[i].user_id;
group_id = test_cases[i].group_id;
- TEST(chown(TESTFILE, user_id, group_id));
+ TEST(CHOWN(cleanup, TESTFILE, user_id, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "chown failed");
diff --git a/testcases/kernel/syscalls/fchown/fchown01.c b/testcases/kernel/syscalls/fchown/fchown01.c
index be620d7..841e02b 100644
--- a/testcases/kernel/syscalls/fchown/fchown01.c
+++ b/testcases/kernel/syscalls/fchown/fchown01.c
@@ -42,6 +42,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
static void setup(void);
static void cleanup(void);
@@ -65,7 +66,7 @@ int main(int ac, char **av)
tst_count = 0;
- TEST(fchown(fd, geteuid(), getegid()));
+ TEST(FCHOWN(cleanup, fd, geteuid(), getegid()));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "fchown failed");
diff --git a/testcases/kernel/syscalls/fchown/fchown02.c b/testcases/kernel/syscalls/fchown/fchown02.c
index fd14ba1..0c1782d 100644
--- a/testcases/kernel/syscalls/fchown/fchown02.c
+++ b/testcases/kernel/syscalls/fchown/fchown02.c
@@ -38,6 +38,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define FILE_MODE S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
#define NEW_PERMS1 S_IFREG | S_IRWXU | S_IRWXG | S_ISUID | S_ISGID
@@ -71,7 +72,7 @@ static void verify_fchown(struct test_case *t)
{
struct stat stat_buf;
- TEST(fchown(*t->fd, t->user_id, t->group_id));
+ TEST(FCHOWN(cleanup, *t->fd, t->user_id, t->group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "fchown() Fails on %s", t->pathname);
diff --git a/testcases/kernel/syscalls/fchown/fchown03.c b/testcases/kernel/syscalls/fchown/fchown03.c
index 3a75093..d0218b2 100644
--- a/testcases/kernel/syscalls/fchown/fchown03.c
+++ b/testcases/kernel/syscalls/fchown/fchown03.c
@@ -41,6 +41,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define FILE_MODE (mode_t)(S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
#define NEW_PERMS (mode_t)(S_IFREG | S_IRWXU | S_IRWXG | S_ISUID | S_ISGID)
@@ -77,7 +78,7 @@ int main(int ac, char **av)
user_id = geteuid();
group_id = getegid();
- TEST(fchown(fildes, -1, group_id));
+ TEST(FCHOWN(cleanup, fildes, -1, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL, "fchown() on %s Fails, errno=%d",
diff --git a/testcases/kernel/syscalls/fchown/fchown04.c b/testcases/kernel/syscalls/fchown/fchown04.c
index 0829944..6dec6cb 100644
--- a/testcases/kernel/syscalls/fchown/fchown04.c
+++ b/testcases/kernel/syscalls/fchown/fchown04.c
@@ -45,6 +45,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP| \
S_IXGRP|S_IROTH|S_IXOTH)
@@ -140,7 +141,7 @@ static void setup(void)
static void fchown_verify(int i)
{
- TEST(fchown(*test_cases[i].fd, geteuid(), getegid()));
+ TEST(FCHOWN(cleanup, *test_cases[i].fd, geteuid(), getegid()));
if (TEST_RETURN == -1) {
if (TEST_ERRNO == test_cases[i].exp_errno) {
diff --git a/testcases/kernel/syscalls/fchown/fchown05.c b/testcases/kernel/syscalls/fchown/fchown05.c
index 67a745a..47d5b00 100644
--- a/testcases/kernel/syscalls/fchown/fchown05.c
+++ b/testcases/kernel/syscalls/fchown/fchown05.c
@@ -34,6 +34,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define FILE_MODE S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
#define TESTFILE "testfile"
@@ -80,7 +81,7 @@ int main(int ac, char **av)
user_id = tc[i].user_id;
group_id = tc[i].group_id;
- TEST(fchown(fildes, user_id, group_id));
+ TEST(FCHOWN(cleanup, fildes, user_id, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO,
diff --git a/testcases/kernel/syscalls/lchown/lchown03.c b/testcases/kernel/syscalls/lchown/lchown03.c
index 9e4d6f9..8624728 100644
--- a/testcases/kernel/syscalls/lchown/lchown03.c
+++ b/testcases/kernel/syscalls/lchown/lchown03.c
@@ -40,6 +40,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP| \
S_IXGRP|S_IROTH|S_IXOTH)
@@ -124,7 +125,7 @@ static void setup(void)
static void lchown_verify(const struct test_case_t *test)
{
- TEST(lchown(test->pathname, geteuid(), getegid()));
+ TEST(LCHOWN(cleanup, test->pathname, geteuid(), getegid()));
if (TEST_RETURN != -1) {
tst_resm(TFAIL, "lchown() returned %ld, expected -1, errno=%d",
diff --git a/testcases/kernel/syscalls/setresgid/setresgid01.c b/testcases/kernel/syscalls/setresgid/setresgid01.c
index f9c62a0..db3b9dc 100644
--- a/testcases/kernel/syscalls/setresgid/setresgid01.c
+++ b/testcases/kernel/syscalls/setresgid/setresgid01.c
@@ -76,6 +76,7 @@
#include <unistd.h>
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define EXP_RET_VAL 0
@@ -131,7 +132,7 @@ int main(int argc, char **argv)
for (testno = 0; testno < TST_TOTAL; ++testno) {
- TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
+ TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
*tdat[testno].sgid));
if (TEST_RETURN == EXP_RET_VAL) {
diff --git a/testcases/kernel/syscalls/setresgid/setresgid02.c b/testcases/kernel/syscalls/setresgid/setresgid02.c
index 754fca1..e0c935d 100644
--- a/testcases/kernel/syscalls/setresgid/setresgid02.c
+++ b/testcases/kernel/syscalls/setresgid/setresgid02.c
@@ -81,6 +81,7 @@
#include <unistd.h>
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define EXP_RET_VAL 0
@@ -138,7 +139,7 @@ int main(int argc, char **argv)
for (testno = 0; testno < TST_TOTAL; ++testno) {
- TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
+ TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
*tdat[testno].sgid));
if (TEST_RETURN == EXP_RET_VAL) {
diff --git a/testcases/kernel/syscalls/setresgid/setresgid03.c b/testcases/kernel/syscalls/setresgid/setresgid03.c
index 32d7995..0e9801e 100644
--- a/testcases/kernel/syscalls/setresgid/setresgid03.c
+++ b/testcases/kernel/syscalls/setresgid/setresgid03.c
@@ -81,6 +81,7 @@
#include <unistd.h>
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define EXP_RET_VAL -1
#define EXP_ERRNO EPERM
@@ -131,7 +132,7 @@ int main(int argc, char **argv)
for (testno = 0; testno < TST_TOTAL; ++testno) {
- TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
+ TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
*tdat[testno].sgid));
TEST_ERROR_LOG(TEST_ERRNO);
diff --git a/testcases/kernel/syscalls/setresgid/setresgid04.c b/testcases/kernel/syscalls/setresgid/setresgid04.c
index 4e71910..cc481ce 100644
--- a/testcases/kernel/syscalls/setresgid/setresgid04.c
+++ b/testcases/kernel/syscalls/setresgid/setresgid04.c
@@ -30,6 +30,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
char *TCID = "setresgid04";
int TST_TOTAL = 1;
@@ -76,7 +77,7 @@ static void setresgid_verify(void)
{
struct stat buf;
- TEST(setresgid(-1, ltpuser->pw_gid, -1));
+ TEST(SETRESGID(cleanup, -1, ltpuser->pw_gid, -1));
if (TEST_RETURN != 0) {
tst_resm(TFAIL | TTERRNO, "setresgid failed unexpectedly");
diff --git a/testcases/kernel/syscalls/setresuid/setresuid01.c b/testcases/kernel/syscalls/setresuid/setresuid01.c
index 39e1ac3..49211c1 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid01.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid01.c
@@ -69,6 +69,7 @@
#include "test.h"
#include "usctest.h"
#include <errno.h>
+#include "compat_16.h"
char *TCID = "setresuid01";
@@ -140,7 +141,7 @@ int main(int ac, char **av)
for (i = 0; i < TST_TOTAL; i++) {
/* Set the real, effective or user id */
- TEST(setresuid(*test_data[i].real_uid,
+ TEST(SETRESUID(cleanup, *test_data[i].real_uid,
*test_data[i].eff_uid,
*test_data[i].sav_uid));
diff --git a/testcases/kernel/syscalls/setresuid/setresuid02.c b/testcases/kernel/syscalls/setresuid/setresuid02.c
index 0837c9e..5e1b7fd 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid02.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid02.c
@@ -65,6 +65,7 @@
#include "usctest.h"
#include <errno.h>
#include <sys/wait.h>
+#include "compat_16.h"
char *TCID = "setresuid02";
@@ -140,7 +141,7 @@ int main(int ac, char **av)
for (i = 0; i < TST_TOTAL; i++) {
/* Set the real, effective or saved user id */
- TEST(setresuid(*test_data[i].real_uid,
+ TEST(SETRESUID(cleanup, *test_data[i].real_uid,
*test_data[i].eff_uid,
*test_data[i].sav_uid));
diff --git a/testcases/kernel/syscalls/setresuid/setresuid03.c b/testcases/kernel/syscalls/setresuid/setresuid03.c
index f624253..592c764 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid03.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid03.c
@@ -150,7 +150,7 @@ int main(int ac, char **av)
for (i = 0; i < TST_TOTAL; i++) {
/* Set the real, effective or saved user id */
- TEST(setresuid(*test_data[i].real_uid,
+ TEST(SETRESUID(cleanup, *test_data[i].real_uid,
*test_data[i].eff_uid,
*test_data[i].sav_uid));
diff --git a/testcases/kernel/syscalls/setresuid/setresuid04.c b/testcases/kernel/syscalls/setresuid/setresuid04.c
index 140d5f3..dfc9058 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid04.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid04.c
@@ -53,6 +53,7 @@
#include "test.h"
#include "usctest.h"
#include <pwd.h>
+#include "compat_16.h"
char *TCID = "setresuid04";
int TST_TOTAL = 1;
@@ -111,8 +112,8 @@ void do_master_child(void)
/* Reset tst_count in case we are looping */
tst_count = 0;
- if (setresuid(0, ltpuser->pw_uid, 0) == -1) {
- perror("setfsuid failed");
+ if (SETRESUID(cleanup, 0, ltpuser->pw_uid, 0) == -1) {
+ perror("setresuid failed");
exit(1);
}
@@ -176,8 +177,8 @@ void do_master_child(void)
* the file with RDWR permissions.
*/
tst_count++;
- if (setresuid(0, 0, 0) == -1) {
- perror("setfsuid failed");
+ if (SETRESUID(cleanup, 0, 0, 0) == -1) {
+ perror("setresuid failed");
exit(1);
}
diff --git a/testcases/kernel/syscalls/setresuid/setresuid05.c b/testcases/kernel/syscalls/setresuid/setresuid05.c
index 8880aeb..44d1565 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid05.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid05.c
@@ -30,6 +30,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
char *TCID = "setresuid05";
int TST_TOTAL = 1;
@@ -76,7 +77,7 @@ static void setresuid_verify(void)
{
struct stat buf;
- TEST(setresuid(-1, ltpuser->pw_uid, -1));
+ TEST(SETRESUID(cleanup, -1, ltpuser->pw_uid, -1));
if (TEST_RETURN != 0) {
tst_resm(TFAIL | TTERRNO, "setresuid failed unexpectedly");
diff --git a/testcases/kernel/syscalls/utils/compat_16.h b/testcases/kernel/syscalls/utils/compat_16.h
index 40bef59..b6a702d 100644
--- a/testcases/kernel/syscalls/utils/compat_16.h
+++ b/testcases/kernel/syscalls/utils/compat_16.h
@@ -127,8 +127,28 @@ int SETREGID(void (cleanup)(void), GID_T rgid, GID_T egid)
LTP_CREATE_SYSCALL(setregid, cleanup, rgid, egid);
}
+int SETRESUID(void (cleanup)(void), UID_T ruid, UID_T euid, UID_T suid)
+{
+ LTP_CREATE_SYSCALL(setresuid, cleanup, ruid, euid, suid);
+}
+
+int SETRESGID(void (cleanup)(void), GID_T rgid, GID_T egid, GID_T sgid)
+{
+ LTP_CREATE_SYSCALL(setresgid, cleanup, rgid, egid, sgid);
+}
+
+int FCHOWN(void (cleanup)(void), unsigned int fd, UID_T owner, GID_T group)
+{
+ LTP_CREATE_SYSCALL(fchown, cleanup, fd, owner, group);
+}
+
int LCHOWN(void (cleanup)(void), const char *path, UID_T owner, GID_T group)
{
LTP_CREATE_SYSCALL(lchown, cleanup, path, owner, group);
}
+
+int CHOWN(void (cleanup)(void), const char *path, UID_T owner, GID_T group)
+{
+ LTP_CREATE_SYSCALL(chown, cleanup, path, owner, group);
+}
#endif /* __LTP_COMPAT_16_H__ */
--
1.9.3
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH] fix some syscall tests for 16-bit compat testing
2014-11-21 7:59 ` [LTP] [PATCH] fix some syscall tests for 16-bit compat testing Han Pingtian
@ 2014-11-24 14:53 ` Stanislav Kholmanskikh
2014-11-28 8:33 ` [LTP] [PATCH v2] " Han Pingtian
0 siblings, 1 reply; 9+ messages in thread
From: Stanislav Kholmanskikh @ 2014-11-24 14:53 UTC (permalink / raw)
To: ltp-list
Hi.
In general, it looks good.
I have only one comment, that it's possible that the uid/gid values we
pass to the syscall may not fit into UID_T/GID_T. For example, when we
get uid of nobody user in runtime and pass it to chown() or etc.
Yes, it's more like an artificial case, but it's.
We have UID16_CHECK and GID16_CHECK macros to check if the uid/gid fits
the compat mode.
What do you think about using it in test cases chown01, chown03,
chown04, fchown01, fchown03, fchown04, setresgid*, setresuid* ?
Thank you.
On 11/21/2014 10:59 AM, Han Pingtian wrote:
> On Wed, Nov 19, 2014 at 11:15:54AM +0300, Stanislav Kholmanskikh wrote:
>>> Looks like those cases need to be fixed for the 16-bit compat, right?
>>>
>>> chown0[1-5] fchown0[1-5] lchown03 setresgid0[1-4] setresuid0[1-3,5]
>>
>> Looks so.
>>
>> Sorry for the late response.
>>
>
> I have composed a patch, please take a look. Thanks
>
> From 71f5463f414e55d609603905e3f20b1f0eac2226 Mon Sep 17 00:00:00 2001
> From: Han Pingtian <hanpt@linux.vnet.ibm.com>
> Date: Fri, 21 Nov 2014 15:50:23 +0800
> Subject: [PATCH] fix some syscall tests for 16-bit compat testing
>
> Some syscall test cases have been compiled for 16-bit compat testing,
> but doesn't change the code yet. This fix try to add proper code to let
> them support this testing.
>
> Signed-off-by: Han Pingtian <hanpt@linux.vnet.ibm.com>
> ---
> testcases/kernel/syscalls/chown/chown01.c | 3 ++-
> testcases/kernel/syscalls/chown/chown02.c | 3 ++-
> testcases/kernel/syscalls/chown/chown03.c | 3 ++-
> testcases/kernel/syscalls/chown/chown04.c | 3 ++-
> testcases/kernel/syscalls/chown/chown05.c | 3 ++-
> testcases/kernel/syscalls/fchown/fchown01.c | 3 ++-
> testcases/kernel/syscalls/fchown/fchown02.c | 3 ++-
> testcases/kernel/syscalls/fchown/fchown03.c | 3 ++-
> testcases/kernel/syscalls/fchown/fchown04.c | 3 ++-
> testcases/kernel/syscalls/fchown/fchown05.c | 3 ++-
> testcases/kernel/syscalls/lchown/lchown03.c | 3 ++-
> testcases/kernel/syscalls/setresgid/setresgid01.c | 3 ++-
> testcases/kernel/syscalls/setresgid/setresgid02.c | 3 ++-
> testcases/kernel/syscalls/setresgid/setresgid03.c | 3 ++-
> testcases/kernel/syscalls/setresgid/setresgid04.c | 3 ++-
> testcases/kernel/syscalls/setresuid/setresuid01.c | 3 ++-
> testcases/kernel/syscalls/setresuid/setresuid02.c | 3 ++-
> testcases/kernel/syscalls/setresuid/setresuid03.c | 2 +-
> testcases/kernel/syscalls/setresuid/setresuid04.c | 9 +++++----
> testcases/kernel/syscalls/setresuid/setresuid05.c | 3 ++-
> testcases/kernel/syscalls/utils/compat_16.h | 20 ++++++++++++++++++++
> 21 files changed, 62 insertions(+), 23 deletions(-)
>
> diff --git a/testcases/kernel/syscalls/chown/chown01.c b/testcases/kernel/syscalls/chown/chown01.c
> index ef728e1..5cf33dc 100644
> --- a/testcases/kernel/syscalls/chown/chown01.c
> +++ b/testcases/kernel/syscalls/chown/chown01.c
> @@ -117,6 +117,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> char *TCID = "chown01";
> int TST_TOTAL = 1;
> @@ -145,7 +146,7 @@ int main(int ac, char **av)
>
> tst_count = 0;
>
> - TEST(chown(fname, uid, gid));
> + TEST(CHOWN(cleanup, fname, uid, gid));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "chown(%s, %d,%d) failed",
> diff --git a/testcases/kernel/syscalls/chown/chown02.c b/testcases/kernel/syscalls/chown/chown02.c
> index 339b2e8..30394ec 100644
> --- a/testcases/kernel/syscalls/chown/chown02.c
> +++ b/testcases/kernel/syscalls/chown/chown02.c
> @@ -79,6 +79,7 @@
>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
> #define NEW_PERMS1 (S_IFREG|S_IRWXU|S_IRWXG|S_ISUID|S_ISGID)
> @@ -142,7 +143,7 @@ int main(int ac, char **av)
> * Call chown(2) with different user id and
> * group id (numeric values) to set it on testfile.
> */
> - TEST(chown(file_name, user_id, group_id));
> + TEST(CHOWN(cleanup, file_name, user_id, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO,
> diff --git a/testcases/kernel/syscalls/chown/chown03.c b/testcases/kernel/syscalls/chown/chown03.c
> index 9780c2f..0ed4c91 100644
> --- a/testcases/kernel/syscalls/chown/chown03.c
> +++ b/testcases/kernel/syscalls/chown/chown03.c
> @@ -82,6 +82,7 @@
>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
> #define NEW_PERMS (S_IFREG|S_IRWXU|S_IRWXG|S_ISUID|S_ISGID)
> @@ -115,7 +116,7 @@ int main(int ac, char **av)
> user_id = geteuid();
> group_id = getegid();
>
> - TEST(chown(TESTFILE, -1, group_id));
> + TEST(CHOWN(cleanup, TESTFILE, -1, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "chown(%s, ..) failed",
> diff --git a/testcases/kernel/syscalls/chown/chown04.c b/testcases/kernel/syscalls/chown/chown04.c
> index 1459227..b07dfa8 100644
> --- a/testcases/kernel/syscalls/chown/chown04.c
> +++ b/testcases/kernel/syscalls/chown/chown04.c
> @@ -55,6 +55,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define MODE_RWX (S_IRWXU|S_IRWXG|S_IRWXO)
> #define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
> @@ -118,7 +119,7 @@ int main(int ac, char **av)
> tst_count = 0;
>
> for (i = 0; i < TST_TOTAL; i++) {
> - TEST(chown(tc[i].pathname, user_id, group_id));
> + TEST(CHOWN(cleanup, tc[i].pathname, user_id, group_id));
>
> if (TEST_RETURN == 0) {
> tst_resm(TFAIL, "chown succeeded unexpectedly");
> diff --git a/testcases/kernel/syscalls/chown/chown05.c b/testcases/kernel/syscalls/chown/chown05.c
> index 92e1811..3ec4f13 100644
> --- a/testcases/kernel/syscalls/chown/chown05.c
> +++ b/testcases/kernel/syscalls/chown/chown05.c
> @@ -77,6 +77,7 @@
>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
> #define TESTFILE "testfile"
> @@ -121,7 +122,7 @@ int main(int ac, char **av)
> user_id = test_cases[i].user_id;
> group_id = test_cases[i].group_id;
>
> - TEST(chown(TESTFILE, user_id, group_id));
> + TEST(CHOWN(cleanup, TESTFILE, user_id, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "chown failed");
> diff --git a/testcases/kernel/syscalls/fchown/fchown01.c b/testcases/kernel/syscalls/fchown/fchown01.c
> index be620d7..841e02b 100644
> --- a/testcases/kernel/syscalls/fchown/fchown01.c
> +++ b/testcases/kernel/syscalls/fchown/fchown01.c
> @@ -42,6 +42,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> static void setup(void);
> static void cleanup(void);
> @@ -65,7 +66,7 @@ int main(int ac, char **av)
>
> tst_count = 0;
>
> - TEST(fchown(fd, geteuid(), getegid()));
> + TEST(FCHOWN(cleanup, fd, geteuid(), getegid()));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "fchown failed");
> diff --git a/testcases/kernel/syscalls/fchown/fchown02.c b/testcases/kernel/syscalls/fchown/fchown02.c
> index fd14ba1..0c1782d 100644
> --- a/testcases/kernel/syscalls/fchown/fchown02.c
> +++ b/testcases/kernel/syscalls/fchown/fchown02.c
> @@ -38,6 +38,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define FILE_MODE S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
> #define NEW_PERMS1 S_IFREG | S_IRWXU | S_IRWXG | S_ISUID | S_ISGID
> @@ -71,7 +72,7 @@ static void verify_fchown(struct test_case *t)
> {
> struct stat stat_buf;
>
> - TEST(fchown(*t->fd, t->user_id, t->group_id));
> + TEST(FCHOWN(cleanup, *t->fd, t->user_id, t->group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "fchown() Fails on %s", t->pathname);
> diff --git a/testcases/kernel/syscalls/fchown/fchown03.c b/testcases/kernel/syscalls/fchown/fchown03.c
> index 3a75093..d0218b2 100644
> --- a/testcases/kernel/syscalls/fchown/fchown03.c
> +++ b/testcases/kernel/syscalls/fchown/fchown03.c
> @@ -41,6 +41,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define FILE_MODE (mode_t)(S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
> #define NEW_PERMS (mode_t)(S_IFREG | S_IRWXU | S_IRWXG | S_ISUID | S_ISGID)
> @@ -77,7 +78,7 @@ int main(int ac, char **av)
> user_id = geteuid();
> group_id = getegid();
>
> - TEST(fchown(fildes, -1, group_id));
> + TEST(FCHOWN(cleanup, fildes, -1, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL, "fchown() on %s Fails, errno=%d",
> diff --git a/testcases/kernel/syscalls/fchown/fchown04.c b/testcases/kernel/syscalls/fchown/fchown04.c
> index 0829944..6dec6cb 100644
> --- a/testcases/kernel/syscalls/fchown/fchown04.c
> +++ b/testcases/kernel/syscalls/fchown/fchown04.c
> @@ -45,6 +45,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP| \
> S_IXGRP|S_IROTH|S_IXOTH)
> @@ -140,7 +141,7 @@ static void setup(void)
>
> static void fchown_verify(int i)
> {
> - TEST(fchown(*test_cases[i].fd, geteuid(), getegid()));
> + TEST(FCHOWN(cleanup, *test_cases[i].fd, geteuid(), getegid()));
>
> if (TEST_RETURN == -1) {
> if (TEST_ERRNO == test_cases[i].exp_errno) {
> diff --git a/testcases/kernel/syscalls/fchown/fchown05.c b/testcases/kernel/syscalls/fchown/fchown05.c
> index 67a745a..47d5b00 100644
> --- a/testcases/kernel/syscalls/fchown/fchown05.c
> +++ b/testcases/kernel/syscalls/fchown/fchown05.c
> @@ -34,6 +34,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define FILE_MODE S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
> #define TESTFILE "testfile"
> @@ -80,7 +81,7 @@ int main(int ac, char **av)
> user_id = tc[i].user_id;
> group_id = tc[i].group_id;
>
> - TEST(fchown(fildes, user_id, group_id));
> + TEST(FCHOWN(cleanup, fildes, user_id, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO,
> diff --git a/testcases/kernel/syscalls/lchown/lchown03.c b/testcases/kernel/syscalls/lchown/lchown03.c
> index 9e4d6f9..8624728 100644
> --- a/testcases/kernel/syscalls/lchown/lchown03.c
> +++ b/testcases/kernel/syscalls/lchown/lchown03.c
> @@ -40,6 +40,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP| \
> S_IXGRP|S_IROTH|S_IXOTH)
> @@ -124,7 +125,7 @@ static void setup(void)
>
> static void lchown_verify(const struct test_case_t *test)
> {
> - TEST(lchown(test->pathname, geteuid(), getegid()));
> + TEST(LCHOWN(cleanup, test->pathname, geteuid(), getegid()));
>
> if (TEST_RETURN != -1) {
> tst_resm(TFAIL, "lchown() returned %ld, expected -1, errno=%d",
> diff --git a/testcases/kernel/syscalls/setresgid/setresgid01.c b/testcases/kernel/syscalls/setresgid/setresgid01.c
> index f9c62a0..db3b9dc 100644
> --- a/testcases/kernel/syscalls/setresgid/setresgid01.c
> +++ b/testcases/kernel/syscalls/setresgid/setresgid01.c
> @@ -76,6 +76,7 @@
> #include <unistd.h>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define EXP_RET_VAL 0
>
> @@ -131,7 +132,7 @@ int main(int argc, char **argv)
>
> for (testno = 0; testno < TST_TOTAL; ++testno) {
>
> - TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
> + TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
> *tdat[testno].sgid));
>
> if (TEST_RETURN == EXP_RET_VAL) {
> diff --git a/testcases/kernel/syscalls/setresgid/setresgid02.c b/testcases/kernel/syscalls/setresgid/setresgid02.c
> index 754fca1..e0c935d 100644
> --- a/testcases/kernel/syscalls/setresgid/setresgid02.c
> +++ b/testcases/kernel/syscalls/setresgid/setresgid02.c
> @@ -81,6 +81,7 @@
> #include <unistd.h>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define EXP_RET_VAL 0
>
> @@ -138,7 +139,7 @@ int main(int argc, char **argv)
>
> for (testno = 0; testno < TST_TOTAL; ++testno) {
>
> - TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
> + TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
> *tdat[testno].sgid));
>
> if (TEST_RETURN == EXP_RET_VAL) {
> diff --git a/testcases/kernel/syscalls/setresgid/setresgid03.c b/testcases/kernel/syscalls/setresgid/setresgid03.c
> index 32d7995..0e9801e 100644
> --- a/testcases/kernel/syscalls/setresgid/setresgid03.c
> +++ b/testcases/kernel/syscalls/setresgid/setresgid03.c
> @@ -81,6 +81,7 @@
> #include <unistd.h>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define EXP_RET_VAL -1
> #define EXP_ERRNO EPERM
> @@ -131,7 +132,7 @@ int main(int argc, char **argv)
>
> for (testno = 0; testno < TST_TOTAL; ++testno) {
>
> - TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
> + TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
> *tdat[testno].sgid));
>
> TEST_ERROR_LOG(TEST_ERRNO);
> diff --git a/testcases/kernel/syscalls/setresgid/setresgid04.c b/testcases/kernel/syscalls/setresgid/setresgid04.c
> index 4e71910..cc481ce 100644
> --- a/testcases/kernel/syscalls/setresgid/setresgid04.c
> +++ b/testcases/kernel/syscalls/setresgid/setresgid04.c
> @@ -30,6 +30,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> char *TCID = "setresgid04";
> int TST_TOTAL = 1;
> @@ -76,7 +77,7 @@ static void setresgid_verify(void)
> {
> struct stat buf;
>
> - TEST(setresgid(-1, ltpuser->pw_gid, -1));
> + TEST(SETRESGID(cleanup, -1, ltpuser->pw_gid, -1));
>
> if (TEST_RETURN != 0) {
> tst_resm(TFAIL | TTERRNO, "setresgid failed unexpectedly");
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid01.c b/testcases/kernel/syscalls/setresuid/setresuid01.c
> index 39e1ac3..49211c1 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid01.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid01.c
> @@ -69,6 +69,7 @@
> #include "test.h"
> #include "usctest.h"
> #include <errno.h>
> +#include "compat_16.h"
>
> char *TCID = "setresuid01";
>
> @@ -140,7 +141,7 @@ int main(int ac, char **av)
>
> for (i = 0; i < TST_TOTAL; i++) {
> /* Set the real, effective or user id */
> - TEST(setresuid(*test_data[i].real_uid,
> + TEST(SETRESUID(cleanup, *test_data[i].real_uid,
> *test_data[i].eff_uid,
> *test_data[i].sav_uid));
>
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid02.c b/testcases/kernel/syscalls/setresuid/setresuid02.c
> index 0837c9e..5e1b7fd 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid02.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid02.c
> @@ -65,6 +65,7 @@
> #include "usctest.h"
> #include <errno.h>
> #include <sys/wait.h>
> +#include "compat_16.h"
>
> char *TCID = "setresuid02";
>
> @@ -140,7 +141,7 @@ int main(int ac, char **av)
> for (i = 0; i < TST_TOTAL; i++) {
>
> /* Set the real, effective or saved user id */
> - TEST(setresuid(*test_data[i].real_uid,
> + TEST(SETRESUID(cleanup, *test_data[i].real_uid,
> *test_data[i].eff_uid,
> *test_data[i].sav_uid));
>
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid03.c b/testcases/kernel/syscalls/setresuid/setresuid03.c
> index f624253..592c764 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid03.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid03.c
> @@ -150,7 +150,7 @@ int main(int ac, char **av)
> for (i = 0; i < TST_TOTAL; i++) {
>
> /* Set the real, effective or saved user id */
> - TEST(setresuid(*test_data[i].real_uid,
> + TEST(SETRESUID(cleanup, *test_data[i].real_uid,
> *test_data[i].eff_uid,
> *test_data[i].sav_uid));
>
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid04.c b/testcases/kernel/syscalls/setresuid/setresuid04.c
> index 140d5f3..dfc9058 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid04.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid04.c
> @@ -53,6 +53,7 @@
> #include "test.h"
> #include "usctest.h"
> #include <pwd.h>
> +#include "compat_16.h"
>
> char *TCID = "setresuid04";
> int TST_TOTAL = 1;
> @@ -111,8 +112,8 @@ void do_master_child(void)
> /* Reset tst_count in case we are looping */
> tst_count = 0;
>
> - if (setresuid(0, ltpuser->pw_uid, 0) == -1) {
> - perror("setfsuid failed");
> + if (SETRESUID(cleanup, 0, ltpuser->pw_uid, 0) == -1) {
> + perror("setresuid failed");
> exit(1);
> }
>
> @@ -176,8 +177,8 @@ void do_master_child(void)
> * the file with RDWR permissions.
> */
> tst_count++;
> - if (setresuid(0, 0, 0) == -1) {
> - perror("setfsuid failed");
> + if (SETRESUID(cleanup, 0, 0, 0) == -1) {
> + perror("setresuid failed");
> exit(1);
> }
>
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid05.c b/testcases/kernel/syscalls/setresuid/setresuid05.c
> index 8880aeb..44d1565 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid05.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid05.c
> @@ -30,6 +30,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> char *TCID = "setresuid05";
> int TST_TOTAL = 1;
> @@ -76,7 +77,7 @@ static void setresuid_verify(void)
> {
> struct stat buf;
>
> - TEST(setresuid(-1, ltpuser->pw_uid, -1));
> + TEST(SETRESUID(cleanup, -1, ltpuser->pw_uid, -1));
>
> if (TEST_RETURN != 0) {
> tst_resm(TFAIL | TTERRNO, "setresuid failed unexpectedly");
> diff --git a/testcases/kernel/syscalls/utils/compat_16.h b/testcases/kernel/syscalls/utils/compat_16.h
> index 40bef59..b6a702d 100644
> --- a/testcases/kernel/syscalls/utils/compat_16.h
> +++ b/testcases/kernel/syscalls/utils/compat_16.h
> @@ -127,8 +127,28 @@ int SETREGID(void (cleanup)(void), GID_T rgid, GID_T egid)
> LTP_CREATE_SYSCALL(setregid, cleanup, rgid, egid);
> }
>
> +int SETRESUID(void (cleanup)(void), UID_T ruid, UID_T euid, UID_T suid)
> +{
> + LTP_CREATE_SYSCALL(setresuid, cleanup, ruid, euid, suid);
> +}
> +
> +int SETRESGID(void (cleanup)(void), GID_T rgid, GID_T egid, GID_T sgid)
> +{
> + LTP_CREATE_SYSCALL(setresgid, cleanup, rgid, egid, sgid);
> +}
> +
> +int FCHOWN(void (cleanup)(void), unsigned int fd, UID_T owner, GID_T group)
> +{
> + LTP_CREATE_SYSCALL(fchown, cleanup, fd, owner, group);
> +}
> +
> int LCHOWN(void (cleanup)(void), const char *path, UID_T owner, GID_T group)
> {
> LTP_CREATE_SYSCALL(lchown, cleanup, path, owner, group);
> }
> +
> +int CHOWN(void (cleanup)(void), const char *path, UID_T owner, GID_T group)
> +{
> + LTP_CREATE_SYSCALL(chown, cleanup, path, owner, group);
> +}
> #endif /* __LTP_COMPAT_16_H__ */
>
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
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] [PATCH v2] fix some syscall tests for 16-bit compat testing
2014-11-24 14:53 ` Stanislav Kholmanskikh
@ 2014-11-28 8:33 ` Han Pingtian
2014-11-28 15:39 ` Stanislav Kholmanskikh
0 siblings, 1 reply; 9+ messages in thread
From: Han Pingtian @ 2014-11-28 8:33 UTC (permalink / raw)
To: ltp-list
On Mon, Nov 24, 2014 at 05:53:32PM +0300, Stanislav Kholmanskikh wrote:
> Hi.
>
> In general, it looks good.
>
> I have only one comment, that it's possible that the uid/gid values we pass
> to the syscall may not fit into UID_T/GID_T. For example, when we get uid of
> nobody user in runtime and pass it to chown() or etc.
>
> Yes, it's more like an artificial case, but it's.
>
> We have UID16_CHECK and GID16_CHECK macros to check if the uid/gid fits the
> compat mode.
>
> What do you think about using it in test cases chown01, chown03, chown04,
> fchown01, fchown03, fchown04, setresgid*, setresuid* ?
>
> Thank you.
Please review new patch which included UID16_CHECK and GID16_CHECK.
Thanks.
From f65d580f11791c4b2728018a2f8e52398c25d97a Mon Sep 17 00:00:00 2001
From: Han Pingtian <hanpt@linux.vnet.ibm.com>
Date: Fri, 21 Nov 2014 15:50:23 +0800
Subject: [PATCH] fix some syscall tests for 16-bit compat testing
Some syscall testcases have been compiled for 16-bit compat testing,
but doesn't change the code yet. This fix try to add proper code to let
them support this testing.
Signed-off-by: Han Pingtian <hanpt@linux.vnet.ibm.com>
---
testcases/kernel/syscalls/chown/chown01.c | 7 ++++---
testcases/kernel/syscalls/chown/chown02.c | 3 ++-
testcases/kernel/syscalls/chown/chown03.c | 7 ++++---
testcases/kernel/syscalls/chown/chown04.c | 7 ++++---
testcases/kernel/syscalls/chown/chown05.c | 3 ++-
testcases/kernel/syscalls/fchown/fchown01.c | 6 +++++-
testcases/kernel/syscalls/fchown/fchown02.c | 3 ++-
testcases/kernel/syscalls/fchown/fchown03.c | 5 +++--
testcases/kernel/syscalls/fchown/fchown04.c | 6 +++++-
testcases/kernel/syscalls/fchown/fchown05.c | 3 ++-
testcases/kernel/syscalls/lchown/lchown03.c | 6 +++++-
testcases/kernel/syscalls/setresgid/setresgid01.c | 7 ++++---
testcases/kernel/syscalls/setresgid/setresgid02.c | 9 +++++----
testcases/kernel/syscalls/setresgid/setresgid03.c | 7 ++++---
testcases/kernel/syscalls/setresgid/setresgid04.c | 5 ++++-
testcases/kernel/syscalls/setresuid/setresuid01.c | 9 +++++----
testcases/kernel/syscalls/setresuid/setresuid02.c | 7 ++++---
testcases/kernel/syscalls/setresuid/setresuid03.c | 8 ++++----
testcases/kernel/syscalls/setresuid/setresuid04.c | 11 +++++++----
testcases/kernel/syscalls/setresuid/setresuid05.c | 5 ++++-
testcases/kernel/syscalls/utils/compat_16.h | 20 ++++++++++++++++++++
21 files changed, 99 insertions(+), 45 deletions(-)
diff --git a/testcases/kernel/syscalls/chown/chown01.c b/testcases/kernel/syscalls/chown/chown01.c
index ef728e1..5a77a98 100644
--- a/testcases/kernel/syscalls/chown/chown01.c
+++ b/testcases/kernel/syscalls/chown/chown01.c
@@ -117,6 +117,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
char *TCID = "chown01";
int TST_TOTAL = 1;
@@ -145,7 +146,7 @@ int main(int ac, char **av)
tst_count = 0;
- TEST(chown(fname, uid, gid));
+ TEST(CHOWN(cleanup, fname, uid, gid));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "chown(%s, %d,%d) failed",
@@ -170,8 +171,8 @@ static void setup(void)
tst_tmpdir();
- uid = geteuid();
- gid = getegid();
+ UID16_CHECK((uid = geteuid()), "chown", cleanup)
+ GID16_CHECK((gid = getegid()), "chown", cleanup)
sprintf(fname, "t_%d", getpid());
diff --git a/testcases/kernel/syscalls/chown/chown02.c b/testcases/kernel/syscalls/chown/chown02.c
index 339b2e8..30394ec 100644
--- a/testcases/kernel/syscalls/chown/chown02.c
+++ b/testcases/kernel/syscalls/chown/chown02.c
@@ -79,6 +79,7 @@
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
#define NEW_PERMS1 (S_IFREG|S_IRWXU|S_IRWXG|S_ISUID|S_ISGID)
@@ -142,7 +143,7 @@ int main(int ac, char **av)
* Call chown(2) with different user id and
* group id (numeric values) to set it on testfile.
*/
- TEST(chown(file_name, user_id, group_id));
+ TEST(CHOWN(cleanup, file_name, user_id, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO,
diff --git a/testcases/kernel/syscalls/chown/chown03.c b/testcases/kernel/syscalls/chown/chown03.c
index 9780c2f..59b1d62 100644
--- a/testcases/kernel/syscalls/chown/chown03.c
+++ b/testcases/kernel/syscalls/chown/chown03.c
@@ -82,6 +82,7 @@
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
#define NEW_PERMS (S_IFREG|S_IRWXU|S_IRWXG|S_ISUID|S_ISGID)
@@ -112,10 +113,10 @@ int main(int ac, char **av)
tst_count = 0;
- user_id = geteuid();
- group_id = getegid();
+ UID16_CHECK((user_id = geteuid()), "chown", cleanup)
+ GID16_CHECK((group_id = getegid()), "chown", cleanup)
- TEST(chown(TESTFILE, -1, group_id));
+ TEST(CHOWN(cleanup, TESTFILE, -1, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "chown(%s, ..) failed",
diff --git a/testcases/kernel/syscalls/chown/chown04.c b/testcases/kernel/syscalls/chown/chown04.c
index 1459227..b6d7f3d 100644
--- a/testcases/kernel/syscalls/chown/chown04.c
+++ b/testcases/kernel/syscalls/chown/chown04.c
@@ -55,6 +55,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define MODE_RWX (S_IRWXU|S_IRWXG|S_IRWXO)
#define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
@@ -111,14 +112,14 @@ int main(int ac, char **av)
TEST_EXP_ENOS(exp_enos);
- user_id = geteuid();
- group_id = getegid();
+ UID16_CHECK((user_id = geteuid()), "chown", cleanup)
+ GID16_CHECK((group_id = getegid()), "chown", cleanup)
for (lc = 0; TEST_LOOPING(lc); lc++) {
tst_count = 0;
for (i = 0; i < TST_TOTAL; i++) {
- TEST(chown(tc[i].pathname, user_id, group_id));
+ TEST(CHOWN(cleanup, tc[i].pathname, user_id, group_id));
if (TEST_RETURN == 0) {
tst_resm(TFAIL, "chown succeeded unexpectedly");
diff --git a/testcases/kernel/syscalls/chown/chown05.c b/testcases/kernel/syscalls/chown/chown05.c
index 92e1811..3ec4f13 100644
--- a/testcases/kernel/syscalls/chown/chown05.c
+++ b/testcases/kernel/syscalls/chown/chown05.c
@@ -77,6 +77,7 @@
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
#define TESTFILE "testfile"
@@ -121,7 +122,7 @@ int main(int ac, char **av)
user_id = test_cases[i].user_id;
group_id = test_cases[i].group_id;
- TEST(chown(TESTFILE, user_id, group_id));
+ TEST(CHOWN(cleanup, TESTFILE, user_id, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "chown failed");
diff --git a/testcases/kernel/syscalls/fchown/fchown01.c b/testcases/kernel/syscalls/fchown/fchown01.c
index be620d7..df74635 100644
--- a/testcases/kernel/syscalls/fchown/fchown01.c
+++ b/testcases/kernel/syscalls/fchown/fchown01.c
@@ -42,6 +42,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
static void setup(void);
static void cleanup(void);
@@ -65,7 +66,10 @@ int main(int ac, char **av)
tst_count = 0;
- TEST(fchown(fd, geteuid(), getegid()));
+ UID16_CHECK(geteuid(), "fchown", cleanup)
+ GID16_CHECK(getegid(), "fchown", cleanup)
+
+ TEST(FCHOWN(cleanup, fd, geteuid(), getegid()));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "fchown failed");
diff --git a/testcases/kernel/syscalls/fchown/fchown02.c b/testcases/kernel/syscalls/fchown/fchown02.c
index fd14ba1..0c1782d 100644
--- a/testcases/kernel/syscalls/fchown/fchown02.c
+++ b/testcases/kernel/syscalls/fchown/fchown02.c
@@ -38,6 +38,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define FILE_MODE S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
#define NEW_PERMS1 S_IFREG | S_IRWXU | S_IRWXG | S_ISUID | S_ISGID
@@ -71,7 +72,7 @@ static void verify_fchown(struct test_case *t)
{
struct stat stat_buf;
- TEST(fchown(*t->fd, t->user_id, t->group_id));
+ TEST(FCHOWN(cleanup, *t->fd, t->user_id, t->group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO, "fchown() Fails on %s", t->pathname);
diff --git a/testcases/kernel/syscalls/fchown/fchown03.c b/testcases/kernel/syscalls/fchown/fchown03.c
index 3a75093..8c68f12 100644
--- a/testcases/kernel/syscalls/fchown/fchown03.c
+++ b/testcases/kernel/syscalls/fchown/fchown03.c
@@ -41,6 +41,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define FILE_MODE (mode_t)(S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
#define NEW_PERMS (mode_t)(S_IFREG | S_IRWXU | S_IRWXG | S_ISUID | S_ISGID)
@@ -75,9 +76,9 @@ int main(int ac, char **av)
tst_count = 0;
user_id = geteuid();
- group_id = getegid();
+ GID16_CHECK((group_id = getegid()), "fchown", cleanup)
- TEST(fchown(fildes, -1, group_id));
+ TEST(FCHOWN(cleanup, fildes, -1, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL, "fchown() on %s Fails, errno=%d",
diff --git a/testcases/kernel/syscalls/fchown/fchown04.c b/testcases/kernel/syscalls/fchown/fchown04.c
index 0829944..4fe7fdd 100644
--- a/testcases/kernel/syscalls/fchown/fchown04.c
+++ b/testcases/kernel/syscalls/fchown/fchown04.c
@@ -45,6 +45,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP| \
S_IXGRP|S_IROTH|S_IXOTH)
@@ -140,7 +141,10 @@ static void setup(void)
static void fchown_verify(int i)
{
- TEST(fchown(*test_cases[i].fd, geteuid(), getegid()));
+ UID16_CHECK(geteuid(), "fchown", cleanup)
+ GID16_CHECK(getegid(), "fchown", cleanup)
+
+ TEST(FCHOWN(cleanup, *test_cases[i].fd, geteuid(), getegid()));
if (TEST_RETURN == -1) {
if (TEST_ERRNO == test_cases[i].exp_errno) {
diff --git a/testcases/kernel/syscalls/fchown/fchown05.c b/testcases/kernel/syscalls/fchown/fchown05.c
index 67a745a..47d5b00 100644
--- a/testcases/kernel/syscalls/fchown/fchown05.c
+++ b/testcases/kernel/syscalls/fchown/fchown05.c
@@ -34,6 +34,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define FILE_MODE S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
#define TESTFILE "testfile"
@@ -80,7 +81,7 @@ int main(int ac, char **av)
user_id = tc[i].user_id;
group_id = tc[i].group_id;
- TEST(fchown(fildes, user_id, group_id));
+ TEST(FCHOWN(cleanup, fildes, user_id, group_id));
if (TEST_RETURN == -1) {
tst_resm(TFAIL | TTERRNO,
diff --git a/testcases/kernel/syscalls/lchown/lchown03.c b/testcases/kernel/syscalls/lchown/lchown03.c
index 9e4d6f9..d70847b 100644
--- a/testcases/kernel/syscalls/lchown/lchown03.c
+++ b/testcases/kernel/syscalls/lchown/lchown03.c
@@ -40,6 +40,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
#define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP| \
S_IXGRP|S_IROTH|S_IXOTH)
@@ -124,7 +125,10 @@ static void setup(void)
static void lchown_verify(const struct test_case_t *test)
{
- TEST(lchown(test->pathname, geteuid(), getegid()));
+ UID16_CHECK(geteuid(), "lchown", cleanup)
+ GID16_CHECK(getegid(), "lchown", cleanup)
+
+ TEST(LCHOWN(cleanup, test->pathname, geteuid(), getegid()));
if (TEST_RETURN != -1) {
tst_resm(TFAIL, "lchown() returned %ld, expected -1, errno=%d",
diff --git a/testcases/kernel/syscalls/setresgid/setresgid01.c b/testcases/kernel/syscalls/setresgid/setresgid01.c
index f9c62a0..440dd43 100644
--- a/testcases/kernel/syscalls/setresgid/setresgid01.c
+++ b/testcases/kernel/syscalls/setresgid/setresgid01.c
@@ -76,6 +76,7 @@
#include <unistd.h>
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define EXP_RET_VAL 0
@@ -131,7 +132,7 @@ int main(int argc, char **argv)
for (testno = 0; testno < TST_TOTAL; ++testno) {
- TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
+ TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
*tdat[testno].sgid));
if (TEST_RETURN == EXP_RET_VAL) {
@@ -195,14 +196,14 @@ void setup(void)
}
root = *passwd_p;
- root_gid = root.pw_gid;
+ GID16_CHECK((root_gid = root.pw_gid), "setresgid", cleanup)
if ((passwd_p = getpwnam("nobody")) == NULL) {
tst_brkm(TBROK, NULL, "nobody user id doesn't exist");
}
nobody = *passwd_p;
- nobody_gid = nobody.pw_gid;
+ GID16_CHECK((nobody_gid = nobody.pw_gid), "setresgid", cleanup)
/* Pause if that option was specified
* TEST_PAUSE contains the code to fork the test with the -c option.
diff --git a/testcases/kernel/syscalls/setresgid/setresgid02.c b/testcases/kernel/syscalls/setresgid/setresgid02.c
index 754fca1..113544e 100644
--- a/testcases/kernel/syscalls/setresgid/setresgid02.c
+++ b/testcases/kernel/syscalls/setresgid/setresgid02.c
@@ -81,6 +81,7 @@
#include <unistd.h>
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define EXP_RET_VAL 0
@@ -138,7 +139,7 @@ int main(int argc, char **argv)
for (testno = 0; testno < TST_TOTAL; ++testno) {
- TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
+ TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
*tdat[testno].sgid));
if (TEST_RETURN == EXP_RET_VAL) {
@@ -202,21 +203,21 @@ void setup(void)
}
root = *passwd_p;
- root_gid = root.pw_gid;
+ GID16_CHECK((root_gid = root.pw_gid), "setresgid", cleanup)
if ((passwd_p = getpwnam("bin")) == NULL) {
tst_brkm(TBROK, NULL, "bin user id doesn't exist");
}
bin = *passwd_p;
- bin_gid = bin.pw_gid;
+ GID16_CHECK((bin_gid = bin.pw_gid), "setresgid", cleanup)
if ((passwd_p = getpwnam("nobody")) == NULL) {
tst_brkm(TBROK, NULL, "nobody user id doesn't exist");
}
nobody = *passwd_p;
- nobody_gid = nobody.pw_gid;
+ GID16_CHECK((nobody_gid = nobody.pw_gid), "setresgid", cleanup)
/* Set effective/saved gid to nobody */
if (setresgid(-1, nobody_gid, nobody_gid) == -1) {
diff --git a/testcases/kernel/syscalls/setresgid/setresgid03.c b/testcases/kernel/syscalls/setresgid/setresgid03.c
index 32d7995..aa67081 100644
--- a/testcases/kernel/syscalls/setresgid/setresgid03.c
+++ b/testcases/kernel/syscalls/setresgid/setresgid03.c
@@ -81,6 +81,7 @@
#include <unistd.h>
#include "test.h"
#include "usctest.h"
+#include "compat_16.h"
#define EXP_RET_VAL -1
#define EXP_ERRNO EPERM
@@ -131,7 +132,7 @@ int main(int argc, char **argv)
for (testno = 0; testno < TST_TOTAL; ++testno) {
- TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
+ TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
*tdat[testno].sgid));
TEST_ERROR_LOG(TEST_ERRNO);
@@ -207,14 +208,14 @@ void setup(void)
}
bin = *passwd_p;
- bin_gid = bin.pw_gid;
+ GID16_CHECK((bin_gid = bin.pw_gid), "setresgid", cleanup)
if ((passwd_p = getpwnam("nobody")) == NULL) {
tst_brkm(TBROK, NULL, "nobody user id doesn't exist");
}
nobody = *passwd_p;
- nobody_gid = nobody.pw_gid;
+ GID16_CHECK((nobody_gid = nobody.pw_gid), "setresgid", cleanup)
/* set the expected errnos... */
TEST_EXP_ENOS(exp_enos);
diff --git a/testcases/kernel/syscalls/setresgid/setresgid04.c b/testcases/kernel/syscalls/setresgid/setresgid04.c
index 4e71910..019aaeb 100644
--- a/testcases/kernel/syscalls/setresgid/setresgid04.c
+++ b/testcases/kernel/syscalls/setresgid/setresgid04.c
@@ -30,6 +30,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
char *TCID = "setresgid04";
int TST_TOTAL = 1;
@@ -70,13 +71,15 @@ static void setup(void)
tst_tmpdir();
ltpuser = SAFE_GETPWNAM(cleanup, "nobody");
+
+ GID16_CHECK(ltpuser->pw_gid, "setresgid", cleanup)
}
static void setresgid_verify(void)
{
struct stat buf;
- TEST(setresgid(-1, ltpuser->pw_gid, -1));
+ TEST(SETRESGID(cleanup, -1, ltpuser->pw_gid, -1));
if (TEST_RETURN != 0) {
tst_resm(TFAIL | TTERRNO, "setresgid failed unexpectedly");
diff --git a/testcases/kernel/syscalls/setresuid/setresuid01.c b/testcases/kernel/syscalls/setresuid/setresuid01.c
index 39e1ac3..027aee3 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid01.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid01.c
@@ -69,6 +69,7 @@
#include "test.h"
#include "usctest.h"
#include <errno.h>
+#include "compat_16.h"
char *TCID = "setresuid01";
@@ -140,7 +141,7 @@ int main(int ac, char **av)
for (i = 0; i < TST_TOTAL; i++) {
/* Set the real, effective or user id */
- TEST(setresuid(*test_data[i].real_uid,
+ TEST(SETRESUID(cleanup, *test_data[i].real_uid,
*test_data[i].eff_uid,
*test_data[i].sav_uid));
@@ -185,13 +186,13 @@ void setup(void)
TEST_EXP_ENOS(exp_enos);
root = *(getpwnam("root"));
- root_pw_uid = root.pw_uid;
+ UID16_CHECK((root_pw_uid = root.pw_uid), "setresuid", cleanup)
nobody = *(getpwnam("nobody"));
- nobody_pw_uid = nobody.pw_uid;
+ UID16_CHECK((nobody_pw_uid = nobody.pw_uid), "setresuid", cleanup)
bin = *(getpwnam("bin"));
- bin_pw_uid = bin.pw_uid;
+ UID16_CHECK((bin_pw_uid = bin.pw_uid), "setresuid", cleanup)
/* Pause if that option was specified
* TEST_PAUSE contains the code to fork the test with the -c option.
diff --git a/testcases/kernel/syscalls/setresuid/setresuid02.c b/testcases/kernel/syscalls/setresuid/setresuid02.c
index 0837c9e..bb50633 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid02.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid02.c
@@ -65,6 +65,7 @@
#include "usctest.h"
#include <errno.h>
#include <sys/wait.h>
+#include "compat_16.h"
char *TCID = "setresuid02";
@@ -140,7 +141,7 @@ int main(int ac, char **av)
for (i = 0; i < TST_TOTAL; i++) {
/* Set the real, effective or saved user id */
- TEST(setresuid(*test_data[i].real_uid,
+ TEST(SETRESUID(cleanup, *test_data[i].real_uid,
*test_data[i].eff_uid,
*test_data[i].sav_uid));
@@ -196,10 +197,10 @@ void setup(void)
}
nobody = *(getpwnam("nobody"));
- nobody_pw_uid = nobody.pw_uid;
+ UID16_CHECK((nobody_pw_uid = nobody.pw_uid), "setresuid", cleanup)
bin = *(getpwnam("bin"));
- bin_pw_uid = bin.pw_uid;
+ UID16_CHECK((bin_pw_uid = bin.pw_uid), "setresuid", cleanup)
/* Pause if that option was specified
* TEST_PAUSE contains the code to fork the test with the -i option.
diff --git a/testcases/kernel/syscalls/setresuid/setresuid03.c b/testcases/kernel/syscalls/setresuid/setresuid03.c
index f624253..c679b82 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid03.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid03.c
@@ -150,7 +150,7 @@ int main(int ac, char **av)
for (i = 0; i < TST_TOTAL; i++) {
/* Set the real, effective or saved user id */
- TEST(setresuid(*test_data[i].real_uid,
+ TEST(SETRESUID(cleanup, *test_data[i].real_uid,
*test_data[i].eff_uid,
*test_data[i].sav_uid));
@@ -207,13 +207,13 @@ void setup(void)
}
root = *(getpwnam("root"));
- root_pw_uid = root.pw_uid;
+ UID16_CHECK((root_pw_uid = root.pw_uid), "setresuid", cleanup)
nobody = *(getpwnam("nobody"));
- nobody_pw_uid = nobody.pw_uid;
+ UID16_CHECK((nobody_pw_uid = nobody.pw_uid), "setresuid", cleanup)
bin = *(getpwnam("bin"));
- bin_pw_uid = bin.pw_uid;
+ UID16_CHECK((bin_pw_uid = bin.pw_uid), "setresuid", cleanup)
/* Pause if that option was specified
* TEST_PAUSE contains the code to fork the test with the -i option.
diff --git a/testcases/kernel/syscalls/setresuid/setresuid04.c b/testcases/kernel/syscalls/setresuid/setresuid04.c
index 140d5f3..49b2616 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid04.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid04.c
@@ -53,6 +53,7 @@
#include "test.h"
#include "usctest.h"
#include <pwd.h>
+#include "compat_16.h"
char *TCID = "setresuid04";
int TST_TOTAL = 1;
@@ -111,8 +112,8 @@ void do_master_child(void)
/* Reset tst_count in case we are looping */
tst_count = 0;
- if (setresuid(0, ltpuser->pw_uid, 0) == -1) {
- perror("setfsuid failed");
+ if (SETRESUID(cleanup, 0, ltpuser->pw_uid, 0) == -1) {
+ perror("setresuid failed");
exit(1);
}
@@ -176,8 +177,8 @@ void do_master_child(void)
* the file with RDWR permissions.
*/
tst_count++;
- if (setresuid(0, 0, 0) == -1) {
- perror("setfsuid failed");
+ if (SETRESUID(cleanup, 0, 0, 0) == -1) {
+ perror("setresuid failed");
exit(1);
}
@@ -203,6 +204,8 @@ void setup(void)
ltpuser = getpwnam(nobody_uid);
+ UID16_CHECK(ltpuser->pw_uid, "setresuid", cleanup)
+
tst_tmpdir();
sprintf(testfile, "setresuid04file%d.tst", getpid());
diff --git a/testcases/kernel/syscalls/setresuid/setresuid05.c b/testcases/kernel/syscalls/setresuid/setresuid05.c
index 8880aeb..81175eb 100644
--- a/testcases/kernel/syscalls/setresuid/setresuid05.c
+++ b/testcases/kernel/syscalls/setresuid/setresuid05.c
@@ -30,6 +30,7 @@
#include "test.h"
#include "usctest.h"
#include "safe_macros.h"
+#include "compat_16.h"
char *TCID = "setresuid05";
int TST_TOTAL = 1;
@@ -70,13 +71,15 @@ static void setup(void)
tst_tmpdir();
ltpuser = SAFE_GETPWNAM(cleanup, "nobody");
+
+ UID16_CHECK(ltpuser->pw_uid, "setresuid", cleanup)
}
static void setresuid_verify(void)
{
struct stat buf;
- TEST(setresuid(-1, ltpuser->pw_uid, -1));
+ TEST(SETRESUID(cleanup, -1, ltpuser->pw_uid, -1));
if (TEST_RETURN != 0) {
tst_resm(TFAIL | TTERRNO, "setresuid failed unexpectedly");
diff --git a/testcases/kernel/syscalls/utils/compat_16.h b/testcases/kernel/syscalls/utils/compat_16.h
index 40bef59..b6a702d 100644
--- a/testcases/kernel/syscalls/utils/compat_16.h
+++ b/testcases/kernel/syscalls/utils/compat_16.h
@@ -127,8 +127,28 @@ int SETREGID(void (cleanup)(void), GID_T rgid, GID_T egid)
LTP_CREATE_SYSCALL(setregid, cleanup, rgid, egid);
}
+int SETRESUID(void (cleanup)(void), UID_T ruid, UID_T euid, UID_T suid)
+{
+ LTP_CREATE_SYSCALL(setresuid, cleanup, ruid, euid, suid);
+}
+
+int SETRESGID(void (cleanup)(void), GID_T rgid, GID_T egid, GID_T sgid)
+{
+ LTP_CREATE_SYSCALL(setresgid, cleanup, rgid, egid, sgid);
+}
+
+int FCHOWN(void (cleanup)(void), unsigned int fd, UID_T owner, GID_T group)
+{
+ LTP_CREATE_SYSCALL(fchown, cleanup, fd, owner, group);
+}
+
int LCHOWN(void (cleanup)(void), const char *path, UID_T owner, GID_T group)
{
LTP_CREATE_SYSCALL(lchown, cleanup, path, owner, group);
}
+
+int CHOWN(void (cleanup)(void), const char *path, UID_T owner, GID_T group)
+{
+ LTP_CREATE_SYSCALL(chown, cleanup, path, owner, group);
+}
#endif /* __LTP_COMPAT_16_H__ */
--
1.9.3
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [LTP] [PATCH v2] fix some syscall tests for 16-bit compat testing
2014-11-28 8:33 ` [LTP] [PATCH v2] " Han Pingtian
@ 2014-11-28 15:39 ` Stanislav Kholmanskikh
2014-11-29 13:29 ` Han Pingtian
0 siblings, 1 reply; 9+ messages in thread
From: Stanislav Kholmanskikh @ 2014-11-28 15:39 UTC (permalink / raw)
To: ltp-list
On 11/28/2014 11:33 AM, Han Pingtian wrote:
> On Mon, Nov 24, 2014 at 05:53:32PM +0300, Stanislav Kholmanskikh wrote:
>> Hi.
>>
>> In general, it looks good.
>>
>> I have only one comment, that it's possible that the uid/gid values we pass
>> to the syscall may not fit into UID_T/GID_T. For example, when we get uid of
>> nobody user in runtime and pass it to chown() or etc.
>>
>> Yes, it's more like an artificial case, but it's.
>>
>> We have UID16_CHECK and GID16_CHECK macros to check if the uid/gid fits the
>> compat mode.
>>
>> What do you think about using it in test cases chown01, chown03, chown04,
>> fchown01, fchown03, fchown04, setresgid*, setresuid* ?
>>
>> Thank you.
>
> Please review new patch which included UID16_CHECK and GID16_CHECK.
>
> Thanks.
Hi!
I pushed your patch with TCID_DEFINE added (overlooked it at that time),
and also pushed a follow-up patch which:
* fixes setresuid02_16, setresuid03_16, setresuid04_16 - they do
testing inside their children.
* explicitly declares setresuid(), setresgid() in compat_16.h. This is
to manage compilation warnings.
Tested in OL6 with 2.6.39-400.215.11.el6uek.x86_64 and
2.6.39-400.214.5.el6uek.i686 kernels.
Thank you.
>
>>From f65d580f11791c4b2728018a2f8e52398c25d97a Mon Sep 17 00:00:00 2001
> From: Han Pingtian <hanpt@linux.vnet.ibm.com>
> Date: Fri, 21 Nov 2014 15:50:23 +0800
> Subject: [PATCH] fix some syscall tests for 16-bit compat testing
>
> Some syscall testcases have been compiled for 16-bit compat testing,
> but doesn't change the code yet. This fix try to add proper code to let
> them support this testing.
>
> Signed-off-by: Han Pingtian <hanpt@linux.vnet.ibm.com>
> ---
> testcases/kernel/syscalls/chown/chown01.c | 7 ++++---
> testcases/kernel/syscalls/chown/chown02.c | 3 ++-
> testcases/kernel/syscalls/chown/chown03.c | 7 ++++---
> testcases/kernel/syscalls/chown/chown04.c | 7 ++++---
> testcases/kernel/syscalls/chown/chown05.c | 3 ++-
> testcases/kernel/syscalls/fchown/fchown01.c | 6 +++++-
> testcases/kernel/syscalls/fchown/fchown02.c | 3 ++-
> testcases/kernel/syscalls/fchown/fchown03.c | 5 +++--
> testcases/kernel/syscalls/fchown/fchown04.c | 6 +++++-
> testcases/kernel/syscalls/fchown/fchown05.c | 3 ++-
> testcases/kernel/syscalls/lchown/lchown03.c | 6 +++++-
> testcases/kernel/syscalls/setresgid/setresgid01.c | 7 ++++---
> testcases/kernel/syscalls/setresgid/setresgid02.c | 9 +++++----
> testcases/kernel/syscalls/setresgid/setresgid03.c | 7 ++++---
> testcases/kernel/syscalls/setresgid/setresgid04.c | 5 ++++-
> testcases/kernel/syscalls/setresuid/setresuid01.c | 9 +++++----
> testcases/kernel/syscalls/setresuid/setresuid02.c | 7 ++++---
> testcases/kernel/syscalls/setresuid/setresuid03.c | 8 ++++----
> testcases/kernel/syscalls/setresuid/setresuid04.c | 11 +++++++----
> testcases/kernel/syscalls/setresuid/setresuid05.c | 5 ++++-
> testcases/kernel/syscalls/utils/compat_16.h | 20 ++++++++++++++++++++
> 21 files changed, 99 insertions(+), 45 deletions(-)
>
> diff --git a/testcases/kernel/syscalls/chown/chown01.c b/testcases/kernel/syscalls/chown/chown01.c
> index ef728e1..5a77a98 100644
> --- a/testcases/kernel/syscalls/chown/chown01.c
> +++ b/testcases/kernel/syscalls/chown/chown01.c
> @@ -117,6 +117,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> char *TCID = "chown01";
> int TST_TOTAL = 1;
> @@ -145,7 +146,7 @@ int main(int ac, char **av)
>
> tst_count = 0;
>
> - TEST(chown(fname, uid, gid));
> + TEST(CHOWN(cleanup, fname, uid, gid));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "chown(%s, %d,%d) failed",
> @@ -170,8 +171,8 @@ static void setup(void)
>
> tst_tmpdir();
>
> - uid = geteuid();
> - gid = getegid();
> + UID16_CHECK((uid = geteuid()), "chown", cleanup)
> + GID16_CHECK((gid = getegid()), "chown", cleanup)
>
> sprintf(fname, "t_%d", getpid());
>
> diff --git a/testcases/kernel/syscalls/chown/chown02.c b/testcases/kernel/syscalls/chown/chown02.c
> index 339b2e8..30394ec 100644
> --- a/testcases/kernel/syscalls/chown/chown02.c
> +++ b/testcases/kernel/syscalls/chown/chown02.c
> @@ -79,6 +79,7 @@
>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
> #define NEW_PERMS1 (S_IFREG|S_IRWXU|S_IRWXG|S_ISUID|S_ISGID)
> @@ -142,7 +143,7 @@ int main(int ac, char **av)
> * Call chown(2) with different user id and
> * group id (numeric values) to set it on testfile.
> */
> - TEST(chown(file_name, user_id, group_id));
> + TEST(CHOWN(cleanup, file_name, user_id, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO,
> diff --git a/testcases/kernel/syscalls/chown/chown03.c b/testcases/kernel/syscalls/chown/chown03.c
> index 9780c2f..59b1d62 100644
> --- a/testcases/kernel/syscalls/chown/chown03.c
> +++ b/testcases/kernel/syscalls/chown/chown03.c
> @@ -82,6 +82,7 @@
>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
> #define NEW_PERMS (S_IFREG|S_IRWXU|S_IRWXG|S_ISUID|S_ISGID)
> @@ -112,10 +113,10 @@ int main(int ac, char **av)
>
> tst_count = 0;
>
> - user_id = geteuid();
> - group_id = getegid();
> + UID16_CHECK((user_id = geteuid()), "chown", cleanup)
> + GID16_CHECK((group_id = getegid()), "chown", cleanup)
>
> - TEST(chown(TESTFILE, -1, group_id));
> + TEST(CHOWN(cleanup, TESTFILE, -1, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "chown(%s, ..) failed",
> diff --git a/testcases/kernel/syscalls/chown/chown04.c b/testcases/kernel/syscalls/chown/chown04.c
> index 1459227..b6d7f3d 100644
> --- a/testcases/kernel/syscalls/chown/chown04.c
> +++ b/testcases/kernel/syscalls/chown/chown04.c
> @@ -55,6 +55,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define MODE_RWX (S_IRWXU|S_IRWXG|S_IRWXO)
> #define FILE_MODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
> @@ -111,14 +112,14 @@ int main(int ac, char **av)
>
> TEST_EXP_ENOS(exp_enos);
>
> - user_id = geteuid();
> - group_id = getegid();
> + UID16_CHECK((user_id = geteuid()), "chown", cleanup)
> + GID16_CHECK((group_id = getegid()), "chown", cleanup)
>
> for (lc = 0; TEST_LOOPING(lc); lc++) {
> tst_count = 0;
>
> for (i = 0; i < TST_TOTAL; i++) {
> - TEST(chown(tc[i].pathname, user_id, group_id));
> + TEST(CHOWN(cleanup, tc[i].pathname, user_id, group_id));
>
> if (TEST_RETURN == 0) {
> tst_resm(TFAIL, "chown succeeded unexpectedly");
> diff --git a/testcases/kernel/syscalls/chown/chown05.c b/testcases/kernel/syscalls/chown/chown05.c
> index 92e1811..3ec4f13 100644
> --- a/testcases/kernel/syscalls/chown/chown05.c
> +++ b/testcases/kernel/syscalls/chown/chown05.c
> @@ -77,6 +77,7 @@
>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define FILE_MODE (S_IFREG|S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
> #define TESTFILE "testfile"
> @@ -121,7 +122,7 @@ int main(int ac, char **av)
> user_id = test_cases[i].user_id;
> group_id = test_cases[i].group_id;
>
> - TEST(chown(TESTFILE, user_id, group_id));
> + TEST(CHOWN(cleanup, TESTFILE, user_id, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "chown failed");
> diff --git a/testcases/kernel/syscalls/fchown/fchown01.c b/testcases/kernel/syscalls/fchown/fchown01.c
> index be620d7..df74635 100644
> --- a/testcases/kernel/syscalls/fchown/fchown01.c
> +++ b/testcases/kernel/syscalls/fchown/fchown01.c
> @@ -42,6 +42,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> static void setup(void);
> static void cleanup(void);
> @@ -65,7 +66,10 @@ int main(int ac, char **av)
>
> tst_count = 0;
>
> - TEST(fchown(fd, geteuid(), getegid()));
> + UID16_CHECK(geteuid(), "fchown", cleanup)
> + GID16_CHECK(getegid(), "fchown", cleanup)
> +
> + TEST(FCHOWN(cleanup, fd, geteuid(), getegid()));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "fchown failed");
> diff --git a/testcases/kernel/syscalls/fchown/fchown02.c b/testcases/kernel/syscalls/fchown/fchown02.c
> index fd14ba1..0c1782d 100644
> --- a/testcases/kernel/syscalls/fchown/fchown02.c
> +++ b/testcases/kernel/syscalls/fchown/fchown02.c
> @@ -38,6 +38,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define FILE_MODE S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
> #define NEW_PERMS1 S_IFREG | S_IRWXU | S_IRWXG | S_ISUID | S_ISGID
> @@ -71,7 +72,7 @@ static void verify_fchown(struct test_case *t)
> {
> struct stat stat_buf;
>
> - TEST(fchown(*t->fd, t->user_id, t->group_id));
> + TEST(FCHOWN(cleanup, *t->fd, t->user_id, t->group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO, "fchown() Fails on %s", t->pathname);
> diff --git a/testcases/kernel/syscalls/fchown/fchown03.c b/testcases/kernel/syscalls/fchown/fchown03.c
> index 3a75093..8c68f12 100644
> --- a/testcases/kernel/syscalls/fchown/fchown03.c
> +++ b/testcases/kernel/syscalls/fchown/fchown03.c
> @@ -41,6 +41,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define FILE_MODE (mode_t)(S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
> #define NEW_PERMS (mode_t)(S_IFREG | S_IRWXU | S_IRWXG | S_ISUID | S_ISGID)
> @@ -75,9 +76,9 @@ int main(int ac, char **av)
> tst_count = 0;
>
> user_id = geteuid();
> - group_id = getegid();
> + GID16_CHECK((group_id = getegid()), "fchown", cleanup)
>
> - TEST(fchown(fildes, -1, group_id));
> + TEST(FCHOWN(cleanup, fildes, -1, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL, "fchown() on %s Fails, errno=%d",
> diff --git a/testcases/kernel/syscalls/fchown/fchown04.c b/testcases/kernel/syscalls/fchown/fchown04.c
> index 0829944..4fe7fdd 100644
> --- a/testcases/kernel/syscalls/fchown/fchown04.c
> +++ b/testcases/kernel/syscalls/fchown/fchown04.c
> @@ -45,6 +45,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP| \
> S_IXGRP|S_IROTH|S_IXOTH)
> @@ -140,7 +141,10 @@ static void setup(void)
>
> static void fchown_verify(int i)
> {
> - TEST(fchown(*test_cases[i].fd, geteuid(), getegid()));
> + UID16_CHECK(geteuid(), "fchown", cleanup)
> + GID16_CHECK(getegid(), "fchown", cleanup)
> +
> + TEST(FCHOWN(cleanup, *test_cases[i].fd, geteuid(), getegid()));
>
> if (TEST_RETURN == -1) {
> if (TEST_ERRNO == test_cases[i].exp_errno) {
> diff --git a/testcases/kernel/syscalls/fchown/fchown05.c b/testcases/kernel/syscalls/fchown/fchown05.c
> index 67a745a..47d5b00 100644
> --- a/testcases/kernel/syscalls/fchown/fchown05.c
> +++ b/testcases/kernel/syscalls/fchown/fchown05.c
> @@ -34,6 +34,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define FILE_MODE S_IFREG | S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH
> #define TESTFILE "testfile"
> @@ -80,7 +81,7 @@ int main(int ac, char **av)
> user_id = tc[i].user_id;
> group_id = tc[i].group_id;
>
> - TEST(fchown(fildes, user_id, group_id));
> + TEST(FCHOWN(cleanup, fildes, user_id, group_id));
>
> if (TEST_RETURN == -1) {
> tst_resm(TFAIL | TTERRNO,
> diff --git a/testcases/kernel/syscalls/lchown/lchown03.c b/testcases/kernel/syscalls/lchown/lchown03.c
> index 9e4d6f9..d70847b 100644
> --- a/testcases/kernel/syscalls/lchown/lchown03.c
> +++ b/testcases/kernel/syscalls/lchown/lchown03.c
> @@ -40,6 +40,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> #define DIR_MODE (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP| \
> S_IXGRP|S_IROTH|S_IXOTH)
> @@ -124,7 +125,10 @@ static void setup(void)
>
> static void lchown_verify(const struct test_case_t *test)
> {
> - TEST(lchown(test->pathname, geteuid(), getegid()));
> + UID16_CHECK(geteuid(), "lchown", cleanup)
> + GID16_CHECK(getegid(), "lchown", cleanup)
> +
> + TEST(LCHOWN(cleanup, test->pathname, geteuid(), getegid()));
>
> if (TEST_RETURN != -1) {
> tst_resm(TFAIL, "lchown() returned %ld, expected -1, errno=%d",
> diff --git a/testcases/kernel/syscalls/setresgid/setresgid01.c b/testcases/kernel/syscalls/setresgid/setresgid01.c
> index f9c62a0..440dd43 100644
> --- a/testcases/kernel/syscalls/setresgid/setresgid01.c
> +++ b/testcases/kernel/syscalls/setresgid/setresgid01.c
> @@ -76,6 +76,7 @@
> #include <unistd.h>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define EXP_RET_VAL 0
>
> @@ -131,7 +132,7 @@ int main(int argc, char **argv)
>
> for (testno = 0; testno < TST_TOTAL; ++testno) {
>
> - TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
> + TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
> *tdat[testno].sgid));
>
> if (TEST_RETURN == EXP_RET_VAL) {
> @@ -195,14 +196,14 @@ void setup(void)
>
> }
> root = *passwd_p;
> - root_gid = root.pw_gid;
> + GID16_CHECK((root_gid = root.pw_gid), "setresgid", cleanup)
>
> if ((passwd_p = getpwnam("nobody")) == NULL) {
> tst_brkm(TBROK, NULL, "nobody user id doesn't exist");
>
> }
> nobody = *passwd_p;
> - nobody_gid = nobody.pw_gid;
> + GID16_CHECK((nobody_gid = nobody.pw_gid), "setresgid", cleanup)
>
> /* Pause if that option was specified
> * TEST_PAUSE contains the code to fork the test with the -c option.
> diff --git a/testcases/kernel/syscalls/setresgid/setresgid02.c b/testcases/kernel/syscalls/setresgid/setresgid02.c
> index 754fca1..113544e 100644
> --- a/testcases/kernel/syscalls/setresgid/setresgid02.c
> +++ b/testcases/kernel/syscalls/setresgid/setresgid02.c
> @@ -81,6 +81,7 @@
> #include <unistd.h>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define EXP_RET_VAL 0
>
> @@ -138,7 +139,7 @@ int main(int argc, char **argv)
>
> for (testno = 0; testno < TST_TOTAL; ++testno) {
>
> - TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
> + TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
> *tdat[testno].sgid));
>
> if (TEST_RETURN == EXP_RET_VAL) {
> @@ -202,21 +203,21 @@ void setup(void)
>
> }
> root = *passwd_p;
> - root_gid = root.pw_gid;
> + GID16_CHECK((root_gid = root.pw_gid), "setresgid", cleanup)
>
> if ((passwd_p = getpwnam("bin")) == NULL) {
> tst_brkm(TBROK, NULL, "bin user id doesn't exist");
>
> }
> bin = *passwd_p;
> - bin_gid = bin.pw_gid;
> + GID16_CHECK((bin_gid = bin.pw_gid), "setresgid", cleanup)
>
> if ((passwd_p = getpwnam("nobody")) == NULL) {
> tst_brkm(TBROK, NULL, "nobody user id doesn't exist");
>
> }
> nobody = *passwd_p;
> - nobody_gid = nobody.pw_gid;
> + GID16_CHECK((nobody_gid = nobody.pw_gid), "setresgid", cleanup)
>
> /* Set effective/saved gid to nobody */
> if (setresgid(-1, nobody_gid, nobody_gid) == -1) {
> diff --git a/testcases/kernel/syscalls/setresgid/setresgid03.c b/testcases/kernel/syscalls/setresgid/setresgid03.c
> index 32d7995..aa67081 100644
> --- a/testcases/kernel/syscalls/setresgid/setresgid03.c
> +++ b/testcases/kernel/syscalls/setresgid/setresgid03.c
> @@ -81,6 +81,7 @@
> #include <unistd.h>
> #include "test.h"
> #include "usctest.h"
> +#include "compat_16.h"
>
> #define EXP_RET_VAL -1
> #define EXP_ERRNO EPERM
> @@ -131,7 +132,7 @@ int main(int argc, char **argv)
>
> for (testno = 0; testno < TST_TOTAL; ++testno) {
>
> - TEST(setresgid(*tdat[testno].rgid, *tdat[testno].egid,
> + TEST(SETRESGID(cleanup, *tdat[testno].rgid, *tdat[testno].egid,
> *tdat[testno].sgid));
>
> TEST_ERROR_LOG(TEST_ERRNO);
> @@ -207,14 +208,14 @@ void setup(void)
>
> }
> bin = *passwd_p;
> - bin_gid = bin.pw_gid;
> + GID16_CHECK((bin_gid = bin.pw_gid), "setresgid", cleanup)
>
> if ((passwd_p = getpwnam("nobody")) == NULL) {
> tst_brkm(TBROK, NULL, "nobody user id doesn't exist");
>
> }
> nobody = *passwd_p;
> - nobody_gid = nobody.pw_gid;
> + GID16_CHECK((nobody_gid = nobody.pw_gid), "setresgid", cleanup)
>
> /* set the expected errnos... */
> TEST_EXP_ENOS(exp_enos);
> diff --git a/testcases/kernel/syscalls/setresgid/setresgid04.c b/testcases/kernel/syscalls/setresgid/setresgid04.c
> index 4e71910..019aaeb 100644
> --- a/testcases/kernel/syscalls/setresgid/setresgid04.c
> +++ b/testcases/kernel/syscalls/setresgid/setresgid04.c
> @@ -30,6 +30,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> char *TCID = "setresgid04";
> int TST_TOTAL = 1;
> @@ -70,13 +71,15 @@ static void setup(void)
> tst_tmpdir();
>
> ltpuser = SAFE_GETPWNAM(cleanup, "nobody");
> +
> + GID16_CHECK(ltpuser->pw_gid, "setresgid", cleanup)
> }
>
> static void setresgid_verify(void)
> {
> struct stat buf;
>
> - TEST(setresgid(-1, ltpuser->pw_gid, -1));
> + TEST(SETRESGID(cleanup, -1, ltpuser->pw_gid, -1));
>
> if (TEST_RETURN != 0) {
> tst_resm(TFAIL | TTERRNO, "setresgid failed unexpectedly");
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid01.c b/testcases/kernel/syscalls/setresuid/setresuid01.c
> index 39e1ac3..027aee3 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid01.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid01.c
> @@ -69,6 +69,7 @@
> #include "test.h"
> #include "usctest.h"
> #include <errno.h>
> +#include "compat_16.h"
>
> char *TCID = "setresuid01";
>
> @@ -140,7 +141,7 @@ int main(int ac, char **av)
>
> for (i = 0; i < TST_TOTAL; i++) {
> /* Set the real, effective or user id */
> - TEST(setresuid(*test_data[i].real_uid,
> + TEST(SETRESUID(cleanup, *test_data[i].real_uid,
> *test_data[i].eff_uid,
> *test_data[i].sav_uid));
>
> @@ -185,13 +186,13 @@ void setup(void)
> TEST_EXP_ENOS(exp_enos);
>
> root = *(getpwnam("root"));
> - root_pw_uid = root.pw_uid;
> + UID16_CHECK((root_pw_uid = root.pw_uid), "setresuid", cleanup)
>
> nobody = *(getpwnam("nobody"));
> - nobody_pw_uid = nobody.pw_uid;
> + UID16_CHECK((nobody_pw_uid = nobody.pw_uid), "setresuid", cleanup)
>
> bin = *(getpwnam("bin"));
> - bin_pw_uid = bin.pw_uid;
> + UID16_CHECK((bin_pw_uid = bin.pw_uid), "setresuid", cleanup)
>
> /* Pause if that option was specified
> * TEST_PAUSE contains the code to fork the test with the -c option.
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid02.c b/testcases/kernel/syscalls/setresuid/setresuid02.c
> index 0837c9e..bb50633 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid02.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid02.c
> @@ -65,6 +65,7 @@
> #include "usctest.h"
> #include <errno.h>
> #include <sys/wait.h>
> +#include "compat_16.h"
>
> char *TCID = "setresuid02";
>
> @@ -140,7 +141,7 @@ int main(int ac, char **av)
> for (i = 0; i < TST_TOTAL; i++) {
>
> /* Set the real, effective or saved user id */
> - TEST(setresuid(*test_data[i].real_uid,
> + TEST(SETRESUID(cleanup, *test_data[i].real_uid,
> *test_data[i].eff_uid,
> *test_data[i].sav_uid));
>
> @@ -196,10 +197,10 @@ void setup(void)
> }
>
> nobody = *(getpwnam("nobody"));
> - nobody_pw_uid = nobody.pw_uid;
> + UID16_CHECK((nobody_pw_uid = nobody.pw_uid), "setresuid", cleanup)
>
> bin = *(getpwnam("bin"));
> - bin_pw_uid = bin.pw_uid;
> + UID16_CHECK((bin_pw_uid = bin.pw_uid), "setresuid", cleanup)
>
> /* Pause if that option was specified
> * TEST_PAUSE contains the code to fork the test with the -i option.
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid03.c b/testcases/kernel/syscalls/setresuid/setresuid03.c
> index f624253..c679b82 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid03.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid03.c
> @@ -150,7 +150,7 @@ int main(int ac, char **av)
> for (i = 0; i < TST_TOTAL; i++) {
>
> /* Set the real, effective or saved user id */
> - TEST(setresuid(*test_data[i].real_uid,
> + TEST(SETRESUID(cleanup, *test_data[i].real_uid,
> *test_data[i].eff_uid,
> *test_data[i].sav_uid));
>
> @@ -207,13 +207,13 @@ void setup(void)
> }
>
> root = *(getpwnam("root"));
> - root_pw_uid = root.pw_uid;
> + UID16_CHECK((root_pw_uid = root.pw_uid), "setresuid", cleanup)
>
> nobody = *(getpwnam("nobody"));
> - nobody_pw_uid = nobody.pw_uid;
> + UID16_CHECK((nobody_pw_uid = nobody.pw_uid), "setresuid", cleanup)
>
> bin = *(getpwnam("bin"));
> - bin_pw_uid = bin.pw_uid;
> + UID16_CHECK((bin_pw_uid = bin.pw_uid), "setresuid", cleanup)
>
> /* Pause if that option was specified
> * TEST_PAUSE contains the code to fork the test with the -i option.
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid04.c b/testcases/kernel/syscalls/setresuid/setresuid04.c
> index 140d5f3..49b2616 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid04.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid04.c
> @@ -53,6 +53,7 @@
> #include "test.h"
> #include "usctest.h"
> #include <pwd.h>
> +#include "compat_16.h"
>
> char *TCID = "setresuid04";
> int TST_TOTAL = 1;
> @@ -111,8 +112,8 @@ void do_master_child(void)
> /* Reset tst_count in case we are looping */
> tst_count = 0;
>
> - if (setresuid(0, ltpuser->pw_uid, 0) == -1) {
> - perror("setfsuid failed");
> + if (SETRESUID(cleanup, 0, ltpuser->pw_uid, 0) == -1) {
> + perror("setresuid failed");
> exit(1);
> }
>
> @@ -176,8 +177,8 @@ void do_master_child(void)
> * the file with RDWR permissions.
> */
> tst_count++;
> - if (setresuid(0, 0, 0) == -1) {
> - perror("setfsuid failed");
> + if (SETRESUID(cleanup, 0, 0, 0) == -1) {
> + perror("setresuid failed");
> exit(1);
> }
>
> @@ -203,6 +204,8 @@ void setup(void)
>
> ltpuser = getpwnam(nobody_uid);
>
> + UID16_CHECK(ltpuser->pw_uid, "setresuid", cleanup)
> +
> tst_tmpdir();
>
> sprintf(testfile, "setresuid04file%d.tst", getpid());
> diff --git a/testcases/kernel/syscalls/setresuid/setresuid05.c b/testcases/kernel/syscalls/setresuid/setresuid05.c
> index 8880aeb..81175eb 100644
> --- a/testcases/kernel/syscalls/setresuid/setresuid05.c
> +++ b/testcases/kernel/syscalls/setresuid/setresuid05.c
> @@ -30,6 +30,7 @@
> #include "test.h"
> #include "usctest.h"
> #include "safe_macros.h"
> +#include "compat_16.h"
>
> char *TCID = "setresuid05";
> int TST_TOTAL = 1;
> @@ -70,13 +71,15 @@ static void setup(void)
> tst_tmpdir();
>
> ltpuser = SAFE_GETPWNAM(cleanup, "nobody");
> +
> + UID16_CHECK(ltpuser->pw_uid, "setresuid", cleanup)
> }
>
> static void setresuid_verify(void)
> {
> struct stat buf;
>
> - TEST(setresuid(-1, ltpuser->pw_uid, -1));
> + TEST(SETRESUID(cleanup, -1, ltpuser->pw_uid, -1));
>
> if (TEST_RETURN != 0) {
> tst_resm(TFAIL | TTERRNO, "setresuid failed unexpectedly");
> diff --git a/testcases/kernel/syscalls/utils/compat_16.h b/testcases/kernel/syscalls/utils/compat_16.h
> index 40bef59..b6a702d 100644
> --- a/testcases/kernel/syscalls/utils/compat_16.h
> +++ b/testcases/kernel/syscalls/utils/compat_16.h
> @@ -127,8 +127,28 @@ int SETREGID(void (cleanup)(void), GID_T rgid, GID_T egid)
> LTP_CREATE_SYSCALL(setregid, cleanup, rgid, egid);
> }
>
> +int SETRESUID(void (cleanup)(void), UID_T ruid, UID_T euid, UID_T suid)
> +{
> + LTP_CREATE_SYSCALL(setresuid, cleanup, ruid, euid, suid);
> +}
> +
> +int SETRESGID(void (cleanup)(void), GID_T rgid, GID_T egid, GID_T sgid)
> +{
> + LTP_CREATE_SYSCALL(setresgid, cleanup, rgid, egid, sgid);
> +}
> +
> +int FCHOWN(void (cleanup)(void), unsigned int fd, UID_T owner, GID_T group)
> +{
> + LTP_CREATE_SYSCALL(fchown, cleanup, fd, owner, group);
> +}
> +
> int LCHOWN(void (cleanup)(void), const char *path, UID_T owner, GID_T group)
> {
> LTP_CREATE_SYSCALL(lchown, cleanup, path, owner, group);
> }
> +
> +int CHOWN(void (cleanup)(void), const char *path, UID_T owner, GID_T group)
> +{
> + LTP_CREATE_SYSCALL(chown, cleanup, path, owner, group);
> +}
> #endif /* __LTP_COMPAT_16_H__ */
>
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
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] [PATCH v2] fix some syscall tests for 16-bit compat testing
2014-11-28 15:39 ` Stanislav Kholmanskikh
@ 2014-11-29 13:29 ` Han Pingtian
0 siblings, 0 replies; 9+ messages in thread
From: Han Pingtian @ 2014-11-29 13:29 UTC (permalink / raw)
To: ltp-list
On Fri, Nov 28, 2014 at 06:39:27PM +0300, Stanislav Kholmanskikh wrote:
>
>
> On 11/28/2014 11:33 AM, Han Pingtian wrote:
> > On Mon, Nov 24, 2014 at 05:53:32PM +0300, Stanislav Kholmanskikh wrote:
> >> Hi.
> >>
> >> In general, it looks good.
> >>
> >> I have only one comment, that it's possible that the uid/gid values we pass
> >> to the syscall may not fit into UID_T/GID_T. For example, when we get uid of
> >> nobody user in runtime and pass it to chown() or etc.
> >>
> >> Yes, it's more like an artificial case, but it's.
> >>
> >> We have UID16_CHECK and GID16_CHECK macros to check if the uid/gid fits the
> >> compat mode.
> >>
> >> What do you think about using it in test cases chown01, chown03, chown04,
> >> fchown01, fchown03, fchown04, setresgid*, setresuid* ?
> >>
> >> Thank you.
> >
> > Please review new patch which included UID16_CHECK and GID16_CHECK.
> >
> > Thanks.
>
> Hi!
>
> I pushed your patch with TCID_DEFINE added (overlooked it at that time),
> and also pushed a follow-up patch which:
> * fixes setresuid02_16, setresuid03_16, setresuid04_16 - they do
> testing inside their children.
> * explicitly declares setresuid(), setresgid() in compat_16.h. This is
> to manage compilation warnings.
>
> Tested in OL6 with 2.6.39-400.215.11.el6uek.x86_64 and
> 2.6.39-400.214.5.el6uek.i686 kernels.
>
> Thank you.
>
Thanks!
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
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:[~2014-12-05 1:37 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-10-31 13:39 [LTP] chown and 16 bit syscall testing Han Pingtian
2014-11-10 9:07 ` Stanislav Kholmanskikh
2014-11-13 7:57 ` Han Pingtian
2014-11-19 8:15 ` Stanislav Kholmanskikh
2014-11-21 7:59 ` [LTP] [PATCH] fix some syscall tests for 16-bit compat testing Han Pingtian
2014-11-24 14:53 ` Stanislav Kholmanskikh
2014-11-28 8:33 ` [LTP] [PATCH v2] " Han Pingtian
2014-11-28 15:39 ` Stanislav Kholmanskikh
2014-11-29 13:29 ` Han Pingtian
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox