pport for the pandaboard.
aboutsummaryrefslogblamecommitdiffstats
path: root/kernel/sysctl.c
blob: d41ef6b4cf727dc5cd8b48d3f761df9016c8eb20 (plain) (tree)



















                                                                           





                          
                           

                          
                           
                     

                         
                          
                      



                            




                           

                         
                         



                          

                    
                           
                   

      

                                                                 



                                              
                               

                                    
                               
                                           
                                 
                       
                         
                         
                           

                           
                                    
                              
                                    
                      
                        
                                
                              
 
                                             
                                                                
                   


                               









                             


                                                                               
                                         





                                     


                        











                              
                  



                                          
                      







                              



                                



                          

                                                                         
                                                           

      
 
                         
                                                                                 
                                                                   
                                                                                     
                                                                                
      
 
                                     









                                                                   
 





                                       
                          
                                        
      




                                 

                         
 

                                
                                        











                                             
         
















                                              



                                                                  


                         
                         



                                                                       

      
                                        


                                                 

                                                                

                                                       



                                                            


                                                 



                                                        
                                                            





                                                            





















                                                                         





                                                                 







                                                         







                                                               




                                                           
















                                                          

                                                 

















                                                                   
      







                                                             



















                                                  
         


















                                                     
                                                    



                                                 
                         
         


                                              

                                                       
          
      








                                                      









                                                   







                                                        




















































                                                          










                                                 
                                                  


                                               

                                                         
























                                                   



                                             
                                                   




                                                 
                         
         
                                            
                                       

                                               
                                                   
          
      













                                                   





















                                                        
                  















































                                                                  








                                                    
















                                                              
      














                                                         
                                                 
          
         




                                                        



                       







                                                             






                                                       







                                                          







                                                  
      
                       







                                                       
      
                                               








                                                  
                                                         
         
                                                     
                                                       

                                                         
                                                          

          









                                                              




                                                      
                                                        
                                       
                                                          



                                                 



                                                                
                                                        
                                       
                                                          





                                                                 
                                                        
                                       
                                                          





                                                             
                                                        
                                       
                                                          

                                                 
      









                                                  









                                                      









                                                 








                                                        



                                                                  


                         
                                      








                                                                   







                                                              







                                                                          







                                                                































                                                                  
                                                       




                                                 
                                                              

                                                                   



                                                                     
                                                           

                                                                
                                       
                                                                





















                                                            















                                                            







                                                                 

                                                 



                                                                   
                                                              
          










                                                                       








                                                             








                                                                  









                                                                           















                                                               

                                                         
































                                                                    







                                                            

                                                 
          










                                                                            










                                                                        
      










                                                               








                                                          
      










                                                               
                                                        
                                                       










                                                       












                                                                  



                                                                  


                         
                                                                     
                                               



                         
                                      
















                                                 



                                                
                                                 









                                                        







                                                  





















































                                                        



                                                        

          



                                                 
                                                          

          



                                                     
                                                          
          
                          






                                                
      







                                                       







                                                                     


                                                                  
   


                         
                                         
                                              








                                                          


                         
                                       
                         
  
 








































                                                                         








                                                      

                                                                           
 











                                                                          

                                      
 

                                
                            












                                                                           
                                  
                                











                                                                           
         
    



                                  











                                                                        
                            


                                                                                      
                                      
                             







                                                           
 

                                                        
                                                                 
                                                                         

                                                 
                              

                 
                     









                                                             



                                                



                                                                      
    

                     
                                  

  
                                                                             













                                                   
                                                







                                           
                            


                                                                   
                                               






                                


                                                              
                                           

                                           
                                                            
                                                      






                                                                     
                                                                   






                                                            
                                                

                                                                    
                                                           

                       




                          
                                   



                                                                        
                                                     








                                                                      



                                                                    


                 
                                  
 










                                                                                
                
                                            
                                                               




                           
   


                                                                         
                                                           
                                        

                                                                            
                                                           
  
                                                                      



























































                                                                               



                                                             
 
                                      


















                                                                              
                            
















                                                
                                      



                                           
                            
                                                   
                                                                
                              

                            
                                

                                                           
                                  




                      
















                                                                            












                                                                            










                                                                      
                      



                           

                                    
                                  


                      
                          
                                                                        



                    





                                                                            





                                                             



                    
                         
 


                                                                  



                       

                                         


                          
 









                                                


                                                     
                                       
                                         

                               


                                     








                                  


                                    
                                                           











                                                                          

















                                                                
                                                                        





                                                                       



















                                                                 
                                                                      

                                                                    











                                                                         
                                                    




                                
                             




























                                                        
                                    

























































                                                                  
                                                                                  








                                                                         













                                                                
                                                                        







                                                                     
                 










                                                                      
                                                    













                                                     


                                          
                                                                                     



                                                                               
                                             






                                                                  













































                                                                         
                                                                               









                                                                       
                                                                                      












                                                                
                                                




                                
                                   



























                                                             
                                    






















































                                                                            
                                                                        









                                                                     
















                                                                              
                                                                                 






















                                                                                              
                                                                         













                                                                         

                                           




















                                                                                

                                                                       




















































                                                                            
                                                                                












                                                                                
                                      







                                                                
                                                                                       












                                                                                 

                                          







                                                                
                                                                                   





                                                                             
                                                                                 





                                                                           
                               













                                                                

                          
                                                                        




                                                                  
                                                                        
                                                                  



                       
                                                                               




                                                                    
                                                                                




                                                                    
                                                                                       




                                                                    
                                                                                   




                                                                             
                                                                                 




                                                                    
                                                                         










                                                                 
                            



                                   

































                                                                            
                                          
                                                                      
                                                              
                                                     
 



                                            

                                               
                                       




                                                                             
                                                    





                                                                               
                                               
                                                   



                                               
                                    







                                                            
                 






                                                                  
                                                                      
                                                            
                                                   
































                                                        
                                                                       
                                                            
                                                   
 
                                
                            












                                                                
                                               
                 












                                                        
                                                                          
                                                            
                                                   
 
                                
                            












                                                                      
                                               
                 











                                                              
 
 
                                 



                                                             
                                 
                  
 

                                                    
 
                                                
 




                                                                      

 






                                                                    
                                                                      
                                                              
                                                     



                       
                                                                      
                                                            
                                                   



                       
                                                                       
                                                            
                                                   



                       
                                                                          
                                                            
                                                   



                       
                                  
 





                                                                



                                                       




















                                                                                    












                                                             
                                     



                                 
                           
                                       
/*
 * sysctl.c: General linux system control interface
 *
 * Begun 24 March 1995, Stephen Tweedie
 * Added /proc support, Dec 1995
 * Added bdflush entry and intvec min/max checking, 2/23/96, Tom Dyas.
 * Added hooks for /proc/sys/net (minor, minor patch), 96/4/1, Mike Shaver.
 * Added kernel/java-{interpreter,appletviewer}, 96/5/10, Mike Shaver.
 * Dynamic registration fixes, Stephen Tweedie.
 * Added kswapd-interval, ctrl-alt-del, printk stuff, 1/8/97, Chris Horn.
 * Made sysctl support optional via CONFIG_SYSCTL, 1/10/97, Chris
 *  Horn.
 * Added proc_doulongvec_ms_jiffies_minmax, 09/08/99, Carlos H. Bauer.
 * Added proc_doulongvec_minmax, 09/08/99, Carlos H. Bauer.
 * Changed linked lists to use list.h instead of lists.h, 02/24/00, Bill
 *  Wendling.
 * The list_for_each() macro wasn't appropriate for the sysctl loop.
 *  Removed it and replaced it with older style, 03/23/00, Bill Wendling
 */

