All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: [linux-next:master 6316/11956] arch/arm64/kvm/mmu.c:1642 user_mem_abort() error: uninitialized symbol 'ret'.
Date: Wed, 30 Sep 2020 09:16:03 +0300	[thread overview]
Message-ID: <20200930061603.GA4282@kadam> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   49e7e3e905e437a02782019570f70997e2da9101
commit: 6f745f1bb5bf2914be2344b0dd7781d0528b3e42 [6316/11956] KVM: arm64: Convert user_mem_abort() to generic page-table API
config: arm64-randconfig-m031-20200929 (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/kvm/mmu.c:1642 user_mem_abort() error: uninitialized symbol 'ret'.

vim +/ret +1642 arch/arm64/kvm/mmu.c

94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1496  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd5 arch/arm/kvm/mmu.c   Christoffer Dall  2014-08-19  1497  			  struct kvm_memory_slot *memslot, unsigned long hva,
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1498  			  unsigned long fault_status)
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1499  {
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1500  	int ret;
6396b852e46e56 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1501  	bool write_fault, writable, force_pte = false;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1502  	bool exec_fault;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1503  	bool device = false;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1504  	unsigned long mmu_seq;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1505  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1506  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1507  	struct vm_area_struct *vma;
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1508  	short vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1509  	gfn_t gfn;
ba049e93aef7e8 arch/arm/kvm/mmu.c   Dan Williams      2016-01-15  1510  	kvm_pfn_t pfn;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1511  	bool logging_active = memslot_is_logging(memslot);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1512  	unsigned long vma_pagesize;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1513  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1514  	struct kvm_pgtable *pgt;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1515  
a7d079cea2dffb arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-09  1516  	write_fault = kvm_is_write_fault(vcpu);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1517  	exec_fault = kvm_vcpu_trap_is_iabt(vcpu);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1518  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1519  
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1520  	if (fault_status == FSC_PERM && !write_fault && !exec_fault) {
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1521  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1522  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1523  	}
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1524  
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1525  	/* Let's check if we will get back a huge page backed by hugetlbfs */
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse 2020-06-08  1526  	mmap_read_lock(current->mm);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1527  	vma = find_vma_intersection(current->mm, hva, hva + 1);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1528  	if (unlikely(!vma)) {
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1529  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse 2020-06-08  1530  		mmap_read_unlock(current->mm);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1531  		return -EFAULT;
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1532  	}
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1533  
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1534  	if (is_vm_hugetlb_page(vma))
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1535  		vma_shift = huge_page_shift(hstate_vma(vma));
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1536  	else
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1537  		vma_shift = PAGE_SHIFT;
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1538  
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1539  	vma_pagesize = 1ULL << vma_shift;
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1540  	if (logging_active ||
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier      2019-12-11  1541  	    (vma->vm_flags & VM_PFNMAP) ||
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1542  	    !fault_supports_stage2_huge_mapping(memslot, hva, vma_pagesize)) {
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1543  		force_pte = true;
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1544  		vma_pagesize = PAGE_SIZE;
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1545  	}
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1546  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1547  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1548  		fault_ipa &= huge_page_mask(hstate_vma(vma));
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1549  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1550  	gfn = fault_ipa >> PAGE_SHIFT;
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse 2020-06-08  1551  	mmap_read_unlock(current->mm);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1552  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1553  	/*
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1554  	 * Permission faults just need to update the existing leaf entry,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1555  	 * and so normally don't require allocations from the memcache. The
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1556  	 * only exception to this is when dirty logging is enabled at runtime
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1557  	 * and a write fault needs to collapse a block entry into a table.
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1558  	 */
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1559  	if (fault_status != FSC_PERM || (logging_active && write_fault)) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1560  		ret = kvm_mmu_topup_memory_cache(memcache,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1561  						 kvm_mmu_cache_min_pages(kvm));
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1562  		if (ret)
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1563  			return ret;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1564  	}
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1565  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1566  	mmu_seq = vcpu->kvm->mmu_notifier_seq;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1567  	/*
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1568  	 * Ensure the read of mmu_notifier_seq happens before we call
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1569  	 * gfn_to_pfn_prot (which calls get_user_pages), so that we don't risk
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1570  	 * the page we just got a reference to gets unmapped before we have a
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1571  	 * chance to grab the mmu_lock, which ensure that if the page gets
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1572  	 * unmapped afterwards, the call to kvm_unmap_hva will take it away
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1573  	 * from us again properly. This smp_rmb() interacts with the smp_wmb()
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1574  	 * in kvm_mmu_notifier_invalidate_<page|range_end>.
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1575  	 */
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1576  	smp_rmb();
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1577  
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1578  	pfn = gfn_to_pfn_prot(kvm, gfn, write_fault, &writable);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse       2017-06-20  1579  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1580  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse       2017-06-20  1581  		return 0;
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse       2017-06-20  1582  	}
9ac715954682b2 arch/arm/kvm/mmu.c   Christoffer Dall  2016-08-17  1583  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1584  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1585  
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1586  	if (kvm_is_device_pfn(pfn)) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1587  		device = true;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1588  	} else if (logging_active && !write_fault) {
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1589  		/*
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1590  		 * Only actually map the page as writable if this was a write
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1591  		 * fault.
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1592  		 */
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1593  		writable = false;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1594  	}
b88657674d39fc arch/arm/kvm/mmu.c   Kim Phillips      2014-06-26  1595  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1596  	if (exec_fault && device)
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier      2019-12-11  1597  		return -ENOEXEC;
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier      2019-12-11  1598  
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1599  	spin_lock(&kvm->mmu_lock);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1600  	pgt = vcpu->arch.hw_mmu->pgt;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1601  	if (mmu_notifier_retry(kvm, mmu_seq))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1602  		goto out_unlock;

