]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerLuis Henriques <luis.henriques@canonical.com>
Mon, 5 Jan 2015 13:48:46 +0000 (13:48 +0000)
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>
[ luis: backported to 3.16: adjusted context ]
Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
fs/dcache.c

index 1d8b6a31082250df0e2fbd0ee8d3779492dbaee0..e43ac3ca37e6e289fda5cff5ecdd5186ad5a6ce4 100644 (file)
@@ -2436,6 +2436,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);