CC: [email protected] CC: Linux Memory Management List <[email protected]> TO: Richard Sharpe <[email protected]> CC: Anna Schumaker <[email protected]> CC: Lance Shelton <[email protected]> CC: Trond Myklebust <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: 32ce2abb03cfae17a9eb42bd6b1b619b72f23f20 commit: bc66f68057662bbe9d3057f6896a646f3e0d1e9a [11022/12034] NFS: Support statx_get and statx_set ioctls :::::: branch date: 10 hours ago :::::: commit date: 5 days ago config: x86_64-randconfig-m001 (https://download.01.org/0day-ci/archive/20220112/[email protected]/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> New smatch warnings: fs/nfs/nfs4xdr.c:1199 encode_attrs() error: we previously assumed 'statx' could be null (see line 1182) fs/nfs/nfs4proc.c:8035 _nfs4_set_nfs4_statx() error: we previously assumed 'statx' could be null (see line 8026) Old smatch warnings: fs/nfs/nfs4xdr.c:1239 encode_attrs() error: we previously assumed 'umask' could be null (see line 1107) fs/nfs/nfs4proc.c:1401 nfs4_opendata_alloc() error: we previously assumed 'c' could be null (see line 1369) vim +/statx +1199 fs/nfs/nfs4xdr.c 36b3743fef8861 Trond Myklebust 2018-03-20 1083 aa9c2669626ca7 David Quigley 2013-05-22 1084 static void encode_attrs(struct xdr_stream *xdr, const struct iattr *iap, aa9c2669626ca7 David Quigley 2013-05-22 1085 const struct nfs4_label *label, 28cf22d0ba283d Trond Myklebust 2017-05-06 1086 const umode_t *umask, bc66f68057662b Richard Sharpe 2021-12-27 1087 const struct nfs4_statx *statx, 5334c5bdac926c Kinglong Mee 2015-08-26 1088 const struct nfs_server *server, 28cf22d0ba283d Trond Myklebust 2017-05-06 1089 const uint32_t attrmask[]) ^1da177e4c3f41 Linus Torvalds 2005-04-16 1090 { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1091 char owner_name[IDMAP_NAMESZ]; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1092 char owner_group[IDMAP_NAMESZ]; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1093 int owner_namelen = 0; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1094 int owner_grouplen = 0; 8687b63afbe421 Al Viro 2006-10-19 1095 __be32 *p; d7067b2db78aab Trond Myklebust 2013-07-17 1096 uint32_t len = 0; d7067b2db78aab Trond Myklebust 2013-07-17 1097 uint32_t bmval[3] = { 0 }; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1098 ^1da177e4c3f41 Linus Torvalds 2005-04-16 1099 /* ^1da177e4c3f41 Linus Torvalds 2005-04-16 1100 * We reserve enough space to write the entire attribute buffer at once. ^1da177e4c3f41 Linus Torvalds 2005-04-16 1101 */ 28cf22d0ba283d Trond Myklebust 2017-05-06 1102 if ((iap->ia_valid & ATTR_SIZE) && (attrmask[0] & FATTR4_WORD0_SIZE)) { d7067b2db78aab Trond Myklebust 2013-07-17 1103 bmval[0] |= FATTR4_WORD0_SIZE; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1104 len += 8; d7067b2db78aab Trond Myklebust 2013-07-17 1105 } d7067b2db78aab Trond Myklebust 2013-07-17 1106 if (iap->ia_valid & ATTR_MODE) { 28cf22d0ba283d Trond Myklebust 2017-05-06 1107 if (umask && (attrmask[2] & FATTR4_WORD2_MODE_UMASK)) { dff25ddb48086a Andreas Gruenbacher 2016-12-02 1108 bmval[2] |= FATTR4_WORD2_MODE_UMASK; dff25ddb48086a Andreas Gruenbacher 2016-12-02 1109 len += 8; 28cf22d0ba283d Trond Myklebust 2017-05-06 1110 } else if (attrmask[1] & FATTR4_WORD1_MODE) { d7067b2db78aab Trond Myklebust 2013-07-17 1111 bmval[1] |= FATTR4_WORD1_MODE; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1112 len += 4; d7067b2db78aab Trond Myklebust 2013-07-17 1113 } dff25ddb48086a Andreas Gruenbacher 2016-12-02 1114 } 28cf22d0ba283d Trond Myklebust 2017-05-06 1115 if ((iap->ia_valid & ATTR_UID) && (attrmask[1] & FATTR4_WORD1_OWNER)) { e4fd72a17d2703 Trond Myklebust 2011-02-22 1116 owner_namelen = nfs_map_uid_to_name(server, iap->ia_uid, owner_name, IDMAP_NAMESZ); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1117 if (owner_namelen < 0) { fe82a183ca3c91 Chuck Lever 2007-09-11 1118 dprintk("nfs: couldn't resolve uid %d to string\n", e5782076e72be2 Eric W. Biederman 2013-02-01 1119 from_kuid(&init_user_ns, iap->ia_uid)); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1120 /* XXX */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1121 strcpy(owner_name, "nobody"); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1122 owner_namelen = sizeof("nobody") - 1; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1123 /* goto out; */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1124 } d7067b2db78aab Trond Myklebust 2013-07-17 1125 bmval[1] |= FATTR4_WORD1_OWNER; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1126 len += 4 + (XDR_QUADLEN(owner_namelen) << 2); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1127 } 28cf22d0ba283d Trond Myklebust 2017-05-06 1128 if ((iap->ia_valid & ATTR_GID) && 28cf22d0ba283d Trond Myklebust 2017-05-06 1129 (attrmask[1] & FATTR4_WORD1_OWNER_GROUP)) { e4fd72a17d2703 Trond Myklebust 2011-02-22 1130 owner_grouplen = nfs_map_gid_to_group(server, iap->ia_gid, owner_group, IDMAP_NAMESZ); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1131 if (owner_grouplen < 0) { fe82a183ca3c91 Chuck Lever 2007-09-11 1132 dprintk("nfs: couldn't resolve gid %d to string\n", e5782076e72be2 Eric W. Biederman 2013-02-01 1133 from_kgid(&init_user_ns, iap->ia_gid)); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1134 strcpy(owner_group, "nobody"); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1135 owner_grouplen = sizeof("nobody") - 1; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1136 /* goto out; */ ^1da177e4c3f41 Linus Torvalds 2005-04-16 1137 } d7067b2db78aab Trond Myklebust 2013-07-17 1138 bmval[1] |= FATTR4_WORD1_OWNER_GROUP; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1139 len += 4 + (XDR_QUADLEN(owner_grouplen) << 2); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1140 } 28cf22d0ba283d Trond Myklebust 2017-05-06 1141 if (attrmask[1] & FATTR4_WORD1_TIME_ACCESS_SET) { d7067b2db78aab Trond Myklebust 2013-07-17 1142 if (iap->ia_valid & ATTR_ATIME_SET) { d7067b2db78aab Trond Myklebust 2013-07-17 1143 bmval[1] |= FATTR4_WORD1_TIME_ACCESS_SET; 36b3743fef8861 Trond Myklebust 2018-03-20 1144 len += 4 + (nfstime4_maxsz << 2); d7067b2db78aab Trond Myklebust 2013-07-17 1145 } else if (iap->ia_valid & ATTR_ATIME) { d7067b2db78aab Trond Myklebust 2013-07-17 1146 bmval[1] |= FATTR4_WORD1_TIME_ACCESS_SET; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1147 len += 4; d7067b2db78aab Trond Myklebust 2013-07-17 1148 } 28cf22d0ba283d Trond Myklebust 2017-05-06 1149 } 28cf22d0ba283d Trond Myklebust 2017-05-06 1150 if (attrmask[1] & FATTR4_WORD1_TIME_MODIFY_SET) { d7067b2db78aab Trond Myklebust 2013-07-17 1151 if (iap->ia_valid & ATTR_MTIME_SET) { d7067b2db78aab Trond Myklebust 2013-07-17 1152 bmval[1] |= FATTR4_WORD1_TIME_MODIFY_SET; 36b3743fef8861 Trond Myklebust 2018-03-20 1153 len += 4 + (nfstime4_maxsz << 2); d7067b2db78aab Trond Myklebust 2013-07-17 1154 } else if (iap->ia_valid & ATTR_MTIME) { d7067b2db78aab Trond Myklebust 2013-07-17 1155 bmval[1] |= FATTR4_WORD1_TIME_MODIFY_SET; ^1da177e4c3f41 Linus Torvalds 2005-04-16 1156 len += 4; d7067b2db78aab Trond Myklebust 2013-07-17 1157 } 5334c5bdac926c Kinglong Mee 2015-08-26 1158 } 5334c5bdac926c Kinglong Mee 2015-08-26 1159 bc66f68057662b Richard Sharpe 2021-12-27 1160 if (statx && (statx->fa_valid[0] & NFS_FA_VALID_TIME_BACKUP) && bc66f68057662b Richard Sharpe 2021-12-27 1161 (attrmask[1] & FATTR4_WORD1_TIME_BACKUP)) { bc66f68057662b Richard Sharpe 2021-12-27 1162 bmval[1] |= FATTR4_WORD1_TIME_BACKUP; bc66f68057662b Richard Sharpe 2021-12-27 1163 len += (nfstime4_maxsz << 2); bc66f68057662b Richard Sharpe 2021-12-27 1164 } bc66f68057662b Richard Sharpe 2021-12-27 1165 if (statx && (statx->fa_valid[0] & NFS_FA_VALID_TIME_CREATE) && bc66f68057662b Richard Sharpe 2021-12-27 1166 (attrmask[1] & FATTR4_WORD1_TIME_CREATE)) { bc66f68057662b Richard Sharpe 2021-12-27 1167 bmval[1] |= FATTR4_WORD1_TIME_CREATE; bc66f68057662b Richard Sharpe 2021-12-27 1168 len += (nfstime4_maxsz << 2); bc66f68057662b Richard Sharpe 2021-12-27 1169 } bc66f68057662b Richard Sharpe 2021-12-27 1170 bc66f68057662b Richard Sharpe 2021-12-27 1171 if (statx && (statx->fa_valid[0] & NFS_FA_VALID_ARCHIVE) && bc66f68057662b Richard Sharpe 2021-12-27 1172 (attrmask[0] & FATTR4_WORD0_ARCHIVE)) { bc66f68057662b Richard Sharpe 2021-12-27 1173 bmval[0] |= FATTR4_WORD0_ARCHIVE; bc66f68057662b Richard Sharpe 2021-12-27 1174 len += 4; bc66f68057662b Richard Sharpe 2021-12-27 1175 } bc66f68057662b Richard Sharpe 2021-12-27 1176 if (statx && (statx->fa_valid[0] & NFS_FA_VALID_HIDDEN) && bc66f68057662b Richard Sharpe 2021-12-27 1177 (attrmask[0] & FATTR4_WORD0_HIDDEN)) { bc66f68057662b Richard Sharpe 2021-12-27 1178 bmval[0] |= FATTR4_WORD0_HIDDEN; bc66f68057662b Richard Sharpe 2021-12-27 1179 len += 4; bc66f68057662b Richard Sharpe 2021-12-27 1180 } bc66f68057662b Richard Sharpe 2021-12-27 1181 bc66f68057662b Richard Sharpe 2021-12-27 @1182 if (statx && (statx->fa_valid[0] & NFS_FA_VALID_SYSTEM) && bc66f68057662b Richard Sharpe 2021-12-27 1183 (attrmask[1] & FATTR4_WORD1_SYSTEM)) { bc66f68057662b Richard Sharpe 2021-12-27 1184 bmval[1] |= FATTR4_WORD1_SYSTEM; bc66f68057662b Richard Sharpe 2021-12-27 1185 len += 4; bc66f68057662b Richard Sharpe 2021-12-27 1186 } bc66f68057662b Richard Sharpe 2021-12-27 1187 28cf22d0ba283d Trond Myklebust 2017-05-06 1188 if (label && (attrmask[2] & FATTR4_WORD2_SECURITY_LABEL)) { b4a2cf76ab7c08 Trond Myklebust 2013-07-17 1189 len += 4 + 4 + 4 + (XDR_QUADLEN(label->len) << 2); d7067b2db78aab Trond Myklebust 2013-07-17 1190 bmval[2] |= FATTR4_WORD2_SECURITY_LABEL; b4a2cf76ab7c08 Trond Myklebust 2013-07-17 1191 } b4a2cf76ab7c08 Trond Myklebust 2013-07-17 1192 40a3426c75e162 Trond Myklebust 2018-03-20 1193 xdr_encode_bitmap4(xdr, bmval, ARRAY_SIZE(bmval)); 40a3426c75e162 Trond Myklebust 2018-03-20 1194 xdr_stream_encode_opaque_inline(xdr, (void **)&p, len); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1195 d7067b2db78aab Trond Myklebust 2013-07-17 1196 if (bmval[0] & FATTR4_WORD0_SIZE) b95be5a976848f Benny Halevy 2009-08-14 1197 p = xdr_encode_hyper(p, iap->ia_size); bc66f68057662b Richard Sharpe 2021-12-27 1198 if (bmval[0] & FATTR4_WORD0_ARCHIVE) bc66f68057662b Richard Sharpe 2021-12-27 @1199 *p++ = (statx->fa_flags & NFS_FA_FLAG_ARCHIVE) ? bc66f68057662b Richard Sharpe 2021-12-27 1200 cpu_to_be32(1) : cpu_to_be32(0); bc66f68057662b Richard Sharpe 2021-12-27 1201 if (bmval[0] & FATTR4_WORD0_HIDDEN) bc66f68057662b Richard Sharpe 2021-12-27 1202 *p++ = (statx->fa_flags & NFS_FA_FLAG_HIDDEN) ? bc66f68057662b Richard Sharpe 2021-12-27 1203 cpu_to_be32(1) : cpu_to_be32(0); d7067b2db78aab Trond Myklebust 2013-07-17 1204 if (bmval[1] & FATTR4_WORD1_MODE) e75bc1c89e0c7d Benny Halevy 2009-08-14 1205 *p++ = cpu_to_be32(iap->ia_mode & S_IALLUGO); d7067b2db78aab Trond Myklebust 2013-07-17 1206 if (bmval[1] & FATTR4_WORD1_OWNER) 811652bd6edd66 Benny Halevy 2009-08-14 1207 p = xdr_encode_opaque(p, owner_name, owner_namelen); d7067b2db78aab Trond Myklebust 2013-07-17 1208 if (bmval[1] & FATTR4_WORD1_OWNER_GROUP) 811652bd6edd66 Benny Halevy 2009-08-14 1209 p = xdr_encode_opaque(p, owner_group, owner_grouplen); bc66f68057662b Richard Sharpe 2021-12-27 1210 if (bmval[1] & FATTR4_WORD1_SYSTEM) bc66f68057662b Richard Sharpe 2021-12-27 1211 *p++ = (statx->fa_flags & NFS_FA_FLAG_SYSTEM) ? bc66f68057662b Richard Sharpe 2021-12-27 1212 cpu_to_be32(1) : cpu_to_be32(0); d7067b2db78aab Trond Myklebust 2013-07-17 1213 if (bmval[1] & FATTR4_WORD1_TIME_ACCESS_SET) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1214 if (iap->ia_valid & ATTR_ATIME_SET) { e75bc1c89e0c7d Benny Halevy 2009-08-14 1215 *p++ = cpu_to_be32(NFS4_SET_TO_CLIENT_TIME); e7d4b05c5ee312 Trond Myklebust 2019-10-04 1216 p = xdr_encode_nfstime4(p, &iap->ia_atime); d7067b2db78aab Trond Myklebust 2013-07-17 1217 } else e75bc1c89e0c7d Benny Halevy 2009-08-14 1218 *p++ = cpu_to_be32(NFS4_SET_TO_SERVER_TIME); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1219 } bc66f68057662b Richard Sharpe 2021-12-27 1220 if (bmval[1] & FATTR4_WORD1_TIME_BACKUP) bc66f68057662b Richard Sharpe 2021-12-27 1221 p = xdr_encode_nfstime4(p, &statx->fa_time_backup); bc66f68057662b Richard Sharpe 2021-12-27 1222 if (bmval[1] & FATTR4_WORD1_TIME_CREATE) bc66f68057662b Richard Sharpe 2021-12-27 1223 p = xdr_encode_nfstime4(p, &statx->fa_btime); d7067b2db78aab Trond Myklebust 2013-07-17 1224 if (bmval[1] & FATTR4_WORD1_TIME_MODIFY_SET) { ^1da177e4c3f41 Linus Torvalds 2005-04-16 1225 if (iap->ia_valid & ATTR_MTIME_SET) { e75bc1c89e0c7d Benny Halevy 2009-08-14 1226 *p++ = cpu_to_be32(NFS4_SET_TO_CLIENT_TIME); e7d4b05c5ee312 Trond Myklebust 2019-10-04 1227 p = xdr_encode_nfstime4(p, &iap->ia_mtime); d7067b2db78aab Trond Myklebust 2013-07-17 1228 } else e75bc1c89e0c7d Benny Halevy 2009-08-14 1229 *p++ = cpu_to_be32(NFS4_SET_TO_SERVER_TIME); ^1da177e4c3f41 Linus Torvalds 2005-04-16 1230 } e2751463eaa6f9 Jia-Ju Bai 2019-07-26 1231 if (label && (bmval[2] & FATTR4_WORD2_SECURITY_LABEL)) { aa9c2669626ca7 David Quigley 2013-05-22 1232 *p++ = cpu_to_be32(label->lfs); aa9c2669626ca7 David Quigley 2013-05-22 1233 *p++ = cpu_to_be32(label->pi); aa9c2669626ca7 David Quigley 2013-05-22 1234 *p++ = cpu_to_be32(label->len); aa9c2669626ca7 David Quigley 2013-05-22 1235 p = xdr_encode_opaque_fixed(p, label->label, label->len); aa9c2669626ca7 David Quigley 2013-05-22 1236 } dff25ddb48086a Andreas Gruenbacher 2016-12-02 1237 if (bmval[2] & FATTR4_WORD2_MODE_UMASK) { dff25ddb48086a Andreas Gruenbacher 2016-12-02 1238 *p++ = cpu_to_be32(iap->ia_mode & S_IALLUGO); dff25ddb48086a Andreas Gruenbacher 2016-12-02 1239 *p++ = cpu_to_be32(*umask); dff25ddb48086a Andreas Gruenbacher 2016-12-02 1240 } ^1da177e4c3f41 Linus Torvalds 2005-04-16 1241 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