Set the error code?

15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1603  
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1604  	/*
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1605  	 * If we are not forced to use page mapping, check if we are
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1606  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1607  	 */
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1608  	if (vma_pagesize == PAGE_SIZE && !force_pte)
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1609  		vma_pagesize = transparent_hugepage_adjust(memslot, hva,
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1610  							   &pfn, &fault_ipa);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1611  	if (writable) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1612  		prot |= KVM_PGTABLE_PROT_W;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1613  		kvm_set_pfn_dirty(pfn);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1614  		mark_page_dirty(kvm, gfn);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1615  	}
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1616  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1617  	if (fault_status != FSC_PERM && !device)
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1618  		clean_dcache_guest_page(pfn, vma_pagesize);
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1619  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1620  	if (exec_fault) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1621  		prot |= KVM_PGTABLE_PROT_X;
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1622  		invalidate_icache_guest_page(pfn, vma_pagesize);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1623  	}
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1624  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1625  	if (device)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1626  		prot |= KVM_PGTABLE_PROT_DEVICE;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1627  	else if (cpus_have_const_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1628  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1629  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1630  	if (fault_status == FSC_PERM && !(logging_active && writable)) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1631  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1632  	} else {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1633  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1634  					     __pfn_to_phys(pfn), prot,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1635  					     memcache);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1636  	}
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1637  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1638  out_unlock:
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1639  	spin_unlock(&kvm->mmu_lock);
35307b9a5f7ebc arch/arm/kvm/mmu.c   Marc Zyngier      2015-03-12  1640  	kvm_set_pfn_accessed(pfn);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1641  	kvm_release_pfn_clean(pfn);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01 @1642  	return ret;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1643  }

