diff options
Diffstat (limited to 'fs/fat/dir.c')
-rw-r--r-- | fs/fat/dir.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/fs/fat/dir.c b/fs/fat/dir.c index d70d8f31f704..55e088cc0613 100644 --- a/fs/fat/dir.c +++ b/fs/fat/dir.c | |||
@@ -872,21 +872,23 @@ static int fat_get_short_entry(struct inode *dir, loff_t *pos, | |||
872 | } | 872 | } |
873 | 873 | ||
874 | /* | 874 | /* |
875 | * The ".." entry can not provide the "struct fat_slot_info" informations | 875 | * The ".." entry can not provide the "struct fat_slot_info" information |
876 | * for inode. So, this function provide the some informations only. | 876 | * for inode, nor a usable i_pos. So, this function provides some information |
877 | * only. | ||
878 | * | ||
879 | * Since this function walks through the on-disk inodes within a directory, | ||
880 | * callers are responsible for taking any locks necessary to prevent the | ||
881 | * directory from changing. | ||
877 | */ | 882 | */ |
878 | int fat_get_dotdot_entry(struct inode *dir, struct buffer_head **bh, | 883 | int fat_get_dotdot_entry(struct inode *dir, struct buffer_head **bh, |
879 | struct msdos_dir_entry **de, loff_t *i_pos) | 884 | struct msdos_dir_entry **de) |
880 | { | 885 | { |
881 | loff_t offset; | 886 | loff_t offset = 0; |
882 | 887 | ||
883 | offset = 0; | 888 | *de = NULL; |
884 | *bh = NULL; | ||
885 | while (fat_get_short_entry(dir, &offset, bh, de) >= 0) { | 889 | while (fat_get_short_entry(dir, &offset, bh, de) >= 0) { |
886 | if (!strncmp((*de)->name, MSDOS_DOTDOT, MSDOS_NAME)) { | 890 | if (!strncmp((*de)->name, MSDOS_DOTDOT, MSDOS_NAME)) |
887 | *i_pos = fat_make_i_pos(dir->i_sb, *bh, *de); | ||
888 | return 0; | 891 | return 0; |
889 | } | ||
890 | } | 892 | } |
891 | return -ENOENT; | 893 | return -ENOENT; |
892 | } | 894 | } |