Revision 647e82dbf85124697be59a4b4cf00c0d38177dcb authored by Andy Shevchenko on 01 September 2022, 11:34:06 UTC, committed by Hans de Goede on 01 September 2022, 15:51:34 UTC
We have to copy only selected fields from the original resource. Because a PCI device will be removed immediately after getting its resources, we may not use any allocated data, hence we may not copy any pointers. Consider the following scenario: 1/ a caller of p2sb_bar() gets the resource; 2/ the resource has been copied by platform_device_add_data() in order to create a platform device; 3/ the platform device creation will call for the device driver's ->probe() as soon as a match found; 4/ the ->probe() takes given resources (see 2/) and tries to access one of its field, i.e. 'name', in the __devm_ioremap_resource() to create a pretty looking output; 5/ but the 'name' is a dangling pointer because p2sb_bar() removed a PCI device, which 'name' had been copied to the caller's memory. 6/ UAF (Use-After-Free) as a result. Kudos to Mika for the initial analisys of the issue. Fixes: 9745fb07474f ("platform/x86/intel: Add Primary to Sideband (P2SB) bridge support") Reported-by: kernel test robot <oliver.sang@intel.com> Suggested-by: Mika Westerberg <mika.westerberg@linux.intel.com> Link: https://lore.kernel.org/linux-i2c/YvPCbnKqDiL2XEKp@xsang-OptiPlex-9020/ Link: https://lore.kernel.org/linux-i2c/YtjAswDKfiuDfWYs@xsang-OptiPlex-9020/ Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Link: https://lore.kernel.org/r/20220901113406.65876-1-andriy.shevchenko@linux.intel.com Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
1 parent 5542dfc
File | Mode | Size |
---|---|---|
Kconfig | -rw-r--r-- | 67.7 KB |
Makefile | -rw-r--r-- | 8.4 KB |
acquirewdt.c | -rw-r--r-- | 8.3 KB |
advantechwdt.c | -rw-r--r-- | 7.6 KB |
alim1535_wdt.c | -rw-r--r-- | 9.7 KB |
alim7101_wdt.c | -rw-r--r-- | 11.0 KB |
apple_wdt.c | -rw-r--r-- | 6.0 KB |
ar7_wdt.c | -rw-r--r-- | 6.9 KB |
arm_smc_wdt.c | -rw-r--r-- | 4.2 KB |
armada_37xx_wdt.c | -rw-r--r-- | 10.0 KB |
asm9260_wdt.c | -rw-r--r-- | 8.4 KB |
aspeed_wdt.c | -rw-r--r-- | 11.5 KB |
at91rm9200_wdt.c | -rw-r--r-- | 7.7 KB |
at91sam9_wdt.c | -rw-r--r-- | 10.4 KB |
at91sam9_wdt.h | -rw-r--r-- | 2.1 KB |
ath79_wdt.c | -rw-r--r-- | 7.2 KB |
bcm2835_wdt.c | -rw-r--r-- | 6.5 KB |
bcm47xx_wdt.c | -rw-r--r-- | 5.8 KB |
bcm7038_wdt.c | -rw-r--r-- | 5.9 KB |
bcm_kona_wdt.c | -rw-r--r-- | 8.4 KB |
bd9576_wdt.c | -rw-r--r-- | 6.7 KB |
booke_wdt.c | -rw-r--r-- | 5.8 KB |
cadence_wdt.c | -rw-r--r-- | 11.7 KB |
cpu5wdt.c | -rw-r--r-- | 6.0 KB |
cpwd.c | -rw-r--r-- | 15.5 KB |
da9052_wdt.c | -rw-r--r-- | 4.6 KB |
da9055_wdt.c | -rw-r--r-- | 4.0 KB |
da9062_wdt.c | -rw-r--r-- | 7.1 KB |
da9063_wdt.c | -rw-r--r-- | 7.5 KB |
davinci_wdt.c | -rw-r--r-- | 7.3 KB |
db8500_wdt.c | -rw-r--r-- | 3.6 KB |
diag288_wdt.c | -rw-r--r-- | 7.4 KB |
digicolor_wdt.c | -rw-r--r-- | 3.8 KB |
dw_wdt.c | -rw-r--r-- | 19.1 KB |
ebc-c384_wdt.c | -rw-r--r-- | 3.5 KB |
ep93xx_wdt.c | -rw-r--r-- | 3.6 KB |
eurotechwdt.c | -rw-r--r-- | 10.5 KB |
f71808e_wdt.c | -rw-r--r-- | 16.9 KB |
ftwdt010_wdt.c | -rw-r--r-- | 5.3 KB |
gef_wdt.c | -rw-r--r-- | 7.3 KB |
geodewdt.c | -rw-r--r-- | 6.3 KB |
gpio_wdt.c | -rw-r--r-- | 4.4 KB |
gxp-wdt.c | -rw-r--r-- | 4.5 KB |
hpwdt.c | -rw-r--r-- | 10.1 KB |
i6300esb.c | -rw-r--r-- | 10.0 KB |
iTCO_vendor.h | -rw-r--r-- | 543 bytes |
iTCO_vendor_support.c | -rw-r--r-- | 6.4 KB |
iTCO_wdt.c | -rw-r--r-- | 17.8 KB |
ib700wdt.c | -rw-r--r-- | 8.1 KB |
ibmasr.c | -rw-r--r-- | 9.4 KB |
ie6xx_wdt.c | -rw-r--r-- | 7.4 KB |
imgpdc_wdt.c | -rw-r--r-- | 8.8 KB |
imx2_wdt.c | -rw-r--r-- | 11.8 KB |
imx7ulp_wdt.c | -rw-r--r-- | 7.2 KB |
imx_sc_wdt.c | -rw-r--r-- | 6.3 KB |
indydog.c | -rw-r--r-- | 4.4 KB |
intel-mid_wdt.c | -rw-r--r-- | 4.9 KB |
it8712f_wdt.c | -rw-r--r-- | 9.8 KB |
it87_wdt.c | -rw-r--r-- | 7.3 KB |
ixp4xx_wdt.c | -rw-r--r-- | 4.9 KB |
jz4740_wdt.c | -rw-r--r-- | 5.1 KB |
keembay_wdt.c | -rw-r--r-- | 7.6 KB |
kempld_wdt.c | -rw-r--r-- | 13.7 KB |
lantiq_wdt.c | -rw-r--r-- | 7.4 KB |
loongson1_wdt.c | -rw-r--r-- | 3.6 KB |
lpc18xx_wdt.c | -rw-r--r-- | 8.7 KB |
m54xx_wdt.c | -rw-r--r-- | 5.1 KB |
machzwd.c | -rw-r--r-- | 9.7 KB |
max63xx_wdt.c | -rw-r--r-- | 7.4 KB |
max77620_wdt.c | -rw-r--r-- | 7.1 KB |
mei_wdt.c | -rw-r--r-- | 14.6 KB |
mena21_wdt.c | -rw-r--r-- | 5.1 KB |
menf21bmc_wdt.c | -rw-r--r-- | 4.8 KB |
menz69_wdt.c | -rw-r--r-- | 4.0 KB |
meson_gxbb_wdt.c | -rw-r--r-- | 5.6 KB |
meson_wdt.c | -rw-r--r-- | 5.7 KB |
mixcomwd.c | -rw-r--r-- | 7.1 KB |
mlx_wdt.c | -rw-r--r-- | 9.0 KB |
moxart_wdt.c | -rw-r--r-- | 4.2 KB |
mpc8xxx_wdt.c | -rw-r--r-- | 6.8 KB |
msc313e_wdt.c | -rw-r--r-- | 4.2 KB |
mt7621_wdt.c | -rw-r--r-- | 4.5 KB |
mtk_wdt.c | -rw-r--r-- | 11.2 KB |
mtx-1_wdt.c | -rw-r--r-- | 5.8 KB |
ni903x_wdt.c | -rw-r--r-- | 6.2 KB |
nic7018_wdt.c | -rw-r--r-- | 5.6 KB |
npcm_wdt.c | -rw-r--r-- | 5.6 KB |
nv_tco.c | -rw-r--r-- | 12.0 KB |
nv_tco.h | -rw-r--r-- | 1.8 KB |
octeon-wdt-main.c | -rw-r--r-- | 16.3 KB |
octeon-wdt-nmi.S | -rw-r--r-- | 2.0 KB |
of_xilinx_wdt.c | -rw-r--r-- | 7.5 KB |
omap_wdt.c | -rw-r--r-- | 9.5 KB |
omap_wdt.h | -rw-r--r-- | 1.1 KB |
orion_wdt.c | -rw-r--r-- | 17.7 KB |
pc87413_wdt.c | -rw-r--r-- | 13.8 KB |
pcwd.c | -rw-r--r-- | 25.9 KB |
pcwd_pci.c | -rw-r--r-- | 19.7 KB |
pcwd_usb.c | -rw-r--r-- | 20.9 KB |
pic32-dmt.c | -rw-r--r-- | 5.1 KB |
pic32-wdt.c | -rw-r--r-- | 5.5 KB |
pika_wdt.c | -rw-r--r-- | 6.8 KB |
pm8916_wdt.c | -rw-r--r-- | 7.0 KB |
pnx4008_wdt.c | -rw-r--r-- | 6.8 KB |
pretimeout_noop.c | -rw-r--r-- | 1.0 KB |
pretimeout_panic.c | -rw-r--r-- | 1.0 KB |
pseries-wdt.c | -rw-r--r-- | 6.4 KB |
qcom-wdt.c | -rw-r--r-- | 8.1 KB |
rave-sp-wdt.c | -rw-r--r-- | 8.1 KB |
rc32434_wdt.c | -rw-r--r-- | 7.9 KB |
rdc321x_wdt.c | -rw-r--r-- | 6.5 KB |
realtek_otto_wdt.c | -rw-r--r-- | 10.6 KB |
renesas_wdt.c | -rw-r--r-- | 8.6 KB |
retu_wdt.c | -rw-r--r-- | 3.9 KB |
riowd.c | -rw-r--r-- | 5.6 KB |
rn5t618_wdt.c | -rw-r--r-- | 4.9 KB |
rt2880_wdt.c | -rw-r--r-- | 4.5 KB |
rtd119x_wdt.c | -rw-r--r-- | 3.6 KB |
rti_wdt.c | -rw-r--r-- | 8.2 KB |
rza_wdt.c | -rw-r--r-- | 6.0 KB |
rzg2l_wdt.c | -rw-r--r-- | 7.1 KB |
rzn1_wdt.c | -rw-r--r-- | 5.0 KB |
s3c2410_wdt.c | -rw-r--r-- | 24.4 KB |
sa1100_wdt.c | -rw-r--r-- | 6.3 KB |
sama5d4_wdt.c | -rw-r--r-- | 9.1 KB |
sb_wdog.c | -rw-r--r-- | 8.6 KB |
sbc60xxwdt.c | -rw-r--r-- | 9.9 KB |
sbc7240_wdt.c | -rw-r--r-- | 6.5 KB |
sbc8360.c | -rw-r--r-- | 9.6 KB |
sbc_epx_c3.c | -rw-r--r-- | 4.8 KB |
sbc_fitpc2_wdt.c | -rw-r--r-- | 5.3 KB |
sbsa_gwdt.c | -rw-r--r-- | 11.4 KB |
sc1200wdt.c | -rw-r--r-- | 11.0 KB |
sc520_wdt.c | -rw-r--r-- | 10.7 KB |
sch311x_wdt.c | -rw-r--r-- | 13.3 KB |
scx200_wdt.c | -rw-r--r-- | 6.2 KB |
shwdt.c | -rw-r--r-- | 8.8 KB |
simatic-ipc-wdt.c | -rw-r--r-- | 5.9 KB |
sl28cpld_wdt.c | -rw-r--r-- | 5.6 KB |
smsc37b787_wdt.c | -rw-r--r-- | 14.9 KB |
softdog.c | -rw-r--r-- | 6.2 KB |
sp5100_tco.c | -rw-r--r-- | 15.7 KB |
sp5100_tco.h | -rw-r--r-- | 2.5 KB |
sp805_wdt.c | -rw-r--r-- | 8.9 KB |
sprd_wdt.c | -rw-r--r-- | 9.0 KB |
st_lpc_wdt.c | -rw-r--r-- | 6.9 KB |
stm32_iwdg.c | -rw-r--r-- | 7.5 KB |
stmp3xxx_rtc_wdt.c | -rw-r--r-- | 3.8 KB |
stpmic1_wdt.c | -rw-r--r-- | 3.5 KB |
sun4v_wdt.c | -rw-r--r-- | 4.3 KB |
sunplus_wdt.c | -rw-r--r-- | 5.3 KB |
sunxi_wdt.c | -rw-r--r-- | 7.9 KB |
tegra_wdt.c | -rw-r--r-- | 6.9 KB |
tqmx86_wdt.c | -rw-r--r-- | 2.9 KB |
ts4800_wdt.c | -rw-r--r-- | 5.0 KB |
ts72xx_wdt.c | -rw-r--r-- | 4.2 KB |
twl4030_wdt.c | -rw-r--r-- | 2.9 KB |
txx9wdt.c | -rw-r--r-- | 4.4 KB |
uniphier_wdt.c | -rw-r--r-- | 6.3 KB |
via_wdt.c | -rw-r--r-- | 7.4 KB |
visconti_wdt.c | -rw-r--r-- | 4.9 KB |
w83627hf_wdt.c | -rw-r--r-- | 11.6 KB |
w83877f_wdt.c | -rw-r--r-- | 9.8 KB |
w83977f_wdt.c | -rw-r--r-- | 11.6 KB |
wafer5823wdt.c | -rw-r--r-- | 6.9 KB |
watchdog_core.c | -rw-r--r-- | 12.9 KB |
watchdog_core.h | -rw-r--r-- | 2.7 KB |
watchdog_dev.c | -rw-r--r-- | 32.5 KB |
watchdog_hrtimer_pretimeout.c | -rw-r--r-- | 1.2 KB |
watchdog_pretimeout.c | -rw-r--r-- | 4.5 KB |
watchdog_pretimeout.h | -rw-r--r-- | 1.6 KB |
wd501p.h | -rw-r--r-- | 1.4 KB |
wdat_wdt.c | -rw-r--r-- | 13.2 KB |
wdrtas.c | -rw-r--r-- | 14.7 KB |
wdt.c | -rw-r--r-- | 15.3 KB |
wdt285.c | -rw-r--r-- | 4.6 KB |
wdt977.c | -rw-r--r-- | 11.6 KB |
wdt_pci.c | -rw-r--r-- | 17.1 KB |
wm831x_wdt.c | -rw-r--r-- | 6.2 KB |
wm8350_wdt.c | -rw-r--r-- | 4.0 KB |
xen_wdt.c | -rw-r--r-- | 4.5 KB |
ziirave_wdt.c | -rw-r--r-- | 18.4 KB |
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...