---
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: 36568 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: [linux-next:master 6316/11956] arch/arm64/kvm/mmu.c:1642 user_mem_abort() error: uninitialized symbol 'ret'.
Date: Wed, 30 Sep 2020 09:16:03 +0300	[thread overview]
Message-ID: <20200930061603.GA4282@kadam> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   49e7e3e905e437a02782019570f70997e2da9101
commit: 6f745f1bb5bf2914be2344b0dd7781d0528b3e42 [6316/11956] KVM: arm64: Convert user_mem_abort() to generic page-table API
config: arm64-randconfig-m031-20200929 (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/kvm/mmu.c:1642 user_mem_abort() error: uninitialized symbol 'ret'.

vim +/ret +1642 arch/arm64/kvm/mmu.c

94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1496  static int user_mem_abort(struct kvm_vcpu *vcpu, phys_addr_t fault_ipa,
98047888bb9fd5 arch/arm/kvm/mmu.c   Christoffer Dall  2014-08-19  1497  			  struct kvm_memory_slot *memslot, unsigned long hva,
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1498  			  unsigned long fault_status)
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1499  {
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1500  	int ret;
6396b852e46e56 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1501  	bool write_fault, writable, force_pte = false;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1502  	bool exec_fault;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1503  	bool device = false;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1504  	unsigned long mmu_seq;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1505  	struct kvm *kvm = vcpu->kvm;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1506  	struct kvm_mmu_memory_cache *memcache = &vcpu->arch.mmu_page_cache;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1507  	struct vm_area_struct *vma;
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1508  	short vma_shift;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1509  	gfn_t gfn;
ba049e93aef7e8 arch/arm/kvm/mmu.c   Dan Williams      2016-01-15  1510  	kvm_pfn_t pfn;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1511  	bool logging_active = memslot_is_logging(memslot);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1512  	unsigned long vma_pagesize;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1513  	enum kvm_pgtable_prot prot = KVM_PGTABLE_PROT_R;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1514  	struct kvm_pgtable *pgt;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1515  
a7d079cea2dffb arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-09  1516  	write_fault = kvm_is_write_fault(vcpu);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1517  	exec_fault = kvm_vcpu_trap_is_iabt(vcpu);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1518  	VM_BUG_ON(write_fault && exec_fault);
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1519  
d0e22b4ac3ba23 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1520  	if (fault_status == FSC_PERM && !write_fault && !exec_fault) {
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1521  		kvm_err("Unexpected L2 read permission error\n");
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1522  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1523  	}
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1524  
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1525  	/* Let's check if we will get back a huge page backed by hugetlbfs */
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse 2020-06-08  1526  	mmap_read_lock(current->mm);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1527  	vma = find_vma_intersection(current->mm, hva, hva + 1);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1528  	if (unlikely(!vma)) {
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1529  		kvm_err("Failed to find VMA for hva 0x%lx\n", hva);
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse 2020-06-08  1530  		mmap_read_unlock(current->mm);
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1531  		return -EFAULT;
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1532  	}
37b544087ef3f6 arch/arm/kvm/mmu.c   Ard Biesheuvel    2014-09-17  1533  
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1534  	if (is_vm_hugetlb_page(vma))
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1535  		vma_shift = huge_page_shift(hstate_vma(vma));
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1536  	else
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1537  		vma_shift = PAGE_SHIFT;
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1538  
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1539  	vma_pagesize = 1ULL << vma_shift;
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1540  	if (logging_active ||
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier      2019-12-11  1541  	    (vma->vm_flags & VM_PFNMAP) ||
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1542  	    !fault_supports_stage2_huge_mapping(memslot, hva, vma_pagesize)) {
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1543  		force_pte = true;
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1544  		vma_pagesize = PAGE_SIZE;
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1545  	}
a80868f3985548 virt/kvm/arm/mmu.c   Suzuki K Poulose  2019-03-12  1546  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1547  	if (vma_pagesize == PMD_SIZE || vma_pagesize == PUD_SIZE)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1548  		fault_ipa &= huge_page_mask(hstate_vma(vma));
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1549  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1550  	gfn = fault_ipa >> PAGE_SHIFT;
89154dd5313f77 arch/arm64/kvm/mmu.c Michel Lespinasse 2020-06-08  1551  	mmap_read_unlock(current->mm);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1552  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1553  	/*
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1554  	 * Permission faults just need to update the existing leaf entry,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1555  	 * and so normally don't require allocations from the memcache. The
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1556  	 * only exception to this is when dirty logging is enabled at runtime
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1557  	 * and a write fault needs to collapse a block entry into a table.
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1558  	 */
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1559  	if (fault_status != FSC_PERM || (logging_active && write_fault)) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1560  		ret = kvm_mmu_topup_memory_cache(memcache,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1561  						 kvm_mmu_cache_min_pages(kvm));
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1562  		if (ret)
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1563  			return ret;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1564  	}
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1565  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1566  	mmu_seq = vcpu->kvm->mmu_notifier_seq;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1567  	/*
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1568  	 * Ensure the read of mmu_notifier_seq happens before we call
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1569  	 * gfn_to_pfn_prot (which calls get_user_pages), so that we don't risk
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1570  	 * the page we just got a reference to gets unmapped before we have a
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1571  	 * chance to grab the mmu_lock, which ensure that if the page gets
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1572  	 * unmapped afterwards, the call to kvm_unmap_hva will take it away
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1573  	 * from us again properly. This smp_rmb() interacts with the smp_wmb()
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1574  	 * in kvm_mmu_notifier_invalidate_<page|range_end>.
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1575  	 */
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1576  	smp_rmb();
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1577  
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1578  	pfn = gfn_to_pfn_prot(kvm, gfn, write_fault, &writable);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse       2017-06-20  1579  	if (pfn == KVM_PFN_ERR_HWPOISON) {
1559b7583ff6ed virt/kvm/arm/mmu.c   James Morse       2019-12-17  1580  		kvm_send_hwpoison_signal(hva, vma_shift);
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse       2017-06-20  1581  		return 0;
196f878a7ac2e7 virt/kvm/arm/mmu.c   James Morse       2017-06-20  1582  	}
9ac715954682b2 arch/arm/kvm/mmu.c   Christoffer Dall  2016-08-17  1583  	if (is_error_noslot_pfn(pfn))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1584  		return -EFAULT;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1585  
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1586  	if (kvm_is_device_pfn(pfn)) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1587  		device = true;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1588  	} else if (logging_active && !write_fault) {
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1589  		/*
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1590  		 * Only actually map the page as writable if this was a write
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1591  		 * fault.
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1592  		 */
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1593  		writable = false;
15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1594  	}
b88657674d39fc arch/arm/kvm/mmu.c   Kim Phillips      2014-06-26  1595  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1596  	if (exec_fault && device)
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier      2019-12-11  1597  		return -ENOEXEC;
6d674e28f642e3 virt/kvm/arm/mmu.c   Marc Zyngier      2019-12-11  1598  
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1599  	spin_lock(&kvm->mmu_lock);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1600  	pgt = vcpu->arch.hw_mmu->pgt;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1601  	if (mmu_notifier_retry(kvm, mmu_seq))
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1602  		goto out_unlock;

