diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2016-05-27 21:22:04 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2016-05-29 19:07:07 -0400 |
commit | e0d508f1092db9a56cc6ed617f473a2704f7f683 (patch) | |
tree | 4456bbb2b853731a92dd61d8b1328082fa67ab3a | |
parent | 6f3fc1070be028170b0f4c0c326480c9fcd1da3e (diff) |
ufs: get rid of redundant checks
ufs_check_page() makes sure there's no entries with zero ->reclen
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | fs/ufs/dir.c | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/fs/ufs/dir.c b/fs/ufs/dir.c index 57dcceda17d6..fa3bda1a860f 100644 --- a/fs/ufs/dir.c +++ b/fs/ufs/dir.c | |||
@@ -279,12 +279,6 @@ struct ufs_dir_entry *ufs_find_entry(struct inode *dir, const struct qstr *qstr, | |||
279 | de = (struct ufs_dir_entry *) kaddr; | 279 | de = (struct ufs_dir_entry *) kaddr; |
280 | kaddr += ufs_last_byte(dir, n) - reclen; | 280 | kaddr += ufs_last_byte(dir, n) - reclen; |
281 | while ((char *) de <= kaddr) { | 281 | while ((char *) de <= kaddr) { |
282 | if (de->d_reclen == 0) { | ||
283 | ufs_error(dir->i_sb, __func__, | ||
284 | "zero-length directory entry"); | ||
285 | ufs_put_page(page); | ||
286 | goto out; | ||
287 | } | ||
288 | if (ufs_match(sb, namelen, name, de)) | 282 | if (ufs_match(sb, namelen, name, de)) |
289 | goto found; | 283 | goto found; |
290 | de = ufs_next_entry(sb, de); | 284 | de = ufs_next_entry(sb, de); |
@@ -414,11 +408,8 @@ ufs_validate_entry(struct super_block *sb, char *base, | |||
414 | { | 408 | { |
415 | struct ufs_dir_entry *de = (struct ufs_dir_entry*)(base + offset); | 409 | struct ufs_dir_entry *de = (struct ufs_dir_entry*)(base + offset); |
416 | struct ufs_dir_entry *p = (struct ufs_dir_entry*)(base + (offset&mask)); | 410 | struct ufs_dir_entry *p = (struct ufs_dir_entry*)(base + (offset&mask)); |
417 | while ((char*)p < (char*)de) { | 411 | while ((char*)p < (char*)de) |
418 | if (p->d_reclen == 0) | ||
419 | break; | ||
420 | p = ufs_next_entry(sb, p); | 412 | p = ufs_next_entry(sb, p); |
421 | } | ||
422 | return (char *)p - base; | 413 | return (char *)p - base; |
423 | } | 414 | } |
424 | 415 | ||
@@ -469,12 +460,6 @@ ufs_readdir(struct file *file, struct dir_context *ctx) | |||
469 | de = (struct ufs_dir_entry *)(kaddr+offset); | 460 | de = (struct ufs_dir_entry *)(kaddr+offset); |
470 | limit = kaddr + ufs_last_byte(inode, n) - UFS_DIR_REC_LEN(1); | 461 | limit = kaddr + ufs_last_byte(inode, n) - UFS_DIR_REC_LEN(1); |
471 | for ( ;(char*)de <= limit; de = ufs_next_entry(sb, de)) { | 462 | for ( ;(char*)de <= limit; de = ufs_next_entry(sb, de)) { |
472 | if (de->d_reclen == 0) { | ||
473 | ufs_error(sb, __func__, | ||
474 | "zero-length directory entry"); | ||
475 | ufs_put_page(page); | ||
476 | return -EIO; | ||
477 | } | ||
478 | if (de->d_ino) { | 463 | if (de->d_ino) { |
479 | unsigned char d_type = DT_UNKNOWN; | 464 | unsigned char d_type = DT_UNKNOWN; |
480 | 465 | ||