mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 08:44:41 +00:00 
			
		
		
		
	cred_guard_mutex: do not return -EINTR to user-space
do_execve() and ptrace_attach() return -EINTR if mutex_lock_interruptible(->cred_guard_mutex) fails. This is not right, change the code to return ERESTARTNOINTR. Perhaps we should also change proc_pid_attr_write(). Signed-off-by: Oleg Nesterov <oleg@redhat.com> Cc: David Howells <dhowells@redhat.com> Acked-by: Roland McGrath <roland@redhat.com> Cc: James Morris <jmorris@namei.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									82e3310ace
								
							
						
					
					
						commit
						793285fcaf
					
				
					 3 changed files with 6 additions and 6 deletions
				
			
		|  | @ -1486,8 +1486,8 @@ int compat_do_execve(char * filename, | ||||||
| 	if (!bprm) | 	if (!bprm) | ||||||
| 		goto out_files; | 		goto out_files; | ||||||
| 
 | 
 | ||||||
| 	retval = mutex_lock_interruptible(¤t->cred_guard_mutex); | 	retval = -ERESTARTNOINTR; | ||||||
| 	if (retval < 0) | 	if (mutex_lock_interruptible(¤t->cred_guard_mutex)) | ||||||
| 		goto out_free; | 		goto out_free; | ||||||
| 	current->in_execve = 1; | 	current->in_execve = 1; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1277,8 +1277,8 @@ int do_execve(char * filename, | ||||||
| 	if (!bprm) | 	if (!bprm) | ||||||
| 		goto out_files; | 		goto out_files; | ||||||
| 
 | 
 | ||||||
| 	retval = mutex_lock_interruptible(¤t->cred_guard_mutex); | 	retval = -ERESTARTNOINTR; | ||||||
| 	if (retval < 0) | 	if (mutex_lock_interruptible(¤t->cred_guard_mutex)) | ||||||
| 		goto out_free; | 		goto out_free; | ||||||
| 	current->in_execve = 1; | 	current->in_execve = 1; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -181,8 +181,8 @@ int ptrace_attach(struct task_struct *task) | ||||||
| 	 * interference; SUID, SGID and LSM creds get determined differently | 	 * interference; SUID, SGID and LSM creds get determined differently | ||||||
| 	 * under ptrace. | 	 * under ptrace. | ||||||
| 	 */ | 	 */ | ||||||
| 	retval = mutex_lock_interruptible(&task->cred_guard_mutex); | 	retval = -ERESTARTNOINTR; | ||||||
| 	if (retval < 0) | 	if (mutex_lock_interruptible(&task->cred_guard_mutex)) | ||||||
| 		goto out; | 		goto out; | ||||||
| 
 | 
 | ||||||
| 	task_lock(task); | 	task_lock(task); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Oleg Nesterov
						Oleg Nesterov