X-Git-Url: http://ftp.safe.ca/?a=blobdiff_plain;f=drivers%2Frtc%2Frtc-cmos.c;h=b6d35f50e40488141debded78ca4d5992f78288a;hb=17e2161654da4e6bdfd8d53d4f52e820ee93f423;hp=d37bb86db5d08f345b5b600fba8b9a87cbe29dd9;hpb=d4afc76c0b59a37113e184004f8a9989cfc1ddd3;p=safe%2Fjmp%2Flinux-2.6 diff --git a/drivers/rtc/rtc-cmos.c b/drivers/rtc/rtc-cmos.c index d37bb86..b6d35f5 100644 --- a/drivers/rtc/rtc-cmos.c +++ b/drivers/rtc/rtc-cmos.c @@ -35,6 +35,7 @@ #include #include #include +#include /* this is for "generic access to PC-style RTC" using CMOS_READ/CMOS_WRITE */ #include @@ -58,7 +59,7 @@ struct cmos_rtc { }; /* both platform and pnp busses use negative numbers for invalid irqs */ -#define is_valid_irq(n) ((n) >= 0) +#define is_valid_irq(n) ((n) > 0) static const char driver_name[] = "rtc_cmos"; @@ -384,6 +385,8 @@ static int cmos_irq_set_freq(struct device *dev, int freq) if (!is_valid_irq(cmos->irq)) return -ENXIO; + if (!is_power_of_2(freq)) + return -EINVAL; /* 0 = no irqs; 1 = 2^15 Hz ... 15 = 2^0 Hz */ f = ffs(freq); if (f-- > 16)