All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kees Cook <keescook@chromium.org>
To: Joel Fernandes <joelaf@google.com>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 5/7] ramoops: Split ftrace buffer space into per-CPU zones
Date: Tue, 18 Oct 2016 13:37:46 -0700	[thread overview]
Message-ID: <CAGXu5j+fhD6MiRL0YkLT-ueEB3zAun2v5wEu41p5vgQ786FjHQ@mail.gmail.com> (raw)
In-Reply-To: <CAJWu+oo62tA=mPFQ1X9b+mM-tGNLZLoK0DF0eorMzq_ZRSrGhQ@mail.gmail.com>

On Sun, Oct 16, 2016 at 10:40 AM, Joel Fernandes <joelaf@google.com> wrote:
> Hi Kees,
>
> On Mon, Oct 10, 2016 at 4:59 PM, Kees Cook <keescook@chromium.org> wrote:
>> On Sun, Oct 9, 2016 at 10:15 AM, Joel Fernandes <joelaf@google.com> wrote:
>>> On Fri, Oct 7, 2016 at 10:28 PM, Joel Fernandes <joelaf@google.com> wrote:
>>>> If FTRACE_PER_CPU flag is passed to ramoops pdata, split the space into
>>>> multiple zones depending on the number of CPUs.
>>>>
>>>> This speeds up the performance of function tracing by about 280% in my tests as
>>>> we avoid the locking. The trade off being lesser space available per CPU.  Let
>>>> the ramoops user decide which option they want based on pdata flag.
>>>>
>>>> Signed-off-by: Joel Fernandes <joelaf@google.com>
>>>> ---
>>>>  fs/pstore/ram.c            | 70 +++++++++++++++++++++++++++++++++++-----------
>>>>  include/linux/pstore_ram.h |  3 ++
>>>>  2 files changed, 56 insertions(+), 17 deletions(-)
>>>>
>>>> diff --git a/fs/pstore/ram.c b/fs/pstore/ram.c
>>> [..]
>>>> @@ -391,14 +418,21 @@ static void ramoops_free_przs(struct ramoops_context *cxt)
>>>>  {
>>>>         int i;
>>>>
>>>> -       if (!cxt->przs)
>>>> -               return;
>>>> +       /* Free dump PRZs */
>>>> +       if (cxt->przs) {
>>>> +               for (i = 0; i < cxt->max_dump_cnt; i++)
>>>> +                       persistent_ram_free(cxt->przs[i]);
>>>>
>>>> -       for (i = 0; i < cxt->max_dump_cnt; i++)
>>>> -               persistent_ram_free(cxt->przs[i]);
>>>> +               kfree(cxt->przs);
>>>> +               cxt->max_dump_cnt = 0;
>>>> +       }
>>>>
>>>> -       kfree(cxt->przs);
>>>> -       cxt->max_dump_cnt = 0;
>>>> +       /* Free ftrace PRZs */
>>>> +       if (cxt->fprzs) {
>>>> +               for (i = 0; i < nr_cpu_ids; i++)
>>>> +                       persistent_ram_free(cxt->przs[i]);
>>>
>>> I am supposed to free fprzs[i] here, instead of przs[i]. Also need to
>>> check flag and free correct number of zones. Will fix for v2, sorry
>>> about that.
>>
>> I think the cpu id needs to be bounds-checked against the size of the
>> allocation. In theory, CPU hot-plug could grow the number of CPUs
>> after pstore is initialized.
>
> nr_cpu_ids is fixed to the number of possible CPUs regardless of if
> hotplug is being used or not. I did a hotplug test as well to confirm
> this. So if I boot on 4 CPU machine with only 2 CPUs online, then
> nr_cpu_ids is 4.

Ah-ha, okay. I wasn't sure if there was some way to grow nr_cpu_ids after boot.

Thanks for checking!

-Kees

-- 
Kees Cook
Nexus Security

  reply	other threads:[~2016-10-18 20:37 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-08  5:28 [RFC 0/7] pstore: Improve performance of ftrace backend with ramoops Joel Fernandes
2016-10-08  5:28 ` [PATCH 1/7] pstore: Make spinlock per zone instead of global Joel Fernandes
2016-10-08  5:44   ` Joel Fernandes
2016-10-10 23:44   ` Kees Cook
2016-10-08  5:28 ` [PATCH 2/7] pstore: locking: dont lock unless caller asks to Joel Fernandes
2016-10-10 23:48   ` Kees Cook
2016-10-11 14:41     ` Joel Fernandes
2016-10-08  5:28 ` [PATCH 3/7] pstore: Remove case of PSTORE_TYPE_PMSG write using deprecated function Joel Fernandes
2016-10-10 23:52   ` Kees Cook
2016-10-11 14:46     ` Joel Fernandes
2016-10-08  5:28 ` [PATCH 4/7] pstore: Make ramoops_init_przs generic for other prz arrays Joel Fernandes
2016-10-10 23:55   ` Kees Cook
2016-10-08  5:28 ` [PATCH 5/7] ramoops: Split ftrace buffer space into per-CPU zones Joel Fernandes
2016-10-09 17:15   ` Joel Fernandes
2016-10-10 23:59     ` Kees Cook
2016-10-11  0:00       ` Kees Cook
2016-10-16 17:40       ` Joel Fernandes
2016-10-18 20:37         ` Kees Cook [this message]
2016-10-08  5:28 ` [PATCH 6/7] pstore: Add support to store timestamp counter in ftrace records Joel Fernandes
2016-10-08  5:28 ` [PATCH 7/7] pstore: Merge per-CPU ftrace zones into one zone for output Joel Fernandes
2016-10-11  9:57 ` [RFC 0/7] pstore: Improve performance of ftrace backend with ramoops Steven Rostedt
2016-10-20  7:17 [PATCH " Joel Fernandes
2016-10-20  7:17 ` [PATCH 5/7] ramoops: Split ftrace buffer space into per-CPU zones Joel Fernandes

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=CAGXu5j+fhD6MiRL0YkLT-ueEB3zAun2v5wEu41p5vgQ786FjHQ@mail.gmail.com \
    --to=keescook@chromium.org \
    --cc=joelaf@google.com \
    --cc=linux-kernel@vger.kernel.org \
    /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.