kill do_filp_open()
RFC PATCH 1/1 kill do_filp_open()
This kills off the almost empty do_filp_open(). However, let's keep filp_open() around. It does the nameidata allocation on the stack, and also adds the AT_FDCWD argument. I think that's enough to keep it around.
---
lxc-dave/fs/open.c | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-)
fs/open.c renamed from fs/open.c~kill-do_filp_open +18 -22
@@ -840,18 +840,10 @@ cleanup_file:return ERR_PTR (error); } -static struct file *do_filp_open (int dfd,const char *filename,int flags, -int mode) -{ -int error; -struct nameidata nd; - -return open_namei (dfd, filename, flags, mode, &nd); -} -struct file *filp_open (const char *filename,int flags,int mode) { -return do_filp_open (AT_FDCWD , filename, flags, mode); +struct nameidata nd; +return open_namei (AT_FDCWD , filename, flags, mode, &nd); }EXPORT_SYMBOL (filp_open);
@@ -1050,20 +1042,24 @@ long do_sys_open(int dfd, const char __uchar *tmp =getname (filename);int fd =PTR_ERR (tmp); -if (!IS_ERR (tmp)) { - fd =get_unused_fd_flags (flags); -if (fd >=0 ) { -struct file *f =do_filp_open (dfd, tmp, flags, mode); -if (IS_ERR (f)) { -put_unused_fd (fd); - fd =PTR_ERR (f); - }else { -fsnotify_open (f->f_path.dentry); -fd_install (fd, f); - } +if (IS_ERR (tmp)) + goto out; + + fd =get_unused_fd_flags (flags); +if (fd >=0 ) { +struct nameidata nd; +struct file *f =open_namei (dfd, tmp, flags, mode, &nd); + +if (IS_ERR (f)) { +put_unused_fd (fd); + fd =PTR_ERR (f); + }else { +fsnotify_open (f->f_path.dentry); +fd_install (fd, f); } -putname (tmp); } +putname (tmp); +out:return fd; }
_
Quoted 5 lines · Dave Hansen
This kills off the almost empty
do_filp_open(). However, let's keepfilp_open()around. It does the nameidata allocation on the stack, and also adds theAT_FDCWDargument. I think that's enough to keep it around.
So why would we not want to allocate the nameidata in open_namei?