kernel/trace/blktrace.c:664 blk_trace_setup() error: strcpy() 'buts2.name' too large for 'buts.name' (64 vs 32)
From: Dan Carpenter
Date: Mon Feb 02 2026 - 04:16:09 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 18f7fcd5e69a04df57b563360b88be72471d6b62
commit: 113cbd62824afdf62d2f3f092809cf37cc7f1dd8 blktrace: pass blk_user_trace2 to setup functions
date: 3 months ago
config: s390-randconfig-r073-20260202 (https://download.01.org/0day-ci/archive/20260202/202602020718.GUEIRyG9-lkp@xxxxxxxxx/config)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 9b8addffa70cee5b2acc5454712d9cf78ce45710)
smatch version: v0.5.0-8994-gd50c5a4c
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
| Closes: https://lore.kernel.org/r/202602020718.GUEIRyG9-lkp@xxxxxxxxx/
smatch warnings:
kernel/trace/blktrace.c:664 blk_trace_setup() error: strcpy() 'buts2.name' too large for 'buts.name' (64 vs 32)
vim +664 kernel/trace/blktrace.c
b769a2f409e7a3 kernel/trace/blktrace.c Ming Lei 2024-11-28 631 int blk_trace_setup(struct request_queue *q, char *name, dev_t dev,
b769a2f409e7a3 kernel/trace/blktrace.c Ming Lei 2024-11-28 632 struct block_device *bdev,
b769a2f409e7a3 kernel/trace/blktrace.c Ming Lei 2024-11-28 633 char __user *arg)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 634 {
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 635 struct blk_user_trace_setup2 buts2;
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 636 struct blk_user_trace_setup buts;
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 637 struct blk_trace *bt;
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 638 int ret;
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 639
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 640 ret = copy_from_user(&buts, arg, sizeof(buts));
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 641 if (ret)
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 642 return -EFAULT;
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 643
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 644 if (!buts.buf_size || !buts.buf_nr)
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 645 return -EINVAL;
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 646
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 647 buts2 = (struct blk_user_trace_setup2) {
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 648 .act_mask = buts.act_mask,
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 649 .buf_size = buts.buf_size,
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 650 .buf_nr = buts.buf_nr,
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 651 .start_lba = buts.start_lba,
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 652 .end_lba = buts.end_lba,
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 653 .pid = buts.pid,
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 654 };
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 655
b769a2f409e7a3 kernel/trace/blktrace.c Ming Lei 2024-11-28 656 mutex_lock(&q->debugfs_mutex);
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 657 bt = blk_trace_setup_prepare(q, name, dev, buts.buf_size, buts.buf_nr,
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 658 bdev);
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 659 if (IS_ERR(bt)) {
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 660 mutex_unlock(&q->debugfs_mutex);
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 661 return PTR_ERR(bt);
42da88a724d8a3 kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 662 }
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 663 blk_trace_setup_finalize(q, name, 1, bt, &buts2);
113cbd62824afd kernel/trace/blktrace.c Johannes Thumshirn 2025-10-22 @664 strcpy(buts.name, buts2.name);
BLKTRACE_BDEV_SIZE2 is 64. BLKTRACE_BDEV_SIZE is 32. The kbuild bot
doesn't have cross function analsys, but in linux-next the callers
only pass BLKTRACE_BDEV_SIZE size strings.
b769a2f409e7a3 kernel/trace/blktrace.c Ming Lei 2024-11-28 665 mutex_unlock(&q->debugfs_mutex);
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 666
9a8c28c8311e30 kernel/trace/blktrace.c Dmitry Monakhov 2010-02-27 667 if (copy_to_user(arg, &buts, sizeof(buts))) {
b769a2f409e7a3 kernel/trace/blktrace.c Ming Lei 2024-11-28 668 blk_trace_remove(q);
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 669 return -EFAULT;
9a8c28c8311e30 kernel/trace/blktrace.c Dmitry Monakhov 2010-02-27 670 }
171044d449611c block/blktrace.c Arnd Bergmann 2007-10-09 671 return 0;
1f2cac107c591c kernel/trace/blktrace.c Jens Axboe 2017-11-05 672 }
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki