Hi, On 18/05/2016 at 21:09:29 +0200, Heinrich Schuchardt wrote : > Operator ! has a higher priority than &&. > (!(mday >= 1) && (mday <= 31)) is false for mday == 32. > > Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de> > --- > drivers/rtc/rtc-ds1685.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/rtc/rtc-ds1685.c b/drivers/rtc/rtc-ds1685.c > index b3ce3c6..b4fae3c 100644 > --- a/drivers/rtc/rtc-ds1685.c > +++ b/drivers/rtc/rtc-ds1685.c > @@ -389,7 +389,7 @@ ds1685_rtc_read_alarm(struct device *dev, struct > rtc_wkalrm *alrm) > ds1685_rtc_end_data_access(rtc); > > /* Check month date. */ > - if (!(mday >= 1) && (mday <= 31)) > + if ((mday < 1) || (mday > 31)) > return -EDOM; >
This is a good catch but I think this also breaks the bcd_mode == 1 case because the test happens after the bin2bcd conversion. Can you check/fix? > /* > @@ -461,7 +461,7 @@ ds1685_rtc_set_alarm(struct device *dev, struct > rtc_wkalrm *alrm) > RTC_MDAY_BCD_MASK); > > /* Check the month date for validity. */ > - if (!(mday >= 1) && (mday <= 31)) > + if ((mday < 1) || (mday > 31)) > return -EDOM; > > /* -- Alexandre Belloni, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com