<div dir="ltr">Hi,<br><br>I would like to understand mfd_add_devices call and platform_data section. <br><br>All the drivers I read the platform_data is static, but mfd_add_devices will call platform_device_add_data which duplicates that memory and frees the first pointer given.<br>But the first pointer is static and kfrees says:<br><br>"Don't free memory not originally allocated by kmalloc() or you will run into trouble."<br><br>So, my questions is : Should my driver kmalloc platform_data first and then call mfd_add_devices ? Or it's fine to give static memory to it ?<br><br>Example driver:<br><br>drivers/mfd/vexpress-sysreg.c:<br><br>static struct syscon_platform_data vexpress_sysreg_sys_id_pdata = {<br>   .label = "sys_id",<br>};<br><br>static struct mfd_cell vexpress_sysreg_cells[] = {<br>        {<br>             .name = "syscon",<br>           .num_resources = 1,<br>           .resources = (struct resource []) {<br>                   DEFINE_RES_MEM(SYS_ID, 0x4),<br>          },<br>            .platform_data = &vexpress_sysreg_sys_id_pdata,<br>           .pdata_size = sizeof(vexpress_sysreg_sys_id_pdata),<br>   },<br><br>For this case mfd_add_devices will free vexpress_sysreg_sys_id_pdata, but it's static.<br><br>Thanks<br>Lucas</div>