From: Christoph Lameter <cl@linux.com>
To: Glauber Costa <glommer@parallels.com>
Cc: linux-mm@kvack.org, Pekka Enberg <penberg@kernel.org>,
David Rientjes <rientjes@google.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: Any reason to use put_page in slub.c?
Date: Tue, 31 Jul 2012 09:09:55 -0500 (CDT) [thread overview]
Message-ID: <alpine.DEB.2.00.1207310906350.32295@router.home> (raw)
In-Reply-To: <5017968C.6050301@parallels.com>
On Tue, 31 Jul 2012, Glauber Costa wrote:
> >> Or am I missing something ?
> >
> > Yes the refcounting is done at the page level by the page allocator. It is
> > safe. The slab allocator can free a page removing all references from its
> > internal structure while the subsystem page reference will hold off the
> > page allocator from actually freeing the page until the subsystem itself
> > drops the page count.
> >
>
> pages, yes. But when you do kfree, you don't free a page. You free an
> object. The allocator is totally free to keep the page around and pass
> it on to someone else.
That is understood. Typically these object where page sized though and
various assumptions (pretty dangerous ones as you are finding out) are
made regarding object reuse. The fallback of SLUB for higher order allocs
to the page allocator avoids these problems for higher order pages.
It would be better and cleaner if all callers would not use slab
allocators but the page allocators directly for any page that requires an
increased refcount for DMA operations.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2012-07-31 14:09 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-27 12:19 Glauber Costa
2012-07-27 15:55 ` Christoph Lameter
2012-07-30 7:53 ` Glauber Costa
2012-07-30 19:23 ` Christoph Lameter
2012-07-31 8:25 ` Glauber Costa
2012-07-31 14:09 ` Christoph Lameter [this message]
2012-07-31 14:09 ` Glauber Costa
2012-07-31 14:17 ` Christoph Lameter
2012-07-31 14:18 ` Glauber Costa
2012-07-31 14:31 ` Christoph Lameter
2012-07-31 14:52 ` James Bottomley
2012-08-01 12:42 ` Glauber Costa
2012-08-01 18:10 ` Christoph Lameter
2012-08-02 7:55 ` Glauber Costa
2012-08-02 8:07 ` James Bottomley
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=alpine.DEB.2.00.1207310906350.32295@router.home \
--to=cl@linux.com \
--cc=akpm@linux-foundation.org \
--cc=glommer@parallels.com \
--cc=linux-mm@kvack.org \
--cc=penberg@kernel.org \
--cc=rientjes@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox