]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
rtc: ds2404: use hw endiannes variable
authorNicholas Mc Guire <hofrat@osadl.org>
Thu, 9 May 2019 02:13:55 +0000 (04:13 +0200)
committerAlexandre Belloni <alexandre.belloni@bootlin.com>
Thu, 23 May 2019 15:42:25 +0000 (17:42 +0200)
Converting from hardware to host endiannes was done using reassignment
to the same variable which makes sparse unhappy as it can not verify
the endiannes handling properly. To allow sparse to verify endiannes
handling an explicit __le32 is introduced. Note that this patch does
not change the generated binary (x86_64 and ppc64 binary diff).

Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
drivers/rtc/rtc-ds2404.c

index 1e9f429ada646f97dedd17fee6b3b95ecf165393..9df0c44512b8acb10b3c4d599775eeea65402d5d 100644 (file)
@@ -182,9 +182,10 @@ static void ds2404_enable_osc(struct device *dev)
 static int ds2404_read_time(struct device *dev, struct rtc_time *dt)
 {
        unsigned long time = 0;
+       __le32 hw_time = 0;
 
-       ds2404_read_memory(dev, 0x203, 4, (u8 *)&time);
-       time = le32_to_cpu(time);
+       ds2404_read_memory(dev, 0x203, 4, (u8 *)&hw_time);
+       time = le32_to_cpu(hw_time);
 
        rtc_time64_to_tm(time, dt);
        return 0;