u-boot/drivers
Simon Glass 24fd7e383d dm: core: Fix allocation of empty of-platdata
With of-platdata we always have a dtv struct that holds the platform data
provided by the driver_info record. However, this struct can be empty if
there are no actual devicetree properties provided.

The upshot of empty platform data is that it will end up as a zero-size
member in the BSS section, which is fine. But if the driver specifies
plat_auto then it expects the correct amount of space to be allocated.

At present this does not happen, since device_bind() assumes that the
platform-data size will always be >0. As a result we end up not
allocating the space and just use the BSS region, overwriting whatever
other contents are present.

Fix this by removing the condition that platform data be non-empty, always
allocating space if requested.

This fixes a strange bug that has been lurking since of-platdata was
implemented. It has likely never been noticed since devices normally have
at least some devicetree properties, BSS is seldom used on SPL, the dtv
structs are normally at the end of bss and the overwriting only happens
if a driver changes its platform data.

It was discovered using sandbox_spl, which exercises more features than
a normal board might, and the critical global_data variable 'gd' happened
to be at the end of BSS.

Fixes: 9fa2819009 ("dm: core: Expand platdata for of-platdata devices")
Signed-off-by: Simon Glass <sjg@chromium.org>
2021-03-03 19:17:25 -07:00
..
adc adc: meson-saradc: add support for getting reference voltage value 2021-02-18 11:37:26 +01:00
ata common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
axi dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
bios_emulator common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
block common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
bootcount common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
bus bus: ti: am33xx: add pwm subsystem driver 2021-01-12 10:58:05 +05:30
button button: add a simple Analog to Digital Converter device based button driver 2021-02-18 11:37:26 +01:00
cache common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
clk Xilinx changes for v2021.04-rc3 2021-02-23 10:45:55 -05:00
core dm: core: Fix allocation of empty of-platdata 2021-03-03 19:17:25 -07:00
cpu common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
crypto common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
ddr ddr: marvell: a38x: fix comment in conditional macro 2021-02-26 10:22:29 +01:00
demo common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
dfu dfu: dfu_sf: use correct print code 2021-02-07 19:22:54 +01:00
dma dma: bcm6348: incorrect buffer allocation 2021-01-18 15:23:06 -05:00
fastboot fastboot: add UUU command UCmd and ACmd support 2021-02-26 15:30:55 +01:00
firmware firmware: smci: possible NULL dereference 2021-02-03 03:38:41 -07:00
fpga Xilinx changes for v2021.04-rc3 2021-02-23 10:45:55 -05:00
gpio Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
hwspinlock common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
i2c Xilinx changes for v2021.04-rc3 2021-02-23 10:45:55 -05:00
input common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
led dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
mailbox common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
memory memory: stm32-fmc2: migrate trace to dev and log macro 2021-01-13 09:52:58 +01:00
misc dm: i2c: allow disabling driver model in SPL 2021-02-21 06:07:30 +01:00
mmc i.MX for 2021.04 2021-03-03 10:10:34 -05:00
mtd mtd: nand: spi: Support GigaDevice GD5F1GQ5UExxG 2021-02-26 16:01:37 +05:30
mux dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
net net: cortina_ni: buffer overrun 2021-02-24 16:51:49 -05:00
nvme Prepare v2021.01-rc5 2021-01-05 16:20:26 -05:00
pch dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
pci pci: pci_mvebu: set local dev to number 1 2021-02-26 10:22:29 +01:00
pci_endpoint common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
phy Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
pinctrl Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
power power: pmic: remove pmic_max8997/8 files 2021-02-23 15:43:13 +09:00
pwm common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
qe common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
ram common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
remoteproc Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
reset common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
rng rng: iproc_rng200: Enable support for RPi4 armv7 2021-03-02 13:53:48 +01:00
rtc sandbox: keep time offset when resetting 2021-01-30 14:25:42 -07:00
scsi dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
serial serial: usbtty: Send urb data in correct order 2021-03-03 04:12:45 +01:00
smem Merge branch '2021-02-02-drop-asm_global_data-when-unused' 2021-02-15 10:16:45 -05:00
soc dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
sound common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
spi spi: nxp_fspi: Fix error reporting 2021-02-26 15:09:38 +05:30
spmi common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
sysinfo dm: treewide: Rename auto_alloc_size members to be shorter 2020-12-13 08:00:25 -07:00
sysreset common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
tee drivers: tee: sandbox: add rpc test ta emulation 2021-02-16 11:48:20 -05:00
thermal thermal: imx_tmu: enable monitoring and default alert/critical 2021-03-01 10:21:36 +01:00
timer common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
tpm dm: i2c: use CONFIG_IS_ENABLED macro for DM_I2C/DM_I2C_GPIO 2021-02-21 06:08:00 +01:00
ufs dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
usb usb: USB keyboard requires DM_KEYBOARD 2021-03-03 04:12:46 +01:00
video drivers: video: Add Support for Himax HX8238D Panel 2021-02-19 23:38:06 +01:00
virtio virtio: fix off by one device id comparison 2021-02-24 16:51:48 -05:00
w1 w1: mxc: fix build 2021-01-23 11:30:31 +01:00
w1-eeprom dm: treewide: Rename 'platdata' variables to just 'plat' 2020-12-13 16:51:08 -07:00
watchdog Xilinx changes for v2021.04-rc3 2021-02-23 10:45:55 -05:00
xen common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
Kconfig board: Rename uclass to sysinfo 2020-11-06 10:18:20 +08:00
Makefile bootcount: allow to use this feature on TPL 2021-01-27 16:58:57 -05:00