From 8c25a73d376b538692aa0128d57ff95c71479561 Mon Sep 17 00:00:00 2001 From: Dave Stevenson Date: Mon, 3 Dec 2018 12:50:38 +0000 Subject: [PATCH 238/725] staging: vchiq_arm: Improve error handling on loading drivers The handling of loading platform drivers requires checking IS_ERR for the pointer on unload. If the driver fails to load, NULL the pointer during probe as platform_device_unregister already checks for NULL. Signed-off-by: Dave Stevenson --- .../vc04_services/interface/vchiq_arm/vchiq_arm.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c @@ -3655,7 +3655,11 @@ static int vchiq_probe(struct platform_d MAJOR(vchiq_devid), MINOR(vchiq_devid)); bcm2835_camera = vchiq_register_child(pdev, "bcm2835-camera"); + if (IS_ERR(bcm2835_camera)) + bcm2835_camera = NULL; bcm2835_audio = vchiq_register_child(pdev, "bcm2835_audio"); + if (IS_ERR(bcm2835_audio)) + bcm2835_audio = NULL; return 0; @@ -3672,10 +3676,10 @@ failed_platform_init: static int vchiq_remove(struct platform_device *pdev) { - if (!IS_ERR(bcm2835_audio)) - platform_device_unregister(bcm2835_audio); - if (!IS_ERR(bcm2835_camera)) - platform_device_unregister(bcm2835_camera); + platform_device_unregister(bcm2835_codec); + platform_device_unregister(bcm2835_audio); + platform_device_unregister(bcm2835_camera); + platform_device_unregister(vcsm_cma); vchiq_debugfs_deinit(); device_destroy(vchiq_class, vchiq_devid); class_destroy(vchiq_class);