diff options
-rw-r--r-- | drivers/gpu/drm/drm_fb_helper.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 04d3fd3658f3..158d8e51db3d 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c | |||
@@ -326,12 +326,21 @@ static bool drm_fb_helper_force_kernel_mode(void) | |||
326 | return false; | 326 | return false; |
327 | 327 | ||
328 | list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { | 328 | list_for_each_entry(helper, &kernel_fb_helper_list, kernel_fb_list) { |
329 | if (helper->dev->switch_power_state == DRM_SWITCH_POWER_OFF) | 329 | struct drm_device *dev = helper->dev; |
330 | |||
331 | if (dev->switch_power_state == DRM_SWITCH_POWER_OFF) | ||
332 | continue; | ||
333 | |||
334 | if (!mutex_trylock(&dev->mode_config.mutex)) { | ||
335 | error = true; | ||
330 | continue; | 336 | continue; |
337 | } | ||
331 | 338 | ||
332 | ret = drm_fb_helper_restore_fbdev_mode(helper); | 339 | ret = drm_fb_helper_restore_fbdev_mode(helper); |
333 | if (ret) | 340 | if (ret) |
334 | error = true; | 341 | error = true; |
342 | |||
343 | mutex_unlock(&dev->mode_config.mutex); | ||
335 | } | 344 | } |
336 | return error; | 345 | return error; |
337 | } | 346 | } |