From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9F4C9C25B78 for ; Tue, 28 May 2024 13:16:43 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id F17D36B0089; Tue, 28 May 2024 09:16:42 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id EC79C6B008A; Tue, 28 May 2024 09:16:42 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D8F186B008C; Tue, 28 May 2024 09:16:42 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id B811F6B0089 for ; Tue, 28 May 2024 09:16:42 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 71F0F1C0B96 for ; Tue, 28 May 2024 13:16:42 +0000 (UTC) X-FDA: 82167854244.21.7EA0B00 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.14]) by imf17.hostedemail.com (Postfix) with ESMTP id 4B1AA40020 for ; Tue, 28 May 2024 13:16:39 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=WXtaRHt9; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf17.hostedemail.com: domain of lkp@intel.com designates 192.198.163.14 as permitted sender) smtp.mailfrom=lkp@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1716902199; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding:in-reply-to: references:dkim-signature; bh=ssJ30Ihn2or8mkusrVWuQzopjUWO+0+t2VnRpsAf2d8=; b=o2zdelTxGyMUBTBMiOJsC0EG5TLB7C71iJWyVfJN3e5+ADewesiNt/EI7zrxt9xzc90Em6 HleI3goNR6mfsAuewKsakg85kQKfrkPxinwuTipy7BXB1dWrRqPNL54gqi74x38YyVfN7t x3+iWjav7jMtx8yBGFr2ZfvX03YMQBw= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1716902199; a=rsa-sha256; cv=none; b=QJGiZx+pAY+LsDsBx9rbDc2XAQy/Cf6c22t1uk6dU23N//OBHBBSwx6F87uWl4rjF5NU2O d+RzwFvVYtNw5O8VJa1t1SDwQRNYZVoqvpXMPNAsh8n9+UogHUfJTOHUO5yBRzK5Wwt6hN NnyRdi/ai6h3BoOSzO4IYR8bwxDutVE= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=WXtaRHt9; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf17.hostedemail.com: domain of lkp@intel.com designates 192.198.163.14 as permitted sender) smtp.mailfrom=lkp@intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1716902199; x=1748438199; h=date:from:to:cc:subject:message-id:mime-version; bh=SHNtEGO43XApTJHbUKN/hYx9DOHyaGbvDnGO5lSPBeg=; b=WXtaRHt9fO/Gq4pYxUVvkCgQFa1a880MHz/UOp/sPx+/8j/4K+OJ11KD JEo4uv+yQt97gwwM3/DAcYcTEHEojyUFu9zo+T4eiaaUFh7n2lLTb+/Em QwfB0z5xnQ9w/cAFZfn1icTxfT9eKWVaopgAnTspSkfjmstqu/UI14x6w lvsjC2V0jv9TM+RaeE1ezxhAZfQFjTB2AhJQ5eH/ifyHFbXpcxi2UA1np haaaeK0Nd543rNvg8pr3LZ+PmqQvOv70GwAR3w1v2h8cc6obAYbryqHYi XCuvGYROYU1B5ODWAdMDCpTKerHmMK6k+3CWhlsTMLQsdwaxiL/nPbGHO A==; X-CSE-ConnectionGUID: GZcOtZMCQwS63Gj/lVwJFw== X-CSE-MsgGUID: ZbjGkzJXQbqTeY6wDUov/Q== X-IronPort-AV: E=McAfee;i="6600,9927,11085"; a="13465606" X-IronPort-AV: E=Sophos;i="6.08,195,1712646000"; d="scan'208";a="13465606" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmvoesa108.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 May 2024 06:16:37 -0700 X-CSE-ConnectionGUID: +lLuGA3GTni6Yyj9ORgBhQ== X-CSE-MsgGUID: 84WA2KV+T6Gp/cpTbMdx2g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,195,1712646000"; d="scan'208";a="66279041" Received: from unknown (HELO 0610945e7d16) ([10.239.97.151]) by fmviesa001.fm.intel.com with ESMTP; 28 May 2024 06:16:35 -0700 Received: from kbuild by 0610945e7d16 with local (Exim 4.96) (envelope-from ) id 1sBwgr-000CDL-0e; Tue, 28 May 2024 13:16:33 +0000 Date: Tue, 28 May 2024 21:15:46 +0800 From: kernel test robot To: Filipe Manana Cc: oe-kbuild-all@lists.linux.dev, Linux Memory Management List , David Sterba , Johannes Thumshirn Subject: [linux-next:master 1478/2075] fs/btrfs/fiemap.c:822:26: warning: 'last_extent_end' may be used uninitialized Message-ID: <202405282148.jaF0FLhu-lkp@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Stat-Signature: h59toxgm7idy6y9yqioankwxnzy74sxw X-Rspamd-Queue-Id: 4B1AA40020 X-Rspam-User: X-Rspamd-Server: rspam01 X-HE-Tag: 1716902199-62778 X-HE-Meta: U2FsdGVkX19aSJDGJGfAx6hM0oZZ5NtcqcTRaqRkH86cqUUVXa5/Cdr6Jb+d1uawLZZjib9GpWgP2NLbnVPMyWfWGxDldBTquoxsqquLn1Em+fEsNJuh7gbzF+l1j0ZB8CrkBD43hChREclDTTAAyUQzR5NdV+X7cY8hi28yVg47JLvofwqNYV4aFYG/6i36+7FnnI9sV42Nv19JvOYjzCGjol3ay7T/B5fvJptY4SlusS28R6jIS0IOcht5n68n0wJSCNy5Oz5IM4nlSRlYCkVqa3HRx5y4ikHt3L68DOKHDxI9ShGfwIpCwBYID+sNdjGnD80Sn2MEjoaG/oECwoGQywMyrP02iydQpd/VjfUElioPE5yTsk5JUVHjsCtc6NWS2kg2SB5ijx48jxMxQE3FkiuvRVre2AUU4uEf4Gzu1DnGo3xH31fS77feGVd1NDmyWS3f3FctDXa5J85JsjZ9205/xy0ly7OcHx1VhFT9S3ZZ7KI3O5nXrUhDvHgPJpUbMJsEycgE3Hy4AHQc3MrsLpH3owQMoyNYclAl013maI9bUnUBINoebJnArR0lNaFrX8EE40qjiLpvB5mti9swgUpCHauGHMULftrvMi5E9fGlVq7NCHwoDchwSS4M3GaDHeAY5S9rKeFpdPf7yR9ZYoTmBMQGB7AFziT9hSBV3PdE2N6z86oiuh+y1J4csVr2G1UyAx1L7ZJKj5gqPTzYw1jJQq1Ewcgbqw35LpsbB2cygDNMdsG2v4bDE/FJCDDWEmkFodbkJe3Ctqio57WEN0s3JYRMT5sNKvXUB7+zjfNONX4+QiNeH1uMVKg7e8kwMy+wQOKK0CeuVPTp+cQJcd+HqkpmsS0SsJTVYZAjWS7eShlA0WjM74TkHCFm5JAej57gYBxSC1OfDTMEGgEQrSkXJX0SC5WkKYbTFbNd/jnEEpkpz/sSbm9Lia0Q81aHSVivHX7Utv8WysH TgsiRH1R M7PuuAWwwMRtaNvo1TGXSAgAiq3SYuTNBWBlVkMI3W7FDHPEQ2XCRG6k6TdrMWl4C3ekv7+X6px0DowWbHdfieu0025kWvW9N90rC6OjYGiaE8F/V9dUwm/g6C0aa6I9Tb7o7OXE3pbBKjzFCsnYIOTjUhW8MgN9hwvjekyHJNoeBdMXdOZkaDbnaCCKo//cYNRnvLGL9nAobPPgkBZmvarCPOieZh2Ii8cAkkKx/kgP+C0/bjeetN+F23Phs7DU4Py0nJP4T963Oyf4f0SWNcMDOAaLdnz05Ot/Y37am5lFrp8yD/53Z/TzXh3VtjZgndggUIMrzvD0ldR5yAic+U8+x2dW/OS+AGVcYyxOKX5odmJFfh180xqxQFajsBxkl5sadX1FLv1aIO6hSYI0t1KbyXpK/fctQ7lM+ X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 6dc544b66971c7f9909ff038b62149105272d26a commit: 827308f8ead0e75a04ee3a5c2f47b84c67decfb2 [1478/2075] btrfs: move fiemap code into its own file config: mips-buildonly-randconfig-r002-20221001 (https://download.01.org/0day-ci/archive/20240528/202405282148.jaF0FLhu-lkp@intel.com/config) compiler: mips64-linux-gcc (GCC) 13.2.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240528/202405282148.jaF0FLhu-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 | Closes: https://lore.kernel.org/oe-kbuild-all/202405282148.jaF0FLhu-lkp@intel.com/ Note: it may well be a FALSE warning. FWIW you are at least aware of it now. http://gcc.gnu.org/wiki/Better_Uninitialized_Warnings All warnings (new ones prefixed by >>): fs/btrfs/fiemap.c: In function 'extent_fiemap': >> fs/btrfs/fiemap.c:822:26: warning: 'last_extent_end' may be used uninitialized [-Wmaybe-uninitialized] 822 | if (cache.cached && cache.offset + cache.len >= last_extent_end) { | ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/btrfs/fiemap.c:640:13: note: 'last_extent_end' was declared here 640 | u64 last_extent_end; | ^~~~~~~~~~~~~~~ vim +/last_extent_end +822 fs/btrfs/fiemap.c 629 630 static int extent_fiemap(struct btrfs_inode *inode, 631 struct fiemap_extent_info *fieinfo, 632 u64 start, u64 len) 633 { 634 const u64 ino = btrfs_ino(inode); 635 struct extent_state *cached_state = NULL; 636 struct extent_state *delalloc_cached_state = NULL; 637 struct btrfs_path *path; 638 struct fiemap_cache cache = { 0 }; 639 struct btrfs_backref_share_check_ctx *backref_ctx; 640 u64 last_extent_end; 641 u64 prev_extent_end; 642 u64 range_start; 643 u64 range_end; 644 const u64 sectorsize = inode->root->fs_info->sectorsize; 645 bool stopped = false; 646 int ret; 647 648 cache.entries_size = PAGE_SIZE / sizeof(struct btrfs_fiemap_entry); 649 cache.entries = kmalloc_array(cache.entries_size, 650 sizeof(struct btrfs_fiemap_entry), 651 GFP_KERNEL); 652 backref_ctx = btrfs_alloc_backref_share_check_ctx(); 653 path = btrfs_alloc_path(); 654 if (!cache.entries || !backref_ctx || !path) { 655 ret = -ENOMEM; 656 goto out; 657 } 658 659 restart: 660 range_start = round_down(start, sectorsize); 661 range_end = round_up(start + len, sectorsize); 662 prev_extent_end = range_start; 663 664 lock_extent(&inode->io_tree, range_start, range_end, &cached_state); 665 666 ret = fiemap_find_last_extent_offset(inode, path, &last_extent_end); 667 if (ret < 0) 668 goto out_unlock; 669 btrfs_release_path(path); 670 671 path->reada = READA_FORWARD; 672 ret = fiemap_search_slot(inode, path, range_start); 673 if (ret < 0) { 674 goto out_unlock; 675 } else if (ret > 0) { 676 /* 677 * No file extent item found, but we may have delalloc between 678 * the current offset and i_size. So check for that. 679 */ 680 ret = 0; 681 goto check_eof_delalloc; 682 } 683 684 while (prev_extent_end < range_end) { 685 struct extent_buffer *leaf = path->nodes[0]; 686 struct btrfs_file_extent_item *ei; 687 struct btrfs_key key; 688 u64 extent_end; 689 u64 extent_len; 690 u64 extent_offset = 0; 691 u64 extent_gen; 692 u64 disk_bytenr = 0; 693 u64 flags = 0; 694 int extent_type; 695 u8 compression; 696 697 btrfs_item_key_to_cpu(leaf, &key, path->slots[0]); 698 if (key.objectid != ino || key.type != BTRFS_EXTENT_DATA_KEY) 699 break; 700 701 extent_end = btrfs_file_extent_end(path); 702 703 /* 704 * The first iteration can leave us at an extent item that ends 705 * before our range's start. Move to the next item. 706 */ 707 if (extent_end <= range_start) 708 goto next_item; 709 710 backref_ctx->curr_leaf_bytenr = leaf->start; 711 712 /* We have in implicit hole (NO_HOLES feature enabled). */ 713 if (prev_extent_end < key.offset) { 714 const u64 hole_end = min(key.offset, range_end) - 1; 715 716 ret = fiemap_process_hole(inode, fieinfo, &cache, 717 &delalloc_cached_state, 718 backref_ctx, 0, 0, 0, 719 prev_extent_end, hole_end); 720 if (ret < 0) { 721 goto out_unlock; 722 } else if (ret > 0) { 723 /* fiemap_fill_next_extent() told us to stop. */ 724 stopped = true; 725 break; 726 } 727 728 /* We've reached the end of the fiemap range, stop. */ 729 if (key.offset >= range_end) { 730 stopped = true; 731 break; 732 } 733 } 734 735 extent_len = extent_end - key.offset; 736 ei = btrfs_item_ptr(leaf, path->slots[0], 737 struct btrfs_file_extent_item); 738 compression = btrfs_file_extent_compression(leaf, ei); 739 extent_type = btrfs_file_extent_type(leaf, ei); 740 extent_gen = btrfs_file_extent_generation(leaf, ei); 741 742 if (extent_type != BTRFS_FILE_EXTENT_INLINE) { 743 disk_bytenr = btrfs_file_extent_disk_bytenr(leaf, ei); 744 if (compression == BTRFS_COMPRESS_NONE) 745 extent_offset = btrfs_file_extent_offset(leaf, ei); 746 } 747 748 if (compression != BTRFS_COMPRESS_NONE) 749 flags |= FIEMAP_EXTENT_ENCODED; 750 751 if (extent_type == BTRFS_FILE_EXTENT_INLINE) { 752 flags |= FIEMAP_EXTENT_DATA_INLINE; 753 flags |= FIEMAP_EXTENT_NOT_ALIGNED; 754 ret = emit_fiemap_extent(fieinfo, &cache, key.offset, 0, 755 extent_len, flags); 756 } else if (extent_type == BTRFS_FILE_EXTENT_PREALLOC) { 757 ret = fiemap_process_hole(inode, fieinfo, &cache, 758 &delalloc_cached_state, 759 backref_ctx, 760 disk_bytenr, extent_offset, 761 extent_gen, key.offset, 762 extent_end - 1); 763 } else if (disk_bytenr == 0) { 764 /* We have an explicit hole. */ 765 ret = fiemap_process_hole(inode, fieinfo, &cache, 766 &delalloc_cached_state, 767 backref_ctx, 0, 0, 0, 768 key.offset, extent_end - 1); 769 } else { 770 /* We have a regular extent. */ 771 if (fieinfo->fi_extents_max) { 772 ret = btrfs_is_data_extent_shared(inode, 773 disk_bytenr, 774 extent_gen, 775 backref_ctx); 776 if (ret < 0) 777 goto out_unlock; 778 else if (ret > 0) 779 flags |= FIEMAP_EXTENT_SHARED; 780 } 781 782 ret = emit_fiemap_extent(fieinfo, &cache, key.offset, 783 disk_bytenr + extent_offset, 784 extent_len, flags); 785 } 786 787 if (ret < 0) { 788 goto out_unlock; 789 } else if (ret > 0) { 790 /* emit_fiemap_extent() told us to stop. */ 791 stopped = true; 792 break; 793 } 794 795 prev_extent_end = extent_end; 796 next_item: 797 if (fatal_signal_pending(current)) { 798 ret = -EINTR; 799 goto out_unlock; 800 } 801 802 ret = fiemap_next_leaf_item(inode, path); 803 if (ret < 0) { 804 goto out_unlock; 805 } else if (ret > 0) { 806 /* No more file extent items for this inode. */ 807 break; 808 } 809 cond_resched(); 810 } 811 812 check_eof_delalloc: 813 if (!stopped && prev_extent_end < range_end) { 814 ret = fiemap_process_hole(inode, fieinfo, &cache, 815 &delalloc_cached_state, backref_ctx, 816 0, 0, 0, prev_extent_end, range_end - 1); 817 if (ret < 0) 818 goto out_unlock; 819 prev_extent_end = range_end; 820 } 821 > 822 if (cache.cached && cache.offset + cache.len >= last_extent_end) { 823 const u64 i_size = i_size_read(&inode->vfs_inode); 824 825 if (prev_extent_end < i_size) { 826 u64 delalloc_start; 827 u64 delalloc_end; 828 bool delalloc; 829 830 delalloc = btrfs_find_delalloc_in_range(inode, 831 prev_extent_end, 832 i_size - 1, 833 &delalloc_cached_state, 834 &delalloc_start, 835 &delalloc_end); 836 if (!delalloc) 837 cache.flags |= FIEMAP_EXTENT_LAST; 838 } else { 839 cache.flags |= FIEMAP_EXTENT_LAST; 840 } 841 } 842 843 out_unlock: 844 unlock_extent(&inode->io_tree, range_start, range_end, &cached_state); 845 846 if (ret == BTRFS_FIEMAP_FLUSH_CACHE) { 847 btrfs_release_path(path); 848 ret = flush_fiemap_cache(fieinfo, &cache); 849 if (ret) 850 goto out; 851 len -= cache.next_search_offset - start; 852 start = cache.next_search_offset; 853 goto restart; 854 } else if (ret < 0) { 855 goto out; 856 } 857 858 /* 859 * Must free the path before emitting to the fiemap buffer because we 860 * may have a non-cloned leaf and if the fiemap buffer is memory mapped 861 * to a file, a write into it (through btrfs_page_mkwrite()) may trigger 862 * waiting for an ordered extent that in order to complete needs to 863 * modify that leaf, therefore leading to a deadlock. 864 */ 865 btrfs_free_path(path); 866 path = NULL; 867 868 ret = flush_fiemap_cache(fieinfo, &cache); 869 if (ret) 870 goto out; 871 872 ret = emit_last_fiemap_cache(fieinfo, &cache); 873 out: 874 free_extent_state(delalloc_cached_state); 875 kfree(cache.entries); 876 btrfs_free_backref_share_ctx(backref_ctx); 877 btrfs_free_path(path); 878 return ret; 879 } 880 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki