forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
lib: Add a generic version of devmem_is_allowed()
As part of adding support for STRICT_DEVMEM to the RISC-V port, Zong provided a devmem_is_allowed() implementation that's exactly the same as all the others I checked. Instead I'm adding a generic version, which will soon be used. Reviewed-by: Luis Chamberlain <[email protected]> Signed-off-by: Palmer Dabbelt <[email protected]>
- Loading branch information
1 parent
bbf5c97
commit 527701e
Showing
5 changed files
with
37 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
// SPDX-License-Identifier: GPL-2.0-only | ||
/* | ||
* A generic version of devmem_is_allowed. | ||
* | ||
* Based on arch/arm64/mm/mmap.c | ||
* | ||
* Copyright (C) 2020 Google, Inc. | ||
* Copyright (C) 2012 ARM Ltd. | ||
*/ | ||
|
||
#include <linux/mm.h> | ||
#include <linux/ioport.h> | ||
|
||
/* | ||
* devmem_is_allowed() checks to see if /dev/mem access to a certain address | ||
* is valid. The argument is a physical page number. We mimic x86 here by | ||
* disallowing access to system RAM as well as device-exclusive MMIO regions. | ||
* This effectively disable read()/write() on /dev/mem. | ||
*/ | ||
int devmem_is_allowed(unsigned long pfn) | ||
{ | ||
if (iomem_is_exclusive(pfn << PAGE_SHIFT)) | ||
return 0; | ||
if (!page_is_ram(pfn)) | ||
return 1; | ||
return 0; | ||
} |