LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Matthew Wilcox <willy@infradead.org> To: linux-mm@kvack.org Cc: Kirill Tkhai <ktkhai@virtuozzo.com>, Matthew Wilcox <mawilcox@microsoft.com>, linux-kernel@vger.kernel.org, "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> Subject: [PATCH 0/4] Add free() function Date: Thu, 22 Mar 2018 12:58:15 -0700 [thread overview] Message-ID: <20180322195819.24271-1-willy@infradead.org> (raw) From: Matthew Wilcox <mawilcox@microsoft.com> Today, kfree_rcu() can only free objects allocated using kmalloc(). There have been attempts to extend that to kvfree(), but I think we should take it even further and allow freeing as many different objects as possible. It turns out many different kinds of memory allocations can be detected from the address. vmalloc() and percpu_alloc() can be detected by being in a particular range. kmalloc() and kmem_cache_alloc() can be detected from the struct page. __get_free_pages() and page_frag_alloc() are both freeable just by decrementing the refcount on the page. This allows us to delete many dozens of tiny rcu callbacks throughout the kernel, much as was done when kfree_rcu was added. Matthew Wilcox (4): decompression: Rename malloc and free Rename 'free' functions mm: Add free() rcu: Switch to using free() instead of kfree() crypto/lrw.c | 4 ++-- crypto/xts.c | 4 ++-- include/linux/decompress/mm.h | 10 ++++++---- include/linux/kernel.h | 2 ++ include/linux/rcupdate.h | 40 +++++++++++++++++++--------------------- include/linux/rcutiny.h | 2 +- include/linux/rcutree.h | 2 +- include/trace/events/rcu.h | 8 ++++---- kernel/rcu/rcu.h | 8 +++----- kernel/rcu/tree.c | 11 +++++------ mm/util.c | 39 +++++++++++++++++++++++++++++++++++++++ 11 files changed, 84 insertions(+), 46 deletions(-) -- 2.16.2
next reply other threads:[~2018-03-22 19:58 UTC|newest] Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-03-22 19:58 Matthew Wilcox [this message] 2018-03-22 19:58 ` [PATCH 1/4] decompression: Rename malloc and free Matthew Wilcox 2018-03-22 19:58 ` [PATCH 2/4] Rename 'free' functions Matthew Wilcox 2018-03-22 19:58 ` [PATCH 3/4] mm: Add free() Matthew Wilcox 2018-03-23 8:04 ` Rasmus Villemoes 2018-03-23 14:34 ` Matthew Wilcox 2018-04-03 8:50 ` Pavel Machek 2018-04-03 11:41 ` Matthew Wilcox 2018-03-23 13:33 ` Kirill Tkhai 2018-03-23 15:14 ` Matthew Wilcox 2018-03-23 15:49 ` Kirill Tkhai 2018-03-23 16:15 ` Matthew Wilcox 2018-03-25 23:56 ` Matthew Wilcox 2018-03-24 7:38 ` kbuild test robot 2018-03-22 19:58 ` [PATCH 4/4] rcu: Switch to using free() instead of kfree() Matthew Wilcox 2018-03-24 7:07 ` kbuild test robot 2018-03-24 8:20 ` kbuild test robot
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=20180322195819.24271-1-willy@infradead.org \ --to=willy@infradead.org \ --cc=ktkhai@virtuozzo.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mawilcox@microsoft.com \ --cc=paulmck@linux.vnet.ibm.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: linkBe 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; as well as URLs for NNTP newsgroup(s).