// SPDX-License-Identifier: GPL-2.0
/*
 * linux/fs/fuse/fuse_sysctl.c
 *
 * Sysctl interface to fuse parameters
 */
#include <linux/sysctl.h>

#include "sysctl.h"
#include "fuse_i.h"

static struct ctl_table_header *fuse_table_header;

/* Bound by fuse_init_out max_pages, which is a u16 */
static unsigned int sysctl_fuse_max_pages_limit = 65535;

/*
 * fuse_init_out request timeouts are u16.
 * This goes up to ~18 hours, which is plenty for a timeout.
 */
static unsigned int sysctl_fuse_req_timeout_limit = 65535;

static const struct ctl_table fuse_sysctl_table[] = {
	{
		.procname	= "max_pages_limit",
		.data		= &fuse_max_pages_limit,
		.maxlen		= sizeof(fuse_max_pages_limit),
		.mode		= 0644,
		.proc_handler	= proc_douintvec_minmax,
		.extra1		= SYSCTL_ONE,
		.extra2		= &sysctl_fuse_max_pages_limit,
	},
	{
		.procname	= "default_request_timeout",
		.data		= &fuse_default_req_timeout,
		.maxlen		= sizeof(fuse_default_req_timeout),
		.mode		= 0644,
		.proc_handler	= proc_douintvec_minmax,
		.extra1		= SYSCTL_ZERO,
		.extra2		= &sysctl_fuse_req_timeout_limit,
	},
	{
		.procname	= "max_request_timeout",
		.data		= &fuse_max_req_timeout,
		.maxlen		= sizeof(fuse_max_req_timeout),
		.mode		= 0644,
		.proc_handler	= proc_douintvec_minmax,
		.extra1		= SYSCTL_ZERO,
		.extra2		= &sysctl_fuse_req_timeout_limit,
	},
};

int fuse_sysctl_register(void)
{
	fuse_table_header = register_sysctl("fs/fuse", fuse_sysctl_table);
	if (!fuse_table_header)
		return -ENOMEM;
	return 0;
}

void fuse_sysctl_unregister(void)
{
	unregister_sysctl_table(fuse_table_header);
	fuse_table_header = NULL;
}
