Received: by 2002:a25:23cc:0:0:0:0:0 with SMTP id j195csp443734ybj; Tue, 5 May 2020 01:22:51 -0700 (PDT) X-Google-Smtp-Source: APiQypJRlCxtt/tD6lSa6A6P2Djjcmla9znY2QuHQ/dInfl5R8GgJZzbyloUBzlBmECu8kqWJMw8 X-Received: by 2002:aa7:d518:: with SMTP id y24mr1467748edq.222.1588666970955; Tue, 05 May 2020 01:22:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588666970; cv=none; d=google.com; s=arc-20160816; b=ZQA41PZRnlqSGPiLQkrDQ8ZK59KtpuintEcySePfhCmxD56GK03U0EUDtx+jl5UEHu bmfsyfFKrG6C3FdGwmztakmXlujc/lo0OkqCVQz8FTbg+oMgWgDOk46oJyIhWSvVAFtK 1y+6KoUq8xhYVxTELff+hijisMIEKY/Y7CV+sa+WC8gURbgbXh74lmAiM+m5L1/rsjmB c/cG+tJUToIjtQw1Tg9zh4SZ37V1E7Ktct8yGv8TtYKp0UYzu+gGl/OgVl4Ejd8h5dUn wFQ+xFv/erwihZC4nEXZTcJsXLU3h8wxkcfBFozIoLJ0tDRhDDuTEO75yh/UrXEGFiQa W3Bg== 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=tu5nPp2tsr/xXDZw6NiH6JY/janBM8/TqJS/baK6bXk=; b=Vez/BScHkvuHgapmYaN5SG1TiCComXwACjMbX55xDp1e8msrq3NbykDvkfZKJVADhH w88L7WhUhyS87NX4hcOh21CZ7vvmnI7kdUJtB1B30KvTmHcEsCQugXdPDQUlZe+rglla FRqWwvNiQ1E4+2tsAKN+iMZAQO7FSPTWAFbLkmZA9tBFVf1cQcFVcG/jvEP7aqo6EpYo 55+To1MoHyi+iPWxpQ9lgYuJ5tW22AiMLfMbJ/qxUFejv8Aa5zS5kiT5CiZnbrgbZCD1 YIumWj+vsXzclxdozOEE8jQkV/sadvO2N7Ujem8HW4lr4OR+M2YDa2FMQVNmIgZPNoSc qWog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=hfCvpOqo; 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 ch13si642522ejb.338.2020.05.05.01.22.26; Tue, 05 May 2020 01:22:50 -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=hfCvpOqo; 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 S1728410AbgEEIVC (ORCPT + 99 others); Tue, 5 May 2020 04:21:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1725766AbgEEIVB (ORCPT ); Tue, 5 May 2020 04:21:01 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71A78C061A0F; Tue, 5 May 2020 01:21:01 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id h9so1645943wrt.0; Tue, 05 May 2020 01:21:01 -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=tu5nPp2tsr/xXDZw6NiH6JY/janBM8/TqJS/baK6bXk=; b=hfCvpOqo590T0shuE1cPR7Tyz4uhd2A/5uh7k+1VU2jedYxG9T1l4vgT1N5LVp7/rU tBOap/HTZwM8PxrP/4Ry1VPhX+JjSr7aTQj32sKsZ361l7KSOldxc+/lOT4bb08zXTIY bGsadrq+6cxj1FWYpnXSU1qMjEJQcvbHecedCmrt9tDQfKV5bNW1DJCKuqHw6OqylKyK 0nVefIu/SOI2KBuHsym/FdIb5P6Oza1bDm+mZMzXdIDrCWd106b5mQDChyD92l0ppLwI pSAuWHwF8e1cLmCubRyxw+0jZgwwurLfMxVchOT31Zqja55LvsEICbiRb/7Zxlh3MSFy TSaQ== 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=tu5nPp2tsr/xXDZw6NiH6JY/janBM8/TqJS/baK6bXk=; b=N+qZPeHjAzeInpmDIlsN3wI+LKpVqe4tmKa9vbjw7Fs2U3mIxwoOZCWYX7+SXlFmzX hFYi1qYvut0lgraxmy4uEsy2fkTVh2cYbYpoMlC18JFnHUBtegW0I7SKEBTTzjLHsGES MATG9ZTsujMeaksHw56/9pvi3hm0zeIpUn59EfrRa8+c1DtsObcivURHRmY8GlYNtY9/ 5ep/A3TemTAocSZgS9aW1FHnCbRoxYPDH3YfMfzPso9U7Z+O/tTovYYGMLpn6rI6MlR8 PvAhd2o9mG0o+f1CS+Ne1aDUv86wU91FmDhtcgBHbNET1hYM7/uyvs29Siprk4qeKvHL KT4A== X-Gm-Message-State: AGi0PuYH7E8ZLK80mI0NaNY1vTAcihhJBXB6xNWMa1F+buSA+mDNtuEh Ren5X6mid3tK4Bt3QmxaLT70iCX44U9nsDF0 X-Received: by 2002:adf:fa41:: with SMTP id y1mr2198454wrr.131.1588666860081; Tue, 05 May 2020 01:21:00 -0700 (PDT) Received: from skynet.lan (246.red-83-44-9.dynamicip.rima-tde.net. [83.44.9.246]) by smtp.gmail.com with ESMTPSA id k9sm1969160wrd.17.2020.05.05.01.20.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 May 2020 01:20:59 -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 v2] nand: brcmnand: correctly verify erased pages Date: Tue, 5 May 2020 10:20:55 +0200 Message-Id: <20200505082055.2843847-1-noltari@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200504092943.2739784-1-noltari@gmail.com> References: <20200504092943.2739784-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 the ECC aren't 0xff. Fixes: 02b88eea9f9c ("mtd: brcmnand: Add check for erased page bitflips") Signed-off-by: Álvaro Fernández Rojas --- v2: Add Fixes tag drivers/mtd/nand/raw/brcmnand/brcmnand.c | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/drivers/mtd/nand/raw/brcmnand/brcmnand.c b/drivers/mtd/nand/raw/brcmnand/brcmnand.c index e4e3ceeac38f..546f0807b887 100644 --- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c +++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c @@ -2018,6 +2018,7 @@ 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; int bitflips = 0; @@ -2035,11 +2036,24 @@ 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, + + ret = nand_check_erased_ecc_chunk(ecc_chunk, chip->ecc.size, + NULL, 0, NULL, 0, + chip->ecc.strength); + if (ret < 0) + return ret; + + bitflips = max(bitflips, ret); + } + + for (i = 0; mtd->ooblayout->ecc(mtd, i, &oobecc) != -ERANGE; i++) + { + ret = nand_check_erased_ecc_chunk(NULL, 0, + oob + oobecc.offset, + oobecc.length, + NULL, 0, chip->ecc.strength); if (ret < 0) return ret; -- 2.26.2