Messages in this thread | | | Date | Thu, 14 Oct 2021 07:42:21 +0800 | From | kernel test robot <> | Subject | [gfs2:for-next 4/38] fs/ntfs3/file.c:990:16: error: implicit declaration of function 'iov_iter_fault_in_readable' |
| |
tree: https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git for-next head: 9d0084204c8a7e01f9b8ebe81402be61e0a67a62 commit: 4b03be65e2d7c2a3c7a83d28d5f9882e9dcf178d [4/38] iov_iter: Turn iov_iter_fault_in_readable into fault_in_iov_iter_readable config: hexagon-randconfig-r045-20211013 (attached as .config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project b6a8c695542b2987eb9a203d5663a0740cb4725f) 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 # https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git/commit/?id=4b03be65e2d7c2a3c7a83d28d5f9882e9dcf178d git remote add gfs2 https://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2.git git fetch --no-tags gfs2 for-next git checkout 4b03be65e2d7c2a3c7a83d28d5f9882e9dcf178d # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 ARCH=hexagon
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
>> fs/ntfs3/file.c:990:16: error: implicit declaration of function 'iov_iter_fault_in_readable' [-Werror,-Wimplicit-function-declaration] if (unlikely(iov_iter_fault_in_readable(from, bytes))) { ^ 1 error generated.
vim +/iov_iter_fault_in_readable +990 fs/ntfs3/file.c
4342306f0f0d5f Konstantin Komarov 2021-08-13 863 e8b8e97f91b80f Kari Argillander 2021-08-03 864 /* e8b8e97f91b80f Kari Argillander 2021-08-03 865 * ntfs_compress_write - Helper for ntfs_file_write_iter() (compressed files). e8b8e97f91b80f Kari Argillander 2021-08-03 866 */ 4342306f0f0d5f Konstantin Komarov 2021-08-13 867 static ssize_t ntfs_compress_write(struct kiocb *iocb, struct iov_iter *from) 4342306f0f0d5f Konstantin Komarov 2021-08-13 868 { 4342306f0f0d5f Konstantin Komarov 2021-08-13 869 int err; 4342306f0f0d5f Konstantin Komarov 2021-08-13 870 struct file *file = iocb->ki_filp; 4342306f0f0d5f Konstantin Komarov 2021-08-13 871 size_t count = iov_iter_count(from); 4342306f0f0d5f Konstantin Komarov 2021-08-13 872 loff_t pos = iocb->ki_pos; 4342306f0f0d5f Konstantin Komarov 2021-08-13 873 struct inode *inode = file_inode(file); 4342306f0f0d5f Konstantin Komarov 2021-08-13 874 loff_t i_size = inode->i_size; 4342306f0f0d5f Konstantin Komarov 2021-08-13 875 struct address_space *mapping = inode->i_mapping; 4342306f0f0d5f Konstantin Komarov 2021-08-13 876 struct ntfs_inode *ni = ntfs_i(inode); 4342306f0f0d5f Konstantin Komarov 2021-08-13 877 u64 valid = ni->i_valid; 4342306f0f0d5f Konstantin Komarov 2021-08-13 878 struct ntfs_sb_info *sbi = ni->mi.sbi; 4342306f0f0d5f Konstantin Komarov 2021-08-13 879 struct page *page, **pages = NULL; 4342306f0f0d5f Konstantin Komarov 2021-08-13 880 size_t written = 0; 4342306f0f0d5f Konstantin Komarov 2021-08-13 881 u8 frame_bits = NTFS_LZNT_CUNIT + sbi->cluster_bits; 4342306f0f0d5f Konstantin Komarov 2021-08-13 882 u32 frame_size = 1u << frame_bits; 4342306f0f0d5f Konstantin Komarov 2021-08-13 883 u32 pages_per_frame = frame_size >> PAGE_SHIFT; 4342306f0f0d5f Konstantin Komarov 2021-08-13 884 u32 ip, off; 4342306f0f0d5f Konstantin Komarov 2021-08-13 885 CLST frame; 4342306f0f0d5f Konstantin Komarov 2021-08-13 886 u64 frame_vbo; 4342306f0f0d5f Konstantin Komarov 2021-08-13 887 pgoff_t index; 4342306f0f0d5f Konstantin Komarov 2021-08-13 888 bool frame_uptodate; 4342306f0f0d5f Konstantin Komarov 2021-08-13 889 4342306f0f0d5f Konstantin Komarov 2021-08-13 890 if (frame_size < PAGE_SIZE) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 891 /* 4342306f0f0d5f Konstantin Komarov 2021-08-13 892 * frame_size == 8K if cluster 512 4342306f0f0d5f Konstantin Komarov 2021-08-13 893 * frame_size == 64K if cluster 4096 4342306f0f0d5f Konstantin Komarov 2021-08-13 894 */ 4342306f0f0d5f Konstantin Komarov 2021-08-13 895 ntfs_inode_warn(inode, "page size is bigger than frame size"); 4342306f0f0d5f Konstantin Komarov 2021-08-13 896 return -EOPNOTSUPP; 4342306f0f0d5f Konstantin Komarov 2021-08-13 897 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 898 345482bc431f64 Kari Argillander 2021-08-24 899 pages = kmalloc_array(pages_per_frame, sizeof(struct page *), GFP_NOFS); 4342306f0f0d5f Konstantin Komarov 2021-08-13 900 if (!pages) 4342306f0f0d5f Konstantin Komarov 2021-08-13 901 return -ENOMEM; 4342306f0f0d5f Konstantin Komarov 2021-08-13 902 4342306f0f0d5f Konstantin Komarov 2021-08-13 903 current->backing_dev_info = inode_to_bdi(inode); 4342306f0f0d5f Konstantin Komarov 2021-08-13 904 err = file_remove_privs(file); 4342306f0f0d5f Konstantin Komarov 2021-08-13 905 if (err) 4342306f0f0d5f Konstantin Komarov 2021-08-13 906 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 907 4342306f0f0d5f Konstantin Komarov 2021-08-13 908 err = file_update_time(file); 4342306f0f0d5f Konstantin Komarov 2021-08-13 909 if (err) 4342306f0f0d5f Konstantin Komarov 2021-08-13 910 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 911 e8b8e97f91b80f Kari Argillander 2021-08-03 912 /* Zero range [valid : pos). */ 4342306f0f0d5f Konstantin Komarov 2021-08-13 913 while (valid < pos) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 914 CLST lcn, clen; 4342306f0f0d5f Konstantin Komarov 2021-08-13 915 4342306f0f0d5f Konstantin Komarov 2021-08-13 916 frame = valid >> frame_bits; 4342306f0f0d5f Konstantin Komarov 2021-08-13 917 frame_vbo = valid & ~(frame_size - 1); 4342306f0f0d5f Konstantin Komarov 2021-08-13 918 off = valid & (frame_size - 1); 4342306f0f0d5f Konstantin Komarov 2021-08-13 919 4342306f0f0d5f Konstantin Komarov 2021-08-13 920 err = attr_data_get_block(ni, frame << NTFS_LZNT_CUNIT, 0, &lcn, 4342306f0f0d5f Konstantin Komarov 2021-08-13 921 &clen, NULL); 4342306f0f0d5f Konstantin Komarov 2021-08-13 922 if (err) 4342306f0f0d5f Konstantin Komarov 2021-08-13 923 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 924 4342306f0f0d5f Konstantin Komarov 2021-08-13 925 if (lcn == SPARSE_LCN) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 926 ni->i_valid = valid = 4342306f0f0d5f Konstantin Komarov 2021-08-13 927 frame_vbo + ((u64)clen << sbi->cluster_bits); 4342306f0f0d5f Konstantin Komarov 2021-08-13 928 continue; 4342306f0f0d5f Konstantin Komarov 2021-08-13 929 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 930 e8b8e97f91b80f Kari Argillander 2021-08-03 931 /* Load full frame. */ 4342306f0f0d5f Konstantin Komarov 2021-08-13 932 err = ntfs_get_frame_pages(mapping, frame_vbo >> PAGE_SHIFT, 4342306f0f0d5f Konstantin Komarov 2021-08-13 933 pages, pages_per_frame, 4342306f0f0d5f Konstantin Komarov 2021-08-13 934 &frame_uptodate); 4342306f0f0d5f Konstantin Komarov 2021-08-13 935 if (err) 4342306f0f0d5f Konstantin Komarov 2021-08-13 936 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 937 4342306f0f0d5f Konstantin Komarov 2021-08-13 938 if (!frame_uptodate && off) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 939 err = ni_read_frame(ni, frame_vbo, pages, 4342306f0f0d5f Konstantin Komarov 2021-08-13 940 pages_per_frame); 4342306f0f0d5f Konstantin Komarov 2021-08-13 941 if (err) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 942 for (ip = 0; ip < pages_per_frame; ip++) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 943 page = pages[ip]; 4342306f0f0d5f Konstantin Komarov 2021-08-13 944 unlock_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 945 put_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 946 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 947 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 948 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 949 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 950 4342306f0f0d5f Konstantin Komarov 2021-08-13 951 ip = off >> PAGE_SHIFT; 4342306f0f0d5f Konstantin Komarov 2021-08-13 952 off = offset_in_page(valid); 4342306f0f0d5f Konstantin Komarov 2021-08-13 953 for (; ip < pages_per_frame; ip++, off = 0) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 954 page = pages[ip]; 4342306f0f0d5f Konstantin Komarov 2021-08-13 955 zero_user_segment(page, off, PAGE_SIZE); 4342306f0f0d5f Konstantin Komarov 2021-08-13 956 flush_dcache_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 957 SetPageUptodate(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 958 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 959 4342306f0f0d5f Konstantin Komarov 2021-08-13 960 ni_lock(ni); 4342306f0f0d5f Konstantin Komarov 2021-08-13 961 err = ni_write_frame(ni, pages, pages_per_frame); 4342306f0f0d5f Konstantin Komarov 2021-08-13 962 ni_unlock(ni); 4342306f0f0d5f Konstantin Komarov 2021-08-13 963 4342306f0f0d5f Konstantin Komarov 2021-08-13 964 for (ip = 0; ip < pages_per_frame; ip++) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 965 page = pages[ip]; 4342306f0f0d5f Konstantin Komarov 2021-08-13 966 SetPageUptodate(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 967 unlock_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 968 put_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 969 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 970 4342306f0f0d5f Konstantin Komarov 2021-08-13 971 if (err) 4342306f0f0d5f Konstantin Komarov 2021-08-13 972 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 973 4342306f0f0d5f Konstantin Komarov 2021-08-13 974 ni->i_valid = valid = frame_vbo + frame_size; 4342306f0f0d5f Konstantin Komarov 2021-08-13 975 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 976 e8b8e97f91b80f Kari Argillander 2021-08-03 977 /* Copy user data [pos : pos + count). */ 4342306f0f0d5f Konstantin Komarov 2021-08-13 978 while (count) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 979 size_t copied, bytes; 4342306f0f0d5f Konstantin Komarov 2021-08-13 980 4342306f0f0d5f Konstantin Komarov 2021-08-13 981 off = pos & (frame_size - 1); 4342306f0f0d5f Konstantin Komarov 2021-08-13 982 bytes = frame_size - off; 4342306f0f0d5f Konstantin Komarov 2021-08-13 983 if (bytes > count) 4342306f0f0d5f Konstantin Komarov 2021-08-13 984 bytes = count; 4342306f0f0d5f Konstantin Komarov 2021-08-13 985 4342306f0f0d5f Konstantin Komarov 2021-08-13 986 frame = pos >> frame_bits; 4342306f0f0d5f Konstantin Komarov 2021-08-13 987 frame_vbo = pos & ~(frame_size - 1); 4342306f0f0d5f Konstantin Komarov 2021-08-13 988 index = frame_vbo >> PAGE_SHIFT; 4342306f0f0d5f Konstantin Komarov 2021-08-13 989 4342306f0f0d5f Konstantin Komarov 2021-08-13 @990 if (unlikely(iov_iter_fault_in_readable(from, bytes))) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 991 err = -EFAULT; 4342306f0f0d5f Konstantin Komarov 2021-08-13 992 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 993 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 994 e8b8e97f91b80f Kari Argillander 2021-08-03 995 /* Load full frame. */ 4342306f0f0d5f Konstantin Komarov 2021-08-13 996 err = ntfs_get_frame_pages(mapping, index, pages, 4342306f0f0d5f Konstantin Komarov 2021-08-13 997 pages_per_frame, &frame_uptodate); 4342306f0f0d5f Konstantin Komarov 2021-08-13 998 if (err) 4342306f0f0d5f Konstantin Komarov 2021-08-13 999 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1000 4342306f0f0d5f Konstantin Komarov 2021-08-13 1001 if (!frame_uptodate) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 1002 loff_t to = pos + bytes; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1003 4342306f0f0d5f Konstantin Komarov 2021-08-13 1004 if (off || (to < i_size && (to & (frame_size - 1)))) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 1005 err = ni_read_frame(ni, frame_vbo, pages, 4342306f0f0d5f Konstantin Komarov 2021-08-13 1006 pages_per_frame); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1007 if (err) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 1008 for (ip = 0; ip < pages_per_frame; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1009 ip++) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 1010 page = pages[ip]; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1011 unlock_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1012 put_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1013 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 1014 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1015 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 1016 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 1017 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 1018 4342306f0f0d5f Konstantin Komarov 2021-08-13 1019 WARN_ON(!bytes); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1020 copied = 0; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1021 ip = off >> PAGE_SHIFT; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1022 off = offset_in_page(pos); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1023 e8b8e97f91b80f Kari Argillander 2021-08-03 1024 /* Copy user data to pages. */ 4342306f0f0d5f Konstantin Komarov 2021-08-13 1025 for (;;) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 1026 size_t cp, tail = PAGE_SIZE - off; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1027 4342306f0f0d5f Konstantin Komarov 2021-08-13 1028 page = pages[ip]; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1029 cp = copy_page_from_iter_atomic(page, off, 4342306f0f0d5f Konstantin Komarov 2021-08-13 1030 min(tail, bytes), from); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1031 flush_dcache_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1032 4342306f0f0d5f Konstantin Komarov 2021-08-13 1033 copied += cp; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1034 bytes -= cp; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1035 if (!bytes || !cp) 4342306f0f0d5f Konstantin Komarov 2021-08-13 1036 break; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1037 4342306f0f0d5f Konstantin Komarov 2021-08-13 1038 if (cp < tail) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 1039 off += cp; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1040 } else { 4342306f0f0d5f Konstantin Komarov 2021-08-13 1041 ip++; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1042 off = 0; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1043 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 1044 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 1045 4342306f0f0d5f Konstantin Komarov 2021-08-13 1046 ni_lock(ni); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1047 err = ni_write_frame(ni, pages, pages_per_frame); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1048 ni_unlock(ni); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1049 4342306f0f0d5f Konstantin Komarov 2021-08-13 1050 for (ip = 0; ip < pages_per_frame; ip++) { 4342306f0f0d5f Konstantin Komarov 2021-08-13 1051 page = pages[ip]; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1052 ClearPageDirty(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1053 SetPageUptodate(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1054 unlock_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1055 put_page(page); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1056 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 1057 4342306f0f0d5f Konstantin Komarov 2021-08-13 1058 if (err) 4342306f0f0d5f Konstantin Komarov 2021-08-13 1059 goto out; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1060 4342306f0f0d5f Konstantin Komarov 2021-08-13 1061 /* 4342306f0f0d5f Konstantin Komarov 2021-08-13 1062 * We can loop for a long time in here. Be nice and allow 4342306f0f0d5f Konstantin Komarov 2021-08-13 1063 * us to schedule out to avoid softlocking if preempt 4342306f0f0d5f Konstantin Komarov 2021-08-13 1064 * is disabled. 4342306f0f0d5f Konstantin Komarov 2021-08-13 1065 */ 4342306f0f0d5f Konstantin Komarov 2021-08-13 1066 cond_resched(); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1067 4342306f0f0d5f Konstantin Komarov 2021-08-13 1068 pos += copied; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1069 written += copied; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1070 4342306f0f0d5f Konstantin Komarov 2021-08-13 1071 count = iov_iter_count(from); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1072 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 1073 4342306f0f0d5f Konstantin Komarov 2021-08-13 1074 out: 195c52bdd5d5ec Kari Argillander 2021-08-24 1075 kfree(pages); 4342306f0f0d5f Konstantin Komarov 2021-08-13 1076 4342306f0f0d5f Konstantin Komarov 2021-08-13 1077 current->backing_dev_info = NULL; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1078 4342306f0f0d5f Konstantin Komarov 2021-08-13 1079 if (err < 0) 4342306f0f0d5f Konstantin Komarov 2021-08-13 1080 return err; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1081 4342306f0f0d5f Konstantin Komarov 2021-08-13 1082 iocb->ki_pos += written; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1083 if (iocb->ki_pos > ni->i_valid) 4342306f0f0d5f Konstantin Komarov 2021-08-13 1084 ni->i_valid = iocb->ki_pos; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1085 4342306f0f0d5f Konstantin Komarov 2021-08-13 1086 return written; 4342306f0f0d5f Konstantin Komarov 2021-08-13 1087 } 4342306f0f0d5f Konstantin Komarov 2021-08-13 1088
:::::: The code at line 990 was first introduced by commit :::::: 4342306f0f0d5ff4315a204d315c1b51b914fca5 fs/ntfs3: Add file operations and implementation
:::::: TO: Konstantin Komarov <almaz.alexandrovich@paragon-software.com> :::::: CC: Konstantin Komarov <almaz.alexandrovich@paragon-software.com>
--- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org [unhandled content-type:application/gzip] | |