Rémi Bernon (@rbernon) commented about server/mutex.c:
return 1;
}
+static struct inproc_sync *mutex_get_inproc_sync( struct object *obj ) +{
- struct mutex *mutex = (struct mutex *)obj;
- if (!mutex->inproc_sync)
- {
mutex->inproc_sync = create_inproc_mutex( mutex->owner ? mutex->owner->id : 0, mutex->count );
I understand that the `mutex->owner` pointer is dynamically changing depending on which process currently owns the mutex. Here you're creating the inproc object once with whatever owner was set at that time, but then caching it will leave the owner unchanged until the mutex is destroyed, which doesn't look right?