Just to be clear, I don't actually speak perl. What I notice is that, without this patch, the htmldocs contain: file:///home/willy/kernel/linux/Documentation/output/core-api/mm-api.html#c.folio Members flags Identical to the page flags. {unnamed_union} anonymous lru Least Recently Used list; tracks how recently this folio was used. {unnamed_struct} anonymous mlock_count Number of times any page in this folio is mlocked. and that looks terrible. Looking at the history of scripts/kernel-doc, this wasn't supposed to happen. Randy added support in 134fe01bfafa (2006), and there was an explicit check to not output anything for anon union/struct. It got reworked slightly in 5f8c7c98ae38 (2007), but probably still worked the same. I think it got broken by 151c468b44a8 (2017) which said: While here, I removed a unaligned check for !$anon_struct_union. This is not needed, as, if $anon_struct_union is not zero, $parameterdescs{$param} will be defined. but I don't really know whether it was some later change to parameterdescs that really broke it. diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 9c084a2ba3b0..64803fe15bd2 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc @@ -1540,10 +1540,11 @@ sub push_parameter($$$$$) { elsif ($type eq "" && ($param eq "struct" or $param eq "union")) # handle unnamed (anonymous) union or struct: { - $type = $param; - $param = "{unnamed_" . $param . "}"; - $parameterdescs{$param} = "anonymous\n"; +# $type = $param; +# $param = "{unnamed_" . $param . "}"; +# $parameterdescs{$param} = "anonymous\n"; $anon_struct_union = 1; + return; } # warn if parameter has no description