From: kernel test robot <lkp@intel.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: [arnd-playground:randconfig-7.3-next 467/673] drivers/target/target_core_xcopy.c:657:13: warning: stack frame size (1104) exceeds limit (960) in 'target_xcopy_do_work'
Date: Fri, 25 Sep 2026 19:42:43 +0200 [thread overview]
Message-ID: <202609251958.uQdPiFrU-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git randconfig-7.3-next
head: 0a1affa74ef2f2c5c5ee74fc604e47a1aefdd286
commit: acb21639a56634b326a26f5c179ba3f94ab5b6c2 [467/673] fixup! testing: allow building more quickly with W=12
config: s390-randconfig-2001-20260925 (https://download.01.org/0day-ci/archive/20260925/202609251958.uQdPiFrU-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 57e112ccb2a509c0e1d36963b187fccdd59566de)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260925/202609251958.uQdPiFrU-lkp@intel.com/reproduce)
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@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609251958.uQdPiFrU-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/target/target_core_xcopy.c:657:13: warning: stack frame size (1104) exceeds limit (960) in 'target_xcopy_do_work' [-Wframe-larger-than]
657 | static void target_xcopy_do_work(struct work_struct *work)
| ^
1 warning generated.
--
>> lib/zstd/common/entropy_common.c:235:8: warning: stack frame size (992) exceeds limit (960) in 'HUF_readStats' [-Wframe-larger-than]
235 | size_t HUF_readStats(BYTE* huffWeight, size_t hwSize, U32* rankStats,
| ^
1 warning generated.
vim +/target_xcopy_do_work +657 drivers/target/target_core_xcopy.c
cbf031f425fd0b Nicholas Bellinger 2013-08-20 656
cbf031f425fd0b Nicholas Bellinger 2013-08-20 @657 static void target_xcopy_do_work(struct work_struct *work)
cbf031f425fd0b Nicholas Bellinger 2013-08-20 658 {
cbf031f425fd0b Nicholas Bellinger 2013-08-20 659 struct xcopy_op *xop = container_of(work, struct xcopy_op, xop_work);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 660 struct se_cmd *ec_cmd = xop->xop_se_cmd;
d877d7275be34a Bart Van Assche 2017-05-23 661 struct se_device *src_dev, *dst_dev;
d877d7275be34a Bart Van Assche 2017-05-23 662 sector_t src_lba, dst_lba, end_lba;
689d94ec208cfd Anastasia Kovaleva 2022-11-14 663 unsigned long long max_bytes, max_bytes_src, max_bytes_dst, max_blocks;
d877d7275be34a Bart Van Assche 2017-05-23 664 int rc = 0;
689d94ec208cfd Anastasia Kovaleva 2022-11-14 665 unsigned short nolb;
689d94ec208cfd Anastasia Kovaleva 2022-11-14 666 unsigned int copied_bytes = 0;
0394b5048efd73 Sergey Samoylenko 2021-08-03 667 sense_reason_t sense_rc;
d877d7275be34a Bart Van Assche 2017-05-23 668
0394b5048efd73 Sergey Samoylenko 2021-08-03 669 sense_rc = target_parse_xcopy_cmd(xop);
0394b5048efd73 Sergey Samoylenko 2021-08-03 670 if (sense_rc != TCM_NO_SENSE)
d877d7275be34a Bart Van Assche 2017-05-23 671 goto err_free;
cbf031f425fd0b Nicholas Bellinger 2013-08-20 672
0394b5048efd73 Sergey Samoylenko 2021-08-03 673 if (WARN_ON_ONCE(!xop->src_dev) || WARN_ON_ONCE(!xop->dst_dev)) {
0394b5048efd73 Sergey Samoylenko 2021-08-03 674 sense_rc = TCM_INVALID_PARAMETER_LIST;
d877d7275be34a Bart Van Assche 2017-05-23 675 goto err_free;
0394b5048efd73 Sergey Samoylenko 2021-08-03 676 }
d877d7275be34a Bart Van Assche 2017-05-23 677
d877d7275be34a Bart Van Assche 2017-05-23 678 src_dev = xop->src_dev;
d877d7275be34a Bart Van Assche 2017-05-23 679 dst_dev = xop->dst_dev;
d877d7275be34a Bart Van Assche 2017-05-23 680 src_lba = xop->src_lba;
d877d7275be34a Bart Van Assche 2017-05-23 681 dst_lba = xop->dst_lba;
d877d7275be34a Bart Van Assche 2017-05-23 682 nolb = xop->nolb;
cbf031f425fd0b Nicholas Bellinger 2013-08-20 683 end_lba = src_lba + nolb;
cbf031f425fd0b Nicholas Bellinger 2013-08-20 684 /*
689d94ec208cfd Anastasia Kovaleva 2022-11-14 685 * Break up XCOPY I/O into hw_max_sectors * hw_block_size sized
689d94ec208cfd Anastasia Kovaleva 2022-11-14 686 * I/O based on the smallest max_bytes between src_dev + dst_dev
cbf031f425fd0b Nicholas Bellinger 2013-08-20 687 */
689d94ec208cfd Anastasia Kovaleva 2022-11-14 688 max_bytes_src = (unsigned long long) src_dev->dev_attrib.hw_max_sectors *
689d94ec208cfd Anastasia Kovaleva 2022-11-14 689 src_dev->dev_attrib.hw_block_size;
689d94ec208cfd Anastasia Kovaleva 2022-11-14 690 max_bytes_dst = (unsigned long long) dst_dev->dev_attrib.hw_max_sectors *
689d94ec208cfd Anastasia Kovaleva 2022-11-14 691 dst_dev->dev_attrib.hw_block_size;
cbf031f425fd0b Nicholas Bellinger 2013-08-20 692
689d94ec208cfd Anastasia Kovaleva 2022-11-14 693 max_bytes = min_t(u64, max_bytes_src, max_bytes_dst);
689d94ec208cfd Anastasia Kovaleva 2022-11-14 694 max_bytes = min_t(u64, max_bytes, XCOPY_MAX_BYTES);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 695
689d94ec208cfd Anastasia Kovaleva 2022-11-14 696 /*
689d94ec208cfd Anastasia Kovaleva 2022-11-14 697 * Using shift instead of the division because otherwise GCC
689d94ec208cfd Anastasia Kovaleva 2022-11-14 698 * generates __udivdi3 that is missing on i386
689d94ec208cfd Anastasia Kovaleva 2022-11-14 699 */
689d94ec208cfd Anastasia Kovaleva 2022-11-14 700 max_blocks = max_bytes >> ilog2(src_dev->dev_attrib.block_size);
689d94ec208cfd Anastasia Kovaleva 2022-11-14 701
689d94ec208cfd Anastasia Kovaleva 2022-11-14 702 pr_debug("%s: nolb: %u, max_blocks: %llu end_lba: %llu\n", __func__,
689d94ec208cfd Anastasia Kovaleva 2022-11-14 703 nolb, max_blocks, (unsigned long long)end_lba);
689d94ec208cfd Anastasia Kovaleva 2022-11-14 704 pr_debug("%s: Starting src_lba: %llu, dst_lba: %llu\n", __func__,
cbf031f425fd0b Nicholas Bellinger 2013-08-20 705 (unsigned long long)src_lba, (unsigned long long)dst_lba);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 706
689d94ec208cfd Anastasia Kovaleva 2022-11-14 707 while (nolb) {
689d94ec208cfd Anastasia Kovaleva 2022-11-14 708 u32 cur_bytes = min_t(u64, max_bytes, nolb * src_dev->dev_attrib.block_size);
689d94ec208cfd Anastasia Kovaleva 2022-11-14 709 unsigned short cur_nolb = cur_bytes / src_dev->dev_attrib.block_size;
0ad08996da05b6 David Disseldorp 2020-03-27 710
0ad08996da05b6 David Disseldorp 2020-03-27 711 if (cur_bytes != xop->xop_data_bytes) {
0ad08996da05b6 David Disseldorp 2020-03-27 712 /*
0ad08996da05b6 David Disseldorp 2020-03-27 713 * (Re)allocate a buffer large enough to hold the XCOPY
0ad08996da05b6 David Disseldorp 2020-03-27 714 * I/O size, which can be reused each read / write loop.
0ad08996da05b6 David Disseldorp 2020-03-27 715 */
0ad08996da05b6 David Disseldorp 2020-03-27 716 target_free_sgl(xop->xop_data_sg, xop->xop_data_nents);
0ad08996da05b6 David Disseldorp 2020-03-27 717 rc = target_alloc_sgl(&xop->xop_data_sg,
0ad08996da05b6 David Disseldorp 2020-03-27 718 &xop->xop_data_nents,
0ad08996da05b6 David Disseldorp 2020-03-27 719 cur_bytes,
0ad08996da05b6 David Disseldorp 2020-03-27 720 false, false);
0ad08996da05b6 David Disseldorp 2020-03-27 721 if (rc < 0)
0ad08996da05b6 David Disseldorp 2020-03-27 722 goto out;
0ad08996da05b6 David Disseldorp 2020-03-27 723 xop->xop_data_bytes = cur_bytes;
0ad08996da05b6 David Disseldorp 2020-03-27 724 }
cbf031f425fd0b Nicholas Bellinger 2013-08-20 725
689d94ec208cfd Anastasia Kovaleva 2022-11-14 726 pr_debug("%s: Calling read src_dev: %p src_lba: %llu, cur_nolb: %hu\n",
689d94ec208cfd Anastasia Kovaleva 2022-11-14 727 __func__, src_dev, (unsigned long long)src_lba, cur_nolb);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 728
689d94ec208cfd Anastasia Kovaleva 2022-11-14 729 rc = target_xcopy_read_source(ec_cmd, xop, src_dev, src_lba, cur_bytes);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 730 if (rc < 0)
cbf031f425fd0b Nicholas Bellinger 2013-08-20 731 goto out;
cbf031f425fd0b Nicholas Bellinger 2013-08-20 732
689d94ec208cfd Anastasia Kovaleva 2022-11-14 733 src_lba += cur_bytes / src_dev->dev_attrib.block_size;
689d94ec208cfd Anastasia Kovaleva 2022-11-14 734 pr_debug("%s: Incremented READ src_lba to %llu\n", __func__,
cbf031f425fd0b Nicholas Bellinger 2013-08-20 735 (unsigned long long)src_lba);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 736
689d94ec208cfd Anastasia Kovaleva 2022-11-14 737 pr_debug("%s: Calling write dst_dev: %p dst_lba: %llu, cur_nolb: %u\n",
689d94ec208cfd Anastasia Kovaleva 2022-11-14 738 __func__, dst_dev, (unsigned long long)dst_lba, cur_nolb);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 739
cbf031f425fd0b Nicholas Bellinger 2013-08-20 740 rc = target_xcopy_write_destination(ec_cmd, xop, dst_dev,
689d94ec208cfd Anastasia Kovaleva 2022-11-14 741 dst_lba, cur_bytes);
b92fcfcb687de7 David Disseldorp 2020-03-27 742 if (rc < 0)
cbf031f425fd0b Nicholas Bellinger 2013-08-20 743 goto out;
cbf031f425fd0b Nicholas Bellinger 2013-08-20 744
689d94ec208cfd Anastasia Kovaleva 2022-11-14 745 dst_lba += cur_bytes / dst_dev->dev_attrib.block_size;
689d94ec208cfd Anastasia Kovaleva 2022-11-14 746 pr_debug("%s: Incremented WRITE dst_lba to %llu\n", __func__,
cbf031f425fd0b Nicholas Bellinger 2013-08-20 747 (unsigned long long)dst_lba);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 748
689d94ec208cfd Anastasia Kovaleva 2022-11-14 749 copied_bytes += cur_bytes;
689d94ec208cfd Anastasia Kovaleva 2022-11-14 750 nolb -= cur_bytes / src_dev->dev_attrib.block_size;
cbf031f425fd0b Nicholas Bellinger 2013-08-20 751 }
cbf031f425fd0b Nicholas Bellinger 2013-08-20 752
cbf031f425fd0b Nicholas Bellinger 2013-08-20 753 xcopy_pt_undepend_remotedev(xop);
0ad08996da05b6 David Disseldorp 2020-03-27 754 target_free_sgl(xop->xop_data_sg, xop->xop_data_nents);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 755 kfree(xop);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 756
689d94ec208cfd Anastasia Kovaleva 2022-11-14 757 pr_debug("%s: Final src_lba: %llu, dst_lba: %llu\n", __func__,
cbf031f425fd0b Nicholas Bellinger 2013-08-20 758 (unsigned long long)src_lba, (unsigned long long)dst_lba);
689d94ec208cfd Anastasia Kovaleva 2022-11-14 759 pr_debug("%s: Blocks copied: %u, Bytes Copied: %u\n", __func__,
689d94ec208cfd Anastasia Kovaleva 2022-11-14 760 copied_bytes / dst_dev->dev_attrib.block_size, copied_bytes);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 761
689d94ec208cfd Anastasia Kovaleva 2022-11-14 762 pr_debug("%s: Setting X-COPY GOOD status -> sending response\n", __func__);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 763 target_complete_cmd(ec_cmd, SAM_STAT_GOOD);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 764 return;
cbf031f425fd0b Nicholas Bellinger 2013-08-20 765
cbf031f425fd0b Nicholas Bellinger 2013-08-20 766 out:
0394b5048efd73 Sergey Samoylenko 2021-08-03 767 /*
0394b5048efd73 Sergey Samoylenko 2021-08-03 768 * The XCOPY command was aborted after some data was transferred.
0394b5048efd73 Sergey Samoylenko 2021-08-03 769 * Terminate command with CHECK CONDITION status, with the sense key
0394b5048efd73 Sergey Samoylenko 2021-08-03 770 * set to COPY ABORTED.
0394b5048efd73 Sergey Samoylenko 2021-08-03 771 */
0394b5048efd73 Sergey Samoylenko 2021-08-03 772 sense_rc = TCM_COPY_TARGET_DEVICE_NOT_REACHABLE;
cbf031f425fd0b Nicholas Bellinger 2013-08-20 773 xcopy_pt_undepend_remotedev(xop);
0ad08996da05b6 David Disseldorp 2020-03-27 774 target_free_sgl(xop->xop_data_sg, xop->xop_data_nents);
d877d7275be34a Bart Van Assche 2017-05-23 775
d877d7275be34a Bart Van Assche 2017-05-23 776 err_free:
cbf031f425fd0b Nicholas Bellinger 2013-08-20 777 kfree(xop);
689d94ec208cfd Anastasia Kovaleva 2022-11-14 778 pr_warn_ratelimited("%s: rc: %d, sense: %u, XCOPY operation failed\n",
689d94ec208cfd Anastasia Kovaleva 2022-11-14 779 __func__, rc, sense_rc);
0394b5048efd73 Sergey Samoylenko 2021-08-03 780 target_complete_cmd_with_sense(ec_cmd, SAM_STAT_CHECK_CONDITION, sense_rc);
cbf031f425fd0b Nicholas Bellinger 2013-08-20 781 }
cbf031f425fd0b Nicholas Bellinger 2013-08-20 782
:::::: The code at line 657 was first introduced by commit
:::::: cbf031f425fd0b30ff10ba83b612753189a6bbbf target: Add support for EXTENDED_COPY copy offload emulation
:::::: TO: Nicholas Bellinger <nab@daterainc.com>
:::::: CC: Nicholas Bellinger <nab@linux-iscsi.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-09-25 17:42 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202609251958.uQdPiFrU-lkp@intel.com \
--to=lkp@intel.com \
--cc=arnd@arndb.de \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.