mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	vfs: make removexattr retry once on ESTALE
Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
		
							parent
							
								
									bd9bbc9842
								
							
						
					
					
						commit
						12f0621299
					
				
					 1 changed files with 7 additions and 2 deletions
				
			
		|  | @ -645,8 +645,9 @@ SYSCALL_DEFINE2(removexattr, const char __user *, pathname, | ||||||
| { | { | ||||||
| 	struct path path; | 	struct path path; | ||||||
| 	int error; | 	int error; | ||||||
| 
 | 	unsigned int lookup_flags = LOOKUP_FOLLOW; | ||||||
| 	error = user_path(pathname, &path); | retry: | ||||||
|  | 	error = user_path_at(AT_FDCWD, pathname, lookup_flags, &path); | ||||||
| 	if (error) | 	if (error) | ||||||
| 		return error; | 		return error; | ||||||
| 	error = mnt_want_write(path.mnt); | 	error = mnt_want_write(path.mnt); | ||||||
|  | @ -655,6 +656,10 @@ SYSCALL_DEFINE2(removexattr, const char __user *, pathname, | ||||||
| 		mnt_drop_write(path.mnt); | 		mnt_drop_write(path.mnt); | ||||||
| 	} | 	} | ||||||
| 	path_put(&path); | 	path_put(&path); | ||||||
|  | 	if (retry_estale(error, lookup_flags)) { | ||||||
|  | 		lookup_flags |= LOOKUP_REVAL; | ||||||
|  | 		goto retry; | ||||||
|  | 	} | ||||||
| 	return error; | 	return error; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Jeff Layton
						Jeff Layton