Commit 57162361 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag '6.13-rc6-SMB3-client-fix' of git://git.samba.org/sfrench/cifs-2.6

Pull smb client fix from Steve French:

 - fix unneeded session setup retry due to stale password e.g. for DFS
   automounts

* tag '6.13-rc6-SMB3-client-fix' of git://git.samba.org/sfrench/cifs-2.6:
  smb: client: sync the root session and superblock context passwords before automounting
parents da60d154 20b1aa91
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -196,11 +196,28 @@ static struct vfsmount *cifs_do_automount(struct path *path)
	struct smb3_fs_context tmp;
	char *full_path;
	struct vfsmount *mnt;
	struct cifs_sb_info *mntpt_sb;
	struct cifs_ses *ses;

	if (IS_ROOT(mntpt))
		return ERR_PTR(-ESTALE);

	cur_ctx = CIFS_SB(mntpt->d_sb)->ctx;
	mntpt_sb = CIFS_SB(mntpt->d_sb);
	ses = cifs_sb_master_tcon(mntpt_sb)->ses;
	cur_ctx = mntpt_sb->ctx;

	/*
	 * At this point, the root session should be in the mntpt sb. We should
	 * bring the sb context passwords in sync with the root session's
	 * passwords. This would help prevent unnecessary retries and password
	 * swaps for automounts.
	 */
	mutex_lock(&ses->session_mutex);
	rc = smb3_sync_session_ctx_passwords(mntpt_sb, ses);
	mutex_unlock(&ses->session_mutex);

	if (rc)
		return ERR_PTR(rc);

	fc = fs_context_for_submount(path->mnt->mnt_sb->s_type, mntpt);
	if (IS_ERR(fc))