From: Wang Y. <wan...@cn...> - 2009-07-16 01:02:33
|
Hi, Subrata Modak Subrata Modak wrote as: > On Thu, 2009-07-09 at 15:35 +0800, Wang Yong wrote: > >> Whenever system called utimes, the error message returned was EINVAL, >> because the member variable of struct timeval was not initialized, >> so initialize it. >> >> Signed-off-by: WangYong <wan...@cn...> >> >> diff -Nurp ltp-full-20090630/testcases/kernel/syscalls/utimes/utimes01.c >> ltp-full-20090630.new/testcases/kernel/syscalls/utimes/utimes01.c >> --- ltp.orig/testcases/kernel/syscalls/utimes/utimes01.c 2009-07-01 >> 17:20:12.000000000 +0800 >> +++ ltp/testcases/kernel/syscalls/utimes/utimes01.c 2009-07-08 >> 17:20:38.000000000 +0800 >> @@ -248,6 +248,7 @@ static int do_test(struct test_case *tc) >> /* >> * Execute system call >> */ >> + memset(tv, 0, 2 * sizeof(struct timeval)); >> > > Initializing this is good. But i do not find any visible difference in > running this test pre and post patching either on 2.6.29 or 2.6.18 > kernels. The following output is generated each time: > > # ./testcases/bin/utimes01 > utimes01 0 INFO : (case00) START > open failed. > utimes01 0 INFO : (case00) END => NG > utimes01 0 INFO : (case01) START > open failed. > utimes01 0 INFO : (case01) END => NG > utimes01 0 INFO : (case02) START > open failed. > utimes01 0 INFO : (case02) END => NG > utimes01 0 INFO : (case03) START > open failed. > utimes01 0 INFO : (case03) END => NG > utimes01 0 INFO : (case04) START > open failed. > utimes01 0 INFO : (case04) END => NG > utimes01 1 FAIL : utimes01 failed - errno = 2 : No such file or > directory > utimes01 0 INFO : NG > > # echo $? > 1 > I have fixed this problem. [PATCH] Fix failure of the utimes01 test Whenever system called utimes, the error message returned was EINVAL, because the member variable of struct timeval was not initialized, so initialize it. This patch also fixed the path which we pass to setup_file(). If progdir is not a absolute pathname of the working directory, the file open will fail. Signed-off-by: WangYong <wan...@cn...> --- a/testcases/kernel/syscalls/utimes/utimes01.c 2009-07-15 10:22:41.000000000 +0800 +++ b/testcases/kernel/syscalls/utimes/utimes01.c 2009-07-16 08:55:13.000000000 +0800 @@ -138,7 +138,6 @@ void setup() { */ static int opt_debug; static char *progname; -static char *progdir; enum test_type { NORMAL, @@ -232,7 +231,7 @@ static int do_test(struct test_case *tc) struct stat st; uid_t old_uid; - TEST(rc = setup_file(progdir, "test.file", fpath)); + TEST(rc = setup_file(TESTDIR, "test.file", fpath)); if (rc < 0) return 1; @@ -248,6 +247,7 @@ static int do_test(struct test_case *tc) /* * Execute system call */ + memset(tv, 0, sizeof(tv)); tv[0].tv_sec = tc->a_sec; tv[1].tv_sec = tc->m_sec; TEST(len = strlen(fpath)); @@ -338,9 +338,6 @@ int main(int ac, char **av) { progname = strchr(av[0], '/'); progname = progname ? progname + 1 : av[0]; - progdir = strdup(av[0]); - progdir = dirname(progdir); - /* parse standard options */ if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char *)NULL){ tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); |