aboutsummaryrefslogtreecommitdiffstats
path: root/fs/open.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/open.c')
-rw-r--r--fs/open.c22
1 files changed, 2 insertions, 20 deletions
diff --git a/fs/open.c b/fs/open.c
index 3fa4e4ffce4c..5ab3f3f079c0 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -796,31 +796,13 @@ cleanup_file:
796 return ERR_PTR(error); 796 return ERR_PTR(error);
797} 797}
798 798
799/*
800 * Note that while the flag value (low two bits) for sys_open means:
801 * 00 - read-only
802 * 01 - write-only
803 * 10 - read-write
804 * 11 - special
805 * it is changed into
806 * 00 - no permissions needed
807 * 01 - read-permission
808 * 10 - write-permission
809 * 11 - read-write
810 * for the internal routines (ie open_namei()/follow_link() etc). 00 is
811 * used by symlinks.
812 */
813static struct file *do_filp_open(int dfd, const char *filename, int flags, 799static struct file *do_filp_open(int dfd, const char *filename, int flags,
814 int mode) 800 int mode)
815{ 801{
816 int namei_flags, error; 802 int error;
817 struct nameidata nd; 803 struct nameidata nd;
818 804
819 namei_flags = flags; 805 error = open_namei(dfd, filename, flags, mode, &nd);
820 if ((namei_flags+1) & O_ACCMODE)
821 namei_flags++;
822
823 error = open_namei(dfd, filename, namei_flags, mode, &nd);
824 if (!error) 806 if (!error)
825 return nameidata_to_filp(&nd, flags); 807 return nameidata_to_filp(&nd, flags);
826 808