The memfd_create() syscall, enabled by CONFIG_MEMFD_CREATE, is useful on
its own even when not required by CONFIG_TMPFS or CONFIG_HUGETLBFS.
Split it into its own proper bool option that can be enabled by users.
Move that option into mm/ where the code itself also lies.  Also add
"select" statements to CONFIG_TMPFS and CONFIG_HUGETLBFS so they
automatically enable CONFIG_MEMFD_CREATE as before.
Link: https://lkml.kernel.org/r/20230630-config-memfd-v1-1-9acc3ae38b5a@weissschuh.net
Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Tested-by: Zhangjin Wu <falcon@tinylab.org>
Cc: Al Viro <viro@zeniv.linux.org.uk>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
 config TMPFS
        bool "Tmpfs virtual memory file system support (former shm fs)"
        depends on SHMEM
+       select MEMFD_CREATE
        help
          Tmpfs is a file system which keeps all files in virtual memory.
 
        bool "HugeTLB file system support"
        depends on X86 || IA64 || SPARC64 || ARCH_SUPPORTS_HUGETLBFS || BROKEN
        depends on (SYSFS || SYSCTL)
+       select MEMFD_CREATE
        help
          hugetlbfs is a filesystem backing for HugeTLB pages, based on
          ramfs. For architectures that support it, say Y here and read
          enable HVO by default. It can be disabled via hugetlb_free_vmemmap=off
          (boot command line) or hugetlb_optimize_vmemmap (sysctl).
 
-config MEMFD_CREATE
-       def_bool TMPFS || HUGETLBFS
-
 config ARCH_HAS_GIGANTIC_PAGE
        bool
 
 
 config IO_MAPPING
        bool
 
+config MEMFD_CREATE
+       bool "Enable memfd_create() system call" if EXPERT
+
 config SECRETMEM
        default y
        bool "Enable memfd_secret() system call" if EXPERT