On Wed, Nov 12, 2025 at 10:33:25AM +0100, Miquel Raynal wrote:
Hi Christian,
On 09/11/2025 at 12:52:44 +01, Christian Marangi ansuelsmth@gmail.com wrote:
Commit 5c2f7727d437 ("mtd: mtdpart: check for subpartitions parsing result") introduced some kind of regression with parser on subpartitions where if a parser emits an error then the entire parsing process from the upper parser fails and partitions are deleted.
Not checking for error in subpartitions was originally intended as special parser can emit error also in the case of the partition not correctly init (for example a wiped partition) or special case where the partition should be skipped due to some ENV variables externally provided (from bootloader for example)
One example case is the TRX partition where, in the context of a wiped partition, returns a -ENOENT as the trx_magic is not found in the expected TRX header (as the partition is wiped)
I didn't had in mind this was a valid case. I am a bit puzzled because it opens the breach to other special cases, but at the same time I have no strong arguments to refuse this situation so let's go for it.
Thanks a lot for accepting this. I checked all the parser both upstream and downstream and I found this ""undocumented"" pattern of returning -ENOENT. [1] [2] [3]
For sure it's a regression, we had various device on OpenWrt that broke from migrating from 6.6 to 6.12. I agree there is the risk you are pointing out but I feel this is a good compromise to restore original functionality of the upstream parsers.
(the other error condition are -ENOMEM or sometimes -EINVAL for parser header present but very wrong)
[1] https://elixir.bootlin.com/linux/v6.17.7/source/drivers/mtd/parsers/tplink_s... [2] https://elixir.bootlin.com/linux/v6.17.7/source/drivers/mtd/parsers/scpart.c... [3] https://elixir.bootlin.com/linux/v6.17.7/source/drivers/mtd/parsers/ofpart_b...