Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1632473

Re: [PATCH] mm: Add additional consistency check

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


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