diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-28 15:59:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-07-28 15:59:05 -0400 |
commit | 6784725ab0b9473ce44bfad91a256bd72b5cddc1 (patch) | |
tree | f31e2bfc4795c2ee490b0eb9fb752be58060568f /fs/ufs | |
parent | 554828ee0db41618d101d9549db8808af9fd9d65 (diff) | |
parent | 47be61845c775643f1aa4d2a54343549f943c94c (diff) |
Merge branch 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs updates from Al Viro:
"Assorted cleanups and fixes.
Probably the most interesting part long-term is ->d_init() - that will
have a bunch of followups in (at least) ceph and lustre, but we'll
need to sort the barrier-related rules before it can get used for
really non-trivial stuff.
Another fun thing is the merge of ->d_iput() callers (dentry_iput()
and dentry_unlink_inode()) and a bunch of ->d_compare() ones (all
except the one in __d_lookup_lru())"
* 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (26 commits)
fs/dcache.c: avoid soft-lockup in dput()
vfs: new d_init method
vfs: Update lookup_dcache() comment
bdev: get rid of ->bd_inodes
Remove last traces of ->sync_page
new helper: d_same_name()
dentry_cmp(): use lockless_dereference() instead of smp_read_barrier_depends()
vfs: clean up documentation
vfs: document ->d_real()
vfs: merge .d_select_inode() into .d_real()
unify dentry_iput() and dentry_unlink_inode()
binfmt_misc: ->s_root is not going anywhere
drop redundant ->owner initializations
ufs: get rid of redundant checks
orangefs: constify inode_operations
missed comment updates from ->direct_IO() prototype change
file_inode(f)->i_mapping is f->f_mapping
trim fsnotify hooks a bit
9p: new helper - v9fs_parent_fid()
debugfs: ->d_parent is never NULL or negative
...
Diffstat (limited to 'fs/ufs')
-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 | ||