]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
mtd: rawnand: serialize lock/unlock against other NAND operations
authorKamal Dasu <kamal.dasu@broadcom.com>
Thu, 5 Mar 2026 19:49:06 +0000 (14:49 -0500)
committerMiquel Raynal <miquel.raynal@bootlin.com>
Wed, 11 Mar 2026 15:32:36 +0000 (16:32 +0100)
commitbab2bc6e850a697a23b9e5f0e21bb8c187615e95
treebc557d8d250dba30b3d6dd655b093aaec01ba8c3
parent073b2db72426adee591a0f5a967009ea459ef688
mtd: rawnand: serialize lock/unlock against other NAND operations

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 lock/unlock operation")
Signed-off-by: Kamal Dasu <kamal.dasu@broadcom.com>
Reviewed-by: William Zhang <william.zhang@broadcom.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
drivers/mtd/nand/raw/nand_base.c