summaryrefslogtreecommitdiffstats
path: root/0001-staging-vboxvideo-Fix-reporting-invalid-suggested-of.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-staging-vboxvideo-Fix-reporting-invalid-suggested-of.patch')
-rw-r--r--0001-staging-vboxvideo-Fix-reporting-invalid-suggested-of.patch118
1 files changed, 0 insertions, 118 deletions
diff --git a/0001-staging-vboxvideo-Fix-reporting-invalid-suggested-of.patch b/0001-staging-vboxvideo-Fix-reporting-invalid-suggested-of.patch
deleted file mode 100644
index 695fcda36..000000000
--- a/0001-staging-vboxvideo-Fix-reporting-invalid-suggested-of.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-From 3b40f521aa2f42862203497a94ae77536f41ade2 Mon Sep 17 00:00:00 2001
-From: Hans de Goede <hdegoede@redhat.com>
-Date: Thu, 12 Oct 2017 19:44:48 +0200
-Subject: [PATCH] staging: vboxvideo: Fix reporting invalid
- suggested-offset-properties
-
-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.
-
-Reported-by: Gianfranco Costamagna <locutusofborg@debian.org>
-Cc: stable@vger.kernel.org
-Cc: Michael Thayer <michael.thayer@oracle.com>
-Signed-off-by: Hans de Goede <hdegoede@redhat.com>
----
- 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(-)
-
-diff --git a/drivers/staging/vboxvideo/vbox_drv.h b/drivers/staging/vboxvideo/vbox_drv.h
-index 4b9302703b36..eeac4f0cb2c6 100644
---- a/drivers/staging/vboxvideo/vbox_drv.h
-+++ b/drivers/staging/vboxvideo/vbox_drv.h
-@@ -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 {
-diff --git a/drivers/staging/vboxvideo/vbox_irq.c b/drivers/staging/vboxvideo/vbox_irq.c
-index 3ca8bec62ac4..74abdf02d9fd 100644
---- a/drivers/staging/vboxvideo/vbox_irq.c
-+++ b/drivers/staging/vboxvideo/vbox_irq.c
-@@ -150,8 +150,8 @@ static void vbox_update_mode_hints(struct vbox_private *vbox)
-
- 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;
-diff --git a/drivers/staging/vboxvideo/vbox_mode.c b/drivers/staging/vboxvideo/vbox_mode.c
-index 257a77830410..6f08dc966719 100644
---- a/drivers/staging/vboxvideo/vbox_mode.c
-+++ b/drivers/staging/vboxvideo/vbox_mode.c
-@@ -553,12 +553,22 @@ static int vbox_get_modes(struct drm_connector *connector)
- ++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;
- }
-@@ -640,9 +650,9 @@ static int vbox_connector_init(struct drm_device *dev,
-
- drm_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);
---
-2.14.2
-