linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* RE: [BUG] settimeofday(2) succeeds for microsecond value more than USEC_PER_SEC and for negative value
@ 2003-04-11 13:07 Aniruddha M Marathe
  2003-04-11 21:36 ` george anzinger
  0 siblings, 1 reply; 7+ messages in thread
From: Aniruddha M Marathe @ 2003-04-11 13:07 UTC (permalink / raw)
  To: george anzinger; +Cc: linux-kernel, Chandrashekhar RS

Even then, I think, we can modify the settimeofday  code to check -1 and USEC_PER_SEC
Conditions, can't we?


|-----Original Message-----
|From: george anzinger [mailto:george@mvista.com] 
|Sent: Friday, April 11, 2003 11:56 AM
|To: Aniruddha M Marathe
|Cc: linux-kernel@vger.kernel.org; Chandrashekhar RS
|Subject: Re: [BUG] settimeofday(2) succeeds for microsecond 
|value more than USEC_PER_SEC and for negative value
|
|
|Aniruddha M Marathe wrote:
|> Settimeofday(2) should return EINVAL in case where 
|tv.tv_usec parameter is more than 
|> USEC_PER_SEC (more than 10^6 ) or for negative values of tv.tv_usec. 
|> It returns 0 (success) instead.
|> 
|> Clock_settimeofday(2) (kernel/posix-timers.c) also uses 
|do_sys_settimeofday() and faces the
|> Same problem.
|> 
|> I think this is a bug. If you confirm, I will send a patch.
|
|Yes, it is a known problem, turned up by some the posix timers tests. 
|  I suppose it is too much to ask, but it would be nice if 
|do_sys_settimeofday() took a timespec instead of a timeval.  Of course 
|this changes the interface for all the archs, but it would allow the 
|clock_settimeofday to send in the nsec value.
|
|-g
|
|> 
|> Regards,
|> Aniruddha Marathe
|> WIPRO Technologies, India
|> -
|> To unsubscribe from this list: send the line "unsubscribe 
|linux-kernel" in
|> the body of a message to majordomo@vger.kernel.org
|> More majordomo info at  http://vger.kernel.org/majordomo-info.html
|> Please read the FAQ at  http://www.tux.org/lkml/
|> 
|
|-- 
|George Anzinger   george@mvista.com
|High-res-timers:  http://sourceforge.net/projects/high-res-timers/
|Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml
|
|

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BUG] settimeofday(2) succeeds for microsecond value more than USEC_PER_SEC and for negative value
  2003-04-11 13:07 [BUG] settimeofday(2) succeeds for microsecond value more than USEC_PER_SEC and for negative value Aniruddha M Marathe
@ 2003-04-11 21:36 ` george anzinger
  2003-05-02 18:06   ` Urs Thuermann
  0 siblings, 1 reply; 7+ messages in thread
From: george anzinger @ 2003-04-11 21:36 UTC (permalink / raw)
  To: Aniruddha M Marathe; +Cc: linux-kernel, Chandrashekhar RS

Aniruddha M Marathe wrote:
> Even then, I think, we can modify the settimeofday  code to check -1 and USEC_PER_SEC
> Conditions, can't we?
> 
Uh, sure.  This is the test I prefer:

	if( (unsigned long)tv->usec > USEC_PER_SEC)
		return EINVAL;

Note that the unsigned picks up the negative value as well as the > 
(and it does it in only one machine code test/jmp :)

This change should go in do_sys_settimeofday() in kernel/time.c.  It 
will fix both settimeofday and clock_settime(CLOCK_REALTIME,...  And 
also fixes it in all archs.

-g
		
> 
> |-----Original Message-----
> |From: george anzinger [mailto:george@mvista.com] 
> |Sent: Friday, April 11, 2003 11:56 AM
> |To: Aniruddha M Marathe
> |Cc: linux-kernel@vger.kernel.org; Chandrashekhar RS
> |Subject: Re: [BUG] settimeofday(2) succeeds for microsecond 
> |value more than USEC_PER_SEC and for negative value
> |
> |
> |Aniruddha M Marathe wrote:
> |> Settimeofday(2) should return EINVAL in case where 
> |tv.tv_usec parameter is more than 
> |> USEC_PER_SEC (more than 10^6 ) or for negative values of tv.tv_usec. 
> |> It returns 0 (success) instead.
> |> 
> |> Clock_settimeofday(2) (kernel/posix-timers.c) also uses 
> |do_sys_settimeofday() and faces the
> |> Same problem.
> |> 
> |> I think this is a bug. If you confirm, I will send a patch.
> |
> |Yes, it is a known problem, turned up by some the posix timers tests. 
> |  I suppose it is too much to ask, but it would be nice if 
> |do_sys_settimeofday() took a timespec instead of a timeval.  Of course 
> |this changes the interface for all the archs, but it would allow the 
> |clock_settimeofday to send in the nsec value.
> |
> |-g
> |
> |> 
> |> Regards,
> |> Aniruddha Marathe
> |> WIPRO Technologies, India
> |> -
> |> To unsubscribe from this list: send the line "unsubscribe 
> |linux-kernel" in
> |> the body of a message to majordomo@vger.kernel.org
> |> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> |> Please read the FAQ at  http://www.tux.org/lkml/
> |> 
> |
> |-- 
> |George Anzinger   george@mvista.com
> |High-res-timers:  http://sourceforge.net/projects/high-res-timers/
> |Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml
> |
> |
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

-- 
George Anzinger   george@mvista.com
High-res-timers:  http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BUG] settimeofday(2) succeeds for microsecond value more than USEC_PER_SEC and for negative value
  2003-04-11 21:36 ` george anzinger
