On Wed, Jul 15, 2009 at 6:03 PM, Wang Yong<[email protected]> wrote:
> 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 <[email protected]>
>>>
>>> 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 <[email protected]>
>
> --- 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);

That patch works so I'm going to commit it to CVS:

gcoo...@orangebox /scratch/ltp-nova2/ltp-nova $
testcases/kernel/syscalls/utimes/utimes01
utimes01    0  INFO  :  (case00) START
utimes01    0  INFO  :  E:0,1000 <=> R:0,1000
EXPECT: return value(ret)=(N >= 0) errno=0 (Success)
RESULT: return value(ret)=       0 errno=0 (Success)
utimes01    0  INFO  :  (case00) END => OK
utimes01    0  INFO  :  (case01) START
utimes01    0  INFO  :  E:1000,0 <=> R:1000,0
EXPECT: return value(ret)=(N >= 0) errno=0 (Success)
RESULT: return value(ret)=       0 errno=0 (Success)
utimes01    0  INFO  :  (case01) END => OK
utimes01    0  INFO  :  (case02) START
seteuid failed.
utimes01    0  INFO  :  (case02) END => OK
utimes01    0  INFO  :  (case03) START
EXPECT: return value(ret)=-1 errno=2 (No such file or directory)
RESULT: return value(ret)=-1 errno=2 (No such file or directory)
utimes01    0  INFO  :  (case03) END => OK
utimes01    0  INFO  :  (case04) START
EXPECT: return value(ret)=-1 errno=14 (Bad address)
RESULT: return value(ret)=-1 errno=14 (Bad address)
utimes01    0  INFO  :  (case04) END => OK
utimes01    1  PASS  :  utimes call succeeded

Thanks!
-Garrett

------------------------------------------------------------------------------
Enter the BlackBerry Developer Challenge  
This is your chance to win up to $100,000 in prizes! For a limited time, 
vendors submitting new applications to BlackBerry App World(TM) will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize  
details at: http://p.sf.net/sfu/Challenge
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to