* fs/smb/client/dir.c:248:10: error: use of undeclared label 'out'
@ 2026-05-01 17:27 kernel test robot
2026-05-11 10:07 ` Christian Brauner
0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2026-05-01 17:27 UTC (permalink / raw)
To: Dorjoy Chowdhury
Cc: oe-kbuild-all, Christian Brauner, Christian Brauner, Jeff Layton,
Aleksa Sarai
tree: https://github.com/brauner/linux.git vfs-7.2.openat.regular
head: be7728badbd230f1ee7beba4162383fa022ae767
commit: 93306cec35846eebf467d63a775fa711d7106b2e openat2: new OPENAT2_REGULAR flag support
date: 2 weeks ago
config: i386-randconfig-141-20260501 (https://download.01.org/0day-ci/archive/20260502/202605020138.EI8o7MFz-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
smatch: v0.5.0-9065-ge9cc34fd
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260502/202605020138.EI8o7MFz-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/202605020138.EI8o7MFz-lkp@intel.com/
All errors (new ones prefixed by >>):
>> fs/smb/client/dir.c:248:10: error: use of undeclared label 'out'
248 | goto out;
| ^
1 error generated.
vim +/out +248 fs/smb/client/dir.c
199
200 /* Inode operations in similar order to how they appear in Linux file fs.h */
201 static int __cifs_do_create(struct inode *dir, struct dentry *direntry,
202 const char *full_path, unsigned int xid,
203 struct tcon_link *tlink, unsigned int oflags,
204 umode_t mode, __u32 *oplock, struct cifs_fid *fid,
205 struct cifs_open_info_data *buf,
206 struct inode **inode)
207 {
208 int rc = -ENOENT;
209 int create_options = CREATE_NOT_DIR;
210 int desired_access;
211 struct cifs_sb_info *cifs_sb = CIFS_SB(dir);
212 struct cifs_tcon *tcon = tlink_tcon(tlink);
213 struct inode *newinode = NULL;
214 unsigned int sbflags = cifs_sb_flags(cifs_sb);
215 int disposition;
216 struct TCP_Server_Info *server = tcon->ses->server;
217 struct cifs_open_parms oparms;
218 struct cached_fid *parent_cfid = NULL;
219 int rdwr_for_fscache = 0;
220 __le32 lease_flags = 0;
221
222 *inode = NULL;
223 *oplock = 0;
224 if (tcon->ses->server->oplocks)
225 *oplock = REQ_OPLOCK;
226
227 /* If we're caching, we need to be able to fill in around partial writes. */
228 if (cifs_fscache_enabled(dir) && (oflags & O_ACCMODE) == O_WRONLY)
229 rdwr_for_fscache = 1;
230
231 #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY
232 if (tcon->unix_ext && cap_unix(tcon->ses) && !tcon->broken_posix_open &&
233 (CIFS_UNIX_POSIX_PATH_OPS_CAP &
234 le64_to_cpu(tcon->fsUnixInfo.Capability))) {
235 rc = cifs_posix_open(full_path, &newinode, dir->i_sb, mode,
236 oflags, oplock, &fid->netfid, xid);
237 switch (rc) {
238 case 0:
239 if (newinode == NULL) {
240 /* query inode info */
241 goto cifs_create_get_file_info;
242 }
243
244 if ((oflags & OPENAT2_REGULAR) && !S_ISREG(newinode->i_mode)) {
245 CIFSSMBClose(xid, tcon, fid->netfid);
246 iput(newinode);
247 rc = -EFTYPE;
> 248 goto out;
249 }
250
251 if (S_ISDIR(newinode->i_mode)) {
252 CIFSSMBClose(xid, tcon, fid->netfid);
253 iput(newinode);
254 return -EISDIR;
255 }
256
257 if (!S_ISREG(newinode->i_mode)) {
258 /*
259 * The server may allow us to open things like
260 * FIFOs, but the client isn't set up to deal
261 * with that. If it's not a regular file, just
262 * close it and proceed as if it were a normal
263 * lookup.
264 */
265 CIFSSMBClose(xid, tcon, fid->netfid);
266 goto cifs_create_get_file_info;
267 }
268 /* success, no need to query */
269 goto cifs_create_set_dentry;
270
271 case -ENOENT:
272 goto cifs_create_get_file_info;
273
274 case -EIO:
275 case -EINVAL:
276 /*
277 * EIO could indicate that (posix open) operation is not
278 * supported, despite what server claimed in capability
279 * negotiation.
280 *
281 * POSIX open in samba versions 3.3.1 and earlier could
282 * incorrectly fail with invalid parameter.
283 */
284 tcon->broken_posix_open = true;
285 break;
286
287 case -EREMOTE:
288 case -EOPNOTSUPP:
289 /*
290 * EREMOTE indicates DFS junction, which is not handled
291 * in posix open. If either that or op not supported
292 * returned, follow the normal lookup.
293 */
294 break;
295
296 default:
297 return rc;
298 }
299 /*
300 * fallthrough to retry, using older open call, this is case
301 * where server does not support this SMB level, and falsely
302 * claims capability (also get here for DFS case which should be
303 * rare for path not covered on files)
304 */
305 }
306 #endif /* CONFIG_CIFS_ALLOW_INSECURE_LEGACY */
307
308 desired_access = 0;
309 if (OPEN_FMODE(oflags) & FMODE_READ)
310 desired_access |= GENERIC_READ; /* is this too little? */
311 if (OPEN_FMODE(oflags) & FMODE_WRITE)
312 desired_access |= GENERIC_WRITE;
313 if (rdwr_for_fscache == 1)
314 desired_access |= GENERIC_READ;
315 if (oflags & O_TMPFILE)
316 desired_access |= DELETE;
317
318 disposition = FILE_OVERWRITE_IF;
319 if (oflags & O_CREAT) {
320 if (oflags & O_EXCL)
321 disposition = FILE_CREATE;
322 else if (oflags & O_TRUNC)
323 disposition = FILE_OVERWRITE_IF;
324 else
325 disposition = FILE_OPEN_IF;
326 } else if (oflags & O_TMPFILE) {
327 disposition = FILE_CREATE;
328 } else {
329 cifs_dbg(FYI, "Create flag not set in create function\n");
330 }
331
332 /*
333 * BB add processing to set equivalent of mode - e.g. via CreateX with
334 * ACLs
335 */
336
337 if (!server->ops->open)
338 return -EOPNOTSUPP;
339
340 create_options |= cifs_open_create_options(oflags, create_options);
341 /*
342 * if we're not using unix extensions, see if we need to set
343 * ATTR_READONLY on the create call
344 */
345 if (!tcon->unix_ext && (mode & S_IWUGO) == 0)
346 create_options |= CREATE_OPTION_READONLY;
347
348
349 retry_open:
350 if (tcon->cfids && direntry->d_parent && server->dialect >= SMB30_PROT_ID) {
351 parent_cfid = NULL;
352 spin_lock(&tcon->cfids->cfid_list_lock);
353 list_for_each_entry(parent_cfid, &tcon->cfids->entries, entry) {
354 if (parent_cfid->dentry == direntry->d_parent) {
355 cifs_dbg(FYI, "found a parent cached file handle\n");
356 if (is_valid_cached_dir(parent_cfid)) {
357 lease_flags
358 |= SMB2_LEASE_FLAG_PARENT_LEASE_KEY_SET_LE;
359 memcpy(fid->parent_lease_key,
360 parent_cfid->fid.lease_key,
361 SMB2_LEASE_KEY_SIZE);
362 parent_cfid->dirents.is_valid = false;
363 parent_cfid->dirents.is_failed = true;
364 }
365 break;
366 }
367 }
368 spin_unlock(&tcon->cfids->cfid_list_lock);
369 }
370
371 oparms = (struct cifs_open_parms) {
372 .tcon = tcon,
373 .cifs_sb = cifs_sb,
374 .desired_access = desired_access,
375 .create_options = cifs_create_options(cifs_sb, create_options),
376 .disposition = disposition,
377 .path = full_path,
378 .fid = fid,
379 .lease_flags = lease_flags,
380 .mode = mode,
381 };
382 rc = server->ops->open(xid, &oparms, oplock, buf);
383 if (rc) {
384 cifs_dbg(FYI, "cifs_create returned 0x%x\n", rc);
385 if (rc == -EACCES && rdwr_for_fscache == 1) {
386 desired_access &= ~GENERIC_READ;
387 rdwr_for_fscache = 2;
388 goto retry_open;
389 }
390 return rc;
391 }
392 if (rdwr_for_fscache == 2)
393 cifs_invalidate_cache(dir, FSCACHE_INVAL_DIO_WRITE);
394
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: fs/smb/client/dir.c:248:10: error: use of undeclared label 'out'
2026-05-01 17:27 fs/smb/client/dir.c:248:10: error: use of undeclared label 'out' kernel test robot
@ 2026-05-11 10:07 ` Christian Brauner
0 siblings, 0 replies; 2+ messages in thread
From: Christian Brauner @ 2026-05-11 10:07 UTC (permalink / raw)
To: kernel test robot
Cc: Dorjoy Chowdhury, oe-kbuild-all, Christian Brauner, Jeff Layton,
Aleksa Sarai
On Sat, May 02, 2026 at 01:27:11AM +0800, kernel test robot wrote:
> tree: https://github.com/brauner/linux.git vfs-7.2.openat.regular
> head: be7728badbd230f1ee7beba4162383fa022ae767
> commit: 93306cec35846eebf467d63a775fa711d7106b2e openat2: new OPENAT2_REGULAR flag support
> date: 2 weeks ago
> config: i386-randconfig-141-20260501 (https://download.01.org/0day-ci/archive/20260502/202605020138.EI8o7MFz-lkp@intel.com/config)
> compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
> smatch: v0.5.0-9065-ge9cc34fd
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260502/202605020138.EI8o7MFz-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/202605020138.EI8o7MFz-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> >> fs/smb/client/dir.c:248:10: error: use of undeclared label 'out'
> 248 | goto out;
> | ^
> 1 error generated.
>
>
> vim +/out +248 fs/smb/client/dir.c
>
> 199
> 200 /* Inode operations in similar order to how they appear in Linux file fs.h */
> 201 static int __cifs_do_create(struct inode *dir, struct dentry *direntry,
> 202 const char *full_path, unsigned int xid,
> 203 struct tcon_link *tlink, unsigned int oflags,
> 204 umode_t mode, __u32 *oplock, struct cifs_fid *fid,
> 205 struct cifs_open_info_data *buf,
> 206 struct inode **inode)
> 207 {
> 208 int rc = -ENOENT;
> 209 int create_options = CREATE_NOT_DIR;
> 210 int desired_access;
> 211 struct cifs_sb_info *cifs_sb = CIFS_SB(dir);
> 212 struct cifs_tcon *tcon = tlink_tcon(tlink);
> 213 struct inode *newinode = NULL;
> 214 unsigned int sbflags = cifs_sb_flags(cifs_sb);
> 215 int disposition;
> 216 struct TCP_Server_Info *server = tcon->ses->server;
> 217 struct cifs_open_parms oparms;
> 218 struct cached_fid *parent_cfid = NULL;
> 219 int rdwr_for_fscache = 0;
> 220 __le32 lease_flags = 0;
> 221
> 222 *inode = NULL;
> 223 *oplock = 0;
> 224 if (tcon->ses->server->oplocks)
> 225 *oplock = REQ_OPLOCK;
> 226
> 227 /* If we're caching, we need to be able to fill in around partial writes. */
> 228 if (cifs_fscache_enabled(dir) && (oflags & O_ACCMODE) == O_WRONLY)
> 229 rdwr_for_fscache = 1;
> 230
> 231 #ifdef CONFIG_CIFS_ALLOW_INSECURE_LEGACY
> 232 if (tcon->unix_ext && cap_unix(tcon->ses) && !tcon->broken_posix_open &&
> 233 (CIFS_UNIX_POSIX_PATH_OPS_CAP &
> 234 le64_to_cpu(tcon->fsUnixInfo.Capability))) {
> 235 rc = cifs_posix_open(full_path, &newinode, dir->i_sb, mode,
> 236 oflags, oplock, &fid->netfid, xid);
> 237 switch (rc) {
> 238 case 0:
> 239 if (newinode == NULL) {
> 240 /* query inode info */
> 241 goto cifs_create_get_file_info;
> 242 }
> 243
> 244 if ((oflags & OPENAT2_REGULAR) && !S_ISREG(newinode->i_mode)) {
> 245 CIFSSMBClose(xid, tcon, fid->netfid);
> 246 iput(newinode);
> 247 rc = -EFTYPE;
> > 248 goto out;
This should be a direct return. I folded that fix.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-05-11 10:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-01 17:27 fs/smb/client/dir.c:248:10: error: use of undeclared label 'out' kernel test robot
2026-05-11 10:07 ` Christian Brauner
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.