From 8b20280be34914dfaf0fdc9930a1590b58472a20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20Kempczy=C5=84ski?= <zbigniew.kempczynski@intel.com> Date: Mon, 17 Mar 2025 12:31:46 +0100 Subject: [PATCH] lib/igt_core: reinitialize log_buffer_mutex in child process MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For multi-process scenario intel-allocator is dedicated thread which handles clients (children processes) allocations. Main thread which spawns children may hit point of time where allocator thread locked some mutex. One of it is log_buffer_mutex used in igt_log(). Children which would try to call igt_info/warn/debug() family will stuck as this mutex is already locked. Reinitialize this mutex in igt_fork() to avoid deadlocks in allocator scenarios. Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> Cc: Dominik Karol Piątkowski <dominik.karol.piatkowski@intel.com> Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com> Reviewed-by: Dominik Karol Piątkowski <dominik.karol.piatkowski@intel.com> Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com> Link: https://lore.kernel.org/r/20250317113146.560156-1-zbigniew.kempczynski@intel.com Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> --- lib/igt_core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/igt_core.c b/lib/igt_core.c index 9702a9417..c19689a51 100644 --- a/lib/igt_core.c +++ b/lib/igt_core.c @@ -2600,6 +2600,7 @@ bool __igt_fork(void) test_child = true; pthread_mutex_init(&print_mutex, NULL); pthread_mutex_init(&ahnd_map_mutex, NULL); + pthread_mutex_init(&log_buffer_mutex, NULL); ahnd_map = igt_map_create(igt_map_hash_64, igt_map_equal_64); child_pid = getpid(); child_tid = -1; -- GitLab