Re: [PATCH v6 1/9] block: partitions: of: Skip child nodes without reg property
Loic Poulain <[email protected]> Tue, 30 Jun 2026 21:59:09 +0200
| Newsgroups | org.infradead.lists.ath10k,org.kernel.vger.linux-arm-msm,org.kernel.vger.linux-block,org.kernel.vger.linux-bluetooth,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel,org.kernel.vger.linux-mmc,org.kernel.vger.linux-wireless,org.kernel.vger.netdev,org.kernel.vger.stable |
|---|---|
| Message-ID | <CAFEp6-163adAq8-H_pCzGnq+Fo4jpyKGs6Jv25j3fSpZg3COjQ@mail.gmail.com> |
Hi Rob, On Tue, Jun 30, 2026 at 8:02 PM Rob Herring <[email protected]> wrote: > > On Mon, Jun 29, 2026 at 10:55:20AM +0200, Loic Poulain wrote: > > Child nodes of a fixed-partitions node are not necessarily partition > > entries, for example an nvmem-layout node has no reg property. The > > current code passes a NULL reg pointer and uninitialized len to the > > length check, which can result in a kernel panic or silent failure to > > register any partitions. > > That does not sound right to me. A fixed-partitions node should only be > defining partitions with address ranges. I would expect a partition node > could be nvmem-layout, but not the whole address range. If you wanted > the latter, then just do: > > partitions { > ... > }; > > nvmem-layout { > ... > }; In our case, the nvmem-layout needs to be associated with a specific eMMC hardware partition, nvmem cells can be a simple sub-range within the global eMMC, each hardware partition (boot0, boot1, user...) having its own address spaces. That said, your point about not abusing fixed-partitions is valid. I initially dropped the compatible = "fixed-partitions" from the partitions-boot1 node when it only carries an nvmem-layout and no actual partition entries, making it a plain named container node. But it's a bit fragile if we want to support both nvmem-layout and fixed-partitions. Regarding your expectation of a partition node being a nvmem-layout, do you mean that the nvmem-layout should live under a fixed-partitions node? Something along these lines: partitions-boot1 { compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; nvmem@4400 { reg = <0x4400 0x1000>; nvmem-layout { compatible = "fixed-layout"; #address-cells = <1>; #size-cells = <1>; wifi_mac_addr: mac-addr@0 { compatible = "mac-base"; reg = <0x0 0x6>; #nvmem-cell-cells = <1>; }; [...] That makes some sense, this would require extra work for the emmc/block layer to also associate fwnodes with logical partitions, not just the whole disk/hw (hw part), Is that the direction you'd like us to go? Also, Note that regardless of which approach we settle on, this specific fix/patch remains necessary to validate the partition node and prevent NULL-deref. Regards, Loic