All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com, Dan Carpenter <error27@gmail.com>
Subject: [android-common:android13-5.15 54/54] kernel/scftorture.c:440 scftorture_invoke_one() warn: possible memory leak of 'scfcp'
Date: Sun, 08 Nov 2026 08:33:24 +0100	[thread overview]
Message-ID: <202611080842.qPBW23KP-lkp@intel.com> (raw)

Unfiltered warning: this smatch report is sent as-is and has not been
reviewed for false positives, so please treat it with due skepticism.

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
TO: cros-kernel-buildreports@googlegroups.com

tree:   https://android.googlesource.com/kernel/common android13-5.15
head:   a5a9930e03c61e245e77f94ef4d0fef4d57c5092
commit: f685311dbe05a8e817cc432c61895b791bf76682 [54/54] scftorture: Forgive memory-allocation failure if KASAN
:::::: branch date: 31 hours ago
:::::: commit date: 3 years, 2 months ago
config: arm-randconfig-2200-20261107 (https://download.01.org/0day-ci/archive/20261108/202611080842.qPBW23KP-lkp@intel.com/config)
compiler: clang version 24.0.0git (https://github.com/llvm/llvm-project 0fa861dbbf46e5a75f621406fd91cb015d8754bf)
smatch: v0.5.0-9187-g5189e3fb

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202611080842.qPBW23KP-lkp@intel.com/

smatch warnings:
kernel/scftorture.c:440 scftorture_invoke_one() warn: possible memory leak of 'scfcp'

vim +/scfcp +440 kernel/scftorture.c

5022b8ac608f8b Paul E. McKenney 2020-06-25  316  
e9d338a0b1799c Paul E. McKenney 2020-06-24  317  // Randomly do an smp_call_function*() invocation.
e9d338a0b1799c Paul E. McKenney 2020-06-24  318  static void scftorture_invoke_one(struct scf_statistics *scfp, struct torture_random_state *trsp)
e9d338a0b1799c Paul E. McKenney 2020-06-24  319  {
5022b8ac608f8b Paul E. McKenney 2020-06-25  320  	uintptr_t cpu;
676e5469643e71 Paul E. McKenney 2020-07-01  321  	int ret = 0;
b93e21a51e1c8e Paul E. McKenney 2020-06-30  322  	struct scf_check *scfcp = NULL;
5022b8ac608f8b Paul E. McKenney 2020-06-25  323  	struct scf_selector *scfsp = scf_sel_rand(trsp);
5022b8ac608f8b Paul E. McKenney 2020-06-25  324  
e9d338a0b1799c Paul E. McKenney 2020-06-24  325  	if (use_cpus_read_lock)
e9d338a0b1799c Paul E. McKenney 2020-06-24  326  		cpus_read_lock();
e9d338a0b1799c Paul E. McKenney 2020-06-24  327  	else
e9d338a0b1799c Paul E. McKenney 2020-06-24  328  		preempt_disable();
34e8c4837adb57 Paul E. McKenney 2020-07-01  329  	if (scfsp->scfs_prim == SCF_PRIM_SINGLE || scfsp->scfs_wait) {
b93e21a51e1c8e Paul E. McKenney 2020-06-30  330  		scfcp = kmalloc(sizeof(*scfcp), GFP_ATOMIC);
f685311dbe05a8 Paul E. McKenney 2023-05-15  331  		if (!scfcp) {
f685311dbe05a8 Paul E. McKenney 2023-05-15  332  			WARN_ON_ONCE(!IS_ENABLED(CONFIG_KASAN));
b93e21a51e1c8e Paul E. McKenney 2020-06-30  333  			atomic_inc(&n_alloc_errs);
4df55bddc1a360 Paul E. McKenney 2020-07-09  334  		} else {
4df55bddc1a360 Paul E. McKenney 2020-07-09  335  			scfcp->scfc_cpu = -1;
4df55bddc1a360 Paul E. McKenney 2020-07-09  336  			scfcp->scfc_wait = scfsp->scfs_wait;
4df55bddc1a360 Paul E. McKenney 2020-07-09  337  			scfcp->scfc_out = false;
9b9a80677fd80b Paul E. McKenney 2021-06-24  338  			scfcp->scfc_rpc = false;
4df55bddc1a360 Paul E. McKenney 2020-07-09  339  		}
34e8c4837adb57 Paul E. McKenney 2020-07-01  340  	}
34e8c4837adb57 Paul E. McKenney 2020-07-01  341  	switch (scfsp->scfs_prim) {
1ac78b49d61d4a Paul E. McKenney 2020-09-03  342  	case SCF_PRIM_RESCHED:
1ac78b49d61d4a Paul E. McKenney 2020-09-03  343  		if (IS_BUILTIN(CONFIG_SCF_TORTURE_TEST)) {
1ac78b49d61d4a Paul E. McKenney 2020-09-03  344  			cpu = torture_random(trsp) % nr_cpu_ids;
1ac78b49d61d4a Paul E. McKenney 2020-09-03  345  			scfp->n_resched++;
1ac78b49d61d4a Paul E. McKenney 2020-09-03  346  			resched_cpu(cpu);
1ac78b49d61d4a Paul E. McKenney 2020-09-03  347  		}
1ac78b49d61d4a Paul E. McKenney 2020-09-03  348  		break;
34e8c4837adb57 Paul E. McKenney 2020-07-01  349  	case SCF_PRIM_SINGLE:
5022b8ac608f8b Paul E. McKenney 2020-06-25  350  		cpu = torture_random(trsp) % nr_cpu_ids;
5022b8ac608f8b Paul E. McKenney 2020-06-25  351  		if (scfsp->scfs_wait)
5022b8ac608f8b Paul E. McKenney 2020-06-25  352  			scfp->n_single_wait++;
5022b8ac608f8b Paul E. McKenney 2020-06-25  353  		else
5022b8ac608f8b Paul E. McKenney 2020-06-25  354  			scfp->n_single++;
b93e21a51e1c8e Paul E. McKenney 2020-06-30  355  		if (scfcp) {
b93e21a51e1c8e Paul E. McKenney 2020-06-30  356  			scfcp->scfc_cpu = cpu;
ee7035d29576dc Paul E. McKenney 2020-07-01  357  			barrier(); // Prevent race-reduction compiler optimizations.
b93e21a51e1c8e Paul E. McKenney 2020-06-30  358  			scfcp->scfc_in = true;
b93e21a51e1c8e Paul E. McKenney 2020-06-30  359  		}
b93e21a51e1c8e Paul E. McKenney 2020-06-30  360  		ret = smp_call_function_single(cpu, scf_handler_1, (void *)scfcp, scfsp->scfs_wait);
5022b8ac608f8b Paul E. McKenney 2020-06-25  361  		if (ret) {
5022b8ac608f8b Paul E. McKenney 2020-06-25  362  			if (scfsp->scfs_wait)
5022b8ac608f8b Paul E. McKenney 2020-06-25  363  				scfp->n_single_wait_ofl++;
5022b8ac608f8b Paul E. McKenney 2020-06-25  364  			else
5022b8ac608f8b Paul E. McKenney 2020-06-25  365  				scfp->n_single_ofl++;
b93e21a51e1c8e Paul E. McKenney 2020-06-30  366  			kfree(scfcp);
676e5469643e71 Paul E. McKenney 2020-07-01  367  			scfcp = NULL;
5022b8ac608f8b Paul E. McKenney 2020-06-25  368  		}
5022b8ac608f8b Paul E. McKenney 2020-06-25  369  		break;
9b9a80677fd80b Paul E. McKenney 2021-06-24  370  	case SCF_PRIM_SINGLE_RPC:
9b9a80677fd80b Paul E. McKenney 2021-06-24  371  		if (!scfcp)
9b9a80677fd80b Paul E. McKenney 2021-06-24  372  			break;
9b9a80677fd80b Paul E. McKenney 2021-06-24  373  		cpu = torture_random(trsp) % nr_cpu_ids;
9b9a80677fd80b Paul E. McKenney 2021-06-24  374  		scfp->n_single_rpc++;
9b9a80677fd80b Paul E. McKenney 2021-06-24  375  		scfcp->scfc_cpu = cpu;
9b9a80677fd80b Paul E. McKenney 2021-06-24  376  		scfcp->scfc_wait = true;
9b9a80677fd80b Paul E. McKenney 2021-06-24  377  		init_completion(&scfcp->scfc_completion);
9b9a80677fd80b Paul E. McKenney 2021-06-24  378  		scfcp->scfc_rpc = true;
9b9a80677fd80b Paul E. McKenney 2021-06-24  379  		barrier(); // Prevent race-reduction compiler optimizations.
9b9a80677fd80b Paul E. McKenney 2021-06-24  380  		scfcp->scfc_in = true;
9b9a80677fd80b Paul E. McKenney 2021-06-24  381  		ret = smp_call_function_single(cpu, scf_handler_1, (void *)scfcp, 0);
9b9a80677fd80b Paul E. McKenney 2021-06-24  382  		if (!ret) {
9b9a80677fd80b Paul E. McKenney 2021-06-24  383  			if (use_cpus_read_lock)
9b9a80677fd80b Paul E. McKenney 2021-06-24  384  				cpus_read_unlock();
9b9a80677fd80b Paul E. McKenney 2021-06-24  385  			else
9b9a80677fd80b Paul E. McKenney 2021-06-24  386  				preempt_enable();
9b9a80677fd80b Paul E. McKenney 2021-06-24  387  			wait_for_completion(&scfcp->scfc_completion);
9b9a80677fd80b Paul E. McKenney 2021-06-24  388  			if (use_cpus_read_lock)
9b9a80677fd80b Paul E. McKenney 2021-06-24  389  				cpus_read_lock();
9b9a80677fd80b Paul E. McKenney 2021-06-24  390  			else
9b9a80677fd80b Paul E. McKenney 2021-06-24  391  				preempt_disable();
9b9a80677fd80b Paul E. McKenney 2021-06-24  392  		} else {
9b9a80677fd80b Paul E. McKenney 2021-06-24  393  			scfp->n_single_rpc_ofl++;
9b9a80677fd80b Paul E. McKenney 2021-06-24  394  			kfree(scfcp);
9b9a80677fd80b Paul E. McKenney 2021-06-24  395  			scfcp = NULL;
9b9a80677fd80b Paul E. McKenney 2021-06-24  396  		}
9b9a80677fd80b Paul E. McKenney 2021-06-24  397  		break;
5022b8ac608f8b Paul E. McKenney 2020-06-25  398  	case SCF_PRIM_MANY:
5022b8ac608f8b Paul E. McKenney 2020-06-25  399  		if (scfsp->scfs_wait)
5022b8ac608f8b Paul E. McKenney 2020-06-25  400  			scfp->n_many_wait++;
5022b8ac608f8b Paul E. McKenney 2020-06-25  401  		else
5022b8ac608f8b Paul E. McKenney 2020-06-25  402  			scfp->n_many++;
ee7035d29576dc Paul E. McKenney 2020-07-01  403  		if (scfcp) {
ee7035d29576dc Paul E. McKenney 2020-07-01  404  			barrier(); // Prevent race-reduction compiler optimizations.
980205ee8489d5 Paul E. McKenney 2020-07-01  405  			scfcp->scfc_in = true;
ee7035d29576dc Paul E. McKenney 2020-07-01  406  		}
980205ee8489d5 Paul E. McKenney 2020-07-01  407  		smp_call_function_many(cpu_online_mask, scf_handler, scfcp, scfsp->scfs_wait);
5022b8ac608f8b Paul E. McKenney 2020-06-25  408  		break;
5022b8ac608f8b Paul E. McKenney 2020-06-25  409  	case SCF_PRIM_ALL:
5022b8ac608f8b Paul E. McKenney 2020-06-25  410  		if (scfsp->scfs_wait)
5022b8ac608f8b Paul E. McKenney 2020-06-25  411  			scfp->n_all_wait++;
5022b8ac608f8b Paul E. McKenney 2020-06-25  412  		else
e9d338a0b1799c Paul E. McKenney 2020-06-24  413  			scfp->n_all++;
ee7035d29576dc Paul E. McKenney 2020-07-01  414  		if (scfcp) {
ee7035d29576dc Paul E. McKenney 2020-07-01  415  			barrier(); // Prevent race-reduction compiler optimizations.
34e8c4837adb57 Paul E. McKenney 2020-07-01  416  			scfcp->scfc_in = true;
ee7035d29576dc Paul E. McKenney 2020-07-01  417  		}
34e8c4837adb57 Paul E. McKenney 2020-07-01  418  		smp_call_function(scf_handler, scfcp, scfsp->scfs_wait);
676e5469643e71 Paul E. McKenney 2020-07-01  419  		break;
de77d4da54d10d Paul E. McKenney 2020-07-02  420  	default:
de77d4da54d10d Paul E. McKenney 2020-07-02  421  		WARN_ON_ONCE(1);
de77d4da54d10d Paul E. McKenney 2020-07-02  422  		if (scfcp)
de77d4da54d10d Paul E. McKenney 2020-07-02  423  			scfcp->scfc_out = true;
676e5469643e71 Paul E. McKenney 2020-07-01  424  	}
676e5469643e71 Paul E. McKenney 2020-07-01  425  	if (scfcp && scfsp->scfs_wait) {
9e66bf03f9c538 Paul E. McKenney 2020-07-03  426  		if (WARN_ON_ONCE((num_online_cpus() > 1 || scfsp->scfs_prim == SCF_PRIM_SINGLE) &&
9b9a80677fd80b Paul E. McKenney 2021-06-24  427  				 !scfcp->scfc_out)) {
9b9a80677fd80b Paul E. McKenney 2021-06-24  428  			pr_warn("%s: Memory-ordering failure, scfs_prim: %d.\n", __func__, scfsp->scfs_prim);
34e8c4837adb57 Paul E. McKenney 2020-07-01  429  			atomic_inc(&n_mb_out_errs); // Leak rather than trash!
9b9a80677fd80b Paul E. McKenney 2021-06-24  430  		} else {
34e8c4837adb57 Paul E. McKenney 2020-07-01  431  			kfree(scfcp);
9b9a80677fd80b Paul E. McKenney 2021-06-24  432  		}
ee7035d29576dc Paul E. McKenney 2020-07-01  433  		barrier(); // Prevent race-reduction compiler optimizations.
34e8c4837adb57 Paul E. McKenney 2020-07-01  434  	}
e9d338a0b1799c Paul E. McKenney 2020-06-24  435  	if (use_cpus_read_lock)
e9d338a0b1799c Paul E. McKenney 2020-06-24  436  		cpus_read_unlock();
e9d338a0b1799c Paul E. McKenney 2020-06-24  437  	else
e9d338a0b1799c Paul E. McKenney 2020-06-24  438  		preempt_enable();
e9d338a0b1799c Paul E. McKenney 2020-06-24  439  	if (!(torture_random(trsp) & 0xfff))
e9d338a0b1799c Paul E. McKenney 2020-06-24 @440  		schedule_timeout_uninterruptible(1);
e9d338a0b1799c Paul E. McKenney 2020-06-24  441  }
e9d338a0b1799c Paul E. McKenney 2020-06-24  442  

:::::: The code at line 440 was first introduced by commit
:::::: e9d338a0b1799c988b678e8ccb66a442272e6aa3 scftorture: Add smp_call_function() torture test

:::::: TO: Paul E. McKenney <paulmck@kernel.org>
:::::: CC: Paul E. McKenney <paulmck@kernel.org>

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2026-11-08  7:33 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=202611080842.qPBW23KP-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=error27@gmail.com \
    --cc=oe-kbuild@lists.linux.dev \
    /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.