From 988457b65b1ec46180ae681a413f3a1300cb7da0 Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Wed, 9 May 2018 07:51:21 +0200 Subject: [PATCH] infra: fix silly deadlock on improbable race --- kernel/brick_say.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/kernel/brick_say.c b/kernel/brick_say.c index 426ccd65..4ff4c8e4 100644 --- a/kernel/brick_say.c +++ b/kernel/brick_say.c @@ -451,16 +451,15 @@ struct say_channel *make_channel(const char *name, bool must_exist) for (ch = channel_list; ch; ch = ch->ch_next) { if (ch != res && unlikely(!strcmp(ch->ch_name, name))) { + up_write(&say_mutex); _del_channel(res); res = ch; - goto race_found; + goto done; } } - res->ch_next = channel_list; channel_list = res; - race_found: up_write(&say_mutex); }