[TIPC]: First phase of assert() cleanup
[safe/jmp/linux-2.6] / net / tipc / ref.c
index 33bbf50..d2f0cce 100644 (file)
@@ -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);
 }