Re: [PATCH next] netfilter: nf_conntrack_h323: Correct indentation when H323_TRACE defined

From: Petr Mladek

Date: Fri Mar 27 2026 - 05:49:51 EST


On Thu 2026-03-26 20:18:19, david.laight.linux@xxxxxxxxx wrote:
> From: David Laight <david.laight.linux@xxxxxxxxx>
>
> The trace lines are indented using PRINT("%*.s", xx, " ").
> Userspace will treat this as "%*.0s" and will output no characters
> when 'xx' is zero, the kernel treats it as "%*s" and will output
> a single ' ' - which is probably what is intended.
>
> Change all the formats to "%*s" removing the default precision.
> This gives a single space indent when level is zero.
>
> Signed-off-by: David Laight <david.laight.linux@xxxxxxxxx>
> ---
> net/netfilter/nf_conntrack_h323_asn1.c | 38 +++++++++++++-------------
> 1 file changed, 19 insertions(+), 19 deletions(-)
>
> diff --git a/net/netfilter/nf_conntrack_h323_asn1.c b/net/netfilter/nf_conntrack_h323_asn1.c
> index 7b1497ed97d2..287402428975 100644
> --- a/net/netfilter/nf_conntrack_h323_asn1.c
> +++ b/net/netfilter/nf_conntrack_h323_asn1.c
> @@ -276,7 +276,7 @@ static unsigned int get_uint(struct bitstr *bs, int b)
> static int decode_nul(struct bitstr *bs, const struct field_t *f,
> char *base, int level)
> {
> - PRINT("%*.s%s\n", level * TAB_SIZE, " ", f->name);
> + PRINT("%*s%s\n", level * TAB_SIZE, " ", f->name);
>
> return H323_ERROR_NONE;
> }

The change is important for making the kernel %*.s handling POSIX
compliant. The dot '.' without any following number is handled
a zero precision by POSIX. It would print no space "" when
also the field width was zero, aka when level == 0.

It has no efect if the field width (@level) is always > 0 because
vsprintf() would add the required emptry spaces ' ' anyway.

Reviewed-by: Petr Mladek <pmladek@xxxxxxxx>

Best Regards,
Petr