summaryrefslogtreecommitdiffstats
path: root/fs/hfsplus/xattr.c
diff options
context:
space:
mode:
authorSergei Antonov <saproj@gmail.com>2014-06-06 14:36:28 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-06 16:08:10 -0700
commit2cd282a1bc6b9d111b8beee63bea0af735a8a1aa (patch)
tree80dff1bb5f089868bdbee433b0308098b2c2e6b4 /fs/hfsplus/xattr.c
parent915ab236d3c491f9bb0f6596d03e25b37f4d5a20 (diff)
downloadop-kernel-dev-2cd282a1bc6b9d111b8beee63bea0af735a8a1aa.zip
op-kernel-dev-2cd282a1bc6b9d111b8beee63bea0af735a8a1aa.tar.gz
hfsplus: fix "unused node is not erased" error
Zero newly allocated extents in the catalog tree if volume attributes tell us to. Not doing so we risk getting the "unused node is not erased" error. See kHFSUnusedNodeFix flag in Apple's source code for reference. There was a previous commit clearing the node when it is freed: commit 899bed05e9f6 ("hfsplus: fix issue with unzeroed unused b-tree nodes"). But it did not handle newly allocated extents (this patch fixes it). And it zeroed nodes in all trees unconditionally which is an overkill. This patch adds a condition and also switches to 'tree->node_size' as a simpler method of getting the length to zero. Signed-off-by: Sergei Antonov <saproj@gmail.com> Cc: Anton Altaparmakov <aia21@cam.ac.uk> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Christoph Hellwig <hch@infradead.org> Cc: Vyacheslav Dubeyko <slava@dubeyko.com> Cc: Hin-Tak Leung <htl10@users.sourceforge.net> Cc: Kyle Laracey <kalaracey@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/hfsplus/xattr.c')
-rw-r--r--fs/hfsplus/xattr.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/hfsplus/xattr.c b/fs/hfsplus/xattr.c
index c03c946..aab093c 100644
--- a/fs/hfsplus/xattr.c
+++ b/fs/hfsplus/xattr.c
@@ -196,7 +196,7 @@ check_attr_tree_state_again:
}
while (hip->alloc_blocks < hip->clump_blocks) {
- err = hfsplus_file_extend(attr_file);
+ err = hfsplus_file_extend(attr_file, false);
if (unlikely(err)) {
pr_err("failed to extend attributes file\n");
goto end_attr_file_creation;
OpenPOWER on IntegriCloud