From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753380AbcBADvZ (ORCPT ); Sun, 31 Jan 2016 22:51:25 -0500 Received: from szxga01-in.huawei.com ([58.251.152.64]:14256 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751311AbcBADvX (ORCPT ); Sun, 31 Jan 2016 22:51:23 -0500 From: "Zengtao (B)" To: "Zengtao (B)" , Arnd Bergmann CC: Thomas Gleixner , LKML , Frederic Weisbecker Subject: RE: [PATCH] cputime: Fix timeval-->cputime conversion Thread-Topic: [PATCH] cputime: Fix timeval-->cputime conversion Thread-Index: AQHRWaUmoX2OIR+0pEODFdQdYV/Twp8QSz8AgAGD5PD//9pugIABr1LwgAMxLoA= Date: Mon, 1 Feb 2016 03:51:00 +0000 Message-ID: <678F3D1BB717D949B966B68EAEB446ED0A6B5423@SZXEMA509-MBX.china.huawei.com> References: <1453964546-111074-1-git-send-email-prime.zeng@huawei.com> <2202801.VajSj19nWd@wuerfel> <678F3D1BB717D949B966B68EAEB446ED0A6B4B94@SZXEMA509-MBX.china.huawei.com> <2048669.ftH2CRoGds@wuerfel> Accept-Language: en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.67.233.22] Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Mirapoint-Virus-RAPID-Raw: score=unknown(0), refid=str=0001.0A020202.56AED62D.00D7,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0, ip=169.254.1.223, so=2013-06-18 04:22:30, dmn=2013-03-21 17:37:32 X-Mirapoint-Loop-Id: 29b068a7de0fa45ac744a974928b41b7 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u113qFnc007678 Hi Arnd: I have got a new idea about the problem: In include/linux/time64.h #define NSEC_PER_SEC 1000000000L I think we should change it to #define NSEC_PER_SEC 1000000000LL My reason is : 1. when it is used in a multiplication, it will easily get overflow. 2. when it don't get overflow, the change has no side affect. Thanks. Zengtao > -----Original Message----- > From: Zengtao (B) > Sent: Saturday, January 30, 2016 10:31 AM > To: 'Arnd Bergmann' > Cc: Thomas Gleixner; LKML; Frederic Weisbecker > Subject: RE: [PATCH] cputime: Fix timeval-->cputime conversion > > > -----Original Message----- > > From: Arnd Bergmann [mailto:arnd@arndb.de] > > Sent: Friday, January 29, 2016 4:46 PM > > To: Zengtao (B) > > Cc: Thomas Gleixner; LKML; Frederic Weisbecker > > Subject: Re: [PATCH] cputime: Fix timeval-->cputime conversion > > > > On Friday 29 January 2016 03:12:37 Zengtao wrote: > > > > -----Original Message----- > > > > From: Arnd Bergmann [mailto:arnd@arndb.de] > > > > Sent: Thursday, January 28, 2016 7:52 PM > > > > To: Thomas Gleixner > > > > Cc: Zengtao (B); LKML; Frederic Weisbecker > > > > Subject: Re: [PATCH] cputime: Fix timeval-->cputime conversion > > > > > > > > On Thursday 28 January 2016 09:22:04 Thomas Gleixner wrote: > > > > > Cc'ing Arnd > > > > > > > > > > On Thu, 28 Jan 2016, zengtao wrote: > > > > > > > > > > > The structure: > > > > > > struct timeval { > > > > > > __kernel_time_t tv_sec; /* seconds */ > > > > > > __kernel_suseconds_t tv_usec; /* microseconds > > */ > > > > > > }; > > > > > > both __kernel_time_t and __kernel_suseconds_t are short than u64 > > > > > > when it is 32bit platform, so force u64 conversion here. > > > > > > > > > > > > Signed-off-by: zengtao > > > > > > > > > > Reviewed-by: Thomas Gleixner > > > > > > > > This seems to miss timespec_to_cputime(), which has the same problem, > > > > so only setitimer() is fixed, but not nanosleep() or timer_settime(). > > > Yes, I have checked the code just now, the timespec_to_cputime() has the > > > same problem.I found the origin issue through setitimer().And I think the > > > timespec_to_cputime() only affects timer_settime(),by which means it > > affects > > > nanosleep? > > > > Reading that code again, I think it does not affect sys_nanosleep, but > > it does affect sys_clock_nanosleep(CLOCK_PROCESS_CPUTIME_ID, ...) > > along with timer_create/timer_settime with CLOCK_PROCESS_CPUTIME_ID. > > > Got it, I will fix the timespec_to_cputime and resend the patch later. > > Arnd