On 25/09/20 23:22, Ben Gardon wrote: > + for_each_tdp_pte_root(iter, root, start, end) { > + if (!is_shadow_present_pte(iter.old_spte) || > + is_last_spte(iter.old_spte, iter.level)) > + continue; > + I'm starting to wonder if another iterator like for_each_tdp_leaf_pte_root would be clearer, since this idiom repeats itself quite often. The tdp_iter_next_leaf function would be easily implemented as while (likely(iter->valid) && (!is_shadow_present_pte(iter.old_spte) || is_last_spte(iter.old_spte, iter.level)) tdp_iter_next(iter); Paolo