On Mon, 18 Aug 2025 at 14:21, David Laight <david.laight.linux@xxxxxxxxx> wrote: > > Would something like this work (to avoid the hidden update)? It would certainly work, but I despise code inside macro arguments even more than I dislike the hidden update. If we want something like this, we should just make that last argument be a label, the same way unsafe_{get,put}_user() already works. That would not only match existing user access exception handling, it might allow for architecture-specific asm code that uses synchronous trap instructions (ie the label might turn into an exception entry) It's basically "manual exception handling", whether it then uses actual exceptions (like user accesses do) or ends up being some software implementation with just a "goto label" for the error case. I realize some people have grown up being told that "goto is bad". Or have been told that exception handling should be baked into the language and be asynchronous. Both of those ideas are complete and utter garbage, and the result of minds that cannot comprehend reality. Asynchronous exceptions are horrific and tend to cause huge performance problems (think setjmp()). The Linux kernel exception model with explicit exception points is not only "that's how you have to do it in C", it's also technically superior. And "goto" is fine, as long as you have legible syntax and don't use it to generate spaghetti code. Being able to write bad code with goto doesn't make 'goto' bad - you can write bad code with *anything*. Linus