xref: /openbmc/linux/fs/ntfs/sysctl.c (revision a1d312de7780edc972e7fc3dec913304412da11e)
1*a1d312deSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
21da177e4SLinus Torvalds /*
31da177e4SLinus Torvalds  * sysctl.c - Code for sysctl handling in NTFS Linux kernel driver. Part of
41da177e4SLinus Torvalds  *	      the Linux-NTFS project. Adapted from the old NTFS driver,
596de0e25SJan Engelhardt  *	      Copyright (C) 1997 Martin von Löwis, Régis Duchesne
61da177e4SLinus Torvalds  *
7c002f425SAnton Altaparmakov  * Copyright (c) 2002-2005 Anton Altaparmakov
81da177e4SLinus Torvalds  */
91da177e4SLinus Torvalds 
101da177e4SLinus Torvalds #ifdef DEBUG
111da177e4SLinus Torvalds 
121da177e4SLinus Torvalds #include <linux/module.h>
131da177e4SLinus Torvalds 
141da177e4SLinus Torvalds #ifdef CONFIG_SYSCTL
151da177e4SLinus Torvalds 
161da177e4SLinus Torvalds #include <linux/proc_fs.h>
171da177e4SLinus Torvalds #include <linux/sysctl.h>
181da177e4SLinus Torvalds 
191da177e4SLinus Torvalds #include "sysctl.h"
201da177e4SLinus Torvalds #include "debug.h"
211da177e4SLinus Torvalds 
221da177e4SLinus Torvalds /* Definition of the ntfs sysctl. */
235eccdf39SJoe Perches static struct ctl_table ntfs_sysctls[] = {
244ed075e9SEric W. Biederman 	{
254ed075e9SEric W. Biederman 		.procname	= "ntfs-debug",
264ed075e9SEric W. Biederman 		.data		= &debug_msgs,		/* Data pointer and size. */
274ed075e9SEric W. Biederman 		.maxlen		= sizeof(debug_msgs),
284ed075e9SEric W. Biederman 		.mode		= 0644,			/* Mode, proc handler. */
296d456111SEric W. Biederman 		.proc_handler	= proc_dointvec
304ed075e9SEric W. Biederman 	},
314ed075e9SEric W. Biederman 	{}
321da177e4SLinus Torvalds };
331da177e4SLinus Torvalds 
341da177e4SLinus Torvalds /* Define the parent directory /proc/sys/fs. */
355eccdf39SJoe Perches static struct ctl_table sysctls_root[] = {
364ed075e9SEric W. Biederman 	{
374ed075e9SEric W. Biederman 		.procname	= "fs",
384ed075e9SEric W. Biederman 		.mode		= 0555,
394ed075e9SEric W. Biederman 		.child		= ntfs_sysctls
404ed075e9SEric W. Biederman 	},
414ed075e9SEric W. Biederman 	{}
421da177e4SLinus Torvalds };
431da177e4SLinus Torvalds 
441da177e4SLinus Torvalds /* Storage for the sysctls header. */
45504e0e2fSFabian Frederick static struct ctl_table_header *sysctls_root_table;
461da177e4SLinus Torvalds 
471da177e4SLinus Torvalds /**
481da177e4SLinus Torvalds  * ntfs_sysctl - add or remove the debug sysctl
491da177e4SLinus Torvalds  * @add:	add (1) or remove (0) the sysctl
501da177e4SLinus Torvalds  *
511da177e4SLinus Torvalds  * Add or remove the debug sysctl. Return 0 on success or -errno on error.
521da177e4SLinus Torvalds  */
531da177e4SLinus Torvalds int ntfs_sysctl(int add)
541da177e4SLinus Torvalds {
551da177e4SLinus Torvalds 	if (add) {
561da177e4SLinus Torvalds 		BUG_ON(sysctls_root_table);
570b4d4147SEric W. Biederman 		sysctls_root_table = register_sysctl_table(sysctls_root);
581da177e4SLinus Torvalds 		if (!sysctls_root_table)
591da177e4SLinus Torvalds 			return -ENOMEM;
601da177e4SLinus Torvalds 	} else {
611da177e4SLinus Torvalds 		BUG_ON(!sysctls_root_table);
621da177e4SLinus Torvalds 		unregister_sysctl_table(sysctls_root_table);
631da177e4SLinus Torvalds 		sysctls_root_table = NULL;
641da177e4SLinus Torvalds 	}
651da177e4SLinus Torvalds 	return 0;
661da177e4SLinus Torvalds }
671da177e4SLinus Torvalds 
681da177e4SLinus Torvalds #endif /* CONFIG_SYSCTL */
691da177e4SLinus Torvalds #endif /* DEBUG */
70