@ 2003-05-02 18:06   ` Urs Thuermann
  0 siblings, 0 replies; 7+ messages in thread
From: Urs Thuermann @ 2003-05-02 18:06 UTC (permalink / raw)
  To: linux-kernel

george anzinger <george@mvista.com> writes:

> Uh, sure.  This is the test I prefer:
> 
> 	if( (unsigned long)tv->usec > USEC_PER_SEC)
> 		return EINVAL;
> 
> Note that the unsigned picks up the negative value as well as the >
> (and it does it in only one machine code test/jmp :)

No, don't do the compilers job.  Just write

        if (tv->usec < 0 || tv->usec >= USEC_PER_SEC) { ... }

This is easier to read, portable, and generates the same machine code
as your C code, at least in all gcc versions since gcc-2.7.2.3 (I
don't have older gcc versions here on my machine to test).


urs

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BUG] settimeofday(2) succeeds for microsecond value more than USEC_PER_SEC and for negative value
  2003-04-12 10:43 Aniruddha M Marathe
@ 2003-04-12 19:25 ` george anzinger
  0 siblings, 0 replies; 7+ messages in thread
From: george anzinger @ 2003-04-12 19:25 UTC (permalink / raw)
  To: Aniruddha M Marathe; +Cc: linux-kernel

Aniruddha M Marathe wrote:
> |Aniruddha M Marathe wrote:
> |> Even then, I think, we can modify the settimeofday  code to 
> |check -1 and USEC_PER_SEC
> |> Conditions, can't we?
> |> 
> 
> George wrote:
> 
> |Uh, sure.  This is the test I prefer:
> |
> |	if( (unsigned long)tv->usec > USEC_PER_SEC)
> |		return EINVAL;
> |
> |
> |This change should go in do_sys_settimeofday() in kernel/time.c.  It 
> |will fix both settimeofday and clock_settime(CLOCK_REALTIME,...  And 
> |also fixes it in all archs.
> |
> |-g
> 
> How about
> If( (unsigned long)tv->usec >= USEC_PER_SEC)
> 	return EINVAL;

Right, my mistake ;)
-g
> 
> Even if tv_usec value is 10^6, it should give EINVAL.
> Man page must also be updated
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

-- 
George Anzinger   george@mvista.com
High-res-timers:  http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml


