[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200506184920.GD23230@ZenIV.linux.org.uk>
Date: Wed, 6 May 2020 19:49:20 +0100
From: Al Viro <viro@...iv.linux.org.uk>
To: Kees Cook <keescook@...omium.org>
Cc: James Morris <jmorris@...ei.org>,
"Serge E. Hallyn" <serge@...lyn.com>,
linux-security-module@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] securityfs: Add missing d_delete() call on removal
On Wed, May 06, 2020 at 08:34:29AM -0700, Kees Cook wrote:
> Just posted the whole series:
> https://lore.kernel.org/lkml/20200506152114.50375-1-keescook@chromium.org/
>
> But the specific question was driven by this patch:
> https://lore.kernel.org/lkml/20200506152114.50375-11-keescook@chromium.org/
Yecchh... First of all, you are leaving a dangling pointer in your
struct pstore_private ->dentry. What's more, in your case d_delete()
is definitely wrong - either there are other references to dentry
(in which case d_delete() is the same as d_drop()), or dput() right
after it will drive ->d_count to zero and since you end up using
simple_dentry_operations, dentry will be freed immediately after
that.
I have not looked at the locking in that series yet, so no comments
on the races, but in any case - that d_delete() is a misspelled d_drop().
Powered by blists - more mailing lists