diff options
| -rw-r--r-- | fs/isofs/namei.c | 20 |
1 files changed, 2 insertions, 18 deletions
diff --git a/fs/isofs/namei.c b/fs/isofs/namei.c index 95295640d9c8..6f6dd0c6429f 100644 --- a/fs/isofs/namei.c +++ b/fs/isofs/namei.c | |||
| @@ -18,23 +18,6 @@ static int | |||
| 18 | isofs_cmp(struct dentry *dentry, const char *compare, int dlen) | 18 | isofs_cmp(struct dentry *dentry, const char *compare, int dlen) |
| 19 | { | 19 | { |
| 20 | struct qstr qstr; | 20 | struct qstr qstr; |
| 21 | |||
| 22 | if (!compare) | ||
| 23 | return 1; | ||
| 24 | |||
| 25 | /* check special "." and ".." files */ | ||
| 26 | if (dlen == 1) { | ||
| 27 | /* "." */ | ||
| 28 | if (compare[0] == 0) { | ||
| 29 | if (!dentry->d_name.len) | ||
| 30 | return 0; | ||
| 31 | compare = "."; | ||
| 32 | } else if (compare[0] == 1) { | ||
| 33 | compare = ".."; | ||
| 34 | dlen = 2; | ||
| 35 | } | ||
| 36 | } | ||
| 37 | |||
| 38 | qstr.name = compare; | 21 | qstr.name = compare; |
| 39 | qstr.len = dlen; | 22 | qstr.len = dlen; |
| 40 | return dentry->d_op->d_compare(NULL, NULL, dentry->d_name.len, dentry->d_name.name, &qstr); | 23 | return dentry->d_op->d_compare(NULL, NULL, dentry->d_name.len, dentry->d_name.name, &qstr); |
| @@ -146,7 +129,8 @@ isofs_find_entry(struct inode *dir, struct dentry *dentry, | |||
| 146 | (!(de->flags[-sbi->s_high_sierra] & 1))) && | 129 | (!(de->flags[-sbi->s_high_sierra] & 1))) && |
| 147 | (sbi->s_showassoc || | 130 | (sbi->s_showassoc || |
| 148 | (!(de->flags[-sbi->s_high_sierra] & 4)))) { | 131 | (!(de->flags[-sbi->s_high_sierra] & 4)))) { |
| 149 | match = (isofs_cmp(dentry, dpnt, dlen) == 0); | 132 | if (dpnt && (dlen > 1 || dpnt[0] > 1)) |
| 133 | match = (isofs_cmp(dentry, dpnt, dlen) == 0); | ||
| 150 | } | 134 | } |
| 151 | if (match) { | 135 | if (match) { |
| 152 | isofs_normalize_block_and_offset(de, | 136 | isofs_normalize_block_and_offset(de, |