#include <linux/module.h>
#include <linux/mm.h>
#include <linux/swap.h>
#include <linux/slab.h>
#include <linux/sysctl.h>
#include <linux/proc_fs.h>
#include <linux/security.h>
#include <linux/ctype.h>
#include <linux/utsname.h>
#include <linux/smp_lock.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/kobject.h>
#include <linux/net.h>
#include <linux/sysrq.h>
#include <linux/highuid.h>
#include <linux/writeback.h>
#include <linux/hugetlb.h>
#include <linux/initrd.h>
#include <linux/times.h>
#include <linux/limits.h>
#include <linux/dcache.h>
#include <linux/syscalls.h>
#include <linux/nfs_fs.h>
#include <linux/acpi.h>
#include <linux/reboot.h>

#include <asm/uaccess.h>
#include <asm/processor.h>

#ifdef CONFIG_X86
#include <asm/nmi.h>
#include <asm/stacktrace.h>
#include <asm/io.h>
#endif

static int deprecated_sysctl_warning(struct __sysctl_args *args);

#if defined(CONFIG_SYSCTL)

/* External variables not in a header file. */
extern int C_A_D;
extern int print_fatal_signals;
extern int sysctl_overcommit_memory;
extern int sysctl_overcommit_ratio;
extern int sysctl_panic_on_oom;
extern int sysctl_oom_kill_allocating_task;
extern int sysctl_oom_dump_tasks;
extern int max_threads;
extern int core_uses_pid;
extern int suid_dumpable;
extern char core_pattern[];
extern int pid_max;
extern int min_free_kbytes;
extern int pid_max_min, pid_max_max;
extern int sysctl_drop_caches;
extern int percpu_pagelist_fraction;
extern int compat_log;
extern int maps_protect;
extern int sysctl_stat_interval;
extern int latencytop_enabled;

