From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752259AbbJWJqG (ORCPT ); Fri, 23 Oct 2015 05:46:06 -0400 Received: from mout.kundenserver.de ([212.227.126.130]:62080 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750862AbbJWJqE (ORCPT ); Fri, 23 Oct 2015 05:46:04 -0400 From: Arnd Bergmann To: Pingbo Wen Cc: y2038@lists.linaro.org, dmitry.torokhov@gmail.com, linux-kernel@vger.kernel.org, linux-input@vger.kernel.org Subject: Re: [Y2038] [PATCH] hil_mlc: convert timeval to timespec64 Date: Fri, 23 Oct 2015 11:45:59 +0200 Message-ID: <5201254.PnVcGHTDmH@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) In-Reply-To: <5629FA06.2060608@linaro.org> References: <1445161519-27000-1-git-send-email-pingbo.wen@linaro.org> <46052377.96MapaKFAy@wuerfel> <5629FA06.2060608@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:ajIhDgPI4StPYuUcOC0ncB+8WfH3D6VnGhREKy1DAu9k+eBM9lQ HSVp2uqPsdZNo3Ixi6Le2SnR8IqlqMkQrzeyAM1VPBUSBu/fsI3msKkzKdga0HFdvi7cPta 78FODLCDLF4RFsUXyk29loFUJWa9PYsU+KY6rb6aPHCCji5ZhYmnPtYADYYvTraUloJL1uz +QjMLtC/ohZESFRZG7kHA== X-UI-Out-Filterresults: notjunk:1;V01:K0:r/Sivej6pxY=:4PprOIJdm7ZSae1PUG9M0/ nvskTwxqOTv7QLyC4U0/3HLfYieS4HQQgduB4igYvGcjSV7ml+cuPitLzWanHUx7rkBqLUQC+ JRG6SYGNJiqW+oWtl/TpgO17QZpBzvqZmrZIO9+dcCjtYs3X0pp3rdX+telXJxEURfCeinyE9 7hPvNcckQK8B/y2bo10RWb7Nn0D2aArz8iPOMCJkN+jXGHEIZwxCA4jn+OSVyMDNbp5dnCuGv FgeNsE5HXGD2UHqJngIN4DgpDu5FJy13J31z1kL+tSc3lbcRlG9dYoAUyNKsUl6V05s8NkbKz ZwymyEFrbFGDW17034xjzcOjaQ+gxxnCtkwpyAQ7iYHSMqtqIRWuLHaoFjQc28ZZQShH9ToGS z7UYK0d/6nRu38LZEOPbHFhIduQ3ApqGUMFgr7kq/rVnZzEAaBkCMG65WzeIAunY8Y34FETKK gyg3NCz3DxJ2/O/0XAVp3I2ZHbbofaFb9HGwQXPhpi2LwlbKtroUWAw5XQ1YcVBuUwlPxW/66 z0hhO0dCF6dgdR4ysePmNsToVDpIQC5wRQg9boH1n/Jgy2OBeCmfGS0Y+mQ16qiFRvXagOXgB fDKGKkiHa+NehHc+nJcbkBCUMyeZc7F6bku8B6rAp4LpzkmXmLhPiSdaeI7ZWJB2sMrwGw6CU bo2WiUbfH2NWk3SyRSKdJPZr9GMBhMdscvx8E26PrHxVCQ/hh5c80MSpKEPlT9v6oozJRaS3I ynbarDbiv9P1rv78 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Friday 23 October 2015 17:12:38 Pingbo Wen wrote: > On Monday, October 19, 2015 04:58 PM, Arnd Bergmann wrote: > >> - do_gettimeofday(&tv); > >> - tv.tv_usec += USEC_PER_SEC * (tv.tv_sec - mlc->instart.tv_sec); > >> - tv.tv_usec -= mlc->instart.tv_usec; > >> - if (tv.tv_usec >= mlc->intimeout) goto sched; > >> - tv.tv_usec = (mlc->intimeout - tv.tv_usec) * HZ / USEC_PER_SEC; > >> - if (!tv.tv_usec) goto sched; > >> - mod_timer(&hil_mlcs_kicker, jiffies + tv.tv_usec); > >> + ktime_get_ts64(&ts64); > >> + ts64.tv_nsec += NSEC_PER_SEC * > >> + (ts64.tv_sec - mlc->instart.tv_sec); > >> + ts64.tv_nsec -= mlc->instart.tv_nsec; > > > > tv_nsec will overflow here for any timeout over 4.3 seconds, where it > > used to overflow after 4294 seconds. This is almost certainly a bug. > > > > You could work around that by using ktime_get_ns() to get a nanosecond > > value right away, but a 64-bit number is more expensive to convert to > > jiffies. > > You are right, I didn't notice that tv_nsec is a 32bit variable. Maybe > we should use ktime_t here, so that handling sec and nsec separately is > needless. > > Using jiffies here will need to take more codes to handle jiffies overflow > carefully. I think coverting 64bit number to jiffies is the price we must > take, if we use 64bit version here. Handling the jiffies overflow is trivially done through the time_before() and time_after() helpers, like start = jiffies; ... now = jiffies; timeout = start + HZ * timeout_usec / USEC_PER_SEC; if (time_after(now, start + timeout_jiffies) timeout(); else mod_timer(timer, start + timeout_jiffies); The time_after function works because unsigned overflow is well-defined in C (unlike signed overflow). As a side-note, please take the time to delete any lines from the original mail that you are not referencing when you reply. Arnd From mboxrd@z Thu Jan 1 00:00:00 1970 From: Arnd Bergmann Subject: Re: [PATCH] hil_mlc: convert timeval to timespec64 Date: Fri, 23 Oct 2015 11:45:59 +0200 Message-ID: <5201254.PnVcGHTDmH@wuerfel> References: <1445161519-27000-1-git-send-email-pingbo.wen@linaro.org> <46052377.96MapaKFAy@wuerfel> <5629FA06.2060608@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5629FA06.2060608@linaro.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: y2038-bounces@lists.linaro.org Sender: "Y2038" To: Pingbo Wen Cc: y2038@lists.linaro.org, dmitry.torokhov@gmail.com, linux-kernel@vger.kernel.org, linux-input@vger.kernel.org List-Id: linux-input@vger.kernel.org T24gRnJpZGF5IDIzIE9jdG9iZXIgMjAxNSAxNzoxMjozOCBQaW5nYm8gV2VuIHdyb3RlOgo+IE9u IE1vbmRheSwgT2N0b2JlciAxOSwgMjAxNSAwNDo1OCBQTSwgQXJuZCBCZXJnbWFubiB3cm90ZToK PiA+PiAtICAgICAgICAgICAgZG9fZ2V0dGltZW9mZGF5KCZ0dik7Cj4gPj4gLSAgICAgICAgICAg IHR2LnR2X3VzZWMgKz0gVVNFQ19QRVJfU0VDICogKHR2LnR2X3NlYyAtIG1sYy0+aW5zdGFydC50 dl9zZWMpOwo+ID4+IC0gICAgICAgICAgICB0di50dl91c2VjIC09IG1sYy0+aW5zdGFydC50dl91 c2VjOwo+ID4+IC0gICAgICAgICAgICBpZiAodHYudHZfdXNlYyA+PSBtbGMtPmludGltZW91dCkg Z290byBzY2hlZDsKPiA+PiAtICAgICAgICAgICAgdHYudHZfdXNlYyA9IChtbGMtPmludGltZW91 dCAtIHR2LnR2X3VzZWMpICogSFogLyBVU0VDX1BFUl9TRUM7Cj4gPj4gLSAgICAgICAgICAgIGlm ICghdHYudHZfdXNlYykgZ290byBzY2hlZDsKPiA+PiAtICAgICAgICAgICAgbW9kX3RpbWVyKCZo aWxfbWxjc19raWNrZXIsIGppZmZpZXMgKyB0di50dl91c2VjKTsKPiA+PiArICAgICAgICAgICAg a3RpbWVfZ2V0X3RzNjQoJnRzNjQpOwo+ID4+ICsgICAgICAgICAgICB0czY0LnR2X25zZWMgKz0g TlNFQ19QRVJfU0VDICoKPiA+PiArICAgICAgICAgICAgICAgICAgICAodHM2NC50dl9zZWMgLSBt bGMtPmluc3RhcnQudHZfc2VjKTsKPiA+PiArICAgICAgICAgICAgdHM2NC50dl9uc2VjIC09IG1s Yy0+aW5zdGFydC50dl9uc2VjOwo+ID4gCj4gPiB0dl9uc2VjIHdpbGwgb3ZlcmZsb3cgaGVyZSBm b3IgYW55IHRpbWVvdXQgb3ZlciA0LjMgc2Vjb25kcywgd2hlcmUgaXQKPiA+IHVzZWQgdG8gb3Zl cmZsb3cgYWZ0ZXIgNDI5NCBzZWNvbmRzLiBUaGlzIGlzIGFsbW9zdCBjZXJ0YWlubHkgYSBidWcu Cj4gPiAKPiA+IFlvdSBjb3VsZCB3b3JrIGFyb3VuZCB0aGF0IGJ5IHVzaW5nIGt0aW1lX2dldF9u cygpIHRvIGdldCBhIG5hbm9zZWNvbmQKPiA+IHZhbHVlIHJpZ2h0IGF3YXksIGJ1dCBhIDY0LWJp dCBudW1iZXIgaXMgbW9yZSBleHBlbnNpdmUgdG8gY29udmVydCB0bwo+ID4gamlmZmllcy4KPiAK PiBZb3UgYXJlIHJpZ2h0LCBJIGRpZG4ndCBub3RpY2UgdGhhdCB0dl9uc2VjIGlzIGEgMzJiaXQg dmFyaWFibGUuIE1heWJlCj4gd2Ugc2hvdWxkIHVzZSBrdGltZV90IGhlcmUsIHNvIHRoYXQgaGFu ZGxpbmcgc2VjIGFuZCBuc2VjIHNlcGFyYXRlbHkgaXMKPiBuZWVkbGVzcy4KPiAKPiBVc2luZyBq aWZmaWVzIGhlcmUgd2lsbCBuZWVkIHRvIHRha2UgbW9yZSBjb2RlcyB0byBoYW5kbGUgamlmZmll cyBvdmVyZmxvdwo+IGNhcmVmdWxseS4gSSB0aGluayBjb3ZlcnRpbmcgNjRiaXQgbnVtYmVyIHRv IGppZmZpZXMgaXMgdGhlIHByaWNlIHdlIG11c3QgCj4gdGFrZSwgaWYgd2UgdXNlIDY0Yml0IHZl cnNpb24gaGVyZS4KCkhhbmRsaW5nIHRoZSBqaWZmaWVzIG92ZXJmbG93IGlzIHRyaXZpYWxseSBk b25lIHRocm91Z2ggdGhlIHRpbWVfYmVmb3JlKCkKYW5kIHRpbWVfYWZ0ZXIoKSBoZWxwZXJzLCBs aWtlCgoKCXN0YXJ0ID0gamlmZmllczsKCS4uLgoJbm93ID0gamlmZmllczsKCXRpbWVvdXQgPSBz dGFydCArIEhaICogdGltZW91dF91c2VjIC8gVVNFQ19QRVJfU0VDOwoJaWYgKHRpbWVfYWZ0ZXIo bm93LCBzdGFydCArIHRpbWVvdXRfamlmZmllcykKCQl0aW1lb3V0KCk7CgllbHNlCgkJbW9kX3Rp bWVyKHRpbWVyLCBzdGFydCArIHRpbWVvdXRfamlmZmllcyk7CgpUaGUgdGltZV9hZnRlciBmdW5j dGlvbiB3b3JrcyBiZWNhdXNlIHVuc2lnbmVkIG92ZXJmbG93IGlzIHdlbGwtZGVmaW5lZAppbiBD ICh1bmxpa2Ugc2lnbmVkIG92ZXJmbG93KS4KCkFzIGEgc2lkZS1ub3RlLCBwbGVhc2UgdGFrZSB0 aGUgdGltZSB0byBkZWxldGUgYW55IGxpbmVzIGZyb20gdGhlIG9yaWdpbmFsCm1haWwgdGhhdCB5 b3UgYXJlIG5vdCByZWZlcmVuY2luZyB3aGVuIHlvdSByZXBseS4KCglBcm5kCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClkyMDM4IG1haWxpbmcgbGlzdApZ MjAzOEBsaXN0cy5saW5hcm8ub3JnCmh0dHBzOi8vbGlzdHMubGluYXJvLm9yZy9tYWlsbWFuL2xp c3RpbmZvL3kyMDM4Cg==