Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp509679imm; Wed, 20 Jun 2018 01:57:28 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKFh0yRA6mdEqRZMo5VPxLsqGA9Iw7FY4eVKn4WK2lbhoLN1QPRUkNrA6r5iT1Meog1eAgk X-Received: by 2002:a17:902:8645:: with SMTP id y5-v6mr22618471plt.334.1529485048525; Wed, 20 Jun 2018 01:57:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529485048; cv=none; d=google.com; s=arc-20160816; b=jumbz8GyM1qA/xvlyZ4eCIWmymL3uhD45R32AsYx7L7k8IDDt/0E0vxvELy8JONnaA qv8hgILhcHDj4hQBDrpymVH638ZPSuIS6RMvYWxLkUQi7UaRiBYB18oZw9yhV2k3i+Od UYypp/sqM5EWQDIv0wlGWesG7Z7C8z/vQJmTVNwyFg8jZwaj05uJbTl3PeHedDyo0KQq TU5B9efrKO49IHYbw9Mu5O/CmJC0QBWoNW+WWuVhUWz+HQMbualV59RGu7rTRi9ITis0 vvi4yRLgSAVOG0V3uyDBPQ3C0U5Pz4SS5gvc5xoIIBhA0GAtxZeXH+kBU9G4TFTR6plG 398Q== 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 :dmarc-filter:dkim-signature:dkim-signature :arc-authentication-results; bh=Rd/pgUhHpQMQCvR8JMGMiuLyMEvotKjbIYqyojmPNMo=; b=Xzq06Ixv2UV/8GmQ/tbgeiDb9D6WJHGlCR63w9kkfO0Nsy4xiLb0+pEEiIHvQ/w679 eSbAcd0/paMlia8PJtL+POxGnicFnlELFIS6smCnciNSI0oO724/ZjlvOznOnPqsEl6f JEUF8j+d8B6B5Fc/hsTAXdumUS3WfdM85FLouXfA4v8mC53keOIW/eeqp4XseWvUj+YM 1F7Vf0/YhkHM8pwdrGD34wn7ckUYufek0TBH2jndi9NueS8t9hq4fU4I5o1CbVrtuJCU uJnPSLnIoVfXzrJeL8C//bmIuEdmBqKCPGApAmW6OrRvatKx03zxEmk1yJWyi3H8ISbg //yA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=Et11Y3HX; dkim=pass header.i=@codeaurora.org header.s=default header.b=Et11Y3HX; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w20-v6si1603239pga.349.2018.06.20.01.57.13; Wed, 20 Jun 2018 01:57:28 -0700 (PDT) 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; dkim=pass header.i=@codeaurora.org header.s=default header.b=Et11Y3HX; dkim=pass header.i=@codeaurora.org header.s=default header.b=Et11Y3HX; 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 S1754777AbeFTIwN (ORCPT + 99 others); Wed, 20 Jun 2018 04:52:13 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:49640 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932872AbeFTIpE (ORCPT ); Wed, 20 Jun 2018 04:45:04 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id D9A6B60B3C; Wed, 20 Jun 2018 07:28:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1529479705; bh=U7xGhBoBUaYz2FbRCFOOBwygcVX+Ji3Lpr50mrN4E/8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Et11Y3HXYQtc0ijRyf8M8JvBiOp1dg0nhX1gQob3Uoe/Y1HsN1DvuxAcPz4M0wBCq 8Oo776kRU3wkjaVUe4lGAXLdRoYJKh6ESQWcK43U4D2v5w08kDjb9fx2MqtdONYwVr 96Mi3K6N2Ww+/SITIDM6bh4xwMLm3o8vuGX7bRbs= X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on pdx-caf-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,T_DKIM_INVALID autolearn=no autolearn_force=no version=3.4.0 Received: from absahu-linux.qualcomm.com (blr-c-bdr-fw-01_globalnat_allzones-outside.qualcomm.com [103.229.19.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: absahu@smtp.codeaurora.org) by smtp.codeaurora.org (Postfix) with ESMTPSA id B1C3A60AD8; Wed, 20 Jun 2018 07:28:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1529479705; bh=U7xGhBoBUaYz2FbRCFOOBwygcVX+Ji3Lpr50mrN4E/8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Et11Y3HXYQtc0ijRyf8M8JvBiOp1dg0nhX1gQob3Uoe/Y1HsN1DvuxAcPz4M0wBCq 8Oo776kRU3wkjaVUe4lGAXLdRoYJKh6ESQWcK43U4D2v5w08kDjb9fx2MqtdONYwVr 96Mi3K6N2Ww+/SITIDM6bh4xwMLm3o8vuGX7bRbs= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org B1C3A60AD8 Authentication-Results: pdx-caf-mail.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: pdx-caf-mail.web.codeaurora.org; spf=none smtp.mailfrom=absahu@codeaurora.org From: Abhishek Sahu To: Boris Brezillon , Miquel Raynal Cc: David Woodhouse , Brian Norris , Marek Vasut , Richard Weinberger , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, Andy Gross , Archit Taneja , Abhishek Sahu Subject: [PATCH v4 08/15] mtd: rawnand: qcom: fix null pointer access for erased page detection Date: Wed, 20 Jun 2018 12:57:35 +0530 Message-Id: <1529479662-4026-9-git-send-email-absahu@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1529479662-4026-1-git-send-email-absahu@codeaurora.org> References: <1529479662-4026-1-git-send-email-absahu@codeaurora.org> 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 parse_read_errors can be called with only oob_buf in which case data_buf will be NULL. If data_buf is NULL, then don’t treat this page as completely erased in case of ECC uncorrectable error for RS ECC. For BCH ECC, the controller itself tells regarding erased page in status register. Acked-by: Miquel Raynal Signed-off-by: Abhishek Sahu --- * Changes from v3: NONE * Changes from v2: NONE * Changes from v1: 1. Added more detail in commit message 2. Added comment before each if/else drivers/mtd/nand/raw/qcom_nandc.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/mtd/nand/raw/qcom_nandc.c b/drivers/mtd/nand/raw/qcom_nandc.c index 0d931d5..a831f9c 100644 --- a/drivers/mtd/nand/raw/qcom_nandc.c +++ b/drivers/mtd/nand/raw/qcom_nandc.c @@ -1611,13 +1611,24 @@ static int parse_read_errors(struct qcom_nand_host *host, u8 *data_buf, int ret, ecclen, extraooblen; void *eccbuf; - /* ignore erased codeword errors */ + /* + * For BCH ECC, ignore erased codeword errors, if + * ERASED_CW bits are set. + */ if (host->bch_enabled) { erased = (erased_cw & ERASED_CW) == ERASED_CW ? true : false; - } else { + /* + * For RS ECC, HW reports the erased CW by placing + * special characters at certain offsets in the buffer. + * These special characters will be valid only if + * complete page is read i.e. data_buf is not NULL. + */ + } else if (data_buf) { erased = erased_chunk_check_and_fixup(data_buf, data_len); + } else { + erased = false; } if (erased) { @@ -1665,7 +1676,8 @@ static int parse_read_errors(struct qcom_nand_host *host, u8 *data_buf, max_bitflips = max(max_bitflips, stat); } - data_buf += data_len; + if (data_buf) + data_buf += data_len; if (oob_buf) oob_buf += oob_len + ecc->bytes; } -- QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted by The Linux Foundation