/* Constants used for minimum and  maximum */
#if defined(CONFIG_DETECT_SOFTLOCKUP) || defined(CONFIG_HIGHMEM)
static int one = 1;
#endif

#ifdef CONFIG_DETECT_SOFTLOCKUP
static int sixty = 60;
#endif

#ifdef CONFIG_MMU
static int two = 2;
#endif

static int zero;
static int one_hundred = 100;

/* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */
static int maxolduid = 65535;
static int minolduid;
static int min_percpu_pagelist_fract = 8;

static int ngroups_max = NGROUPS_MAX;

#ifdef CONFIG_KMOD
extern char modprobe_path[];
#endif
#ifdef CONFIG_CHR_DEV_SG
extern int sg_big_buff;
#endif

#ifdef __sparc__
extern char reboot_command [];
extern int stop_a_enabled;
extern int scons_pwroff;
#endif

#ifdef __hppa__
extern int pwrsw_enabled;
extern int unaligned_enabled;
#endif

#ifdef CONFIG_S390
#ifdef CONFIG_MATHEMU
extern int sysctl_ieee_emulation_warnings;
#endif
extern int sysctl_userprocess_debug;
extern int spin_retry;
#endif

extern int sysctl_hz_timer;

#ifdef CONFIG_BSD_PROCESS_ACCT
extern int acct_parm[];
#endif

#ifdef CONFIG_IA64
extern int no_unaligned_warning;
#endif

#ifdef CONFIG_RT_MUTEXES
extern int max_lock_depth;
#endif

#ifdef CONFIG_SYSCTL_SYSCALL
static int parse_table(int __user *, int, void __user *, size_t __user *,
		void __user *, size_t, struct ctl_table *);
#endif


#ifdef CONFIG_PROC_SYSCTL
static int proc_do_cad_pid(struct ctl_table *table, int write, struct file *filp,
		  void __user *buffer, size_t *lenp, loff_t *ppos);
static int proc_dointvec_taint(struct ctl_table *table, int write, struct file *filp,
			       void __user *buffer, size_t *lenp, loff_t *ppos);
#endif

static struct ctl_table root_table[];
static struct ctl_table_root sysctl_table_root;
static struct ctl_table_header root_table_header = {
	.ctl_table = root_table,
	.ctl_entry = LIST_HEAD_INIT(sysctl_table_root.header_list),
	.root = &sysctl_table_root,
};
static struct ctl_table_root sysctl_table_root = {
	.root_list = LIST_HEAD_INIT(sysctl_table_root.root_list),
	.header_list = LIST_HEAD_INIT(root_table_header.ctl_entry),
};

static struct ctl_table kern_table[];
static struct ctl_table vm_table[];
static struct ctl_table fs_table[];
static struct ctl_table debug_table[];
static struct ctl_table dev_table[];
extern struct ctl_table random_table[];
#ifdef CONFIG_INOTIFY_USER
extern struct ctl_table inotify_table[];
#endif

#ifdef HAVE_ARCH_PICK_MMAP_LAYOUT
int sysctl_legacy_va_layout;
#endif

extern int prove_locking;
extern int lock_stat;

/* The default sysctl tables: */

