Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 978813ee authored by Jon Paul Maloy's avatar Jon Paul Maloy Committed by David S. Miller
Browse files

tipc: replace reference table rwlock with spinlock



The lock for protecting the reference table is declared as an
RWLOCK, although it is only used in write mode, never in read
mode.

We redefine it to become a spinlock.

Signed-off-by: default avatarJon Maloy <jon.maloy@ericsson.com>
Reviewed-by: default avatarYing Xue <ying.xue@windriver.com>
Reviewed-by: default avatarErik Hugne <erik.hugne@ericsson.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4a93f509
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ struct ref_table {

static struct ref_table tipc_ref_table;

static DEFINE_RWLOCK(ref_table_lock);
static DEFINE_SPINLOCK(ref_table_lock);

/**
 * tipc_ref_table_init - create reference table for objects
@@ -159,7 +159,7 @@ u32 tipc_ref_acquire(void *object, spinlock_t **lock)
	}

	/* take a free entry, if available; otherwise initialize a new entry */
	write_lock_bh(&ref_table_lock);
	spin_lock_bh(&ref_table_lock);
	if (tipc_ref_table.first_free) {
		index = tipc_ref_table.first_free;
		entry = &(tipc_ref_table.entries[index]);
@@ -175,7 +175,7 @@ u32 tipc_ref_acquire(void *object, spinlock_t **lock)
	} else {
		ref = 0;
	}
	write_unlock_bh(&ref_table_lock);
	spin_unlock_bh(&ref_table_lock);

	/*
	 * Grab the lock so no one else can modify this entry
@@ -216,7 +216,7 @@ void tipc_ref_discard(u32 ref)
	index = ref & index_mask;
	entry = &(tipc_ref_table.entries[index]);

	write_lock_bh(&ref_table_lock);
	spin_lock_bh(&ref_table_lock);

	if (!entry->object) {
		pr_err("Attempt to discard ref. to non-existent obj\n");
@@ -242,7 +242,7 @@ void tipc_ref_discard(u32 ref)
	tipc_ref_table.last_free = index;

exit:
	write_unlock_bh(&ref_table_lock);
	spin_unlock_bh(&ref_table_lock);
}

/**