write_lock_irq(&rh->hash_lock);
        spin_lock(&rh->region_lock);
        if (!list_empty(&rh->clean_regions)) {
-               list_splice(&rh->clean_regions, &clean);
-               INIT_LIST_HEAD(&rh->clean_regions);
+               list_splice_init(&rh->clean_regions, &clean);
 
                list_for_each_entry(reg, &clean, list)
                        list_del(®->hash_list);
        }
 
        if (!list_empty(&rh->recovered_regions)) {
-               list_splice(&rh->recovered_regions, &recovered);
-               INIT_LIST_HEAD(&rh->recovered_regions);
+               list_splice_init(&rh->recovered_regions, &recovered);
 
                list_for_each_entry (reg, &recovered, list)
                        list_del(®->hash_list);
        }
 
        if (!list_empty(&rh->failed_recovered_regions)) {
-               list_splice(&rh->failed_recovered_regions, &failed_recovered);
-               INIT_LIST_HEAD(&rh->failed_recovered_regions);
+               list_splice_init(&rh->failed_recovered_regions,
+                                &failed_recovered);
 
                list_for_each_entry(reg, &failed_recovered, list)
                        list_del(®->hash_list);