lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:   Tue, 28 Nov 2017 11:12:44 +0800
From:   kbuild test robot <fengguang.wu@...el.com>
To:     Ben Skeggs <bskeggs@...hat.com>
Cc:     kbuild-all@...org, linux-kernel@...r.kernel.org
Subject: drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c:550:2-3: Unneeded
 semicolon

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   4fbd8d194f06c8a3fd2af1ce560ddb31f7ec8323
commit: eb813999f20097d24310836dfa07a97e2eb0c936 drm/nouveau/mmu: implement new vmm backend
date:   4 weeks ago


coccinelle warnings: (new ones prefixed by >>)

>> drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c:550:2-3: Unneeded semicolon

vim +550 drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c

   466	
   467	static inline u64
   468	nvkm_vmm_iter(struct nvkm_vmm *vmm, const struct nvkm_vmm_page *page,
   469		      u64 addr, u64 size, const char *name, bool ref,
   470		      bool (*REF_PTES)(struct nvkm_vmm_iter *, u32, u32),
   471		      nvkm_vmm_pte_func MAP_PTES, struct nvkm_vmm_map *map,
   472		      nvkm_vmm_pxe_func CLR_PTES)
   473	{
   474		const struct nvkm_vmm_desc *desc = page->desc;
   475		struct nvkm_vmm_iter it;
   476		u64 bits = addr >> page->shift;
   477	
   478		it.page = page;
   479		it.desc = desc;
   480		it.vmm = vmm;
   481		it.cnt = size >> page->shift;
   482		it.flush = NVKM_VMM_LEVELS_MAX;
   483	
   484		/* Deconstruct address into PTE indices for each mapping level. */
   485		for (it.lvl = 0; desc[it.lvl].bits; it.lvl++) {
   486			it.pte[it.lvl] = bits & ((1 << desc[it.lvl].bits) - 1);
   487			bits >>= desc[it.lvl].bits;
   488		}
   489		it.max = --it.lvl;
   490		it.pt[it.max] = vmm->pd;
   491	
   492		it.lvl = 0;
   493		TRA(&it, "%s: %016llx %016llx %d %lld PTEs", name,
   494		         addr, size, page->shift, it.cnt);
   495		it.lvl = it.max;
   496	
   497		/* Depth-first traversal of page tables. */
   498		while (it.cnt) {
   499			struct nvkm_vmm_pt *pgt = it.pt[it.lvl];
   500			const int type = desc->type == SPT;
   501			const u32 pten = 1 << desc->bits;
   502			const u32 ptei = it.pte[0];
   503			const u32 ptes = min_t(u64, it.cnt, pten - ptei);
   504	
   505			/* Walk down the tree, finding page tables for each level. */
   506			for (; it.lvl; it.lvl--) {
   507				const u32 pdei = it.pte[it.lvl];
   508				struct nvkm_vmm_pt *pgd = pgt;
   509	
   510				/* Software PT. */
   511				if (ref && NVKM_VMM_PDE_INVALID(pgd->pde[pdei])) {
   512					if (!nvkm_vmm_ref_swpt(&it, pgd, pdei))
   513						goto fail;
   514				}
   515				it.pt[it.lvl - 1] = pgt = pgd->pde[pdei];
   516	
   517				/* Hardware PT.
   518				 *
   519				 * This is a separate step from above due to GF100 and
   520				 * newer having dual page tables at some levels, which
   521				 * are refcounted independently.
   522				 */
   523				if (ref && !pgt->refs[desc[it.lvl - 1].type == SPT]) {
   524					if (!nvkm_vmm_ref_hwpt(&it, pgd, pdei))
   525						goto fail;
   526				}
   527			}
   528	
   529			/* Handle PTE updates. */
   530			if (!REF_PTES || REF_PTES(&it, ptei, ptes)) {
   531				struct nvkm_mmu_pt *pt = pgt->pt[type];
   532				if (MAP_PTES || CLR_PTES) {
   533					if (MAP_PTES)
   534						MAP_PTES(vmm, pt, ptei, ptes, map);
   535					else
   536						CLR_PTES(vmm, pt, ptei, ptes);
   537					nvkm_vmm_flush_mark(&it);
   538				}
   539			}
   540	
   541			/* Walk back up the tree to the next position. */
   542			it.pte[it.lvl] += ptes;
   543			it.cnt -= ptes;
   544			if (it.cnt) {
   545				while (it.pte[it.lvl] == (1 << desc[it.lvl].bits)) {
   546					it.pte[it.lvl++] = 0;
   547					it.pte[it.lvl]++;
   548				}
   549			}
 > 550		};
   551	
   552		nvkm_vmm_flush(&it);
   553		return ~0ULL;
   554	
   555	fail:
   556		/* Reconstruct the failure address so the caller is able to
   557		 * reverse any partially completed operations.
   558		 */
   559		addr = it.pte[it.max--];
   560		do {
   561			addr  = addr << desc[it.max].bits;
   562			addr |= it.pte[it.max];
   563		} while (it.max--);
   564	
   565		return addr << page->shift;
   566	}
   567	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