|
@@ -227,6 +227,66 @@ void idr_u32_test(int base)
|
|
|
idr_u32_test1(&idr, 0xffffffff);
|
|
|
}
|
|
|
|
|
|
+static void idr_align_test(struct idr *idr)
|
|
|
+{
|
|
|
+ char name[] = "Motorola 68000";
|
|
|
+ int i, id;
|
|
|
+ void *entry;
|
|
|
+
|
|
|
+ for (i = 0; i < 9; i++) {
|
|
|
+ BUG_ON(idr_alloc(idr, &name[i], 0, 0, GFP_KERNEL) != i);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ }
|
|
|
+ idr_destroy(idr);
|
|
|
+
|
|
|
+ for (i = 1; i < 10; i++) {
|
|
|
+ BUG_ON(idr_alloc(idr, &name[i], 0, 0, GFP_KERNEL) != i - 1);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ }
|
|
|
+ idr_destroy(idr);
|
|
|
+
|
|
|
+ for (i = 2; i < 11; i++) {
|
|
|
+ BUG_ON(idr_alloc(idr, &name[i], 0, 0, GFP_KERNEL) != i - 2);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ }
|
|
|
+ idr_destroy(idr);
|
|
|
+
|
|
|
+ for (i = 3; i < 12; i++) {
|
|
|
+ BUG_ON(idr_alloc(idr, &name[i], 0, 0, GFP_KERNEL) != i - 3);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ }
|
|
|
+ idr_destroy(idr);
|
|
|
+
|
|
|
+ for (i = 0; i < 8; i++) {
|
|
|
+ BUG_ON(idr_alloc(idr, &name[i], 0, 0, GFP_KERNEL) != 0);
|
|
|
+ BUG_ON(idr_alloc(idr, &name[i + 1], 0, 0, GFP_KERNEL) != 1);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ idr_remove(idr, 1);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ idr_remove(idr, 0);
|
|
|
+ BUG_ON(!idr_is_empty(idr));
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < 8; i++) {
|
|
|
+ BUG_ON(idr_alloc(idr, NULL, 0, 0, GFP_KERNEL) != 0);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ idr_replace(idr, &name[i], 0);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ BUG_ON(idr_find(idr, 0) != &name[i]);
|
|
|
+ idr_remove(idr, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < 8; i++) {
|
|
|
+ BUG_ON(idr_alloc(idr, &name[i], 0, 0, GFP_KERNEL) != 0);
|
|
|
+ BUG_ON(idr_alloc(idr, NULL, 0, 0, GFP_KERNEL) != 1);
|
|
|
+ idr_remove(idr, 1);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ idr_replace(idr, &name[i + 1], 0);
|
|
|
+ idr_for_each_entry(idr, entry, id);
|
|
|
+ idr_remove(idr, 0);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
void idr_checks(void)
|
|
|
{
|
|
|
unsigned long i;
|
|
@@ -307,6 +367,7 @@ void idr_checks(void)
|
|
|
idr_u32_test(4);
|
|
|
idr_u32_test(1);
|
|
|
idr_u32_test(0);
|
|
|
+ idr_align_test(&idr);
|
|
|
}
|
|
|
|
|
|
#define module_init(x)
|
|
@@ -341,6 +402,7 @@ void ida_check_nomem(void)
|
|
|
*/
|
|
|
void ida_check_conv_user(void)
|
|
|
{
|
|
|
+#if 0
|
|
|
DEFINE_IDA(ida);
|
|
|
unsigned long i;
|
|
|
|
|
@@ -358,6 +420,7 @@ void ida_check_conv_user(void)
|
|
|
IDA_BUG_ON(&ida, id != i);
|
|
|
}
|
|
|
ida_destroy(&ida);
|
|
|
+#endif
|
|
|
}
|
|
|
|
|
|
void ida_check_random(void)
|