All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: paulmck@kernel.org
Cc: rcu@vger.kernel.org
Subject: [bug report] refperf: Dynamically allocate experiment-summary output buffer
Date: Fri, 29 May 2020 12:48:29 +0300	[thread overview]
Message-ID: <20200529094829.GA1302781@mwanda> (raw)

Hello Paul E. McKenney,

This is a semi-automatic email about new static checker warnings.

The patch 54c0ed208976: "refperf: Dynamically allocate
experiment-summary output buffer" from May 25, 2020, leads to the
following Smatch complaint:

    kernel/rcu/refperf.c:395 main_func()
    error: we previously assumed 'buf' could be null (see line 352)

kernel/rcu/refperf.c
   351		buf = kzalloc(64 + nruns * 32, GFP_KERNEL);
   352		if (!result_avg || !buf) {
                                   ^^^^
Check for NULL

   353			VERBOSE_PERFOUT_ERRSTRING("out of memory");
   354			errexit = true;
   355		}
   356		atomic_inc(&n_init);
   357	
   358		// Wait for all threads to start.
   359		wait_event(main_wq, atomic_read(&n_init) == (nreaders + 1));
   360	
   361		// Start exp readers up per experiment
   362		for (exp = 0; exp < nruns && !torture_must_stop(); exp++) {
   363			if (errexit)
   364				break;
   365			if (torture_must_stop())
   366				goto end;
   367	
   368			reset_readers();
   369			atomic_set(&nreaders_exp, nreaders);
   370	
   371			exp_idx = exp;
   372	
   373			for (r = 0; r < nreaders; r++) {
   374				atomic_set(&reader_tasks[r].start, 1);
   375				wake_up(&reader_tasks[r].wq);
   376			}
   377	
   378			VERBOSE_PERFOUT("main_func: experiment started, waiting for %d readers",
   379					nreaders);
   380	
   381			wait_event(main_wq,
   382				   !atomic_read(&nreaders_exp) || torture_must_stop());
   383	
   384			VERBOSE_PERFOUT("main_func: experiment ended");
   385	
   386			if (torture_must_stop())
   387				goto end;
   388	
   389			result_avg[exp] = 1000 * process_durations(nreaders) / (nreaders * loops);
   390		}
   391	
   392		// Print the average of all experiments
   393		PERFOUT("END OF TEST. Calculating average duration per loop (nanoseconds)...\n");
   394	
   395		buf[0] = 0;
                ^^^^^^
Unchecked dereferences.

   396		strcat(buf, "\n");
   397		strcat(buf, "Threads\tTime(ns)\n");

regards,
dan carpenter

             reply	other threads:[~2020-05-29  9:48 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-29  9:48 Dan Carpenter [this message]
2020-05-29 17:55 ` [bug report] refperf: Dynamically allocate experiment-summary output buffer 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=20200529094829.GA1302781@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=paulmck@kernel.org \
    --cc=rcu@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.