diff --git a/arch/efi/efi/efi-device.c b/arch/efi/efi/efi-device.c index 788bb7153..7db8e48f7 100644 --- a/arch/efi/efi/efi-device.c +++ b/arch/efi/efi/efi-device.c @@ -328,7 +328,8 @@ static void efi_bus_remove(struct device_d *dev) struct efi_driver *efidrv = to_efi_driver(dev->driver); struct efi_device *efidev = to_efi_device(dev); - return efidrv->remove(efidev); + if (efidrv->remove) + efidrv->remove(efidev); } struct bus_type efi_bus = { diff --git a/drivers/base/platform.c b/drivers/base/platform.c index e053ec7bb..85bdfb014 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -29,7 +29,8 @@ static int platform_probe(struct device_d *dev) static void platform_remove(struct device_d *dev) { - dev->driver->remove(dev); + if (dev->driver->remove) + dev->driver->remove(dev); } int platform_driver_register(struct driver_d *drv) diff --git a/drivers/i2c/i2c.c b/drivers/i2c/i2c.c index 987395701..7a6bde0f6 100644 --- a/drivers/i2c/i2c.c +++ b/drivers/i2c/i2c.c @@ -472,7 +472,8 @@ static int i2c_probe(struct device_d *dev) static void i2c_remove(struct device_d *dev) { - dev->driver->remove(dev); + if (dev->driver->remove) + dev->driver->remove(dev); } struct bus_type i2c_bus = { diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c index 866ab0806..d6c5496ad 100644 --- a/drivers/pci/bus.c +++ b/drivers/pci/bus.c @@ -51,7 +51,8 @@ static void pci_remove(struct device_d *dev) struct pci_dev *pdev = to_pci_dev(dev); struct pci_driver *pdrv = to_pci_driver(dev->driver); - pdrv->remove(pdev); + if (pdrv->remove) + pdrv->remove(pdev); } struct bus_type pci_bus = { diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 8bddd98cf..ba23cf7b9 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c @@ -311,7 +311,8 @@ static int spi_probe(struct device_d *dev) static void spi_remove(struct device_d *dev) { - dev->driver->remove(dev); + if (dev->driver->remove) + dev->driver->remove(dev); } struct bus_type spi_bus = { diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c index bbef470ba..ff573860e 100644 --- a/drivers/w1/w1.c +++ b/drivers/w1/w1.c @@ -392,7 +392,8 @@ static void w1_bus_remove(struct device_d *_dev) struct w1_driver *drv = to_w1_driver(_dev->driver); struct w1_device *dev = to_w1_device(_dev); - return drv->remove(dev); + if (drv->remove) + drv->remove(dev); } struct bus_type w1_bustype= {