[Mesa-dev] Fwd: New Defects reported by Coverity Scan for Mesa
Dongwon Kim
dongwon.kim at intel.com
Wed Apr 13 21:03:00 UTC 2016
There are four different places where the program pointer may jump to
'cleanup:' while the mutex is still possilby being locked. Two
of those cases are when mtx_lock(pthread_mutex_lock) fails to lock
the mutex. However, this can't be a problem because the mutex is either
not in "locked" state because current thread fails to acquire it or
even if it's locked, it's owned by another thread.
The other two places are when mtx_unlock call fails to unlock the mutex.
This is also not a problem. According to manpage, pthread_mutex_unlock
only can return EINVAL or EPERM. EINVAL means the mutex is not
initialized. But if it's uninialized, the code should have already
failed while trying to acquiring it. EPERM is also not an issue
because this error code means current thread doesn't own the mutex.
In other words, the function is not responsible for unlocking it.
On Wed, Apr 13, 2016 at 12:09:44PM -0700, Matt Turner wrote:
> Looks like some locking problems caused by commit 70299474. Please take a look.
>
> ---------- Forwarded message ----------
> From: <scan-admin at coverity.com>
> Date: Wed, Apr 13, 2016 at 8:37 AM
> Subject: New Defects reported by Coverity Scan for Mesa
>
> ________________________________________________________________________________________________________
> *** CID 1358496: (LOCK)
> /src/egl/drivers/dri2/egl_dri2.c: 2643 in dri2_client_wait_sync()
> 2637
> 2638 cleanup:
> 2639 dri2_egl_unref_sync(dri2_dpy, dri2_sync);
> 2640
> 2641 if (ret == EGL_FALSE) {
> 2642 _eglError(EGL_BAD_ACCESS, "eglClientWaitSyncKHR");
> >>> CID 1358496: (LOCK)
> >>> Returning without unlocking "dri2_sync->mutex".
> 2643 return EGL_FALSE;
> 2644 }
> 2645
> 2646 return ret;
> 2647 }
> 2648
> /src/egl/drivers/dri2/egl_dri2.c: 2643 in dri2_client_wait_sync()
> 2637
> 2638 cleanup:
> 2639 dri2_egl_unref_sync(dri2_dpy, dri2_sync);
> 2640
> 2641 if (ret == EGL_FALSE) {
> 2642 _eglError(EGL_BAD_ACCESS, "eglClientWaitSyncKHR");
> >>> CID 1358496: (LOCK)
> >>> Returning without unlocking "dri2_sync->mutex".
> 2643 return EGL_FALSE;
> 2644 }
> 2645
> 2646 return ret;
> 2647 }
> 2648
More information about the mesa-dev
mailing list