aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorMikulas Patocka <mpatocka@redhat.com>2014-09-05 12:16:01 -0400
committerAl Viro <viro@zeniv.linux.org.uk>2014-11-19 13:01:26 -0500
commit08d4f7722268755ee34ed1c9e8afee7dfff022bb (patch)
tree5bdff1bad7fb49dd18102dc2d42f9638d8a5dfc8 /fs
parent9f45f5bf302daad6835ce64701fb3c286a2cc6af (diff)
dcache: fix kmemcheck warning in switch_names
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> Cc: stable@vger.kernel.org # v3.15 Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs')
-rw-r--r--fs/dcache.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/dcache.c b/fs/dcache.c
index 435991eada1e..a6c5d7e9d622 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -2360,6 +2360,8 @@ static void swap_names(struct dentry *dentry, struct dentry *target)
2360 */ 2360 */
2361 unsigned int i; 2361 unsigned int i;
2362 BUILD_BUG_ON(!IS_ALIGNED(DNAME_INLINE_LEN, sizeof(long))); 2362 BUILD_BUG_ON(!IS_ALIGNED(DNAME_INLINE_LEN, sizeof(long)));
2363 kmemcheck_mark_initialized(dentry->d_iname, DNAME_INLINE_LEN);
2364 kmemcheck_mark_initialized(target->d_iname, DNAME_INLINE_LEN);
2363 for (i = 0; i < DNAME_INLINE_LEN / sizeof(long); i++) { 2365 for (i = 0; i < DNAME_INLINE_LEN / sizeof(long); i++) {
2364 swap(((long *) &dentry->d_iname)[i], 2366 swap(((long *) &dentry->d_iname)[i],
2365 ((long *) &target->d_iname)[i]); 2367 ((long *) &target->d_iname)[i]);