media: dvb-frontends: fix leak of memory fw
[linux-block.git] / lib / test_rhashtable.c
index 5a1dd4736b56f510a3ae449bccf6b486065c6374..f2ba5787055a9e5fad9daea63a68ad723e974e8a 100644 (file)
@@ -291,7 +291,7 @@ static int __init test_rhltable(unsigned int entries)
        if (WARN_ON(err))
                goto out_free;
 
-       k = prandom_u32();
+       k = get_random_u32();
        ret = 0;
        for (i = 0; i < entries; i++) {
                rhl_test_objects[i].value.id = k;
@@ -369,18 +369,10 @@ static int __init test_rhltable(unsigned int entries)
        pr_info("test %d random rhlist add/delete operations\n", entries);
        for (j = 0; j < entries; j++) {
                u32 i = prandom_u32_max(entries);
-               u32 prand = prandom_u32();
+               u32 prand = prandom_u32_max(4);
 
                cond_resched();
 
-               if (prand == 0)
-                       prand = prandom_u32();
-
-               if (prand & 1) {
-                       prand >>= 1;
-                       continue;
-               }
-
                err = rhltable_remove(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
                if (test_bit(i, obj_in_table)) {
                        clear_bit(i, obj_in_table);
@@ -393,35 +385,29 @@ static int __init test_rhltable(unsigned int entries)
                }
 
                if (prand & 1) {
-                       prand >>= 1;
-                       continue;
-               }
-
-               err = rhltable_insert(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
-               if (err == 0) {
-                       if (WARN(test_and_set_bit(i, obj_in_table), "succeeded to insert same object %d", i))
-                               continue;
-               } else {
-                       if (WARN(!test_bit(i, obj_in_table), "failed to insert object %d", i))
-                               continue;
-               }
-
-               if (prand & 1) {
-                       prand >>= 1;
-                       continue;
+                       err = rhltable_insert(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
+                       if (err == 0) {
+                               if (WARN(test_and_set_bit(i, obj_in_table), "succeeded to insert same object %d", i))
+                                       continue;
+                       } else {
+                               if (WARN(!test_bit(i, obj_in_table), "failed to insert object %d", i))
+                                       continue;
+                       }
                }
 
-               i = prandom_u32_max(entries);
-               if (test_bit(i, obj_in_table)) {
-                       err = rhltable_remove(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
-                       WARN(err, "cannot remove element at slot %d", i);
-                       if (err == 0)
-                               clear_bit(i, obj_in_table);
-               } else {
-                       err = rhltable_insert(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
-                       WARN(err, "failed to insert object %d", i);
-                       if (err == 0)
-                               set_bit(i, obj_in_table);
+               if (prand & 2) {
+                       i = prandom_u32_max(entries);
+                       if (test_bit(i, obj_in_table)) {
+                               err = rhltable_remove(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
+                               WARN(err, "cannot remove element at slot %d", i);
+                               if (err == 0)
+                                       clear_bit(i, obj_in_table);
+                       } else {
+                               err = rhltable_insert(&rhlt, &rhl_test_objects[i].list_node, test_rht_params);
+                               WARN(err, "failed to insert object %d", i);
+                               if (err == 0)
+                                       set_bit(i, obj_in_table);
+                       }
                }
        }