From: Michel Lespinasse <walken@google.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>,
Christoph Hellwig <hch@infradead.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Fix for binary_sysctl() memory leak
Date: Thu, 15 Dec 2011 15:07:02 -0800 [thread overview]
Message-ID: <20111215230702.GA7527@google.com> (raw)
In-Reply-To: <CANN689HNM+01fXGNijNCgWtoGEGsxBz1Hi4Z+WNYe02EiREuyA@mail.gmail.com>
binary_sysctl() calls sysctl_getname() which allocates from
names_cache slab usin __getname()
The matching function to free the name is __putname(), and not
putname() which should be used only to match getname() allocations.
This is because when auditing is enabled, putname() calls
audit_putname *instead* (not in addition) to __putname(). Then, if a
syscall is in progress, audit_putname does not release the name -
instead, it expects the name to get released when the syscall
completes, but that will happen only if audit_getname() was called
previously, i.e. if the name was allocated with getname() rather than
the naked __getname(). So, __getname() followed by putname() ends up
leaking memory.
Signed-off-by: Michel Lespinasse <walken@google.com>
---
kernel/sysctl_binary.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/kernel/sysctl_binary.c b/kernel/sysctl_binary.c
index e8bffbe..2ce1b30 100644
--- a/kernel/sysctl_binary.c
+++ b/kernel/sysctl_binary.c
@@ -1354,7 +1354,7 @@ static ssize_t binary_sysctl(const int *name, int nlen,
fput(file);
out_putname:
- putname(pathname);
+ __putname(pathname);
out:
return result;
}
--
1.7.3.1
--
Michel "Walken" Lespinasse
A program is never fully debugged until the last user dies.
next prev parent reply other threads:[~2011-12-15 23:07 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-15 2:44 [PATCH] Fix for binary_sysctl() memory leak Michel Lespinasse
2011-12-15 22:19 ` Andrew Morton
2011-12-15 22:38 ` Michel Lespinasse
2011-12-15 22:44 ` Andrew Morton
2011-12-15 22:59 ` Michel Lespinasse
2011-12-15 23:07 ` Michel Lespinasse [this message]
2011-12-17 22:14 ` Eric W. Biederman
2011-12-18 1:23 ` Michel Lespinasse
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=20111215230702.GA7527@google.com \
--to=walken@google.com \
--cc=akpm@linux-foundation.org \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=viro@zeniv.linux.org.uk \
/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.