On Mon, Jul 04, 2022 at 06:26:08PM +0100, Matthew Wilcox wrote:
Hi Matthew,
cc02e6e21aa5 ("s390/crash: add missing iterator advance in copy_oldmem_page()") af2debd58bd7 ("s390/crash: make copy_oldmem_page() return number of bytes copied")
Both of them are also in the 5.18-rc queue here, right?
Yes, these are:
[PATCH 5.18 113/181] s390/crash: add missing iterator advance in copy_oldmem_page() Greg Kroah-Hartman
It's generally considered polite to cc the original author when you fix one of their patches. I wasn't aware of this patch.
Apologies for not doing that - I did not realize this patch could be of interest for non-s390.
While the code change looks right, the commit message is wrong; copy_oldmem_user() and copy_oldmem_kernel() need to GO AWAY. You need to be more like the other architectures and end up calling copy_to_iter(). I have no idea what this memcpy_hsa_kernel() and memcpy_hsa_user() are all about, but I was hoping that somebody from the s390 team would react to:
s390 needs more work to pass the iov_iter down further, or refactor, but I'd be more comfortable if someone who can test on s390 did that work.
Maybe you'll do it.
I considered going with copy_to_iter(), but unfortunately getting rid of copy_oldmem_user() and copy_oldmem_kernel() is not an easy thing to do, if possible. At least for the time being we have to stay with these two and handle copy_oldmem_page() on our own.
Yet, a hope that a single-segment iterator on s390 would be enough turned out to be wrong and a follow-up fix is coming. Hopefully, it will make s390 code one step closer to others.
Thanks!