On Thu Sep 10, 2026 at 8:44 PM CEST, Itai Handler wrote: > spi_nor_remove() restores the addressing mode with the same unlocked > call to spi_nor_restore() that spi_nor_shutdown() used before the > previous patch, and it is exposed the same way: the MTD device is still > registered at that point, so an unbind can run the restore while another > thread is in the middle of an operation. A busy flash silently ignores > the restore, and a restore that lands between two chunks of a read > switches the chip to 3-byte addressing while the driver keeps sending > 4 address bytes. > > Moving the restore after mtd_device_unregister() would not fix this. > Since commit 19bfa9ebebb5 ("mtd: use refcount to prevent corruption") > del_mtd_device() drops a reference instead of refusing with -EBUSY when > the device is in use, so unregistering returns right away and does not > wait for an operation that is already running. > > Take nor->lock for the restore, as spi_nor_shutdown() now does. The > unregister stays unconditional, so a flash whose restore had to be > skipped is still torn down. Why are these two different patches? This should be folded into the former one. -michael