From nobody Thu Apr 9 20:27:12 2026 Received: from mail-pf1-f227.google.com (mail-pf1-f227.google.com [209.85.210.227]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 63D751F4634 for ; Thu, 5 Mar 2026 19:49:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772740174; cv=none; b=RxCRfgZWeZ687kJYJIlFEgJMPXkzBXtFQCxwuqi1ScUBUIHvoWcKoknFUE2C/Z+uDwLbp4JGBA2t6TMS9MMp5lQgxH/+Rhubh3cxXovWDtKbcXWzrroe5cgIHULQiUAyGcAP6AljF12W6Br3cgfrJ0C6Mge5U36YOHe8pxJjJBc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772740174; c=relaxed/simple; bh=c4B21rg5otsbSIwMJQbIa4D8YZkB9rXpFOvv/iCSUTs=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=AbJkpRECOrzJQHfJ9QXCAxJqKA9fiuWfp9/bgSi5BgdK1zDoruNQYt54BqI3mlCLJ6DVxqJ6NbPPXvL/Xn7fUkcvWqrt78FV7uk1chklC+D3s1LelINN5A0IKTcZY5EOEfTpX5ua7XRLjRkV8Vc1Er8uXsTfUEJboCKXjK+GFcU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=OBikQmWh; arc=none smtp.client-ip=209.85.210.227 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="OBikQmWh" Received: by mail-pf1-f227.google.com with SMTP id d2e1a72fcca58-829759ca646so1206640b3a.2 for ; Thu, 05 Mar 2026 11:49:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772740173; x=1773344973; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:dkim-signature:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=M4emheSK6FNZdq1wknl5756xoI0itlVkBx7IxnP6UFk=; b=T3ObajtWp1p20MfHuBlJ8fcOEF0yIO3SwhdEyZPM7t0OLS0rt0fuY6bxC69vrboBUK rEhNZTqIdZR8MLrOo2LDtVa/1kjMbKjvg9URDGYNuQsltyhoHOpyYCua1O6Nabv5z9qo mWpCe1gjbRVS7rP+tnvPpwXRytmRFe+Xh93PuE4E9UAa81xs7WF6u45ekv9htN0uKFRA aPwV73yoMETQ2i4NXTqO9Obr13gs4sv+ibnASm5zFZCQhXiBVlaJceE+EV8qZbUSvjJy pi3d39+i6CYOYr+pl/nlEuUT1elZOEmLQI+JYNsj/Bguv1i2RR2w1s0IWbQd9hOERk6j gVng== X-Forwarded-Encrypted: i=1; AJvYcCXxmYh2xt2wDjEuqH7tU6mV6TGwl+wcJNNhL7SCGlTZiAf/plV3nh9yZM4LhPIzppuolNMDmKeqQrpdBAA=@vger.kernel.org X-Gm-Message-State: AOJu0YwffPqRL3xB1MCdnLIxUmEkkts/XUgn+gzR3kYm/kE7ap1y2Sar uTHtcMFjjIvbScaddNBVkHTMDhV/SK7A/bxWJqDMMvuz3yhp1CAclrMnFBFI4MYtLyi1aZ0nMP+ bZ0m5hglETddYT9eGayWUSdfCPN1ndlFtqVv7P4i2RR0OXCDK3Q6C0G1XBzDNyj5YNwpLsm+JzH GuSNY1yYSLDoaK1pTXm7FiF2KpeqUWHtUtmQeWfytMwDPo0AxNZG5xEThAMTwHaYF21t1YgSWa0 eGvlYTOzUAIGKE9 X-Gm-Gg: ATEYQzwR8HA5j05/id9nRPblWxVS3VDypY/VVUnfX+XzI8NpVpnAPjpPnR670bA6Rq9 ckAqEcfVN4DW6nFu1w+f8SOQRvpuwIFOJ38D9a96B4kUDaGUpZrcFLCCvbIUqA7sNICRmx2hU2R NcuMtaG/V/sSds7ZIfKuTWloNicEEsY834bI9zQXfFazR/sDs4T2FM4+bPDx4uY30ETc1I5WEeR 1+wx1xLrr9HiD++SMu5sDZnYvyeNnkcBHwnNueAOfQVEKgPsU42ieu38TjrXR5H9BBLTZkg20pd dR1qqIqzOFPNGg1F1iBf26YxPU0Z3Fri/dApbGm7FFYX8K9eqv/fQC62EiGphA2oRBnI8yQbQfm SAPezmYUdG+XAoVcj1e8sk7PsHAzB3KWYm6HF8ssTCXaXYfIHzYpl/3y4cwlNWuP8Q+klDRhtjy ulVMUi8ypRKvfbYGwSVLgYL0OtBuVKQgi1EeqJTSz6zpC63LSutJQ1HXJ+ X-Received: by 2002:a17:90a:c2cc:b0:358:d80e:3831 with SMTP id 98e67ed59e1d1-359a69a28bdmr6530925a91.3.1772740172553; Thu, 05 Mar 2026 11:49:32 -0800 (PST) Received: from smtp-us-east1-p01-i01-si01.dlp.protect.broadcom.com (address-144-49-247-102.dlp.protect.broadcom.com. [144.49.247.102]) by smtp-relay.gmail.com with ESMTPS id 98e67ed59e1d1-359b2dede86sm348652a91.8.2026.03.05.11.49.32 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 05 Mar 2026 11:49:32 -0800 (PST) X-Relaying-Domain: broadcom.com X-CFilter-Loop: Reflected Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8cb3a2eb984so5800614285a.0 for ; Thu, 05 Mar 2026 11:49:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1772740171; x=1773344971; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=M4emheSK6FNZdq1wknl5756xoI0itlVkBx7IxnP6UFk=; b=OBikQmWhFUHZayNGYI4JD4tleeZCmayEnkVRk7RKnqAWTQF6QhtYnCIVAHtgeLPhUK 7Sup14y0aWaa7GwqroS3qaOIz2GvTFJuUMK//Th9k2oKdq8U1QlUMEAND/gWd1N9CUHs xlpa0CoMLzmM6UbEKPtEBrPvhg4SPhQVuGMa0= X-Forwarded-Encrypted: i=1; AJvYcCXkb6c2G1eIzhKYW8PF3wPYKNPax5H659ElCWbelYDE0AwA6oGPYnVLxmjETknLNNTpadQxTFNNfcffq98=@vger.kernel.org X-Received: by 2002:a05:620a:4892:b0:8b2:eea5:3311 with SMTP id af79cd13be357-8cd5aefb7c9mr932369885a.26.1772740171397; Thu, 05 Mar 2026 11:49:31 -0800 (PST) X-Received: by 2002:a05:620a:4892:b0:8b2:eea5:3311 with SMTP id af79cd13be357-8cd5aefb7c9mr932366685a.26.1772740170894; Thu, 05 Mar 2026 11:49:30 -0800 (PST) Received: from mail.broadcom.net ([192.19.144.250]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-899e7627b69sm131228046d6.41.2026.03.05.11.49.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Mar 2026 11:49:30 -0800 (PST) From: Kamal Dasu To: miquel.raynal@bootlin.com, richard@nod.at, vigneshr@ti.com Cc: masonccyang@mxic.com.tw, florian.fainelli@broadcom.com, william.zhang@broadcom.com, bcm-kernel-feedback-list@broadcom.com, linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Kamal Dasu Subject: [PATCH] mtd: rawnand: serialize lock/unlock against other NAND operations Date: Thu, 5 Mar 2026 14:49:06 -0500 Message-Id: <20260305194906.3007131-1-kamal.dasu@broadcom.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-DetectorID-Processed: b00c1d49-9d2e-4205-b15f-d015386d3d5e Content-Type: text/plain; charset="utf-8" nand_lock() and nand_unlock() call into chip->ops.lock_area/unlock_area without holding the NAND device lock. On controllers that implement SET_FEATURES via multiple low-level PIO commands, these can race with concurrent UBI/UBIFS background erase/write operations that hold the device lock, resulting in cmd_pending conflicts on the NAND controller. Add nand_get_device()/nand_release_device() around the lock/unlock operations to serialize them against all other NAND controller access. Fixes: 92270086b7e5 ("mtd: rawnand: Add support for manufacturer specific l= ock/unlock operation") Signed-off-by: Kamal Dasu Reviewed-by: William Zhang --- drivers/mtd/nand/raw/nand_base.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/nand/raw/nand_base.c b/drivers/mtd/nand/raw/nand_b= ase.c index 38429363251c..dfd8361bdd36 100644 --- a/drivers/mtd/nand/raw/nand_base.c +++ b/drivers/mtd/nand/raw/nand_base.c @@ -4737,11 +4737,16 @@ static void nand_shutdown(struct mtd_info *mtd) static int nand_lock(struct mtd_info *mtd, loff_t ofs, uint64_t len) { struct nand_chip *chip =3D mtd_to_nand(mtd); + int ret; =20 if (!chip->ops.lock_area) return -ENOTSUPP; =20 - return chip->ops.lock_area(chip, ofs, len); + nand_get_device(chip); + ret =3D chip->ops.lock_area(chip, ofs, len); + nand_release_device(chip); + + return ret; } =20 /** @@ -4753,11 +4758,16 @@ static int nand_lock(struct mtd_info *mtd, loff_t o= fs, uint64_t len) static int nand_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len) { struct nand_chip *chip =3D mtd_to_nand(mtd); + int ret; =20 if (!chip->ops.unlock_area) return -ENOTSUPP; =20 - return chip->ops.unlock_area(chip, ofs, len); + nand_get_device(chip); + ret =3D chip->ops.unlock_area(chip, ofs, len); + nand_release_device(chip); + + return ret; } =20 /* Set default functions */ --=20 2.34.1