xref: /kernel/linux/linux-6.6/fs/ntfs/sysctl.c (revision 62306a36)
162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * sysctl.c - Code for sysctl handling in NTFS Linux kernel driver. Part of
462306a36Sopenharmony_ci *	      the Linux-NTFS project. Adapted from the old NTFS driver,
562306a36Sopenharmony_ci *	      Copyright (C) 1997 Martin von Löwis, Régis Duchesne
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright (c) 2002-2005 Anton Altaparmakov
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifdef DEBUG
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include <linux/module.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#ifdef CONFIG_SYSCTL
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#include <linux/proc_fs.h>
1762306a36Sopenharmony_ci#include <linux/sysctl.h>
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#include "sysctl.h"
2062306a36Sopenharmony_ci#include "debug.h"
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci/* Definition of the ntfs sysctl. */
2362306a36Sopenharmony_cistatic struct ctl_table ntfs_sysctls[] = {
2462306a36Sopenharmony_ci	{
2562306a36Sopenharmony_ci		.procname	= "ntfs-debug",
2662306a36Sopenharmony_ci		.data		= &debug_msgs,		/* Data pointer and size. */
2762306a36Sopenharmony_ci		.maxlen		= sizeof(debug_msgs),
2862306a36Sopenharmony_ci		.mode		= 0644,			/* Mode, proc handler. */
2962306a36Sopenharmony_ci		.proc_handler	= proc_dointvec
3062306a36Sopenharmony_ci	},
3162306a36Sopenharmony_ci	{}
3262306a36Sopenharmony_ci};
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci/* Storage for the sysctls header. */
3562306a36Sopenharmony_cistatic struct ctl_table_header *sysctls_root_table;
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci/**
3862306a36Sopenharmony_ci * ntfs_sysctl - add or remove the debug sysctl
3962306a36Sopenharmony_ci * @add:	add (1) or remove (0) the sysctl
4062306a36Sopenharmony_ci *
4162306a36Sopenharmony_ci * Add or remove the debug sysctl. Return 0 on success or -errno on error.
4262306a36Sopenharmony_ci */
4362306a36Sopenharmony_ciint ntfs_sysctl(int add)
4462306a36Sopenharmony_ci{
4562306a36Sopenharmony_ci	if (add) {
4662306a36Sopenharmony_ci		BUG_ON(sysctls_root_table);
4762306a36Sopenharmony_ci		sysctls_root_table = register_sysctl("fs", ntfs_sysctls);
4862306a36Sopenharmony_ci		if (!sysctls_root_table)
4962306a36Sopenharmony_ci			return -ENOMEM;
5062306a36Sopenharmony_ci	} else {
5162306a36Sopenharmony_ci		BUG_ON(!sysctls_root_table);
5262306a36Sopenharmony_ci		unregister_sysctl_table(sysctls_root_table);
5362306a36Sopenharmony_ci		sysctls_root_table = NULL;
5462306a36Sopenharmony_ci	}
5562306a36Sopenharmony_ci	return 0;
5662306a36Sopenharmony_ci}
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci#endif /* CONFIG_SYSCTL */
5962306a36Sopenharmony_ci#endif /* DEBUG */
60