conn->id is now assigned outside of the bus' lock, so an atomic64_t is
nicer.
hash_init(b->conn_hash);
INIT_LIST_HEAD(&b->ep_list);
INIT_LIST_HEAD(&b->monitors_list);
+ atomic64_set(&b->conn_seq_last, 0);
/* generate unique ID for this bus */
get_random_bytes(b->id128, sizeof(b->id128));
u64 id;
struct mutex lock;
u64 ep_seq_last;
- u64 conn_seq_last;
+ atomic64_t conn_seq_last;
struct idr conn_idr;
DECLARE_HASHTABLE(conn_hash, 6);
struct list_head ep_list;
conn->ep = kdbus_ep_ref(ep);
/* get new id for this connection */
- mutex_lock(&bus->lock);
- conn->id = ++bus->conn_seq_last;
- mutex_unlock(&bus->lock);
+ conn->id = atomic64_inc_return(&bus->conn_seq_last);
/* return properties of this connection to the caller */
hello->bus_flags = bus->bus_flags;