From 97ada36338a25ca38e22c430e6ffe91e3d76edb6 Mon Sep 17 00:00:00 2001 From: Dave Chinner Date: Tue, 8 Jul 2014 10:31:36 +1000 Subject: [PATCH] xfs_db: write command broken on 64 bit values convert_args() has problesm with 64 bit fields because it tries to shift them by 64 bits. The result of doing so is undefined by the C standard, and so results in the unexpected behaviour of the result being being the original value unchanged rather than 0. Hence you can't write 64 bit fields because the code thinks that all values other than 0 are out of range. Signed-off-by: Dave Chinner Reviewed-by: Christoph Hellwig Signed-off-by: Dave Chinner --- db/write.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/write.c b/db/write.c index ca8bd0fd1..0157a44ff 100644 --- a/db/write.c +++ b/db/write.c @@ -565,7 +565,7 @@ convert_arg( return NULL; /* Does the value fit into the range of the destination bitfield? */ - if ((val >> bit_length) > 0) + if (bit_length < 64 && (val >> bit_length) > 0) return NULL; /* * If the length of the field is not a multiple of a byte, push -- 2.47.2