On Wed, May 20, 2020 at 11:13:36PM +0200, Paolo Bonzini wrote: > On 20/05/20 22:40, Christoph Hellwig wrote: > > On Wed, May 20, 2020 at 01:21:43PM -0400, Paolo Bonzini wrote: > >> + unsafe_put_user(val, (unsigned long __user *) from, err_fault); > > This adds a way too long line. In many ways it would be much nicer if > > you used an unsigned long __user * variable internally, a that would > > remove all these crazy casts and actually make the code readable. > > > > Good idea, thanks. Unless I'm seriously misreading that patch, it could've been done as static inline __must_check int memzero_user(void __user *addr, size_t size) { return clear_user(addr, n) ? -EFAULT : 0; } What am I missing?