I was looking at memmove_page() and it occurred to me that it can't actually work, so we should probably delete it as being an attractive nuisance. It doesn't have any users. memmove() isn't magic. It compares the source address, source length, destination address and destination length, and then does either a forwards copy or a backwards copy, depending where the overlap is. But 'dst' and 'src' are guaranteed to be non-overlapping. They come from different calls to kmap_local_page(), so even if src_page and dst_page are the same, src and dst will be different. We could fix it up. Include a compare of 'dst_page' and 'src_page' and if they're the same only kmap_local_page() one of them. But since it has no users, perhaps just delete it?