15d752600SMike Kravetz /* SPDX-License-Identifier: GPL-2.0 */
25d752600SMike Kravetz #ifndef __LINUX_MEMFD_H
35d752600SMike Kravetz #define __LINUX_MEMFD_H
45d752600SMike Kravetz
55d752600SMike Kravetz #include <linux/file.h>
65d752600SMike Kravetz
75d752600SMike Kravetz #ifdef CONFIG_MEMFD_CREATE
8f7b8f70bSLuca Vizzarro extern long memfd_fcntl(struct file *file, unsigned int cmd, unsigned int arg);
989c1905dSVivek Kasireddy struct folio *memfd_alloc_folio(struct file *memfd, pgoff_t idx);
10*fa00b8efSLorenzo Stoakes /*
11*fa00b8efSLorenzo Stoakes * Check for any existing seals on mmap, return an error if access is denied due
12*fa00b8efSLorenzo Stoakes * to sealing, or 0 otherwise.
13*fa00b8efSLorenzo Stoakes *
14*fa00b8efSLorenzo Stoakes * We also update VMA flags if appropriate by manipulating the VMA flags pointed
15*fa00b8efSLorenzo Stoakes * to by vm_flags_ptr.
16*fa00b8efSLorenzo Stoakes */
17*fa00b8efSLorenzo Stoakes int memfd_check_seals_mmap(struct file *file, unsigned long *vm_flags_ptr);
185d752600SMike Kravetz #else
memfd_fcntl(struct file * f,unsigned int c,unsigned int a)19f7b8f70bSLuca Vizzarro static inline long memfd_fcntl(struct file *f, unsigned int c, unsigned int a)
205d752600SMike Kravetz {
215d752600SMike Kravetz return -EINVAL;
225d752600SMike Kravetz }
memfd_alloc_folio(struct file * memfd,pgoff_t idx)2389c1905dSVivek Kasireddy static inline struct folio *memfd_alloc_folio(struct file *memfd, pgoff_t idx)
2489c1905dSVivek Kasireddy {
2589c1905dSVivek Kasireddy return ERR_PTR(-EINVAL);
2689c1905dSVivek Kasireddy }
memfd_check_seals_mmap(struct file * file,unsigned long * vm_flags_ptr)27*fa00b8efSLorenzo Stoakes static inline int memfd_check_seals_mmap(struct file *file,
28*fa00b8efSLorenzo Stoakes unsigned long *vm_flags_ptr)
298ec396d0SLorenzo Stoakes {
30*fa00b8efSLorenzo Stoakes return 0;
318ec396d0SLorenzo Stoakes }
325d752600SMike Kravetz #endif
335d752600SMike Kravetz
345d752600SMike Kravetz #endif /* __LINUX_MEMFD_H */
35