diff options
Diffstat (limited to 'fs/open.c')
-rw-r--r-- | fs/open.c | 22 |
1 files changed, 2 insertions, 20 deletions
@@ -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 | */ | ||
813 | static struct file *do_filp_open(int dfd, const char *filename, int flags, | 799 | static 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 | ||