strnlen_user is supposed to return then length count + 1 if no terminating \0
is found, and it should return 0 on exception.  Found by David Howells
<dhowells@redhat.com>.
Signed-off-by: Gerald Schaefer <geraldsc@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Acked-By: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
 0:     srst    %r2,%r1
        jo      0b
        sacf    0
-       jh      1f              # \0 found in string ?
        ahi     %r2,1           # strnlen_user result includes the \0
-1:     slr     %r2,%r3
+                               # or return count+1 if \0 not found
+       slr     %r2,%r3
        br      %r14
 2:     sacf    0
-       lhi     %r2,-EFAULT
+       slr     %r2,%r2         # return 0 on exception
        br      %r14
        .section __ex_table,"a"
        .long   0b,2b
 
 0:     srst    %r2,%r1
        jo      0b
        sacf    0
-       jh      1f              # \0 found in string ?
        aghi    %r2,1           # strnlen_user result includes the \0
-1:     slgr    %r2,%r3
+                               # or return count+1 if \0 not found
+       slgr    %r2,%r3
        br      %r14
 2:     sacf    0
-       lghi    %r2,-EFAULT
+       slgr    %r2,%r2         # return 0 on exception
        br      %r14
        .section __ex_table,"a"
        .quad   0b,2b