Received: by 2002:a25:868d:0:0:0:0:0 with SMTP id z13csp2478123ybk; Mon, 11 May 2020 23:53:36 -0700 (PDT) X-Google-Smtp-Source: APiQypJ1aGgyk/pQXa2N1SVVQ6TFDpU/CV0ei66r+DCZ6BCVHD9a3PjuxEc3SNWIYJ3auopyxcO7 X-Received: by 2002:a17:906:f1c4:: with SMTP id gx4mr15959378ejb.171.1589266416043; Mon, 11 May 2020 23:53:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1589266416; cv=none; d=google.com; s=arc-20160816; b=okVb6/i6YX7BLbqg9Z5YYaUL3MaVw7QKp15AoFMXJqbKdDsyt+E+ZkjwXXvpwBIj24 NwsJxpdXMyn1YT2H9BavxRACYLIFQ2/DlgmGbHYiNQFKaVMDEzauhbyR0wfxTsR4crlD 9dVzPnKoTjpEdfFr8iC7nNeEr8UGH2hJ1enjJ0OnJp8o5vo0AD2RYcyt5oh6mevMOx0V BMO/SHwkfu8+2/xN2au2idCDzhuR5wVXbg7e8bnN6m5dAUn3f/gVD7A8UV/Ynmdgkuza t+ZumDna7bjY/19Ci4Jzp5+Guxw6jwD8Ms2tKE0YcBp1C277upE2SiFD7iNKYd8En4Ld r+tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=PzqUJAgwkfPwZqY9huLuJ57Jz2DxDsPXmmqSEmn6iEQ=; b=Q3nNIHUC+2CmP2dfHCf9JLhysnPLRsKamv9bBf9YhUIj2tiRFykc2gyirZlAE5dBoe wL+4yuUtdYSolpP4ukgCCql0FcRF9dD7EOeZCH9ghCZUbP5bzhAGuhfVJ0aalifrhGfz WKKiErTYvTIKrAA2LvT9Ms6m6EXNCWFbqt1qgREy4K+pW6Wk/4DfEZOVWMlZ/rCGhDek W7LnWfMsQi4nP6xZefqouNWsrvzVBNJH4svi6KFBYdgVwnAq4E8tXxZS4tFnSAKcYv6p Eycp5opgV+strhw7kmo846e35mIasII1Kzstb8TRWzpPoZv1lEb9zcB2ZpsfzsuCi07j RcJA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jYYn2rm9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id di2si7629530edb.117.2020.05.11.23.53.12; Mon, 11 May 2020 23:53:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=jYYn2rm9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728951AbgELGvR (ORCPT + 99 others); Tue, 12 May 2020 02:51:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51004 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725987AbgELGvQ (ORCPT ); Tue, 12 May 2020 02:51:16 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F2CE3C061A0C; Mon, 11 May 2020 23:51:15 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id y24so21992336wma.4; Mon, 11 May 2020 23:51:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=PzqUJAgwkfPwZqY9huLuJ57Jz2DxDsPXmmqSEmn6iEQ=; b=jYYn2rm9tXXBGEfdfNQxs0IaQPLDPbZSznuhX3K3+inFDcNXl0KqQtlWqLM9/BjpNP kVv7wd8np8uF/tWqF7LnPYZiT9kKEfwIdiBsKmde+aZznx/vHd5yLgXEiJ8u98GMTMm/ Gsv4kEFmvrb1jC/i9LQB3C+LyUCfjfqEwgt12dDtMEOnNbO0QMLxQwIa2COQGzigJXAe 4CaHT90CiQBrTZ2ua2AHa+d8Mi+GHAtvKm9bHHumm3st3Gi8TwvFOWQJTogShROTWwN9 OmVGoAxdexdjEQoAoQEigGrj3xKbHKGvBoDQU53JtJj2qNesFI9pkKokCm7CWUhcF4NW GQSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=PzqUJAgwkfPwZqY9huLuJ57Jz2DxDsPXmmqSEmn6iEQ=; b=PRRpqQRHdTXg+LpL8hkkd1ya4OPrzV6h31q422IpRhu4Gh1mzelUKGAmGPR1Ke7YqL r0WJfJyjmU0iE27M2Ph5Z9CbG8w5fWUQO2hGFHw8ojx8r4SJGX/4qk32GvxdGXaZNPL6 smito80wpiS6RqgzdYwwUzKLo+PSjWgv26ujnT+VoAW+gxAcjqTWU7yiI/TSdao8ruVw 25WxhuBFbtzMgt67wgCznMrjlONg5Nz1G40oQEuI5ciBfVQOGPp4bHsT+nqfxyoqpgeP fDyWZmfzvpD9R26f29ibv3kb3ldzEp7FrXqkXUOzLbUXXOpjRcXJv0FAWF+dec3m9eOk ONkg== X-Gm-Message-State: AGi0PuZxP89QPhIrrVOvRUBbMq91Cm4rdqgj3r5V8w4o4N+v/ZyrxoCD rBXVtJ26Ma3J+1g/WVbJuM4= X-Received: by 2002:a7b:cf23:: with SMTP id m3mr34648915wmg.36.1589266274574; Mon, 11 May 2020 23:51:14 -0700 (PDT) Received: from skynet.lan (198.red-83-49-57.dynamicip.rima-tde.net. [83.49.57.198]) by smtp.gmail.com with ESMTPSA id n25sm30740119wmk.9.2020.05.11.23.51.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 May 2020 23:51:14 -0700 (PDT) From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= To: computersforpeace@gmail.com, kdasu.kdev@gmail.com, miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com, sumit.semwal@linaro.org, linux-mtd@lists.infradead.org, bcm-kernel-feedback-list@broadcom.com, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org Cc: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Subject: [PATCH v3] mtd: rawnand: brcmnand: correctly verify erased pages Date: Tue, 12 May 2020 08:51:11 +0200 Message-Id: <20200512065111.716801-1-noltari@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200505082055.2843847-1-noltari@gmail.com> References: <20200505082055.2843847-1-noltari@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The current code checks that the whole OOB area is erased. This is a problem when JFFS2 cleanmarkers are added to the OOB, since it will fail due to the usable OOB bytes not being 0xff. Correct this by only checking that data and ECC bytes aren't 0xff. Fixes: 02b88eea9f9c ("mtd: brcmnand: Add check for erased page bitflips") Signed-off-by: Álvaro Fernández Rojas --- v3: Fix commit log and merge nand_check_erased_ecc_chunk calls. v2: Add Fixes tag drivers/mtd/nand/raw/brcmnand/brcmnand.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c index e4e3ceeac38f..80fe01f03516 100644 --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c @@ -2018,8 +2018,9 @@ static int brcmnand_read_by_pio(struct mtd_info *mtd, struct nand_chip *chip, static int brcmstb_nand_verify_erased_page(struct mtd_info *mtd, struct nand_chip *chip, void *buf, u64 addr) { + struct mtd_oob_region oobecc; int i, sas; - void *oob = chip->oob_poi; + void *oob; int bitflips = 0; int page = addr >> chip->page_shift; int ret; @@ -2035,11 +2036,19 @@ static int brcmstb_nand_verify_erased_page(struct mtd_info *mtd, if (ret) return ret; - for (i = 0; i < chip->ecc.steps; i++, oob += sas) { + for (i = 0; i < chip->ecc.steps; i++) { ecc_chunk = buf + chip->ecc.size * i; - ret = nand_check_erased_ecc_chunk(ecc_chunk, - chip->ecc.size, - oob, sas, NULL, 0, + + if (mtd->ooblayout->ecc(mtd, i, &oobecc)) { + oob = NULL; + oobecc.length = 0; + } else { + oob = chip->oob_poi + oobecc.offset; + } + + ret = nand_check_erased_ecc_chunk(ecc_chunk, chip->ecc.size, + oob, oobecc.length, + NULL, 0, chip->ecc.strength); if (ret < 0) return ret; -- 2.26.2