From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Tejun Heo <tj@kernel.org>
Cc: linux-kernel@vger.kernel.org, Kay Sievers <kay@vrfy.org>,
Ron <ron@debian.org>, Ben Hutchings <ben@decadent.org.uk>
Subject: Re: [PATCH driver-core-linus] sysfs: make sure read buffer is zeroed
Date: Mon, 19 May 2014 15:25:00 -0700 [thread overview]
Message-ID: <20140519222500.GA14616@kroah.com> (raw)
In-Reply-To: <20140519195210.GA27506@mtj.dyndns.org>
On Mon, May 19, 2014 at 03:52:10PM -0400, Tejun Heo wrote:
> 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 <tj@kernel.org>
> Reported-by: Ron <ron@debian.org>
> Fixes: 13c589d5b0ac ("sysfs: use seq_file when reading regular files")
> ---
> fs/sysfs/file.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
> index 28cc1acd..e9ef59b 100644
> --- a/fs/sysfs/file.c
> +++ b/fs/sysfs/file.c
> @@ -47,12 +47,13 @@ static int sysfs_kf_seq_show(struct seq_file *sf, void *v)
> 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
Thanks, I'll go queue this up.
greg k-h
next prev parent reply other threads:[~2014-05-19 22:25 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20140519172334.GK20439@audi.shelbyville.oz>
2014-05-19 19:52 ` [PATCH driver-core-linus] sysfs: make sure read buffer is zeroed Tejun Heo
2014-05-19 22:25 ` Greg Kroah-Hartman [this message]
2014-05-19 22:32 ` Joe Perches
2014-05-20 0:49 ` Tejun Heo
2014-05-20 1:25 ` Joe Perches
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140519222500.GA14616@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=ben@decadent.org.uk \
--cc=kay@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ron@debian.org \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.