File tree Expand file tree Collapse file tree 2 files changed +23
-28
lines changed Expand file tree Collapse file tree 2 files changed +23
-28
lines changed Original file line number Diff line number Diff line change @@ -47,6 +47,28 @@ static void ida_check_leaf(struct ida *ida, unsigned int base)
47
47
IDA_BUG_ON (ida , !ida_is_empty (ida ));
48
48
}
49
49
50
+ /*
51
+ * Check allocations up to and slightly above the maximum allowed (2^31-1) ID.
52
+ * Allocating up to 2^31-1 should succeed, and then allocating the next one
53
+ * should fail.
54
+ */
55
+ static void ida_check_max (struct ida * ida )
56
+ {
57
+ unsigned long i , j ;
58
+
59
+ for (j = 1 ; j < 65537 ; j *= 2 ) {
60
+ unsigned long base = (1UL << 31 ) - j ;
61
+ for (i = 0 ; i < j ; i ++ ) {
62
+ IDA_BUG_ON (ida , ida_alloc_min (ida , base , GFP_KERNEL ) !=
63
+ base + i );
64
+ }
65
+ IDA_BUG_ON (ida , ida_alloc_min (ida , base , GFP_KERNEL ) !=
66
+ - ENOSPC );
67
+ ida_destroy (ida );
68
+ IDA_BUG_ON (ida , !ida_is_empty (ida ));
69
+ }
70
+ }
71
+
50
72
static int ida_checks (void )
51
73
{
52
74
DEFINE_IDA (ida );
@@ -55,6 +77,7 @@ static int ida_checks(void)
55
77
ida_check_leaf (& ida , 0 );
56
78
ida_check_leaf (& ida , 1024 );
57
79
ida_check_leaf (& ida , 1024 * 64 );
80
+ ida_check_max (& ida );
58
81
59
82
printk ("IDA: %u of %u tests passed\n" , tests_passed , tests_run );
60
83
return (tests_run != tests_passed ) ? 0 : - EINVAL ;
Original file line number Diff line number Diff line change @@ -396,33 +396,6 @@ void ida_check_conv(void)
396
396
ida_destroy (& ida );
397
397
}
398
398
399
- /*
400
- * Check allocations up to and slightly above the maximum allowed (2^31-1) ID.
401
- * Allocating up to 2^31-1 should succeed, and then allocating the next one
402
- * should fail.
403
- */
404
- void ida_check_max (void )
405
- {
406
- DEFINE_IDA (ida );
407
- int id , err ;
408
- unsigned long i , j ;
409
-
410
- for (j = 1 ; j < 65537 ; j *= 2 ) {
411
- unsigned long base = (1UL << 31 ) - j ;
412
- for (i = 0 ; i < j ; i ++ ) {
413
- assert (ida_pre_get (& ida , GFP_KERNEL ));
414
- assert (!ida_get_new_above (& ida , base , & id ));
415
- assert (id == base + i );
416
- }
417
- assert (ida_pre_get (& ida , GFP_KERNEL ));
418
- err = ida_get_new_above (& ida , base , & id );
419
- assert (err == - ENOSPC );
420
- ida_destroy (& ida );
421
- assert (ida_is_empty (& ida ));
422
- rcu_barrier ();
423
- }
424
- }
425
-
426
399
void ida_check_random (void )
427
400
{
428
401
DEFINE_IDA (ida );
@@ -534,7 +507,6 @@ void user_ida_checks(void)
534
507
ida_destroy (& ida );
535
508
assert (ida_is_empty (& ida ));
536
509
537
- ida_check_max ();
538
510
ida_check_conv ();
539
511
ida_check_random ();
540
512
ida_simple_get_remove_test ();
You can’t perform that action at this time.
0 commit comments