From patchwork Fri Feb 12 09:52:49 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepa Dinamani X-Patchwork-Id: 8289941 Return-Path: X-Original-To: patchwork-linux-fsdevel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 955C7BEEE5 for ; Fri, 12 Feb 2016 09:57:06 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id B65CC203E5 for ; Fri, 12 Feb 2016 09:57:05 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D5044203C4 for ; Fri, 12 Feb 2016 09:57:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752134AbcBLJzZ (ORCPT ); Fri, 12 Feb 2016 04:55:25 -0500 Received: from mail-pf0-f176.google.com ([209.85.192.176]:34237 "EHLO mail-pf0-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751741AbcBLJzR (ORCPT ); Fri, 12 Feb 2016 04:55:17 -0500 Received: by mail-pf0-f176.google.com with SMTP id x65so45255386pfb.1; Fri, 12 Feb 2016 01:55:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Wk0Jkz4JL6KTv/AfgTO7b3I3BJn9GNjmk6JE/9b6qKM=; b=j0KSC7jXjQLlV14vtWOa+4Kebmzmw8xNOsKFlp0fineawRUUGP8HDsqQYEAxBvC2Nf qluLZ57x+b+iVyK8Us1u0sZGok3AKpajjRskckHDFPmV2dkSdq2OTmtFKzmjDZSzOGQO peAqQAJ1v6QLbIPh8/i1xGS4FOdoKKi7ftpoyHTLEWPDIyTnDDdPzyNKUATQwm4fPkVX RnambtE/8DdO+K/pTz8XfgaNNeB+PEATbt4Y/WumLYr01xkXwrG/kJUnm+BNsTO2e95w 3Mi3F58jrLjzsI+53uiAHNMwDqIMsCQBxHNvi7wqbcR92+odtGQS6pv/byweEYlQ5Klk Upjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Wk0Jkz4JL6KTv/AfgTO7b3I3BJn9GNjmk6JE/9b6qKM=; b=bqNbG23FyZYWNMvUM9VF5JZ0N5OtswrZfbAgU/odErU5OmxKcK15LF/AXC8CZ0/jkH yZgH0zDNotNYJxrBBIvSIFFNHNQ4SSpz/jwmfLOY6RCZvUVKxsGwK5KlrdIp/g1YMmOK MyKARKauXA87kj8bRoQ2tpYcH4zkFtcRjUK6U8CTb8KjtouHhs8SgIXvbKfhWpRjpL7z mtmXeUsg0h19wH7w2MpkM5XIvGgydoZ2zD+5N54q1c7acksxlDbAkziCZVGDqdUJuDco PYepuKC3i1paqRJBIoEq0ZcW/rAUFFEV2of1YRUTzo+qF6wkgARgiIHh8UTgn+RSUK14 CFhw== X-Gm-Message-State: AG10YORvDWLgdAIisnibiCoSk/XGEAFSJkrIA9Jtlbl8x3MXcn4qqMhC4TuVLX05nQQY1g== X-Received: by 10.98.34.25 with SMTP id i25mr858854pfi.26.1455270916658; Fri, 12 Feb 2016 01:55:16 -0800 (PST) Received: from localhost.localdomain ([106.51.31.162]) by smtp.gmail.com with ESMTPSA id xz6sm18090024pab.42.2016.02.12.01.55.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 12 Feb 2016 01:55:16 -0800 (PST) From: Deepa Dinamani To: linux-fsdevel@vger.kernel.org, y2038@lists.linaro.org Cc: Arnd Bergmann , Dave Chinner , "Theodore Ts'o" , linux-kernel@vger.kernel.org Subject: [RFC v2c 4/8] fs: cifs: Make cnvrtDosUnixTm() y2038 safe Date: Fri, 12 Feb 2016 01:52:49 -0800 Message-Id: <1455270773-3249-5-git-send-email-deepa.kernel@gmail.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1455270773-3249-1-git-send-email-deepa.kernel@gmail.com> References: <20160212092153.GA2368@deepa-ubuntu> <1455270773-3249-1-git-send-email-deepa.kernel@gmail.com> Sender: linux-fsdevel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, T_DKIM_INVALID, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The seconds calculated from the server(DOS format) cannot be saved in int data type as this cannot save seconds since epoch after the year 2038. Use long long for seconds field in cnvrtDosUnixTm(). This will help represent 64 bit time even on 32 bit systems. Note that even though the theoretical max on DOS times is 2107, its api's only support until the year 2099. This means we can get away with 32 bit unsigned sec field. But, the sec field uses long long to maintain uniformity in the kernel, where everyone uses the theoretical max. Signed-off-by: Deepa Dinamani --- fs/cifs/netmisc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fs/cifs/netmisc.c b/fs/cifs/netmisc.c index bf1b52e..ecbb7162 100644 --- a/fs/cifs/netmisc.c +++ b/fs/cifs/netmisc.c @@ -963,7 +963,8 @@ static const int total_days_of_prev_months[] = { struct timespec64 cnvrtDosUnixTm(__le16 le_date, __le16 le_time, int offset) { struct timespec64 ts; - int sec, min, days, month, year; + long long sec; + int min, days, month, year; u16 date = le16_to_cpu(le_date); u16 time = le16_to_cpu(le_time); SMB_TIME *st = (SMB_TIME *)&time; @@ -974,7 +975,7 @@ struct timespec64 cnvrtDosUnixTm(__le16 le_date, __le16 le_time, int offset) sec = 2 * st->TwoSeconds; min = st->Minutes; if ((sec > 59) || (min > 59)) - cifs_dbg(VFS, "illegal time min %d sec %d\n", min, sec); + cifs_dbg(VFS, "illegal time min %d sec %lld\n", min, sec); sec += (min * 60); sec += 60 * 60 * st->Hours; if (st->Hours > 24)