From: Fedor Tokarev Date: Mon, 11 Jul 2022 21:13:17 +0000 (+0200) Subject: bpf: btf: Fix vsnprintf return value check X-Git-Tag: v6.0-rc1~141^2~24^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=58250ae350de8d28ce91ade4605d32c9e7f062a8;p=thirdparty%2Fkernel%2Flinux.git bpf: btf: Fix vsnprintf return value check vsnprintf returns the number of characters which would have been written if enough space had been available, excluding the terminating null byte. Thus, the return value of 'len_left' means that the last character has been dropped. Signed-off-by: Fedor Tokarev Signed-off-by: Andrii Nakryiko Acked-by: Alan Maguire Link: https://lore.kernel.org/bpf/20220711211317.GA1143610@laptop --- diff --git a/kernel/bpf/btf.c b/kernel/bpf/btf.c index 7ac971ea98d10..7e64447659f3d 100644 --- a/kernel/bpf/btf.c +++ b/kernel/bpf/btf.c @@ -6643,7 +6643,7 @@ static void btf_snprintf_show(struct btf_show *show, const char *fmt, if (len < 0) { ssnprintf->len_left = 0; ssnprintf->len = len; - } else if (len > ssnprintf->len_left) { + } else if (len >= ssnprintf->len_left) { /* no space, drive on to get length we would have written */ ssnprintf->len_left = 0; ssnprintf->len += len;