32 lines
948 B
C
32 lines
948 B
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* This program is free software and is provided to you under the terms of the
|
|
* GNU General Public License version 2 as published by the Free Software
|
|
* Foundation, and any use by you of this program is subject to the terms
|
|
* of such GNU licence.
|
|
*
|
|
* A copy of the licence is included with the program, and can also be obtained
|
|
* from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#include <linux/version.h>
|
|
|
|
#if (KERNEL_VERSION(4, 20, 0) > LINUX_VERSION_CODE)
|
|
|
|
#include <linux/mm.h>
|
|
|
|
static inline vm_fault_t vmf_insert_pfn_prot(struct vm_area_struct *vma, unsigned long addr,
|
|
unsigned long pfn, pgprot_t pgprot)
|
|
{
|
|
int err = vm_insert_pfn_prot(vma, addr, pfn, pgprot);
|
|
|
|
if (unlikely(err == -ENOMEM))
|
|
return VM_FAULT_OOM;
|
|
if (unlikely(err < 0 && err != -EBUSY))
|
|
return VM_FAULT_SIGBUS;
|
|
|
|
return VM_FAULT_NOPAGE;
|
|
}
|
|
#endif
|