From patchwork Wed Jan 13 21:38:08 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101163 Delivered-To: patch@linaro.org Received: by 10.112.130.2 with SMTP id oa2csp3620572lbb; Wed, 13 Jan 2016 13:39:07 -0800 (PST) X-Received: by 10.98.32.25 with SMTP id g25mr707991pfg.20.1452721147058; Wed, 13 Jan 2016 13:39:07 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id vx1si4351874pac.159.2016.01.13.13.39.06; Wed, 13 Jan 2016 13:39:07 -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 S1754466AbcAMVjE (ORCPT + 29 others); Wed, 13 Jan 2016 16:39:04 -0500 Received: from mout.kundenserver.de ([212.227.126.133]:57767 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751073AbcAMVi7 (ORCPT ); Wed, 13 Jan 2016 16:38:59 -0500 Received: from wuerfel.localnet ([134.3.118.24]) by mrelayeu.kundenserver.de (mreue001) with ESMTPSA (Nemesis) id 0MOXED-1aEGSV1HK1-005m6f; Wed, 13 Jan 2016 22:38:10 +0100 From: Arnd Bergmann To: Brian Norris Cc: Wan ZongShun , David Woodhouse , linux-arm-kernel@lists.infradead.org, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] mtd: nuc900_nand: read correct SMISR register Date: Wed, 13 Jan 2016 22:38:08 +0100 Message-ID: <9019174.GYajdpGP8V@wuerfel> User-Agent: KMail/4.11.5 (Linux/3.16.0-10-generic; KDE/4.11.5; x86_64; ; ) MIME-Version: 1.0 X-Provags-ID: V03:K0:RRUK+UxgTog8SaCvo66UhbHt3b0FC4Ce2G8bI/rJCwZ/fhhBoUc cdgbqhihBvhfxYzvKbP5hh9E/Esg5tgoKA+nCFqWjiUC0cqD/xKqJKwumwUI7O/jyiZURLZ nzSzHSIHai3U2ruIxZhveXyCaxxJrmXtbKBOeiPIc06r5Kh9C62jSZP/hlAHWASsm3m8KO3 g6D7yR2owwNAW0dbLoxOg== X-UI-Out-Filterresults: notjunk:1; V01:K0:a2lsYrshcUM=:+fWKiYRRKYfk6TefuRyK9x FQ9FtjeGFO/myG/dxkugQMihksmgBW1qQNs2Zmn/q8+JRPj3LgmNR5QD3ZKVTRbY2klpMuMSr GnYmjyZel31ddMwYF3lzxlFY6OOMm0AGkf/4FxLYc6KbPG1/qK55ZjrhRsGRTKVaKJAkj52I7 1S7MdfE6TO78KwC4MkmuKCTOHeIMZddVfe6V6vyy0WUe8qMKmekWKsEIXLgya1SfyPodOQcyP n+tRtbJwTTbAEHsV81oLaBIPoa9TGrLn5oAuUc4ZB3qFVwDHXq9HjeBqcn8s2nIkINf184rKk Jzw6SfrZVmhlybTDWZ8JyUiRwj2c9tVJ+40VSwEfwxdPIwQAplz4uFkPC5OUj+UGB43qqqM66 KNkFif6UyCLyY6/oVJIABhukzgsZZIN0IEKbA1EHbNRpJu8dt0DyZjGZhbBQC9b//zVDh8hQn nqER4yDXsse2855TaQL8PlVxu8x4F0u+q73IHiq+L6tI8TpoKo+ysPDGhzqdDC2jyrqMmvvdW LvRR9r4MtuyVownCvVuR8G7yKEGgNQi+x0RIq6Gc+IBY2Xw623xA62FYyv8PdagJ1tuPEsQv4 oiOci2WkR2aL2GzSgLoU8ze4b5iizWa6Q+lRoosSadCiIh2sSwzzaUE1EiSzyTPc885bjLnP3 z5Hi3kQdrnk6onyWjlofblTX8FhpC6orAbqLMU+zsf4vJ+hy0lCoYnD9f4/mQsCa+VmHXfsTX DTEyF42N0SWHVHae Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The nuc900_nand driver has always passed an incorrect register address in its nuc900_check_rb() function, which cannot possibly work, and in some configurations gives us a build warning: drivers/mtd/nand/nuc900_nand.c: In function 'nuc900_check_rb': drivers/mtd/nand/nuc900_nand.c:27:23: warning: passing argument 1 of '__raw_readl' makes pointer from integer without a cast [-Wint-conversion] #define REG_SMISR 0xac drivers/mtd/nand/nuc900_nand.c:118:20: note: in expansion of macro 'REG_SMISR' val = __raw_readl(REG_SMISR); This makes sure we actually read from the register rather than from (void *)0x000000ac in user space. I suspect nobody noticed this before because the nuc900_nand_devready() function never gets called, or nobody uses this driver on an upstream kernel. Possibly even both. Signed-off-by: Arnd Bergmann diff --git a/drivers/mtd/nand/nuc900_nand.c b/drivers/mtd/nand/nuc900_nand.c index 220ddfcf29f5..dbc5b571c2bb 100644 --- a/drivers/mtd/nand/nuc900_nand.c +++ b/drivers/mtd/nand/nuc900_nand.c @@ -113,7 +113,7 @@ static int nuc900_check_rb(struct nuc900_nand *nand) { unsigned int val; spin_lock(&nand->lock); - val = __raw_readl(REG_SMISR); + val = __raw_readl(nand->reg + REG_SMISR); val &= READYBUSY; spin_unlock(&nand->lock);