mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	init: add an init_unlink helper
Add a simple helper to unlink with a kernel space file name and switch the early init code over to it. Remove the now unused ksys_unlink. Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
		
							parent
							
								
									09267defa3
								
							
						
					
					
						commit
						8fb9f73e5a
					
				
					 7 changed files with 12 additions and 12 deletions
				
			
		| 
						 | 
					@ -37,3 +37,8 @@ int __init init_umount(const char *name, int flags)
 | 
				
			||||||
		return ret;
 | 
							return ret;
 | 
				
			||||||
	return path_umount(&path, flags);
 | 
						return path_umount(&path, flags);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int __init init_unlink(const char *pathname)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						return do_unlinkat(AT_FDCWD, getname_kernel(pathname));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,3 +3,4 @@
 | 
				
			||||||
int __init init_mount(const char *dev_name, const char *dir_name,
 | 
					int __init init_mount(const char *dev_name, const char *dir_name,
 | 
				
			||||||
		const char *type_page, unsigned long flags, void *data_page);
 | 
							const char *type_page, unsigned long flags, void *data_page);
 | 
				
			||||||
int __init init_umount(const char *name, int flags);
 | 
					int __init init_umount(const char *name, int flags);
 | 
				
			||||||
 | 
					int __init init_unlink(const char *pathname);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1273,13 +1273,6 @@ int compat_ksys_ipc(u32 call, int first, int second,
 | 
				
			||||||
 * The following kernel syscall equivalents are just wrappers to fs-internal
 | 
					 * The following kernel syscall equivalents are just wrappers to fs-internal
 | 
				
			||||||
 * functions. Therefore, provide stubs to be inlined at the callsites.
 | 
					 * functions. Therefore, provide stubs to be inlined at the callsites.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
extern long do_unlinkat(int dfd, struct filename *name);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static inline long ksys_unlink(const char __user *pathname)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	return do_unlinkat(AT_FDCWD, getname(pathname));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
long do_rmdir(int dfd, struct filename *name);
 | 
					long do_rmdir(int dfd, struct filename *name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline long ksys_rmdir(const char __user *pathname)
 | 
					static inline long ksys_rmdir(const char __user *pathname)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -16,7 +16,7 @@ extern int root_mountflags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline __init int create_dev(char *name, dev_t dev)
 | 
					static inline __init int create_dev(char *name, dev_t dev)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	ksys_unlink(name);
 | 
						init_unlink(name);
 | 
				
			||||||
	return ksys_mknod(name, S_IFBLK|0600, new_encode_dev(dev));
 | 
						return ksys_mknod(name, S_IFBLK|0600, new_encode_dev(dev));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -137,11 +137,11 @@ bool __init initrd_load(void)
 | 
				
			||||||
		 * mounted in the normal path.
 | 
							 * mounted in the normal path.
 | 
				
			||||||
		 */
 | 
							 */
 | 
				
			||||||
		if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) {
 | 
							if (rd_load_image("/initrd.image") && ROOT_DEV != Root_RAM0) {
 | 
				
			||||||
			ksys_unlink("/initrd.image");
 | 
								init_unlink("/initrd.image");
 | 
				
			||||||
			handle_initrd();
 | 
								handle_initrd();
 | 
				
			||||||
			return true;
 | 
								return true;
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ksys_unlink("/initrd.image");
 | 
						init_unlink("/initrd.image");
 | 
				
			||||||
	return false;
 | 
						return false;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -272,7 +272,7 @@ int __init rd_load_image(char *from)
 | 
				
			||||||
	fput(out_file);
 | 
						fput(out_file);
 | 
				
			||||||
out:
 | 
					out:
 | 
				
			||||||
	kfree(buf);
 | 
						kfree(buf);
 | 
				
			||||||
	ksys_unlink("/dev/ram");
 | 
						init_unlink("/dev/ram");
 | 
				
			||||||
	return res;
 | 
						return res;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,6 +12,7 @@
 | 
				
			||||||
#include <linux/file.h>
 | 
					#include <linux/file.h>
 | 
				
			||||||
#include <linux/memblock.h>
 | 
					#include <linux/memblock.h>
 | 
				
			||||||
#include <linux/namei.h>
 | 
					#include <linux/namei.h>
 | 
				
			||||||
 | 
					#include <linux/init_syscalls.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static ssize_t __init xwrite(struct file *file, const char *p, size_t count,
 | 
					static ssize_t __init xwrite(struct file *file, const char *p, size_t count,
 | 
				
			||||||
		loff_t *pos)
 | 
							loff_t *pos)
 | 
				
			||||||
| 
						 | 
					@ -301,7 +302,7 @@ static void __init clean_path(char *path, umode_t fmode)
 | 
				
			||||||
		if (S_ISDIR(st.mode))
 | 
							if (S_ISDIR(st.mode))
 | 
				
			||||||
			ksys_rmdir(path);
 | 
								ksys_rmdir(path);
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			ksys_unlink(path);
 | 
								init_unlink(path);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue