Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

staging/vboxvideo: Refactor vbox_update_mode_hints

Refactor vbox_update_mode_hints to no longer use the obsolete
drm_modeset_lock_all() and switch it over to drm_connector_list_iter
instead of directly accessing the list using list_for_each_entry.

Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190304164724.10210-3-hdegoede@redhat.com

+7 -8
+7 -8
drivers/staging/vboxvideo/vbox_irq.c
··· 105 105 /* Query the host for the most recent video mode hints. */ 106 106 static void vbox_update_mode_hints(struct vbox_private *vbox) 107 107 { 108 + struct drm_connector_list_iter conn_iter; 108 109 struct drm_device *dev = &vbox->ddev; 109 110 struct drm_connector *connector; 110 111 struct vbox_connector *vbox_conn; ··· 123 122 } 124 123 125 124 validate_or_set_position_hints(vbox); 126 - drm_modeset_lock_all(dev); 127 - /* 128 - * FIXME: this needs to use drm_connector_list_iter and some real 129 - * locking for the actual data it changes, not the deprecated 130 - * drm_modeset_lock_all() shotgun approach. 131 - */ 132 - list_for_each_entry(connector, &dev->mode_config.connector_list, head) { 125 + 126 + drm_modeset_lock(&dev->mode_config.connection_mutex, NULL); 127 + drm_connector_list_iter_begin(dev, &conn_iter); 128 + drm_for_each_connector_iter(connector, &conn_iter) { 133 129 vbox_conn = to_vbox_connector(connector); 134 130 135 131 hints = &vbox->last_mode_hints[vbox_conn->vbox_crtc->crtc_id]; ··· 155 157 156 158 vbox_conn->vbox_crtc->disconnected = disconnected; 157 159 } 158 - drm_modeset_unlock_all(dev); 160 + drm_connector_list_iter_end(&conn_iter); 161 + drm_modeset_unlock(&dev->mode_config.connection_mutex); 159 162 } 160 163 161 164 static void vbox_hotplug_worker(struct work_struct *work)