All of lore.kernel.org
 help / color / mirror / Atom feed
* arch/arm64/kernel/mte.c:274 __access_remote_tags() error: uninitialized symbol 'ret'.
@ 2020-12-11 21:06 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2020-12-11 21:06 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 7266 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Vincenzo Frascino <vincenzo.frascino@arm.com>
CC: Catalin Marinas <catalin.marinas@arm.com>

Hi Vincenzo,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   94801e5c6d461045726e1563ba2369ef7ce21dbf
commit: 89b94df9dfb16fe29f9d2085b0a98116dc34d814 arm64: mte: Kconfig entry
date:   3 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 3 months ago
config: arm64-randconfig-m031-20201210 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
arch/arm64/kernel/mte.c:274 __access_remote_tags() error: uninitialized symbol 'ret'.

vim +/ret +274 arch/arm64/kernel/mte.c

18ddbaa02b7a64f Catalin Marinas 2020-03-30  203  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  204  /*
18ddbaa02b7a64f Catalin Marinas 2020-03-30  205   * Access MTE tags in another process' address space as given in mm. Update
18ddbaa02b7a64f Catalin Marinas 2020-03-30  206   * the number of tags copied. Return 0 if any tags copied, error otherwise.
18ddbaa02b7a64f Catalin Marinas 2020-03-30  207   * Inspired by __access_remote_vm().
18ddbaa02b7a64f Catalin Marinas 2020-03-30  208   */
18ddbaa02b7a64f Catalin Marinas 2020-03-30  209  static int __access_remote_tags(struct mm_struct *mm, unsigned long addr,
18ddbaa02b7a64f Catalin Marinas 2020-03-30  210  				struct iovec *kiov, unsigned int gup_flags)
18ddbaa02b7a64f Catalin Marinas 2020-03-30  211  {
18ddbaa02b7a64f Catalin Marinas 2020-03-30  212  	struct vm_area_struct *vma;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  213  	void __user *buf = kiov->iov_base;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  214  	size_t len = kiov->iov_len;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  215  	int ret;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  216  	int write = gup_flags & FOLL_WRITE;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  217  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  218  	if (!access_ok(buf, len))
18ddbaa02b7a64f Catalin Marinas 2020-03-30  219  		return -EFAULT;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  220  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  221  	if (mmap_read_lock_killable(mm))
18ddbaa02b7a64f Catalin Marinas 2020-03-30  222  		return -EIO;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  223  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  224  	while (len) {
18ddbaa02b7a64f Catalin Marinas 2020-03-30  225  		unsigned long tags, offset;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  226  		void *maddr;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  227  		struct page *page = NULL;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  228  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  229  		ret = get_user_pages_remote(mm, addr, 1, gup_flags, &page,
18ddbaa02b7a64f Catalin Marinas 2020-03-30  230  					    &vma, NULL);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  231  		if (ret <= 0)
18ddbaa02b7a64f Catalin Marinas 2020-03-30  232  			break;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  233  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  234  		/*
18ddbaa02b7a64f Catalin Marinas 2020-03-30  235  		 * Only copy tags if the page has been mapped as PROT_MTE
18ddbaa02b7a64f Catalin Marinas 2020-03-30  236  		 * (PG_mte_tagged set). Otherwise the tags are not valid and
18ddbaa02b7a64f Catalin Marinas 2020-03-30  237  		 * not accessible to user. Moreover, an mprotect(PROT_MTE)
18ddbaa02b7a64f Catalin Marinas 2020-03-30  238  		 * would cause the existing tags to be cleared if the page
18ddbaa02b7a64f Catalin Marinas 2020-03-30  239  		 * was never mapped with PROT_MTE.
18ddbaa02b7a64f Catalin Marinas 2020-03-30  240  		 */
18ddbaa02b7a64f Catalin Marinas 2020-03-30  241  		if (!test_bit(PG_mte_tagged, &page->flags)) {
18ddbaa02b7a64f Catalin Marinas 2020-03-30  242  			ret = -EOPNOTSUPP;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  243  			put_page(page);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  244  			break;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  245  		}
18ddbaa02b7a64f Catalin Marinas 2020-03-30  246  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  247  		/* limit access to the end of the page */
18ddbaa02b7a64f Catalin Marinas 2020-03-30  248  		offset = offset_in_page(addr);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  249  		tags = min(len, (PAGE_SIZE - offset) / MTE_GRANULE_SIZE);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  250  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  251  		maddr = page_address(page);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  252  		if (write) {
18ddbaa02b7a64f Catalin Marinas 2020-03-30  253  			tags = mte_copy_tags_from_user(maddr + offset, buf, tags);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  254  			set_page_dirty_lock(page);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  255  		} else {
18ddbaa02b7a64f Catalin Marinas 2020-03-30  256  			tags = mte_copy_tags_to_user(buf, maddr + offset, tags);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  257  		}
18ddbaa02b7a64f Catalin Marinas 2020-03-30  258  		put_page(page);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  259  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  260  		/* error accessing the tracer's buffer */
18ddbaa02b7a64f Catalin Marinas 2020-03-30  261  		if (!tags)
18ddbaa02b7a64f Catalin Marinas 2020-03-30  262  			break;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  263  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  264  		len -= tags;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  265  		buf += tags;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  266  		addr += tags * MTE_GRANULE_SIZE;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  267  	}
18ddbaa02b7a64f Catalin Marinas 2020-03-30  268  	mmap_read_unlock(mm);
18ddbaa02b7a64f Catalin Marinas 2020-03-30  269  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  270  	/* return an error if no tags copied */
18ddbaa02b7a64f Catalin Marinas 2020-03-30  271  	kiov->iov_len = buf - kiov->iov_base;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  272  	if (!kiov->iov_len) {
18ddbaa02b7a64f Catalin Marinas 2020-03-30  273  		/* check for error accessing the tracee's address space */
18ddbaa02b7a64f Catalin Marinas 2020-03-30 @274  		if (ret <= 0)
18ddbaa02b7a64f Catalin Marinas 2020-03-30  275  			return -EIO;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  276  		else
18ddbaa02b7a64f Catalin Marinas 2020-03-30  277  			return -EFAULT;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  278  	}
18ddbaa02b7a64f Catalin Marinas 2020-03-30  279  
18ddbaa02b7a64f Catalin Marinas 2020-03-30  280  	return 0;
18ddbaa02b7a64f Catalin Marinas 2020-03-30  281  }
18ddbaa02b7a64f Catalin Marinas 2020-03-30  282  