^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [BUG] settimeofday(2) succeeds for microsecond value more than USEC_PER_SEC and for negative value
@ 2003-04-12 10:43 Aniruddha M Marathe
  2003-04-12 19:25 ` george anzinger
  0 siblings, 1 reply; 7+ messages in thread
From: Aniruddha M Marathe @ 2003-04-12 10:43 UTC (permalink / raw)
  To: george anzinger; +Cc: linux-kernel

|Aniruddha M Marathe wrote:
|> Even then, I think, we can modify the settimeofday  code to 
|check -1 and USEC_PER_SEC
|> Conditions, can't we?
|> 

George wrote:

|Uh, sure.  This is the test I prefer:
|
|	if( (unsigned long)tv->usec > USEC_PER_SEC)
|		return EINVAL;
|
|
|This change should go in do_sys_settimeofday() in kernel/time.c.  It 
|will fix both settimeofday and clock_settime(CLOCK_REALTIME,...  And 
|also fixes it in all archs.
|
|-g

How about
If( (unsigned long)tv->usec >= USEC_PER_SEC)
	return EINVAL;

Even if tv_usec value is 10^6, it should give EINVAL.
Man page must also be updated

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [BUG] settimeofday(2) succeeds for microsecond value more than USEC_PER_SEC and for negative value
  2003-04-11  5:12 Aniruddha M Marathe
@ 2003-04-11  6:26 ` george anzinger
  0 siblings, 0 replies; 7+ messages in thread
From: george anzinger @ 2003-04-11  6:26 UTC (permalink / raw)
  To: Aniruddha M Marathe; +Cc: linux-kernel, Chandrashekhar RS

Aniruddha M Marathe wrote:
> Settimeofday(2) should return EINVAL in case where tv.tv_usec parameter is more than 
> USEC_PER_SEC (more than 10^6 ) or for negative values of tv.tv_usec. 
> It returns 0 (success) instead.
> 
> Clock_settimeofday(2) (kernel/posix-timers.c) also uses do_sys_settimeofday() and faces the
> Same problem.
> 
> I think this is a bug. If you confirm, I will send a patch.

Yes, it is a known problem, turned up by some the posix timers tests. 
  I suppose it is too much to ask, but it would be nice if 
do_sys_settimeofday() took a timespec instead of a timeval.  Of course 
this changes the interface for all the archs, but it would allow the 
clock_settimeofday to send in the nsec value.

-g

> 
> Regards,
> Aniruddha Marathe
> WIPRO Technologies, India
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/
> 

-- 
George Anzinger   george@mvista.com
High-res-timers:  http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [BUG] settimeofday(2) succeeds for microsecond value more than USEC_PER_SEC and for negative value
@ 2003-04-11  5:12 Aniruddha M Marathe
  2003-04-11  6:26 ` george anzinger
  0 siblings, 1 reply; 7+ messages in thread
From: Aniruddha M Marathe @ 2003-04-11  5:12 UTC (permalink / raw)
  To: george; +Cc: linux-kernel, Chandrashekhar RS

Settimeofday(2) should return EINVAL in case where tv.tv_usec parameter is more than 
USEC_PER_SEC (more than 10^6 ) or for negative values of tv.tv_usec. 
It returns 0 (success) instead.

Clock_settimeofday(2) (kernel/posix-timers.c) also uses do_sys_settimeofday() and faces the
Same problem.

I think this is a bug. If you confirm, I will send a patch.

Regards,
Aniruddha Marathe
WIPRO Technologies, India

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2003-05-02 17:57 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2003-04-11 13:07 [BUG] settimeofday(2) succeeds for microsecond value more than USEC_PER_SEC and for negative value Aniruddha M Marathe
2003-04-11 21:36 ` george anzinger
2003-05-02 18:06   ` Urs Thuermann
  -- strict thread matches above, loose matches on Subject: below --
2003-04-12 10:43 Aniruddha M Marathe
2003-04-12 19:25 ` george anzinger
2003-04-11  5:12 Aniruddha M Marathe
2003-04-11  6:26 ` george anzinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).