[TIPC]: First phase of assert() cleanup
This also contains enhancements to simplify comparisons in name table publication removal algorithm and to simplify name table sanity checking when shutting down TIPC. Signed-off-by: Allan Stephens <allan.stephens@windriver.com> Signed-off-by: Per Liden <per.liden@ericsson.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
e100ae92a6
commit
f131072c3d
@@ -127,7 +127,14 @@ u32 tipc_ref_acquire(void *object, spinlock_t **lock)
|
||||
u32 next_plus_upper;
|
||||
u32 reference = 0;
|
||||
|
||||
assert(tipc_ref_table.entries && object);
|
||||
if (!object) {
|
||||
err("Attempt to acquire reference to non-existent object\n");
|
||||
return 0;
|
||||
}
|
||||
if (!tipc_ref_table.entries) {
|
||||
err("Reference table not found during acquisition attempt\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
write_lock_bh(&ref_table_lock);
|
||||
if (tipc_ref_table.first_free) {
|
||||
@@ -162,15 +169,28 @@ void tipc_ref_discard(u32 ref)
|
||||
u32 index;
|
||||
u32 index_mask;
|
||||
|
||||
assert(tipc_ref_table.entries);
|
||||
assert(ref != 0);
|
||||
if (!ref) {
|
||||
err("Attempt to discard reference 0\n");
|
||||
return;
|
||||
}
|
||||
if (!tipc_ref_table.entries) {
|
||||
err("Reference table not found during discard attempt\n");
|
||||
return;
|
||||
}
|
||||
|
||||
write_lock_bh(&ref_table_lock);
|
||||
index_mask = tipc_ref_table.index_mask;
|
||||
index = ref & index_mask;
|
||||
entry = &(tipc_ref_table.entries[index]);
|
||||
assert(entry->object != 0);
|
||||
assert(entry->data.reference == ref);
|
||||
|
||||
if (!entry->object) {
|
||||
err("Attempt to discard reference to non-existent object\n");
|
||||
goto exit;
|
||||
}
|
||||
if (entry->data.reference != ref) {
|
||||
err("Attempt to discard non-existent reference\n");
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* mark entry as unused */
|
||||
entry->object = NULL;
|
||||
@@ -184,6 +204,7 @@ void tipc_ref_discard(u32 ref)
|
||||
|
||||
/* increment upper bits of entry to invalidate subsequent references */
|
||||
entry->data.next_plus_upper = (ref & ~index_mask) + (index_mask + 1);
|
||||
exit:
|
||||
write_unlock_bh(&ref_table_lock);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user