:::::: The code@line 274 was first introduced by commit
:::::: 18ddbaa02b7a64f4cf3e7e3d4b78b8b70481a17b arm64: mte: ptrace: Add PTRACE_{PEEK,POKE}MTETAGS support

:::::: TO: Catalin Marinas <catalin.marinas@arm.com>
:::::: CC: Catalin Marinas <catalin.marinas@arm.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 38734 bytes --]

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

* arch/arm64/kernel/mte.c:274 __access_remote_tags() error: uninitialized symbol 'ret'.
@ 2021-07-05 17:40 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-07-05 17:40 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 7314 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Vincenzo Frascino <vincenzo.frascino@arm.com>
CC: Catalin Marinas <catalin.marinas@arm.com>

Hi Vincenzo,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a180bd1d7e16173d965b263c5a536aa40afa2a2a
commit: 89b94df9dfb16fe29f9d2085b0a98116dc34d814 arm64: mte: Kconfig entry
date:   10 months ago
:::::: branch date: 18 hours ago
:::::: commit date: 10 months ago
config: arm64-randconfig-m031-20210705 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
arch/arm64/kernel/mte.c:274 __access_remote_tags() error: uninitialized symbol 'ret'.

Old smatch warnings:
arch/arm64/kernel/mte.c:280 __access_remote_tags() warn: inconsistent returns '&mm->mmap_lock'.

vim +/ret +274 arch/arm64/kernel/mte.c

