mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	VFS: Fix the remaining automounter semantics regressions
The concensus seems to be that system calls such as stat() etc should not trigger an automount. Neither should the l* versions. This patch therefore adds a LOOKUP_AUTOMOUNT flag to tag those lookups that _should_ trigger an automount on the last path element. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> [ Edited to leave out the cases that are already covered by LOOKUP_OPEN, LOOKUP_DIRECTORY and LOOKUP_CREATE - all of which also fundamentally force automounting for their own reasons - Linus ] Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									d94c177bee
								
							
						
					
					
						commit
						815d405cef
					
				
					 3 changed files with 3 additions and 3 deletions
				
			
		| 
						 | 
					@ -1757,7 +1757,7 @@ static int do_loopback(struct path *path, char *old_name,
 | 
				
			||||||
		return err;
 | 
							return err;
 | 
				
			||||||
	if (!old_name || !*old_name)
 | 
						if (!old_name || !*old_name)
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
	err = kern_path(old_name, LOOKUP_FOLLOW, &old_path);
 | 
						err = kern_path(old_name, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &old_path);
 | 
				
			||||||
	if (err)
 | 
						if (err)
 | 
				
			||||||
		return err;
 | 
							return err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2798,7 +2798,7 @@ static struct dentry *nfs_follow_remote_path(struct vfsmount *root_mnt,
 | 
				
			||||||
		goto out_put_mnt_ns;
 | 
							goto out_put_mnt_ns;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	ret = vfs_path_lookup(root_mnt->mnt_root, root_mnt,
 | 
						ret = vfs_path_lookup(root_mnt->mnt_root, root_mnt,
 | 
				
			||||||
			export_path, LOOKUP_FOLLOW, &path);
 | 
								export_path, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &path);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	nfs_referral_loop_unprotect();
 | 
						nfs_referral_loop_unprotect();
 | 
				
			||||||
	put_mnt_ns(ns_private);
 | 
						put_mnt_ns(ns_private);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -355,7 +355,7 @@ SYSCALL_DEFINE4(quotactl, unsigned int, cmd, const char __user *, special,
 | 
				
			||||||
	 * resolution (think about autofs) and thus deadlocks could arise.
 | 
						 * resolution (think about autofs) and thus deadlocks could arise.
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	if (cmds == Q_QUOTAON) {
 | 
						if (cmds == Q_QUOTAON) {
 | 
				
			||||||
		ret = user_path_at(AT_FDCWD, addr, LOOKUP_FOLLOW, &path);
 | 
							ret = user_path_at(AT_FDCWD, addr, LOOKUP_FOLLOW|LOOKUP_AUTOMOUNT, &path);
 | 
				
			||||||
		if (ret)
 | 
							if (ret)
 | 
				
			||||||
			pathp = ERR_PTR(ret);
 | 
								pathp = ERR_PTR(ret);
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue