From: Russell King - ARM Linux <linux@armlinux.org.uk>
To: Benjamin Gaignard <benjamin.gaignard@linaro.org>
Cc: Alessandro Zummo <a.zummo@towertech.it>,
linaro-kernel@lists.linaro.org, rtc-linux@googlegroups.com,
Linus Walleij <linus.walleij@linaro.org>,
linux-kernel@vger.kernel.org,
Alexandre Belloni <alexandre.belloni@free-electrons.com>,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 12/51] rtc: coh901331: stop using rtc deprecated functions
Date: Tue, 20 Jun 2017 22:21:53 +0100 [thread overview]
Message-ID: <20170620212153.GN4902@n2100.armlinux.org.uk> (raw)
In-Reply-To: <1497951359-13334-13-git-send-email-benjamin.gaignard@linaro.org>
On Tue, Jun 20, 2017 at 11:35:20AM +0200, Benjamin Gaignard wrote:
> rtc_time_to_tm() and rtc_tm_to_time() are deprecated because they
> rely on 32bits variables and that will make rtc break in y2038/2016.
> Stop using those two functions to safer 64bits ones.
>
> Signed-off-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
> CC: Linus Walleij <linus.walleij@linaro.org>
> CC: Alessandro Zummo <a.zummo@towertech.it>
> CC: Alexandre Belloni <alexandre.belloni@free-electrons.com>
> CC: rtc-linux@googlegroups.com
> CC: linux-kernel@vger.kernel.org
> CC: linux-arm-kernel@lists.infradead.org
> ---
> drivers/rtc/rtc-coh901331.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/rtc/rtc-coh901331.c b/drivers/rtc/rtc-coh901331.c
> index cfc4141..5645011 100644
> --- a/drivers/rtc/rtc-coh901331.c
> +++ b/drivers/rtc/rtc-coh901331.c
> @@ -80,7 +80,8 @@ static int coh901331_read_time(struct device *dev, struct rtc_time *tm)
> clk_enable(rtap->clk);
> /* Check if the time is valid */
> if (readl(rtap->virtbase + COH901331_VALID)) {
> - rtc_time_to_tm(readl(rtap->virtbase + COH901331_CUR_TIME), tm);
> + rtc_time64_to_tm(
> + (u64)readl(rtap->virtbase + COH901331_CUR_TIME), tm);
> clk_disable(rtap->clk);
> return rtc_valid_tm(tm);
> }
> @@ -88,7 +89,7 @@ static int coh901331_read_time(struct device *dev, struct rtc_time *tm)
> return -EINVAL;
> }
>
> -static int coh901331_set_mmss(struct device *dev, unsigned long secs)
> +static int coh901331_set_mmss64(struct device *dev, time64_t secs)
Do you realise how stupid this is? Here, you're implicitly truncating
the 64-bit time value to 32-bit when you write it into the register.
So, when your clock wraps past 7 February 2106 (*not* 2038), when you
next read it, you read a date in 1970.
Exactly the same happens with the existing implementation, so this
fixes nothing at all. As I've said in my other mail, these changes
make it harder to fix the problem, because you're stuck with that
truncation - you can never do anything but truncate it.
Keeping the 32-bit conversion functions allows us to wind the date
progressively forward if we so choose.
Sure, if we don't want to maintain two conversion functions, then we
can define the 32-bit conversion functions in terms of the 64-bit
versions, but do _not_ get rid of them.
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
next prev parent reply other threads:[~2017-06-20 21:22 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-20 9:35 [PATCH 00/51] rtc: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 01/51] x86: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 02/51] x86: intel-mid: vrtc: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 03/51] net: broadcom: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 04/51] rtc: 88pm80x: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 05/51] rtc: 88pm860x: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 06/51] rtc: ab-b5ze-s3: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 07/51] rtc: ab8500: " Benjamin Gaignard
2017-06-20 16:06 ` Linus Walleij
2017-06-21 6:57 ` kbuild test robot
2017-06-20 9:35 ` [PATCH 08/51] rtc: armada38x: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 09/51] rtc: at32ap700x: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 10/51] rtc: at91sam9: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 11/51] rtc: bfin: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 12/51] rtc: coh901331: " Benjamin Gaignard
2017-06-20 16:07 ` [rtc-linux] " Linus Walleij
2017-06-20 21:21 ` Russell King - ARM Linux [this message]
2017-06-20 9:35 ` [PATCH 13/51] rtc: cpcap: " Benjamin Gaignard
2017-06-21 4:37 ` kbuild test robot
2017-06-20 9:35 ` [PATCH 14/51] rtc: da9063: " Benjamin Gaignard
2017-06-20 13:41 ` Steve Twiss
2017-06-20 14:18 ` Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 15/51] " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 16/51] rtc: davinci: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 17/51] rtc: digicolor: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 18/51] rtc: dm355evm: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 19/51] rtc: ds1305: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 20/51] rtc: ds1374: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 21/51] rtc: ds1511: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 22/51] rtc: ds1553: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 23/51] rtc: ds1672: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 24/51] rtc: ds2404: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 25/51] rtc: ep93xx: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 26/51] rtc: gemini: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 27/51] rtc: imxdi: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 28/51] rtc: jz4740: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 29/51] rtc: lpc32xx: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 30/51] rtc: mv: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 31/51] rtc: omap: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 32/51] rtc: pcap: " Benjamin Gaignard
2017-06-21 4:45 ` kbuild test robot
2017-06-21 5:07 ` kbuild test robot
2017-06-20 9:35 ` [PATCH 33/51] rtc: pl030: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 34/51] rtc: pl031: " Benjamin Gaignard
2017-06-20 16:08 ` Linus Walleij
2017-06-20 21:05 ` Russell King - ARM Linux
2017-06-20 9:35 ` [PATCH 35/51] rtc: pm8xxx: " Benjamin Gaignard
2017-06-21 16:54 ` kbuild test robot
2017-07-03 10:12 ` Arnd Bergmann
2017-06-20 9:35 ` [PATCH 36/51] rtc: rs5c348: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 37/51] rtc: sa1100: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 38/51] rtc: sh: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 39/51] rtc: sirfsoc: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 40/51] rtc: snvs: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 41/51] rtc: stk17ta8: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 42/51] rtc: stmp3xxx: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 43/51] rtc: sun6i: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 44/51] rtc: sysfs: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 45/51] rtc: tegra " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 46/51] rtc: test: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 47/51] rtc: tps6586: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 48/51] rtc: vr41xx: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 49/51] rtc: wm831x: " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 50/51] rtc: xgene " Benjamin Gaignard
2017-06-20 9:35 ` [PATCH 51/51] power: suspend test: " Benjamin Gaignard
2017-06-20 12:10 ` Pavel Machek
2017-06-20 10:03 ` [PATCH 00/51] rtc: " Alexandre Belloni
2017-06-20 10:07 ` Alexandre Belloni
2017-06-20 12:10 ` Pavel Machek
2017-06-20 12:24 ` Alexandre Belloni
2017-06-20 13:26 ` Pavel Machek
2017-06-20 13:37 ` Steve Twiss
2017-06-20 13:44 ` Pavel Machek
2017-06-20 13:48 ` Alexandre Belloni
2017-06-20 15:07 ` Benjamin Gaignard
2017-06-20 21:15 ` Russell King - ARM Linux
2017-06-21 9:26 ` David Laight
2017-06-21 9:35 ` Russell King - ARM Linux
2017-06-20 22:08 ` Pavel Machek
2017-06-21 9:14 ` Benjamin Gaignard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170620212153.GN4902@n2100.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=a.zummo@towertech.it \
--cc=alexandre.belloni@free-electrons.com \
--cc=benjamin.gaignard@linaro.org \
--cc=linaro-kernel@lists.linaro.org \
--cc=linus.walleij@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rtc-linux@googlegroups.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome