Linux-Next Archive on lore.kernel.org
 help / color / Atom feed
* linux-next: manual merge of the jc_docs tree with the vfs and net-next trees
@ 2020-05-18  2:30 Stephen Rothwell
  2020-05-18 12:22 ` Jonathan Corbet
  0 siblings, 1 reply; 3+ messages in thread
From: Stephen Rothwell @ 2020-05-18  2:30 UTC (permalink / raw)
  To: Jonathan Corbet, Al Viro, David Miller, Networking
  Cc: Linux Next Mailing List, Linux Kernel Mailing List, Stephen Kitt,
	Christoph Hellwig


[-- Attachment #1: Type: text/plain, Size: 48191 bytes --]

Hi all,

Today's linux-next merge of the jc_docs tree got a conflict in:

  kernel/sysctl.c

between commit:

  f461d2dcd511 ("sysctl: avoid forward declarations")

from the vfs tree and commit:

  2f4c33063ad7 ("docs: sysctl/kernel: document ngroups_max")

from the jc_docs tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc kernel/sysctl.c
index 7858930d843f,2ba9f449d273..000000000000
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@@ -1576,1734 -3358,83 +1576,1734 @@@ int proc_do_large_bitmap(struct ctl_tab
  	return -ENOSYS;
  }
  
 -int proc_douintvec_minmax(struct ctl_table *table, int write,
 -			  void __user *buffer, size_t *lenp, loff_t *ppos)
 -{
 -	return -ENOSYS;
 -}
 +#endif /* CONFIG_PROC_SYSCTL */
 +
 +#if defined(CONFIG_SYSCTL)
 +int proc_do_static_key(struct ctl_table *table, int write,
 +		       void *buffer, size_t *lenp, loff_t *ppos)
 +{
 +	struct static_key *key = (struct static_key *)table->data;
 +	static DEFINE_MUTEX(static_key_mutex);
 +	int val, ret;
 +	struct ctl_table tmp = {
 +		.data   = &val,
 +		.maxlen = sizeof(val),
 +		.mode   = table->mode,
 +		.extra1 = SYSCTL_ZERO,
 +		.extra2 = SYSCTL_ONE,
 +	};
 +
 +	if (write && !capable(CAP_SYS_ADMIN))
 +		return -EPERM;
 +
 +	mutex_lock(&static_key_mutex);
 +	val = static_key_enabled(key);
 +	ret = proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos);
 +	if (write && !ret) {
 +		if (val)
 +			static_key_enable(key);
 +		else
 +			static_key_disable(key);
 +	}
 +	mutex_unlock(&static_key_mutex);
 +	return ret;
 +}
 +
 +static struct ctl_table kern_table[] = {
 +	{
 +		.procname	= "sched_child_runs_first",
 +		.data		= &sysctl_sched_child_runs_first,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#ifdef CONFIG_SCHED_DEBUG
 +	{
 +		.procname	= "sched_min_granularity_ns",
 +		.data		= &sysctl_sched_min_granularity,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= sched_proc_update_handler,
 +		.extra1		= &min_sched_granularity_ns,
 +		.extra2		= &max_sched_granularity_ns,
 +	},
 +	{
 +		.procname	= "sched_latency_ns",
 +		.data		= &sysctl_sched_latency,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= sched_proc_update_handler,
 +		.extra1		= &min_sched_granularity_ns,
 +		.extra2		= &max_sched_granularity_ns,
 +	},
 +	{
 +		.procname	= "sched_wakeup_granularity_ns",
 +		.data		= &sysctl_sched_wakeup_granularity,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= sched_proc_update_handler,
 +		.extra1		= &min_wakeup_granularity_ns,
 +		.extra2		= &max_wakeup_granularity_ns,
 +	},
 +#ifdef CONFIG_SMP
 +	{
 +		.procname	= "sched_tunable_scaling",
 +		.data		= &sysctl_sched_tunable_scaling,
 +		.maxlen		= sizeof(enum sched_tunable_scaling),
 +		.mode		= 0644,
 +		.proc_handler	= sched_proc_update_handler,
 +		.extra1		= &min_sched_tunable_scaling,
 +		.extra2		= &max_sched_tunable_scaling,
 +	},
 +	{
 +		.procname	= "sched_migration_cost_ns",
 +		.data		= &sysctl_sched_migration_cost,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "sched_nr_migrate",
 +		.data		= &sysctl_sched_nr_migrate,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#ifdef CONFIG_SCHEDSTATS
 +	{
 +		.procname	= "sched_schedstats",
 +		.data		= NULL,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= sysctl_schedstats,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif /* CONFIG_SCHEDSTATS */
 +#endif /* CONFIG_SMP */
 +#ifdef CONFIG_NUMA_BALANCING
 +	{
 +		.procname	= "numa_balancing_scan_delay_ms",
 +		.data		= &sysctl_numa_balancing_scan_delay,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "numa_balancing_scan_period_min_ms",
 +		.data		= &sysctl_numa_balancing_scan_period_min,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "numa_balancing_scan_period_max_ms",
 +		.data		= &sysctl_numa_balancing_scan_period_max,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "numa_balancing_scan_size_mb",
 +		.data		= &sysctl_numa_balancing_scan_size,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "numa_balancing",
 +		.data		= NULL, /* filled in by handler */
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= sysctl_numa_balancing,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif /* CONFIG_NUMA_BALANCING */
 +#endif /* CONFIG_SCHED_DEBUG */
 +	{
 +		.procname	= "sched_rt_period_us",
 +		.data		= &sysctl_sched_rt_period,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= sched_rt_handler,
 +	},
 +	{
 +		.procname	= "sched_rt_runtime_us",
 +		.data		= &sysctl_sched_rt_runtime,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= sched_rt_handler,
 +	},
 +	{
 +		.procname	= "sched_rr_timeslice_ms",
 +		.data		= &sysctl_sched_rr_timeslice,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= sched_rr_handler,
 +	},
 +#ifdef CONFIG_UCLAMP_TASK
 +	{
 +		.procname	= "sched_util_clamp_min",
 +		.data		= &sysctl_sched_uclamp_util_min,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= sysctl_sched_uclamp_handler,
 +	},
 +	{
 +		.procname	= "sched_util_clamp_max",
 +		.data		= &sysctl_sched_uclamp_util_max,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= sysctl_sched_uclamp_handler,
 +	},
 +#endif
 +#ifdef CONFIG_SCHED_AUTOGROUP
 +	{
 +		.procname	= "sched_autogroup_enabled",
 +		.data		= &sysctl_sched_autogroup_enabled,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +#ifdef CONFIG_CFS_BANDWIDTH
 +	{
 +		.procname	= "sched_cfs_bandwidth_slice_us",
 +		.data		= &sysctl_sched_cfs_bandwidth_slice,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ONE,
 +	},
 +#endif
 +#if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL)
 +	{
 +		.procname	= "sched_energy_aware",
 +		.data		= &sysctl_sched_energy_aware,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= sched_energy_aware_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +#ifdef CONFIG_PROVE_LOCKING
 +	{
 +		.procname	= "prove_locking",
 +		.data		= &prove_locking,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_LOCK_STAT
 +	{
 +		.procname	= "lock_stat",
 +		.data		= &lock_stat,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +	{
 +		.procname	= "panic",
 +		.data		= &panic_timeout,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#ifdef CONFIG_COREDUMP
 +	{
 +		.procname	= "core_uses_pid",
 +		.data		= &core_uses_pid,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "core_pattern",
 +		.data		= core_pattern,
 +		.maxlen		= CORENAME_MAX_SIZE,
 +		.mode		= 0644,
 +		.proc_handler	= proc_dostring_coredump,
 +	},
 +	{
 +		.procname	= "core_pipe_limit",
 +		.data		= &core_pipe_limit,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_PROC_SYSCTL
 +	{
 +		.procname	= "tainted",
 +		.maxlen 	= sizeof(long),
 +		.mode		= 0644,
 +		.proc_handler	= proc_taint,
 +	},
 +	{
 +		.procname	= "sysctl_writes_strict",
 +		.data		= &sysctl_writes_strict,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= &neg_one,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +#ifdef CONFIG_LATENCYTOP
 +	{
 +		.procname	= "latencytop",
 +		.data		= &latencytop_enabled,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= sysctl_latencytop,
 +	},
 +#endif
 +#ifdef CONFIG_BLK_DEV_INITRD
 +	{
 +		.procname	= "real-root-dev",
 +		.data		= &real_root_dev,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +	{
 +		.procname	= "print-fatal-signals",
 +		.data		= &print_fatal_signals,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#ifdef CONFIG_SPARC
 +	{
 +		.procname	= "reboot-cmd",
 +		.data		= reboot_command,
 +		.maxlen		= 256,
 +		.mode		= 0644,
 +		.proc_handler	= proc_dostring,
 +	},
 +	{
 +		.procname	= "stop-a",
 +		.data		= &stop_a_enabled,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "scons-poweroff",
 +		.data		= &scons_pwroff,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_SPARC64
 +	{
 +		.procname	= "tsb-ratio",
 +		.data		= &sysctl_tsb_ratio,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_PARISC
 +	{
 +		.procname	= "soft-power",
 +		.data		= &pwrsw_enabled,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_SYSCTL_ARCH_UNALIGN_ALLOW
 +	{
 +		.procname	= "unaligned-trap",
 +		.data		= &unaligned_enabled,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +	{
 +		.procname	= "ctrl-alt-del",
 +		.data		= &C_A_D,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#ifdef CONFIG_FUNCTION_TRACER
 +	{
 +		.procname	= "ftrace_enabled",
 +		.data		= &ftrace_enabled,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= ftrace_enable_sysctl,
 +	},
 +#endif
 +#ifdef CONFIG_STACK_TRACER
 +	{
 +		.procname	= "stack_tracer_enabled",
 +		.data		= &stack_tracer_enabled,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= stack_trace_sysctl,
 +	},
 +#endif
 +#ifdef CONFIG_TRACING
 +	{
 +		.procname	= "ftrace_dump_on_oops",
 +		.data		= &ftrace_dump_on_oops,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "traceoff_on_warning",
 +		.data		= &__disable_trace_on_warning,
 +		.maxlen		= sizeof(__disable_trace_on_warning),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "tracepoint_printk",
 +		.data		= &tracepoint_printk,
 +		.maxlen		= sizeof(tracepoint_printk),
 +		.mode		= 0644,
 +		.proc_handler	= tracepoint_printk_sysctl,
 +	},
 +#endif
 +#ifdef CONFIG_KEXEC_CORE
 +	{
 +		.procname	= "kexec_load_disabled",
 +		.data		= &kexec_load_disabled,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		/* only handle a transition from default "0" to "1" */
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ONE,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +#ifdef CONFIG_MODULES
 +	{
 +		.procname	= "modprobe",
 +		.data		= &modprobe_path,
 +		.maxlen		= KMOD_PATH_LEN,
 +		.mode		= 0644,
 +		.proc_handler	= proc_dostring,
 +	},
 +	{
 +		.procname	= "modules_disabled",
 +		.data		= &modules_disabled,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		/* only handle a transition from default "0" to "1" */
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ONE,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +#ifdef CONFIG_UEVENT_HELPER
 +	{
 +		.procname	= "hotplug",
 +		.data		= &uevent_helper,
 +		.maxlen		= UEVENT_HELPER_PATH_LEN,
 +		.mode		= 0644,
 +		.proc_handler	= proc_dostring,
 +	},
 +#endif
 +#ifdef CONFIG_CHR_DEV_SG
 +	{
 +		.procname	= "sg-big-buff",
 +		.data		= &sg_big_buff,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0444,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_BSD_PROCESS_ACCT
 +	{
 +		.procname	= "acct",
 +		.data		= &acct_parm,
 +		.maxlen		= 3*sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_MAGIC_SYSRQ
 +	{
 +		.procname	= "sysrq",
 +		.data		= NULL,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= sysrq_sysctl_handler,
 +	},
 +#endif
 +#ifdef CONFIG_PROC_SYSCTL
 +	{
 +		.procname	= "cad_pid",
 +		.data		= NULL,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0600,
 +		.proc_handler	= proc_do_cad_pid,
 +	},
 +#endif
 +	{
 +		.procname	= "threads-max",
 +		.data		= NULL,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= sysctl_max_threads,
 +	},
 +	{
 +		.procname	= "random",
 +		.mode		= 0555,
 +		.child		= random_table,
 +	},
 +	{
 +		.procname	= "usermodehelper",
 +		.mode		= 0555,
 +		.child		= usermodehelper_table,
 +	},
 +#ifdef CONFIG_FW_LOADER_USER_HELPER
 +	{
 +		.procname	= "firmware_config",
 +		.mode		= 0555,
 +		.child		= firmware_config_table,
 +	},
 +#endif
 +	{
 +		.procname	= "overflowuid",
 +		.data		= &overflowuid,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= &minolduid,
 +		.extra2		= &maxolduid,
 +	},
 +	{
 +		.procname	= "overflowgid",
 +		.data		= &overflowgid,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= &minolduid,
 +		.extra2		= &maxolduid,
 +	},
 +#ifdef CONFIG_S390
 +	{
 +		.procname	= "userprocess_debug",
 +		.data		= &show_unhandled_signals,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +	{
 +		.procname	= "pid_max",
 +		.data		= &pid_max,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= &pid_max_min,
 +		.extra2		= &pid_max_max,
 +	},
 +	{
 +		.procname	= "panic_on_oops",
 +		.data		= &panic_on_oops,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "panic_print",
 +		.data		= &panic_print,
 +		.maxlen		= sizeof(unsigned long),
 +		.mode		= 0644,
 +		.proc_handler	= proc_doulongvec_minmax,
 +	},
 +#if defined CONFIG_PRINTK
 +	{
 +		.procname	= "printk",
 +		.data		= &console_loglevel,
 +		.maxlen		= 4*sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "printk_ratelimit",
 +		.data		= &printk_ratelimit_state.interval,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_jiffies,
 +	},
 +	{
 +		.procname	= "printk_ratelimit_burst",
 +		.data		= &printk_ratelimit_state.burst,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "printk_delay",
 +		.data		= &printk_delay_msec,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &ten_thousand,
 +	},
 +	{
 +		.procname	= "printk_devkmsg",
 +		.data		= devkmsg_log_str,
 +		.maxlen		= DEVKMSG_STR_MAX_SIZE,
 +		.mode		= 0644,
 +		.proc_handler	= devkmsg_sysctl_set_loglvl,
 +	},
 +	{
 +		.procname	= "dmesg_restrict",
 +		.data		= &dmesg_restrict,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax_sysadmin,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "kptr_restrict",
 +		.data		= &kptr_restrict,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax_sysadmin,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &two,
 +	},
 +#endif
 +	{
 +		.procname	= "ngroups_max",
- 		.data		= &ngroups_max,
++		.data		= (void *)&ngroups_max,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0444,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "cap_last_cap",
 +		.data		= (void *)&cap_last_cap,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0444,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#if defined(CONFIG_LOCKUP_DETECTOR)
 +	{
 +		.procname       = "watchdog",
 +		.data		= &watchdog_user_enabled,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler   = proc_watchdog,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "watchdog_thresh",
 +		.data		= &watchdog_thresh,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_watchdog_thresh,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &sixty,
 +	},
 +	{
 +		.procname       = "nmi_watchdog",
 +		.data		= &nmi_watchdog_user_enabled,
 +		.maxlen		= sizeof(int),
 +		.mode		= NMI_WATCHDOG_SYSCTL_PERM,
 +		.proc_handler   = proc_nmi_watchdog,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "watchdog_cpumask",
 +		.data		= &watchdog_cpumask_bits,
 +		.maxlen		= NR_CPUS,
 +		.mode		= 0644,
 +		.proc_handler	= proc_watchdog_cpumask,
 +	},
 +#ifdef CONFIG_SOFTLOCKUP_DETECTOR
 +	{
 +		.procname       = "soft_watchdog",
 +		.data		= &soft_watchdog_user_enabled,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler   = proc_soft_watchdog,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "softlockup_panic",
 +		.data		= &softlockup_panic,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#ifdef CONFIG_SMP
 +	{
 +		.procname	= "softlockup_all_cpu_backtrace",
 +		.data		= &sysctl_softlockup_all_cpu_backtrace,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif /* CONFIG_SMP */
 +#endif
 +#ifdef CONFIG_HARDLOCKUP_DETECTOR
 +	{
 +		.procname	= "hardlockup_panic",
 +		.data		= &hardlockup_panic,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#ifdef CONFIG_SMP
 +	{
 +		.procname	= "hardlockup_all_cpu_backtrace",
 +		.data		= &sysctl_hardlockup_all_cpu_backtrace,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif /* CONFIG_SMP */
 +#endif
 +#endif
 +
 +#if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86)
 +	{
 +		.procname       = "unknown_nmi_panic",
 +		.data           = &unknown_nmi_panic,
 +		.maxlen         = sizeof (int),
 +		.mode           = 0644,
 +		.proc_handler   = proc_dointvec,
 +	},
 +#endif
  
 -int proc_dointvec_jiffies(struct ctl_table *table, int write,
 -		    void __user *buffer, size_t *lenp, loff_t *ppos)
 -{
 -	return -ENOSYS;
 -}
 +#if (defined(CONFIG_X86_32) || defined(CONFIG_PARISC)) && \
 +	defined(CONFIG_DEBUG_STACKOVERFLOW)
 +	{
 +		.procname	= "panic_on_stackoverflow",
 +		.data		= &sysctl_panic_on_stackoverflow,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#if defined(CONFIG_X86)
 +	{
 +		.procname	= "panic_on_unrecovered_nmi",
 +		.data		= &panic_on_unrecovered_nmi,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "panic_on_io_nmi",
 +		.data		= &panic_on_io_nmi,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "bootloader_type",
 +		.data		= &bootloader_type,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0444,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "bootloader_version",
 +		.data		= &bootloader_version,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0444,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "io_delay_type",
 +		.data		= &io_delay_type,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#if defined(CONFIG_MMU)
 +	{
 +		.procname	= "randomize_va_space",
 +		.data		= &randomize_va_space,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#if defined(CONFIG_S390) && defined(CONFIG_SMP)
 +	{
 +		.procname	= "spin_retry",
 +		.data		= &spin_retry,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#if	defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86)
 +	{
 +		.procname	= "acpi_video_flags",
 +		.data		= &acpi_realmode_flags,
 +		.maxlen		= sizeof (unsigned long),
 +		.mode		= 0644,
 +		.proc_handler	= proc_doulongvec_minmax,
 +	},
 +#endif
 +#ifdef CONFIG_SYSCTL_ARCH_UNALIGN_NO_WARN
 +	{
 +		.procname	= "ignore-unaligned-usertrap",
 +		.data		= &no_unaligned_warning,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_IA64
 +	{
 +		.procname	= "unaligned-dump-stack",
 +		.data		= &unaligned_dump_stack,
 +		.maxlen		= sizeof (int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_DETECT_HUNG_TASK
 +	{
 +		.procname	= "hung_task_panic",
 +		.data		= &sysctl_hung_task_panic,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "hung_task_check_count",
 +		.data		= &sysctl_hung_task_check_count,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +	{
 +		.procname	= "hung_task_timeout_secs",
 +		.data		= &sysctl_hung_task_timeout_secs,
 +		.maxlen		= sizeof(unsigned long),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dohung_task_timeout_secs,
 +		.extra2		= &hung_task_timeout_max,
 +	},
 +	{
 +		.procname	= "hung_task_check_interval_secs",
 +		.data		= &sysctl_hung_task_check_interval_secs,
 +		.maxlen		= sizeof(unsigned long),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dohung_task_timeout_secs,
 +		.extra2		= &hung_task_timeout_max,
 +	},
 +	{
 +		.procname	= "hung_task_warnings",
 +		.data		= &sysctl_hung_task_warnings,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= &neg_one,
 +	},
 +#endif
 +#ifdef CONFIG_RT_MUTEXES
 +	{
 +		.procname	= "max_lock_depth",
 +		.data		= &max_lock_depth,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +	{
 +		.procname	= "poweroff_cmd",
 +		.data		= &poweroff_cmd,
 +		.maxlen		= POWEROFF_CMD_PATH_LEN,
 +		.mode		= 0644,
 +		.proc_handler	= proc_dostring,
 +	},
 +#ifdef CONFIG_KEYS
 +	{
 +		.procname	= "keys",
 +		.mode		= 0555,
 +		.child		= key_sysctls,
 +	},
 +#endif
 +#ifdef CONFIG_PERF_EVENTS
 +	/*
 +	 * User-space scripts rely on the existence of this file
 +	 * as a feature check for perf_events being enabled.
 +	 *
 +	 * So it's an ABI, do not remove!
 +	 */
 +	{
 +		.procname	= "perf_event_paranoid",
 +		.data		= &sysctl_perf_event_paranoid,
 +		.maxlen		= sizeof(sysctl_perf_event_paranoid),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "perf_event_mlock_kb",
 +		.data		= &sysctl_perf_event_mlock,
 +		.maxlen		= sizeof(sysctl_perf_event_mlock),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "perf_event_max_sample_rate",
 +		.data		= &sysctl_perf_event_sample_rate,
 +		.maxlen		= sizeof(sysctl_perf_event_sample_rate),
 +		.mode		= 0644,
 +		.proc_handler	= perf_proc_update_handler,
 +		.extra1		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "perf_cpu_time_max_percent",
 +		.data		= &sysctl_perf_cpu_time_max_percent,
 +		.maxlen		= sizeof(sysctl_perf_cpu_time_max_percent),
 +		.mode		= 0644,
 +		.proc_handler	= perf_cpu_time_max_percent_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &one_hundred,
 +	},
 +	{
 +		.procname	= "perf_event_max_stack",
 +		.data		= &sysctl_perf_event_max_stack,
 +		.maxlen		= sizeof(sysctl_perf_event_max_stack),
 +		.mode		= 0644,
 +		.proc_handler	= perf_event_max_stack_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &six_hundred_forty_kb,
 +	},
 +	{
 +		.procname	= "perf_event_max_contexts_per_stack",
 +		.data		= &sysctl_perf_event_max_contexts_per_stack,
 +		.maxlen		= sizeof(sysctl_perf_event_max_contexts_per_stack),
 +		.mode		= 0644,
 +		.proc_handler	= perf_event_max_stack_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &one_thousand,
 +	},
 +#endif
 +	{
 +		.procname	= "panic_on_warn",
 +		.data		= &panic_on_warn,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON)
 +	{
 +		.procname	= "timer_migration",
 +		.data		= &sysctl_timer_migration,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= timer_migration_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +#ifdef CONFIG_BPF_SYSCALL
 +	{
 +		.procname	= "unprivileged_bpf_disabled",
 +		.data		= &sysctl_unprivileged_bpf_disabled,
 +		.maxlen		= sizeof(sysctl_unprivileged_bpf_disabled),
 +		.mode		= 0644,
 +		/* only handle a transition from default "0" to "1" */
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ONE,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "bpf_stats_enabled",
 +		.data		= &bpf_stats_enabled_key.key,
 +		.maxlen		= sizeof(bpf_stats_enabled_key),
 +		.mode		= 0644,
 +		.proc_handler	= proc_do_static_key,
 +	},
 +#endif
 +#if defined(CONFIG_TREE_RCU)
 +	{
 +		.procname	= "panic_on_rcu_stall",
 +		.data		= &sysctl_panic_on_rcu_stall,
 +		.maxlen		= sizeof(sysctl_panic_on_rcu_stall),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +#ifdef CONFIG_STACKLEAK_RUNTIME_DISABLE
 +	{
 +		.procname	= "stack_erasing",
 +		.data		= NULL,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0600,
 +		.proc_handler	= stack_erasing_sysctl,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +	{ }
 +};
  
 -int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write,
 -		    void __user *buffer, size_t *lenp, loff_t *ppos)
 -{
 -	return -ENOSYS;
 -}
 +static struct ctl_table vm_table[] = {
 +	{
 +		.procname	= "overcommit_memory",
 +		.data		= &sysctl_overcommit_memory,
 +		.maxlen		= sizeof(sysctl_overcommit_memory),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &two,
 +	},
 +	{
 +		.procname	= "panic_on_oom",
 +		.data		= &sysctl_panic_on_oom,
 +		.maxlen		= sizeof(sysctl_panic_on_oom),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &two,
 +	},
 +	{
 +		.procname	= "oom_kill_allocating_task",
 +		.data		= &sysctl_oom_kill_allocating_task,
 +		.maxlen		= sizeof(sysctl_oom_kill_allocating_task),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "oom_dump_tasks",
 +		.data		= &sysctl_oom_dump_tasks,
 +		.maxlen		= sizeof(sysctl_oom_dump_tasks),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +	{
 +		.procname	= "overcommit_ratio",
 +		.data		= &sysctl_overcommit_ratio,
 +		.maxlen		= sizeof(sysctl_overcommit_ratio),
 +		.mode		= 0644,
 +		.proc_handler	= overcommit_ratio_handler,
 +	},
 +	{
 +		.procname	= "overcommit_kbytes",
 +		.data		= &sysctl_overcommit_kbytes,
 +		.maxlen		= sizeof(sysctl_overcommit_kbytes),
 +		.mode		= 0644,
 +		.proc_handler	= overcommit_kbytes_handler,
 +	},
 +	{
 +		.procname	= "page-cluster",
 +		.data		= &page_cluster,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +	{
 +		.procname	= "dirty_background_ratio",
 +		.data		= &dirty_background_ratio,
 +		.maxlen		= sizeof(dirty_background_ratio),
 +		.mode		= 0644,
 +		.proc_handler	= dirty_background_ratio_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &one_hundred,
 +	},
 +	{
 +		.procname	= "dirty_background_bytes",
 +		.data		= &dirty_background_bytes,
 +		.maxlen		= sizeof(dirty_background_bytes),
 +		.mode		= 0644,
 +		.proc_handler	= dirty_background_bytes_handler,
 +		.extra1		= &one_ul,
 +	},
 +	{
 +		.procname	= "dirty_ratio",
 +		.data		= &vm_dirty_ratio,
 +		.maxlen		= sizeof(vm_dirty_ratio),
 +		.mode		= 0644,
 +		.proc_handler	= dirty_ratio_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &one_hundred,
 +	},
 +	{
 +		.procname	= "dirty_bytes",
 +		.data		= &vm_dirty_bytes,
 +		.maxlen		= sizeof(vm_dirty_bytes),
 +		.mode		= 0644,
 +		.proc_handler	= dirty_bytes_handler,
 +		.extra1		= &dirty_bytes_min,
 +	},
 +	{
 +		.procname	= "dirty_writeback_centisecs",
 +		.data		= &dirty_writeback_interval,
 +		.maxlen		= sizeof(dirty_writeback_interval),
 +		.mode		= 0644,
 +		.proc_handler	= dirty_writeback_centisecs_handler,
 +	},
 +	{
 +		.procname	= "dirty_expire_centisecs",
 +		.data		= &dirty_expire_interval,
 +		.maxlen		= sizeof(dirty_expire_interval),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +	{
 +		.procname	= "dirtytime_expire_seconds",
 +		.data		= &dirtytime_expire_interval,
 +		.maxlen		= sizeof(dirtytime_expire_interval),
 +		.mode		= 0644,
 +		.proc_handler	= dirtytime_interval_handler,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +	{
 +		.procname	= "swappiness",
 +		.data		= &vm_swappiness,
 +		.maxlen		= sizeof(vm_swappiness),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &one_hundred,
 +	},
 +#ifdef CONFIG_HUGETLB_PAGE
 +	{
 +		.procname	= "nr_hugepages",
 +		.data		= NULL,
 +		.maxlen		= sizeof(unsigned long),
 +		.mode		= 0644,
 +		.proc_handler	= hugetlb_sysctl_handler,
 +	},
 +#ifdef CONFIG_NUMA
 +	{
 +		.procname       = "nr_hugepages_mempolicy",
 +		.data           = NULL,
 +		.maxlen         = sizeof(unsigned long),
 +		.mode           = 0644,
 +		.proc_handler   = &hugetlb_mempolicy_sysctl_handler,
 +	},
 +	{
 +		.procname		= "numa_stat",
 +		.data			= &sysctl_vm_numa_stat,
 +		.maxlen			= sizeof(int),
 +		.mode			= 0644,
 +		.proc_handler	= sysctl_vm_numa_stat_handler,
 +		.extra1			= SYSCTL_ZERO,
 +		.extra2			= SYSCTL_ONE,
 +	},
 +#endif
 +	 {
 +		.procname	= "hugetlb_shm_group",
 +		.data		= &sysctl_hugetlb_shm_group,
 +		.maxlen		= sizeof(gid_t),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	 },
 +	{
 +		.procname	= "nr_overcommit_hugepages",
 +		.data		= NULL,
 +		.maxlen		= sizeof(unsigned long),
 +		.mode		= 0644,
 +		.proc_handler	= hugetlb_overcommit_handler,
 +	},
 +#endif
 +	{
 +		.procname	= "lowmem_reserve_ratio",
 +		.data		= &sysctl_lowmem_reserve_ratio,
 +		.maxlen		= sizeof(sysctl_lowmem_reserve_ratio),
 +		.mode		= 0644,
 +		.proc_handler	= lowmem_reserve_ratio_sysctl_handler,
 +	},
 +	{
 +		.procname	= "drop_caches",
 +		.data		= &sysctl_drop_caches,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0200,
 +		.proc_handler	= drop_caches_sysctl_handler,
 +		.extra1		= SYSCTL_ONE,
 +		.extra2		= &four,
 +	},
 +#ifdef CONFIG_COMPACTION
 +	{
 +		.procname	= "compact_memory",
 +		.data		= &sysctl_compact_memory,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0200,
 +		.proc_handler	= sysctl_compaction_handler,
 +	},
 +	{
 +		.procname	= "extfrag_threshold",
 +		.data		= &sysctl_extfrag_threshold,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= &min_extfrag_threshold,
 +		.extra2		= &max_extfrag_threshold,
 +	},
 +	{
 +		.procname	= "compact_unevictable_allowed",
 +		.data		= &sysctl_compact_unevictable_allowed,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax_warn_RT_change,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
  
 -int proc_dointvec_ms_jiffies(struct ctl_table *table, int write,
 -			     void __user *buffer, size_t *lenp, loff_t *ppos)
 -{
 -	return -ENOSYS;
 -}
 +#endif /* CONFIG_COMPACTION */
 +	{
 +		.procname	= "min_free_kbytes",
 +		.data		= &min_free_kbytes,
 +		.maxlen		= sizeof(min_free_kbytes),
 +		.mode		= 0644,
 +		.proc_handler	= min_free_kbytes_sysctl_handler,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +	{
 +		.procname	= "watermark_boost_factor",
 +		.data		= &watermark_boost_factor,
 +		.maxlen		= sizeof(watermark_boost_factor),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +	{
 +		.procname	= "watermark_scale_factor",
 +		.data		= &watermark_scale_factor,
 +		.maxlen		= sizeof(watermark_scale_factor),
 +		.mode		= 0644,
 +		.proc_handler	= watermark_scale_factor_sysctl_handler,
 +		.extra1		= SYSCTL_ONE,
 +		.extra2		= &one_thousand,
 +	},
 +	{
 +		.procname	= "percpu_pagelist_fraction",
 +		.data		= &percpu_pagelist_fraction,
 +		.maxlen		= sizeof(percpu_pagelist_fraction),
 +		.mode		= 0644,
 +		.proc_handler	= percpu_pagelist_fraction_sysctl_handler,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +#ifdef CONFIG_MMU
 +	{
 +		.procname	= "max_map_count",
 +		.data		= &sysctl_max_map_count,
 +		.maxlen		= sizeof(sysctl_max_map_count),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +#else
 +	{
 +		.procname	= "nr_trim_pages",
 +		.data		= &sysctl_nr_trim_pages,
 +		.maxlen		= sizeof(sysctl_nr_trim_pages),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +#endif
 +	{
 +		.procname	= "laptop_mode",
 +		.data		= &laptop_mode,
 +		.maxlen		= sizeof(laptop_mode),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_jiffies,
 +	},
 +	{
 +		.procname	= "block_dump",
 +		.data		= &block_dump,
 +		.maxlen		= sizeof(block_dump),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +	{
 +		.procname	= "vfs_cache_pressure",
 +		.data		= &sysctl_vfs_cache_pressure,
 +		.maxlen		= sizeof(sysctl_vfs_cache_pressure),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +#if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \
 +    defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT)
 +	{
 +		.procname	= "legacy_va_layout",
 +		.data		= &sysctl_legacy_va_layout,
 +		.maxlen		= sizeof(sysctl_legacy_va_layout),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +#endif
 +#ifdef CONFIG_NUMA
 +	{
 +		.procname	= "zone_reclaim_mode",
 +		.data		= &node_reclaim_mode,
 +		.maxlen		= sizeof(node_reclaim_mode),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +	{
 +		.procname	= "min_unmapped_ratio",
 +		.data		= &sysctl_min_unmapped_ratio,
 +		.maxlen		= sizeof(sysctl_min_unmapped_ratio),
 +		.mode		= 0644,
 +		.proc_handler	= sysctl_min_unmapped_ratio_sysctl_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &one_hundred,
 +	},
 +	{
 +		.procname	= "min_slab_ratio",
 +		.data		= &sysctl_min_slab_ratio,
 +		.maxlen		= sizeof(sysctl_min_slab_ratio),
 +		.mode		= 0644,
 +		.proc_handler	= sysctl_min_slab_ratio_sysctl_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &one_hundred,
 +	},
 +#endif
 +#ifdef CONFIG_SMP
 +	{
 +		.procname	= "stat_interval",
 +		.data		= &sysctl_stat_interval,
 +		.maxlen		= sizeof(sysctl_stat_interval),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_jiffies,
 +	},
 +	{
 +		.procname	= "stat_refresh",
 +		.data		= NULL,
 +		.maxlen		= 0,
 +		.mode		= 0600,
 +		.proc_handler	= vmstat_refresh,
 +	},
 +#endif
 +#ifdef CONFIG_MMU
 +	{
 +		.procname	= "mmap_min_addr",
 +		.data		= &dac_mmap_min_addr,
 +		.maxlen		= sizeof(unsigned long),
 +		.mode		= 0644,
 +		.proc_handler	= mmap_min_addr_handler,
 +	},
 +#endif
 +#ifdef CONFIG_NUMA
 +	{
 +		.procname	= "numa_zonelist_order",
 +		.data		= &numa_zonelist_order,
 +		.maxlen		= NUMA_ZONELIST_ORDER_LEN,
 +		.mode		= 0644,
 +		.proc_handler	= numa_zonelist_order_handler,
 +	},
 +#endif
 +#if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \
 +   (defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL))
 +	{
 +		.procname	= "vdso_enabled",
 +#ifdef CONFIG_X86_32
 +		.data		= &vdso32_enabled,
 +		.maxlen		= sizeof(vdso32_enabled),
 +#else
 +		.data		= &vdso_enabled,
 +		.maxlen		= sizeof(vdso_enabled),
 +#endif
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +		.extra1		= SYSCTL_ZERO,
 +	},
 +#endif
 +#ifdef CONFIG_HIGHMEM
 +	{
 +		.procname	= "highmem_is_dirtyable",
 +		.data		= &vm_highmem_is_dirtyable,
 +		.maxlen		= sizeof(vm_highmem_is_dirtyable),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +#ifdef CONFIG_MEMORY_FAILURE
 +	{
 +		.procname	= "memory_failure_early_kill",
 +		.data		= &sysctl_memory_failure_early_kill,
 +		.maxlen		= sizeof(sysctl_memory_failure_early_kill),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "memory_failure_recovery",
 +		.data		= &sysctl_memory_failure_recovery,
 +		.maxlen		= sizeof(sysctl_memory_failure_recovery),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +	{
 +		.procname	= "user_reserve_kbytes",
 +		.data		= &sysctl_user_reserve_kbytes,
 +		.maxlen		= sizeof(sysctl_user_reserve_kbytes),
 +		.mode		= 0644,
 +		.proc_handler	= proc_doulongvec_minmax,
 +	},
 +	{
 +		.procname	= "admin_reserve_kbytes",
 +		.data		= &sysctl_admin_reserve_kbytes,
 +		.maxlen		= sizeof(sysctl_admin_reserve_kbytes),
 +		.mode		= 0644,
 +		.proc_handler	= proc_doulongvec_minmax,
 +	},
 +#ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS
 +	{
 +		.procname	= "mmap_rnd_bits",
 +		.data		= &mmap_rnd_bits,
 +		.maxlen		= sizeof(mmap_rnd_bits),
 +		.mode		= 0600,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= (void *)&mmap_rnd_bits_min,
 +		.extra2		= (void *)&mmap_rnd_bits_max,
 +	},
 +#endif
 +#ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS
 +	{
 +		.procname	= "mmap_rnd_compat_bits",
 +		.data		= &mmap_rnd_compat_bits,
 +		.maxlen		= sizeof(mmap_rnd_compat_bits),
 +		.mode		= 0600,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= (void *)&mmap_rnd_compat_bits_min,
 +		.extra2		= (void *)&mmap_rnd_compat_bits_max,
 +	},
 +#endif
 +#ifdef CONFIG_USERFAULTFD
 +	{
 +		.procname	= "unprivileged_userfaultfd",
 +		.data		= &sysctl_unprivileged_userfaultfd,
 +		.maxlen		= sizeof(sysctl_unprivileged_userfaultfd),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +	{ }
 +};
  
 -int proc_doulongvec_minmax(struct ctl_table *table, int write,
 -		    void __user *buffer, size_t *lenp, loff_t *ppos)
 -{
 -	return -ENOSYS;
 -}
 +static struct ctl_table fs_table[] = {
 +	{
 +		.procname	= "inode-nr",
 +		.data		= &inodes_stat,
 +		.maxlen		= 2*sizeof(long),
 +		.mode		= 0444,
 +		.proc_handler	= proc_nr_inodes,
 +	},
 +	{
 +		.procname	= "inode-state",
 +		.data		= &inodes_stat,
 +		.maxlen		= 7*sizeof(long),
 +		.mode		= 0444,
 +		.proc_handler	= proc_nr_inodes,
 +	},
 +	{
 +		.procname	= "file-nr",
 +		.data		= &files_stat,
 +		.maxlen		= sizeof(files_stat),
 +		.mode		= 0444,
 +		.proc_handler	= proc_nr_files,
 +	},
 +	{
 +		.procname	= "file-max",
 +		.data		= &files_stat.max_files,
 +		.maxlen		= sizeof(files_stat.max_files),
 +		.mode		= 0644,
 +		.proc_handler	= proc_doulongvec_minmax,
 +		.extra1		= &zero_ul,
 +		.extra2		= &long_max,
 +	},
 +	{
 +		.procname	= "nr_open",
 +		.data		= &sysctl_nr_open,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= &sysctl_nr_open_min,
 +		.extra2		= &sysctl_nr_open_max,
 +	},
 +	{
 +		.procname	= "dentry-state",
 +		.data		= &dentry_stat,
 +		.maxlen		= 6*sizeof(long),
 +		.mode		= 0444,
 +		.proc_handler	= proc_nr_dentry,
 +	},
 +	{
 +		.procname	= "overflowuid",
 +		.data		= &fs_overflowuid,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= &minolduid,
 +		.extra2		= &maxolduid,
 +	},
 +	{
 +		.procname	= "overflowgid",
 +		.data		= &fs_overflowgid,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= &minolduid,
 +		.extra2		= &maxolduid,
 +	},
 +#ifdef CONFIG_FILE_LOCKING
 +	{
 +		.procname	= "leases-enable",
 +		.data		= &leases_enable,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_DNOTIFY
 +	{
 +		.procname	= "dir-notify-enable",
 +		.data		= &dir_notify_enable,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_MMU
 +#ifdef CONFIG_FILE_LOCKING
 +	{
 +		.procname	= "lease-break-time",
 +		.data		= &lease_break_time,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec,
 +	},
 +#endif
 +#ifdef CONFIG_AIO
 +	{
 +		.procname	= "aio-nr",
 +		.data		= &aio_nr,
 +		.maxlen		= sizeof(aio_nr),
 +		.mode		= 0444,
 +		.proc_handler	= proc_doulongvec_minmax,
 +	},
 +	{
 +		.procname	= "aio-max-nr",
 +		.data		= &aio_max_nr,
 +		.maxlen		= sizeof(aio_max_nr),
 +		.mode		= 0644,
 +		.proc_handler	= proc_doulongvec_minmax,
 +	},
 +#endif /* CONFIG_AIO */
 +#ifdef CONFIG_INOTIFY_USER
 +	{
 +		.procname	= "inotify",
 +		.mode		= 0555,
 +		.child		= inotify_table,
 +	},
 +#endif	
 +#ifdef CONFIG_EPOLL
 +	{
 +		.procname	= "epoll",
 +		.mode		= 0555,
 +		.child		= epoll_table,
 +	},
 +#endif
 +#endif
 +	{
 +		.procname	= "protected_symlinks",
 +		.data		= &sysctl_protected_symlinks,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0600,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "protected_hardlinks",
 +		.data		= &sysctl_protected_hardlinks,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0600,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +	{
 +		.procname	= "protected_fifos",
 +		.data		= &sysctl_protected_fifos,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0600,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &two,
 +	},
 +	{
 +		.procname	= "protected_regular",
 +		.data		= &sysctl_protected_regular,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0600,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &two,
 +	},
 +	{
 +		.procname	= "suid_dumpable",
 +		.data		= &suid_dumpable,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax_coredump,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= &two,
 +	},
 +#if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE)
 +	{
 +		.procname	= "binfmt_misc",
 +		.mode		= 0555,
 +		.child		= sysctl_mount_point,
 +	},
 +#endif
 +	{
 +		.procname	= "pipe-max-size",
 +		.data		= &pipe_max_size,
 +		.maxlen		= sizeof(pipe_max_size),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dopipe_max_size,
 +	},
 +	{
 +		.procname	= "pipe-user-pages-hard",
 +		.data		= &pipe_user_pages_hard,
 +		.maxlen		= sizeof(pipe_user_pages_hard),
 +		.mode		= 0644,
 +		.proc_handler	= proc_doulongvec_minmax,
 +	},
 +	{
 +		.procname	= "pipe-user-pages-soft",
 +		.data		= &pipe_user_pages_soft,
 +		.maxlen		= sizeof(pipe_user_pages_soft),
 +		.mode		= 0644,
 +		.proc_handler	= proc_doulongvec_minmax,
 +	},
 +	{
 +		.procname	= "mount-max",
 +		.data		= &sysctl_mount_max,
 +		.maxlen		= sizeof(unsigned int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec_minmax,
 +		.extra1		= SYSCTL_ONE,
 +	},
 +	{ }
 +};
  
 -int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int write,
 -				      void __user *buffer,
 -				      size_t *lenp, loff_t *ppos)
 -{
 -    return -ENOSYS;
 -}
 +static struct ctl_table debug_table[] = {
 +#ifdef CONFIG_SYSCTL_EXCEPTION_TRACE
 +	{
 +		.procname	= "exception-trace",
 +		.data		= &show_unhandled_signals,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_dointvec
 +	},
 +#endif
 +#if defined(CONFIG_OPTPROBES)
 +	{
 +		.procname	= "kprobes-optimization",
 +		.data		= &sysctl_kprobes_optimization,
 +		.maxlen		= sizeof(int),
 +		.mode		= 0644,
 +		.proc_handler	= proc_kprobes_optimization_handler,
 +		.extra1		= SYSCTL_ZERO,
 +		.extra2		= SYSCTL_ONE,
 +	},
 +#endif
 +	{ }
 +};
  
 -int proc_do_large_bitmap(struct ctl_table *table, int write,
 -			 void __user *buffer, size_t *lenp, loff_t *ppos)
 -{
 -	return -ENOSYS;
 -}
 +static struct ctl_table dev_table[] = {
 +	{ }
 +};
  
 -#endif /* CONFIG_PROC_SYSCTL */
 +static struct ctl_table sysctl_base_table[] = {
 +	{
 +		.procname	= "kernel",
 +		.mode		= 0555,
 +		.child		= kern_table,
 +	},
 +	{
 +		.procname	= "vm",
 +		.mode		= 0555,
 +		.child		= vm_table,
 +	},
 +	{
 +		.procname	= "fs",
 +		.mode		= 0555,
 +		.child		= fs_table,
 +	},
 +	{
 +		.procname	= "debug",
 +		.mode		= 0555,
 +		.child		= debug_table,
 +	},
 +	{
 +		.procname	= "dev",
 +		.mode		= 0555,
 +		.child		= dev_table,
 +	},
 +	{ }
 +};
  
 -#if defined(CONFIG_SYSCTL)
 -int proc_do_static_key(struct ctl_table *table, int write,
 -		       void __user *buffer, size_t *lenp,
 -		       loff_t *ppos)
 +int __init sysctl_init(void)
  {
 -	struct static_key *key = (struct static_key *)table->data;
 -	static DEFINE_MUTEX(static_key_mutex);
 -	int val, ret;
 -	struct ctl_table tmp = {
 -		.data   = &val,
 -		.maxlen = sizeof(val),
 -		.mode   = table->mode,
 -		.extra1 = SYSCTL_ZERO,
 -		.extra2 = SYSCTL_ONE,
 -	};
 -
 -	if (write && !capable(CAP_SYS_ADMIN))
 -		return -EPERM;
 +	struct ctl_table_header *hdr;
  
 -	mutex_lock(&static_key_mutex);
 -	val = static_key_enabled(key);
 -	ret = proc_dointvec_minmax(&tmp, write, buffer, lenp, ppos);
 -	if (write && !ret) {
 -		if (val)
 -			static_key_enable(key);
 -		else
 -			static_key_disable(key);
 -	}
 -	mutex_unlock(&static_key_mutex);
 -	return ret;
 +	hdr = register_sysctl_table(sysctl_base_table);
 +	kmemleak_not_leak(hdr);
 +	return 0;
  }
 -#endif
 +#endif /* CONFIG_SYSCTL */
  /*
   * No sense putting this after each symbol definition, twice,
   * exception granted :-)

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: linux-next: manual merge of the jc_docs tree with the vfs and net-next trees
  2020-05-18  2:30 linux-next: manual merge of the jc_docs tree with the vfs and net-next trees Stephen Rothwell
@ 2020-05-18 12:22 ` Jonathan Corbet
  2020-05-18 15:00   ` Stephen Kitt
  0 siblings, 1 reply; 3+ messages in thread
From: Jonathan Corbet @ 2020-05-18 12:22 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Al Viro, David Miller, Networking, Linux Next Mailing List,
	Linux Kernel Mailing List, Stephen Kitt, Christoph Hellwig

On Mon, 18 May 2020 12:30:13 +1000
Stephen Rothwell <sfr@canb.auug.org.au> wrote:

> Today's linux-next merge of the jc_docs tree got a conflict in:
> 
>   kernel/sysctl.c
> 
> between commit:
> 
>   f461d2dcd511 ("sysctl: avoid forward declarations")
> 
> from the vfs tree and commit:
> 
>   2f4c33063ad7 ("docs: sysctl/kernel: document ngroups_max")
> 
> from the jc_docs tree.

Hmm...that's somewhat messy.  I somehow managed to miss the change to
kernel/sysctl.c that doesn't have much to do with documentation.  Stephen
(Kitt): I've reverted that change for now.  Could I ask you to resubmit it
as two different patches?  I'll happily take the actual docs change; the
sysctl change can be sent to the VFS tree on top of the changes there.

In general we really don't want to mix unrelated changes like this.

Thanks,

jon

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: linux-next: manual merge of the jc_docs tree with the vfs and net-next trees
  2020-05-18 12:22 ` Jonathan Corbet
