Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sysctl: avoid forward declarations

Move the sysctl tables to the end of the file to avoid lots of pointless
forward declarations.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

authored by

Christoph Hellwig and committed by
Al Viro
f461d2dc 2374c09b

+1694 -1731
+1694 -1731
kernel/sysctl.c
··· 176 176 }; 177 177 178 178 static enum sysctl_writes_mode sysctl_writes_strict = SYSCTL_WRITES_STRICT; 179 - 180 - static int proc_do_cad_pid(struct ctl_table *table, int write, 181 - void __user *buffer, size_t *lenp, loff_t *ppos); 182 - static int proc_taint(struct ctl_table *table, int write, 183 - void __user *buffer, size_t *lenp, loff_t *ppos); 184 - #ifdef CONFIG_COMPACTION 185 - static int proc_dointvec_minmax_warn_RT_change(struct ctl_table *table, 186 - int write, void __user *buffer, 187 - size_t *lenp, loff_t *ppos); 188 - #endif 189 - #endif 190 - 191 - #ifdef CONFIG_PRINTK 192 - static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write, 193 - void __user *buffer, size_t *lenp, loff_t *ppos); 194 - #endif 195 - 196 - static int proc_dointvec_minmax_coredump(struct ctl_table *table, int write, 197 - void __user *buffer, size_t *lenp, loff_t *ppos); 198 - #ifdef CONFIG_COREDUMP 199 - static int proc_dostring_coredump(struct ctl_table *table, int write, 200 - void __user *buffer, size_t *lenp, loff_t *ppos); 201 - #endif 202 - static int proc_dopipe_max_size(struct ctl_table *table, int write, 203 - void __user *buffer, size_t *lenp, loff_t *ppos); 204 - 205 - #ifdef CONFIG_MAGIC_SYSRQ 206 - static int sysrq_sysctl_handler(struct ctl_table *table, int write, 207 - void __user *buffer, size_t *lenp, loff_t *ppos); 208 - #endif 209 - 210 - static struct ctl_table kern_table[]; 211 - static struct ctl_table vm_table[]; 212 - static struct ctl_table fs_table[]; 213 - static struct ctl_table debug_table[]; 214 - static struct ctl_table dev_table[]; 179 + #endif /* CONFIG_PROC_SYSCTL */ 215 180 216 181 #if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \ 217 182 defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT) 218 183 int sysctl_legacy_va_layout; 219 184 #endif 220 - 221 - /* The default sysctl tables: */ 222 - 223 - static struct ctl_table sysctl_base_table[] = { 224 - { 225 - .procname = "kernel", 226 - .mode = 0555, 227 - .child = kern_table, 228 - }, 229 - { 230 - .procname = "vm", 231 - .mode = 0555, 232 - .child = vm_table, 233 - }, 234 - { 235 - .procname = "fs", 236 - .mode = 0555, 237 - .child = fs_table, 238 - }, 239 - { 240 - .procname = "debug", 241 - .mode = 0555, 242 - .child = debug_table, 243 - }, 244 - { 245 - .procname = "dev", 246 - .mode = 0555, 247 - .child = dev_table, 248 - }, 249 - { } 250 - }; 251 185 252 186 #ifdef CONFIG_SCHED_DEBUG 253 187 static int min_sched_granularity_ns = 100000; /* 100 usecs */ ··· 198 264 static int min_extfrag_threshold; 199 265 static int max_extfrag_threshold = 1000; 200 266 #endif 201 - 202 - static struct ctl_table kern_table[] = { 203 - { 204 - .procname = "sched_child_runs_first", 205 - .data = &sysctl_sched_child_runs_first, 206 - .maxlen = sizeof(unsigned int), 207 - .mode = 0644, 208 - .proc_handler = proc_dointvec, 209 - }, 210 - #ifdef CONFIG_SCHED_DEBUG 211 - { 212 - .procname = "sched_min_granularity_ns", 213 - .data = &sysctl_sched_min_granularity, 214 - .maxlen = sizeof(unsigned int), 215 - .mode = 0644, 216 - .proc_handler = sched_proc_update_handler, 217 - .extra1 = &min_sched_granularity_ns, 218 - .extra2 = &max_sched_granularity_ns, 219 - }, 220 - { 221 - .procname = "sched_latency_ns", 222 - .data = &sysctl_sched_latency, 223 - .maxlen = sizeof(unsigned int), 224 - .mode = 0644, 225 - .proc_handler = sched_proc_update_handler, 226 - .extra1 = &min_sched_granularity_ns, 227 - .extra2 = &max_sched_granularity_ns, 228 - }, 229 - { 230 - .procname = "sched_wakeup_granularity_ns", 231 - .data = &sysctl_sched_wakeup_granularity, 232 - .maxlen = sizeof(unsigned int), 233 - .mode = 0644, 234 - .proc_handler = sched_proc_update_handler, 235 - .extra1 = &min_wakeup_granularity_ns, 236 - .extra2 = &max_wakeup_granularity_ns, 237 - }, 238 - #ifdef CONFIG_SMP 239 - { 240 - .procname = "sched_tunable_scaling", 241 - .data = &sysctl_sched_tunable_scaling, 242 - .maxlen = sizeof(enum sched_tunable_scaling), 243 - .mode = 0644, 244 - .proc_handler = sched_proc_update_handler, 245 - .extra1 = &min_sched_tunable_scaling, 246 - .extra2 = &max_sched_tunable_scaling, 247 - }, 248 - { 249 - .procname = "sched_migration_cost_ns", 250 - .data = &sysctl_sched_migration_cost, 251 - .maxlen = sizeof(unsigned int), 252 - .mode = 0644, 253 - .proc_handler = proc_dointvec, 254 - }, 255 - { 256 - .procname = "sched_nr_migrate", 257 - .data = &sysctl_sched_nr_migrate, 258 - .maxlen = sizeof(unsigned int), 259 - .mode = 0644, 260 - .proc_handler = proc_dointvec, 261 - }, 262 - #ifdef CONFIG_SCHEDSTATS 263 - { 264 - .procname = "sched_schedstats", 265 - .data = NULL, 266 - .maxlen = sizeof(unsigned int), 267 - .mode = 0644, 268 - .proc_handler = sysctl_schedstats, 269 - .extra1 = SYSCTL_ZERO, 270 - .extra2 = SYSCTL_ONE, 271 - }, 272 - #endif /* CONFIG_SCHEDSTATS */ 273 - #endif /* CONFIG_SMP */ 274 - #ifdef CONFIG_NUMA_BALANCING 275 - { 276 - .procname = "numa_balancing_scan_delay_ms", 277 - .data = &sysctl_numa_balancing_scan_delay, 278 - .maxlen = sizeof(unsigned int), 279 - .mode = 0644, 280 - .proc_handler = proc_dointvec, 281 - }, 282 - { 283 - .procname = "numa_balancing_scan_period_min_ms", 284 - .data = &sysctl_numa_balancing_scan_period_min, 285 - .maxlen = sizeof(unsigned int), 286 - .mode = 0644, 287 - .proc_handler = proc_dointvec, 288 - }, 289 - { 290 - .procname = "numa_balancing_scan_period_max_ms", 291 - .data = &sysctl_numa_balancing_scan_period_max, 292 - .maxlen = sizeof(unsigned int), 293 - .mode = 0644, 294 - .proc_handler = proc_dointvec, 295 - }, 296 - { 297 - .procname = "numa_balancing_scan_size_mb", 298 - .data = &sysctl_numa_balancing_scan_size, 299 - .maxlen = sizeof(unsigned int), 300 - .mode = 0644, 301 - .proc_handler = proc_dointvec_minmax, 302 - .extra1 = SYSCTL_ONE, 303 - }, 304 - { 305 - .procname = "numa_balancing", 306 - .data = NULL, /* filled in by handler */ 307 - .maxlen = sizeof(unsigned int), 308 - .mode = 0644, 309 - .proc_handler = sysctl_numa_balancing, 310 - .extra1 = SYSCTL_ZERO, 311 - .extra2 = SYSCTL_ONE, 312 - }, 313 - #endif /* CONFIG_NUMA_BALANCING */ 314 - #endif /* CONFIG_SCHED_DEBUG */ 315 - { 316 - .procname = "sched_rt_period_us", 317 - .data = &sysctl_sched_rt_period, 318 - .maxlen = sizeof(unsigned int), 319 - .mode = 0644, 320 - .proc_handler = sched_rt_handler, 321 - }, 322 - { 323 - .procname = "sched_rt_runtime_us", 324 - .data = &sysctl_sched_rt_runtime, 325 - .maxlen = sizeof(int), 326 - .mode = 0644, 327 - .proc_handler = sched_rt_handler, 328 - }, 329 - { 330 - .procname = "sched_rr_timeslice_ms", 331 - .data = &sysctl_sched_rr_timeslice, 332 - .maxlen = sizeof(int), 333 - .mode = 0644, 334 - .proc_handler = sched_rr_handler, 335 - }, 336 - #ifdef CONFIG_UCLAMP_TASK 337 - { 338 - .procname = "sched_util_clamp_min", 339 - .data = &sysctl_sched_uclamp_util_min, 340 - .maxlen = sizeof(unsigned int), 341 - .mode = 0644, 342 - .proc_handler = sysctl_sched_uclamp_handler, 343 - }, 344 - { 345 - .procname = "sched_util_clamp_max", 346 - .data = &sysctl_sched_uclamp_util_max, 347 - .maxlen = sizeof(unsigned int), 348 - .mode = 0644, 349 - .proc_handler = sysctl_sched_uclamp_handler, 350 - }, 351 - #endif 352 - #ifdef CONFIG_SCHED_AUTOGROUP 353 - { 354 - .procname = "sched_autogroup_enabled", 355 - .data = &sysctl_sched_autogroup_enabled, 356 - .maxlen = sizeof(unsigned int), 357 - .mode = 0644, 358 - .proc_handler = proc_dointvec_minmax, 359 - .extra1 = SYSCTL_ZERO, 360 - .extra2 = SYSCTL_ONE, 361 - }, 362 - #endif 363 - #ifdef CONFIG_CFS_BANDWIDTH 364 - { 365 - .procname = "sched_cfs_bandwidth_slice_us", 366 - .data = &sysctl_sched_cfs_bandwidth_slice, 367 - .maxlen = sizeof(unsigned int), 368 - .mode = 0644, 369 - .proc_handler = proc_dointvec_minmax, 370 - .extra1 = SYSCTL_ONE, 371 - }, 372 - #endif 373 - #if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) 374 - { 375 - .procname = "sched_energy_aware", 376 - .data = &sysctl_sched_energy_aware, 377 - .maxlen = sizeof(unsigned int), 378 - .mode = 0644, 379 - .proc_handler = sched_energy_aware_handler, 380 - .extra1 = SYSCTL_ZERO, 381 - .extra2 = SYSCTL_ONE, 382 - }, 383 - #endif 384 - #ifdef CONFIG_PROVE_LOCKING 385 - { 386 - .procname = "prove_locking", 387 - .data = &prove_locking, 388 - .maxlen = sizeof(int), 389 - .mode = 0644, 390 - .proc_handler = proc_dointvec, 391 - }, 392 - #endif 393 - #ifdef CONFIG_LOCK_STAT 394 - { 395 - .procname = "lock_stat", 396 - .data = &lock_stat, 397 - .maxlen = sizeof(int), 398 - .mode = 0644, 399 - .proc_handler = proc_dointvec, 400 - }, 401 - #endif 402 - { 403 - .procname = "panic", 404 - .data = &panic_timeout, 405 - .maxlen = sizeof(int), 406 - .mode = 0644, 407 - .proc_handler = proc_dointvec, 408 - }, 409 - #ifdef CONFIG_COREDUMP 410 - { 411 - .procname = "core_uses_pid", 412 - .data = &core_uses_pid, 413 - .maxlen = sizeof(int), 414 - .mode = 0644, 415 - .proc_handler = proc_dointvec, 416 - }, 417 - { 418 - .procname = "core_pattern", 419 - .data = core_pattern, 420 - .maxlen = CORENAME_MAX_SIZE, 421 - .mode = 0644, 422 - .proc_handler = proc_dostring_coredump, 423 - }, 424 - { 425 - .procname = "core_pipe_limit", 426 - .data = &core_pipe_limit, 427 - .maxlen = sizeof(unsigned int), 428 - .mode = 0644, 429 - .proc_handler = proc_dointvec, 430 - }, 431 - #endif 432 - #ifdef CONFIG_PROC_SYSCTL 433 - { 434 - .procname = "tainted", 435 - .maxlen = sizeof(long), 436 - .mode = 0644, 437 - .proc_handler = proc_taint, 438 - }, 439 - { 440 - .procname = "sysctl_writes_strict", 441 - .data = &sysctl_writes_strict, 442 - .maxlen = sizeof(int), 443 - .mode = 0644, 444 - .proc_handler = proc_dointvec_minmax, 445 - .extra1 = &neg_one, 446 - .extra2 = SYSCTL_ONE, 447 - }, 448 - #endif 449 - #ifdef CONFIG_LATENCYTOP 450 - { 451 - .procname = "latencytop", 452 - .data = &latencytop_enabled, 453 - .maxlen = sizeof(int), 454 - .mode = 0644, 455 - .proc_handler = sysctl_latencytop, 456 - }, 457 - #endif 458 - #ifdef CONFIG_BLK_DEV_INITRD 459 - { 460 - .procname = "real-root-dev", 461 - .data = &real_root_dev, 462 - .maxlen = sizeof(int), 463 - .mode = 0644, 464 - .proc_handler = proc_dointvec, 465 - }, 466 - #endif 467 - { 468 - .procname = "print-fatal-signals", 469 - .data = &print_fatal_signals, 470 - .maxlen = sizeof(int), 471 - .mode = 0644, 472 - .proc_handler = proc_dointvec, 473 - }, 474 - #ifdef CONFIG_SPARC 475 - { 476 - .procname = "reboot-cmd", 477 - .data = reboot_command, 478 - .maxlen = 256, 479 - .mode = 0644, 480 - .proc_handler = proc_dostring, 481 - }, 482 - { 483 - .procname = "stop-a", 484 - .data = &stop_a_enabled, 485 - .maxlen = sizeof (int), 486 - .mode = 0644, 487 - .proc_handler = proc_dointvec, 488 - }, 489 - { 490 - .procname = "scons-poweroff", 491 - .data = &scons_pwroff, 492 - .maxlen = sizeof (int), 493 - .mode = 0644, 494 - .proc_handler = proc_dointvec, 495 - }, 496 - #endif 497 - #ifdef CONFIG_SPARC64 498 - { 499 - .procname = "tsb-ratio", 500 - .data = &sysctl_tsb_ratio, 501 - .maxlen = sizeof (int), 502 - .mode = 0644, 503 - .proc_handler = proc_dointvec, 504 - }, 505 - #endif 506 - #ifdef CONFIG_PARISC 507 - { 508 - .procname = "soft-power", 509 - .data = &pwrsw_enabled, 510 - .maxlen = sizeof (int), 511 - .mode = 0644, 512 - .proc_handler = proc_dointvec, 513 - }, 514 - #endif 515 - #ifdef CONFIG_SYSCTL_ARCH_UNALIGN_ALLOW 516 - { 517 - .procname = "unaligned-trap", 518 - .data = &unaligned_enabled, 519 - .maxlen = sizeof (int), 520 - .mode = 0644, 521 - .proc_handler = proc_dointvec, 522 - }, 523 - #endif 524 - { 525 - .procname = "ctrl-alt-del", 526 - .data = &C_A_D, 527 - .maxlen = sizeof(int), 528 - .mode = 0644, 529 - .proc_handler = proc_dointvec, 530 - }, 531 - #ifdef CONFIG_FUNCTION_TRACER 532 - { 533 - .procname = "ftrace_enabled", 534 - .data = &ftrace_enabled, 535 - .maxlen = sizeof(int), 536 - .mode = 0644, 537 - .proc_handler = ftrace_enable_sysctl, 538 - }, 539 - #endif 540 - #ifdef CONFIG_STACK_TRACER 541 - { 542 - .procname = "stack_tracer_enabled", 543 - .data = &stack_tracer_enabled, 544 - .maxlen = sizeof(int), 545 - .mode = 0644, 546 - .proc_handler = stack_trace_sysctl, 547 - }, 548 - #endif 549 - #ifdef CONFIG_TRACING 550 - { 551 - .procname = "ftrace_dump_on_oops", 552 - .data = &ftrace_dump_on_oops, 553 - .maxlen = sizeof(int), 554 - .mode = 0644, 555 - .proc_handler = proc_dointvec, 556 - }, 557 - { 558 - .procname = "traceoff_on_warning", 559 - .data = &__disable_trace_on_warning, 560 - .maxlen = sizeof(__disable_trace_on_warning), 561 - .mode = 0644, 562 - .proc_handler = proc_dointvec, 563 - }, 564 - { 565 - .procname = "tracepoint_printk", 566 - .data = &tracepoint_printk, 567 - .maxlen = sizeof(tracepoint_printk), 568 - .mode = 0644, 569 - .proc_handler = tracepoint_printk_sysctl, 570 - }, 571 - #endif 572 - #ifdef CONFIG_KEXEC_CORE 573 - { 574 - .procname = "kexec_load_disabled", 575 - .data = &kexec_load_disabled, 576 - .maxlen = sizeof(int), 577 - .mode = 0644, 578 - /* only handle a transition from default "0" to "1" */ 579 - .proc_handler = proc_dointvec_minmax, 580 - .extra1 = SYSCTL_ONE, 581 - .extra2 = SYSCTL_ONE, 582 - }, 583 - #endif 584 - #ifdef CONFIG_MODULES 585 - { 586 - .procname = "modprobe", 587 - .data = &modprobe_path, 588 - .maxlen = KMOD_PATH_LEN, 589 - .mode = 0644, 590 - .proc_handler = proc_dostring, 591 - }, 592 - { 593 - .procname = "modules_disabled", 594 - .data = &modules_disabled, 595 - .maxlen = sizeof(int), 596 - .mode = 0644, 597 - /* only handle a transition from default "0" to "1" */ 598 - .proc_handler = proc_dointvec_minmax, 599 - .extra1 = SYSCTL_ONE, 600 - .extra2 = SYSCTL_ONE, 601 - }, 602 - #endif 603 - #ifdef CONFIG_UEVENT_HELPER 604 - { 605 - .procname = "hotplug", 606 - .data = &uevent_helper, 607 - .maxlen = UEVENT_HELPER_PATH_LEN, 608 - .mode = 0644, 609 - .proc_handler = proc_dostring, 610 - }, 611 - #endif 612 - #ifdef CONFIG_CHR_DEV_SG 613 - { 614 - .procname = "sg-big-buff", 615 - .data = &sg_big_buff, 616 - .maxlen = sizeof (int), 617 - .mode = 0444, 618 - .proc_handler = proc_dointvec, 619 - }, 620 - #endif 621 - #ifdef CONFIG_BSD_PROCESS_ACCT 622 - { 623 - .procname = "acct", 624 - .data = &acct_parm, 625 - .maxlen = 3*sizeof(int), 626 - .mode = 0644, 627 - .proc_handler = proc_dointvec, 628 - }, 629 - #endif 630 - #ifdef CONFIG_MAGIC_SYSRQ 631 - { 632 - .procname = "sysrq", 633 - .data = NULL, 634 - .maxlen = sizeof (int), 635 - .mode = 0644, 636 - .proc_handler = sysrq_sysctl_handler, 637 - }, 638 - #endif 639 - #ifdef CONFIG_PROC_SYSCTL 640 - { 641 - .procname = "cad_pid", 642 - .data = NULL, 643 - .maxlen = sizeof (int), 644 - .mode = 0600, 645 - .proc_handler = proc_do_cad_pid, 646 - }, 647 - #endif 648 - { 649 - .procname = "threads-max", 650 - .data = NULL, 651 - .maxlen = sizeof(int), 652 - .mode = 0644, 653 - .proc_handler = sysctl_max_threads, 654 - }, 655 - { 656 - .procname = "random", 657 - .mode = 0555, 658 - .child = random_table, 659 - }, 660 - { 661 - .procname = "usermodehelper", 662 - .mode = 0555, 663 - .child = usermodehelper_table, 664 - }, 665 - #ifdef CONFIG_FW_LOADER_USER_HELPER 666 - { 667 - .procname = "firmware_config", 668 - .mode = 0555, 669 - .child = firmware_config_table, 670 - }, 671 - #endif 672 - { 673 - .procname = "overflowuid", 674 - .data = &overflowuid, 675 - .maxlen = sizeof(int), 676 - .mode = 0644, 677 - .proc_handler = proc_dointvec_minmax, 678 - .extra1 = &minolduid, 679 - .extra2 = &maxolduid, 680 - }, 681 - { 682 - .procname = "overflowgid", 683 - .data = &overflowgid, 684 - .maxlen = sizeof(int), 685 - .mode = 0644, 686 - .proc_handler = proc_dointvec_minmax, 687 - .extra1 = &minolduid, 688 - .extra2 = &maxolduid, 689 - }, 690 - #ifdef CONFIG_S390 691 - { 692 - .procname = "userprocess_debug", 693 - .data = &show_unhandled_signals, 694 - .maxlen = sizeof(int), 695 - .mode = 0644, 696 - .proc_handler = proc_dointvec, 697 - }, 698 - #endif 699 - { 700 - .procname = "pid_max", 701 - .data = &pid_max, 702 - .maxlen = sizeof (int), 703 - .mode = 0644, 704 - .proc_handler = proc_dointvec_minmax, 705 - .extra1 = &pid_max_min, 706 - .extra2 = &pid_max_max, 707 - }, 708 - { 709 - .procname = "panic_on_oops", 710 - .data = &panic_on_oops, 711 - .maxlen = sizeof(int), 712 - .mode = 0644, 713 - .proc_handler = proc_dointvec, 714 - }, 715 - { 716 - .procname = "panic_print", 717 - .data = &panic_print, 718 - .maxlen = sizeof(unsigned long), 719 - .mode = 0644, 720 - .proc_handler = proc_doulongvec_minmax, 721 - }, 722 - #if defined CONFIG_PRINTK 723 - { 724 - .procname = "printk", 725 - .data = &console_loglevel, 726 - .maxlen = 4*sizeof(int), 727 - .mode = 0644, 728 - .proc_handler = proc_dointvec, 729 - }, 730 - { 731 - .procname = "printk_ratelimit", 732 - .data = &printk_ratelimit_state.interval, 733 - .maxlen = sizeof(int), 734 - .mode = 0644, 735 - .proc_handler = proc_dointvec_jiffies, 736 - }, 737 - { 738 - .procname = "printk_ratelimit_burst", 739 - .data = &printk_ratelimit_state.burst, 740 - .maxlen = sizeof(int), 741 - .mode = 0644, 742 - .proc_handler = proc_dointvec, 743 - }, 744 - { 745 - .procname = "printk_delay", 746 - .data = &printk_delay_msec, 747 - .maxlen = sizeof(int), 748 - .mode = 0644, 749 - .proc_handler = proc_dointvec_minmax, 750 - .extra1 = SYSCTL_ZERO, 751 - .extra2 = &ten_thousand, 752 - }, 753 - { 754 - .procname = "printk_devkmsg", 755 - .data = devkmsg_log_str, 756 - .maxlen = DEVKMSG_STR_MAX_SIZE, 757 - .mode = 0644, 758 - .proc_handler = devkmsg_sysctl_set_loglvl, 759 - }, 760 - { 761 - .procname = "dmesg_restrict", 762 - .data = &dmesg_restrict, 763 - .maxlen = sizeof(int), 764 - .mode = 0644, 765 - .proc_handler = proc_dointvec_minmax_sysadmin, 766 - .extra1 = SYSCTL_ZERO, 767 - .extra2 = SYSCTL_ONE, 768 - }, 769 - { 770 - .procname = "kptr_restrict", 771 - .data = &kptr_restrict, 772 - .maxlen = sizeof(int), 773 - .mode = 0644, 774 - .proc_handler = proc_dointvec_minmax_sysadmin, 775 - .extra1 = SYSCTL_ZERO, 776 - .extra2 = &two, 777 - }, 778 - #endif 779 - { 780 - .procname = "ngroups_max", 781 - .data = &ngroups_max, 782 - .maxlen = sizeof (int), 783 - .mode = 0444, 784 - .proc_handler = proc_dointvec, 785 - }, 786 - { 787 - .procname = "cap_last_cap", 788 - .data = (void *)&cap_last_cap, 789 - .maxlen = sizeof(int), 790 - .mode = 0444, 791 - .proc_handler = proc_dointvec, 792 - }, 793 - #if defined(CONFIG_LOCKUP_DETECTOR) 794 - { 795 - .procname = "watchdog", 796 - .data = &watchdog_user_enabled, 797 - .maxlen = sizeof(int), 798 - .mode = 0644, 799 - .proc_handler = proc_watchdog, 800 - .extra1 = SYSCTL_ZERO, 801 - .extra2 = SYSCTL_ONE, 802 - }, 803 - { 804 - .procname = "watchdog_thresh", 805 - .data = &watchdog_thresh, 806 - .maxlen = sizeof(int), 807 - .mode = 0644, 808 - .proc_handler = proc_watchdog_thresh, 809 - .extra1 = SYSCTL_ZERO, 810 - .extra2 = &sixty, 811 - }, 812 - { 813 - .procname = "nmi_watchdog", 814 - .data = &nmi_watchdog_user_enabled, 815 - .maxlen = sizeof(int), 816 - .mode = NMI_WATCHDOG_SYSCTL_PERM, 817 - .proc_handler = proc_nmi_watchdog, 818 - .extra1 = SYSCTL_ZERO, 819 - .extra2 = SYSCTL_ONE, 820 - }, 821 - { 822 - .procname = "watchdog_cpumask", 823 - .data = &watchdog_cpumask_bits, 824 - .maxlen = NR_CPUS, 825 - .mode = 0644, 826 - .proc_handler = proc_watchdog_cpumask, 827 - }, 828 - #ifdef CONFIG_SOFTLOCKUP_DETECTOR 829 - { 830 - .procname = "soft_watchdog", 831 - .data = &soft_watchdog_user_enabled, 832 - .maxlen = sizeof(int), 833 - .mode = 0644, 834 - .proc_handler = proc_soft_watchdog, 835 - .extra1 = SYSCTL_ZERO, 836 - .extra2 = SYSCTL_ONE, 837 - }, 838 - { 839 - .procname = "softlockup_panic", 840 - .data = &softlockup_panic, 841 - .maxlen = sizeof(int), 842 - .mode = 0644, 843 - .proc_handler = proc_dointvec_minmax, 844 - .extra1 = SYSCTL_ZERO, 845 - .extra2 = SYSCTL_ONE, 846 - }, 847 - #ifdef CONFIG_SMP 848 - { 849 - .procname = "softlockup_all_cpu_backtrace", 850 - .data = &sysctl_softlockup_all_cpu_backtrace, 851 - .maxlen = sizeof(int), 852 - .mode = 0644, 853 - .proc_handler = proc_dointvec_minmax, 854 - .extra1 = SYSCTL_ZERO, 855 - .extra2 = SYSCTL_ONE, 856 - }, 857 - #endif /* CONFIG_SMP */ 858 - #endif 859 - #ifdef CONFIG_HARDLOCKUP_DETECTOR 860 - { 861 - .procname = "hardlockup_panic", 862 - .data = &hardlockup_panic, 863 - .maxlen = sizeof(int), 864 - .mode = 0644, 865 - .proc_handler = proc_dointvec_minmax, 866 - .extra1 = SYSCTL_ZERO, 867 - .extra2 = SYSCTL_ONE, 868 - }, 869 - #ifdef CONFIG_SMP 870 - { 871 - .procname = "hardlockup_all_cpu_backtrace", 872 - .data = &sysctl_hardlockup_all_cpu_backtrace, 873 - .maxlen = sizeof(int), 874 - .mode = 0644, 875 - .proc_handler = proc_dointvec_minmax, 876 - .extra1 = SYSCTL_ZERO, 877 - .extra2 = SYSCTL_ONE, 878 - }, 879 - #endif /* CONFIG_SMP */ 880 - #endif 881 - #endif 882 - 883 - #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86) 884 - { 885 - .procname = "unknown_nmi_panic", 886 - .data = &unknown_nmi_panic, 887 - .maxlen = sizeof (int), 888 - .mode = 0644, 889 - .proc_handler = proc_dointvec, 890 - }, 891 - #endif 892 - #if defined(CONFIG_X86) 893 - { 894 - .procname = "panic_on_unrecovered_nmi", 895 - .data = &panic_on_unrecovered_nmi, 896 - .maxlen = sizeof(int), 897 - .mode = 0644, 898 - .proc_handler = proc_dointvec, 899 - }, 900 - { 901 - .procname = "panic_on_io_nmi", 902 - .data = &panic_on_io_nmi, 903 - .maxlen = sizeof(int), 904 - .mode = 0644, 905 - .proc_handler = proc_dointvec, 906 - }, 907 - #ifdef CONFIG_DEBUG_STACKOVERFLOW 908 - { 909 - .procname = "panic_on_stackoverflow", 910 - .data = &sysctl_panic_on_stackoverflow, 911 - .maxlen = sizeof(int), 912 - .mode = 0644, 913 - .proc_handler = proc_dointvec, 914 - }, 915 - #endif 916 - { 917 - .procname = "bootloader_type", 918 - .data = &bootloader_type, 919 - .maxlen = sizeof (int), 920 - .mode = 0444, 921 - .proc_handler = proc_dointvec, 922 - }, 923 - { 924 - .procname = "bootloader_version", 925 - .data = &bootloader_version, 926 - .maxlen = sizeof (int), 927 - .mode = 0444, 928 - .proc_handler = proc_dointvec, 929 - }, 930 - { 931 - .procname = "io_delay_type", 932 - .data = &io_delay_type, 933 - .maxlen = sizeof(int), 934 - .mode = 0644, 935 - .proc_handler = proc_dointvec, 936 - }, 937 - #endif 938 - #if defined(CONFIG_MMU) 939 - { 940 - .procname = "randomize_va_space", 941 - .data = &randomize_va_space, 942 - .maxlen = sizeof(int), 943 - .mode = 0644, 944 - .proc_handler = proc_dointvec, 945 - }, 946 - #endif 947 - #if defined(CONFIG_S390) && defined(CONFIG_SMP) 948 - { 949 - .procname = "spin_retry", 950 - .data = &spin_retry, 951 - .maxlen = sizeof (int), 952 - .mode = 0644, 953 - .proc_handler = proc_dointvec, 954 - }, 955 - #endif 956 - #if defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86) 957 - { 958 - .procname = "acpi_video_flags", 959 - .data = &acpi_realmode_flags, 960 - .maxlen = sizeof (unsigned long), 961 - .mode = 0644, 962 - .proc_handler = proc_doulongvec_minmax, 963 - }, 964 - #endif 965 - #ifdef CONFIG_SYSCTL_ARCH_UNALIGN_NO_WARN 966 - { 967 - .procname = "ignore-unaligned-usertrap", 968 - .data = &no_unaligned_warning, 969 - .maxlen = sizeof (int), 970 - .mode = 0644, 971 - .proc_handler = proc_dointvec, 972 - }, 973 - #endif 974 - #ifdef CONFIG_IA64 975 - { 976 - .procname = "unaligned-dump-stack", 977 - .data = &unaligned_dump_stack, 978 - .maxlen = sizeof (int), 979 - .mode = 0644, 980 - .proc_handler = proc_dointvec, 981 - }, 982 - #endif 983 - #ifdef CONFIG_DETECT_HUNG_TASK 984 - { 985 - .procname = "hung_task_panic", 986 - .data = &sysctl_hung_task_panic, 987 - .maxlen = sizeof(int), 988 - .mode = 0644, 989 - .proc_handler = proc_dointvec_minmax, 990 - .extra1 = SYSCTL_ZERO, 991 - .extra2 = SYSCTL_ONE, 992 - }, 993 - { 994 - .procname = "hung_task_check_count", 995 - .data = &sysctl_hung_task_check_count, 996 - .maxlen = sizeof(int), 997 - .mode = 0644, 998 - .proc_handler = proc_dointvec_minmax, 999 - .extra1 = SYSCTL_ZERO, 1000 - }, 1001 - { 1002 - .procname = "hung_task_timeout_secs", 1003 - .data = &sysctl_hung_task_timeout_secs, 1004 - .maxlen = sizeof(unsigned long), 1005 - .mode = 0644, 1006 - .proc_handler = proc_dohung_task_timeout_secs, 1007 - .extra2 = &hung_task_timeout_max, 1008 - }, 1009 - { 1010 - .procname = "hung_task_check_interval_secs", 1011 - .data = &sysctl_hung_task_check_interval_secs, 1012 - .maxlen = sizeof(unsigned long), 1013 - .mode = 0644, 1014 - .proc_handler = proc_dohung_task_timeout_secs, 1015 - .extra2 = &hung_task_timeout_max, 1016 - }, 1017 - { 1018 - .procname = "hung_task_warnings", 1019 - .data = &sysctl_hung_task_warnings, 1020 - .maxlen = sizeof(int), 1021 - .mode = 0644, 1022 - .proc_handler = proc_dointvec_minmax, 1023 - .extra1 = &neg_one, 1024 - }, 1025 - #endif 1026 - #ifdef CONFIG_RT_MUTEXES 1027 - { 1028 - .procname = "max_lock_depth", 1029 - .data = &max_lock_depth, 1030 - .maxlen = sizeof(int), 1031 - .mode = 0644, 1032 - .proc_handler = proc_dointvec, 1033 - }, 1034 - #endif 1035 - { 1036 - .procname = "poweroff_cmd", 1037 - .data = &poweroff_cmd, 1038 - .maxlen = POWEROFF_CMD_PATH_LEN, 1039 - .mode = 0644, 1040 - .proc_handler = proc_dostring, 1041 - }, 1042 - #ifdef CONFIG_KEYS 1043 - { 1044 - .procname = "keys", 1045 - .mode = 0555, 1046 - .child = key_sysctls, 1047 - }, 1048 - #endif 1049 - #ifdef CONFIG_PERF_EVENTS 1050 - /* 1051 - * User-space scripts rely on the existence of this file 1052 - * as a feature check for perf_events being enabled. 1053 - * 1054 - * So it's an ABI, do not remove! 1055 - */ 1056 - { 1057 - .procname = "perf_event_paranoid", 1058 - .data = &sysctl_perf_event_paranoid, 1059 - .maxlen = sizeof(sysctl_perf_event_paranoid), 1060 - .mode = 0644, 1061 - .proc_handler = proc_dointvec, 1062 - }, 1063 - { 1064 - .procname = "perf_event_mlock_kb", 1065 - .data = &sysctl_perf_event_mlock, 1066 - .maxlen = sizeof(sysctl_perf_event_mlock), 1067 - .mode = 0644, 1068 - .proc_handler = proc_dointvec, 1069 - }, 1070 - { 1071 - .procname = "perf_event_max_sample_rate", 1072 - .data = &sysctl_perf_event_sample_rate, 1073 - .maxlen = sizeof(sysctl_perf_event_sample_rate), 1074 - .mode = 0644, 1075 - .proc_handler = perf_proc_update_handler, 1076 - .extra1 = SYSCTL_ONE, 1077 - }, 1078 - { 1079 - .procname = "perf_cpu_time_max_percent", 1080 - .data = &sysctl_perf_cpu_time_max_percent, 1081 - .maxlen = sizeof(sysctl_perf_cpu_time_max_percent), 1082 - .mode = 0644, 1083 - .proc_handler = perf_cpu_time_max_percent_handler, 1084 - .extra1 = SYSCTL_ZERO, 1085 - .extra2 = &one_hundred, 1086 - }, 1087 - { 1088 - .procname = "perf_event_max_stack", 1089 - .data = &sysctl_perf_event_max_stack, 1090 - .maxlen = sizeof(sysctl_perf_event_max_stack), 1091 - .mode = 0644, 1092 - .proc_handler = perf_event_max_stack_handler, 1093 - .extra1 = SYSCTL_ZERO, 1094 - .extra2 = &six_hundred_forty_kb, 1095 - }, 1096 - { 1097 - .procname = "perf_event_max_contexts_per_stack", 1098 - .data = &sysctl_perf_event_max_contexts_per_stack, 1099 - .maxlen = sizeof(sysctl_perf_event_max_contexts_per_stack), 1100 - .mode = 0644, 1101 - .proc_handler = perf_event_max_stack_handler, 1102 - .extra1 = SYSCTL_ZERO, 1103 - .extra2 = &one_thousand, 1104 - }, 1105 - #endif 1106 - { 1107 - .procname = "panic_on_warn", 1108 - .data = &panic_on_warn, 1109 - .maxlen = sizeof(int), 1110 - .mode = 0644, 1111 - .proc_handler = proc_dointvec_minmax, 1112 - .extra1 = SYSCTL_ZERO, 1113 - .extra2 = SYSCTL_ONE, 1114 - }, 1115 - #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON) 1116 - { 1117 - .procname = "timer_migration", 1118 - .data = &sysctl_timer_migration, 1119 - .maxlen = sizeof(unsigned int), 1120 - .mode = 0644, 1121 - .proc_handler = timer_migration_handler, 1122 - .extra1 = SYSCTL_ZERO, 1123 - .extra2 = SYSCTL_ONE, 1124 - }, 1125 - #endif 1126 - #ifdef CONFIG_BPF_SYSCALL 1127 - { 1128 - .procname = "unprivileged_bpf_disabled", 1129 - .data = &sysctl_unprivileged_bpf_disabled, 1130 - .maxlen = sizeof(sysctl_unprivileged_bpf_disabled), 1131 - .mode = 0644, 1132 - /* only handle a transition from default "0" to "1" */ 1133 - .proc_handler = proc_dointvec_minmax, 1134 - .extra1 = SYSCTL_ONE, 1135 - .extra2 = SYSCTL_ONE, 1136 - }, 1137 - { 1138 - .procname = "bpf_stats_enabled", 1139 - .data = &bpf_stats_enabled_key.key, 1140 - .maxlen = sizeof(bpf_stats_enabled_key), 1141 - .mode = 0644, 1142 - .proc_handler = proc_do_static_key, 1143 - }, 1144 - #endif 1145 - #if defined(CONFIG_TREE_RCU) 1146 - { 1147 - .procname = "panic_on_rcu_stall", 1148 - .data = &sysctl_panic_on_rcu_stall, 1149 - .maxlen = sizeof(sysctl_panic_on_rcu_stall), 1150 - .mode = 0644, 1151 - .proc_handler = proc_dointvec_minmax, 1152 - .extra1 = SYSCTL_ZERO, 1153 - .extra2 = SYSCTL_ONE, 1154 - }, 1155 - #endif 1156 - #ifdef CONFIG_STACKLEAK_RUNTIME_DISABLE 1157 - { 1158 - .procname = "stack_erasing", 1159 - .data = NULL, 1160 - .maxlen = sizeof(int), 1161 - .mode = 0600, 1162 - .proc_handler = stack_erasing_sysctl, 1163 - .extra1 = SYSCTL_ZERO, 1164 - .extra2 = SYSCTL_ONE, 1165 - }, 1166 - #endif 1167 - { } 1168 - }; 1169 - 1170 - static struct ctl_table vm_table[] = { 1171 - { 1172 - .procname = "overcommit_memory", 1173 - .data = &sysctl_overcommit_memory, 1174 - .maxlen = sizeof(sysctl_overcommit_memory), 1175 - .mode = 0644, 1176 - .proc_handler = proc_dointvec_minmax, 1177 - .extra1 = SYSCTL_ZERO, 1178 - .extra2 = &two, 1179 - }, 1180 - { 1181 - .procname = "panic_on_oom", 1182 - .data = &sysctl_panic_on_oom, 1183 - .maxlen = sizeof(sysctl_panic_on_oom), 1184 - .mode = 0644, 1185 - .proc_handler = proc_dointvec_minmax, 1186 - .extra1 = SYSCTL_ZERO, 1187 - .extra2 = &two, 1188 - }, 1189 - { 1190 - .procname = "oom_kill_allocating_task", 1191 - .data = &sysctl_oom_kill_allocating_task, 1192 - .maxlen = sizeof(sysctl_oom_kill_allocating_task), 1193 - .mode = 0644, 1194 - .proc_handler = proc_dointvec, 1195 - }, 1196 - { 1197 - .procname = "oom_dump_tasks", 1198 - .data = &sysctl_oom_dump_tasks, 1199 - .maxlen = sizeof(sysctl_oom_dump_tasks), 1200 - .mode = 0644, 1201 - .proc_handler = proc_dointvec, 1202 - }, 1203 - { 1204 - .procname = "overcommit_ratio", 1205 - .data = &sysctl_overcommit_ratio, 1206 - .maxlen = sizeof(sysctl_overcommit_ratio), 1207 - .mode = 0644, 1208 - .proc_handler = overcommit_ratio_handler, 1209 - }, 1210 - { 1211 - .procname = "overcommit_kbytes", 1212 - .data = &sysctl_overcommit_kbytes, 1213 - .maxlen = sizeof(sysctl_overcommit_kbytes), 1214 - .mode = 0644, 1215 - .proc_handler = overcommit_kbytes_handler, 1216 - }, 1217 - { 1218 - .procname = "page-cluster", 1219 - .data = &page_cluster, 1220 - .maxlen = sizeof(int), 1221 - .mode = 0644, 1222 - .proc_handler = proc_dointvec_minmax, 1223 - .extra1 = SYSCTL_ZERO, 1224 - }, 1225 - { 1226 - .procname = "dirty_background_ratio", 1227 - .data = &dirty_background_ratio, 1228 - .maxlen = sizeof(dirty_background_ratio), 1229 - .mode = 0644, 1230 - .proc_handler = dirty_background_ratio_handler, 1231 - .extra1 = SYSCTL_ZERO, 1232 - .extra2 = &one_hundred, 1233 - }, 1234 - { 1235 - .procname = "dirty_background_bytes", 1236 - .data = &dirty_background_bytes, 1237 - .maxlen = sizeof(dirty_background_bytes), 1238 - .mode = 0644, 1239 - .proc_handler = dirty_background_bytes_handler, 1240 - .extra1 = &one_ul, 1241 - }, 1242 - { 1243 - .procname = "dirty_ratio", 1244 - .data = &vm_dirty_ratio, 1245 - .maxlen = sizeof(vm_dirty_ratio), 1246 - .mode = 0644, 1247 - .proc_handler = dirty_ratio_handler, 1248 - .extra1 = SYSCTL_ZERO, 1249 - .extra2 = &one_hundred, 1250 - }, 1251 - { 1252 - .procname = "dirty_bytes", 1253 - .data = &vm_dirty_bytes, 1254 - .maxlen = sizeof(vm_dirty_bytes), 1255 - .mode = 0644, 1256 - .proc_handler = dirty_bytes_handler, 1257 - .extra1 = &dirty_bytes_min, 1258 - }, 1259 - { 1260 - .procname = "dirty_writeback_centisecs", 1261 - .data = &dirty_writeback_interval, 1262 - .maxlen = sizeof(dirty_writeback_interval), 1263 - .mode = 0644, 1264 - .proc_handler = dirty_writeback_centisecs_handler, 1265 - }, 1266 - { 1267 - .procname = "dirty_expire_centisecs", 1268 - .data = &dirty_expire_interval, 1269 - .maxlen = sizeof(dirty_expire_interval), 1270 - .mode = 0644, 1271 - .proc_handler = proc_dointvec_minmax, 1272 - .extra1 = SYSCTL_ZERO, 1273 - }, 1274 - { 1275 - .procname = "dirtytime_expire_seconds", 1276 - .data = &dirtytime_expire_interval, 1277 - .maxlen = sizeof(dirtytime_expire_interval), 1278 - .mode = 0644, 1279 - .proc_handler = dirtytime_interval_handler, 1280 - .extra1 = SYSCTL_ZERO, 1281 - }, 1282 - { 1283 - .procname = "swappiness", 1284 - .data = &vm_swappiness, 1285 - .maxlen = sizeof(vm_swappiness), 1286 - .mode = 0644, 1287 - .proc_handler = proc_dointvec_minmax, 1288 - .extra1 = SYSCTL_ZERO, 1289 - .extra2 = &one_hundred, 1290 - }, 1291 - #ifdef CONFIG_HUGETLB_PAGE 1292 - { 1293 - .procname = "nr_hugepages", 1294 - .data = NULL, 1295 - .maxlen = sizeof(unsigned long), 1296 - .mode = 0644, 1297 - .proc_handler = hugetlb_sysctl_handler, 1298 - }, 1299 - #ifdef CONFIG_NUMA 1300 - { 1301 - .procname = "nr_hugepages_mempolicy", 1302 - .data = NULL, 1303 - .maxlen = sizeof(unsigned long), 1304 - .mode = 0644, 1305 - .proc_handler = &hugetlb_mempolicy_sysctl_handler, 1306 - }, 1307 - { 1308 - .procname = "numa_stat", 1309 - .data = &sysctl_vm_numa_stat, 1310 - .maxlen = sizeof(int), 1311 - .mode = 0644, 1312 - .proc_handler = sysctl_vm_numa_stat_handler, 1313 - .extra1 = SYSCTL_ZERO, 1314 - .extra2 = SYSCTL_ONE, 1315 - }, 1316 - #endif 1317 - { 1318 - .procname = "hugetlb_shm_group", 1319 - .data = &sysctl_hugetlb_shm_group, 1320 - .maxlen = sizeof(gid_t), 1321 - .mode = 0644, 1322 - .proc_handler = proc_dointvec, 1323 - }, 1324 - { 1325 - .procname = "nr_overcommit_hugepages", 1326 - .data = NULL, 1327 - .maxlen = sizeof(unsigned long), 1328 - .mode = 0644, 1329 - .proc_handler = hugetlb_overcommit_handler, 1330 - }, 1331 - #endif 1332 - { 1333 - .procname = "lowmem_reserve_ratio", 1334 - .data = &sysctl_lowmem_reserve_ratio, 1335 - .maxlen = sizeof(sysctl_lowmem_reserve_ratio), 1336 - .mode = 0644, 1337 - .proc_handler = lowmem_reserve_ratio_sysctl_handler, 1338 - }, 1339 - { 1340 - .procname = "drop_caches", 1341 - .data = &sysctl_drop_caches, 1342 - .maxlen = sizeof(int), 1343 - .mode = 0200, 1344 - .proc_handler = drop_caches_sysctl_handler, 1345 - .extra1 = SYSCTL_ONE, 1346 - .extra2 = &four, 1347 - }, 1348 - #ifdef CONFIG_COMPACTION 1349 - { 1350 - .procname = "compact_memory", 1351 - .data = &sysctl_compact_memory, 1352 - .maxlen = sizeof(int), 1353 - .mode = 0200, 1354 - .proc_handler = sysctl_compaction_handler, 1355 - }, 1356 - { 1357 - .procname = "extfrag_threshold", 1358 - .data = &sysctl_extfrag_threshold, 1359 - .maxlen = sizeof(int), 1360 - .mode = 0644, 1361 - .proc_handler = proc_dointvec_minmax, 1362 - .extra1 = &min_extfrag_threshold, 1363 - .extra2 = &max_extfrag_threshold, 1364 - }, 1365 - { 1366 - .procname = "compact_unevictable_allowed", 1367 - .data = &sysctl_compact_unevictable_allowed, 1368 - .maxlen = sizeof(int), 1369 - .mode = 0644, 1370 - .proc_handler = proc_dointvec_minmax_warn_RT_change, 1371 - .extra1 = SYSCTL_ZERO, 1372 - .extra2 = SYSCTL_ONE, 1373 - }, 1374 - 1375 - #endif /* CONFIG_COMPACTION */ 1376 - { 1377 - .procname = "min_free_kbytes", 1378 - .data = &min_free_kbytes, 1379 - .maxlen = sizeof(min_free_kbytes), 1380 - .mode = 0644, 1381 - .proc_handler = min_free_kbytes_sysctl_handler, 1382 - .extra1 = SYSCTL_ZERO, 1383 - }, 1384 - { 1385 - .procname = "watermark_boost_factor", 1386 - .data = &watermark_boost_factor, 1387 - .maxlen = sizeof(watermark_boost_factor), 1388 - .mode = 0644, 1389 - .proc_handler = proc_dointvec_minmax, 1390 - .extra1 = SYSCTL_ZERO, 1391 - }, 1392 - { 1393 - .procname = "watermark_scale_factor", 1394 - .data = &watermark_scale_factor, 1395 - .maxlen = sizeof(watermark_scale_factor), 1396 - .mode = 0644, 1397 - .proc_handler = watermark_scale_factor_sysctl_handler, 1398 - .extra1 = SYSCTL_ONE, 1399 - .extra2 = &one_thousand, 1400 - }, 1401 - { 1402 - .procname = "percpu_pagelist_fraction", 1403 - .data = &percpu_pagelist_fraction, 1404 - .maxlen = sizeof(percpu_pagelist_fraction), 1405 - .mode = 0644, 1406 - .proc_handler = percpu_pagelist_fraction_sysctl_handler, 1407 - .extra1 = SYSCTL_ZERO, 1408 - }, 1409 - #ifdef CONFIG_MMU 1410 - { 1411 - .procname = "max_map_count", 1412 - .data = &sysctl_max_map_count, 1413 - .maxlen = sizeof(sysctl_max_map_count), 1414 - .mode = 0644, 1415 - .proc_handler = proc_dointvec_minmax, 1416 - .extra1 = SYSCTL_ZERO, 1417 - }, 1418 - #else 1419 - { 1420 - .procname = "nr_trim_pages", 1421 - .data = &sysctl_nr_trim_pages, 1422 - .maxlen = sizeof(sysctl_nr_trim_pages), 1423 - .mode = 0644, 1424 - .proc_handler = proc_dointvec_minmax, 1425 - .extra1 = SYSCTL_ZERO, 1426 - }, 1427 - #endif 1428 - { 1429 - .procname = "laptop_mode", 1430 - .data = &laptop_mode, 1431 - .maxlen = sizeof(laptop_mode), 1432 - .mode = 0644, 1433 - .proc_handler = proc_dointvec_jiffies, 1434 - }, 1435 - { 1436 - .procname = "block_dump", 1437 - .data = &block_dump, 1438 - .maxlen = sizeof(block_dump), 1439 - .mode = 0644, 1440 - .proc_handler = proc_dointvec, 1441 - .extra1 = SYSCTL_ZERO, 1442 - }, 1443 - { 1444 - .procname = "vfs_cache_pressure", 1445 - .data = &sysctl_vfs_cache_pressure, 1446 - .maxlen = sizeof(sysctl_vfs_cache_pressure), 1447 - .mode = 0644, 1448 - .proc_handler = proc_dointvec, 1449 - .extra1 = SYSCTL_ZERO, 1450 - }, 1451 - #if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \ 1452 - defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT) 1453 - { 1454 - .procname = "legacy_va_layout", 1455 - .data = &sysctl_legacy_va_layout, 1456 - .maxlen = sizeof(sysctl_legacy_va_layout), 1457 - .mode = 0644, 1458 - .proc_handler = proc_dointvec, 1459 - .extra1 = SYSCTL_ZERO, 1460 - }, 1461 - #endif 1462 - #ifdef CONFIG_NUMA 1463 - { 1464 - .procname = "zone_reclaim_mode", 1465 - .data = &node_reclaim_mode, 1466 - .maxlen = sizeof(node_reclaim_mode), 1467 - .mode = 0644, 1468 - .proc_handler = proc_dointvec, 1469 - .extra1 = SYSCTL_ZERO, 1470 - }, 1471 - { 1472 - .procname = "min_unmapped_ratio", 1473 - .data = &sysctl_min_unmapped_ratio, 1474 - .maxlen = sizeof(sysctl_min_unmapped_ratio), 1475 - .mode = 0644, 1476 - .proc_handler = sysctl_min_unmapped_ratio_sysctl_handler, 1477 - .extra1 = SYSCTL_ZERO, 1478 - .extra2 = &one_hundred, 1479 - }, 1480 - { 1481 - .procname = "min_slab_ratio", 1482 - .data = &sysctl_min_slab_ratio, 1483 - .maxlen = sizeof(sysctl_min_slab_ratio), 1484 - .mode = 0644, 1485 - .proc_handler = sysctl_min_slab_ratio_sysctl_handler, 1486 - .extra1 = SYSCTL_ZERO, 1487 - .extra2 = &one_hundred, 1488 - }, 1489 - #endif 1490 - #ifdef CONFIG_SMP 1491 - { 1492 - .procname = "stat_interval", 1493 - .data = &sysctl_stat_interval, 1494 - .maxlen = sizeof(sysctl_stat_interval), 1495 - .mode = 0644, 1496 - .proc_handler = proc_dointvec_jiffies, 1497 - }, 1498 - { 1499 - .procname = "stat_refresh", 1500 - .data = NULL, 1501 - .maxlen = 0, 1502 - .mode = 0600, 1503 - .proc_handler = vmstat_refresh, 1504 - }, 1505 - #endif 1506 - #ifdef CONFIG_MMU 1507 - { 1508 - .procname = "mmap_min_addr", 1509 - .data = &dac_mmap_min_addr, 1510 - .maxlen = sizeof(unsigned long), 1511 - .mode = 0644, 1512 - .proc_handler = mmap_min_addr_handler, 1513 - }, 1514 - #endif 1515 - #ifdef CONFIG_NUMA 1516 - { 1517 - .procname = "numa_zonelist_order", 1518 - .data = &numa_zonelist_order, 1519 - .maxlen = NUMA_ZONELIST_ORDER_LEN, 1520 - .mode = 0644, 1521 - .proc_handler = numa_zonelist_order_handler, 1522 - }, 1523 - #endif 1524 - #if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \ 1525 - (defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL)) 1526 - { 1527 - .procname = "vdso_enabled", 1528 - #ifdef CONFIG_X86_32 1529 - .data = &vdso32_enabled, 1530 - .maxlen = sizeof(vdso32_enabled), 1531 - #else 1532 - .data = &vdso_enabled, 1533 - .maxlen = sizeof(vdso_enabled), 1534 - #endif 1535 - .mode = 0644, 1536 - .proc_handler = proc_dointvec, 1537 - .extra1 = SYSCTL_ZERO, 1538 - }, 1539 - #endif 1540 - #ifdef CONFIG_HIGHMEM 1541 - { 1542 - .procname = "highmem_is_dirtyable", 1543 - .data = &vm_highmem_is_dirtyable, 1544 - .maxlen = sizeof(vm_highmem_is_dirtyable), 1545 - .mode = 0644, 1546 - .proc_handler = proc_dointvec_minmax, 1547 - .extra1 = SYSCTL_ZERO, 1548 - .extra2 = SYSCTL_ONE, 1549 - }, 1550 - #endif 1551 - #ifdef CONFIG_MEMORY_FAILURE 1552 - { 1553 - .procname = "memory_failure_early_kill", 1554 - .data = &sysctl_memory_failure_early_kill, 1555 - .maxlen = sizeof(sysctl_memory_failure_early_kill), 1556 - .mode = 0644, 1557 - .proc_handler = proc_dointvec_minmax, 1558 - .extra1 = SYSCTL_ZERO, 1559 - .extra2 = SYSCTL_ONE, 1560 - }, 1561 - { 1562 - .procname = "memory_failure_recovery", 1563 - .data = &sysctl_memory_failure_recovery, 1564 - .maxlen = sizeof(sysctl_memory_failure_recovery), 1565 - .mode = 0644, 1566 - .proc_handler = proc_dointvec_minmax, 1567 - .extra1 = SYSCTL_ZERO, 1568 - .extra2 = SYSCTL_ONE, 1569 - }, 1570 - #endif 1571 - { 1572 - .procname = "user_reserve_kbytes", 1573 - .data = &sysctl_user_reserve_kbytes, 1574 - .maxlen = sizeof(sysctl_user_reserve_kbytes), 1575 - .mode = 0644, 1576 - .proc_handler = proc_doulongvec_minmax, 1577 - }, 1578 - { 1579 - .procname = "admin_reserve_kbytes", 1580 - .data = &sysctl_admin_reserve_kbytes, 1581 - .maxlen = sizeof(sysctl_admin_reserve_kbytes), 1582 - .mode = 0644, 1583 - .proc_handler = proc_doulongvec_minmax, 1584 - }, 1585 - #ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS 1586 - { 1587 - .procname = "mmap_rnd_bits", 1588 - .data = &mmap_rnd_bits, 1589 - .maxlen = sizeof(mmap_rnd_bits), 1590 - .mode = 0600, 1591 - .proc_handler = proc_dointvec_minmax, 1592 - .extra1 = (void *)&mmap_rnd_bits_min, 1593 - .extra2 = (void *)&mmap_rnd_bits_max, 1594 - }, 1595 - #endif 1596 - #ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS 1597 - { 1598 - .procname = "mmap_rnd_compat_bits", 1599 - .data = &mmap_rnd_compat_bits, 1600 - .maxlen = sizeof(mmap_rnd_compat_bits), 1601 - .mode = 0600, 1602 - .proc_handler = proc_dointvec_minmax, 1603 - .extra1 = (void *)&mmap_rnd_compat_bits_min, 1604 - .extra2 = (void *)&mmap_rnd_compat_bits_max, 1605 - }, 1606 - #endif 1607 - #ifdef CONFIG_USERFAULTFD 1608 - { 1609 - .procname = "unprivileged_userfaultfd", 1610 - .data = &sysctl_unprivileged_userfaultfd, 1611 - .maxlen = sizeof(sysctl_unprivileged_userfaultfd), 1612 - .mode = 0644, 1613 - .proc_handler = proc_dointvec_minmax, 1614 - .extra1 = SYSCTL_ZERO, 1615 - .extra2 = SYSCTL_ONE, 1616 - }, 1617 - #endif 1618 - { } 1619 - }; 1620 - 1621 - static struct ctl_table fs_table[] = { 1622 - { 1623 - .procname = "inode-nr", 1624 - .data = &inodes_stat, 1625 - .maxlen = 2*sizeof(long), 1626 - .mode = 0444, 1627 - .proc_handler = proc_nr_inodes, 1628 - }, 1629 - { 1630 - .procname = "inode-state", 1631 - .data = &inodes_stat, 1632 - .maxlen = 7*sizeof(long), 1633 - .mode = 0444, 1634 - .proc_handler = proc_nr_inodes, 1635 - }, 1636 - { 1637 - .procname = "file-nr", 1638 - .data = &files_stat, 1639 - .maxlen = sizeof(files_stat), 1640 - .mode = 0444, 1641 - .proc_handler = proc_nr_files, 1642 - }, 1643 - { 1644 - .procname = "file-max", 1645 - .data = &files_stat.max_files, 1646 - .maxlen = sizeof(files_stat.max_files), 1647 - .mode = 0644, 1648 - .proc_handler = proc_doulongvec_minmax, 1649 - .extra1 = &zero_ul, 1650 - .extra2 = &long_max, 1651 - }, 1652 - { 1653 - .procname = "nr_open", 1654 - .data = &sysctl_nr_open, 1655 - .maxlen = sizeof(unsigned int), 1656 - .mode = 0644, 1657 - .proc_handler = proc_dointvec_minmax, 1658 - .extra1 = &sysctl_nr_open_min, 1659 - .extra2 = &sysctl_nr_open_max, 1660 - }, 1661 - { 1662 - .procname = "dentry-state", 1663 - .data = &dentry_stat, 1664 - .maxlen = 6*sizeof(long), 1665 - .mode = 0444, 1666 - .proc_handler = proc_nr_dentry, 1667 - }, 1668 - { 1669 - .procname = "overflowuid", 1670 - .data = &fs_overflowuid, 1671 - .maxlen = sizeof(int), 1672 - .mode = 0644, 1673 - .proc_handler = proc_dointvec_minmax, 1674 - .extra1 = &minolduid, 1675 - .extra2 = &maxolduid, 1676 - }, 1677 - { 1678 - .procname = "overflowgid", 1679 - .data = &fs_overflowgid, 1680 - .maxlen = sizeof(int), 1681 - .mode = 0644, 1682 - .proc_handler = proc_dointvec_minmax, 1683 - .extra1 = &minolduid, 1684 - .extra2 = &maxolduid, 1685 - }, 1686 - #ifdef CONFIG_FILE_LOCKING 1687 - { 1688 - .procname = "leases-enable", 1689 - .data = &leases_enable, 1690 - .maxlen = sizeof(int), 1691 - .mode = 0644, 1692 - .proc_handler = proc_dointvec, 1693 - }, 1694 - #endif 1695 - #ifdef CONFIG_DNOTIFY 1696 - { 1697 - .procname = "dir-notify-enable", 1698 - .data = &dir_notify_enable, 1699 - .maxlen = sizeof(int), 1700 - .mode = 0644, 1701 - .proc_handler = proc_dointvec, 1702 - }, 1703 - #endif 1704 - #ifdef CONFIG_MMU 1705 - #ifdef CONFIG_FILE_LOCKING 1706 - { 1707 - .procname = "lease-break-time", 1708 - .data = &lease_break_time, 1709 - .maxlen = sizeof(int), 1710 - .mode = 0644, 1711 - .proc_handler = proc_dointvec, 1712 - }, 1713 - #endif 1714 - #ifdef CONFIG_AIO 1715 - { 1716 - .procname = "aio-nr", 1717 - .data = &aio_nr, 1718 - .maxlen = sizeof(aio_nr), 1719 - .mode = 0444, 1720 - .proc_handler = proc_doulongvec_minmax, 1721 - }, 1722 - { 1723 - .procname = "aio-max-nr", 1724 - .data = &aio_max_nr, 1725 - .maxlen = sizeof(aio_max_nr), 1726 - .mode = 0644, 1727 - .proc_handler = proc_doulongvec_minmax, 1728 - }, 1729 - #endif /* CONFIG_AIO */ 1730 - #ifdef CONFIG_INOTIFY_USER 1731 - { 1732 - .procname = "inotify", 1733 - .mode = 0555, 1734 - .child = inotify_table, 1735 - }, 1736 - #endif 1737 - #ifdef CONFIG_EPOLL 1738 - { 1739 - .procname = "epoll", 1740 - .mode = 0555, 1741 - .child = epoll_table, 1742 - }, 1743 - #endif 1744 - #endif 1745 - { 1746 - .procname = "protected_symlinks", 1747 - .data = &sysctl_protected_symlinks, 1748 - .maxlen = sizeof(int), 1749 - .mode = 0600, 1750 - .proc_handler = proc_dointvec_minmax, 1751 - .extra1 = SYSCTL_ZERO, 1752 - .extra2 = SYSCTL_ONE, 1753 - }, 1754 - { 1755 - .procname = "protected_hardlinks", 1756 - .data = &sysctl_protected_hardlinks, 1757 - .maxlen = sizeof(int), 1758 - .mode = 0600, 1759 - .proc_handler = proc_dointvec_minmax, 1760 - .extra1 = SYSCTL_ZERO, 1761 - .extra2 = SYSCTL_ONE, 1762 - }, 1763 - { 1764 - .procname = "protected_fifos", 1765 - .data = &sysctl_protected_fifos, 1766 - .maxlen = sizeof(int), 1767 - .mode = 0600, 1768 - .proc_handler = proc_dointvec_minmax, 1769 - .extra1 = SYSCTL_ZERO, 1770 - .extra2 = &two, 1771 - }, 1772 - { 1773 - .procname = "protected_regular", 1774 - .data = &sysctl_protected_regular, 1775 - .maxlen = sizeof(int), 1776 - .mode = 0600, 1777 - .proc_handler = proc_dointvec_minmax, 1778 - .extra1 = SYSCTL_ZERO, 1779 - .extra2 = &two, 1780 - }, 1781 - { 1782 - .procname = "suid_dumpable", 1783 - .data = &suid_dumpable, 1784 - .maxlen = sizeof(int), 1785 - .mode = 0644, 1786 - .proc_handler = proc_dointvec_minmax_coredump, 1787 - .extra1 = SYSCTL_ZERO, 1788 - .extra2 = &two, 1789 - }, 1790 - #if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE) 1791 - { 1792 - .procname = "binfmt_misc", 1793 - .mode = 0555, 1794 - .child = sysctl_mount_point, 1795 - }, 1796 - #endif 1797 - { 1798 - .procname = "pipe-max-size", 1799 - .data = &pipe_max_size, 1800 - .maxlen = sizeof(pipe_max_size), 1801 - .mode = 0644, 1802 - .proc_handler = proc_dopipe_max_size, 1803 - }, 1804 - { 1805 - .procname = "pipe-user-pages-hard", 1806 - .data = &pipe_user_pages_hard, 1807 - .maxlen = sizeof(pipe_user_pages_hard), 1808 - .mode = 0644, 1809 - .proc_handler = proc_doulongvec_minmax, 1810 - }, 1811 - { 1812 - .procname = "pipe-user-pages-soft", 1813 - .data = &pipe_user_pages_soft, 1814 - .maxlen = sizeof(pipe_user_pages_soft), 1815 - .mode = 0644, 1816 - .proc_handler = proc_doulongvec_minmax, 1817 - }, 1818 - { 1819 - .procname = "mount-max", 1820 - .data = &sysctl_mount_max, 1821 - .maxlen = sizeof(unsigned int), 1822 - .mode = 0644, 1823 - .proc_handler = proc_dointvec_minmax, 1824 - .extra1 = SYSCTL_ONE, 1825 - }, 1826 - { } 1827 - }; 1828 - 1829 - static struct ctl_table debug_table[] = { 1830 - #ifdef CONFIG_SYSCTL_EXCEPTION_TRACE 1831 - { 1832 - .procname = "exception-trace", 1833 - .data = &show_unhandled_signals, 1834 - .maxlen = sizeof(int), 1835 - .mode = 0644, 1836 - .proc_handler = proc_dointvec 1837 - }, 1838 - #endif 1839 - #if defined(CONFIG_OPTPROBES) 1840 - { 1841 - .procname = "kprobes-optimization", 1842 - .data = &sysctl_kprobes_optimization, 1843 - .maxlen = sizeof(int), 1844 - .mode = 0644, 1845 - .proc_handler = proc_kprobes_optimization_handler, 1846 - .extra1 = SYSCTL_ZERO, 1847 - .extra2 = SYSCTL_ONE, 1848 - }, 1849 - #endif 1850 - { } 1851 - }; 1852 - 1853 - static struct ctl_table dev_table[] = { 1854 - { } 1855 - }; 1856 - 1857 - int __init sysctl_init(void) 1858 - { 1859 - struct ctl_table_header *hdr; 1860 - 1861 - hdr = register_sysctl_table(sysctl_base_table); 1862 - kmemleak_not_leak(hdr); 1863 - return 0; 1864 - } 1865 267 1866 268 #endif /* CONFIG_SYSCTL */ 1867 269 ··· 1665 3395 mutex_unlock(&static_key_mutex); 1666 3396 return ret; 1667 3397 } 3398 + 3399 + static struct ctl_table kern_table[] = { 3400 + { 3401 + .procname = "sched_child_runs_first", 3402 + .data = &sysctl_sched_child_runs_first, 3403 + .maxlen = sizeof(unsigned int), 3404 + .mode = 0644, 3405 + .proc_handler = proc_dointvec, 3406 + }, 3407 + #ifdef CONFIG_SCHED_DEBUG 3408 + { 3409 + .procname = "sched_min_granularity_ns", 3410 + .data = &sysctl_sched_min_granularity, 3411 + .maxlen = sizeof(unsigned int), 3412 + .mode = 0644, 3413 + .proc_handler = sched_proc_update_handler, 3414 + .extra1 = &min_sched_granularity_ns, 3415 + .extra2 = &max_sched_granularity_ns, 3416 + }, 3417 + { 3418 + .procname = "sched_latency_ns", 3419 + .data = &sysctl_sched_latency, 3420 + .maxlen = sizeof(unsigned int), 3421 + .mode = 0644, 3422 + .proc_handler = sched_proc_update_handler, 3423 + .extra1 = &min_sched_granularity_ns, 3424 + .extra2 = &max_sched_granularity_ns, 3425 + }, 3426 + { 3427 + .procname = "sched_wakeup_granularity_ns", 3428 + .data = &sysctl_sched_wakeup_granularity, 3429 + .maxlen = sizeof(unsigned int), 3430 + .mode = 0644, 3431 + .proc_handler = sched_proc_update_handler, 3432 + .extra1 = &min_wakeup_granularity_ns, 3433 + .extra2 = &max_wakeup_granularity_ns, 3434 + }, 3435 + #ifdef CONFIG_SMP 3436 + { 3437 + .procname = "sched_tunable_scaling", 3438 + .data = &sysctl_sched_tunable_scaling, 3439 + .maxlen = sizeof(enum sched_tunable_scaling), 3440 + .mode = 0644, 3441 + .proc_handler = sched_proc_update_handler, 3442 + .extra1 = &min_sched_tunable_scaling, 3443 + .extra2 = &max_sched_tunable_scaling, 3444 + }, 3445 + { 3446 + .procname = "sched_migration_cost_ns", 3447 + .data = &sysctl_sched_migration_cost, 3448 + .maxlen = sizeof(unsigned int), 3449 + .mode = 0644, 3450 + .proc_handler = proc_dointvec, 3451 + }, 3452 + { 3453 + .procname = "sched_nr_migrate", 3454 + .data = &sysctl_sched_nr_migrate, 3455 + .maxlen = sizeof(unsigned int), 3456 + .mode = 0644, 3457 + .proc_handler = proc_dointvec, 3458 + }, 3459 + #ifdef CONFIG_SCHEDSTATS 3460 + { 3461 + .procname = "sched_schedstats", 3462 + .data = NULL, 3463 + .maxlen = sizeof(unsigned int), 3464 + .mode = 0644, 3465 + .proc_handler = sysctl_schedstats, 3466 + .extra1 = SYSCTL_ZERO, 3467 + .extra2 = SYSCTL_ONE, 3468 + }, 3469 + #endif /* CONFIG_SCHEDSTATS */ 3470 + #endif /* CONFIG_SMP */ 3471 + #ifdef CONFIG_NUMA_BALANCING 3472 + { 3473 + .procname = "numa_balancing_scan_delay_ms", 3474 + .data = &sysctl_numa_balancing_scan_delay, 3475 + .maxlen = sizeof(unsigned int), 3476 + .mode = 0644, 3477 + .proc_handler = proc_dointvec, 3478 + }, 3479 + { 3480 + .procname = "numa_balancing_scan_period_min_ms", 3481 + .data = &sysctl_numa_balancing_scan_period_min, 3482 + .maxlen = sizeof(unsigned int), 3483 + .mode = 0644, 3484 + .proc_handler = proc_dointvec, 3485 + }, 3486 + { 3487 + .procname = "numa_balancing_scan_period_max_ms", 3488 + .data = &sysctl_numa_balancing_scan_period_max, 3489 + .maxlen = sizeof(unsigned int), 3490 + .mode = 0644, 3491 + .proc_handler = proc_dointvec, 3492 + }, 3493 + { 3494 + .procname = "numa_balancing_scan_size_mb", 3495 + .data = &sysctl_numa_balancing_scan_size, 3496 + .maxlen = sizeof(unsigned int), 3497 + .mode = 0644, 3498 + .proc_handler = proc_dointvec_minmax, 3499 + .extra1 = SYSCTL_ONE, 3500 + }, 3501 + { 3502 + .procname = "numa_balancing", 3503 + .data = NULL, /* filled in by handler */ 3504 + .maxlen = sizeof(unsigned int), 3505 + .mode = 0644, 3506 + .proc_handler = sysctl_numa_balancing, 3507 + .extra1 = SYSCTL_ZERO, 3508 + .extra2 = SYSCTL_ONE, 3509 + }, 3510 + #endif /* CONFIG_NUMA_BALANCING */ 3511 + #endif /* CONFIG_SCHED_DEBUG */ 3512 + { 3513 + .procname = "sched_rt_period_us", 3514 + .data = &sysctl_sched_rt_period, 3515 + .maxlen = sizeof(unsigned int), 3516 + .mode = 0644, 3517 + .proc_handler = sched_rt_handler, 3518 + }, 3519 + { 3520 + .procname = "sched_rt_runtime_us", 3521 + .data = &sysctl_sched_rt_runtime, 3522 + .maxlen = sizeof(int), 3523 + .mode = 0644, 3524 + .proc_handler = sched_rt_handler, 3525 + }, 3526 + { 3527 + .procname = "sched_rr_timeslice_ms", 3528 + .data = &sysctl_sched_rr_timeslice, 3529 + .maxlen = sizeof(int), 3530 + .mode = 0644, 3531 + .proc_handler = sched_rr_handler, 3532 + }, 3533 + #ifdef CONFIG_UCLAMP_TASK 3534 + { 3535 + .procname = "sched_util_clamp_min", 3536 + .data = &sysctl_sched_uclamp_util_min, 3537 + .maxlen = sizeof(unsigned int), 3538 + .mode = 0644, 3539 + .proc_handler = sysctl_sched_uclamp_handler, 3540 + }, 3541 + { 3542 + .procname = "sched_util_clamp_max", 3543 + .data = &sysctl_sched_uclamp_util_max, 3544 + .maxlen = sizeof(unsigned int), 3545 + .mode = 0644, 3546 + .proc_handler = sysctl_sched_uclamp_handler, 3547 + }, 1668 3548 #endif 3549 + #ifdef CONFIG_SCHED_AUTOGROUP 3550 + { 3551 + .procname = "sched_autogroup_enabled", 3552 + .data = &sysctl_sched_autogroup_enabled, 3553 + .maxlen = sizeof(unsigned int), 3554 + .mode = 0644, 3555 + .proc_handler = proc_dointvec_minmax, 3556 + .extra1 = SYSCTL_ZERO, 3557 + .extra2 = SYSCTL_ONE, 3558 + }, 3559 + #endif 3560 + #ifdef CONFIG_CFS_BANDWIDTH 3561 + { 3562 + .procname = "sched_cfs_bandwidth_slice_us", 3563 + .data = &sysctl_sched_cfs_bandwidth_slice, 3564 + .maxlen = sizeof(unsigned int), 3565 + .mode = 0644, 3566 + .proc_handler = proc_dointvec_minmax, 3567 + .extra1 = SYSCTL_ONE, 3568 + }, 3569 + #endif 3570 + #if defined(CONFIG_ENERGY_MODEL) && defined(CONFIG_CPU_FREQ_GOV_SCHEDUTIL) 3571 + { 3572 + .procname = "sched_energy_aware", 3573 + .data = &sysctl_sched_energy_aware, 3574 + .maxlen = sizeof(unsigned int), 3575 + .mode = 0644, 3576 + .proc_handler = sched_energy_aware_handler, 3577 + .extra1 = SYSCTL_ZERO, 3578 + .extra2 = SYSCTL_ONE, 3579 + }, 3580 + #endif 3581 + #ifdef CONFIG_PROVE_LOCKING 3582 + { 3583 + .procname = "prove_locking", 3584 + .data = &prove_locking, 3585 + .maxlen = sizeof(int), 3586 + .mode = 0644, 3587 + .proc_handler = proc_dointvec, 3588 + }, 3589 + #endif 3590 + #ifdef CONFIG_LOCK_STAT 3591 + { 3592 + .procname = "lock_stat", 3593 + .data = &lock_stat, 3594 + .maxlen = sizeof(int), 3595 + .mode = 0644, 3596 + .proc_handler = proc_dointvec, 3597 + }, 3598 + #endif 3599 + { 3600 + .procname = "panic", 3601 + .data = &panic_timeout, 3602 + .maxlen = sizeof(int), 3603 + .mode = 0644, 3604 + .proc_handler = proc_dointvec, 3605 + }, 3606 + #ifdef CONFIG_COREDUMP 3607 + { 3608 + .procname = "core_uses_pid", 3609 + .data = &core_uses_pid, 3610 + .maxlen = sizeof(int), 3611 + .mode = 0644, 3612 + .proc_handler = proc_dointvec, 3613 + }, 3614 + { 3615 + .procname = "core_pattern", 3616 + .data = core_pattern, 3617 + .maxlen = CORENAME_MAX_SIZE, 3618 + .mode = 0644, 3619 + .proc_handler = proc_dostring_coredump, 3620 + }, 3621 + { 3622 + .procname = "core_pipe_limit", 3623 + .data = &core_pipe_limit, 3624 + .maxlen = sizeof(unsigned int), 3625 + .mode = 0644, 3626 + .proc_handler = proc_dointvec, 3627 + }, 3628 + #endif 3629 + #ifdef CONFIG_PROC_SYSCTL 3630 + { 3631 + .procname = "tainted", 3632 + .maxlen = sizeof(long), 3633 + .mode = 0644, 3634 + .proc_handler = proc_taint, 3635 + }, 3636 + { 3637 + .procname = "sysctl_writes_strict", 3638 + .data = &sysctl_writes_strict, 3639 + .maxlen = sizeof(int), 3640 + .mode = 0644, 3641 + .proc_handler = proc_dointvec_minmax, 3642 + .extra1 = &neg_one, 3643 + .extra2 = SYSCTL_ONE, 3644 + }, 3645 + #endif 3646 + #ifdef CONFIG_LATENCYTOP 3647 + { 3648 + .procname = "latencytop", 3649 + .data = &latencytop_enabled, 3650 + .maxlen = sizeof(int), 3651 + .mode = 0644, 3652 + .proc_handler = sysctl_latencytop, 3653 + }, 3654 + #endif 3655 + #ifdef CONFIG_BLK_DEV_INITRD 3656 + { 3657 + .procname = "real-root-dev", 3658 + .data = &real_root_dev, 3659 + .maxlen = sizeof(int), 3660 + .mode = 0644, 3661 + .proc_handler = proc_dointvec, 3662 + }, 3663 + #endif 3664 + { 3665 + .procname = "print-fatal-signals", 3666 + .data = &print_fatal_signals, 3667 + .maxlen = sizeof(int), 3668 + .mode = 0644, 3669 + .proc_handler = proc_dointvec, 3670 + }, 3671 + #ifdef CONFIG_SPARC 3672 + { 3673 + .procname = "reboot-cmd", 3674 + .data = reboot_command, 3675 + .maxlen = 256, 3676 + .mode = 0644, 3677 + .proc_handler = proc_dostring, 3678 + }, 3679 + { 3680 + .procname = "stop-a", 3681 + .data = &stop_a_enabled, 3682 + .maxlen = sizeof (int), 3683 + .mode = 0644, 3684 + .proc_handler = proc_dointvec, 3685 + }, 3686 + { 3687 + .procname = "scons-poweroff", 3688 + .data = &scons_pwroff, 3689 + .maxlen = sizeof (int), 3690 + .mode = 0644, 3691 + .proc_handler = proc_dointvec, 3692 + }, 3693 + #endif 3694 + #ifdef CONFIG_SPARC64 3695 + { 3696 + .procname = "tsb-ratio", 3697 + .data = &sysctl_tsb_ratio, 3698 + .maxlen = sizeof (int), 3699 + .mode = 0644, 3700 + .proc_handler = proc_dointvec, 3701 + }, 3702 + #endif 3703 + #ifdef CONFIG_PARISC 3704 + { 3705 + .procname = "soft-power", 3706 + .data = &pwrsw_enabled, 3707 + .maxlen = sizeof (int), 3708 + .mode = 0644, 3709 + .proc_handler = proc_dointvec, 3710 + }, 3711 + #endif 3712 + #ifdef CONFIG_SYSCTL_ARCH_UNALIGN_ALLOW 3713 + { 3714 + .procname = "unaligned-trap", 3715 + .data = &unaligned_enabled, 3716 + .maxlen = sizeof (int), 3717 + .mode = 0644, 3718 + .proc_handler = proc_dointvec, 3719 + }, 3720 + #endif 3721 + { 3722 + .procname = "ctrl-alt-del", 3723 + .data = &C_A_D, 3724 + .maxlen = sizeof(int), 3725 + .mode = 0644, 3726 + .proc_handler = proc_dointvec, 3727 + }, 3728 + #ifdef CONFIG_FUNCTION_TRACER 3729 + { 3730 + .procname = "ftrace_enabled", 3731 + .data = &ftrace_enabled, 3732 + .maxlen = sizeof(int), 3733 + .mode = 0644, 3734 + .proc_handler = ftrace_enable_sysctl, 3735 + }, 3736 + #endif 3737 + #ifdef CONFIG_STACK_TRACER 3738 + { 3739 + .procname = "stack_tracer_enabled", 3740 + .data = &stack_tracer_enabled, 3741 + .maxlen = sizeof(int), 3742 + .mode = 0644, 3743 + .proc_handler = stack_trace_sysctl, 3744 + }, 3745 + #endif 3746 + #ifdef CONFIG_TRACING 3747 + { 3748 + .procname = "ftrace_dump_on_oops", 3749 + .data = &ftrace_dump_on_oops, 3750 + .maxlen = sizeof(int), 3751 + .mode = 0644, 3752 + .proc_handler = proc_dointvec, 3753 + }, 3754 + { 3755 + .procname = "traceoff_on_warning", 3756 + .data = &__disable_trace_on_warning, 3757 + .maxlen = sizeof(__disable_trace_on_warning), 3758 + .mode = 0644, 3759 + .proc_handler = proc_dointvec, 3760 + }, 3761 + { 3762 + .procname = "tracepoint_printk", 3763 + .data = &tracepoint_printk, 3764 + .maxlen = sizeof(tracepoint_printk), 3765 + .mode = 0644, 3766 + .proc_handler = tracepoint_printk_sysctl, 3767 + }, 3768 + #endif 3769 + #ifdef CONFIG_KEXEC_CORE 3770 + { 3771 + .procname = "kexec_load_disabled", 3772 + .data = &kexec_load_disabled, 3773 + .maxlen = sizeof(int), 3774 + .mode = 0644, 3775 + /* only handle a transition from default "0" to "1" */ 3776 + .proc_handler = proc_dointvec_minmax, 3777 + .extra1 = SYSCTL_ONE, 3778 + .extra2 = SYSCTL_ONE, 3779 + }, 3780 + #endif 3781 + #ifdef CONFIG_MODULES 3782 + { 3783 + .procname = "modprobe", 3784 + .data = &modprobe_path, 3785 + .maxlen = KMOD_PATH_LEN, 3786 + .mode = 0644, 3787 + .proc_handler = proc_dostring, 3788 + }, 3789 + { 3790 + .procname = "modules_disabled", 3791 + .data = &modules_disabled, 3792 + .maxlen = sizeof(int), 3793 + .mode = 0644, 3794 + /* only handle a transition from default "0" to "1" */ 3795 + .proc_handler = proc_dointvec_minmax, 3796 + .extra1 = SYSCTL_ONE, 3797 + .extra2 = SYSCTL_ONE, 3798 + }, 3799 + #endif 3800 + #ifdef CONFIG_UEVENT_HELPER 3801 + { 3802 + .procname = "hotplug", 3803 + .data = &uevent_helper, 3804 + .maxlen = UEVENT_HELPER_PATH_LEN, 3805 + .mode = 0644, 3806 + .proc_handler = proc_dostring, 3807 + }, 3808 + #endif 3809 + #ifdef CONFIG_CHR_DEV_SG 3810 + { 3811 + .procname = "sg-big-buff", 3812 + .data = &sg_big_buff, 3813 + .maxlen = sizeof (int), 3814 + .mode = 0444, 3815 + .proc_handler = proc_dointvec, 3816 + }, 3817 + #endif 3818 + #ifdef CONFIG_BSD_PROCESS_ACCT 3819 + { 3820 + .procname = "acct", 3821 + .data = &acct_parm, 3822 + .maxlen = 3*sizeof(int), 3823 + .mode = 0644, 3824 + .proc_handler = proc_dointvec, 3825 + }, 3826 + #endif 3827 + #ifdef CONFIG_MAGIC_SYSRQ 3828 + { 3829 + .procname = "sysrq", 3830 + .data = NULL, 3831 + .maxlen = sizeof (int), 3832 + .mode = 0644, 3833 + .proc_handler = sysrq_sysctl_handler, 3834 + }, 3835 + #endif 3836 + #ifdef CONFIG_PROC_SYSCTL 3837 + { 3838 + .procname = "cad_pid", 3839 + .data = NULL, 3840 + .maxlen = sizeof (int), 3841 + .mode = 0600, 3842 + .proc_handler = proc_do_cad_pid, 3843 + }, 3844 + #endif 3845 + { 3846 + .procname = "threads-max", 3847 + .data = NULL, 3848 + .maxlen = sizeof(int), 3849 + .mode = 0644, 3850 + .proc_handler = sysctl_max_threads, 3851 + }, 3852 + { 3853 + .procname = "random", 3854 + .mode = 0555, 3855 + .child = random_table, 3856 + }, 3857 + { 3858 + .procname = "usermodehelper", 3859 + .mode = 0555, 3860 + .child = usermodehelper_table, 3861 + }, 3862 + #ifdef CONFIG_FW_LOADER_USER_HELPER 3863 + { 3864 + .procname = "firmware_config", 3865 + .mode = 0555, 3866 + .child = firmware_config_table, 3867 + }, 3868 + #endif 3869 + { 3870 + .procname = "overflowuid", 3871 + .data = &overflowuid, 3872 + .maxlen = sizeof(int), 3873 + .mode = 0644, 3874 + .proc_handler = proc_dointvec_minmax, 3875 + .extra1 = &minolduid, 3876 + .extra2 = &maxolduid, 3877 + }, 3878 + { 3879 + .procname = "overflowgid", 3880 + .data = &overflowgid, 3881 + .maxlen = sizeof(int), 3882 + .mode = 0644, 3883 + .proc_handler = proc_dointvec_minmax, 3884 + .extra1 = &minolduid, 3885 + .extra2 = &maxolduid, 3886 + }, 3887 + #ifdef CONFIG_S390 3888 + { 3889 + .procname = "userprocess_debug", 3890 + .data = &show_unhandled_signals, 3891 + .maxlen = sizeof(int), 3892 + .mode = 0644, 3893 + .proc_handler = proc_dointvec, 3894 + }, 3895 + #endif 3896 + { 3897 + .procname = "pid_max", 3898 + .data = &pid_max, 3899 + .maxlen = sizeof (int), 3900 + .mode = 0644, 3901 + .proc_handler = proc_dointvec_minmax, 3902 + .extra1 = &pid_max_min, 3903 + .extra2 = &pid_max_max, 3904 + }, 3905 + { 3906 + .procname = "panic_on_oops", 3907 + .data = &panic_on_oops, 3908 + .maxlen = sizeof(int), 3909 + .mode = 0644, 3910 + .proc_handler = proc_dointvec, 3911 + }, 3912 + { 3913 + .procname = "panic_print", 3914 + .data = &panic_print, 3915 + .maxlen = sizeof(unsigned long), 3916 + .mode = 0644, 3917 + .proc_handler = proc_doulongvec_minmax, 3918 + }, 3919 + #if defined CONFIG_PRINTK 3920 + { 3921 + .procname = "printk", 3922 + .data = &console_loglevel, 3923 + .maxlen = 4*sizeof(int), 3924 + .mode = 0644, 3925 + .proc_handler = proc_dointvec, 3926 + }, 3927 + { 3928 + .procname = "printk_ratelimit", 3929 + .data = &printk_ratelimit_state.interval, 3930 + .maxlen = sizeof(int), 3931 + .mode = 0644, 3932 + .proc_handler = proc_dointvec_jiffies, 3933 + }, 3934 + { 3935 + .procname = "printk_ratelimit_burst", 3936 + .data = &printk_ratelimit_state.burst, 3937 + .maxlen = sizeof(int), 3938 + .mode = 0644, 3939 + .proc_handler = proc_dointvec, 3940 + }, 3941 + { 3942 + .procname = "printk_delay", 3943 + .data = &printk_delay_msec, 3944 + .maxlen = sizeof(int), 3945 + .mode = 0644, 3946 + .proc_handler = proc_dointvec_minmax, 3947 + .extra1 = SYSCTL_ZERO, 3948 + .extra2 = &ten_thousand, 3949 + }, 3950 + { 3951 + .procname = "printk_devkmsg", 3952 + .data = devkmsg_log_str, 3953 + .maxlen = DEVKMSG_STR_MAX_SIZE, 3954 + .mode = 0644, 3955 + .proc_handler = devkmsg_sysctl_set_loglvl, 3956 + }, 3957 + { 3958 + .procname = "dmesg_restrict", 3959 + .data = &dmesg_restrict, 3960 + .maxlen = sizeof(int), 3961 + .mode = 0644, 3962 + .proc_handler = proc_dointvec_minmax_sysadmin, 3963 + .extra1 = SYSCTL_ZERO, 3964 + .extra2 = SYSCTL_ONE, 3965 + }, 3966 + { 3967 + .procname = "kptr_restrict", 3968 + .data = &kptr_restrict, 3969 + .maxlen = sizeof(int), 3970 + .mode = 0644, 3971 + .proc_handler = proc_dointvec_minmax_sysadmin, 3972 + .extra1 = SYSCTL_ZERO, 3973 + .extra2 = &two, 3974 + }, 3975 + #endif 3976 + { 3977 + .procname = "ngroups_max", 3978 + .data = &ngroups_max, 3979 + .maxlen = sizeof (int), 3980 + .mode = 0444, 3981 + .proc_handler = proc_dointvec, 3982 + }, 3983 + { 3984 + .procname = "cap_last_cap", 3985 + .data = (void *)&cap_last_cap, 3986 + .maxlen = sizeof(int), 3987 + .mode = 0444, 3988 + .proc_handler = proc_dointvec, 3989 + }, 3990 + #if defined(CONFIG_LOCKUP_DETECTOR) 3991 + { 3992 + .procname = "watchdog", 3993 + .data = &watchdog_user_enabled, 3994 + .maxlen = sizeof(int), 3995 + .mode = 0644, 3996 + .proc_handler = proc_watchdog, 3997 + .extra1 = SYSCTL_ZERO, 3998 + .extra2 = SYSCTL_ONE, 3999 + }, 4000 + { 4001 + .procname = "watchdog_thresh", 4002 + .data = &watchdog_thresh, 4003 + .maxlen = sizeof(int), 4004 + .mode = 0644, 4005 + .proc_handler = proc_watchdog_thresh, 4006 + .extra1 = SYSCTL_ZERO, 4007 + .extra2 = &sixty, 4008 + }, 4009 + { 4010 + .procname = "nmi_watchdog", 4011 + .data = &nmi_watchdog_user_enabled, 4012 + .maxlen = sizeof(int), 4013 + .mode = NMI_WATCHDOG_SYSCTL_PERM, 4014 + .proc_handler = proc_nmi_watchdog, 4015 + .extra1 = SYSCTL_ZERO, 4016 + .extra2 = SYSCTL_ONE, 4017 + }, 4018 + { 4019 + .procname = "watchdog_cpumask", 4020 + .data = &watchdog_cpumask_bits, 4021 + .maxlen = NR_CPUS, 4022 + .mode = 0644, 4023 + .proc_handler = proc_watchdog_cpumask, 4024 + }, 4025 + #ifdef CONFIG_SOFTLOCKUP_DETECTOR 4026 + { 4027 + .procname = "soft_watchdog", 4028 + .data = &soft_watchdog_user_enabled, 4029 + .maxlen = sizeof(int), 4030 + .mode = 0644, 4031 + .proc_handler = proc_soft_watchdog, 4032 + .extra1 = SYSCTL_ZERO, 4033 + .extra2 = SYSCTL_ONE, 4034 + }, 4035 + { 4036 + .procname = "softlockup_panic", 4037 + .data = &softlockup_panic, 4038 + .maxlen = sizeof(int), 4039 + .mode = 0644, 4040 + .proc_handler = proc_dointvec_minmax, 4041 + .extra1 = SYSCTL_ZERO, 4042 + .extra2 = SYSCTL_ONE, 4043 + }, 4044 + #ifdef CONFIG_SMP 4045 + { 4046 + .procname = "softlockup_all_cpu_backtrace", 4047 + .data = &sysctl_softlockup_all_cpu_backtrace, 4048 + .maxlen = sizeof(int), 4049 + .mode = 0644, 4050 + .proc_handler = proc_dointvec_minmax, 4051 + .extra1 = SYSCTL_ZERO, 4052 + .extra2 = SYSCTL_ONE, 4053 + }, 4054 + #endif /* CONFIG_SMP */ 4055 + #endif 4056 + #ifdef CONFIG_HARDLOCKUP_DETECTOR 4057 + { 4058 + .procname = "hardlockup_panic", 4059 + .data = &hardlockup_panic, 4060 + .maxlen = sizeof(int), 4061 + .mode = 0644, 4062 + .proc_handler = proc_dointvec_minmax, 4063 + .extra1 = SYSCTL_ZERO, 4064 + .extra2 = SYSCTL_ONE, 4065 + }, 4066 + #ifdef CONFIG_SMP 4067 + { 4068 + .procname = "hardlockup_all_cpu_backtrace", 4069 + .data = &sysctl_hardlockup_all_cpu_backtrace, 4070 + .maxlen = sizeof(int), 4071 + .mode = 0644, 4072 + .proc_handler = proc_dointvec_minmax, 4073 + .extra1 = SYSCTL_ZERO, 4074 + .extra2 = SYSCTL_ONE, 4075 + }, 4076 + #endif /* CONFIG_SMP */ 4077 + #endif 4078 + #endif 4079 + 4080 + #if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86) 4081 + { 4082 + .procname = "unknown_nmi_panic", 4083 + .data = &unknown_nmi_panic, 4084 + .maxlen = sizeof (int), 4085 + .mode = 0644, 4086 + .proc_handler = proc_dointvec, 4087 + }, 4088 + #endif 4089 + #if defined(CONFIG_X86) 4090 + { 4091 + .procname = "panic_on_unrecovered_nmi", 4092 + .data = &panic_on_unrecovered_nmi, 4093 + .maxlen = sizeof(int), 4094 + .mode = 0644, 4095 + .proc_handler = proc_dointvec, 4096 + }, 4097 + { 4098 + .procname = "panic_on_io_nmi", 4099 + .data = &panic_on_io_nmi, 4100 + .maxlen = sizeof(int), 4101 + .mode = 0644, 4102 + .proc_handler = proc_dointvec, 4103 + }, 4104 + #ifdef CONFIG_DEBUG_STACKOVERFLOW 4105 + { 4106 + .procname = "panic_on_stackoverflow", 4107 + .data = &sysctl_panic_on_stackoverflow, 4108 + .maxlen = sizeof(int), 4109 + .mode = 0644, 4110 + .proc_handler = proc_dointvec, 4111 + }, 4112 + #endif 4113 + { 4114 + .procname = "bootloader_type", 4115 + .data = &bootloader_type, 4116 + .maxlen = sizeof (int), 4117 + .mode = 0444, 4118 + .proc_handler = proc_dointvec, 4119 + }, 4120 + { 4121 + .procname = "bootloader_version", 4122 + .data = &bootloader_version, 4123 + .maxlen = sizeof (int), 4124 + .mode = 0444, 4125 + .proc_handler = proc_dointvec, 4126 + }, 4127 + { 4128 + .procname = "io_delay_type", 4129 + .data = &io_delay_type, 4130 + .maxlen = sizeof(int), 4131 + .mode = 0644, 4132 + .proc_handler = proc_dointvec, 4133 + }, 4134 + #endif 4135 + #if defined(CONFIG_MMU) 4136 + { 4137 + .procname = "randomize_va_space", 4138 + .data = &randomize_va_space, 4139 + .maxlen = sizeof(int), 4140 + .mode = 0644, 4141 + .proc_handler = proc_dointvec, 4142 + }, 4143 + #endif 4144 + #if defined(CONFIG_S390) && defined(CONFIG_SMP) 4145 + { 4146 + .procname = "spin_retry", 4147 + .data = &spin_retry, 4148 + .maxlen = sizeof (int), 4149 + .mode = 0644, 4150 + .proc_handler = proc_dointvec, 4151 + }, 4152 + #endif 4153 + #if defined(CONFIG_ACPI_SLEEP) && defined(CONFIG_X86) 4154 + { 4155 + .procname = "acpi_video_flags", 4156 + .data = &acpi_realmode_flags, 4157 + .maxlen = sizeof (unsigned long), 4158 + .mode = 0644, 4159 + .proc_handler = proc_doulongvec_minmax, 4160 + }, 4161 + #endif 4162 + #ifdef CONFIG_SYSCTL_ARCH_UNALIGN_NO_WARN 4163 + { 4164 + .procname = "ignore-unaligned-usertrap", 4165 + .data = &no_unaligned_warning, 4166 + .maxlen = sizeof (int), 4167 + .mode = 0644, 4168 + .proc_handler = proc_dointvec, 4169 + }, 4170 + #endif 4171 + #ifdef CONFIG_IA64 4172 + { 4173 + .procname = "unaligned-dump-stack", 4174 + .data = &unaligned_dump_stack, 4175 + .maxlen = sizeof (int), 4176 + .mode = 0644, 4177 + .proc_handler = proc_dointvec, 4178 + }, 4179 + #endif 4180 + #ifdef CONFIG_DETECT_HUNG_TASK 4181 + { 4182 + .procname = "hung_task_panic", 4183 + .data = &sysctl_hung_task_panic, 4184 + .maxlen = sizeof(int), 4185 + .mode = 0644, 4186 + .proc_handler = proc_dointvec_minmax, 4187 + .extra1 = SYSCTL_ZERO, 4188 + .extra2 = SYSCTL_ONE, 4189 + }, 4190 + { 4191 + .procname = "hung_task_check_count", 4192 + .data = &sysctl_hung_task_check_count, 4193 + .maxlen = sizeof(int), 4194 + .mode = 0644, 4195 + .proc_handler = proc_dointvec_minmax, 4196 + .extra1 = SYSCTL_ZERO, 4197 + }, 4198 + { 4199 + .procname = "hung_task_timeout_secs", 4200 + .data = &sysctl_hung_task_timeout_secs, 4201 + .maxlen = sizeof(unsigned long), 4202 + .mode = 0644, 4203 + .proc_handler = proc_dohung_task_timeout_secs, 4204 + .extra2 = &hung_task_timeout_max, 4205 + }, 4206 + { 4207 + .procname = "hung_task_check_interval_secs", 4208 + .data = &sysctl_hung_task_check_interval_secs, 4209 + .maxlen = sizeof(unsigned long), 4210 + .mode = 0644, 4211 + .proc_handler = proc_dohung_task_timeout_secs, 4212 + .extra2 = &hung_task_timeout_max, 4213 + }, 4214 + { 4215 + .procname = "hung_task_warnings", 4216 + .data = &sysctl_hung_task_warnings, 4217 + .maxlen = sizeof(int), 4218 + .mode = 0644, 4219 + .proc_handler = proc_dointvec_minmax, 4220 + .extra1 = &neg_one, 4221 + }, 4222 + #endif 4223 + #ifdef CONFIG_RT_MUTEXES 4224 + { 4225 + .procname = "max_lock_depth", 4226 + .data = &max_lock_depth, 4227 + .maxlen = sizeof(int), 4228 + .mode = 0644, 4229 + .proc_handler = proc_dointvec, 4230 + }, 4231 + #endif 4232 + { 4233 + .procname = "poweroff_cmd", 4234 + .data = &poweroff_cmd, 4235 + .maxlen = POWEROFF_CMD_PATH_LEN, 4236 + .mode = 0644, 4237 + .proc_handler = proc_dostring, 4238 + }, 4239 + #ifdef CONFIG_KEYS 4240 + { 4241 + .procname = "keys", 4242 + .mode = 0555, 4243 + .child = key_sysctls, 4244 + }, 4245 + #endif 4246 + #ifdef CONFIG_PERF_EVENTS 4247 + /* 4248 + * User-space scripts rely on the existence of this file 4249 + * as a feature check for perf_events being enabled. 4250 + * 4251 + * So it's an ABI, do not remove! 4252 + */ 4253 + { 4254 + .procname = "perf_event_paranoid", 4255 + .data = &sysctl_perf_event_paranoid, 4256 + .maxlen = sizeof(sysctl_perf_event_paranoid), 4257 + .mode = 0644, 4258 + .proc_handler = proc_dointvec, 4259 + }, 4260 + { 4261 + .procname = "perf_event_mlock_kb", 4262 + .data = &sysctl_perf_event_mlock, 4263 + .maxlen = sizeof(sysctl_perf_event_mlock), 4264 + .mode = 0644, 4265 + .proc_handler = proc_dointvec, 4266 + }, 4267 + { 4268 + .procname = "perf_event_max_sample_rate", 4269 + .data = &sysctl_perf_event_sample_rate, 4270 + .maxlen = sizeof(sysctl_perf_event_sample_rate), 4271 + .mode = 0644, 4272 + .proc_handler = perf_proc_update_handler, 4273 + .extra1 = SYSCTL_ONE, 4274 + }, 4275 + { 4276 + .procname = "perf_cpu_time_max_percent", 4277 + .data = &sysctl_perf_cpu_time_max_percent, 4278 + .maxlen = sizeof(sysctl_perf_cpu_time_max_percent), 4279 + .mode = 0644, 4280 + .proc_handler = perf_cpu_time_max_percent_handler, 4281 + .extra1 = SYSCTL_ZERO, 4282 + .extra2 = &one_hundred, 4283 + }, 4284 + { 4285 + .procname = "perf_event_max_stack", 4286 + .data = &sysctl_perf_event_max_stack, 4287 + .maxlen = sizeof(sysctl_perf_event_max_stack), 4288 + .mode = 0644, 4289 + .proc_handler = perf_event_max_stack_handler, 4290 + .extra1 = SYSCTL_ZERO, 4291 + .extra2 = &six_hundred_forty_kb, 4292 + }, 4293 + { 4294 + .procname = "perf_event_max_contexts_per_stack", 4295 + .data = &sysctl_perf_event_max_contexts_per_stack, 4296 + .maxlen = sizeof(sysctl_perf_event_max_contexts_per_stack), 4297 + .mode = 0644, 4298 + .proc_handler = perf_event_max_stack_handler, 4299 + .extra1 = SYSCTL_ZERO, 4300 + .extra2 = &one_thousand, 4301 + }, 4302 + #endif 4303 + { 4304 + .procname = "panic_on_warn", 4305 + .data = &panic_on_warn, 4306 + .maxlen = sizeof(int), 4307 + .mode = 0644, 4308 + .proc_handler = proc_dointvec_minmax, 4309 + .extra1 = SYSCTL_ZERO, 4310 + .extra2 = SYSCTL_ONE, 4311 + }, 4312 + #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ_COMMON) 4313 + { 4314 + .procname = "timer_migration", 4315 + .data = &sysctl_timer_migration, 4316 + .maxlen = sizeof(unsigned int), 4317 + .mode = 0644, 4318 + .proc_handler = timer_migration_handler, 4319 + .extra1 = SYSCTL_ZERO, 4320 + .extra2 = SYSCTL_ONE, 4321 + }, 4322 + #endif 4323 + #ifdef CONFIG_BPF_SYSCALL 4324 + { 4325 + .procname = "unprivileged_bpf_disabled", 4326 + .data = &sysctl_unprivileged_bpf_disabled, 4327 + .maxlen = sizeof(sysctl_unprivileged_bpf_disabled), 4328 + .mode = 0644, 4329 + /* only handle a transition from default "0" to "1" */ 4330 + .proc_handler = proc_dointvec_minmax, 4331 + .extra1 = SYSCTL_ONE, 4332 + .extra2 = SYSCTL_ONE, 4333 + }, 4334 + { 4335 + .procname = "bpf_stats_enabled", 4336 + .data = &bpf_stats_enabled_key.key, 4337 + .maxlen = sizeof(bpf_stats_enabled_key), 4338 + .mode = 0644, 4339 + .proc_handler = proc_do_static_key, 4340 + }, 4341 + #endif 4342 + #if defined(CONFIG_TREE_RCU) 4343 + { 4344 + .procname = "panic_on_rcu_stall", 4345 + .data = &sysctl_panic_on_rcu_stall, 4346 + .maxlen = sizeof(sysctl_panic_on_rcu_stall), 4347 + .mode = 0644, 4348 + .proc_handler = proc_dointvec_minmax, 4349 + .extra1 = SYSCTL_ZERO, 4350 + .extra2 = SYSCTL_ONE, 4351 + }, 4352 + #endif 4353 + #ifdef CONFIG_STACKLEAK_RUNTIME_DISABLE 4354 + { 4355 + .procname = "stack_erasing", 4356 + .data = NULL, 4357 + .maxlen = sizeof(int), 4358 + .mode = 0600, 4359 + .proc_handler = stack_erasing_sysctl, 4360 + .extra1 = SYSCTL_ZERO, 4361 + .extra2 = SYSCTL_ONE, 4362 + }, 4363 + #endif 4364 + { } 4365 + }; 4366 + 4367 + static struct ctl_table vm_table[] = { 4368 + { 4369 + .procname = "overcommit_memory", 4370 + .data = &sysctl_overcommit_memory, 4371 + .maxlen = sizeof(sysctl_overcommit_memory), 4372 + .mode = 0644, 4373 + .proc_handler = proc_dointvec_minmax, 4374 + .extra1 = SYSCTL_ZERO, 4375 + .extra2 = &two, 4376 + }, 4377 + { 4378 + .procname = "panic_on_oom", 4379 + .data = &sysctl_panic_on_oom, 4380 + .maxlen = sizeof(sysctl_panic_on_oom), 4381 + .mode = 0644, 4382 + .proc_handler = proc_dointvec_minmax, 4383 + .extra1 = SYSCTL_ZERO, 4384 + .extra2 = &two, 4385 + }, 4386 + { 4387 + .procname = "oom_kill_allocating_task", 4388 + .data = &sysctl_oom_kill_allocating_task, 4389 + .maxlen = sizeof(sysctl_oom_kill_allocating_task), 4390 + .mode = 0644, 4391 + .proc_handler = proc_dointvec, 4392 + }, 4393 + { 4394 + .procname = "oom_dump_tasks", 4395 + .data = &sysctl_oom_dump_tasks, 4396 + .maxlen = sizeof(sysctl_oom_dump_tasks), 4397 + .mode = 0644, 4398 + .proc_handler = proc_dointvec, 4399 + }, 4400 + { 4401 + .procname = "overcommit_ratio", 4402 + .data = &sysctl_overcommit_ratio, 4403 + .maxlen = sizeof(sysctl_overcommit_ratio), 4404 + .mode = 0644, 4405 + .proc_handler = overcommit_ratio_handler, 4406 + }, 4407 + { 4408 + .procname = "overcommit_kbytes", 4409 + .data = &sysctl_overcommit_kbytes, 4410 + .maxlen = sizeof(sysctl_overcommit_kbytes), 4411 + .mode = 0644, 4412 + .proc_handler = overcommit_kbytes_handler, 4413 + }, 4414 + { 4415 + .procname = "page-cluster", 4416 + .data = &page_cluster, 4417 + .maxlen = sizeof(int), 4418 + .mode = 0644, 4419 + .proc_handler = proc_dointvec_minmax, 4420 + .extra1 = SYSCTL_ZERO, 4421 + }, 4422 + { 4423 + .procname = "dirty_background_ratio", 4424 + .data = &dirty_background_ratio, 4425 + .maxlen = sizeof(dirty_background_ratio), 4426 + .mode = 0644, 4427 + .proc_handler = dirty_background_ratio_handler, 4428 + .extra1 = SYSCTL_ZERO, 4429 + .extra2 = &one_hundred, 4430 + }, 4431 + { 4432 + .procname = "dirty_background_bytes", 4433 + .data = &dirty_background_bytes, 4434 + .maxlen = sizeof(dirty_background_bytes), 4435 + .mode = 0644, 4436 + .proc_handler = dirty_background_bytes_handler, 4437 + .extra1 = &one_ul, 4438 + }, 4439 + { 4440 + .procname = "dirty_ratio", 4441 + .data = &vm_dirty_ratio, 4442 + .maxlen = sizeof(vm_dirty_ratio), 4443 + .mode = 0644, 4444 + .proc_handler = dirty_ratio_handler, 4445 + .extra1 = SYSCTL_ZERO, 4446 + .extra2 = &one_hundred, 4447 + }, 4448 + { 4449 + .procname = "dirty_bytes", 4450 + .data = &vm_dirty_bytes, 4451 + .maxlen = sizeof(vm_dirty_bytes), 4452 + .mode = 0644, 4453 + .proc_handler = dirty_bytes_handler, 4454 + .extra1 = &dirty_bytes_min, 4455 + }, 4456 + { 4457 + .procname = "dirty_writeback_centisecs", 4458 + .data = &dirty_writeback_interval, 4459 + .maxlen = sizeof(dirty_writeback_interval), 4460 + .mode = 0644, 4461 + .proc_handler = dirty_writeback_centisecs_handler, 4462 + }, 4463 + { 4464 + .procname = "dirty_expire_centisecs", 4465 + .data = &dirty_expire_interval, 4466 + .maxlen = sizeof(dirty_expire_interval), 4467 + .mode = 0644, 4468 + .proc_handler = proc_dointvec_minmax, 4469 + .extra1 = SYSCTL_ZERO, 4470 + }, 4471 + { 4472 + .procname = "dirtytime_expire_seconds", 4473 + .data = &dirtytime_expire_interval, 4474 + .maxlen = sizeof(dirtytime_expire_interval), 4475 + .mode = 0644, 4476 + .proc_handler = dirtytime_interval_handler, 4477 + .extra1 = SYSCTL_ZERO, 4478 + }, 4479 + { 4480 + .procname = "swappiness", 4481 + .data = &vm_swappiness, 4482 + .maxlen = sizeof(vm_swappiness), 4483 + .mode = 0644, 4484 + .proc_handler = proc_dointvec_minmax, 4485 + .extra1 = SYSCTL_ZERO, 4486 + .extra2 = &one_hundred, 4487 + }, 4488 + #ifdef CONFIG_HUGETLB_PAGE 4489 + { 4490 + .procname = "nr_hugepages", 4491 + .data = NULL, 4492 + .maxlen = sizeof(unsigned long), 4493 + .mode = 0644, 4494 + .proc_handler = hugetlb_sysctl_handler, 4495 + }, 4496 + #ifdef CONFIG_NUMA 4497 + { 4498 + .procname = "nr_hugepages_mempolicy", 4499 + .data = NULL, 4500 + .maxlen = sizeof(unsigned long), 4501 + .mode = 0644, 4502 + .proc_handler = &hugetlb_mempolicy_sysctl_handler, 4503 + }, 4504 + { 4505 + .procname = "numa_stat", 4506 + .data = &sysctl_vm_numa_stat, 4507 + .maxlen = sizeof(int), 4508 + .mode = 0644, 4509 + .proc_handler = sysctl_vm_numa_stat_handler, 4510 + .extra1 = SYSCTL_ZERO, 4511 + .extra2 = SYSCTL_ONE, 4512 + }, 4513 + #endif 4514 + { 4515 + .procname = "hugetlb_shm_group", 4516 + .data = &sysctl_hugetlb_shm_group, 4517 + .maxlen = sizeof(gid_t), 4518 + .mode = 0644, 4519 + .proc_handler = proc_dointvec, 4520 + }, 4521 + { 4522 + .procname = "nr_overcommit_hugepages", 4523 + .data = NULL, 4524 + .maxlen = sizeof(unsigned long), 4525 + .mode = 0644, 4526 + .proc_handler = hugetlb_overcommit_handler, 4527 + }, 4528 + #endif 4529 + { 4530 + .procname = "lowmem_reserve_ratio", 4531 + .data = &sysctl_lowmem_reserve_ratio, 4532 + .maxlen = sizeof(sysctl_lowmem_reserve_ratio), 4533 + .mode = 0644, 4534 + .proc_handler = lowmem_reserve_ratio_sysctl_handler, 4535 + }, 4536 + { 4537 + .procname = "drop_caches", 4538 + .data = &sysctl_drop_caches, 4539 + .maxlen = sizeof(int), 4540 + .mode = 0200, 4541 + .proc_handler = drop_caches_sysctl_handler, 4542 + .extra1 = SYSCTL_ONE, 4543 + .extra2 = &four, 4544 + }, 4545 + #ifdef CONFIG_COMPACTION 4546 + { 4547 + .procname = "compact_memory", 4548 + .data = &sysctl_compact_memory, 4549 + .maxlen = sizeof(int), 4550 + .mode = 0200, 4551 + .proc_handler = sysctl_compaction_handler, 4552 + }, 4553 + { 4554 + .procname = "extfrag_threshold", 4555 + .data = &sysctl_extfrag_threshold, 4556 + .maxlen = sizeof(int), 4557 + .mode = 0644, 4558 + .proc_handler = proc_dointvec_minmax, 4559 + .extra1 = &min_extfrag_threshold, 4560 + .extra2 = &max_extfrag_threshold, 4561 + }, 4562 + { 4563 + .procname = "compact_unevictable_allowed", 4564 + .data = &sysctl_compact_unevictable_allowed, 4565 + .maxlen = sizeof(int), 4566 + .mode = 0644, 4567 + .proc_handler = proc_dointvec_minmax_warn_RT_change, 4568 + .extra1 = SYSCTL_ZERO, 4569 + .extra2 = SYSCTL_ONE, 4570 + }, 4571 + 4572 + #endif /* CONFIG_COMPACTION */ 4573 + { 4574 + .procname = "min_free_kbytes", 4575 + .data = &min_free_kbytes, 4576 + .maxlen = sizeof(min_free_kbytes), 4577 + .mode = 0644, 4578 + .proc_handler = min_free_kbytes_sysctl_handler, 4579 + .extra1 = SYSCTL_ZERO, 4580 + }, 4581 + { 4582 + .procname = "watermark_boost_factor", 4583 + .data = &watermark_boost_factor, 4584 + .maxlen = sizeof(watermark_boost_factor), 4585 + .mode = 0644, 4586 + .proc_handler = proc_dointvec_minmax, 4587 + .extra1 = SYSCTL_ZERO, 4588 + }, 4589 + { 4590 + .procname = "watermark_scale_factor", 4591 + .data = &watermark_scale_factor, 4592 + .maxlen = sizeof(watermark_scale_factor), 4593 + .mode = 0644, 4594 + .proc_handler = watermark_scale_factor_sysctl_handler, 4595 + .extra1 = SYSCTL_ONE, 4596 + .extra2 = &one_thousand, 4597 + }, 4598 + { 4599 + .procname = "percpu_pagelist_fraction", 4600 + .data = &percpu_pagelist_fraction, 4601 + .maxlen = sizeof(percpu_pagelist_fraction), 4602 + .mode = 0644, 4603 + .proc_handler = percpu_pagelist_fraction_sysctl_handler, 4604 + .extra1 = SYSCTL_ZERO, 4605 + }, 4606 + #ifdef CONFIG_MMU 4607 + { 4608 + .procname = "max_map_count", 4609 + .data = &sysctl_max_map_count, 4610 + .maxlen = sizeof(sysctl_max_map_count), 4611 + .mode = 0644, 4612 + .proc_handler = proc_dointvec_minmax, 4613 + .extra1 = SYSCTL_ZERO, 4614 + }, 4615 + #else 4616 + { 4617 + .procname = "nr_trim_pages", 4618 + .data = &sysctl_nr_trim_pages, 4619 + .maxlen = sizeof(sysctl_nr_trim_pages), 4620 + .mode = 0644, 4621 + .proc_handler = proc_dointvec_minmax, 4622 + .extra1 = SYSCTL_ZERO, 4623 + }, 4624 + #endif 4625 + { 4626 + .procname = "laptop_mode", 4627 + .data = &laptop_mode, 4628 + .maxlen = sizeof(laptop_mode), 4629 + .mode = 0644, 4630 + .proc_handler = proc_dointvec_jiffies, 4631 + }, 4632 + { 4633 + .procname = "block_dump", 4634 + .data = &block_dump, 4635 + .maxlen = sizeof(block_dump), 4636 + .mode = 0644, 4637 + .proc_handler = proc_dointvec, 4638 + .extra1 = SYSCTL_ZERO, 4639 + }, 4640 + { 4641 + .procname = "vfs_cache_pressure", 4642 + .data = &sysctl_vfs_cache_pressure, 4643 + .maxlen = sizeof(sysctl_vfs_cache_pressure), 4644 + .mode = 0644, 4645 + .proc_handler = proc_dointvec, 4646 + .extra1 = SYSCTL_ZERO, 4647 + }, 4648 + #if defined(HAVE_ARCH_PICK_MMAP_LAYOUT) || \ 4649 + defined(CONFIG_ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT) 4650 + { 4651 + .procname = "legacy_va_layout", 4652 + .data = &sysctl_legacy_va_layout, 4653 + .maxlen = sizeof(sysctl_legacy_va_layout), 4654 + .mode = 0644, 4655 + .proc_handler = proc_dointvec, 4656 + .extra1 = SYSCTL_ZERO, 4657 + }, 4658 + #endif 4659 + #ifdef CONFIG_NUMA 4660 + { 4661 + .procname = "zone_reclaim_mode", 4662 + .data = &node_reclaim_mode, 4663 + .maxlen = sizeof(node_reclaim_mode), 4664 + .mode = 0644, 4665 + .proc_handler = proc_dointvec, 4666 + .extra1 = SYSCTL_ZERO, 4667 + }, 4668 + { 4669 + .procname = "min_unmapped_ratio", 4670 + .data = &sysctl_min_unmapped_ratio, 4671 + .maxlen = sizeof(sysctl_min_unmapped_ratio), 4672 + .mode = 0644, 4673 + .proc_handler = sysctl_min_unmapped_ratio_sysctl_handler, 4674 + .extra1 = SYSCTL_ZERO, 4675 + .extra2 = &one_hundred, 4676 + }, 4677 + { 4678 + .procname = "min_slab_ratio", 4679 + .data = &sysctl_min_slab_ratio, 4680 + .maxlen = sizeof(sysctl_min_slab_ratio), 4681 + .mode = 0644, 4682 + .proc_handler = sysctl_min_slab_ratio_sysctl_handler, 4683 + .extra1 = SYSCTL_ZERO, 4684 + .extra2 = &one_hundred, 4685 + }, 4686 + #endif 4687 + #ifdef CONFIG_SMP 4688 + { 4689 + .procname = "stat_interval", 4690 + .data = &sysctl_stat_interval, 4691 + .maxlen = sizeof(sysctl_stat_interval), 4692 + .mode = 0644, 4693 + .proc_handler = proc_dointvec_jiffies, 4694 + }, 4695 + { 4696 + .procname = "stat_refresh", 4697 + .data = NULL, 4698 + .maxlen = 0, 4699 + .mode = 0600, 4700 + .proc_handler = vmstat_refresh, 4701 + }, 4702 + #endif 4703 + #ifdef CONFIG_MMU 4704 + { 4705 + .procname = "mmap_min_addr", 4706 + .data = &dac_mmap_min_addr, 4707 + .maxlen = sizeof(unsigned long), 4708 + .mode = 0644, 4709 + .proc_handler = mmap_min_addr_handler, 4710 + }, 4711 + #endif 4712 + #ifdef CONFIG_NUMA 4713 + { 4714 + .procname = "numa_zonelist_order", 4715 + .data = &numa_zonelist_order, 4716 + .maxlen = NUMA_ZONELIST_ORDER_LEN, 4717 + .mode = 0644, 4718 + .proc_handler = numa_zonelist_order_handler, 4719 + }, 4720 + #endif 4721 + #if (defined(CONFIG_X86_32) && !defined(CONFIG_UML))|| \ 4722 + (defined(CONFIG_SUPERH) && defined(CONFIG_VSYSCALL)) 4723 + { 4724 + .procname = "vdso_enabled", 4725 + #ifdef CONFIG_X86_32 4726 + .data = &vdso32_enabled, 4727 + .maxlen = sizeof(vdso32_enabled), 4728 + #else 4729 + .data = &vdso_enabled, 4730 + .maxlen = sizeof(vdso_enabled), 4731 + #endif 4732 + .mode = 0644, 4733 + .proc_handler = proc_dointvec, 4734 + .extra1 = SYSCTL_ZERO, 4735 + }, 4736 + #endif 4737 + #ifdef CONFIG_HIGHMEM 4738 + { 4739 + .procname = "highmem_is_dirtyable", 4740 + .data = &vm_highmem_is_dirtyable, 4741 + .maxlen = sizeof(vm_highmem_is_dirtyable), 4742 + .mode = 0644, 4743 + .proc_handler = proc_dointvec_minmax, 4744 + .extra1 = SYSCTL_ZERO, 4745 + .extra2 = SYSCTL_ONE, 4746 + }, 4747 + #endif 4748 + #ifdef CONFIG_MEMORY_FAILURE 4749 + { 4750 + .procname = "memory_failure_early_kill", 4751 + .data = &sysctl_memory_failure_early_kill, 4752 + .maxlen = sizeof(sysctl_memory_failure_early_kill), 4753 + .mode = 0644, 4754 + .proc_handler = proc_dointvec_minmax, 4755 + .extra1 = SYSCTL_ZERO, 4756 + .extra2 = SYSCTL_ONE, 4757 + }, 4758 + { 4759 + .procname = "memory_failure_recovery", 4760 + .data = &sysctl_memory_failure_recovery, 4761 + .maxlen = sizeof(sysctl_memory_failure_recovery), 4762 + .mode = 0644, 4763 + .proc_handler = proc_dointvec_minmax, 4764 + .extra1 = SYSCTL_ZERO, 4765 + .extra2 = SYSCTL_ONE, 4766 + }, 4767 + #endif 4768 + { 4769 + .procname = "user_reserve_kbytes", 4770 + .data = &sysctl_user_reserve_kbytes, 4771 + .maxlen = sizeof(sysctl_user_reserve_kbytes), 4772 + .mode = 0644, 4773 + .proc_handler = proc_doulongvec_minmax, 4774 + }, 4775 + { 4776 + .procname = "admin_reserve_kbytes", 4777 + .data = &sysctl_admin_reserve_kbytes, 4778 + .maxlen = sizeof(sysctl_admin_reserve_kbytes), 4779 + .mode = 0644, 4780 + .proc_handler = proc_doulongvec_minmax, 4781 + }, 4782 + #ifdef CONFIG_HAVE_ARCH_MMAP_RND_BITS 4783 + { 4784 + .procname = "mmap_rnd_bits", 4785 + .data = &mmap_rnd_bits, 4786 + .maxlen = sizeof(mmap_rnd_bits), 4787 + .mode = 0600, 4788 + .proc_handler = proc_dointvec_minmax, 4789 + .extra1 = (void *)&mmap_rnd_bits_min, 4790 + .extra2 = (void *)&mmap_rnd_bits_max, 4791 + }, 4792 + #endif 4793 + #ifdef CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS 4794 + { 4795 + .procname = "mmap_rnd_compat_bits", 4796 + .data = &mmap_rnd_compat_bits, 4797 + .maxlen = sizeof(mmap_rnd_compat_bits), 4798 + .mode = 0600, 4799 + .proc_handler = proc_dointvec_minmax, 4800 + .extra1 = (void *)&mmap_rnd_compat_bits_min, 4801 + .extra2 = (void *)&mmap_rnd_compat_bits_max, 4802 + }, 4803 + #endif 4804 + #ifdef CONFIG_USERFAULTFD 4805 + { 4806 + .procname = "unprivileged_userfaultfd", 4807 + .data = &sysctl_unprivileged_userfaultfd, 4808 + .maxlen = sizeof(sysctl_unprivileged_userfaultfd), 4809 + .mode = 0644, 4810 + .proc_handler = proc_dointvec_minmax, 4811 + .extra1 = SYSCTL_ZERO, 4812 + .extra2 = SYSCTL_ONE, 4813 + }, 4814 + #endif 4815 + { } 4816 + }; 4817 + 4818 + static struct ctl_table fs_table[] = { 4819 + { 4820 + .procname = "inode-nr", 4821 + .data = &inodes_stat, 4822 + .maxlen = 2*sizeof(long), 4823 + .mode = 0444, 4824 + .proc_handler = proc_nr_inodes, 4825 + }, 4826 + { 4827 + .procname = "inode-state", 4828 + .data = &inodes_stat, 4829 + .maxlen = 7*sizeof(long), 4830 + .mode = 0444, 4831 + .proc_handler = proc_nr_inodes, 4832 + }, 4833 + { 4834 + .procname = "file-nr", 4835 + .data = &files_stat, 4836 + .maxlen = sizeof(files_stat), 4837 + .mode = 0444, 4838 + .proc_handler = proc_nr_files, 4839 + }, 4840 + { 4841 + .procname = "file-max", 4842 + .data = &files_stat.max_files, 4843 + .maxlen = sizeof(files_stat.max_files), 4844 + .mode = 0644, 4845 + .proc_handler = proc_doulongvec_minmax, 4846 + .extra1 = &zero_ul, 4847 + .extra2 = &long_max, 4848 + }, 4849 + { 4850 + .procname = "nr_open", 4851 + .data = &sysctl_nr_open, 4852 + .maxlen = sizeof(unsigned int), 4853 + .mode = 0644, 4854 + .proc_handler = proc_dointvec_minmax, 4855 + .extra1 = &sysctl_nr_open_min, 4856 + .extra2 = &sysctl_nr_open_max, 4857 + }, 4858 + { 4859 + .procname = "dentry-state", 4860 + .data = &dentry_stat, 4861 + .maxlen = 6*sizeof(long), 4862 + .mode = 0444, 4863 + .proc_handler = proc_nr_dentry, 4864 + }, 4865 + { 4866 + .procname = "overflowuid", 4867 + .data = &fs_overflowuid, 4868 + .maxlen = sizeof(int), 4869 + .mode = 0644, 4870 + .proc_handler = proc_dointvec_minmax, 4871 + .extra1 = &minolduid, 4872 + .extra2 = &maxolduid, 4873 + }, 4874 + { 4875 + .procname = "overflowgid", 4876 + .data = &fs_overflowgid, 4877 + .maxlen = sizeof(int), 4878 + .mode = 0644, 4879 + .proc_handler = proc_dointvec_minmax, 4880 + .extra1 = &minolduid, 4881 + .extra2 = &maxolduid, 4882 + }, 4883 + #ifdef CONFIG_FILE_LOCKING 4884 + { 4885 + .procname = "leases-enable", 4886 + .data = &leases_enable, 4887 + .maxlen = sizeof(int), 4888 + .mode = 0644, 4889 + .proc_handler = proc_dointvec, 4890 + }, 4891 + #endif 4892 + #ifdef CONFIG_DNOTIFY 4893 + { 4894 + .procname = "dir-notify-enable", 4895 + .data = &dir_notify_enable, 4896 + .maxlen = sizeof(int), 4897 + .mode = 0644, 4898 + .proc_handler = proc_dointvec, 4899 + }, 4900 + #endif 4901 + #ifdef CONFIG_MMU 4902 + #ifdef CONFIG_FILE_LOCKING 4903 + { 4904 + .procname = "lease-break-time", 4905 + .data = &lease_break_time, 4906 + .maxlen = sizeof(int), 4907 + .mode = 0644, 4908 + .proc_handler = proc_dointvec, 4909 + }, 4910 + #endif 4911 + #ifdef CONFIG_AIO 4912 + { 4913 + .procname = "aio-nr", 4914 + .data = &aio_nr, 4915 + .maxlen = sizeof(aio_nr), 4916 + .mode = 0444, 4917 + .proc_handler = proc_doulongvec_minmax, 4918 + }, 4919 + { 4920 + .procname = "aio-max-nr", 4921 + .data = &aio_max_nr, 4922 + .maxlen = sizeof(aio_max_nr), 4923 + .mode = 0644, 4924 + .proc_handler = proc_doulongvec_minmax, 4925 + }, 4926 + #endif /* CONFIG_AIO */ 4927 + #ifdef CONFIG_INOTIFY_USER 4928 + { 4929 + .procname = "inotify", 4930 + .mode = 0555, 4931 + .child = inotify_table, 4932 + }, 4933 + #endif 4934 + #ifdef CONFIG_EPOLL 4935 + { 4936 + .procname = "epoll", 4937 + .mode = 0555, 4938 + .child = epoll_table, 4939 + }, 4940 + #endif 4941 + #endif 4942 + { 4943 + .procname = "protected_symlinks", 4944 + .data = &sysctl_protected_symlinks, 4945 + .maxlen = sizeof(int), 4946 + .mode = 0600, 4947 + .proc_handler = proc_dointvec_minmax, 4948 + .extra1 = SYSCTL_ZERO, 4949 + .extra2 = SYSCTL_ONE, 4950 + }, 4951 + { 4952 + .procname = "protected_hardlinks", 4953 + .data = &sysctl_protected_hardlinks, 4954 + .maxlen = sizeof(int), 4955 + .mode = 0600, 4956 + .proc_handler = proc_dointvec_minmax, 4957 + .extra1 = SYSCTL_ZERO, 4958 + .extra2 = SYSCTL_ONE, 4959 + }, 4960 + { 4961 + .procname = "protected_fifos", 4962 + .data = &sysctl_protected_fifos, 4963 + .maxlen = sizeof(int), 4964 + .mode = 0600, 4965 + .proc_handler = proc_dointvec_minmax, 4966 + .extra1 = SYSCTL_ZERO, 4967 + .extra2 = &two, 4968 + }, 4969 + { 4970 + .procname = "protected_regular", 4971 + .data = &sysctl_protected_regular, 4972 + .maxlen = sizeof(int), 4973 + .mode = 0600, 4974 + .proc_handler = proc_dointvec_minmax, 4975 + .extra1 = SYSCTL_ZERO, 4976 + .extra2 = &two, 4977 + }, 4978 + { 4979 + .procname = "suid_dumpable", 4980 + .data = &suid_dumpable, 4981 + .maxlen = sizeof(int), 4982 + .mode = 0644, 4983 + .proc_handler = proc_dointvec_minmax_coredump, 4984 + .extra1 = SYSCTL_ZERO, 4985 + .extra2 = &two, 4986 + }, 4987 + #if defined(CONFIG_BINFMT_MISC) || defined(CONFIG_BINFMT_MISC_MODULE) 4988 + { 4989 + .procname = "binfmt_misc", 4990 + .mode = 0555, 4991 + .child = sysctl_mount_point, 4992 + }, 4993 + #endif 4994 + { 4995 + .procname = "pipe-max-size", 4996 + .data = &pipe_max_size, 4997 + .maxlen = sizeof(pipe_max_size), 4998 + .mode = 0644, 4999 + .proc_handler = proc_dopipe_max_size, 5000 + }, 5001 + { 5002 + .procname = "pipe-user-pages-hard", 5003 + .data = &pipe_user_pages_hard, 5004 + .maxlen = sizeof(pipe_user_pages_hard), 5005 + .mode = 0644, 5006 + .proc_handler = proc_doulongvec_minmax, 5007 + }, 5008 + { 5009 + .procname = "pipe-user-pages-soft", 5010 + .data = &pipe_user_pages_soft, 5011 + .maxlen = sizeof(pipe_user_pages_soft), 5012 + .mode = 0644, 5013 + .proc_handler = proc_doulongvec_minmax, 5014 + }, 5015 + { 5016 + .procname = "mount-max", 5017 + .data = &sysctl_mount_max, 5018 + .maxlen = sizeof(unsigned int), 5019 + .mode = 0644, 5020 + .proc_handler = proc_dointvec_minmax, 5021 + .extra1 = SYSCTL_ONE, 5022 + }, 5023 + { } 5024 + }; 5025 + 5026 + static struct ctl_table debug_table[] = { 5027 + #ifdef CONFIG_SYSCTL_EXCEPTION_TRACE 5028 + { 5029 + .procname = "exception-trace", 5030 + .data = &show_unhandled_signals, 5031 + .maxlen = sizeof(int), 5032 + .mode = 0644, 5033 + .proc_handler = proc_dointvec 5034 + }, 5035 + #endif 5036 + #if defined(CONFIG_OPTPROBES) 5037 + { 5038 + .procname = "kprobes-optimization", 5039 + .data = &sysctl_kprobes_optimization, 5040 + .maxlen = sizeof(int), 5041 + .mode = 0644, 5042 + .proc_handler = proc_kprobes_optimization_handler, 5043 + .extra1 = SYSCTL_ZERO, 5044 + .extra2 = SYSCTL_ONE, 5045 + }, 5046 + #endif 5047 + { } 5048 + }; 5049 + 5050 + static struct ctl_table dev_table[] = { 5051 + { } 5052 + }; 5053 + 5054 + static struct ctl_table sysctl_base_table[] = { 5055 + { 5056 + .procname = "kernel", 5057 + .mode = 0555, 5058 + .child = kern_table, 5059 + }, 5060 + { 5061 + .procname = "vm", 5062 + .mode = 0555, 5063 + .child = vm_table, 5064 + }, 5065 + { 5066 + .procname = "fs", 5067 + .mode = 0555, 5068 + .child = fs_table, 5069 + }, 5070 + { 5071 + .procname = "debug", 5072 + .mode = 0555, 5073 + .child = debug_table, 5074 + }, 5075 + { 5076 + .procname = "dev", 5077 + .mode = 0555, 5078 + .child = dev_table, 5079 + }, 5080 + { } 5081 + }; 5082 + 5083 + int __init sysctl_init(void) 5084 + { 5085 + struct ctl_table_header *hdr; 5086 + 5087 + hdr = register_sysctl_table(sysctl_base_table); 5088 + kmemleak_not_leak(hdr); 5089 + return 0; 5090 + } 5091 + #endif /* CONFIG_SYSCTL */ 1669 5092 /* 1670 5093 * No sense putting this after each symbol definition, twice, 1671 5094 * exception granted :-)