Patch "staging: vboxvideo: Fix reporting invalid suggested-offset-properties" has been added to the 4.13-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
staging: vboxvideo: Fix reporting invalid suggested-offset-properties
to the 4.13-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
staging-vboxvideo-fix-reporting-invalid-suggested-offset-properties.patch
and it can be found in the queue-4.13 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
ce10d7b4e8e3574b9616e54a09d64521b9aeb8b6Mon Sep 17 00:00:00 2001
From: Hans de Goede <[email protected]>
Date: Thu, 12 Oct 2017 20:10:25 +0200
Subject: staging: vboxvideo: Fix reporting invalid suggested-offset-properties
From: Hans de Goede <[email protected]>
commit ce10d7b4e8e3574b9616e54a09d64521b9aeb8b6 upstream.
The x and y hints receives from the host are unsigned 32 bit integers and they get set to -1 (0xffffffff) when invalid. Before this commit the vboxvideo driver was storing them in an u16 causing the -1 to be truncated to 65535 which, once reported to userspace, was breaking gnome 3.26+ in Wayland mode.
This commit stores the host values in 32 bit variables, removing the truncation and checks for -1, replacing it with 0 as -1 is not a valid suggested-offset-property value. Likewise the properties are now initialized to 0 instead of -1, since -1 is not a valid value. This fixes gnome 3.26+ in Wayland mode not working with the vboxvideo driver.
--- drivers/staging/vboxvideo/vbox_drv.h | 8 ++++---- drivers/staging/vboxvideo/vbox_irq.c | 4 ++-- drivers/staging/vboxvideo/vbox_mode.c | 26 ++++++++++++++++++-------- 3 files changed, 24 insertions(+), 14 deletions(-)
drivers/staging/vboxvideo/vbox_drv.h +4 -4
@@ -137,8 +137,8 @@ struct vbox_connector {char name[32 ];struct vbox_crtc *vbox_crtc;struct { -u16 width; -u16 height; +u32 width; +u32 height;bool disconnected; } mode_hint; };
@@ -150,8 +150,8 @@ struct vbox_crtc {unsigned int crtc_id;u32 fb_offset;bool cursor_enabled; -u16 x_hint; -u16 y_hint; +u32 x_hint; +u32 y_hint; };struct vbox_encoder {
drivers/staging/vboxvideo/vbox_irq.c +2 -2
@@ -150,8 +150,8 @@ static void vbox_update_mode_hints(struc disconnected = !(hints->enabled); crtc_id = vbox_conn->vbox_crtc->crtc_id; - vbox_conn->mode_hint.width = hints->cx &0x8fff ; - vbox_conn->mode_hint.height = hints->cy &0x8fff ; + vbox_conn->mode_hint.width = hints->cx; + vbox_conn->mode_hint.height = hints->cy; vbox_conn->vbox_crtc->x_hint = hints->dx; vbox_conn->vbox_crtc->y_hint = hints->dy; vbox_conn->mode_hint.disconnected = disconnected;
drivers/staging/vboxvideo/vbox_mode.c +18 -8
@@ -560,12 +560,22 @@ static int vbox_get_modes(struct drm_con ++num_modes; }vbox_set_edid (connector, preferred_width, preferred_height); -drm_object_property_set_value ( - &connector->base, vbox->dev->mode_config.suggested_x_property, - vbox_connector->vbox_crtc->x_hint); -drm_object_property_set_value ( - &connector->base, vbox->dev->mode_config.suggested_y_property, - vbox_connector->vbox_crtc->y_hint); + +if (vbox_connector->vbox_crtc->x_hint !=-1 ) +drm_object_property_set_value (&connector->base, + vbox->dev->mode_config.suggested_x_property, + vbox_connector->vbox_crtc->x_hint); +else +drm_object_property_set_value (&connector->base, + vbox->dev->mode_config.suggested_x_property,0 ); + +if (vbox_connector->vbox_crtc->y_hint !=-1 ) +drm_object_property_set_value (&connector->base, + vbox->dev->mode_config.suggested_y_property, + vbox_connector->vbox_crtc->y_hint); +else +drm_object_property_set_value (&connector->base, + vbox->dev->mode_config.suggested_y_property,0 );return num_modes; }
@@ -650,9 +660,9 @@ static int vbox_connector_init(struct drdrm_mode_create_suggested_offset_properties (dev);drm_object_attach_property (&connector->base, - dev->mode_config.suggested_x_property,-1 ); + dev->mode_config.suggested_x_property,0 );drm_object_attach_property (&connector->base, - dev->mode_config.suggested_y_property,-1 ); + dev->mode_config.suggested_y_property,0 );drm_connector_register (connector);drm_mode_connector_attach_encoder (connector, encoder);
Patches currently in stable-queue which might be from [email protected] are
queue-4.13/staging-rtl8188eu-revert-4-commits-breaking-arp.patch queue-4.13/platform-x86-peaq-wmi-add-dmi-check-before-binding-to-the-wmi-interface.patch queue-4.13/platform-x86-peaq_wmi-fix-missing-terminating-entry-for-peaq_dmi_table.patch queue-4.13/staging-vboxvideo-fix-reporting-invalid-suggested-offset-properties.patch