diff options
Diffstat (limited to 'fs/fat/namei_msdos.c')
-rw-r--r-- | fs/fat/namei_msdos.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/fs/fat/namei_msdos.c b/fs/fat/namei_msdos.c index 3345aabd1dd7..35ffe43afa4b 100644 --- a/fs/fat/namei_msdos.c +++ b/fs/fat/namei_msdos.c | |||
@@ -148,7 +148,8 @@ static int msdos_find(struct inode *dir, const unsigned char *name, int len, | |||
148 | * that the existing dentry can be used. The msdos fs routines will | 148 | * that the existing dentry can be used. The msdos fs routines will |
149 | * return ENOENT or EINVAL as appropriate. | 149 | * return ENOENT or EINVAL as appropriate. |
150 | */ | 150 | */ |
151 | static int msdos_hash(struct dentry *dentry, struct qstr *qstr) | 151 | static int msdos_hash(const struct dentry *dentry, const struct inode *inode, |
152 | struct qstr *qstr) | ||
152 | { | 153 | { |
153 | struct fat_mount_options *options = &MSDOS_SB(dentry->d_sb)->options; | 154 | struct fat_mount_options *options = &MSDOS_SB(dentry->d_sb)->options; |
154 | unsigned char msdos_name[MSDOS_NAME]; | 155 | unsigned char msdos_name[MSDOS_NAME]; |
@@ -164,16 +165,18 @@ static int msdos_hash(struct dentry *dentry, struct qstr *qstr) | |||
164 | * Compare two msdos names. If either of the names are invalid, | 165 | * Compare two msdos names. If either of the names are invalid, |
165 | * we fall back to doing the standard name comparison. | 166 | * we fall back to doing the standard name comparison. |
166 | */ | 167 | */ |
167 | static int msdos_cmp(struct dentry *dentry, struct qstr *a, struct qstr *b) | 168 | static int msdos_cmp(const struct dentry *parent, const struct inode *pinode, |
169 | const struct dentry *dentry, const struct inode *inode, | ||
170 | unsigned int len, const char *str, const struct qstr *name) | ||
168 | { | 171 | { |
169 | struct fat_mount_options *options = &MSDOS_SB(dentry->d_sb)->options; | 172 | struct fat_mount_options *options = &MSDOS_SB(parent->d_sb)->options; |
170 | unsigned char a_msdos_name[MSDOS_NAME], b_msdos_name[MSDOS_NAME]; | 173 | unsigned char a_msdos_name[MSDOS_NAME], b_msdos_name[MSDOS_NAME]; |
171 | int error; | 174 | int error; |
172 | 175 | ||
173 | error = msdos_format_name(a->name, a->len, a_msdos_name, options); | 176 | error = msdos_format_name(name->name, name->len, a_msdos_name, options); |
174 | if (error) | 177 | if (error) |
175 | goto old_compare; | 178 | goto old_compare; |
176 | error = msdos_format_name(b->name, b->len, b_msdos_name, options); | 179 | error = msdos_format_name(str, len, b_msdos_name, options); |
177 | if (error) | 180 | if (error) |
178 | goto old_compare; | 181 | goto old_compare; |
179 | error = memcmp(a_msdos_name, b_msdos_name, MSDOS_NAME); | 182 | error = memcmp(a_msdos_name, b_msdos_name, MSDOS_NAME); |
@@ -182,8 +185,8 @@ out: | |||
182 | 185 | ||
183 | old_compare: | 186 | old_compare: |
184 | error = 1; | 187 | error = 1; |
185 | if (a->len == b->len) | 188 | if (name->len == len) |
186 | error = memcmp(a->name, b->name, a->len); | 189 | error = memcmp(name->name, str, len); |
187 | goto out; | 190 | goto out; |
188 | } | 191 | } |
189 | 192 | ||
@@ -224,10 +227,10 @@ static struct dentry *msdos_lookup(struct inode *dir, struct dentry *dentry, | |||
224 | } | 227 | } |
225 | out: | 228 | out: |
226 | unlock_super(sb); | 229 | unlock_super(sb); |
227 | dentry->d_op = &msdos_dentry_operations; | 230 | d_set_d_op(dentry, &msdos_dentry_operations); |
228 | dentry = d_splice_alias(inode, dentry); | 231 | dentry = d_splice_alias(inode, dentry); |
229 | if (dentry) | 232 | if (dentry) |
230 | dentry->d_op = &msdos_dentry_operations; | 233 | d_set_d_op(dentry, &msdos_dentry_operations); |
231 | return dentry; | 234 | return dentry; |
232 | 235 | ||
233 | error: | 236 | error: |
@@ -670,7 +673,7 @@ static int msdos_fill_super(struct super_block *sb, void *data, int silent) | |||
670 | } | 673 | } |
671 | 674 | ||
672 | sb->s_flags |= MS_NOATIME; | 675 | sb->s_flags |= MS_NOATIME; |
673 | sb->s_root->d_op = &msdos_dentry_operations; | 676 | d_set_d_op(sb->s_root, &msdos_dentry_operations); |
674 | unlock_super(sb); | 677 | unlock_super(sb); |
675 | return 0; | 678 | return 0; |
676 | } | 679 | } |