linux_dsm_epyc7002/drivers/spi
Saravana Kannan 4b8b7bc3a7 spi: Fix spi device unregister flow
[ Upstream commit c7299fea67696db5bd09d924d1f1080d894f92ef ]

When an SPI device is unregistered, the spi->controller->cleanup() is
called in the device's release callback. That's wrong for a couple of
reasons:

1. spi_dev_put() can be called before spi_add_device() is called. And
   it's spi_add_device() that calls spi_setup(). This will cause clean()
   to get called without the spi device ever being setup.

2. There's no guarantee that the controller's driver would be present by
   the time the spi device's release function gets called.

3. It also causes "sleeping in atomic context" stack dump[1] when device
   link deletion code does a put_device() on the spi device.

Fix these issues by simply moving the cleanup from the device release
callback to the actual spi_unregister_device() function.

[1] - https://lore.kernel.org/lkml/CAHp75Vc=FCGcUyS0v6fnxme2YJ+qD+Y-hQDQLa2JhWNON9VmsQ@mail.gmail.com/

Signed-off-by: Saravana Kannan <saravanak@google.com>
Link: https://lore.kernel.org/r/20210426235638.1285530-1-saravanak@google.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-06-16 12:01:34 +02:00
..
atmel-quadspi.c spi: atmel-quadspi: Fix AHB memory accesses 2020-12-30 11:54:22 +01:00
internals.h
Kconfig spi: dw-bt1: Fix undefined devm_mux_control_get symbol 2021-01-06 14:56:49 +01:00
Makefile ARM: SoC platform updates 2020-10-24 10:33:08 -07:00
spi-altera.c spi: altera: Fix memory leak on error path 2021-02-03 23:28:46 +01:00
spi-amd.c spi: spi-amd: Do not define 'struct acpi_device_id' when !CONFIG_ACPI 2020-07-17 16:38:56 +01:00
spi-ar934x.c spi: ar934x: Don't leak SPI master in probe error path 2020-12-30 11:54:20 +01:00
spi-armada-3700.c spi: a3700: Remove a useless memset 2020-08-18 17:52:37 +01:00
spi-at91-usart.c spi: spi-at91-usart: Remove unused OF table 'struct of_device_id' 2020-07-17 16:38:54 +01:00
spi-ath79.c spi: ath79: remove spi-master setup and cleanup assignment 2021-05-11 14:47:16 +02:00
spi-atmel.c spi: atmel: Put allocated master before return 2021-03-04 11:37:59 +01:00
spi-au1550.c
spi-axi-spi-engine.c spi: spi-axi-spi-engine: Access register after clock initialization 2020-04-09 18:46:53 +01:00
spi-bcm63xx-hsspi.c spi: bcm63xx-hsspi: fix missing clk_disable_unprepare() on error in bcm63xx_hsspi_resume 2020-12-30 11:53:06 +01:00
spi-bcm63xx.c spi: bcm63xx-spi: add reset support 2020-06-17 14:29:58 +01:00
spi-bcm2835.c spi: bcm2835: Fix use-after-free on unbind 2020-11-12 15:05:35 +00:00
spi-bcm2835aux.c spi: bcm2835aux: Restore err assignment in bcm2835aux_spi_probe 2020-11-13 18:22:24 +00:00
spi-bcm-qspi.c spi: bcm-qspi: Fix use-after-free on unbind 2020-11-12 15:05:37 +00:00
spi-bcm-qspi.h
spi-bitbang-txrx.h
spi-bitbang.c spi: spi-bitbang: Demote obvious misuse of kerneldoc to standard comment blocks 2020-07-17 16:38:45 +01:00
spi-brcmstb-qspi.c
spi-butterfly.c
spi-cadence-quadspi.c spi: cadence: set cqspi to the driver_data field of struct device 2021-03-25 09:04:04 +01:00
spi-cadence.c spi: cadence: cache reference clock rate during probe 2021-01-23 16:04:05 +01:00
spi-cavium-octeon.c
spi-cavium-thunderx.c spi: spi-cavium-thunderx: flag controller as half duplex 2020-06-16 00:38:39 +01:00
spi-cavium.c
spi-cavium.h
spi-clps711x.c
spi-coldfire-qspi.c spi: coldfire-qspi: Use clk_prepare_enable and clk_disable_unprepare 2020-07-17 00:55:26 +01:00
spi-davinci.c spi: davinci: Fix use-after-free on unbind 2020-12-30 11:54:20 +01:00
spi-dln2.c spi: dln2: Fix reference leak to master 2021-05-11 14:47:20 +02:00
spi-dw-bt1.c spi: dw: Avoid stack content exposure 2021-03-04 11:38:07 +01:00
spi-dw-core.c spi: dw: Fix spi registration for controllers overriding CS 2020-11-25 12:54:05 +00:00
spi-dw-dma.c spi: dw: Add generic DW SSI status-check method 2020-10-08 23:00:18 +01:00
spi-dw-mmio.c spi: dw: Add DWC SSI capability 2020-10-08 23:00:06 +01:00
spi-dw-pci.c spi: dw: Add DWC SSI capability 2020-10-08 23:00:06 +01:00
spi-dw.h spi: dw: Introduce max mem-ops SPI bus frequency setting 2020-10-08 23:00:20 +01:00
spi-efm32.c spi: efm32: Convert to use GPIO descriptors 2020-03-27 15:52:23 +00:00
spi-ep93xx.c spi: spi-ep93xx: Fix API slippage 2020-07-17 16:38:47 +01:00
spi-falcon.c
spi-fsi.c spi: fsi: Fix transfer returning without finalizing message 2020-11-11 12:34:29 +00:00
spi-fsl-cpm.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
spi-fsl-cpm.h
spi-fsl-dspi.c spi: spi-fsl-dspi: Fix a resource leak in an error handling path 2021-06-03 09:00:37 +02:00
spi-fsl-espi.c Merge remote-tracking branch 'spi/for-5.10' into spi-next 2020-10-09 16:01:22 +01:00
spi-fsl-lib.c
spi-fsl-lib.h
spi-fsl-lpspi.c spi: fsl-lpspi: Fix PM reference leak in lpspi_prepare_xfer_hardware() 2021-05-14 09:50:18 +02:00
spi-fsl-qspi.c spi: Fix SPI NOR and SPI NAND acronyms 2020-07-17 00:55:25 +01:00
spi-fsl-spi.c spi: fsl: add missing iounmap() on error in of_fsl_spi_probe() 2021-05-14 09:50:16 +02:00
spi-fsl-spi.h
spi-geni-qcom.c spi: spi-geni-qcom: Fix geni_spi_isr() NULL dereference in timeout case 2021-01-17 14:17:00 +01:00
spi-gpio.c spi: gpio: Don't leak SPI master in probe error path 2020-12-30 11:54:20 +01:00
spi-hisi-sfc-v3xx.c spi: hisi-sfc-v3xx: fix spelling mistake "occured" -> "occurred" 2020-09-28 20:33:56 +01:00
spi-img-spfi.c spi: img-spfi: fix reference leak in img_spfi_resume 2020-12-30 11:53:01 +01:00
spi-imx.c spi: imx: Don't print error on -EPROBEDEFER 2021-03-04 11:37:58 +01:00
spi-iproc-qspi.c
spi-jcore.c remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
spi-lantiq-ssc.c spi: lantiq: remove redundant irqsave and irqrestore in hardIRQ 2020-09-17 19:56:02 +01:00
spi-lm70llp.c
spi-loopback-test.c spi: spi-loopback-test: Fix out-of-bounds read 2020-09-02 19:38:24 +01:00
spi-lp8841-rtc.c
spi-mem.c spi: spi-mem: fix reference leak in spi_mem_access_start 2020-12-30 11:53:02 +01:00
spi-meson-spicc.c spi: spi-meson-spicc: Remove set but never used variable 'data' from meson_spicc_reset_fifo() 2020-07-17 16:38:48 +01:00
spi-meson-spifc.c spi: spi-meson-spifc: Fix misdocumenting of 'dev' in 'struct meson_spifc' 2020-07-17 16:38:48 +01:00
spi-mpc52xx-psc.c
spi-mpc52xx.c
spi-mpc512x-psc.c
spi-mt65xx.c spi: mediatek: add spi support for mt8192 IC 2020-07-22 01:56:00 +01:00
spi-mt7621.c spi: mt7621: Don't leak SPI master in probe error path 2020-12-30 11:54:22 +01:00
spi-mtk-nor.c spi: spi-mtk-nor: Don't leak SPI master in probe error path 2020-12-30 11:54:20 +01:00
spi-mux.c spi: spi-mux: Simplify with dev_err_probe() 2020-09-08 18:19:27 +01:00
spi-mxic.c spi: mxic: Don't leak SPI master in probe error path 2020-12-30 11:54:20 +01:00
spi-mxs.c spi: mxs: fix reference leak in mxs_spi_probe 2020-12-30 11:53:15 +01:00
spi-npcm-fiu.c spi: npcm-fiu: Disable clock in probe error path 2020-12-30 11:54:21 +01:00
spi-npcm-pspi.c spi: npcm-pspi: Convert to use GPIO descriptors 2020-07-01 23:21:28 +01:00
spi-nxp-fspi.c spi: spi-nxp-fspi: fix fspi panic by unexpected interrupts 2020-11-23 14:10:02 +00:00
spi-oc-tiny.c SPI SUBSYSTEM: Replace HTTP links with HTTPS ones 2020-07-09 22:41:11 +01:00
spi-omap2-mcspi.c spi: omap2-mcspi: Improve performance waiting for CHSTAT 2020-09-22 01:04:20 +01:00
spi-omap-100k.c spi: omap-100k: Fix reference leak to master 2021-05-11 14:47:20 +02:00
spi-omap-uwire.c spi: omap-uwire: Use clk_prepare_enable and clk_disable_unprepare 2020-07-15 15:58:33 +01:00
spi-orion.c spi: Fix SPI NOR and SPI NAND acronyms 2020-07-17 00:55:25 +01:00
spi-pic32-sqi.c
spi-pic32.c spi: pic32: Don't leak DMA channels in probe error path 2020-12-30 11:54:21 +01:00
spi-pl022.c spi: spi-pl022: Provide missing struct attribute/function param docs 2020-07-17 16:38:50 +01:00
spi-ppc4xx.c spi: ppc4xx: Convert to use GPIO descriptors 2020-07-22 01:55:52 +01:00
spi-pxa2xx-dma.c
spi-pxa2xx-pci.c spi: pxa2xx: Fix the controller numbering for Wildcat Point 2021-03-04 11:38:06 +01:00
spi-pxa2xx.c spi: pxa2xx: Fix use-after-free on unbind 2020-12-30 11:54:19 +01:00
spi-pxa2xx.h
spi-qcom-qspi.c spi: spi-qcom-qspi: Fix use-after-free on unbind 2020-12-30 11:54:21 +01:00
spi-qup.c spi: qup: fix PM reference leak in spi_qup_remove() 2021-05-11 14:47:20 +02:00
spi-rb4xx.c spi: rb4xx: Don't leak SPI master in probe error path 2020-12-30 11:54:21 +01:00
spi-rockchip.c spi: rockchip: avoid objtool warning 2021-05-14 09:50:09 +02:00
spi-rpc-if.c spi: rpc-if: Fix use-after-free on unbind 2020-12-30 11:54:21 +01:00
spi-rspi.c spi: rspi: Fill in controller speed limits 2020-08-20 22:38:17 +01:00
spi-s3c24xx-regs.h ARM: s3c24xx: move regs-spi.h into spi driver 2020-08-19 21:40:14 +02:00
spi-s3c24xx.c ARM: SoC platform updates 2020-10-24 10:33:08 -07:00
spi-s3c64xx.c spi: spi-s3c64xx: Turn on interrupts upon resume 2020-10-02 21:54:24 +01:00
spi-sc18is602.c spi: sc18is602: Don't leak SPI master in probe error path 2020-12-30 11:54:21 +01:00
spi-sh-hspi.c
spi-sh-msiof.c spi: spi-sh-msiof: Fix checkpatch error Complex macros should use () 2020-04-14 18:36:34 +01:00
spi-sh-sci.c
spi-sh.c spi: spi-sh: Fix use-after-free on unbind 2020-12-30 11:54:20 +01:00
spi-sifive.c
spi-sirf.c spi: sirf: Use dma_request_chan() instead dma_request_slave_channel() 2019-12-16 11:57:36 +00:00
spi-slave-mt27xx.c
spi-slave-system-control.c
spi-slave-time.c
spi-sprd-adi.c spi: sprd: Simplify with dev_err_probe() 2020-09-14 15:50:17 +01:00
spi-sprd.c spi: sprd: fix reference leak in sprd_spi_remove 2020-12-30 11:53:08 +01:00
spi-st-ssc4.c spi: st-ssc4: Fix unbalanced pm_runtime_disable() in probe error path 2020-12-30 11:54:21 +01:00
spi-stm32-qspi.c spi: stm32-qspi: fix pm_runtime usage_count counter 2021-05-11 14:47:13 +02:00
spi-stm32.c spi: stm32: Fix use-after-free on unbind 2021-05-14 09:50:11 +02:00
spi-sun4i.c spi: sun4i: update max transfer size reported 2020-07-27 14:55:21 +01:00
spi-sun6i.c spi: spi-sun6i: sun6i_spi_transfer_one(): enable RF_RDY interrupt only if needed 2020-07-07 10:41:41 +01:00
spi-synquacer.c spi: spi-synquacer: fix set_cs handling 2021-03-04 11:38:43 +01:00
spi-tegra20-sflash.c spi: tegra20-sflash: fix reference leak in tegra_sflash_resume 2020-12-30 11:53:05 +01:00
spi-tegra20-slink.c spi: tegra20-slink: fix reference leak in slink ops of tegra20 2020-12-30 11:53:05 +01:00
spi-tegra114.c spi: tegra114: fix reference leak in tegra spi ops 2020-12-30 11:53:06 +01:00
spi-test.h
spi-ti-qspi.c spi: spi-ti-qspi: Free DMA resources 2021-05-11 14:47:13 +02:00
spi-tle62x0.c
spi-topcliff-pch.c spi/topcliff-pch: drop double zeroing 2020-09-21 17:56:38 +01:00
spi-txx9.c
spi-uniphier.c spi: uniphier: Use devm_platform_get_and_ioremap_resource() to simplify code 2020-05-11 18:17:52 +01:00
spi-xcomm.c
spi-xilinx.c spi: xilinx: Fix info message during probe 2020-09-17 19:56:01 +01:00
spi-xlp.c
spi-xtensa-xtfpga.c
spi-zynq-qspi.c spi: spi-zynq-qspi: Add description for 2 missing attributes/parameters 2020-07-17 16:38:51 +01:00
spi-zynqmp-gqspi.c spi: spi-zynqmp-gqspi: return -ENOMEM if dma_map_single fails 2021-05-14 09:50:20 +02:00
spi.c spi: Fix spi device unregister flow 2021-06-16 12:01:34 +02:00
spidev.c spi: spidev: Remove redundant initialization of variable status 2020-09-09 16:27:46 +01:00