Re: [PATCH v2] libfdt: overlay: ensure that existing phandles are not overwritten

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



On Fri, Feb 23, 2024 at 08:53:37AM +0100, Uwe Kleine-König wrote:
> On Fri, Feb 23, 2024 at 03:41:40PM +1100, David Gibson wrote:
> > On Thu, Feb 22, 2024 at 10:38:54AM +0100, Uwe Kleine-König wrote:
> > > On Thu, Feb 22, 2024 at 05:32:10PM +1100, David Gibson wrote:
> > > > And here you can use fdt32_st() on (tree_val + poffset), avoiding
> > > > quite some complexity.
> > > 
> > > There is some complexity because tree_val is a const char * (as this is
> > > what fdt_getprop() returns) and fdt32_st() obviously doens't take a
> > > const pointer.
> > 
> > Ah, right.  You can use fdt_getprop_w() to get a writable pointer
> > instead.  If there was a way to have fdt_getprop() return a const
> > pointer only if the fdt pointer it was given was const, I'd do that.
> 
> Look at how container_of_const() is defined in the kernel[1], this
> requires C11 though. See

Right.  Just like we avoid allocations to allow libfdt to be used in
constrained environments like bootloaders, we're also very
conservative with which compiler features we want to rely on.

> https://en.cppreference.com/w/c/language/generic for some docs.
> 
> [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/container_of.h?h=v6.7#n32
>  
> > > If you want to play around with that, the code is mostly a copy of
> > > overlay_update_local_node_references() which could benefit from your
> > > suggestions in the same way.
> > 
> > That's quite plausible.
> > 
> > > Can I lure you in improving overlay_update_local_node_references()? Then
> > 
> > Fair point..
> > 
> > https://github.com/dgibson/dtc/commit/24f60011fd43683d8e3916435c4c726e9baac9c9
> 
> I gave feedback on that one. Looks good.
> 
> > > I could copy from the improved function for my patch. (Or maybe refactor
> > > the function to take a function as parameter which is
> > 
> > Eh... I'd prefer to avoid higher order functions in something this low
> > level.
> 
> OK.

To elaborate here, I can also image certain platform + environment +
compiler combinations where indirect calls don't work properly in an
early boot environment.  They should, of course, but you'd be
astonished how many messed up things I've seen in firmwares.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux