From c2d00b218e114d656146f00c97236df96929b3c3 Mon Sep 17 00:00:00 2001 From: Sameer Wadgaonkar Date: Mon, 17 Jul 2017 16:16:59 -0400 Subject: [PATCH] staging: unisys: visorbus: add checks for probe, remove, pause and resume in visorbus_register_visor_driver Added checks for functions probe, remove, pause and resume in visorbus_register_visor_driver() and removed these checks from the individual functions itself. Signed-off-by: Sameer Wadgaonkar Signed-off-by: David Kershner Reviewed-by: David Binder Signed-off-by: Greg Kroah-Hartman --- .../staging/unisys/visorbus/visorbus_main.c | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/drivers/staging/unisys/visorbus/visorbus_main.c b/drivers/staging/unisys/visorbus/visorbus_main.c index 57f59cb487ae..48490545add9 100644 --- a/drivers/staging/unisys/visorbus/visorbus_main.c +++ b/drivers/staging/unisys/visorbus/visorbus_main.c @@ -490,8 +490,7 @@ static int visordriver_remove_device(struct device *xdev) mutex_lock(&dev->visordriver_callback_lock); dev->being_removed = true; - if (drv->remove) - drv->remove(dev); + drv->remove(dev); mutex_unlock(&dev->visordriver_callback_lock); dev_stop_periodic_work(dev); @@ -868,8 +867,6 @@ static int visordriver_probe_device(struct device *xdev) dev = to_visor_device(xdev); drv = to_visor_driver(xdev->driver); - if (!drv->probe) - return -ENODEV; mutex_lock(&dev->visordriver_callback_lock); dev->being_removed = false; @@ -940,6 +937,18 @@ int visorbus_register_visor_driver(struct visor_driver *drv) if (!initialized) return -ENODEV; + if (!drv->probe) + return -ENODEV; + + if (!drv->remove) + return -ENODEV; + + if (!drv->pause) + return -ENODEV; + + if (!drv->resume) + return -ENODEV; + drv->driver.name = drv->name; drv->driver.bus = &visorbus_type; drv->driver.probe = visordriver_probe_device; @@ -1158,9 +1167,6 @@ static int visorchipset_initiate_device_pause_resume(struct visor_device *dev, return -EBUSY; if (is_pause) { - if (!drv->pause) - return -EINVAL; - dev->pausing = true; err = drv->pause(dev, pause_state_change_complete); } else { @@ -1169,8 +1175,6 @@ static int visorchipset_initiate_device_pause_resume(struct visor_device *dev, * make sure it is valid. */ fix_vbus_dev_info(dev); - if (!drv->resume) - return -EINVAL; dev->resuming = true; err = drv->resume(dev, resume_state_change_complete); -- 2.20.1