summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrdivacky <rdivacky@FreeBSD.org>2008-07-23 17:19:02 +0000
committerrdivacky <rdivacky@FreeBSD.org>2008-07-23 17:19:02 +0000
commit32f23bcf55d924e7417584db022246d17ccf6f46 (patch)
tree05088ed26bc9f59dba7fee2a18175a16764fe364
parent01d1a97b944478975f9f98c58e8179cd5f352a36 (diff)
downloadFreeBSD-src-32f23bcf55d924e7417584db022246d17ccf6f46.zip
FreeBSD-src-32f23bcf55d924e7417584db022246d17ccf6f46.tar.gz
Fix linux_alarm, the linux behaviour is to limit the
secs to INT_MAX when the passed in parameter is bigger than INT_MAX. Submitted by: Dmitry Chagin <chagin.dmitry gmail com> Approved by: kib (mentor)
-rw-r--r--sys/compat/linux/linux_misc.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/compat/linux/linux_misc.c b/sys/compat/linux/linux_misc.c
index e9fdccc..57d315f 100644
--- a/sys/compat/linux/linux_misc.c
+++ b/sys/compat/linux/linux_misc.c
@@ -170,17 +170,20 @@ int
linux_alarm(struct thread *td, struct linux_alarm_args *args)
{
struct itimerval it, old_it;
+ u_int secs;
int error;
#ifdef DEBUG
if (ldebug(alarm))
printf(ARGS(alarm, "%u"), args->secs);
#endif
+
+ secs = args->secs;
- if (args->secs > 100000000)
- return (EINVAL);
+ if (secs > INT_MAX)
+ secs = INT_MAX;
- it.it_value.tv_sec = (long)args->secs;
+ it.it_value.tv_sec = (long) secs;
it.it_value.tv_usec = 0;
it.it_interval.tv_sec = 0;
it.it_interval.tv_usec = 0;
OpenPOWER on IntegriCloud