diff options
Diffstat (limited to 'target/linux/brcm2708/patches-4.19/950-0218-staging-vchiq_arm-Improve-error-handling-on-loading-.patch')
-rw-r--r-- | target/linux/brcm2708/patches-4.19/950-0218-staging-vchiq_arm-Improve-error-handling-on-loading-.patch | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/target/linux/brcm2708/patches-4.19/950-0218-staging-vchiq_arm-Improve-error-handling-on-loading-.patch b/target/linux/brcm2708/patches-4.19/950-0218-staging-vchiq_arm-Improve-error-handling-on-loading-.patch new file mode 100644 index 0000000000..81328b2cdc --- /dev/null +++ b/target/linux/brcm2708/patches-4.19/950-0218-staging-vchiq_arm-Improve-error-handling-on-loading-.patch @@ -0,0 +1,45 @@ +From 73979b06255c3b7b536a53d09ea095aec8ed37aa Mon Sep 17 00:00:00 2001 +From: Dave Stevenson <dave.stevenson@raspberrypi.org> +Date: Mon, 3 Dec 2018 12:50:38 +0000 +Subject: [PATCH] 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 <dave.stevenson@raspberrypi.org> +--- + .../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); |