Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp631090pxk; Wed, 16 Sep 2020 12:46:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzALjQnt0voVhG1loNheeGXYTwMaMfspKjzHTGcK0UePLwTQV9FcXvnmNHvzVuC4AosUO2Q X-Received: by 2002:aa7:de82:: with SMTP id j2mr30781478edv.3.1600285567765; Wed, 16 Sep 2020 12:46:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1600285567; cv=none; d=google.com; s=arc-20160816; b=BSHW7ijCZTiOr4MF7k12QGTQx32NpDzhrTTktobI+Y37hcDv4Uj+z2T+kXCGgjAVGf tiXGAM8L8Ap7d1m9sVaRlHkhxIHoBvzLaTrgjUvYCj9ycjtCXIBDeHYsujHMu69z4x/b DfYVZJ8XMkrB8325Bd1KYOreZo7LB4HPVS4KS2KNc1/RA/pmRPo/tyx4gSZhZemxLU6Q /UevG1sBu5B5N8UhGKW45Ciecp4v9aCo2Bpk9djfgzmKkQrQzkgkfHzmZmPpFRVjHyOI zgrQZQJXxgT1Wo5i+TgOMQnT7wNb/aYq2+EogJyqZdmLKH60qrnF7eoq3NZSL3GSQsPT 69Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=5SDGHQ0o/9N/tXJ0QW0vh/uFIuS6GbABMXglY2guPHk=; b=JVdVxeAJE5BwgnYTwpwFDxry9ySCrnTr+INo2PN9vxJpcQp6prRNwO8IDHn+i2QwDQ fewPgIU5Gqf22m/YFu6VlvNfa35tQ4gJp61pipet5Dol7qNTnWscpN48hJ8VfAhHEI8k ao22a3qrw8NFUBIYecQ4Ba5ftVj4nBqc0A+IeIbjhnEDb4vmZyFipbn5epOjYNzN1RXV 2hgMRhYN7iL4LSLGpJGYBa5obdJIBqyNHJCO7gmpL9nbQbF1nY9fkfLb3kKjozSgrsYN RvcVnfe1W0KV9GmqAmiEGMQoEUMa2L8OSwIXWDBPNP8kUDrg/3T3gujAf/Dajco7kDC4 3KqA== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=ispras.ru Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c10si13148386edn.316.2020.09.16.12.45.45; Wed, 16 Sep 2020 12:46:07 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=ispras.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727828AbgIPTmU (ORCPT + 99 others); Wed, 16 Sep 2020 15:42:20 -0400 Received: from mail.ispras.ru ([83.149.199.84]:42006 "EHLO mail.ispras.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727635AbgIPTlR (ORCPT ); Wed, 16 Sep 2020 15:41:17 -0400 Received: from hellwig.intra.ispras.ru (unknown [10.10.2.182]) by mail.ispras.ru (Postfix) with ESMTPS id 0F47A40D403E; Wed, 16 Sep 2020 19:41:10 +0000 (UTC) From: Evgeny Novikov To: Miquel Raynal Cc: Evgeny Novikov , Richard Weinberger , Vignesh Raghavendra , Matthias Brugger , Boris Brezillon , "Gustavo A. R. Silva" , Masahiro Yamada , Stephen Boyd , linux-mtd@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, ldv-project@linuxtesting.org Subject: [PATCH] mtd: rawnand: mtk: avoid underflow in mtk_nfc_nand_chip_init() Date: Wed, 16 Sep 2020 22:40:45 +0300 Message-Id: <20200916194045.6378-1-novikov@ispras.ru> X-Mailer: git-send-email 2.16.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If of_get_property() will set nsels to negative values the driver may allocate insufficient memory for chip. Moreover, there may be underflow for devm_kzalloc(). This can result in various bad consequences later. The patch causes mtk_nfc_nand_chip_init() to fail for negative values of nsels. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Evgeny Novikov --- drivers/mtd/nand/raw/mtk_nand.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/mtd/nand/raw/mtk_nand.c b/drivers/mtd/nand/raw/mtk_nand.c index ad1b55dab211..df98a2eec240 100644 --- a/drivers/mtd/nand/raw/mtk_nand.c +++ b/drivers/mtd/nand/raw/mtk_nand.c @@ -1376,7 +1376,7 @@ static int mtk_nfc_nand_chip_init(struct device *dev, struct mtk_nfc *nfc, return -ENODEV; nsels /= sizeof(u32); - if (!nsels || nsels > MTK_NAND_MAX_NSELS) { + if (nsels <= 0 || nsels > MTK_NAND_MAX_NSELS) { dev_err(dev, "invalid reg property size %d\n", nsels); return -EINVAL; } -- 2.26.2