LCOV - code coverage report
Current view: top level - kernel/printk - sysctl.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 3 6 50.0 %
Date: 2023-03-27 20:00:47 Functions: 1 2 50.0 %

          Line data    Source code
       1             : // SPDX-License-Identifier: GPL-2.0-only
       2             : /*
       3             :  * sysctl.c: General linux system control interface
       4             :  */
       5             : 
       6             : #include <linux/sysctl.h>
       7             : #include <linux/printk.h>
       8             : #include <linux/capability.h>
       9             : #include <linux/ratelimit.h>
      10             : #include "internal.h"
      11             : 
      12             : static const int ten_thousand = 10000;
      13             : 
      14           0 : static int proc_dointvec_minmax_sysadmin(struct ctl_table *table, int write,
      15             :                                 void *buffer, size_t *lenp, loff_t *ppos)
      16             : {
      17           0 :         if (write && !capable(CAP_SYS_ADMIN))
      18             :                 return -EPERM;
      19             : 
      20           0 :         return proc_dointvec_minmax(table, write, buffer, lenp, ppos);
      21             : }
      22             : 
      23             : static struct ctl_table printk_sysctls[] = {
      24             :         {
      25             :                 .procname       = "printk",
      26             :                 .data           = &console_loglevel,
      27             :                 .maxlen         = 4*sizeof(int),
      28             :                 .mode           = 0644,
      29             :                 .proc_handler   = proc_dointvec,
      30             :         },
      31             :         {
      32             :                 .procname       = "printk_ratelimit",
      33             :                 .data           = &printk_ratelimit_state.interval,
      34             :                 .maxlen         = sizeof(int),
      35             :                 .mode           = 0644,
      36             :                 .proc_handler   = proc_dointvec_jiffies,
      37             :         },
      38             :         {
      39             :                 .procname       = "printk_ratelimit_burst",
      40             :                 .data           = &printk_ratelimit_state.burst,
      41             :                 .maxlen         = sizeof(int),
      42             :                 .mode           = 0644,
      43             :                 .proc_handler   = proc_dointvec,
      44             :         },
      45             :         {
      46             :                 .procname       = "printk_delay",
      47             :                 .data           = &printk_delay_msec,
      48             :                 .maxlen         = sizeof(int),
      49             :                 .mode           = 0644,
      50             :                 .proc_handler   = proc_dointvec_minmax,
      51             :                 .extra1         = SYSCTL_ZERO,
      52             :                 .extra2         = (void *)&ten_thousand,
      53             :         },
      54             :         {
      55             :                 .procname       = "printk_devkmsg",
      56             :                 .data           = devkmsg_log_str,
      57             :                 .maxlen         = DEVKMSG_STR_MAX_SIZE,
      58             :                 .mode           = 0644,
      59             :                 .proc_handler   = devkmsg_sysctl_set_loglvl,
      60             :         },
      61             :         {
      62             :                 .procname       = "dmesg_restrict",
      63             :                 .data           = &dmesg_restrict,
      64             :                 .maxlen         = sizeof(int),
      65             :                 .mode           = 0644,
      66             :                 .proc_handler   = proc_dointvec_minmax_sysadmin,
      67             :                 .extra1         = SYSCTL_ZERO,
      68             :                 .extra2         = SYSCTL_ONE,
      69             :         },
      70             :         {
      71             :                 .procname       = "kptr_restrict",
      72             :                 .data           = &kptr_restrict,
      73             :                 .maxlen         = sizeof(int),
      74             :                 .mode           = 0644,
      75             :                 .proc_handler   = proc_dointvec_minmax_sysadmin,
      76             :                 .extra1         = SYSCTL_ZERO,
      77             :                 .extra2         = SYSCTL_TWO,
      78             :         },
      79             :         {}
      80             : };
      81             : 
      82           1 : void __init printk_sysctl_init(void)
      83             : {
      84           1 :         register_sysctl_init("kernel", printk_sysctls);
      85           1 : }

Generated by: LCOV version 1.14