platform/x86: fujitsu-laptop: Don't oops when FUJ02E3 is not presnt
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Mon, 18 Sep 2017 20:00:59 +0000 (23:00 +0300)
committerDarren Hart (VMware) <dvhart@infradead.org>
Wed, 27 Sep 2017 07:04:43 +0000 (00:04 -0700)
My Fujitsu-Siemens Lifebook S6120 doesn't have the FUJ02E3 device,
but it does have FUJ02B1. That means we do register the backlight
device (and it even seems to work), but the code will oops as soon
as we try to set the backlight brightness because it's trying to
call call_fext_func() with a NULL device. Let's just skip those
function calls when the FUJ02E3 device is not present.

Cc: Jonathan Woithe <jwoithe@just42.net>
Cc: Andy Shevchenko <andy@infradead.org>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: <stable@vger.kernel.org> # 4.13.x
Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
drivers/platform/x86/fujitsu-laptop.c

index 85de30f93a9cc45c1fe0d634c7f687947e1a39bb..56a8195096a229c6975d3f78746ecbc4c6169660 100644 (file)
@@ -254,10 +254,12 @@ static int bl_update_status(struct backlight_device *b)
 {
        struct acpi_device *device = bl_get_data(b);
 
-       if (b->props.power == FB_BLANK_POWERDOWN)
-               call_fext_func(fext, FUNC_BACKLIGHT, 0x1, 0x4, 0x3);
-       else
-               call_fext_func(fext, FUNC_BACKLIGHT, 0x1, 0x4, 0x0);
+       if (fext) {
+               if (b->props.power == FB_BLANK_POWERDOWN)
+                       call_fext_func(fext, FUNC_BACKLIGHT, 0x1, 0x4, 0x3);
+               else
+                       call_fext_func(fext, FUNC_BACKLIGHT, 0x1, 0x4, 0x0);
+       }
 
        return set_lcd_level(device, b->props.brightness);
 }