Set the error code?

15a49a44fc3620 arch/arm/kvm/mmu.c   Mario Smarduch    2015-01-15  1603  
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1604  	/*
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1605  	 * If we are not forced to use page mapping, check if we are
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1606  	 * backed by a THP and thus use block mapping if possible.
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1607  	 */
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1608  	if (vma_pagesize == PAGE_SIZE && !force_pte)
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1609  		vma_pagesize = transparent_hugepage_adjust(memslot, hva,
0529c9021252a5 arch/arm64/kvm/mmu.c Suzuki K Poulose  2020-05-07  1610  							   &pfn, &fault_ipa);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1611  	if (writable) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1612  		prot |= KVM_PGTABLE_PROT_W;
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1613  		kvm_set_pfn_dirty(pfn);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1614  		mark_page_dirty(kvm, gfn);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1615  	}
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1616  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1617  	if (fault_status != FSC_PERM && !device)
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1618  		clean_dcache_guest_page(pfn, vma_pagesize);
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1619  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1620  	if (exec_fault) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1621  		prot |= KVM_PGTABLE_PROT_X;
3f58bf63455588 virt/kvm/arm/mmu.c   Punit Agrawal     2018-12-11  1622  		invalidate_icache_guest_page(pfn, vma_pagesize);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1623  	}
a9c0e12ebee56e virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1624  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1625  	if (device)
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1626  		prot |= KVM_PGTABLE_PROT_DEVICE;
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1627  	else if (cpus_have_const_cap(ARM64_HAS_CACHE_DIC))
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1628  		prot |= KVM_PGTABLE_PROT_X;
a15f693935a9f1 virt/kvm/arm/mmu.c   Marc Zyngier      2017-10-23  1629  
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1630  	if (fault_status == FSC_PERM && !(logging_active && writable)) {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1631  		ret = kvm_pgtable_stage2_relax_perms(pgt, fault_ipa, prot);
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1632  	} else {
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1633  		ret = kvm_pgtable_stage2_map(pgt, fault_ipa, vma_pagesize,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1634  					     __pfn_to_phys(pfn), prot,
6f745f1bb5bf29 arch/arm64/kvm/mmu.c Will Deacon       2020-09-11  1635  					     memcache);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1636  	}
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1637  
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1638  out_unlock:
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01  1639  	spin_unlock(&kvm->mmu_lock);
35307b9a5f7ebc arch/arm/kvm/mmu.c   Marc Zyngier      2015-03-12  1640  	kvm_set_pfn_accessed(pfn);
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1641  	kvm_release_pfn_clean(pfn);
ad361f093c1e31 arch/arm/kvm/mmu.c   Christoffer Dall  2012-11-01 @1642  	return ret;
94f8e6418d3915 arch/arm/kvm/mmu.c   Christoffer Dall  2013-01-20  1643  }

---
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: 36568 bytes --]

             reply	other threads:[~2020-09-30  6:16 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-30  6:16 Dan Carpenter [this message]
2020-09-30  6:16 ` [linux-next:master 6316/11956] arch/arm64/kvm/mmu.c:1642 user_mem_abort() error: uninitialized symbol 'ret' Dan Carpenter
  -- strict thread matches above, loose matches on Subject: below --
2020-09-30  0:54 kernel test robot

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=20200930061603.GA4282@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=kbuild@lists.01.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.