aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/linux/linux-2.6.27/progear/progear-bl.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/linux/linux-2.6.27/progear/progear-bl.patch')
-rw-r--r--recipes/linux/linux-2.6.27/progear/progear-bl.patch45
1 files changed, 45 insertions, 0 deletions
diff --git a/recipes/linux/linux-2.6.27/progear/progear-bl.patch b/recipes/linux/linux-2.6.27/progear/progear-bl.patch
new file mode 100644
index 0000000000..7466239f30
--- /dev/null
+++ b/recipes/linux/linux-2.6.27/progear/progear-bl.patch
@@ -0,0 +1,45 @@
+
+This change also fixes error handling when platform_device_alloc() fails.
+(When platform_device_alloc() failed, it returns error without
+unregistering progearbl_driver)
+
+Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
+Cc: Marcin Juszkiewicz <linux@hrw.one.pl>
+Cc: Richard Purdie <rpurdie@rpsys.net>
+---
+ drivers/video/backlight/progear_bl.c | 20 ++++++++------------
+ 1 file changed, 8 insertions(+), 12 deletions(-)
+
+Index: 2.6-git/drivers/video/backlight/progear_bl.c
+===================================================================
+--- 2.6-git.orig/drivers/video/backlight/progear_bl.c
++++ 2.6-git/drivers/video/backlight/progear_bl.c
+@@ -119,20 +119,16 @@ static int __init progearbl_init(void)
+ {
+ int ret = platform_driver_register(&progearbl_driver);
+
+- if (!ret) {
+- progearbl_device = platform_device_alloc("progear-bl", -1);
+- if (!progearbl_device)
+- return -ENOMEM;
+-
+- ret = platform_device_add(progearbl_device);
+-
+- if (ret) {
+- platform_device_put(progearbl_device);
+- platform_driver_unregister(&progearbl_driver);
+- }
++ if (ret)
++ return ret;
++ progearbl_device = platform_device_register_simple("progear-bl", -1,
++ NULL, 0);
++ if (IS_ERR(progearbl_device)) {
++ platform_driver_unregister(&progearbl_driver);
++ return PTR_ERR(progearbl_device);
+ }
+
+- return ret;
++ return 0;
+ }
+
+ static void __exit progearbl_exit(void)