From patchwork Fri Jun 17 15:37:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 637144 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3rWPXd59pmz9sdm for ; Sat, 18 Jun 2016 01:38:09 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1161297AbcFQPgj (ORCPT ); Fri, 17 Jun 2016 11:36:39 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:61845 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1161283AbcFQPge (ORCPT ); Fri, 17 Jun 2016 11:36:34 -0400 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue002) with ESMTPA (Nemesis) id 0Ldx0u-1bjymC0qrM-00puNM; Fri, 17 Jun 2016 17:35:52 +0200 From: Arnd Bergmann To: Tejun Heo Cc: y2038@lists.linaro.org, Arnd Bergmann , linux-ide@vger.kernel.org, linux-arm-kernel@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, linux-kernel@vger.kernel.org Subject: [PATCH] ata: fix "ering" sysfs time printing Date: Fri, 17 Jun 2016 17:37:12 +0200 Message-Id: <20160617153739.429055-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:YdZiL22nBYYgJhL1nej9RMya2QjpTNP/Bi3kW0ETPj81ytU3/Zs +jExx5foeOEdilvSuFuUwIzhpR3RCKxfO7mEXgPBXniURKxpClY9NBQoFZnOOQUR4PSavb+ yZ5smNSMCKfSxNanc+MAy5QRAG+Hslp/dqereM9DRpz0GCOOne5GXPoy3WpZxlt7Wds0g4o wwEjYIzxyQcN1kwdC9EWA== X-UI-Out-Filterresults: notjunk:1; V01:K0:aMLV4u7bq0o=:0L9atS+1FCAUOmXsfcScF8 jqXX7+JKKbg2jwbpOiI45Iq1OKqQB2O9o2Tf4nClJ14HWUtvw/WhYT/70atr/t44bsGNFW6iZ 3IWKnOKsCuohxCG4DSHry2T6iGK8JCfpLgt86I0c2+/9Qd49ENrkEQNEkM6iFjwcqpT1szypq gHtxtLN7KKHlbLfgzw3jmXiqIl34J+sKPT6MPiitvGPtZVdUKevxoQgGYx9f/qLQz17vClcEv ovU2rdj/PrdtMsKKUr2UV8ktvgSBRvp0JCIlcXUYoILqpU7olaRzRX7iwDurMYJG0H/WjHI4Z ltCjX3mwmR/7NKCRUjhpIuc54F9tGianqX7uBYwc1iFcIMb+1PzC2Pej59x3YIgDVD/c7Wpjw 9V9UyQZL3DR26Y0qFOMd5vARpRwDDI+eXvXjnmNKmjfZIlJ9jqPi2ryg8RWYtpQNhR8b38upJ SW6UIsxFrd6d/1IgLMWsyDJZ8YbOqIPlwU7AHGdpJctbW+Tzp6klZGNhwk7ngZThGz1j8dvqt 3NWPejJ+Hc2zkMSX5I78JzTY5S+CGGRRlV4yHXEzjRObcYqcnBtjWGa9vjXSm7TiXZAiWmUGj Lvw5GA+Glcrbj+jt1RorRHI0vYYuIxEkM3YuUXEo1WNi23OLjRhAa/yQ870FoRW1enOBZ0fj3 ooVirFjJXn+Tz3SupW5YIFSUrkyVZ1We6caB8em7i5UwQIw8Ti0YyWclgto8ISst+MV6dGHLF wL+dPver6WeTXbJg Sender: linux-ide-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-ide@vger.kernel.org The sysfs file for the libata error handling has multiple issues in the way it prints time stamps: * it prints a 9-digit nanosecond value using a %06lu format string, which drops some leading zeroes * it converts a 64-bit jiffes value to a timespec using jiffies_to_timespec(), which takes a 'long' argument, so the result is wrong after a jiffies overflow (49 days). * we try to avoid using timespec because that generally overflows in 2038, although this particular usage is ok. This replaces the jiffies_to_timespec call with an open-coded implementation that gets it right. Signed-off-by: Arnd Bergmann --- drivers/ata/libata-transport.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/ata/libata-transport.c b/drivers/ata/libata-transport.c index e2d94972962d..7ef16c085058 100644 --- a/drivers/ata/libata-transport.c +++ b/drivers/ata/libata-transport.c @@ -495,12 +495,13 @@ struct ata_show_ering_arg { static int ata_show_ering(struct ata_ering_entry *ent, void *void_arg) { struct ata_show_ering_arg* arg = void_arg; - struct timespec time; + u64 seconds; + u32 rem; - jiffies_to_timespec(ent->timestamp,&time); + seconds = div_u64_rem(ent->timestamp, HZ, &rem); arg->written += sprintf(arg->buf + arg->written, - "[%5lu.%06lu]", - time.tv_sec, time.tv_nsec); + "[%5llu.%09lu]", seconds, + rem * NSEC_PER_SEC / HZ); arg->written += get_ata_err_names(ent->err_mask, arg->buf + arg->written); return 0;