1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * A generic version of devmem_is_allowed. 4 * 5 * Based on arch/arm64/mm/mmap.c 6 * 7 * Copyright (C) 2020 Google, Inc. 8 * Copyright (C) 2012 ARM Ltd. 9 */ 10 11#include <linux/mm.h> 12#include <linux/ioport.h> 13#include <linux/io.h> 14 15/* 16 * devmem_is_allowed() checks to see if /dev/mem access to a certain address 17 * is valid. The argument is a physical page number. We mimic x86 here by 18 * disallowing access to system RAM as well as device-exclusive MMIO regions. 19 * This effectively disable read()/write() on /dev/mem. 20 */ 21int devmem_is_allowed(unsigned long pfn) 22{ 23 if (iomem_is_exclusive(PFN_PHYS(pfn))) 24 return 0; 25 if (!page_is_ram(pfn)) 26 return 1; 27 return 0; 28} 29