tree:
https://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git
linux-5.4.y-rt
head: 5fbf1e70f11dba64cc05c9d85120a3aa7c67a4a2
commit: c9a71d20bad00e88ed426d5c14665d48443f7314 [28/325] printk: add ring buffer and
kthread
config: i386-randconfig-m021-20200810 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
smatch warnings:
kernel/printk/printk.c:3032 printk_kthread_func() warn: possible memory leak of
'buf'
kernel/printk/printk.c:3032 printk_kthread_func() warn: possible memory leak of
'ext_text'
kernel/printk/printk.c:3032 printk_kthread_func() warn: possible memory leak of
'text'
kernel/printk/printk.c:3061 printk_kthread_func() warn: ignoring unreachable code.
vim +/buf +3032 kernel/printk/printk.c
3015
3016 static int printk_kthread_func(void *data)
3017 {
3018 struct prb_iterator iter;
3019 struct printk_log *msg;
3020 size_t ext_len;
3021 char *ext_text;
3022 u64 master_seq;
3023 size_t len;
3024 char *text;
3025 char *buf;
3026 int ret;
3027
3028 ext_text = kmalloc(CONSOLE_EXT_LOG_MAX, GFP_KERNEL);
3029 text = kmalloc(PRINTK_SPRINT_MAX, GFP_KERNEL);
3030 buf = kmalloc(PRINTK_RECORD_MAX, GFP_KERNEL);
3031 if (!ext_text || !text || !buf)
3032 return -1;
3033
3034 prb_iter_init(&iter, &printk_rb, NULL);
3035
3036 /* the printk kthread never exits */
3037 for (;;) {
3038 ret = prb_iter_wait_next(&iter, buf,
3039 PRINTK_RECORD_MAX, &master_seq);
3040 if (ret == -ERESTARTSYS) {
3041 continue;
3042 } else if (ret < 0) {
3043 /* iterator invalid, start over */
3044 prb_iter_init(&iter, &printk_rb, NULL);
3045 continue;
3046 }
3047
3048 msg = (struct printk_log *)buf;
3049 format_text(msg, master_seq, ext_text, &ext_len, text,
3050 &len, printk_time);
3051
3052 console_lock();
3053 if (len > 0 || ext_len > 0) {
3054 call_console_drivers(ext_text, ext_len, text, len);
3055 boot_delay_msec(msg->level);
3056 printk_delay();
3057 }
3058 console_unlock();
3059 }
3060
3061 kfree(ext_text);
3062 kfree(text);
3063 kfree(buf);
3064
3065 return 0;
3066 }
3067
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org