mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-01 00:58:39 +02:00 
			
		
		
		
	vfs: define kernel_copy_file_from_fd()
This patch defines kernel_read_file_from_fd(), a wrapper for the VFS common kernel_read_file(). Changelog: - Separated from the kernel modules patch Acked-by: Kees Cook <keescook@chromium.org> Acked-by: Luis R. Rodriguez <mcgrof@kernel.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
This commit is contained in:
		
							parent
							
								
									39eeb4fb97
								
							
						
					
					
						commit
						b844f0ecbc
					
				
					 2 changed files with 18 additions and 0 deletions
				
			
		
							
								
								
									
										16
									
								
								fs/exec.c
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								fs/exec.c
									
									
									
									
									
								
							|  | @ -907,6 +907,22 @@ int kernel_read_file_from_path(char *path, void **buf, loff_t *size, | ||||||
| } | } | ||||||
| EXPORT_SYMBOL_GPL(kernel_read_file_from_path); | EXPORT_SYMBOL_GPL(kernel_read_file_from_path); | ||||||
| 
 | 
 | ||||||
|  | int kernel_read_file_from_fd(int fd, void **buf, loff_t *size, loff_t max_size, | ||||||
|  | 			     enum kernel_read_file_id id) | ||||||
|  | { | ||||||
|  | 	struct fd f = fdget(fd); | ||||||
|  | 	int ret = -EBADF; | ||||||
|  | 
 | ||||||
|  | 	if (!f.file) | ||||||
|  | 		goto out; | ||||||
|  | 
 | ||||||
|  | 	ret = kernel_read_file(f.file, buf, size, max_size, id); | ||||||
|  | out: | ||||||
|  | 	fdput(f); | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
|  | EXPORT_SYMBOL_GPL(kernel_read_file_from_fd); | ||||||
|  | 
 | ||||||
| ssize_t read_code(struct file *file, unsigned long addr, loff_t pos, size_t len) | ssize_t read_code(struct file *file, unsigned long addr, loff_t pos, size_t len) | ||||||
| { | { | ||||||
| 	ssize_t res = vfs_read(file, (void __user *)addr, len, &pos); | 	ssize_t res = vfs_read(file, (void __user *)addr, len, &pos); | ||||||
|  |  | ||||||
|  | @ -2586,6 +2586,8 @@ extern int kernel_read_file(struct file *, void **, loff_t *, loff_t, | ||||||
| 			    enum kernel_read_file_id); | 			    enum kernel_read_file_id); | ||||||
| extern int kernel_read_file_from_path(char *, void **, loff_t *, loff_t, | extern int kernel_read_file_from_path(char *, void **, loff_t *, loff_t, | ||||||
| 				      enum kernel_read_file_id); | 				      enum kernel_read_file_id); | ||||||
|  | extern int kernel_read_file_from_fd(int, void **, loff_t *, loff_t, | ||||||
|  | 				    enum kernel_read_file_id); | ||||||
| extern ssize_t kernel_write(struct file *, const char *, size_t, loff_t); | extern ssize_t kernel_write(struct file *, const char *, size_t, loff_t); | ||||||
| extern ssize_t __kernel_write(struct file *, const char *, size_t, loff_t *); | extern ssize_t __kernel_write(struct file *, const char *, size_t, loff_t *); | ||||||
| extern struct file * open_exec(const char *); | extern struct file * open_exec(const char *); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Mimi Zohar
						Mimi Zohar