From patchwork Thu Dec 7 15:45:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Levin, Alexander \(Sasha Levin\)" X-Patchwork-Id: 121047 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp8690877qgn; Thu, 7 Dec 2017 10:16:58 -0800 (PST) X-Google-Smtp-Source: AGs4zMbbRCNYLsZTI9yEDVfi2ymeT0hlmMBAqtrK3PtdhNiH7g28lGqnkNn/ojet0Yy8dyvT+4PX X-Received: by 10.84.172.195 with SMTP id n61mr26442631plb.321.1512670618775; Thu, 07 Dec 2017 10:16:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512670618; cv=none; d=google.com; s=arc-20160816; b=Y/GvkuTfDfj4zID65+R4hSA9N7LN3S1DVf3uBmVwjLx30H/h1aTkJxlrP9iyjdLtH4 3rhhqGR3a0MZBnLx4b0xOh5T78LoXJ5ZaZdnmL4N0TxUok6VoS4XVW91zOH/92crsk// 1CgFNkplpKaBPrJHKw5xXZNCcmwM96GnlIcCc1DmLgLuZ0HR9Wdogi1tKdG4sahhU/O6 GX736ZXea3bdShIJlTEud+zBy0Fuigzf1TX1O3jG1I/io1h/h2ROp1A+AGLB0LlElXcZ fZ6St9ONOH/m2OZ7BRJ8N+yxjltsb4SrhYGZONp4wLCz0gGU8MqxTlbty2zv56tWzGrU Mn8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:to:cc:from:dkim-signature :dkim-signature:dkim-signature:arc-authentication-results; bh=McDgx3Fj8NCf7y9jkaxbloEV+JEwG28gsqPkBdOiRH8=; b=BaMsLhE+PQkbeq7uZdwBnqpJ2A9eN+KFFrQy1dQzXpm5swAGbzA5tS9zaJJq/sAdHT 4Lv99kxbetTIwbdL1X7JzzVdPoC2vDHUYslZ122Fxi5Brj7ZT7firUGmnFQsVa3wHbXa iqPNhzSJ4uiuSG0ci3Mfu8Z1nOv1D5hO8PoLFEobhaL8MP789cQLVThNj8ENtVOcIKjn 8y5EkOqW8xWNDlkXEmpfS1iG10PAxLfznRmhMUIzb/nRdAPjX+2XhJUXX+wyn0gU1hlC H0IbyHIGDTfK/Hs9rbE5fIhY0VDMZXgX8LHMII9U1tyPZPeuA8Hx4H/TNz7TKmXiXAWF pPKQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@verizon.com header.s=corp header.b=ivliP6jt; dkim=fail header.i=@verizon.com header.s=corp header.b=edtfm+7h; dkim=fail header.i=@verizon.com header.s=corp header.b=YPu9TpLK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=verizon.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p33si4098642pld.453.2017.12.07.10.16.58; Thu, 07 Dec 2017 10:16:58 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@verizon.com header.s=corp header.b=ivliP6jt; dkim=fail header.i=@verizon.com header.s=corp header.b=edtfm+7h; dkim=fail header.i=@verizon.com header.s=corp header.b=YPu9TpLK; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=verizon.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754829AbdLGSQJ (ORCPT + 14 others); Thu, 7 Dec 2017 13:16:09 -0500 Received: from omzsmtpe02.verizonbusiness.com ([199.249.25.209]:1026 "EHLO omzsmtpe02.verizonbusiness.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755161AbdLGPqc (ORCPT ); Thu, 7 Dec 2017 10:46:32 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=verizon.com; i=@verizon.com; q=dns/txt; s=corp; t=1512661592; x=1544197592; h=from:cc:to:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=p9FyQAjJJmFn2Vlutys3R2chTxJy88IcUZsTdDKAY0c=; b=ivliP6jtWAe7/PNXbP8ffUDrh2XgGjV/weFTaJFC5yjxa4babbmYa1lv KeJFw3nUglCiq7rsQteX4zheBudyhsgcJ9hD1+Vaj0ZTqK07PTpR0UysV pDZvP8CoLYBZC1Zep9izXCrvZ9SwrlG6NyKNH6VtTP1F3Tx88/5Xerkqt 8=; Received: from unknown (HELO fldsmtpi01.verizon.com) ([166.68.71.143]) by omzsmtpe02.verizonbusiness.com with ESMTP; 07 Dec 2017 15:46:29 +0000 Received: from rogue-10-255-192-101.rogue.vzwcorp.com (HELO atlantis.verizonwireless.com) ([10.255.192.101]) by fldsmtpi01.verizon.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 07 Dec 2017 15:45:36 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=verizon.com; i=@verizon.com; q=dns/txt; s=corp; t=1512661536; x=1544197536; h=from:cc:to:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=p9FyQAjJJmFn2Vlutys3R2chTxJy88IcUZsTdDKAY0c=; b=edtfm+7ht/ELoUnhHh2jhkeK8w0aju3ZyH3TJ0y8mg6L/ofIcOjGV/RH J2ITxdUKKlskZg69CKEf6p1YV1m3Eiihpz0y5iOCrs5j3bQqEM3c4WWMg I+A2ZsJCSuCgO/O4g/vVcqp0AFiHyjn4/m5yOwOiFjPX2yywL7afRElxK 4=; Received: from endeavour.tdc.vzwcorp.com (HELO eris.verizonwireless.com) ([10.254.88.163]) by atlantis.verizonwireless.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 07 Dec 2017 10:45:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=verizon.com; i=@verizon.com; q=dns/txt; s=corp; t=1512661536; x=1544197536; h=to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version:from:cc; bh=p9FyQAjJJmFn2Vlutys3R2chTxJy88IcUZsTdDKAY0c=; b=YPu9TpLKVWLc7O0nNiE2paaIhuNOcV559jcM+Y0bF5ZkSJJV+AHabsLj 70hFrtUu+k1yUtHtvvNPnL7ztWEGduP5mDIeeva3pIxP0vJC0+W8yCMIn gII0mzAEdzdRfFkW/2BtYo74BCvh6NYeaxo7t/65R/pWvsJJ+KFZh90hT Q=; From: alexander.levin@verizon.com Cc: Arnd Bergmann , "Martin K . Petersen" , alexander.levin@verizon.com X-Host: endeavour.tdc.vzwcorp.com Received: from ohtwi1exh001.uswin.ad.vzwcorp.com ([10.144.218.43]) by eris.verizonwireless.com with ESMTP/TLS/AES128-SHA256; 07 Dec 2017 15:45:35 +0000 Received: from OHTWI1EXO910.uswin.ad.vzwcorp.com (10.144.218.210) by OHTWI1EXH001.uswin.ad.vzwcorp.com (10.144.218.43) with Microsoft SMTP Server (TLS) id 14.3.248.2; Thu, 7 Dec 2017 10:45:35 -0500 Received: from OMZP1LUMXCA14.uswin.ad.vzwcorp.com (144.8.22.189) by OHTWI1EXO910.uswin.ad.vzwcorp.com (10.144.218.210) with Microsoft SMTP Server (TLS) id 15.0.1263.5; Thu, 7 Dec 2017 10:45:35 -0500 Received: from OMZP1LUMXCA17.uswin.ad.vzwcorp.com (144.8.22.195) by OMZP1LUMXCA14.uswin.ad.vzwcorp.com (144.8.22.189) with Microsoft SMTP Server (TLS) id 15.0.1263.5; Thu, 7 Dec 2017 09:45:34 -0600 Received: from OMZP1LUMXCA17.uswin.ad.vzwcorp.com ([144.8.22.195]) by OMZP1LUMXCA17.uswin.ad.vzwcorp.com ([144.8.22.195]) with mapi id 15.00.1263.000; Thu, 7 Dec 2017 09:45:34 -0600 To: "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" Subject: [PATCH AUTOSEL for 4.14 009/135] scsi: aacraid: use timespec64 instead of timeval Thread-Topic: [PATCH AUTOSEL for 4.14 009/135] scsi: aacraid: use timespec64 instead of timeval Thread-Index: AQHTb3JpizIKU2QQWEyjhK0G31mDUA== Date: Thu, 7 Dec 2017 15:45:31 +0000 Message-ID: <20171207154513.4154-9-alexander.levin@verizon.com> References: <20171207154513.4154-1-alexander.levin@verizon.com> In-Reply-To: <20171207154513.4154-1-alexander.levin@verizon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.144.60.250] MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Arnd Bergmann [ Upstream commit 820f188659122602ab217dd80cfa32b3ac0c55c0 ] aacraid passes the current time to the firmware in one of two ways, either as year/month/day/... or as 32-bit unsigned seconds. The first one is broken on 32-bit architectures as it cannot go past year 2038. Using timespec64 here makes it behave properly on both 32-bit and 64-bit architectures, and avoids relying on signed integer overflow to pass times into the second interface. The interface used in aac_send_hosttime() however is still problematic in year 2106 when 32-bit seconds overflow. Hopefully we don't have to worry about aacraid by that time. Signed-off-by: Arnd Bergmann Reviewed-by: Dave Carroll Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- drivers/scsi/aacraid/commsup.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) -- 2.11.0 diff --git a/drivers/scsi/aacraid/commsup.c b/drivers/scsi/aacraid/commsup.c index dfe8e70f8d99..525a652dab48 100644 --- a/drivers/scsi/aacraid/commsup.c +++ b/drivers/scsi/aacraid/commsup.c @@ -2383,19 +2383,19 @@ fib_free_out: goto out; } -int aac_send_safw_hostttime(struct aac_dev *dev, struct timeval *now) +int aac_send_safw_hostttime(struct aac_dev *dev, struct timespec64 *now) { struct tm cur_tm; char wellness_str[] = "TD\010\0\0\0\0\0\0\0\0\0DW\0\0ZZ"; u32 datasize = sizeof(wellness_str); - unsigned long local_time; + time64_t local_time; int ret = -ENODEV; if (!dev->sa_firmware) goto out; - local_time = (u32)(now->tv_sec - (sys_tz.tz_minuteswest * 60)); - time_to_tm(local_time, 0, &cur_tm); + local_time = (now->tv_sec - (sys_tz.tz_minuteswest * 60)); + time64_to_tm(local_time, 0, &cur_tm); cur_tm.tm_mon += 1; cur_tm.tm_year += 1900; wellness_str[8] = bin2bcd(cur_tm.tm_hour); @@ -2412,7 +2412,7 @@ out: return ret; } -int aac_send_hosttime(struct aac_dev *dev, struct timeval *now) +int aac_send_hosttime(struct aac_dev *dev, struct timespec64 *now) { int ret = -ENOMEM; struct fib *fibptr; @@ -2424,7 +2424,7 @@ int aac_send_hosttime(struct aac_dev *dev, struct timeval *now) aac_fib_init(fibptr); info = (__le32 *)fib_data(fibptr); - *info = cpu_to_le32(now->tv_sec); + *info = cpu_to_le32(now->tv_sec); /* overflow in y2106 */ ret = aac_fib_send(SendHostTime, fibptr, sizeof(*info), FsaNormal, 1, 1, NULL, NULL); @@ -2496,7 +2496,7 @@ int aac_command_thread(void *data) } if (!time_before(next_check_jiffies,next_jiffies) && ((difference = next_jiffies - jiffies) <= 0)) { - struct timeval now; + struct timespec64 now; int ret; /* Don't even try to talk to adapter if its sick */ @@ -2506,15 +2506,15 @@ int aac_command_thread(void *data) next_check_jiffies = jiffies + ((long)(unsigned)check_interval) * HZ; - do_gettimeofday(&now); + ktime_get_real_ts64(&now); /* Synchronize our watches */ - if (((1000000 - (1000000 / HZ)) > now.tv_usec) - && (now.tv_usec > (1000000 / HZ))) - difference = (((1000000 - now.tv_usec) * HZ) - + 500000) / 1000000; + if (((NSEC_PER_SEC - (NSEC_PER_SEC / HZ)) > now.tv_nsec) + && (now.tv_nsec > (NSEC_PER_SEC / HZ))) + difference = (((NSEC_PER_SEC - now.tv_nsec) * HZ) + + NSEC_PER_SEC / 2) / NSEC_PER_SEC; else { - if (now.tv_usec > 500000) + if (now.tv_nsec > NSEC_PER_SEC / 2) ++now.tv_sec; if (dev->sa_firmware)