hwmon: ibmaem: Use ktime_get_ns()
authorThomas Gleixner <tglx@linutronix.de>
Wed, 16 Jul 2014 21:04:47 +0000 (21:04 +0000)
committerJohn Stultz <john.stultz@linaro.org>
Wed, 23 Jul 2014 22:01:44 +0000 (15:01 -0700)
Using the wall clock time for delta time calculations is wrong to
begin with because wall clock time can be set from userspace and NTP.
Such data wants to be based on clock monotonic.

The calculations also are done on a nanosecond basis. Use the
nanoseconds based interface right away.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Jean Delvare <jdelvare@suse.de>
Acked-by: Jean Delvare <jdelvare@suse.de>
Signed-off-by: John Stultz <john.stultz@linaro.org>
drivers/hwmon/ibmaem.c

index 632f1dc0fe1f90b3ccd85c3932d81460a7340767..7a8a6fbf11ff9618c482ad4dfe67da7804c65b35 100644 (file)
@@ -842,11 +842,10 @@ static ssize_t aem_show_power(struct device *dev,
        struct aem_data *data = dev_get_drvdata(dev);
        u64 before, after, delta, time;
        signed long leftover;
-       struct timespec b, a;
 
        mutex_lock(&data->lock);
        update_aem_energy_one(data, attr->index);
-       getnstimeofday(&b);
+       time = ktime_get_ns();
        before = data->energy[attr->index];
 
        leftover = schedule_timeout_interruptible(
@@ -858,11 +857,10 @@ static ssize_t aem_show_power(struct device *dev,
        }
 
        update_aem_energy_one(data, attr->index);
-       getnstimeofday(&a);
+       time = ktime_get_ns() - time;
        after = data->energy[attr->index];
        mutex_unlock(&data->lock);
 
-       time = timespec_to_ns(&a) - timespec_to_ns(&b);
        delta = (after - before) * UJ_PER_MJ;
 
        return sprintf(buf, "%llu\n",