@ 2020-05-18 15:00   ` Stephen Kitt
  0 siblings, 0 replies; 3+ messages in thread
From: Stephen Kitt @ 2020-05-18 15:00 UTC (permalink / raw)
  To: Jonathan Corbet
  Cc: Stephen Rothwell, Al Viro, David Miller, Networking,
	Linux Next Mailing List, Linux Kernel Mailing List,
	Christoph Hellwig

Le 18/05/2020 14:22, Jonathan Corbet a écrit :
> On Mon, 18 May 2020 12:30:13 +1000
> Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> 
>> Today's linux-next merge of the jc_docs tree got a conflict in:
>> 
>>   kernel/sysctl.c
>> 
>> between commit:
>> 
>>   f461d2dcd511 ("sysctl: avoid forward declarations")
>> 
>> from the vfs tree and commit:
>> 
>>   2f4c33063ad7 ("docs: sysctl/kernel: document ngroups_max")
>> 
>> from the jc_docs tree.
> 
> Hmm...that's somewhat messy.  I somehow managed to miss the change to
> kernel/sysctl.c that doesn't have much to do with documentation.  
> Stephen
> (Kitt): I've reverted that change for now.  Could I ask you to resubmit 
> it
> as two different patches?  I'll happily take the actual docs change; 
> the
> sysctl change can be sent to the VFS tree on top of the changes there.

Done, thanks.

> In general we really don't want to mix unrelated changes like this.

Noted, I’ll avoid mixing changes in future.

Regards,

Stephen

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, back to index

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-18  2:30 linux-next: manual merge of the jc_docs tree with the vfs and net-next trees Stephen Rothwell
2020-05-18 12:22 ` Jonathan Corbet
2020-05-18 15:00   ` Stephen Kitt

Linux-Next Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-next/0 linux-next/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-next linux-next/ https://lore.kernel.org/linux-next \
		linux-next@vger.kernel.org
	public-inbox-index linux-next

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-next


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git