Changeset View
Changeset View
Standalone View
Standalone View
x11-drivers/xf86-video-vmware/files/patch-vmwgfx_vmwgfx__dri2.c
- This file was added.
--- vmwgfx/vmwgfx_dri2.c.orig 2018-05-17 07:42:24 UTC | |||||
+++ vmwgfx/vmwgfx_dri2.c | |||||
@@ -413,8 +413,7 @@ xorg_dri2_init(ScreenPtr pScreen) | |||||
modesettingPtr ms = modesettingPTR(pScrn); | |||||
DRI2InfoRec dri2info; | |||||
int major, minor; | |||||
- char fdPath[VMWGFX_FD_PATH_LEN]; | |||||
- ssize_t numChar; | |||||
+ const char *dev_name; | |||||
memset(&dri2info, 0, sizeof(dri2info)); | |||||
@@ -430,20 +429,13 @@ xorg_dri2_init(ScreenPtr pScreen) | |||||
dri2info.fd = ms->fd; | |||||
dri2info.driverName = "vmwgfx"; | |||||
- /* | |||||
- * This way of obtaining the DRM device name is a bit | |||||
- * os-specific. It would be better to obtain it from | |||||
- * drmOpen. Currently this works only for Linux. | |||||
- */ | |||||
- memset(fdPath, 0, VMWGFX_FD_PATH_LEN); | |||||
- snprintf(fdPath, VMWGFX_FD_PATH_LEN - 1, "/proc/self/fd/%d", ms->fd); | |||||
- numChar = readlink(fdPath, ms->dri2_device_name, VMWGFX_DRI_DEVICE_LEN); | |||||
- if (numChar <= 0 || numChar >= VMWGFX_DRI_DEVICE_LEN) { | |||||
+ dev_name = drmGetDeviceNameFromFd2(ms->fd); | |||||
+ if (!dev_name) { | |||||
xf86DrvMsg(pScrn->scrnIndex, X_ERROR, | |||||
"Could not find the drm device name. Disabling dri2.\n"); | |||||
return FALSE; | |||||
} | |||||
- ms->dri2_device_name[numChar] = 0; | |||||
+ strncpy(ms->dri2_device_name, dev_name, VMWGFX_DRI_DEVICE_LEN); | |||||
dri2info.deviceName = ms->dri2_device_name; | |||||
imp: strlcpy is safer here in the case where dev_name is exactly VMWGFX_DRI_DEVICE_LEN characters… | |||||
Done Inline ActionsThis patch is taken from upstream and will be made obsolete at the next xf86-video-vmware release. johalun: This patch is taken from upstream and will be made obsolete at the next xf86-video-vmware… | |||||
xf86DrvMsg(pScrn->scrnIndex, X_INFO, | |||||
"Path of drm device is \"%s\".\n", ms->dri2_device_name); | |||||
@@ -466,6 +458,7 @@ xorg_dri2_init(ScreenPtr pScreen) | |||||
dri2info.AuthMagic3 = vmw_dri_auth_magic3; | |||||
} | |||||
#endif | |||||
+ free(dev_name); | |||||
return DRI2ScreenInit(pScreen, &dri2info); | |||||
} |
strlcpy is safer here in the case where dev_name is exactly VMWGFX_DRI_DEVICE_LEN characters long.