From patchwork Mon Feb 22 21:58:34 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 102708 Delivered-To: patch@linaro.org Received: by 10.112.43.199 with SMTP id y7csp1496378lbl; Mon, 22 Feb 2016 13:59:49 -0800 (PST) X-Received: by 10.66.220.162 with SMTP id px2mr41403706pac.15.1456178389668; Mon, 22 Feb 2016 13:59:49 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r3si42239058pfr.120.2016.02.22.13.59.49; Mon, 22 Feb 2016 13:59:49 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755793AbcBVV7r (ORCPT + 30 others); Mon, 22 Feb 2016 16:59:47 -0500 Received: from mout.kundenserver.de ([212.227.126.135]:50917 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753138AbcBVV7q (ORCPT ); Mon, 22 Feb 2016 16:59:46 -0500 Received: from wuerfel.lan. ([78.42.132.4]) by mrelayeu.kundenserver.de (mreue002) with ESMTPA (Nemesis) id 0MXAA8-1aUn7y3QPM-00W080; Mon, 22 Feb 2016 22:58:47 +0100 From: Arnd Bergmann To: Dan Williams Cc: linux-arm-kernel@lists.infradead.org, Arnd Bergmann , Stuart Foster , Julian Margetson , Andrew Morton , linux-mm@kvack.org, Ross Zwisler , linux-nvdimm@lists.01.org, linux-kernel@vger.kernel.org Subject: [PATCH] nvdimm: use 'u64' for pfn flags Date: Mon, 22 Feb 2016 22:58:34 +0100 Message-Id: <1456178322-1728962-1-git-send-email-arnd@arndb.de> X-Mailer: git-send-email 2.7.0 X-Provags-ID: V03:K0:oDC1sHOTAwMBOsNofMWUmLGzOaX6Y94vLUR25YM86DgRHZyMP5w l3v/H4UjvD3847Cnbs0S/O951tYv7Iwoc+MpIPt5nioXF0ddpnuQVaHCMFw5y7HZmIzaDp/ JPAmlhqCgcQULLNqW3zTHbwm4nvA5b9qEj9PTv0OGrvH7axk/GILFYot+Xm3zwI4Xvghpc3 vIG7Y4iH1675HC8QOx8gw== X-UI-Out-Filterresults: notjunk:1; V01:K0:+GfXIVuwjrs=:/j2V169wPxYiCEj21NiLiv eGmRZ+36geliUgr/ldIz33Q0Xox2/jPLCGAXAAGiWk24ofngBXDN5mnw3I8Z1leYwlDKmF9jH o2wNgnyrPtGPDP1uNAErWJ4LgBHV4C5qzs4Wlrp1vcvq8GHQyKoXZvAGhoP4Qrp94+DNSlSAK HIWNTBgy2bTQJ90NkASC4jZCohTXnXXaflHiFdifzCE1DKqHg2wN+LxI7tFKEvEbfgy+2zwQE mvM5d4gtjZuxGH8ah0wa+O9/s3eA+/tgHUpg4B9+XUmyN8fc8qsZLyQ1NWUWkGmVXg8BbeIsa stkfMWuXzItWuesYw+uvInY404kbkGx+ycEaqnPXCT4DlsAqPVu6QY19Himk/B8/GZ7UMo3JD 68whzG+EV2M9O0uoD1vuhXxRgV8Rr4YHnn6efl/t/cWLd0+/mSYH3ykn5JEQfzNAhxNWvwnhj KPXMDlPoLbwS5/Xuift+H9jwtJXLWMBsDSnbMEXy9atpV3Dsu/8YlTdgBRABGmKrCTd4ZWn7n ZwB9V5d7VXGc+nqXAyytb4ixNIoQMXMZPMEQ5scXrEhSBlW3XqT5aKy1opV/oT9jw9tlLH5a3 l3xDi90odiFyeYFROnHvBFxhtfqSAvBUpPpKsofDXiN3JsKIfUg2yQuLxNgS8v+D6EBJS9B1U hLVNeOP3cqi2FLqdwmv7wadoLV6SX+vwvqlrBkhzB6Rq9ikmwHtQ9iJ8oFuQQMorOL1w= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A recent bugfix changed pfn_t to always be 64-bit wide, but did not change the code in pmem.c, which is now broken on 32-bit architectures as reported by gcc: In file included from ../drivers/nvdimm/pmem.c:28:0: drivers/nvdimm/pmem.c: In function 'pmem_alloc': include/linux/pfn_t.h:15:17: error: large integer implicitly truncated to unsigned type [-Werror=overflow] #define PFN_DEV (1ULL << (BITS_PER_LONG_LONG - 3)) This changes the intermediate pfn_flags in struct pmem_device to be 64 bit wide as well, so they can store the flags correctly. Signed-off-by: Arnd Bergmann Fixes: db78c22230d0 ("mm: fix pfn_t vs highmem") --- drivers/nvdimm/pmem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.7.0 diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index 7edf31671dab..8d0b54670184 100644 --- a/drivers/nvdimm/pmem.c +++ b/drivers/nvdimm/pmem.c @@ -41,7 +41,7 @@ struct pmem_device { phys_addr_t phys_addr; /* when non-zero this device is hosting a 'pfn' instance */ phys_addr_t data_offset; - unsigned long pfn_flags; + u64 pfn_flags; void __pmem *virt_addr; size_t size; struct badblocks bb;