···6565 * Architectures that use EXECMEM_ROX_CACHE must implement this.6666 */6767void execmem_fill_trapping_insns(void *ptr, size_t size, bool writable);6868+6969+/**7070+ * execmem_make_temp_rw - temporarily remap region with read-write7171+ * permissions7272+ * @ptr: address of the region to remap7373+ * @size: size of the region to remap7474+ *7575+ * Remaps a part of the cached large page in the ROX cache in the range7676+ * [@ptr, @ptr + @size) as writable and not executable. The caller must7777+ * have exclusive ownership of this range and ensure nothing will try to7878+ * execute code in this range.7979+ *8080+ * Return: 0 on success or negative error code on failure.8181+ */8282+int execmem_make_temp_rw(void *ptr, size_t size);8383+8484+/**8585+ * execmem_restore_rox - restore read-only-execute permissions8686+ * @ptr: address of the region to remap8787+ * @size: size of the region to remap8888+ *8989+ * Restores read-only-execute permissions on a range [@ptr, @ptr + @size)9090+ * after it was temporarily remapped as writable. Relies on architecture9191+ * implementation of set_memory_rox() to restore mapping using large pages.9292+ *9393+ * Return: 0 on success or negative error code on failure.9494+ */9595+int execmem_restore_rox(void *ptr, size_t size);9696+#else9797+static inline int execmem_make_temp_rw(void *ptr, size_t size) { return 0; }9898+static inline int execmem_restore_rox(void *ptr, size_t size) { return 0; }6899#endif6910070101/**