summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikulas Patocka <mpatocka@redhat.com>2014-09-05 12:16:01 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-01-08 10:27:45 -0800
commitea1d1408bcb9ad16a3d43a931cc5df9d8418036f (patch)
tree6dbf87616caa27b9ec1e8a67f5f3d117684ec1f4
parentc69637cbf42badaaac12d0a9a8eb7bbf53e73633 (diff)
dcache: fix kmemcheck warning in switch_names
commit 08d4f7722268755ee34ed1c9e8afee7dfff022bb upstream. This patch fixes kmemcheck warning in switch_names. The function switch_names swaps inline names of two dentries. It swaps full arrays d_iname, no matter how many bytes are really used by the strings. Reading data beyond string ends results in kmemcheck warning. We fix the bug by marking both arrays as fully initialized. Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--fs/dcache.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/dcache.c b/fs/dcache.c
index 34b40be8af11..47caaec45df2 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -2407,6 +2407,8 @@ static void switch_names(struct dentry *dentry, struct dentry *target,
*/
unsigned int i;
BUILD_BUG_ON(!IS_ALIGNED(DNAME_INLINE_LEN, sizeof(long)));
+ kmemcheck_mark_initialized(dentry->d_iname, DNAME_INLINE_LEN);
+ kmemcheck_mark_initialized(target->d_iname, DNAME_INLINE_LEN);
if (!exchange) {
memcpy(dentry->d_iname, target->d_name.name,
target->d_name.len + 1);