linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Qiujun Huang <hqjagain@gmail.com>
Cc: mingo@redhat.com, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] ring-buffer: Add rb_check_bpage in __rb_allocate_pages
Date: Wed, 14 Oct 2020 12:11:36 -0400	[thread overview]
Message-ID: <20201014121136.042a5c37@gandalf.local.home> (raw)
In-Reply-To: <CAJRQjodMzSAJd23F=RRhR=d2H=D3vWMvCbU9JYdGNQ9MTkpmmw@mail.gmail.com>

On Wed, 14 Oct 2020 23:48:05 +0800
Qiujun Huang <hqjagain@gmail.com> wrote:

> On Wed, Oct 14, 2020 at 11:38 PM Steven Rostedt <rostedt@goodmis.org> wrote:
> >
> > On Wed, 14 Oct 2020 23:16:14 +0800
> > Qiujun Huang <hqjagain@gmail.com> wrote:
> >  
> > > It may be better to check each page is aligned by 4 bytes. The 2
> > > least significant bits of the address will be used as flags.
> > >
> > > Signed-off-by: Qiujun Huang <hqjagain@gmail.com>
> > > ---
> > >  kernel/trace/ring_buffer.c | 11 +++++++----
> > >  1 file changed, 7 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
> > > index 93ef0ab6ea20..9dec7d58b177 100644
> > > --- a/kernel/trace/ring_buffer.c
> > > +++ b/kernel/trace/ring_buffer.c
> > > @@ -1420,7 +1420,8 @@ static int rb_check_pages(struct ring_buffer_per_cpu *cpu_buffer)
> > >       return 0;
> > >  }
> > >
> > > -static int __rb_allocate_pages(long nr_pages, struct list_head *pages, int cpu)
> > > +static int __rb_allocate_pages(struct ring_buffer_per_cpu *cpu_buffer,
> > > +             long nr_pages, struct list_head *pages, int cpu)
> > >  {
> > >       struct buffer_page *bpage, *tmp;
> > >       bool user_thread = current->mm != NULL;
> > > @@ -1464,6 +1465,8 @@ static int __rb_allocate_pages(long nr_pages, struct list_head *pages, int cpu)
> > >               if (!bpage)
> > >                       goto free_pages;
> > >
> > > +             rb_check_bpage(cpu_buffer, bpage);
> > > +
> > >  
> >
> > Why add it here, and not just add this check to the scan in
> > rb_check_pages()?  
> 
> rb_head_page_deactivate() in rb_check_pages() will clear the 2 LSB first.
> 

Well, you could just add another scan there, but if you want to do it this
way, then remove passing the int cpu to these functions, and use the
cpu_buffer->cpu, as keeping the cpu is just redundant.

Also, did you see an issue? This check is more of me being paranoid to
make sure we don't crash later. I've honestly never seen it trigger.

-- Steve

  reply	other threads:[~2020-10-14 16:11 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-14 15:16 [PATCH] ring-buffer: Add rb_check_bpage in __rb_allocate_pages Qiujun Huang
2020-10-14 15:38 ` Steven Rostedt
2020-10-14 15:48   ` Qiujun Huang
2020-10-14 16:11     ` Steven Rostedt [this message]
2020-10-14 16:32       ` Qiujun Huang

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=20201014121136.042a5c37@gandalf.local.home \
    --to=rostedt@goodmis.org \
    --cc=hqjagain@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.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;
as well as URLs for NNTP newsgroup(s).