]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
dcache: fix kmemcheck warning in switch_names
authorMikulas Patocka <mpatocka@redhat.com>
Fri, 5 Sep 2014 16:16:01 +0000 (12:16 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 19 Nov 2014 18:01:26 +0000 (13:01 -0500)
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>
fs/dcache.c

index 435991eada1ef554a8f724a602dc951f14050c3e..a6c5d7e9d622c7137b71b6f5b3b0da8c43a949c0 100644 (file)
@@ -2360,6 +2360,8 @@ static void swap_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);
                        for (i = 0; i < DNAME_INLINE_LEN / sizeof(long); i++) {
                                swap(((long *) &dentry->d_iname)[i],
                                     ((long *) &target->d_iname)[i]);