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