From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Kefeng Wang <wangkefeng.wang@huawei.com>
Cc: Davidlohr Bueso <dave@stgolabs.net>,
linux-kernel@vger.kernel.org, peterz@infradead.org,
mingo@redhat.com, Josh Triplett <josh@joshtriplett.org>,
"Guohanjun (Hanjun Guo)" <guohanjun@huawei.com>
Subject: Re: [PATCH v2] locktorture: Fix NULL pointer when torture_type is invalid
Date: Mon, 7 Mar 2016 05:37:45 -0800 [thread overview]
Message-ID: <20160307133745.GQ3577@linux.vnet.ibm.com> (raw)
In-Reply-To: <56DD276D.1070607@huawei.com>
On Mon, Mar 07, 2016 at 03:02:05PM +0800, Kefeng Wang wrote:
>
>
> On 2016/3/7 13:40, Davidlohr Bueso wrote:
> > On Mon, 07 Mar 2016, Kefeng Wang wrote:
> >> On 2016/3/3 16:36, Davidlohr Bueso wrote:
> >
> >>> + /*
> >>> + * Indicates early cleanup, meaning that the test has not run,
> >>> + * such as when passing bogus args when loading the module. As
> >>> + * such, only perform the underlying torture-specific cleanups,
> >>> + * and avoid anything related to locktorture.
> >>> + */
> >>> + if (!cxt.lwsa)
> >>> + goto end;
> >>
> >> Sorry for the late response, the cxt.lrsa should be taken into account too.
> >
> > I am taking it into account, note that we kfree lwsa if lrsa fails memory
> > allocation. Of course we should be defensive, so go ahead and explicitly set
> > it to nil. v2 below, otherwise same patch.
>
> This one looks good, and tested on my board.
Very good! May we add your Tested-by?
Thanx, Paul
> > -----8<--------------------------
> > Subject: [PATCH v2] locktorture: Fix nil pointer dereferencing for cleanup paths
> >
> > It has been found that paths that invoke cleanups through
> > lock_torture_cleanup() can incur in nil pointer dereferencing
> > bugs during the statistics printing phase. This is mainly
> > because we should not be calling into statistics before we are
> > sure things have been setup correctly.
> >
> > Specifically, early checks (and the need for handling this in
> > the cleanup call) only include parameter checks and basic
> > statistics allocation. Once we start write/read kthreads
> > we then consider the test as started. As such, update the func
> > in question to check for cxt.lwsa writer stats, if not set,
> > we either have a bogus parameter or ENOMEM situation and
> > therefore only need to deal with general torture calls
> >
> > Reported-by: Kefeng Wang <wangkefeng.wang@huawei.com>
> > Signed-off-by: Davidlohr Bueso <dbueso@suse.de>
> > ---
> > kernel/locking/locktorture.c | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> > diff --git a/kernel/locking/locktorture.c b/kernel/locking/locktorture.c
> > index 8ef1919..b5bc243 100644
> > --- a/kernel/locking/locktorture.c
> > +++ b/kernel/locking/locktorture.c
> > @@ -748,6 +748,15 @@ static void lock_torture_cleanup(void)
> > if (torture_cleanup_begin())
> > return;
> >
> > + /*
> > + * Indicates early cleanup, meaning that the test has not run,
> > + * such as when passing bogus args when loading the module. As
> > + * such, only perform the underlying torture-specific cleanups,
> > + * and avoid anything related to locktorture.
> > + */
> > + if (!cxt.lwsa)
> > + goto end;
> > +
> > if (writer_tasks) {
> > for (i = 0; i < cxt.nrealwriters_stress; i++)
> > torture_stop_kthread(lock_torture_writer,
> > @@ -776,6 +785,7 @@ static void lock_torture_cleanup(void)
> > else
> > lock_torture_print_module_parms(cxt.cur_ops,
> > "End of test: SUCCESS");
> > +end:
> > torture_cleanup_end();
> > }
> >
> > @@ -870,6 +880,7 @@ static int __init lock_torture_init(void)
> > VERBOSE_TOROUT_STRING("cxt.lrsa: Out of memory");
> > firsterr = -ENOMEM;
> > kfree(cxt.lwsa);
> > + cxt.lwsa = NULL;
> > goto unwind;
> > }
> >
> > @@ -878,6 +889,7 @@ static int __init lock_torture_init(void)
> > cxt.lrsa[i].n_lock_acquired = 0;
> > }
> > }
> > +
> > lock_torture_print_module_parms(cxt.cur_ops, "Start of test");
> >
> > /* Prepare torture context. */
>
next prev parent reply other threads:[~2016-03-07 15:29 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-28 4:25 [PATCH v2] locktorture: Fix NULL pointer when torture_type is invalid Kefeng Wang
2016-01-30 2:46 ` Kefeng Wang
2016-01-31 0:27 ` Paul E. McKenney
2016-01-31 22:17 ` Davidlohr Bueso
2016-02-01 2:25 ` Kefeng Wang
2016-02-01 3:02 ` Davidlohr Bueso
2016-02-01 3:28 ` Kefeng Wang
2016-02-02 6:46 ` Paul E. McKenney
2016-02-03 0:23 ` Davidlohr Bueso
2016-03-02 19:55 ` Davidlohr Bueso
2016-03-02 21:12 ` Paul E. McKenney
2016-03-03 1:37 ` Kefeng Wang
2016-03-03 4:31 ` Kefeng Wang
2016-03-03 8:36 ` Davidlohr Bueso
2016-03-04 18:41 ` Davidlohr Bueso
2016-03-07 2:00 ` Kefeng Wang
2016-03-07 5:40 ` Davidlohr Bueso
2016-03-07 7:02 ` Kefeng Wang
2016-03-07 13:37 ` Paul E. McKenney [this message]
2016-03-08 2:10 ` Kefeng Wang
2016-03-08 19:51 ` Paul E. McKenney
2016-03-03 14:14 ` Paul E. McKenney
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=20160307133745.GQ3577@linux.vnet.ibm.com \
--to=paulmck@linux.vnet.ibm.com \
--cc=dave@stgolabs.net \
--cc=guohanjun@huawei.com \
--cc=josh@joshtriplett.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=wangkefeng.wang@huawei.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).