Re: [RFC/PATCH] of: Mark property::value as const
From: Frank Rowand <hidden>
Date: 2017-03-12 06:27:24
Also in:
linux-arm-kernel, lkml
Hi Stephen, On 02/23/17 15:08, Frank Rowand wrote:
On 02/13/17 18:50, Stephen Boyd wrote:quoted
The 'blob' we pass into populate_properties() is marked as const, but we cast that const away when we assign the result of fdt_getprop_by_offset() to pp->value. Let's mark value as const instead, so that code can't mistakenly write to the value of the property that we've so far advertised as const.Instead of struct property field value being a pointer into the FDT, I would rather copy the data to newly allocated memory and have value be a pointer to that memory. This is required if we want to make /sys/firmware/fdt optional, which would allow us to free the memory containing the initial boot FDT. I also do not want overlay live subtrees to have any pointers into the FDT that was used to populate the overlay, so copying the data solves that problem also.quoted
Unfortunately, this exposes a problem with the fdt resolver code, where we overwrite the value member of properties of phandles to update them with their final value. Add a comment for now to indicate where we're potentially writing over const data.Yes, the resolver code needs to adjust phandle values. I think I can get rid of the resolver modifying the various phandle values, and instead just modify the phandle value in struct device_node. At the same time, I think I can also remove all instances of the phandle properties ('linux,phandle', 'ibm,phandle', 'phandle') in the live tree. These properties should not be accessed directly by any code outside of the device tree framework since the phandle is located in the struct device_node. A quick grep does not show any such accesses of the phandle properties, but I want to look more closely.
After reading through a bit of code, I am confident that I can modify the resolver code to not modify the various phandle property values. There are a few tentacles reaching out to other areas that I will have to fix also. The biggest task for me will be to create some good test code. I'll be unavailable this week, so I'll start on it in about a week. -Frank -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html