tree: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-5.15.y head: fd6d66840b4269da4e90e1ea807ae3197433bc66 commit: 33db9912ff7c491f839c89a08e98f755aa09598f [3255/9999] ubsan: remove CONFIG_UBSAN_OBJECT_SIZE config: powerpc-randconfig-r025-20221215 compiler: clang version 16.0.0 (https://github.com/llvm/llvm-project 98b13979fb05f3ed288a900deb843e7b27589e58) 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 # install powerpc cross compiling tool for clang build # apt-get install binutils-powerpc-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git/commit/?id=33db9912ff7c491f839c89a08e98f755aa09598f git remote add linux-stable-rc https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git git fetch --no-tags linux-stable-rc linux-5.15.y git checkout 33db9912ff7c491f839c89a08e98f755aa09598f # save the config file mkdir build_dir && cp config build_dir/.config COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=powerpc SHELL=/bin/bash fs/ntfs/ If you fix the issue, kindly add following tag where applicable | Reported-by: kernel test robot All warnings (new ones prefixed by >>): >> fs/ntfs/file.c:1724:16: warning: stack frame size (1040) exceeds limit (1024) in 'ntfs_perform_write' [-Wframe-larger-than] static ssize_t ntfs_perform_write(struct file *file, struct iov_iter *i, ^ 822/1040 (79.04%) spills, 218/1040 (20.96%) variables 1 warning generated. vim +/ntfs_perform_write +1724 fs/ntfs/file.c 9014da7525dffe Marco Stornelli 2012-12-15 1717 98b270362bb9ea Anton Altaparmakov 2005-10-11 1718 /** a632f559304130 Anton Altaparmakov 2015-03-11 1719 * ntfs_perform_write - perform buffered write to a file a632f559304130 Anton Altaparmakov 2015-03-11 1720 * @file: file to write to a632f559304130 Anton Altaparmakov 2015-03-11 1721 * @i: iov_iter with data to write a632f559304130 Anton Altaparmakov 2015-03-11 1722 * @pos: byte offset in file at which to begin writing to 98b270362bb9ea Anton Altaparmakov 2005-10-11 1723 */ a632f559304130 Anton Altaparmakov 2015-03-11 @1724 static ssize_t ntfs_perform_write(struct file *file, struct iov_iter *i, a632f559304130 Anton Altaparmakov 2015-03-11 1725 loff_t pos) 98b270362bb9ea Anton Altaparmakov 2005-10-11 1726 { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1727 struct address_space *mapping = file->f_mapping; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1728 struct inode *vi = mapping->host; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1729 ntfs_inode *ni = NTFS_I(vi); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1730 ntfs_volume *vol = ni->vol; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1731 struct page *pages[NTFS_MAX_PAGES_PER_CLUSTER]; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1732 struct page *cached_page = NULL; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1733 VCN last_vcn; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1734 LCN lcn; a632f559304130 Anton Altaparmakov 2015-03-11 1735 size_t bytes; a632f559304130 Anton Altaparmakov 2015-03-11 1736 ssize_t status, written = 0; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1737 unsigned nr_pages; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1738 a632f559304130 Anton Altaparmakov 2015-03-11 1739 ntfs_debug("Entering for i_ino 0x%lx, attribute type 0x%x, pos " a632f559304130 Anton Altaparmakov 2015-03-11 1740 "0x%llx, count 0x%lx.", vi->i_ino, a632f559304130 Anton Altaparmakov 2015-03-11 1741 (unsigned)le32_to_cpu(ni->type), a632f559304130 Anton Altaparmakov 2015-03-11 1742 (unsigned long long)pos, a632f559304130 Anton Altaparmakov 2015-03-11 1743 (unsigned long)iov_iter_count(i)); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1744 /* 98b270362bb9ea Anton Altaparmakov 2005-10-11 1745 * If a previous ntfs_truncate() failed, repeat it and abort if it 98b270362bb9ea Anton Altaparmakov 2005-10-11 1746 * fails again. 98b270362bb9ea Anton Altaparmakov 2005-10-11 1747 */ 98b270362bb9ea Anton Altaparmakov 2005-10-11 1748 if (unlikely(NInoTruncateFailed(ni))) { a632f559304130 Anton Altaparmakov 2015-03-11 1749 int err; a632f559304130 Anton Altaparmakov 2015-03-11 1750 bd5fe6c5eb9c54 Christoph Hellwig 2011-06-24 1751 inode_dio_wait(vi); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1752 err = ntfs_truncate(vi); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1753 if (err || NInoTruncateFailed(ni)) { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1754 if (!err) 98b270362bb9ea Anton Altaparmakov 2005-10-11 1755 err = -EIO; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1756 ntfs_error(vol->sb, "Cannot perform write to inode " 98b270362bb9ea Anton Altaparmakov 2005-10-11 1757 "0x%lx, attribute type 0x%x, because " 98b270362bb9ea Anton Altaparmakov 2005-10-11 1758 "ntfs_truncate() failed (error code " 98b270362bb9ea Anton Altaparmakov 2005-10-11 1759 "%i).", vi->i_ino, 98b270362bb9ea Anton Altaparmakov 2005-10-11 1760 (unsigned)le32_to_cpu(ni->type), err); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1761 return err; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1762 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1763 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1764 /* 98b270362bb9ea Anton Altaparmakov 2005-10-11 1765 * Determine the number of pages per cluster for non-resident 98b270362bb9ea Anton Altaparmakov 2005-10-11 1766 * attributes. 98b270362bb9ea Anton Altaparmakov 2005-10-11 1767 */ 98b270362bb9ea Anton Altaparmakov 2005-10-11 1768 nr_pages = 1; 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1769 if (vol->cluster_size > PAGE_SIZE && NInoNonResident(ni)) 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1770 nr_pages = vol->cluster_size >> PAGE_SHIFT; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1771 last_vcn = -1; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1772 do { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1773 VCN vcn; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1774 pgoff_t idx, start_idx; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1775 unsigned ofs, do_pages, u; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1776 size_t copied; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1777 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1778 start_idx = idx = pos >> PAGE_SHIFT; 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1779 ofs = pos & ~PAGE_MASK; 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1780 bytes = PAGE_SIZE - ofs; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1781 do_pages = 1; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1782 if (nr_pages > 1) { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1783 vcn = pos >> vol->cluster_size_bits; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1784 if (vcn != last_vcn) { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1785 last_vcn = vcn; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1786 /* 98b270362bb9ea Anton Altaparmakov 2005-10-11 1787 * Get the lcn of the vcn the write is in. If 98b270362bb9ea Anton Altaparmakov 2005-10-11 1788 * it is a hole, need to lock down all pages in 98b270362bb9ea Anton Altaparmakov 2005-10-11 1789 * the cluster. 98b270362bb9ea Anton Altaparmakov 2005-10-11 1790 */ 98b270362bb9ea Anton Altaparmakov 2005-10-11 1791 down_read(&ni->runlist.lock); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1792 lcn = ntfs_attr_vcn_to_lcn_nolock(ni, pos >> c49c31115067bc Richard Knutsson 2006-09-30 1793 vol->cluster_size_bits, false); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1794 up_read(&ni->runlist.lock); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1795 if (unlikely(lcn < LCN_HOLE)) { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1796 if (lcn == LCN_ENOMEM) 98b270362bb9ea Anton Altaparmakov 2005-10-11 1797 status = -ENOMEM; a632f559304130 Anton Altaparmakov 2015-03-11 1798 else { a632f559304130 Anton Altaparmakov 2015-03-11 1799 status = -EIO; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1800 ntfs_error(vol->sb, "Cannot " 98b270362bb9ea Anton Altaparmakov 2005-10-11 1801 "perform write to " 98b270362bb9ea Anton Altaparmakov 2005-10-11 1802 "inode 0x%lx, " 98b270362bb9ea Anton Altaparmakov 2005-10-11 1803 "attribute type 0x%x, " 98b270362bb9ea Anton Altaparmakov 2005-10-11 1804 "because the attribute " 98b270362bb9ea Anton Altaparmakov 2005-10-11 1805 "is corrupt.", 98b270362bb9ea Anton Altaparmakov 2005-10-11 1806 vi->i_ino, (unsigned) 98b270362bb9ea Anton Altaparmakov 2005-10-11 1807 le32_to_cpu(ni->type)); a632f559304130 Anton Altaparmakov 2015-03-11 1808 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1809 break; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1810 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1811 if (lcn == LCN_HOLE) { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1812 start_idx = (pos & ~(s64) 98b270362bb9ea Anton Altaparmakov 2005-10-11 1813 vol->cluster_size_mask) 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1814 >> PAGE_SHIFT; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1815 bytes = vol->cluster_size - (pos & 98b270362bb9ea Anton Altaparmakov 2005-10-11 1816 vol->cluster_size_mask); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1817 do_pages = nr_pages; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1818 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1819 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1820 } a632f559304130 Anton Altaparmakov 2015-03-11 1821 if (bytes > iov_iter_count(i)) a632f559304130 Anton Altaparmakov 2015-03-11 1822 bytes = iov_iter_count(i); a632f559304130 Anton Altaparmakov 2015-03-11 1823 again: 98b270362bb9ea Anton Altaparmakov 2005-10-11 1824 /* 98b270362bb9ea Anton Altaparmakov 2005-10-11 1825 * Bring in the user page(s) that we will copy from _first_. 98b270362bb9ea Anton Altaparmakov 2005-10-11 1826 * Otherwise there is a nasty deadlock on copying from the same 98b270362bb9ea Anton Altaparmakov 2005-10-11 1827 * page(s) as we are writing to, without it/them being marked 98b270362bb9ea Anton Altaparmakov 2005-10-11 1828 * up-to-date. Note, at present there is nothing to stop the 98b270362bb9ea Anton Altaparmakov 2005-10-11 1829 * pages being swapped out between us bringing them into memory 98b270362bb9ea Anton Altaparmakov 2005-10-11 1830 * and doing the actual copying. 98b270362bb9ea Anton Altaparmakov 2005-10-11 1831 */ 4bce9f6ee8f84f Al Viro 2016-09-17 1832 if (unlikely(iov_iter_fault_in_readable(i, bytes))) { a632f559304130 Anton Altaparmakov 2015-03-11 1833 status = -EFAULT; a632f559304130 Anton Altaparmakov 2015-03-11 1834 break; a632f559304130 Anton Altaparmakov 2015-03-11 1835 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1836 /* Get and lock @do_pages starting at index @start_idx. */ 98b270362bb9ea Anton Altaparmakov 2005-10-11 1837 status = __ntfs_grab_cache_pages(mapping, start_idx, do_pages, 4c99000ac47cbd Minchan Kim 2010-05-24 1838 pages, &cached_page); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1839 if (unlikely(status)) 98b270362bb9ea Anton Altaparmakov 2005-10-11 1840 break; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1841 /* 98b270362bb9ea Anton Altaparmakov 2005-10-11 1842 * For non-resident attributes, we need to fill any holes with 98b270362bb9ea Anton Altaparmakov 2005-10-11 1843 * actual clusters and ensure all bufferes are mapped. We also 98b270362bb9ea Anton Altaparmakov 2005-10-11 1844 * need to bring uptodate any buffers that are only partially 98b270362bb9ea Anton Altaparmakov 2005-10-11 1845 * being written to. 98b270362bb9ea Anton Altaparmakov 2005-10-11 1846 */ 98b270362bb9ea Anton Altaparmakov 2005-10-11 1847 if (NInoNonResident(ni)) { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1848 status = ntfs_prepare_pages_for_non_resident_write( 98b270362bb9ea Anton Altaparmakov 2005-10-11 1849 pages, do_pages, pos, bytes); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1850 if (unlikely(status)) { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1851 do { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1852 unlock_page(pages[--do_pages]); 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1853 put_page(pages[do_pages]); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1854 } while (do_pages); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1855 break; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1856 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1857 } 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1858 u = (pos >> PAGE_SHIFT) - pages[0]->index; a632f559304130 Anton Altaparmakov 2015-03-11 1859 copied = ntfs_copy_from_user_iter(pages + u, do_pages - u, ofs, a632f559304130 Anton Altaparmakov 2015-03-11 1860 i, bytes); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1861 ntfs_flush_dcache_pages(pages + u, do_pages - u); a632f559304130 Anton Altaparmakov 2015-03-11 1862 status = 0; a632f559304130 Anton Altaparmakov 2015-03-11 1863 if (likely(copied == bytes)) { a632f559304130 Anton Altaparmakov 2015-03-11 1864 status = ntfs_commit_pages_after_write(pages, do_pages, a632f559304130 Anton Altaparmakov 2015-03-11 1865 pos, bytes); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1866 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1867 do { 98b270362bb9ea Anton Altaparmakov 2005-10-11 1868 unlock_page(pages[--do_pages]); 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1869 put_page(pages[do_pages]); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1870 } while (do_pages); 9067931236651c Al Viro 2021-05-30 1871 if (unlikely(status < 0)) { 9067931236651c Al Viro 2021-05-30 1872 iov_iter_revert(i, copied); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1873 break; 9067931236651c Al Viro 2021-05-30 1874 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1875 cond_resched(); 9067931236651c Al Viro 2021-05-30 1876 if (unlikely(copied < bytes)) { 9067931236651c Al Viro 2021-05-30 1877 iov_iter_revert(i, copied); 9067931236651c Al Viro 2021-05-30 1878 if (copied) 9067931236651c Al Viro 2021-05-30 1879 bytes = copied; 9067931236651c Al Viro 2021-05-30 1880 else if (bytes > PAGE_SIZE - ofs) 9067931236651c Al Viro 2021-05-30 1881 bytes = PAGE_SIZE - ofs; a632f559304130 Anton Altaparmakov 2015-03-11 1882 goto again; a632f559304130 Anton Altaparmakov 2015-03-11 1883 } a632f559304130 Anton Altaparmakov 2015-03-11 1884 pos += copied; a632f559304130 Anton Altaparmakov 2015-03-11 1885 written += copied; a632f559304130 Anton Altaparmakov 2015-03-11 1886 balance_dirty_pages_ratelimited(mapping); a632f559304130 Anton Altaparmakov 2015-03-11 1887 if (fatal_signal_pending(current)) { a632f559304130 Anton Altaparmakov 2015-03-11 1888 status = -EINTR; a632f559304130 Anton Altaparmakov 2015-03-11 1889 break; a632f559304130 Anton Altaparmakov 2015-03-11 1890 } a632f559304130 Anton Altaparmakov 2015-03-11 1891 } while (iov_iter_count(i)); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1892 if (cached_page) 09cbfeaf1a5a67 Kirill A. Shutemov 2016-04-01 1893 put_page(cached_page); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1894 ntfs_debug("Done. Returning %s (written 0x%lx, status %li).", 98b270362bb9ea Anton Altaparmakov 2005-10-11 1895 written ? "written" : "status", (unsigned long)written, 98b270362bb9ea Anton Altaparmakov 2005-10-11 1896 (long)status); 98b270362bb9ea Anton Altaparmakov 2005-10-11 1897 return written ? written : status; 98b270362bb9ea Anton Altaparmakov 2005-10-11 1898 } 98b270362bb9ea Anton Altaparmakov 2005-10-11 1899 :::::: The code at line 1724 was first introduced by commit :::::: a632f5593041305c8adbf4727bc1ccdf0b45178b NTFS: Version 2.1.32 - Update file write from aio_write to write_iter. :::::: TO: Anton Altaparmakov :::::: CC: Al Viro -- 0-DAY CI Kernel Test Service https://01.org/lkp