summaryrefslogtreecommitdiffstats
path: root/fs/reiserfs/item_ops.c
diff options
context:
space:
mode:
authorVladimir Saveliev <vs@namesys.com>2007-04-12 08:28:44 +0200
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-04-13 00:31:42 +0200
commit6d205f120547043de663315698dcf5f0eaa31b5c (patch)
treec2b4b8d41361d498bdf8abad6fc9d06086bab56d /fs/reiserfs/item_ops.c
parent[PATCH] md: fix calculation for size of filemap_attr array in md/bitmap (diff)
downloadlinux-6d205f120547043de663315698dcf5f0eaa31b5c.tar.xz
linux-6d205f120547043de663315698dcf5f0eaa31b5c.zip
[PATCH] reiserfs: fix key decrementing
This patch fixes a bug in function decrementing a key of stat data item. Offset of reiserfs keys are compared as signed values. To set key offset to maximal possible value maximal signed value has to be used. This bug is responsible for severe reiserfs filesystem corruption which shows itself as warning vs-13060. reiserfsck fixes this corruption by filesystem tree rebuilding. Signed-off-by: Vladimir Saveliev <vs@namesys.com> Cc: <reiserfs-dev@namesys.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'fs/reiserfs/item_ops.c')
-rw-r--r--fs/reiserfs/item_ops.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/reiserfs/item_ops.c b/fs/reiserfs/item_ops.c
index b9b423b22a8b..9475557ab499 100644
--- a/fs/reiserfs/item_ops.c
+++ b/fs/reiserfs/item_ops.c
@@ -23,7 +23,7 @@ static void sd_decrement_key(struct cpu_key *key)
{
key->on_disk_key.k_objectid--;
set_cpu_key_k_type(key, TYPE_ANY);
- set_cpu_key_k_offset(key, (loff_t) (-1));
+ set_cpu_key_k_offset(key, (loff_t)(~0ULL >> 1));
}
static int sd_is_left_mergeable(struct reiserfs_key *key, unsigned long bsize)