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

drm/virtio: Fix NULL dereference error in virtio_gpu_poll

When virgl is not enabled, vfpriv pointer would not be allocated.
Therefore, check for a valid value before dereferencing.

Reported-by: Christian Zigotzky <chzigotzky@xenosoft.de>
Cc: Gurchetan Singh <gurchetansingh@chromium.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
Tested-by: Christian Zigotzky <chzigotzky@xenosoft.de>
Link: http://patchwork.freedesktop.org/patch/msgid/20211104214249.1802789-1-vivek.kasireddy@intel.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>

authored by

Vivek Kasireddy and committed by
Gerd Hoffmann
d89c0c83 14d9a37c

+2 -1
+2 -1
drivers/gpu/drm/virtio/virtgpu_drv.c
··· 163 163 struct drm_file *drm_file = filp->private_data; 164 164 struct virtio_gpu_fpriv *vfpriv = drm_file->driver_priv; 165 165 struct drm_device *dev = drm_file->minor->dev; 166 + struct virtio_gpu_device *vgdev = dev->dev_private; 166 167 struct drm_pending_event *e = NULL; 167 168 __poll_t mask = 0; 168 169 169 - if (!vfpriv->ring_idx_mask) 170 + if (!vgdev->has_virgl_3d || !vfpriv || !vfpriv->ring_idx_mask) 170 171 return drm_poll(filp, wait); 171 172 172 173 poll_wait(filp, &drm_file->event_wait, wait);