From: Andrew Chen <[email protected]> Ensure file descriptors are closed before unlinking them, or we cannot remove the generated directories after these tests. The leftover directories may cause tests failed in latter runs once the directory names are hit.
Signed-off-by: Andrew Chen <[email protected]> --- .../testcases/kernel/syscalls/fstatat/fstatat01.c | 4 +++- .../kernel/syscalls/futimesat/futimesat01.c | 4 +++- .../testcases/kernel/syscalls/openat/openat01.c | 11 ++++++++++- .../kernel/syscalls/readlinkat/readlinkat01.c | 4 +++- .../kernel/syscalls/renameat/renameat01.c | 4 +++- .../kernel/syscalls/unlinkat/unlinkat01.c | 5 ++++- 6 files changed, 26 insertions(+), 6 deletions(-) diff --git a/ltp-full-20101031/testcases/kernel/syscalls/fstatat/fstatat01.c b/ltp-full-20101031/testcases/kernel/syscalls/fstatat/fstatat01.c index 5f81dac..f5938eb 100644 --- a/ltp-full-20101031/testcases/kernel/syscalls/fstatat/fstatat01.c +++ b/ltp-full-20101031/testcases/kernel/syscalls/fstatat/fstatat01.c @@ -73,6 +73,7 @@ char testfile[256]; char testfile2[256]; char testfile3[256]; int dirfd, fd, ret; +int innerfd; int fds[TEST_CASES]; char *filenames[TEST_CASES]; int expected_errno[TEST_CASES] = { 0, 0, ENOTDIR, EBADF, EINVAL, 0 }; @@ -217,7 +218,7 @@ void setup_every_copy() exit(-1); } - fd = open(testfile2, O_CREAT | O_RDWR, 0600); + innerfd = open(testfile2, O_CREAT | O_RDWR, 0600); if (fd < 0) { perror("open: "); exit(-1); @@ -258,6 +259,7 @@ void setup() void cleanup() { /* Remove them */ + close(innerfd); unlink(testfile2); unlink(testfile3); unlink(testfile); diff --git a/ltp-full-20101031/testcases/kernel/syscalls/futimesat/futimesat01.c b/ltp-full-20101031/testcases/kernel/syscalls/futimesat/futimesat01.c index d82a2c4..6729941 100644 --- a/ltp-full-20101031/testcases/kernel/syscalls/futimesat/futimesat01.c +++ b/ltp-full-20101031/testcases/kernel/syscalls/futimesat/futimesat01.c @@ -73,6 +73,7 @@ char testfile[256]; char testfile2[256]; char testfile3[256]; int dirfd, fd, ret; +int innerfd; int fds[TEST_CASES]; char *filenames[TEST_CASES]; int expected_errno[TEST_CASES] = { 0, 0, ENOTDIR, EBADF, 0 }; @@ -184,7 +185,7 @@ void setup_every_copy() exit(-1); } - fd = open(testfile2, O_CREAT | O_RDWR, 0600); + innerfd = open(testfile2, O_CREAT | O_RDWR, 0600); if (fd < 0) { perror("open: "); exit(-1); @@ -224,6 +225,7 @@ void setup() void cleanup() { /* Remove them */ + close(innerfd); unlink(testfile2); unlink(testfile3); unlink(testfile); diff --git a/ltp-full-20101031/testcases/kernel/syscalls/openat/openat01.c b/ltp-full-20101031/testcases/kernel/syscalls/openat/openat01.c index be40c63..38f2014 100644 --- a/ltp-full-20101031/testcases/kernel/syscalls/openat/openat01.c +++ b/ltp-full-20101031/testcases/kernel/syscalls/openat/openat01.c @@ -72,6 +72,7 @@ char testfile[256]; char testfile2[256]; char testfile3[256]; int dirfd, fd, ret; +int innerfds[2]; int fds[TEST_CASES]; char *filenames[TEST_CASES]; int expected_errno[TEST_CASES] = { 0, 0, ENOTDIR, EBADF, 0 }; @@ -118,9 +119,12 @@ int main(int ac, char **av) * Call openat */ for (i = 0; i < TST_TOTAL; i++) { - TEST(myopenat + TEST(fd = myopenat (fds[i], filenames[i], O_CREAT | O_WRONLY, 0600)); + if (i < 2) + innerfds[i] = fd; + /* check return code */ if (TEST_ERRNO == expected_errno[i]) { @@ -206,7 +210,12 @@ void setup() void cleanup() { /* Remove them */ + int i; char tmppathname[256]; + + for (i = 0; i < 2; ++i) + close(innerfds[i]); + strcpy(tmppathname, pathname); unlink(strcat(strcat(tmppathname, "/"), testfile)); unlink(testfile); diff --git a/ltp-full-20101031/testcases/kernel/syscalls/readlinkat/readlinkat01.c b/ltp-full-20101031/testcases/kernel/syscalls/readlinkat/readlinkat01.c index a6963f1..78768fb 100644 --- a/ltp-full-20101031/testcases/kernel/syscalls/readlinkat/readlinkat01.c +++ b/ltp-full-20101031/testcases/kernel/syscalls/readlinkat/readlinkat01.c @@ -83,6 +83,7 @@ char dtestfile2[256]; char testfile3[256]; char dtestfile3[256]; int dirfd, fd, ret; +int innerfd; int fds[TEST_CASES]; char *filenames[TEST_CASES]; int expected_errno[TEST_CASES] = { 0, 0, ENOTDIR, EBADF, 0 }; @@ -222,7 +223,7 @@ void setup_every_copy() exit(-1); } - fd = open(testfile2, O_CREAT | O_RDWR, 0600); + innerfd = open(testfile2, O_CREAT | O_RDWR, 0600); if (fd < 0) { perror("open: "); exit(-1); @@ -285,6 +286,7 @@ void setup() void cleanup() { /* Remove them */ + close(innerfd); unlink(testfile2); unlink(dtestfile2); unlink(testfile3); diff --git a/ltp-full-20101031/testcases/kernel/syscalls/renameat/renameat01.c b/ltp-full-20101031/testcases/kernel/syscalls/renameat/renameat01.c index 3f27c95..5eff504 100644 --- a/ltp-full-20101031/testcases/kernel/syscalls/renameat/renameat01.c +++ b/ltp-full-20101031/testcases/kernel/syscalls/renameat/renameat01.c @@ -81,6 +81,7 @@ char dtestfile2[256]; char testfile3[256]; char dtestfile3[256]; int olddirfd, newdirfd, fd, ret; +int innerfd; int oldfds[TEST_CASES], newfds[TEST_CASES]; char *oldfilenames[TEST_CASES], *newfilenames[TEST_CASES]; int expected_errno[TEST_CASES] = { 0, 0, ENOTDIR, EBADF, 0 }; @@ -208,7 +209,7 @@ void setup_every_copy() exit(-1); } - fd = open(testfile2, O_CREAT | O_RDWR, 0600); + innerfd = open(testfile2, O_CREAT | O_RDWR, 0600); if (fd < 0) { perror("open: "); exit(-1); @@ -258,6 +259,7 @@ void setup() void cleanup() { /* Remove them */ + close(innerfd); unlink(testfile2); unlink(dtestfile2); unlink(testfile3); diff --git a/ltp-full-20101031/testcases/kernel/syscalls/unlinkat/unlinkat01.c b/ltp-full-20101031/testcases/kernel/syscalls/unlinkat/unlinkat01.c index f8977f5..a20c085 100644 --- a/ltp-full-20101031/testcases/kernel/syscalls/unlinkat/unlinkat01.c +++ b/ltp-full-20101031/testcases/kernel/syscalls/unlinkat/unlinkat01.c @@ -78,6 +78,7 @@ char testfile[256]; char testfile2[256]; char testfile3[256]; int dirfd, fd, ret; +int innerfd; int fds[TEST_CASES]; char *filenames[TEST_CASES]; int expected_errno[TEST_CASES] = { 0, 0, ENOTDIR, EBADF, EINVAL, 0, 0 }; @@ -196,7 +197,7 @@ void setup_every_copy() exit(-1); } - fd = open(testfile2, O_CREAT | O_RDWR, 0600); + innerfd = open(testfile2, O_CREAT | O_RDWR, 0600); if (fd < 0) { perror("open: "); exit(-1); @@ -239,6 +240,8 @@ void cleanup() { /* Remove them */ char tmppathname[256] = ""; + + close(innerfd); strcat(strcat(strcat(tmppathname, pathname), "/"), subpathname); rmdir(tmppathname); unlink(testfile2); -- 1.6.5 ------------------------------------------------------------------------------ All of the data generated in your IT infrastructure is seriously valuable. Why? It contains a definitive record of application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-d2d-c2 _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
