On Sat, Jul 18, 2009 at 9:53 PM, Garrett Cooper<[email protected]> wrote:
> 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

Nm -- someone else did with the correct memset size ;)...
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