diff ... libdrm-2.4.74/intel/intel_bufmgr_gem.c --- libdrm-2.4.74-ref/intel/intel_bufmgr_gem.c Tue Nov 29 06:15:10 2016 +++ libdrm-2.4.74/intel/intel_bufmgr_gem.c Sat Dec 31 18:30:23 2016 @@ -3363,6 +3363,16 @@ static pthread_mutex_t bufmgr_list_mutex = PTHREAD_MUTEX_INITIALIZER; static drmMMListHead bufmgr_list = { &bufmgr_list, &bufmgr_list }; +static int +compare_file_descriptor(int fd1, int fd2) { + struct stat stat1, stat2; + if (fstat (fd1, &stat1) < 0) + return -1; + if (fstat (fd2, &stat2) < 0) + return -1; + return (stat1.st_dev == stat2.st_dev) && (stat1.st_ino == stat2.st_ino); +} + static drm_intel_bufmgr_gem * drm_intel_bufmgr_gem_find(int fd) { @@ -3369,7 +3379,8 @@ drm_intel_bufmgr_gem *bufmgr_gem; DRMLISTFOREACHENTRY(bufmgr_gem, &bufmgr_list, managers) { - if (bufmgr_gem->fd == fd) { + if (bufmgr_gem->fd == fd || + compare_file_descriptor (bufmgr_gem->fd, fd)) { atomic_inc(&bufmgr_gem->refcount); return bufmgr_gem; } diff ... libdrm-2.4.74/intel/intel_decode.c --- libdrm-2.4.74-ref/intel/intel_decode.c Tue Nov 29 06:15:10 2016 +++ libdrm-2.4.74/intel/intel_decode.c Sat Dec 31 18:30:23 2016 @@ -402,6 +402,7 @@ format = "1555"; break; case 3: + default: /* Keep GCC happy. */ format = "8888"; break; }