Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp3412108imm; Fri, 25 May 2018 05:23:43 -0700 (PDT) X-Google-Smtp-Source: AB8JxZoc5UnDZrHMF3eNER7QDC2Y1vI3M5BKXC9RiUQQ1wBOlDbPHXc7IwDpHJoijA7kZlcAM+rC X-Received: by 2002:a62:3e11:: with SMTP id l17-v6mr2400086pfa.18.1527251023616; Fri, 25 May 2018 05:23:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527251023; cv=none; d=google.com; s=arc-20160816; b=bGahZZJrwszJLNFLQa1VNALToPtyDuyu2qS0lCTbidWu97Bgbsumpzh+8/SLM6lYWU YuAq8g1OXNzczZ1JTSeTyAkaTz8fDGC8XUxV5K4rj7xHWlXVO5OKsYUWo/vB4GeYkR5l cju7T4QBhIdHg1OCOZzd8Q1+1FeLbY7cbAv+felPu22T/T4gGCQ53y7+V5r9zKSieLF4 5ztwzExCESUsmeOKs6CwSUMkV6i+nayFTJ8Y0xbe055AeBd6dxneVbABbeO0qFQYlBGW f+j86UuQPfwenYd+tj+/ce/f8IA9cxcLgyiG/7w39+CybSshuZc+nbHZVQMVix1UIbAd VyJQ== 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=icyEvWsOxWtuouBESYoON538c0wx/sKZwoQKevAA5iQ=; b=DG6UXg2WYPvKDGbKZ+S7jQrNa152h7TqmgBUoGBmkWkmbfd1xGWBAZDbBazBOs8xOn e6W6EyPMQhNNPWMubzu5lC8CZ8tOzD4tThB8185naSgc/pi6JrRzNoBtasB9o/UXhmUD AsVupWbY5IvRRCDEunfBo0PpYxPdSVifmZ8V0dMx9XAbKyrTliitmMuimpXSnfxvHfpG U7u9zCDyqh5BTz5VOCH5CVj4LT8+IjhFyp/DLMyDyvPyPTNS0k9HmsDcOv79e1vCGKou YuERHzuiSiSK093TSA5NQn9ABDvy96JVAoALbQ0OtBwtARC3xnxFdsTwss1HLnRaxBgH Xz7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@codeaurora.org header.s=default header.b=lxYIg7WS; dkim=pass header.i=@codeaurora.org header.s=default header.b=H8YPehhN; 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 w10-v6si23722424pfg.174.2018.05.25.05.23.29; Fri, 25 May 2018 05:23:43 -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=lxYIg7WS; dkim=pass header.i=@codeaurora.org header.s=default header.b=H8YPehhN; 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 S967035AbeEYMWt (ORCPT + 99 others); Fri, 25 May 2018 08:22:49 -0400 Received: from smtp.codeaurora.org ([198.145.29.96]:48712 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S967008AbeEYMWk (ORCPT ); Fri, 25 May 2018 08:22:40 -0400 Received: by smtp.codeaurora.org (Postfix, from userid 1000) id BEE7860F6E; Fri, 25 May 2018 12:22:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1527250959; bh=oSXHNUXVzNLSLVhmDYzgKFpOAIma4kJf7sw/GzQuvk8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lxYIg7WSNoarYj/L5KhebCXfNSLVO9Z6JXT3TO6s0V3E1AfCNFSy2BdXjZ/UaPlJI iaW94tYoVA/WofI5GMlDvW+dUQxnJrUypO+YKN/ym4fJg/z115Pq+1aGllP//RKDDM HG126vHJFQUlt9WvQq562JDQPJOvoeJRFV8U7HKU= 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 B51D46090E; Fri, 25 May 2018 12:22:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=codeaurora.org; s=default; t=1527250958; bh=oSXHNUXVzNLSLVhmDYzgKFpOAIma4kJf7sw/GzQuvk8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=H8YPehhNGM6Pr9eerF5hKvTNJJN7BDVQgQqrqUHypMPSxR7J2eN9I4jm1NyMIC5KY vW/Jag7JMLJwm+gQxJ73qbWs9ilG4wvdWIakoBlkap6fxyW0BG1vqqBW18fOukMeqL 3B0YQXaVk7kZI1sqY4/xIzI1GIWnwJsC+tyQKwhk= DMARC-Filter: OpenDMARC Filter v1.3.2 smtp.codeaurora.org B51D46090E 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 Cc: David Woodhouse , Brian Norris , Marek Vasut , Richard Weinberger , Cyrille Pitchen , Miquel Raynal , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org, Andy Gross , Archit Taneja , Abhishek Sahu Subject: [PATCH v3 09/16] mtd: rawnand: qcom: fix null pointer access for erased page detection Date: Fri, 25 May 2018 17:51:37 +0530 Message-Id: <1527250904-21988-10-git-send-email-absahu@codeaurora.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1527250904-21988-1-git-send-email-absahu@codeaurora.org> References: <1527250904-21988-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 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 9a11827..aab738f 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