18ddbaa02b7a64 Catalin Marinas 2020-03-30  203  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  204  /*
18ddbaa02b7a64 Catalin Marinas 2020-03-30  205   * Access MTE tags in another process' address space as given in mm. Update
18ddbaa02b7a64 Catalin Marinas 2020-03-30  206   * the number of tags copied. Return 0 if any tags copied, error otherwise.
18ddbaa02b7a64 Catalin Marinas 2020-03-30  207   * Inspired by __access_remote_vm().
18ddbaa02b7a64 Catalin Marinas 2020-03-30  208   */
18ddbaa02b7a64 Catalin Marinas 2020-03-30  209  static int __access_remote_tags(struct mm_struct *mm, unsigned long addr,
18ddbaa02b7a64 Catalin Marinas 2020-03-30  210  				struct iovec *kiov, unsigned int gup_flags)
18ddbaa02b7a64 Catalin Marinas 2020-03-30  211  {
18ddbaa02b7a64 Catalin Marinas 2020-03-30  212  	struct vm_area_struct *vma;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  213  	void __user *buf = kiov->iov_base;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  214  	size_t len = kiov->iov_len;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  215  	int ret;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  216  	int write = gup_flags & FOLL_WRITE;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  217  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  218  	if (!access_ok(buf, len))
18ddbaa02b7a64 Catalin Marinas 2020-03-30  219  		return -EFAULT;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  220  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  221  	if (mmap_read_lock_killable(mm))
18ddbaa02b7a64 Catalin Marinas 2020-03-30  222  		return -EIO;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  223  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  224  	while (len) {
18ddbaa02b7a64 Catalin Marinas 2020-03-30  225  		unsigned long tags, offset;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  226  		void *maddr;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  227  		struct page *page = NULL;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  228  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  229  		ret = get_user_pages_remote(mm, addr, 1, gup_flags, &page,
18ddbaa02b7a64 Catalin Marinas 2020-03-30  230  					    &vma, NULL);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  231  		if (ret <= 0)
18ddbaa02b7a64 Catalin Marinas 2020-03-30  232  			break;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  233  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  234  		/*
18ddbaa02b7a64 Catalin Marinas 2020-03-30  235  		 * Only copy tags if the page has been mapped as PROT_MTE
18ddbaa02b7a64 Catalin Marinas 2020-03-30  236  		 * (PG_mte_tagged set). Otherwise the tags are not valid and
18ddbaa02b7a64 Catalin Marinas 2020-03-30  237  		 * not accessible to user. Moreover, an mprotect(PROT_MTE)
18ddbaa02b7a64 Catalin Marinas 2020-03-30  238  		 * would cause the existing tags to be cleared if the page
18ddbaa02b7a64 Catalin Marinas 2020-03-30  239  		 * was never mapped with PROT_MTE.
18ddbaa02b7a64 Catalin Marinas 2020-03-30  240  		 */
18ddbaa02b7a64 Catalin Marinas 2020-03-30  241  		if (!test_bit(PG_mte_tagged, &page->flags)) {
18ddbaa02b7a64 Catalin Marinas 2020-03-30  242  			ret = -EOPNOTSUPP;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  243  			put_page(page);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  244  			break;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  245  		}
18ddbaa02b7a64 Catalin Marinas 2020-03-30  246  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  247  		/* limit access to the end of the page */
18ddbaa02b7a64 Catalin Marinas 2020-03-30  248  		offset = offset_in_page(addr);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  249  		tags = min(len, (PAGE_SIZE - offset) / MTE_GRANULE_SIZE);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  250  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  251  		maddr = page_address(page);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  252  		if (write) {
18ddbaa02b7a64 Catalin Marinas 2020-03-30  253  			tags = mte_copy_tags_from_user(maddr + offset, buf, tags);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  254  			set_page_dirty_lock(page);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  255  		} else {
18ddbaa02b7a64 Catalin Marinas 2020-03-30  256  			tags = mte_copy_tags_to_user(buf, maddr + offset, tags);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  257  		}
18ddbaa02b7a64 Catalin Marinas 2020-03-30  258  		put_page(page);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  259  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  260  		/* error accessing the tracer's buffer */
18ddbaa02b7a64 Catalin Marinas 2020-03-30  261  		if (!tags)
18ddbaa02b7a64 Catalin Marinas 2020-03-30  262  			break;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  263  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  264  		len -= tags;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  265  		buf += tags;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  266  		addr += tags * MTE_GRANULE_SIZE;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  267  	}
18ddbaa02b7a64 Catalin Marinas 2020-03-30  268  	mmap_read_unlock(mm);
18ddbaa02b7a64 Catalin Marinas 2020-03-30  269  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  270  	/* return an error if no tags copied */
18ddbaa02b7a64 Catalin Marinas 2020-03-30  271  	kiov->iov_len = buf - kiov->iov_base;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  272  	if (!kiov->iov_len) {
18ddbaa02b7a64 Catalin Marinas 2020-03-30  273  		/* check for error accessing the tracee's address space */
18ddbaa02b7a64 Catalin Marinas 2020-03-30 @274  		if (ret <= 0)
18ddbaa02b7a64 Catalin Marinas 2020-03-30  275  			return -EIO;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  276  		else
18ddbaa02b7a64 Catalin Marinas 2020-03-30  277  			return -EFAULT;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  278  	}
18ddbaa02b7a64 Catalin Marinas 2020-03-30  279  
18ddbaa02b7a64 Catalin Marinas 2020-03-30  280  	return 0;
18ddbaa02b7a64 Catalin Marinas 2020-03-30  281  }
18ddbaa02b7a64 Catalin Marinas 2020-03-30  282  

:::::: The code@line 274 was first introduced by commit
:::::: 18ddbaa02b7a64f4cf3e7e3d4b78b8b70481a17b arm64: mte: ptrace: Add PTRACE_{PEEK,POKE}MTETAGS support

:::::: TO: Catalin Marinas <catalin.marinas@arm.com>
:::::: CC: Catalin Marinas <catalin.marinas@arm.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 39353 bytes --]

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

end of thread, other threads:[~2021-07-05 17:40 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-12-11 21:06 arch/arm64/kernel/mte.c:274 __access_remote_tags() error: uninitialized symbol 'ret' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-07-05 17:40 kernel test robot

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.