Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1632473
| Path | csiph.com!news.freedyn.net!open-news-network.org!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Kees Cook <keescook@chromium.org> |
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] mm: Add additional consistency check |
| Date | Fri, 28 Apr 2017 03:20:02 +0200 |
| Message-ID | <tB2JI-rd-7@gated-at.bofh.it> (permalink) |
| References | <tsuYy-4fH-13@gated-at.bofh.it> <tsyfM-6vk-23@gated-at.bofh.it> <tsypr-6A1-1@gated-at.bofh.it> <tsC9I-G4-3@gated-at.bofh.it> <tsCCK-RD-15@gated-at.bofh.it> <tsCMp-UQ-19@gated-at.bofh.it> <tsD5M-1gm-11@gated-at.bofh.it> <tuW4h-2jb-1@gated-at.bofh.it> <tv4ld-7FU-35@gated-at.bofh.it> <tv4Oe-85I-27@gated-at.bofh.it> <tv4XU-8aE-23@gated-at.bofh.it> |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=Hn+fBtSvWceT27fBZEmOFQqYC2AdID96aIUekq88LfQ=; b=bqLPTmnY6Mj/dSyq7+9AIu4mxkAS3APBFWkMLHQ6d64yUPzWJmACiLNzMt57oXE5M8 TIheH7xWr0lBTSwUu61xOy6I+9exP5IDhFCz1rGfnbRk6rpE2YNCUpmZUfwzNi5PQY8t 4BTmNhb+GoG4SYRosPYCBb1aC6ur9ohFcN2JJpRCmfu2Ty9EOKySOyTSX3C1pDwxjWvZ J53ED7eW+gM5Z4csfpn7dTDgg3C97hGUp6ulbqYzjvsNjgy/MbAlHxtOw2nJMxIhe9Wt j4qGvP8b/0aYwK/CBwgmXV7wvmwL8rvVONMnvS+6REPgx2QTj8YHNdb16cE4W4rJxM13 nt+g== |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=Hn+fBtSvWceT27fBZEmOFQqYC2AdID96aIUekq88LfQ=; b=XdSVwYfQrb6FyFx8VzE4v7dWupZjjBYGGsrk3KpYFlqCuPY3J9SbsrbF/a1+2ifGzN gcuKj4yhm9xk4QBb+BSd8GG9vVV4YJlwItDUmMcf++Z2xs8tVPN+tQAvPPZdXDm95bdQ ehkomtBKtWRNsN/E009FWC4Gh52F3yAoNX59o= |
| X-Google-Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=Hn+fBtSvWceT27fBZEmOFQqYC2AdID96aIUekq88LfQ=; b=rkPu40yTrDpFsOJNNZpYn+e4t3VS1NI+EPGZRLLW7/tjc1K0DHuwzxxY1WajyOhO6g 0j+n1q0qneoKEdpXwFZdtm7C4GMp5oufU+7d9SWBxopSUhAGbduVwJ0rcVCggOZqOf63 /4NXtqWJMl/jNbgyd9a06P7ObnrXljnfifvdFEORKNzd/Fvvn55QYrpZwGsCly0UTUAt Fq/KzLNxLCqQ5gWB72z/0xAd2BwowFdr4vHLtKOrz2l8Mu7f9SFeb8Z5BbPhM9KlJYDt zB+FWpcWMNPcdrzxvhuCvlefZazjAZdgvh5iVeSsNi5Z3NtPZGrXZwJz9fNEqohmX32U O2cw== |
| X-Gm-Message-State | AN3rC/5VcDkKaqHS30HbLuqDZDGAkft5IJTqzpm9wTp028Q8kh1sMnxk xSN+XaWoQnCwro449Tq2LLMmNJ2AvQhf |
| X-Received | by 10.107.188.193 with SMTP id m184mr7704961iof.148.1493341889161; Thu, 27 Apr 2017 18:11:29 -0700 (PDT) |
| MIME-Version | 1.0 |
| X-Google-Sender-Auth | pI7XDf0xVX_4sjOrCnm6Okvj-g0 |
| Content-Type | text/plain; charset=UTF-8 |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 61 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Christoph Lameter <cl@linux.com>, Andrew Morton <akpm@linux-foundation.org>, Pekka Enberg <penberg@kernel.org>, David Rientjes <rientjes@google.com>, Joonsoo Kim <iamjoonsoo.kim@lge.com>, Linux-MM <linux-mm@kvack.org>, LKML <linux-kernel@vger.kernel.org> |
| X-Original-Date | Thu, 27 Apr 2017 18:11:28 -0700 |
| X-Original-Message-ID | <CAGXu5j+vVn02Vsx5TzWPz3MS7Jow1gi+m3ojwMXrL-w6aaZhtw@mail.gmail.com> |
| X-Original-References | <20170404113022.GC15490@dhcp22.suse.cz> <alpine.DEB.2.20.1704041005570.23420@east.gentwo.org> <20170404151600.GN15132@dhcp22.suse.cz> <alpine.DEB.2.20.1704041412050.27424@east.gentwo.org> <20170404194220.GT15132@dhcp22.suse.cz> <alpine.DEB.2.20.1704041457030.28085@east.gentwo.org> <20170404201334.GV15132@dhcp22.suse.cz> <CAGXu5jL1t2ZZkwnGH9SkFyrKDeCugSu9UUzvHf3o_MgraDFL1Q@mail.gmail.com> <20170411134618.GN6729@dhcp22.suse.cz> <CAGXu5j+EVCU1WrjpMmr0PYW2N_RzF0tLUgFumDR+k4035uqthA@mail.gmail.com> <20170411141956.GP6729@dhcp22.suse.cz> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1632473 |
Show key headers only | View raw
On Tue, Apr 11, 2017 at 7:19 AM, Michal Hocko <mhocko@kernel.org> wrote:
> I would do something like...
> ---
> diff --git a/mm/slab.c b/mm/slab.c
> index bd63450a9b16..87c99a5e9e18 100644
> --- a/mm/slab.c
> +++ b/mm/slab.c
> @@ -393,10 +393,15 @@ static inline void set_store_user_dirty(struct kmem_cache *cachep) {}
> static int slab_max_order = SLAB_MAX_ORDER_LO;
> static bool slab_max_order_set __initdata;
>
> +static inline struct kmem_cache *page_to_cache(struct page *page)
> +{
> + return page->slab_cache;
> +}
> +
> static inline struct kmem_cache *virt_to_cache(const void *obj)
> {
> struct page *page = virt_to_head_page(obj);
> - return page->slab_cache;
> + return page_to_cache(page);
> }
>
> static inline void *index_to_obj(struct kmem_cache *cache, struct page *page,
> @@ -3813,14 +3818,18 @@ void kfree(const void *objp)
> {
> struct kmem_cache *c;
> unsigned long flags;
> + struct page *page;
>
> trace_kfree(_RET_IP_, objp);
>
> if (unlikely(ZERO_OR_NULL_PTR(objp)))
> return;
> + page = virt_to_head_page(obj);
> + if (CHECK_DATA_CORRUPTION(!PageSlab(page)))
> + return;
> local_irq_save(flags);
> kfree_debugcheck(objp);
> - c = virt_to_cache(objp);
> + c = page_to_cache(page);
> debug_check_no_locks_freed(objp, c->object_size);
>
> debug_check_no_obj_freed(objp, c->object_size);
Sorry for the delay, I've finally had time to look at this again.
So, this only handles the kfree() case, not the kmem_cache_free() nor
kmem_cache_free_bulk() cases, so it misses all the non-kmalloc
allocations (and kfree() ultimately calls down to kmem_cache_free()).
Similarly, my proposed patch missed the kfree() path. :P
As I work on a replacement, is the goal to avoid the checks while
under local_irq_save()? (i.e. I can't just put the check in
virt_to_cache(), etc.)
-Kees
--
Kees Cook
Pixel Security
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
Re: [PATCH] mm: Add additional consistency check Kees Cook <keescook@chromium.org> - 2017-04-28 03:20 +0200 Re: [PATCH] mm: Add additional consistency check Michal Hocko <mhocko@kernel.org> - 2017-04-28 08:20 +0200
csiph-web