On 09/22, Peter Xu wrote: > > Or I can also do it in inverted order if you think better: > > if (unlikely(copy_ret == COPY_MM_BREAK_COW)) { > WARN_ON_ONCE(!data.cow_new_page); > ... > } Peter, let me say this again. I don't understand this code enough, you can safely ignore me ;) However. Personally I strongly prefer the above. Personally I really dislike this part of 4/5: again: + /* We don't reset this for COPY_MM_BREAK_COW */ + memset(&data, 0, sizeof(data)); + +again_break_cow: If we rely on "copy_ret == COPY_MM_BREAK_COW" we can unify "again" and "again_break_cow", we don't need to clear ->cow_new_page, this makes the logic more understandable. To me at least ;) Oleg.