forked from mirrors/linux
		
	x86/mm: Clean up types in xlate_dev_mem_ptr()
Pavel Machek reported the following compiler warning on x86/32 CONFIG_HIGHMEM64G=y builds: arch/x86/mm/ioremap.c:344:10: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] Clean up the types in this function by using a single natural type for internal calculations (unsigned long), to make it more apparent what's happening, and also to remove fragile casts. Reported-by: Pavel Machek <pavel@ucw.cz> Cc: jgross@suse.com Cc: roland@purestorage.com Link: http://lkml.kernel.org/r/20150416080440.GA507@amd Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
		
							parent
							
								
									a6dfa128ce
								
							
						
					
					
						commit
						94d4b4765b
					
				
					 1 changed files with 8 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -332,18 +332,20 @@ EXPORT_SYMBOL(iounmap);
 | 
			
		|||
 */
 | 
			
		||||
void *xlate_dev_mem_ptr(phys_addr_t phys)
 | 
			
		||||
{
 | 
			
		||||
	void *addr;
 | 
			
		||||
	unsigned long start = phys & PAGE_MASK;
 | 
			
		||||
	unsigned long start  = phys &  PAGE_MASK;
 | 
			
		||||
	unsigned long offset = phys & ~PAGE_MASK;
 | 
			
		||||
	unsigned long vaddr;
 | 
			
		||||
 | 
			
		||||
	/* If page is RAM, we can use __va. Otherwise ioremap and unmap. */
 | 
			
		||||
	if (page_is_ram(start >> PAGE_SHIFT))
 | 
			
		||||
		return __va(phys);
 | 
			
		||||
 | 
			
		||||
	addr = (void __force *)ioremap_cache(start, PAGE_SIZE);
 | 
			
		||||
	if (addr)
 | 
			
		||||
		addr = (void *)((unsigned long)addr | (phys & ~PAGE_MASK));
 | 
			
		||||
	vaddr = (unsigned long)ioremap_cache(start, PAGE_SIZE);
 | 
			
		||||
	/* Only add the offset on success and return NULL if the ioremap() failed: */
 | 
			
		||||
	if (vaddr)
 | 
			
		||||
		vaddr += offset;
 | 
			
		||||
 | 
			
		||||
	return addr;
 | 
			
		||||
	return (void *)vaddr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void unxlate_dev_mem_ptr(phys_addr_t phys, void *addr)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue