Most people prefer the first over the second. But I think that Linus really should prefer the second over the first. Let me try to explain why. There is a well-known saying attributed to David Wheeler, "All problems in computer science can be solved by another level of indirection." Except the problem of having too many layers of indirection. Also both quotes are often seeing with "abstraction" instead of "indirectio…
That's great because it kind of speaks to the crux of the problem.
But the first solution does use pointers :)
The second uses double pointers.
I'd argue that 'even kernel maintainers' may not be so easy with the second in reality.
It's probably worth it if there is a performance gain, because it's so low level. But not otherwise.
But good point.