On Friday 11 July 2008, prodyut hazarika wrote: > I have a version which just keeps a count of bytes copied till any > fault happened. Then for any exception, I just substract this value > from the total number of bytes to be copied, and store in r3 and > return back. This is the common fixup code for all paths. It makes the > fixup code much more readable like other architectures (eg. x86).
In some cases, you need to make sure that the return value is exactly the maximum you could copy, not a little less. > The current code tries to copy one byte at a time after read fault. I > don't understand why that is necessary. It then clears out the > destination. All these logic has made the code very unfriendly to > read. I'm not sure if the code is also avoiding unaligned accesses here, which is not a problem on x86. If you access uncached memory with unaligned pointers, you get an exception and the fixup code will copy it just fine with byte accesses. > 2) For read failure, why do we clear out the destination (lines 509 to > 529 in arch/powerpc/lib/copy_32.S)? Other architecture don't do that. All architectures should do that for copy_from_user, to avoid potential data leaks from the kernel when the data is copied back. Arnd <>< _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev