Re: [PATCH] docs: kdoc_output: only use out_tail when the identfier is shown

From: Randy Dunlap

Date: Mon Aug 17 2026 - 01:42:08 EST


Hi Mauro et al,

On 8/16/26 11:05 AM, Randy Dunlap wrote:
> I think that I just found a problem with this.
> I'll post an update when I have one.
>
> On 8/15/26 10:48 PM, Randy Dunlap wrote:
>> In -man mode, scripts/kernel-doc prints the "out_tail" information for
>> all symbols that are found (without the symbol info), whether the
>> symbols match the output selection criteria or not.
>>
>> This can cause quite a lot of extraneous output in -man mode for the
>> symbols that are not in the selection criteria.
>>
>> Modify kdoc_output.py so that it only calls out_tail() for symbols that
>> are being shown according to the selection criteria.
>>
>> Closes: https://lore.kernel.org/all/fc7978bb-a71f-456d-84bb-670c8f0426ed@xxxxxxxxxxxxx/
>> Signed-off-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>
>> ---
>> Cc: Jonathan Corbet <corbet@xxxxxxx>
>> Cc: Shuah Khan <skhan@xxxxxxxxxxxxxxxxxxx>
>> Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>
>> Cc: linux-doc@xxxxxxxxxxxxxxx
>>
>> tools/lib/python/kdoc/kdoc_output.py | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>

This change represents that I think would/could be a reasonable fix for
the problem that I reported (see the Closes: link).
However, this doesn't work because what I want to call (out_tail) does not
belong to the OutputFormat object but instead to the ManFormat class.

Can someone advise me on how I could/should call ManFormat.out_tail()
from here in the OutputFormat object?

File "linux-next-20260814/tools/docs/../lib/python/kdoc/kdoc_output.py", line 221, in msg
self.out_tail(fname, name, args)
^^^^^^^^^^^^^
AttributeError: 'OutputFormat' object has no attribute 'out_tail'. Did you mean: 'out_var'?


>> --- linux-next-20260814.orig/tools/lib/python/kdoc/kdoc_output.py
>> +++ linux-next-20260814/tools/lib/python/kdoc/kdoc_output.py
>> @@ -198,22 +198,27 @@ class OutputFormat:
>>
>> if dtype == "function":
>> self.out_function(fname, name, args)
>> + self.out_tail(fname, name, args)
>> return self.data
>>
>> if dtype == "enum":
>> self.out_enum(fname, name, args)
>> + self.out_tail(fname, name, args)
>> return self.data
>>
>> if dtype == "var":
>> self.out_var(fname, name, args)
>> + self.out_tail(fname, name, args)
>> return self.data
>>
>> if dtype == "typedef":
>> self.out_typedef(fname, name, args)
>> + self.out_tail(fname, name, args)
>> return self.data
>>
>> if dtype in ["struct", "union"]:
>> self.out_struct(fname, name, args)
>> + self.out_tail(fname, name, args)
>> return self.data
>>
>> # Warn if some type requires an output logic
>> @@ -763,7 +768,6 @@ class ManFormat(OutputFormat):
>> Add a tail at the end of man pages output.
>> """
>> super().msg(fname, name, args)
>> - self.out_tail(fname, name, args)
>>
>> return self.data
>>
>

Thanks.
--
~Randy