[PATCH 4.9 082/125] ubifs: Dont leak kernel memory to the MTD

2017-07-25 Thread Greg Kroah-Hartman
4.9-stable review patch.  If anyone has any objections, please let me know.

--

From: Richard Weinberger 

commit 4acadda74ff8b949c448c0282765ae747e088c87 upstream.

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.

Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
Signed-off-by: Richard Weinberger 
Reviewed-by: Boris Brezillon 
Signed-off-by: Richard Weinberger 
Signed-off-by: Greg Kroah-Hartman 

---
 fs/ubifs/journal.c |   10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

--- a/fs/ubifs/journal.c
+++ b/fs/ubifs/journal.c
@@ -576,7 +576,7 @@ int ubifs_jnl_update(struct ubifs_info *
/* 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;
 
@@ -952,7 +952,7 @@ int ubifs_jnl_xrename(struct ubifs_info
if (twoparents)
len += plen;
 
-   dent1 = kmalloc(len, GFP_NOFS);
+   dent1 = kzalloc(len, GFP_NOFS);
if (!dent1)
return -ENOMEM;
 
@@ -1102,7 +1102,7 @@ int ubifs_jnl_rename(struct ubifs_info *
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;
 
@@ -1466,7 +1466,7 @@ int ubifs_jnl_delete_xattr(struct ubifs_
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;
 
@@ -1573,7 +1573,7 @@ int ubifs_jnl_change_xattr(struct ubifs_
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;
 




[PATCH 4.9 082/125] ubifs: Dont leak kernel memory to the MTD

2017-07-25 Thread Greg Kroah-Hartman
4.9-stable review patch.  If anyone has any objections, please let me know.

--

From: Richard Weinberger 

commit 4acadda74ff8b949c448c0282765ae747e088c87 upstream.

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.

Fixes: 1e51764a3c2a ("UBIFS: add new flash file system")
Signed-off-by: Richard Weinberger 
Reviewed-by: Boris Brezillon 
Signed-off-by: Richard Weinberger 
Signed-off-by: Greg Kroah-Hartman 

---
 fs/ubifs/journal.c |   10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

--- a/fs/ubifs/journal.c
+++ b/fs/ubifs/journal.c
@@ -576,7 +576,7 @@ int ubifs_jnl_update(struct ubifs_info *
/* 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;
 
@@ -952,7 +952,7 @@ int ubifs_jnl_xrename(struct ubifs_info
if (twoparents)
len += plen;
 
-   dent1 = kmalloc(len, GFP_NOFS);
+   dent1 = kzalloc(len, GFP_NOFS);
if (!dent1)
return -ENOMEM;
 
@@ -1102,7 +1102,7 @@ int ubifs_jnl_rename(struct ubifs_info *
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;
 
@@ -1466,7 +1466,7 @@ int ubifs_jnl_delete_xattr(struct ubifs_
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;
 
@@ -1573,7 +1573,7 @@ int ubifs_jnl_change_xattr(struct ubifs_
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;