@@ -489,10 +489,9 @@ struct bucket_table *rhashtable_insert_slow(struct rhashtable *ht,
489489EXPORT_SYMBOL_GPL (rhashtable_insert_slow );
490490
491491/**
492- * rhashtable_walk_init - Initialise an iterator
492+ * rhashtable_walk_enter - Initialise an iterator
493493 * @ht: Table to walk over
494494 * @iter: Hash table Iterator
495- * @gfp: GFP flags for allocations
496495 *
497496 * This function prepares a hash table walk.
498497 *
@@ -507,30 +506,22 @@ EXPORT_SYMBOL_GPL(rhashtable_insert_slow);
507506 * This function may sleep so you must not call it from interrupt
508507 * context or with spin locks held.
509508 *
510- * You must call rhashtable_walk_exit if this function returns
511- * successfully.
509+ * You must call rhashtable_walk_exit after this function returns.
512510 */
513- int rhashtable_walk_init (struct rhashtable * ht , struct rhashtable_iter * iter ,
514- gfp_t gfp )
511+ void rhashtable_walk_enter (struct rhashtable * ht , struct rhashtable_iter * iter )
515512{
516513 iter -> ht = ht ;
517514 iter -> p = NULL ;
518515 iter -> slot = 0 ;
519516 iter -> skip = 0 ;
520517
521- iter -> walker = kmalloc (sizeof (* iter -> walker ), gfp );
522- if (!iter -> walker )
523- return - ENOMEM ;
524-
525518 spin_lock (& ht -> lock );
526- iter -> walker -> tbl =
519+ iter -> walker . tbl =
527520 rcu_dereference_protected (ht -> tbl , lockdep_is_held (& ht -> lock ));
528- list_add (& iter -> walker -> list , & iter -> walker -> tbl -> walkers );
521+ list_add (& iter -> walker . list , & iter -> walker . tbl -> walkers );
529522 spin_unlock (& ht -> lock );
530-
531- return 0 ;
532523}
533- EXPORT_SYMBOL_GPL (rhashtable_walk_init );
524+ EXPORT_SYMBOL_GPL (rhashtable_walk_enter );
534525
535526/**
536527 * rhashtable_walk_exit - Free an iterator
@@ -541,10 +532,9 @@ EXPORT_SYMBOL_GPL(rhashtable_walk_init);
541532void rhashtable_walk_exit (struct rhashtable_iter * iter )
542533{
543534 spin_lock (& iter -> ht -> lock );
544- if (iter -> walker -> tbl )
545- list_del (& iter -> walker -> list );
535+ if (iter -> walker . tbl )
536+ list_del (& iter -> walker . list );
546537 spin_unlock (& iter -> ht -> lock );
547- kfree (iter -> walker );
548538}
549539EXPORT_SYMBOL_GPL (rhashtable_walk_exit );
550540
@@ -570,12 +560,12 @@ int rhashtable_walk_start(struct rhashtable_iter *iter)
570560 rcu_read_lock ();
571561
572562 spin_lock (& ht -> lock );
573- if (iter -> walker -> tbl )
574- list_del (& iter -> walker -> list );
563+ if (iter -> walker . tbl )
564+ list_del (& iter -> walker . list );
575565 spin_unlock (& ht -> lock );
576566
577- if (!iter -> walker -> tbl ) {
578- iter -> walker -> tbl = rht_dereference_rcu (ht -> tbl , ht );
567+ if (!iter -> walker . tbl ) {
568+ iter -> walker . tbl = rht_dereference_rcu (ht -> tbl , ht );
579569 return - EAGAIN ;
580570 }
581571
@@ -597,7 +587,7 @@ EXPORT_SYMBOL_GPL(rhashtable_walk_start);
597587 */
598588void * rhashtable_walk_next (struct rhashtable_iter * iter )
599589{
600- struct bucket_table * tbl = iter -> walker -> tbl ;
590+ struct bucket_table * tbl = iter -> walker . tbl ;
601591 struct rhashtable * ht = iter -> ht ;
602592 struct rhash_head * p = iter -> p ;
603593
@@ -630,8 +620,8 @@ void *rhashtable_walk_next(struct rhashtable_iter *iter)
630620 /* Ensure we see any new tables. */
631621 smp_rmb ();
632622
633- iter -> walker -> tbl = rht_dereference_rcu (tbl -> future_tbl , ht );
634- if (iter -> walker -> tbl ) {
623+ iter -> walker . tbl = rht_dereference_rcu (tbl -> future_tbl , ht );
624+ if (iter -> walker . tbl ) {
635625 iter -> slot = 0 ;
636626 iter -> skip = 0 ;
637627 return ERR_PTR (- EAGAIN );
@@ -651,7 +641,7 @@ void rhashtable_walk_stop(struct rhashtable_iter *iter)
651641 __releases (RCU )
652642{
653643 struct rhashtable * ht ;
654- struct bucket_table * tbl = iter -> walker -> tbl ;
644+ struct bucket_table * tbl = iter -> walker . tbl ;
655645
656646 if (!tbl )
657647 goto out ;
@@ -660,9 +650,9 @@ void rhashtable_walk_stop(struct rhashtable_iter *iter)
660650
661651 spin_lock (& ht -> lock );
662652 if (tbl -> rehash < tbl -> size )
663- list_add (& iter -> walker -> list , & tbl -> walkers );
653+ list_add (& iter -> walker . list , & tbl -> walkers );
664654 else
665- iter -> walker -> tbl = NULL ;
655+ iter -> walker . tbl = NULL ;
666656 spin_unlock (& ht -> lock );
667657
668658 iter -> p = NULL ;
0 commit comments