static struct ctl_table root_table[] = {
	{
		.ctl_name	= CTL_KERN,
		.procname	= "kernel",
		.mode		= 0555,
		.child		= kern_table,
	},
	{
		.ctl_name	= CTL_VM,
		.procname	= "vm",
		.mode		= 0555,
		.child		= vm_table,
	},
	{
		.ctl_name	= CTL_FS,
		.procname	= "fs",
		.mode		= 0555,
		.child		= fs_table,
	},
	{
		.ctl_name	= CTL_DEBUG,
		.procname	= "debug",
		.mode		= 0555,
		.child		= debug_table,
	},
	{
		.ctl_name	= CTL_DEV,
		.procname	= "dev",
		.mode		= 0555,
		.child		= dev_table,
	},
/*
 * NOTE: do not add new entries to this table unless you have read
 * Documentation/sysctl/ctl_unnumbered.txt
 */
	{ .ctl_name = 0 }
};

#ifdef CONFIG_SCHED_DEBUG
static int min_sched_granularity_ns = 100000;		/* 100 usecs */
static int max_sched_granularity_ns = NSEC_PER_SEC;	/* 1 second */
static int min_wakeup_granularity_ns;			/* 0 usecs */
static int max_wakeup_granularity_ns = NSEC_PER_SEC;	/* 1 second */
#endif

static struct ctl_table kern_table[] = {
#ifdef CONFIG_SCHED_DEBUG
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_min_granularity_ns",
		.data		= &sysctl_sched_min_granularity,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &sched_nr_latency_handler,
		.strategy	= &sysctl_intvec,
		.extra1		= &min_sched_granularity_ns,
		.extra2		= &max_sched_granularity_ns,
	},
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_latency_ns",
		.data		= &sysctl_sched_latency,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &sched_nr_latency_handler,
		.strategy	= &sysctl_intvec,
		.extra1		= &min_sched_granularity_ns,
		.extra2		= &max_sched_granularity_ns,
	},
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_wakeup_granularity_ns",
		.data		= &sysctl_sched_wakeup_granularity,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec_minmax,
		.strategy	= &sysctl_intvec,
		.extra1		= &min_wakeup_granularity_ns,
		.extra2		= &max_wakeup_granularity_ns,
	},
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_batch_wakeup_granularity_ns",
		.data		= &sysctl_sched_batch_wakeup_granularity,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec_minmax,
		.strategy	= &sysctl_intvec,
		.extra1		= &min_wakeup_granularity_ns,
		.extra2		= &max_wakeup_granularity_ns,
	},
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_child_runs_first",
		.data		= &sysctl_sched_child_runs_first,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec,
	},
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_features",
		.data		= &sysctl_sched_features,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec,
	},
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_migration_cost",
		.data		= &sysctl_sched_migration_cost,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec,
	},
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_nr_migrate",
		.data		= &sysctl_sched_nr_migrate,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec,
	},
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_rt_period_ms",
		.data		= &sysctl_sched_rt_period,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec,
	},
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_rt_ratio",
		.data		= &sysctl_sched_rt_ratio,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec,
	},
#if defined(CONFIG_FAIR_GROUP_SCHED) && defined(CONFIG_SMP)
	{
		.ctl_name       = CTL_UNNUMBERED,
		.procname       = "sched_min_bal_int_shares",
		.data           = &sysctl_sched_min_bal_int_shares,
		.maxlen         = sizeof(unsigned int),
		.mode           = 0644,
		.proc_handler   = &proc_dointvec,
	},
	{
		.ctl_name       = CTL_UNNUMBERED,
		.procname       = "sched_max_bal_int_shares",
		.data           = &sysctl_sched_max_bal_int_shares,
		.maxlen         = sizeof(unsigned int),
		.mode           = 0644,
		.proc_handler   = &proc_dointvec,
	},
#endif
#endif
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "sched_compat_yield",
		.data		= &sysctl_sched_compat_yield,
		.maxlen		= sizeof(unsigned int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec,
	},
#ifdef CONFIG_PROVE_LOCKING
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "prove_locking",
		.data		= &prove_locking,
		.maxlen		= sizeof(int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec,
	},
#endif
#ifdef CONFIG_LOCK_STAT
	{
		.ctl_name	= CTL_UNNUMBERED,
		.procname	= "lock_stat",
		.data		= &lock_stat,
		.maxlen		= sizeof(int),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec,
	},
#endif
	{
		.ctl_name	= KERN_PANIC,
		.procname	= "panic",
		.data		= &panic_timeout,