All of lore.kernel.org
 help / color / mirror / Atom feed
* [android-common:android15-6.6 6/6] kernel/fork.c:2318 copy_dmabuf_info() warn: sleeping in atomic context
@ 2025-07-09 20:25 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2025-07-09 20:25 UTC (permalink / raw)
  To: oe-kbuild; +Cc: lkp, Dan Carpenter

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

tree:   https://android.googlesource.com/kernel/common android15-6.6
head:   a9597c7b32ec09bdaf13909f77b203e77b4fbb69
commit: f44d593749dcbd4e1013121fa615ecca412d1cb3 [6/6] ANDROID: Track per-process dmabuf RSS
:::::: branch date: 12 hours ago
:::::: commit date: 21 hours ago
config: i386-randconfig-141-20250709 (https://download.01.org/0day-ci/archive/20250710/202507100414.f3Yyuj82-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0

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/202507100414.f3Yyuj82-lkp@intel.com/

smatch warnings:
kernel/fork.c:2318 copy_dmabuf_info() warn: sleeping in atomic context

vim +2318 kernel/fork.c

792575348ff70e Daniel Bristot de Oliveira 2022-07-29  2291  
f44d593749dcbd T.J. Mercier               2025-06-25  2292  static int copy_dmabuf_info(u64 clone_flags, struct task_struct *p)
f44d593749dcbd T.J. Mercier               2025-06-25  2293  {
f44d593749dcbd T.J. Mercier               2025-06-25  2294  	struct task_dma_buf_record *rec, *copy;
f44d593749dcbd T.J. Mercier               2025-06-25  2295  
f44d593749dcbd T.J. Mercier               2025-06-25  2296  	if (current->dmabuf_info && (clone_flags & (CLONE_VM | CLONE_FILES))
f44d593749dcbd T.J. Mercier               2025-06-25  2297  						== (CLONE_VM | CLONE_FILES)) {
f44d593749dcbd T.J. Mercier               2025-06-25  2298  		/*
f44d593749dcbd T.J. Mercier               2025-06-25  2299  		 * Both MM and FD references to dmabufs are shared with the parent, so
f44d593749dcbd T.J. Mercier               2025-06-25  2300  		 * we can share a RSS counter with the parent.
f44d593749dcbd T.J. Mercier               2025-06-25  2301  		 */
f44d593749dcbd T.J. Mercier               2025-06-25  2302  		refcount_inc(&current->dmabuf_info->refcnt);
f44d593749dcbd T.J. Mercier               2025-06-25  2303  		p->dmabuf_info = current->dmabuf_info;
f44d593749dcbd T.J. Mercier               2025-06-25  2304  		return 0;
f44d593749dcbd T.J. Mercier               2025-06-25  2305  	}
f44d593749dcbd T.J. Mercier               2025-06-25  2306  
f44d593749dcbd T.J. Mercier               2025-06-25  2307  	p->dmabuf_info = kmalloc(sizeof(*p->dmabuf_info), GFP_KERNEL);
f44d593749dcbd T.J. Mercier               2025-06-25  2308  	if (!p->dmabuf_info)
f44d593749dcbd T.J. Mercier               2025-06-25  2309  		return -ENOMEM;
f44d593749dcbd T.J. Mercier               2025-06-25  2310  
f44d593749dcbd T.J. Mercier               2025-06-25  2311  	refcount_set(&p->dmabuf_info->refcnt, 1);
f44d593749dcbd T.J. Mercier               2025-06-25  2312  	spin_lock_init(&p->dmabuf_info->lock);
f44d593749dcbd T.J. Mercier               2025-06-25  2313  	INIT_LIST_HEAD(&p->dmabuf_info->dmabufs);
f44d593749dcbd T.J. Mercier               2025-06-25  2314  	if (current->dmabuf_info) {
f44d593749dcbd T.J. Mercier               2025-06-25  2315  		spin_lock(&current->dmabuf_info->lock);
f44d593749dcbd T.J. Mercier               2025-06-25  2316  		p->dmabuf_info->rss = current->dmabuf_info->rss;
f44d593749dcbd T.J. Mercier               2025-06-25  2317  		list_for_each_entry(rec, &current->dmabuf_info->dmabufs, node) {
f44d593749dcbd T.J. Mercier               2025-06-25 @2318  			copy = kmalloc(sizeof(*copy), GFP_KERNEL);
f44d593749dcbd T.J. Mercier               2025-06-25  2319  			if (!copy) {
f44d593749dcbd T.J. Mercier               2025-06-25  2320  				spin_unlock(&current->dmabuf_info->lock);
f44d593749dcbd T.J. Mercier               2025-06-25  2321  				goto err_list_copy;
f44d593749dcbd T.J. Mercier               2025-06-25  2322  			}
f44d593749dcbd T.J. Mercier               2025-06-25  2323  
f44d593749dcbd T.J. Mercier               2025-06-25  2324  			copy->dmabuf = rec->dmabuf;
f44d593749dcbd T.J. Mercier               2025-06-25  2325  			copy->refcnt = rec->refcnt;
f44d593749dcbd T.J. Mercier               2025-06-25  2326  			list_add(&copy->node, &p->dmabuf_info->dmabufs);
f44d593749dcbd T.J. Mercier               2025-06-25  2327  		}
f44d593749dcbd T.J. Mercier               2025-06-25  2328  		spin_unlock(&current->dmabuf_info->lock);
f44d593749dcbd T.J. Mercier               2025-06-25  2329  	} else {
f44d593749dcbd T.J. Mercier               2025-06-25  2330  		p->dmabuf_info->rss = 0;
f44d593749dcbd T.J. Mercier               2025-06-25  2331  	}
f44d593749dcbd T.J. Mercier               2025-06-25  2332  
f44d593749dcbd T.J. Mercier               2025-06-25  2333  	return 0;
f44d593749dcbd T.J. Mercier               2025-06-25  2334  
f44d593749dcbd T.J. Mercier               2025-06-25  2335  err_list_copy:
f44d593749dcbd T.J. Mercier               2025-06-25  2336  	list_for_each_entry_safe(rec, copy, &p->dmabuf_info->dmabufs, node) {
f44d593749dcbd T.J. Mercier               2025-06-25  2337  		list_del(&rec->node);
f44d593749dcbd T.J. Mercier               2025-06-25  2338  		kfree(rec);
f44d593749dcbd T.J. Mercier               2025-06-25  2339  	}
f44d593749dcbd T.J. Mercier               2025-06-25  2340  	kfree(p->dmabuf_info);
f44d593749dcbd T.J. Mercier               2025-06-25  2341  	return -ENOMEM;
f44d593749dcbd T.J. Mercier               2025-06-25  2342  }
f44d593749dcbd T.J. Mercier               2025-06-25  2343  

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [android-common:android15-6.6 6/6] kernel/fork.c:2318 copy_dmabuf_info() warn: sleeping in atomic context
@ 2025-07-14 19:23 Dan Carpenter
  0 siblings, 0 replies; 2+ messages in thread
From: Dan Carpenter @ 2025-07-14 19:23 UTC (permalink / raw)
  To: oe-kbuild, cros-kernel-buildreports; +Cc: lkp, oe-kbuild-all

tree:   https://android.googlesource.com/kernel/common android15-6.6
head:   a9597c7b32ec09bdaf13909f77b203e77b4fbb69
commit: f44d593749dcbd4e1013121fa615ecca412d1cb3 [6/6] ANDROID: Track per-process dmabuf RSS
config: i386-randconfig-141-20250709 (https://download.01.org/0day-ci/archive/20250710/202507100414.f3Yyuj82-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14+deb12u1) 12.2.0

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 <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202507100414.f3Yyuj82-lkp@intel.com/

smatch warnings:
kernel/fork.c:2318 copy_dmabuf_info() warn: sleeping in atomic context

vim +2318 kernel/fork.c

f44d593749dcbd T.J. Mercier               2025-06-25  2292  static int copy_dmabuf_info(u64 clone_flags, struct task_struct *p)
f44d593749dcbd T.J. Mercier               2025-06-25  2293  {
f44d593749dcbd T.J. Mercier               2025-06-25  2294  	struct task_dma_buf_record *rec, *copy;
f44d593749dcbd T.J. Mercier               2025-06-25  2295  
f44d593749dcbd T.J. Mercier               2025-06-25  2296  	if (current->dmabuf_info && (clone_flags & (CLONE_VM | CLONE_FILES))
f44d593749dcbd T.J. Mercier               2025-06-25  2297  						== (CLONE_VM | CLONE_FILES)) {
f44d593749dcbd T.J. Mercier               2025-06-25  2298  		/*
f44d593749dcbd T.J. Mercier               2025-06-25  2299  		 * Both MM and FD references to dmabufs are shared with the parent, so
f44d593749dcbd T.J. Mercier               2025-06-25  2300  		 * we can share a RSS counter with the parent.
f44d593749dcbd T.J. Mercier               2025-06-25  2301  		 */
f44d593749dcbd T.J. Mercier               2025-06-25  2302  		refcount_inc(&current->dmabuf_info->refcnt);
f44d593749dcbd T.J. Mercier               2025-06-25  2303  		p->dmabuf_info = current->dmabuf_info;
f44d593749dcbd T.J. Mercier               2025-06-25  2304  		return 0;
f44d593749dcbd T.J. Mercier               2025-06-25  2305  	}
f44d593749dcbd T.J. Mercier               2025-06-25  2306  
f44d593749dcbd T.J. Mercier               2025-06-25  2307  	p->dmabuf_info = kmalloc(sizeof(*p->dmabuf_info), GFP_KERNEL);
f44d593749dcbd T.J. Mercier               2025-06-25  2308  	if (!p->dmabuf_info)
f44d593749dcbd T.J. Mercier               2025-06-25  2309  		return -ENOMEM;
f44d593749dcbd T.J. Mercier               2025-06-25  2310  
f44d593749dcbd T.J. Mercier               2025-06-25  2311  	refcount_set(&p->dmabuf_info->refcnt, 1);
f44d593749dcbd T.J. Mercier               2025-06-25  2312  	spin_lock_init(&p->dmabuf_info->lock);
f44d593749dcbd T.J. Mercier               2025-06-25  2313  	INIT_LIST_HEAD(&p->dmabuf_info->dmabufs);
f44d593749dcbd T.J. Mercier               2025-06-25  2314  	if (current->dmabuf_info) {
f44d593749dcbd T.J. Mercier               2025-06-25  2315  		spin_lock(&current->dmabuf_info->lock);
                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
We're holding a spin lock.

f44d593749dcbd T.J. Mercier               2025-06-25  2316  		p->dmabuf_info->rss = current->dmabuf_info->rss;
f44d593749dcbd T.J. Mercier               2025-06-25  2317  		list_for_each_entry(rec, &current->dmabuf_info->dmabufs, node) {
f44d593749dcbd T.J. Mercier               2025-06-25 @2318  			copy = kmalloc(sizeof(*copy), GFP_KERNEL);
                                                                                                              ^^^^^^^^^^
So we aren't allowed to sleep.

f44d593749dcbd T.J. Mercier               2025-06-25  2319  			if (!copy) {
f44d593749dcbd T.J. Mercier               2025-06-25  2320  				spin_unlock(&current->dmabuf_info->lock);
f44d593749dcbd T.J. Mercier               2025-06-25  2321  				goto err_list_copy;
f44d593749dcbd T.J. Mercier               2025-06-25  2322  			}
f44d593749dcbd T.J. Mercier               2025-06-25  2323  
f44d593749dcbd T.J. Mercier               2025-06-25  2324  			copy->dmabuf = rec->dmabuf;
f44d593749dcbd T.J. Mercier               2025-06-25  2325  			copy->refcnt = rec->refcnt;
f44d593749dcbd T.J. Mercier               2025-06-25  2326  			list_add(&copy->node, &p->dmabuf_info->dmabufs);
f44d593749dcbd T.J. Mercier               2025-06-25  2327  		}
f44d593749dcbd T.J. Mercier               2025-06-25  2328  		spin_unlock(&current->dmabuf_info->lock);
f44d593749dcbd T.J. Mercier               2025-06-25  2329  	} else {
f44d593749dcbd T.J. Mercier               2025-06-25  2330  		p->dmabuf_info->rss = 0;
f44d593749dcbd T.J. Mercier               2025-06-25  2331  	}
f44d593749dcbd T.J. Mercier               2025-06-25  2332  
f44d593749dcbd T.J. Mercier               2025-06-25  2333  	return 0;
f44d593749dcbd T.J. Mercier               2025-06-25  2334  
f44d593749dcbd T.J. Mercier               2025-06-25  2335  err_list_copy:
f44d593749dcbd T.J. Mercier               2025-06-25  2336  	list_for_each_entry_safe(rec, copy, &p->dmabuf_info->dmabufs, node) {
f44d593749dcbd T.J. Mercier               2025-06-25  2337  		list_del(&rec->node);
f44d593749dcbd T.J. Mercier               2025-06-25  2338  		kfree(rec);
f44d593749dcbd T.J. Mercier               2025-06-25  2339  	}
f44d593749dcbd T.J. Mercier               2025-06-25  2340  	kfree(p->dmabuf_info);
f44d593749dcbd T.J. Mercier               2025-06-25  2341  	return -ENOMEM;
f44d593749dcbd T.J. Mercier               2025-06-25  2342  }

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


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2025-07-14 19:23 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-09 20:25 [android-common:android15-6.6 6/6] kernel/fork.c:2318 copy_dmabuf_info() warn: sleeping in atomic context kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2025-07-14 19:23 Dan Carpenter

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.