Re: [RFC][CFT][PATCHSET v1] uaccess unification

From: Martin Schwidefsky
Date: Thu Mar 30 2017 - 08:32:31 EST


On Wed, 29 Mar 2017 06:57:06 +0100
Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote:

> The patchset currently in vfs.git#work.uaccess is the result;
> there's more work to do, but it takes care of a large part of the
> problems. About 2.8KLoc removed, a lot of cruft is gone and semantics
> is hopefully in sync now. All but two architectures (ia64 and metag)
> had been switched to new mechanism; for these two I'm afraid that I'll
> need serious help from maintainers.

I have tested the code in vfs.git#work.uaccess and in principle it works
for s390. I found one bug which would return an incorrect result
for copy_from_user if the access faults on the last page of the copy.
In that case the new code would return 0 instead of the remaining bytes.

This patch snippet should fix it, please just merge it into commit
"s390: get rid of zeroing, switch to RAW_COPY_USER"

diff --git a/arch/s390/lib/uaccess.c b/arch/s390/lib/uaccess.c
index b55172c..1e5bb2b 100644
--- a/arch/s390/lib/uaccess.c
+++ b/arch/s390/lib/uaccess.c
@@ -35,7 +35,7 @@ static inline unsigned long copy_from_user_mvcos(void *x, const void __user *ptr
" nr %4,%3\n" /* %4 = (ptr + 4095) & -4096 */
" slgr %4,%1\n"
" clgr %0,%4\n" /* copy crosses next page boundary? */
- " jnh 4f\n"
+ " jnh 5f\n"
"3: .insn ss,0xc80000000000,0(%4,%2),0(%1),0\n"
"7: slgr %0,%4\n"
" j 5f\n"

--
blue skies,
Martin.

"Reality continues to ruin my life." - Calvin.