From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752931AbbIQDLP (ORCPT ); Wed, 16 Sep 2015 23:11:15 -0400 Received: from mail-pa0-f46.google.com ([209.85.220.46]:34148 "EHLO mail-pa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751917AbbIQDLN (ORCPT ); Wed, 16 Sep 2015 23:11:13 -0400 From: WEN Pingbo To: linux-usb@vger.kernel.org Cc: WEN Pingbo , Y2038 , linux-kernel@vger.kernel.org, Arnd Bergmann , Felipe Balbi Subject: [PATCH V2] dummy_hcd: replace timeval with timespec64 Date: Thu, 17 Sep 2015 11:09:49 +0800 Message-Id: <1442459389-11171-1-git-send-email-pingbo.wen@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <2640620.MF43KccxAS@wuerfel> References: <2640620.MF43KccxAS@wuerfel> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The millisecond of the last second will be normal if tv_sec is overflowed. But for y2038 consistency and demonstration purpose, and avoiding further risks, we need to remove 'timeval' in this driver, to avoid similair problems. V2 Updates: - using monotonic time here by replacing getnstimeofday() with ktime_get_ts64(), to avoid leap second issues. The frame time in USB is always 1ms, no matter what speed, so ktime_get_ts64() have enough resolution to cover this. - using NSEC_PER_MSEC instead of hard code. Signed-off-by: Pingbo Wen Cc: Y2038 Cc: linux-kernel@vger.kernel.org Cc: Arnd Bergmann Cc: Felipe Balbi Signed-off-by: WEN Pingbo --- drivers/usb/gadget/udc/dummy_hcd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/usb/gadget/udc/dummy_hcd.c b/drivers/usb/gadget/udc/dummy_hcd.c index 1379ad4..6d1ed35 100644 --- a/drivers/usb/gadget/udc/dummy_hcd.c +++ b/drivers/usb/gadget/udc/dummy_hcd.c @@ -833,10 +833,10 @@ static const struct usb_ep_ops dummy_ep_ops = { /* there are both host and device side versions of this call ... */ static int dummy_g_get_frame(struct usb_gadget *_gadget) { - struct timeval tv; + struct timespec64 tv; - do_gettimeofday(&tv); - return tv.tv_usec / 1000; + ktime_get_ts64(&tv); + return tv.tv_nsec / NSEC_PER_MSEC; } static int dummy_wakeup(struct usb_gadget *_gadget) -- 1.9.1