#include <linux/module.h>
#include <linux/ipc.h>
#include <linux/nsproxy.h>
#include <linux/sysctl.h>
#include <linux/uaccess.h>
#include <linux/capability.h>
#include <linux/ipc_namespace.h>
#include <linux/msg.h>
#include <linux/slab.h>
#include <linux/cred.h>
#include "util.h"
static int proc_ipc_dointvec_minmax_orphans(const struct ctl_table *table, int write,
void *buffer, size_t *lenp, loff_t *ppos)
{ … }
static int proc_ipc_auto_msgmni(const struct ctl_table *table, int write,
void *buffer, size_t *lenp, loff_t *ppos)
{ … }
static int proc_ipc_sem_dointvec(const struct ctl_table *table, int write,
void *buffer, size_t *lenp, loff_t *ppos)
{ … }
int ipc_mni = …;
int ipc_mni_shift = …;
int ipc_min_cycle = …;
static struct ctl_table ipc_sysctls[] = …;
static struct ctl_table_set *set_lookup(struct ctl_table_root *root)
{ … }
static int set_is_seen(struct ctl_table_set *set)
{ … }
static void ipc_set_ownership(struct ctl_table_header *head,
kuid_t *uid, kgid_t *gid)
{ … }
static int ipc_permissions(struct ctl_table_header *head, const struct ctl_table *table)
{ … }
static struct ctl_table_root set_root = …;
bool setup_ipc_sysctls(struct ipc_namespace *ns)
{ … }
void retire_ipc_sysctls(struct ipc_namespace *ns)
{ … }
static int __init ipc_sysctl_init(void)
{ … }
device_initcall(ipc_sysctl_init);
static int __init ipc_mni_extend(char *str)
{ … }
early_param(…);