FAILED: patch "[PATCH] ubifs: Don't leak kernel memory to the MTD" failed to apply to 4.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
4acadda74ff8b949c448c0282765ae747e088c87Mon Sep 17 00:00:00 2001
From: Richard Weinberger <[email protected]>
Date: Fri, 16 Jun 2017 16:21:44 +0200
Subject: [PATCH] ubifs: Don't leak kernel memory to the MTD
When UBIFS prepares data structures which will be written to the MTD it ensues that their lengths are multiple of 8. Since it uses kmalloc() the padded bytes are left uninitialized and we leak a few bytes of kernel memory to the MTD.
To make sure that all bytes are initialized, let's switch to kzalloc(). Kzalloc() is fine in this case because the buffers are not huge and in the IO path the performance bottleneck is anyway the MTD.
fs/ubifs/journal.c +5 -5
@@ -572,7 +572,7 @@ int ubifs_jnl_update(struct ubifs_info *c, const struct inode *dir,/* Make sure to also account for extended attributes */ len += host_ui->data_len; - dent =kmalloc (len,GFP_NOFS ); + dent =kzalloc (len,GFP_NOFS );if (!dent)return -ENOMEM ;
@@ -968,7 +968,7 @@ int ubifs_jnl_xrename(struct ubifs_info *c, const struct inode *fst_dir,if (twoparents) len += plen; - dent1 =kmalloc (len,GFP_NOFS ); + dent1 =kzalloc (len,GFP_NOFS );if (!dent1)return -ENOMEM ;
@@ -1116,7 +1116,7 @@ int ubifs_jnl_rename(struct ubifs_info *c, const struct inode *old_dir, len = aligned_dlen1 + aligned_dlen2 +ALIGN (ilen,8 ) +ALIGN (plen,8 );if (move) len += plen; - dent =kmalloc (len,GFP_NOFS ); + dent =kzalloc (len,GFP_NOFS );if (!dent)return -ENOMEM ;
@@ -1498,7 +1498,7 @@ int ubifs_jnl_delete_xattr(struct ubifs_info *c, const struct inode *host, hlen = host_ui->data_len +UBIFS_INO_NODE_SZ ; len = aligned_xlen +UBIFS_INO_NODE_SZ +ALIGN (hlen,8 ); - xent =kmalloc (len,GFP_NOFS ); + xent =kzalloc (len,GFP_NOFS );if (!xent)return -ENOMEM ;
@@ -1605,7 +1605,7 @@ int ubifs_jnl_change_xattr(struct ubifs_info *c, const struct inode *inode, aligned_len1 =ALIGN (len1,8 ); aligned_len = aligned_len1 +ALIGN (len2,8 ); - ino =kmalloc (aligned_len,GFP_NOFS ); + ino =kzalloc (aligned_len,GFP_NOFS );if (!ino)return -ENOMEM ;