diff options
author | Clemens Ladisch <clemens@ladisch.de> | 2005-10-30 18:03:29 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-10-30 20:37:29 -0500 |
commit | 9090e6db87e3bdb2a2c187ebc0f9175a9f9e5c6f (patch) | |
tree | 46e4a5a27f9d6c694aec2ffba54f90947e8b0477 /drivers | |
parent | 874ec33ff9ccf3651590697a2c2923b911bf31d0 (diff) |
[PATCH] hpet: disallow zero interrupt frequency
Disallow setting an interrupt frequency of zero (which would result in a
division by zero), and disallow enabling the interrupt when the frequency
hasn't yet been set (which would use an interrupt period of zero).
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/char/hpet.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c index c055bb630ffc..b619ca5eaf8c 100644 --- a/drivers/char/hpet.c +++ b/drivers/char/hpet.c | |||
@@ -364,6 +364,9 @@ static int hpet_ioctl_ieon(struct hpet_dev *devp) | |||
364 | hpet = devp->hd_hpet; | 364 | hpet = devp->hd_hpet; |
365 | hpetp = devp->hd_hpets; | 365 | hpetp = devp->hd_hpets; |
366 | 366 | ||
367 | if (!devp->hd_ireqfreq) | ||
368 | return -EIO; | ||
369 | |||
367 | v = readq(&timer->hpet_config); | 370 | v = readq(&timer->hpet_config); |
368 | spin_lock_irq(&hpet_lock); | 371 | spin_lock_irq(&hpet_lock); |
369 | 372 | ||
@@ -516,7 +519,7 @@ hpet_ioctl_common(struct hpet_dev *devp, int cmd, unsigned long arg, int kernel) | |||
516 | break; | 519 | break; |
517 | } | 520 | } |
518 | 521 | ||
519 | if (arg & (arg - 1)) { | 522 | if (!arg || (arg & (arg - 1))) { |
520 | err = -EINVAL; | 523 | err = -EINVAL; |
521 | break; | 524 | break; |
522 | } | 525 | } |