1*1e9ea7e0SNamjae Jeon // SPDX-License-Identifier: GPL-2.0-or-later 2*1e9ea7e0SNamjae Jeon /* 3*1e9ea7e0SNamjae Jeon * sysctl.c - Code for sysctl handling in NTFS Linux kernel driver. Part of 4*1e9ea7e0SNamjae Jeon * the Linux-NTFS project. Adapted from the old NTFS driver, 5*1e9ea7e0SNamjae Jeon * Copyright (C) 1997 Martin von Löwis, Régis Duchesne 6*1e9ea7e0SNamjae Jeon * 7*1e9ea7e0SNamjae Jeon * Copyright (c) 2002-2005 Anton Altaparmakov 8*1e9ea7e0SNamjae Jeon */ 9*1e9ea7e0SNamjae Jeon 10*1e9ea7e0SNamjae Jeon #ifdef DEBUG 11*1e9ea7e0SNamjae Jeon 12*1e9ea7e0SNamjae Jeon #include <linux/module.h> 13*1e9ea7e0SNamjae Jeon 14*1e9ea7e0SNamjae Jeon #ifdef CONFIG_SYSCTL 15*1e9ea7e0SNamjae Jeon 16*1e9ea7e0SNamjae Jeon #include <linux/proc_fs.h> 17*1e9ea7e0SNamjae Jeon #include <linux/sysctl.h> 18*1e9ea7e0SNamjae Jeon 19*1e9ea7e0SNamjae Jeon #include "sysctl.h" 20*1e9ea7e0SNamjae Jeon #include "debug.h" 21*1e9ea7e0SNamjae Jeon 22*1e9ea7e0SNamjae Jeon /* Definition of the ntfs sysctl. */ 23*1e9ea7e0SNamjae Jeon static struct ctl_table ntfs_sysctls[] = { 24*1e9ea7e0SNamjae Jeon { 25*1e9ea7e0SNamjae Jeon .procname = "ntfs-debug", 26*1e9ea7e0SNamjae Jeon .data = &debug_msgs, /* Data pointer and size. */ 27*1e9ea7e0SNamjae Jeon .maxlen = sizeof(debug_msgs), 28*1e9ea7e0SNamjae Jeon .mode = 0644, /* Mode, proc handler. */ 29*1e9ea7e0SNamjae Jeon .proc_handler = proc_dointvec 30*1e9ea7e0SNamjae Jeon }, 31*1e9ea7e0SNamjae Jeon }; 32*1e9ea7e0SNamjae Jeon 33*1e9ea7e0SNamjae Jeon /* Storage for the sysctls header. */ 34*1e9ea7e0SNamjae Jeon static struct ctl_table_header *sysctls_root_table; 35*1e9ea7e0SNamjae Jeon 36*1e9ea7e0SNamjae Jeon /** 37*1e9ea7e0SNamjae Jeon * ntfs_sysctl - add or remove the debug sysctl 38*1e9ea7e0SNamjae Jeon * @add: add (1) or remove (0) the sysctl 39*1e9ea7e0SNamjae Jeon * 40*1e9ea7e0SNamjae Jeon * Add or remove the debug sysctl. Return 0 on success or -errno on error. 41*1e9ea7e0SNamjae Jeon */ 42*1e9ea7e0SNamjae Jeon int ntfs_sysctl(int add) 43*1e9ea7e0SNamjae Jeon { 44*1e9ea7e0SNamjae Jeon if (add) { 45*1e9ea7e0SNamjae Jeon BUG_ON(sysctls_root_table); 46*1e9ea7e0SNamjae Jeon sysctls_root_table = register_sysctl("fs", ntfs_sysctls); 47*1e9ea7e0SNamjae Jeon if (!sysctls_root_table) 48*1e9ea7e0SNamjae Jeon return -ENOMEM; 49*1e9ea7e0SNamjae Jeon } else { 50*1e9ea7e0SNamjae Jeon BUG_ON(!sysctls_root_table); 51*1e9ea7e0SNamjae Jeon unregister_sysctl_table(sysctls_root_table); 52*1e9ea7e0SNamjae Jeon sysctls_root_table = NULL; 53*1e9ea7e0SNamjae Jeon } 54*1e9ea7e0SNamjae Jeon return 0; 55*1e9ea7e0SNamjae Jeon } 56*1e9ea7e0SNamjae Jeon 57*1e9ea7e0SNamjae Jeon #endif /* CONFIG_SYSCTL */ 58*1e9ea7e0SNamjae Jeon #endif /* DEBUG */ 59