I think the atomic_pte_lookup / non_atomic_pte_lookup helpers should simply go away. Most of the setup code is common now and should be in the caller where it can be shared. Then just do a: if (atomic) { __get_user_pages_fast() } else { get_user_pages_fast(); } and we actually have an easy to understand piece of code.