[PATCH 9/9] relay
Chris Wilson
chris at chris-wilson.co.uk
Tue Aug 14 20:32:01 UTC 2018
---
kernel/relay.c | 15 ++++-----------
1 file changed, 4 insertions(+), 11 deletions(-)
diff --git a/kernel/relay.c b/kernel/relay.c
index 9247741fa197..53a4dbe4b7ee 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -24,7 +24,6 @@
#include <linux/splice.h>
/* list of open channels, for cpu hotplug */
-static DEFINE_MUTEX(relay_channels_mutex);
static LIST_HEAD(relay_channels);
/*
@@ -610,9 +609,9 @@ struct rchan *relay_open(const char *base_filename,
if ((buf = *per_cpu_ptr(chan->buf, i)))
relay_close_buf(buf);
}
+ cpus_read_unlock();
kref_put(&chan->kref, relay_destroy_channel);
- mutex_unlock(&relay_channels_mutex);
return NULL;
}
EXPORT_SYMBOL_GPL(relay_open);
@@ -659,15 +658,11 @@ int relay_late_setup_files(struct rchan *chan,
if (!chan || !base_filename)
return -EINVAL;
- strlcpy(chan->base_filename, base_filename, NAME_MAX);
-
- mutex_lock(&relay_channels_mutex);
/* Is chan already set up? */
- if (unlikely(chan->has_base_filename)) {
- mutex_unlock(&relay_channels_mutex);
+ if (unlikely(cmpxchg(&chan->has_base_filename, 0, 1)))
return -EEXIST;
- }
- chan->has_base_filename = 1;
+
+ strlcpy(chan->base_filename, base_filename, NAME_MAX);
chan->parent = parent;
if (chan->is_global) {
@@ -680,7 +675,6 @@ int relay_late_setup_files(struct rchan *chan,
err = 0;
}
}
- mutex_unlock(&relay_channels_mutex);
return err;
}
@@ -721,7 +715,6 @@ int relay_late_setup_files(struct rchan *chan,
break;
}
put_cpu();
- mutex_unlock(&relay_channels_mutex);
return err;
}
--
2.18.0
More information about the Intel-gfx-trybot
mailing list