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 */ 21 int 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