lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 25 Jun 2012 09:18:54 +0100
From:	viresh kumar <viresh.kumar2@....com>
To:	Devendra Naga <devendra.aaru@...il.com>
CC:	Andrew Morton <akpm@...ux-foundation.org>,
	Alessandro Zummo <a.zummo@...ertech.it>,
	Rajeev KUMAR <rajeev-dlh.kumar@...com>,
	Viresh Kumar <viresh.linux@...il.com>,
	"spear-devel@...t.st.com" <spear-devel@...t.st.com>,
	"rtc-linux@...glegroups.com" <rtc-linux@...glegroups.com>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH] rtc/rtc-spear: remove unnecessary check against rtc_valid_tm
 and tm2bcd


Hi Devendra,

On 23/06/12 12:43, Devendra Naga wrote:
> rtc_valid_tm is always return
> -EINVAL if the time doesn't represent a valid date and time and 0 if its.
>
> so we can simply do rtc_valid_tm(tm) rather doing rtc_valid_tm(tm) != 0 checking.
> and also tm2bcd() does return -EINVAL if the time doesn't represent a valid date and time
> and 0 if its.
>
> and also removing err because is_write_complete will return -EIO if our write to the
> RTC registers didn't happen and 0 if its.
>
> Signed-off-by: Devendra Naga <devendra.aaru@...il.com>
> ---
>
> This is only tested by compiling the code with arm-linux-gcc
>
> /bin/arm-linux-gnueabihf-gcc --version
>
> arm-linux-gnueabihf-gcc (crosstool-NG linaro-1.13.1-2012.05-20120523 - Linaro GCC 2012.05) 4.7.1 20120514 (prerelease)
>
>  drivers/rtc/rtc-spear.c |   13 +++++--------
>  1 file changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/rtc/rtc-spear.c b/drivers/rtc/rtc-spear.c
> index e278547..eb7d399 100644
> --- a/drivers/rtc/rtc-spear.c
> +++ b/drivers/rtc/rtc-spear.c
> @@ -172,7 +172,7 @@ static irqreturn_t spear_rtc_irq(int irq, void *dev_id)
>
>  static int tm2bcd(struct rtc_time *tm)
>  {
> -     if (rtc_valid_tm(tm) != 0)
> +     if (rtc_valid_tm(tm))
>               return -EINVAL;

The name of this routine conflicts with its behavior (In my opinion :) )
rtc_valid_tm() should have returned
- false or true
OR
less than zero (invalid) or greater than zero (valid)

Probably second one is opted for it. so, it would make more sense to have something like

if (rtc_valid_tm() < 0)
        return -EINVAL;

instead of what you went for. Because that looked incorrect to me from readability point of view.
i.e. if rtc_valid_tm, that's an error. What do you say?

>       tm->tm_sec = bin2bcd(tm->tm_sec);
>       tm->tm_min = bin2bcd(tm->tm_min);
> @@ -235,9 +235,9 @@ static int spear_rtc_read_time(struct device *dev, struct rtc_time *tm)
>  static int spear_rtc_set_time(struct device *dev, struct rtc_time *tm)
>  {
>       struct spear_rtc_config *config = dev_get_drvdata(dev);
> -     unsigned int time, date, err = 0;
> +     unsigned int time, date;
>
> -     if (tm2bcd(tm) < 0)
> +     if (tm2bcd(tm))
>               return -EINVAL;

Same applied here.

>       rtc_wait_not_busy(config);
> @@ -247,11 +247,8 @@ static int spear_rtc_set_time(struct device *dev, struct rtc_time *tm)
>               (tm->tm_year << YEAR_SHIFT);
>       writel(time, config->ioaddr + TIME_REG);
>       writel(date, config->ioaddr + DATE_REG);
> -     err = is_write_complete(config);
> -     if (err < 0)
> -             return err;
>
> -     return 0;
> +     return is_write_complete(config);
>  }

This one must have returned true or false, because of nature of its name. So, still checking
for < 0 is better.

--
Viresh

-- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium.  Thank you.

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