Re: [PATCH 1/2] uaccess: Simplify code pattern for masked user copies

From: Linus Torvalds
Date: Sun Feb 09 2025 - 13:41:02 EST


On Sun, 9 Feb 2025 at 10:34, David Laight <david.laight.linux@xxxxxxxxx> wrote:
>
> For real functions they do generate horrid code.

It';s not about the code generation,.

Well, yes, it is that too in other circumstances, but that's not the
deeper issue.

The deeper issue is this:

> > Yes, you can make spaghetti code with goto and labels. But 'return
> > value in arguments' is worse, because it makes the *data flow* harder
> > to see.

This is the issue that is entirely independent of what the code
generation is. This is the issue that affects humans reading the
source.

It's *really* easy to miss the "oh, that changes X" when the only
little tiny sign of it is that "&" character inside the argument list,
and then the *normal* mental model is that arguments are arguments
*to* the function, not returns *from* the function.

(And yes, I admit that is inconsistent: we have lots of cases where we
have structures etc that get filled in or modified by functions, and
are passed by reference all the time. But I think there's a big
difference between a regular "value" like a user pointer, and a
complex data structure).

Linus