kernel/bpf/btf.c:5346:29: warning: function 'btf_seq_show' might be a candidate for 'gnu_printf' format attribute

From: kernel test robot
Date: Thu Nov 11 2021 - 21:04:15 EST


Hi Alan,

FYI, the error/warning still remains.

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 5833291ab6de9c3e2374336b51c814e515e8f3a5
commit: 31d0bc81637d8d974a6dad9827b765b4b70c89d7 bpf: Move to generic BTF show support, apply it to seq files/strings
date: 1 year, 1 month ago
config: nds32-buildonly-randconfig-r002-20210927 (attached as .config)
compiler: nds32le-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=31d0bc81637d8d974a6dad9827b765b4b70c89d7
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 31d0bc81637d8d974a6dad9827b765b4b70c89d7
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=nds32

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

kernel/bpf/btf.c: In function 'btf_seq_show':
>> kernel/bpf/btf.c:5346:29: warning: function 'btf_seq_show' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
5346 | seq_vprintf((struct seq_file *)show->target, fmt, args);
| ^~~~~~~~
kernel/bpf/btf.c: In function 'btf_snprintf_show':
>> kernel/bpf/btf.c:5383:9: warning: function 'btf_snprintf_show' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
5383 | len = vsnprintf(show->target, ssnprintf->len_left, fmt, args);
| ^~~


vim +5346 kernel/bpf/btf.c

5342
5343 static void btf_seq_show(struct btf_show *show, const char *fmt,
5344 va_list args)
5345 {
> 5346 seq_vprintf((struct seq_file *)show->target, fmt, args);
5347 }
5348
5349 static int btf_type_seq_show_flags(const struct btf *btf, u32 type_id,
5350 void *obj, struct seq_file *m, u64 flags)
5351 {
5352 struct btf_show sseq;
5353
5354 sseq.target = m;
5355 sseq.showfn = btf_seq_show;
5356 sseq.flags = flags;
5357
5358 btf_type_show(btf, type_id, obj, &sseq);
5359
5360 return sseq.state.status;
5361 }
5362
5363 void btf_type_seq_show(const struct btf *btf, u32 type_id, void *obj,
5364 struct seq_file *m)
5365 {
5366 (void) btf_type_seq_show_flags(btf, type_id, obj, m,
5367 BTF_SHOW_NONAME | BTF_SHOW_COMPACT |
5368 BTF_SHOW_ZERO | BTF_SHOW_UNSAFE);
5369 }
5370
5371 struct btf_show_snprintf {
5372 struct btf_show show;
5373 int len_left; /* space left in string */
5374 int len; /* length we would have written */
5375 };
5376
5377 static void btf_snprintf_show(struct btf_show *show, const char *fmt,
5378 va_list args)
5379 {
5380 struct btf_show_snprintf *ssnprintf = (struct btf_show_snprintf *)show;
5381 int len;
5382
> 5383 len = vsnprintf(show->target, ssnprintf->len_left, fmt, args);
5384
5385 if (len < 0) {
5386 ssnprintf->len_left = 0;
5387 ssnprintf->len = len;
5388 } else if (len > ssnprintf->len_left) {
5389 /* no space, drive on to get length we would have written */
5390 ssnprintf->len_left = 0;
5391 ssnprintf->len += len;
5392 } else {
5393 ssnprintf->len_left -= len;
5394 ssnprintf->len += len;
5395 show->target += len;
5396 }
5397 }
5398

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip