This is a note to let you know that I've just added the patch titled

    sysfs: make sure read buffer is zeroed

to the 3.14-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     sysfs-make-sure-read-buffer-is-zeroed.patch
and it can be found in the queue-3.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From f5c16f29bf5e57ba4051fc7785ba7f035f798c71 Mon Sep 17 00:00:00 2001
From: Tejun Heo <[email protected]>
Date: Mon, 19 May 2014 15:52:10 -0400
Subject: sysfs: make sure read buffer is zeroed

From: Tejun Heo <[email protected]>

commit f5c16f29bf5e57ba4051fc7785ba7f035f798c71 upstream.

13c589d5b0ac ("sysfs: use seq_file when reading regular files")
switched sysfs from custom read implementation to seq_file to enable
later transition to kernfs.  After the change, the buffer passed to
->show() is acquired through seq_get_buf(); unfortunately, this
introduces a subtle behavior change.  Before the commit, the buffer
passed to ->show() was always zero as it was allocated using
get_zeroed_page().  Because seq_file doesn't clear buffers on
allocation and neither does seq_get_buf(), after the commit, depending
on the behavior of ->show(), we may end up exposing uninitialized data
to userland thus possibly altering userland visible behavior and
leaking information.

Fix it by explicitly clearing the buffer.

Signed-off-by: Tejun Heo <[email protected]>
Reported-by: Ron <[email protected]>
Fixes: 13c589d5b0ac ("sysfs: use seq_file when reading regular files")
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 fs/sysfs/file.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -47,12 +47,13 @@ static int sysfs_kf_seq_show(struct seq_
        ssize_t count;
        char *buf;
 
-       /* acquire buffer and ensure that it's >= PAGE_SIZE */
+       /* acquire buffer and ensure that it's >= PAGE_SIZE and clear */
        count = seq_get_buf(sf, &buf);
        if (count < PAGE_SIZE) {
                seq_commit(sf, -1);
                return 0;
        }
+       memset(buf, 0, PAGE_SIZE);
 
        /*
         * Invoke show().  Control may reach here via seq file lseek even


Patches currently in stable-queue which might be from [email protected] are

queue-3.14/kernfs-add-back-missing-error-check-in-kernfs_fop_mmap.patch
queue-3.14/percpu-make-pcpu_alloc_chunk-use-pcpu_mem_free-instead-of-kfree.patch
queue-3.14/workqueue-make-rescuer_thread-empty-wq-maydays-list-before-exiting.patch
queue-3.14/device_cgroup-rework-device-access-check-and-exception-checking.patch
queue-3.14/sysfs-make-sure-read-buffer-is-zeroed.patch
queue-3.14/device_cgroup-check-if-exception-removal-is-allowed.patch
queue-3.14/pata_at91-fix-ata_host_activate-failure-handling.patch
queue-3.14/workqueue-fix-bugs-in-wq_update_unbound_numa-failure-path.patch
queue-3.14/workqueue-fix-a-possible-race-condition-between-rescuer-and-pwq-release.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to