From: Sasha Levin <sasha.levin@oracle.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Nicolai Stange <nicstange@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Dmitry Vyukov <dvyukov@google.com>,
Kees Cook <keescook@chromium.org>,
Andrey Ryabinin <aryabinin@virtuozzo.com>,
James Morse <james.morse@arm.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] kernel/kcov: unproxify debugfs file's fops
Date: Tue, 14 Jun 2016 17:19:13 -0400 [thread overview]
Message-ID: <576074D1.5000803@oracle.com> (raw)
In-Reply-To: <20160524143955.GA28161@kroah.com>
On 05/24/2016 10:39 AM, Greg Kroah-Hartman wrote:
> On Tue, May 24, 2016 at 02:05:05PM +0200, Nicolai Stange wrote:
>> > Since commit 49d200deaa68 ("debugfs: prevent access to removed files'
>> > private data"), a debugfs file's file_operations methods get proxied
>> > through lifetime aware wrappers.
>> >
>> > However, only a certain subset of the file_operations members is supported
>> > by debugfs and ->mmap isn't among them -- it appears to be NULL from the
>> > VFS layer's perspective.
>> >
>> > This behaviour breaks the /sys/kernel/debug/kcov file introduced
>> > concurrently with commit 5c9a8750a640 ("kernel: add kcov code coverage").
>> >
>> > Since that file never gets removed, there is no file removal race and thus,
>> > a lifetime checking proxy isn't needed.
>> >
>> > Avoid the proxying for /sys/kernel/debug/kcov by creating it via
>> > debugfs_create_file_unsafe() rather than debugfs_create_file().
>> >
>> > Fixes: 49d200deaa68 ("debugfs: prevent access to removed files' private
>> > data")
>> > Fixes: 5c9a8750a640 ("kernel: add kcov code coverage")
>> > Signed-off-by: Nicolai Stange <nicstange@gmail.com>
>> > ---
>> > The v1 thread can be found at
>> > http://lkml.kernel.org/g/1464011147-31836-1-git-send-email-nicstange@gmail.com
>> >
>> > Changes to v1:
>> > - Following the suggestion of Kees Cook, a comment explaining why the use
>> > of debugfs_create_file_unsafe() is actually safe there has been added.
>> >
>> > This issue has been debugged and reported by
>> > Sasha Levin <sasha.levin@oracle.com>:
>> > http://lkml.kernel.org/g/573F4200.3080208@oracle.com
>> >
>> > Applicable to linux-next 20160524.
>> > In particular, it depends on
>> > - c64688081490 ("debugfs: add support for self-protecting attribute file
>> > fops")
>> > - 5c9a8750a640 ("kernel: add kcov code coverage")
>> >
>> > kernel/kcov.c | 7 ++++++-
>> > 1 file changed, 6 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/kernel/kcov.c b/kernel/kcov.c
>> > index a02f2dd..8d44b3f 100644
>> > --- a/kernel/kcov.c
>> > +++ b/kernel/kcov.c
>> > @@ -264,7 +264,12 @@ static const struct file_operations kcov_fops = {
>> >
>> > static int __init kcov_init(void)
>> > {
>> > - if (!debugfs_create_file("kcov", 0600, NULL, NULL, &kcov_fops)) {
>> > + /*
>> > + * The kcov debugfs file won't ever get removed and thus,
>> > + * there is no need to protect it against removal races. The
>> > + * use of debugfs_create_file_unsafe() is actually safe here.
>> > + */
>> > + if (!debugfs_create_file_unsafe("kcov", 0600, NULL, NULL, &kcov_fops)) {
>> > pr_err("failed to create kcov in debugfs\n");
>> > return -ENOMEM;
>> > }
> Thanks, I'll queue this up after 4.7-rc1 is out.
Hey Greg,
Just wanted to remind you about this one.
Thanks,
Sasha
prev parent reply other threads:[~2016-06-14 21:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-24 12:05 [PATCH v2] kernel/kcov: unproxify debugfs file's fops Nicolai Stange
2016-05-24 14:39 ` Greg Kroah-Hartman
2016-06-14 21:19 ` Sasha Levin [this message]
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=576074D1.5000803@oracle.com \
--to=sasha.levin@oracle.com \
--cc=akpm@linux-foundation.org \
--cc=aryabinin@virtuozzo.com \
--cc=dvyukov@google.com \
--cc=gregkh@linuxfoundation.org \
--cc=james.morse@arm.com \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nicstange@gmail.com \
/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.