i2c: copy device properties when using i2c_register_board_info()
Subsystems (2)
PATCH 1/1 i2c: copy device properties when using i2c_register_board_info()
This will allow marking device property lists as __initdata, the same as board info structures themselves.
Signed-off-by Dmitry Torokhov <[email protected]>
--- drivers/i2c/i2c-boardinfo.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/i2c/i2c-boardinfo.c +7 -0
@@ -15,6 +15,7 @@#include <linux/export.h> #include <linux/i2c.h> #include <linux/kernel.h> +#include <linux/property.h> #include <linux/rwsem.h> #include <linux/slab.h>
@@ -55,6 +56,7 @@ EXPORT_SYMBOL_GPL(__i2c_first_dynamic_bus_num);* * The board info passed can safely be __initdata, but be careful of embedded * pointers (for platform_data, functions, etc) since that won't be copied. +* Device properties are deep-copied though. */ int i2c_register_board_info (int busnum,struct i2c_board_info const *info,unsigned len) {
@@ -78,6 +80,11 @@ int i2c_register_board_info(int busnum, struct i2c_board_info const *info, unsig devinfo->busnum = busnum; devinfo->board_info = *info; + devinfo->board_info.properties = +property_entries_dup (info->properties); +if (IS_ERR (devinfo->board_info.properties)) +return PTR_ERR (devinfo->board_info.properties); +list_add_tail (&devinfo->list, &__i2c_board_list); }
Signature · 5 lines
2.11.0.483.g087da7b7c-goog -- Dmitry