diff options
Diffstat (limited to 'kernel/sysctl.c')
-rw-r--r-- | kernel/sysctl.c | 112 |
1 files changed, 67 insertions, 45 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 7f4f57bea4ce..0d949c517412 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -76,6 +76,7 @@ extern int max_threads; | |||
76 | extern int core_uses_pid; | 76 | extern int core_uses_pid; |
77 | extern int suid_dumpable; | 77 | extern int suid_dumpable; |
78 | extern char core_pattern[]; | 78 | extern char core_pattern[]; |
79 | extern unsigned int core_pipe_limit; | ||
79 | extern int pid_max; | 80 | extern int pid_max; |
80 | extern int min_free_kbytes; | 81 | extern int min_free_kbytes; |
81 | extern int pid_max_min, pid_max_max; | 82 | extern int pid_max_min, pid_max_max; |
@@ -162,9 +163,9 @@ extern int max_lock_depth; | |||
162 | #endif | 163 | #endif |
163 | 164 | ||
164 | #ifdef CONFIG_PROC_SYSCTL | 165 | #ifdef CONFIG_PROC_SYSCTL |
165 | static int proc_do_cad_pid(struct ctl_table *table, int write, struct file *filp, | 166 | static int proc_do_cad_pid(struct ctl_table *table, int write, |
166 | void __user *buffer, size_t *lenp, loff_t *ppos); | 167 | void __user *buffer, size_t *lenp, loff_t *ppos); |
167 | static int proc_taint(struct ctl_table *table, int write, struct file *filp, | 168 | static int proc_taint(struct ctl_table *table, int write, |
168 | void __user *buffer, size_t *lenp, loff_t *ppos); | 169 | void __user *buffer, size_t *lenp, loff_t *ppos); |
169 | #endif | 170 | #endif |
170 | 171 | ||
@@ -423,6 +424,14 @@ static struct ctl_table kern_table[] = { | |||
423 | .proc_handler = &proc_dostring, | 424 | .proc_handler = &proc_dostring, |
424 | .strategy = &sysctl_string, | 425 | .strategy = &sysctl_string, |
425 | }, | 426 | }, |
427 | { | ||
428 | .ctl_name = CTL_UNNUMBERED, | ||
429 | .procname = "core_pipe_limit", | ||
430 | .data = &core_pipe_limit, | ||
431 | .maxlen = sizeof(unsigned int), | ||
432 | .mode = 0644, | ||
433 | .proc_handler = &proc_dointvec, | ||
434 | }, | ||
426 | #ifdef CONFIG_PROC_SYSCTL | 435 | #ifdef CONFIG_PROC_SYSCTL |
427 | { | 436 | { |
428 | .procname = "tainted", | 437 | .procname = "tainted", |
@@ -1389,6 +1398,31 @@ static struct ctl_table vm_table[] = { | |||
1389 | .mode = 0644, | 1398 | .mode = 0644, |
1390 | .proc_handler = &scan_unevictable_handler, | 1399 | .proc_handler = &scan_unevictable_handler, |
1391 | }, | 1400 | }, |
1401 | #ifdef CONFIG_MEMORY_FAILURE | ||
1402 | { | ||
1403 | .ctl_name = CTL_UNNUMBERED, | ||
1404 | .procname = "memory_failure_early_kill", | ||
1405 | .data = &sysctl_memory_failure_early_kill, | ||
1406 | .maxlen = sizeof(sysctl_memory_failure_early_kill), | ||
1407 | .mode = 0644, | ||
1408 | .proc_handler = &proc_dointvec_minmax, | ||
1409 | .strategy = &sysctl_intvec, | ||
1410 | .extra1 = &zero, | ||
1411 | .extra2 = &one, | ||
1412 | }, | ||
1413 | { | ||
1414 | .ctl_name = CTL_UNNUMBERED, | ||
1415 | .procname = "memory_failure_recovery", | ||
1416 | .data = &sysctl_memory_failure_recovery, | ||
1417 | .maxlen = sizeof(sysctl_memory_failure_recovery), | ||
1418 | .mode = 0644, | ||
1419 | .proc_handler = &proc_dointvec_minmax, | ||
1420 | .strategy = &sysctl_intvec, | ||
1421 | .extra1 = &zero, | ||
1422 | .extra2 = &one, | ||
1423 | }, | ||
1424 | #endif | ||
1425 | |||
1392 | /* | 1426 | /* |
1393 | * NOTE: do not add new entries to this table unless you have read | 1427 | * NOTE: do not add new entries to this table unless you have read |
1394 | * Documentation/sysctl/ctl_unnumbered.txt | 1428 | * Documentation/sysctl/ctl_unnumbered.txt |
@@ -2217,7 +2251,7 @@ void sysctl_head_put(struct ctl_table_header *head) | |||
2217 | #ifdef CONFIG_PROC_SYSCTL | 2251 | #ifdef CONFIG_PROC_SYSCTL |
2218 | 2252 | ||
2219 | static int _proc_do_string(void* data, int maxlen, int write, | 2253 | static int _proc_do_string(void* data, int maxlen, int write, |
2220 | struct file *filp, void __user *buffer, | 2254 | void __user *buffer, |
2221 | size_t *lenp, loff_t *ppos) | 2255 | size_t *lenp, loff_t *ppos) |
2222 | { | 2256 | { |
2223 | size_t len; | 2257 | size_t len; |
@@ -2278,7 +2312,6 @@ static int _proc_do_string(void* data, int maxlen, int write, | |||
2278 | * proc_dostring - read a string sysctl | 2312 | * proc_dostring - read a string sysctl |
2279 | * @table: the sysctl table | 2313 | * @table: the sysctl table |
2280 | * @write: %TRUE if this is a write to the sysctl file | 2314 | * @write: %TRUE if this is a write to the sysctl file |
2281 | * @filp: the file structure | ||
2282 | * @buffer: the user buffer | 2315 | * @buffer: the user buffer |
2283 | * @lenp: the size of the user buffer | 2316 | * @lenp: the size of the user buffer |
2284 | * @ppos: file position | 2317 | * @ppos: file position |
@@ -2292,10 +2325,10 @@ static int _proc_do_string(void* data, int maxlen, int write, | |||
2292 | * | 2325 | * |
2293 | * Returns 0 on success. | 2326 | * Returns 0 on success. |
2294 | */ | 2327 | */ |
2295 | int proc_dostring(struct ctl_table *table, int write, struct file *filp, | 2328 | int proc_dostring(struct ctl_table *table, int write, |
2296 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2329 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2297 | { | 2330 | { |
2298 | return _proc_do_string(table->data, table->maxlen, write, filp, | 2331 | return _proc_do_string(table->data, table->maxlen, write, |
2299 | buffer, lenp, ppos); | 2332 | buffer, lenp, ppos); |
2300 | } | 2333 | } |
2301 | 2334 | ||
@@ -2320,7 +2353,7 @@ static int do_proc_dointvec_conv(int *negp, unsigned long *lvalp, | |||
2320 | } | 2353 | } |
2321 | 2354 | ||
2322 | static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, | 2355 | static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, |
2323 | int write, struct file *filp, void __user *buffer, | 2356 | int write, void __user *buffer, |
2324 | size_t *lenp, loff_t *ppos, | 2357 | size_t *lenp, loff_t *ppos, |
2325 | int (*conv)(int *negp, unsigned long *lvalp, int *valp, | 2358 | int (*conv)(int *negp, unsigned long *lvalp, int *valp, |
2326 | int write, void *data), | 2359 | int write, void *data), |
@@ -2427,13 +2460,13 @@ static int __do_proc_dointvec(void *tbl_data, struct ctl_table *table, | |||
2427 | #undef TMPBUFLEN | 2460 | #undef TMPBUFLEN |
2428 | } | 2461 | } |
2429 | 2462 | ||
2430 | static int do_proc_dointvec(struct ctl_table *table, int write, struct file *filp, | 2463 | static int do_proc_dointvec(struct ctl_table *table, int write, |
2431 | void __user *buffer, size_t *lenp, loff_t *ppos, | 2464 | void __user *buffer, size_t *lenp, loff_t *ppos, |
2432 | int (*conv)(int *negp, unsigned long *lvalp, int *valp, | 2465 | int (*conv)(int *negp, unsigned long *lvalp, int *valp, |
2433 | int write, void *data), | 2466 | int write, void *data), |
2434 | void *data) | 2467 | void *data) |
2435 | { | 2468 | { |
2436 | return __do_proc_dointvec(table->data, table, write, filp, | 2469 | return __do_proc_dointvec(table->data, table, write, |
2437 | buffer, lenp, ppos, conv, data); | 2470 | buffer, lenp, ppos, conv, data); |
2438 | } | 2471 | } |
2439 | 2472 | ||
@@ -2441,7 +2474,6 @@ static int do_proc_dointvec(struct ctl_table *table, int write, struct file *fil | |||
2441 | * proc_dointvec - read a vector of integers | 2474 | * proc_dointvec - read a vector of integers |
2442 | * @table: the sysctl table | 2475 | * @table: the sysctl table |
2443 | * @write: %TRUE if this is a write to the sysctl file | 2476 | * @write: %TRUE if this is a write to the sysctl file |
2444 | * @filp: the file structure | ||
2445 | * @buffer: the user buffer | 2477 | * @buffer: the user buffer |
2446 | * @lenp: the size of the user buffer | 2478 | * @lenp: the size of the user buffer |
2447 | * @ppos: file position | 2479 | * @ppos: file position |
@@ -2451,10 +2483,10 @@ static int do_proc_dointvec(struct ctl_table *table, int write, struct file *fil | |||
2451 | * | 2483 | * |
2452 | * Returns 0 on success. | 2484 | * Returns 0 on success. |
2453 | */ | 2485 | */ |
2454 | int proc_dointvec(struct ctl_table *table, int write, struct file *filp, | 2486 | int proc_dointvec(struct ctl_table *table, int write, |
2455 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2487 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2456 | { | 2488 | { |
2457 | return do_proc_dointvec(table,write,filp,buffer,lenp,ppos, | 2489 | return do_proc_dointvec(table,write,buffer,lenp,ppos, |
2458 | NULL,NULL); | 2490 | NULL,NULL); |
2459 | } | 2491 | } |
2460 | 2492 | ||
@@ -2462,7 +2494,7 @@ int proc_dointvec(struct ctl_table *table, int write, struct file *filp, | |||
2462 | * Taint values can only be increased | 2494 | * Taint values can only be increased |
2463 | * This means we can safely use a temporary. | 2495 | * This means we can safely use a temporary. |
2464 | */ | 2496 | */ |
2465 | static int proc_taint(struct ctl_table *table, int write, struct file *filp, | 2497 | static int proc_taint(struct ctl_table *table, int write, |
2466 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2498 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2467 | { | 2499 | { |
2468 | struct ctl_table t; | 2500 | struct ctl_table t; |
@@ -2474,7 +2506,7 @@ static int proc_taint(struct ctl_table *table, int write, struct file *filp, | |||
2474 | 2506 | ||
2475 | t = *table; | 2507 | t = *table; |
2476 | t.data = &tmptaint; | 2508 | t.data = &tmptaint; |
2477 | err = proc_doulongvec_minmax(&t, write, filp, buffer, lenp, ppos); | 2509 | err = proc_doulongvec_minmax(&t, write, buffer, lenp, ppos); |
2478 | if (err < 0) | 2510 | if (err < 0) |
2479 | return err; | 2511 | return err; |
2480 | 2512 | ||
@@ -2526,7 +2558,6 @@ static int do_proc_dointvec_minmax_conv(int *negp, unsigned long *lvalp, | |||
2526 | * proc_dointvec_minmax - read a vector of integers with min/max values | 2558 | * proc_dointvec_minmax - read a vector of integers with min/max values |
2527 | * @table: the sysctl table | 2559 | * @table: the sysctl table |
2528 | * @write: %TRUE if this is a write to the sysctl file | 2560 | * @write: %TRUE if this is a write to the sysctl file |
2529 | * @filp: the file structure | ||
2530 | * @buffer: the user buffer | 2561 | * @buffer: the user buffer |
2531 | * @lenp: the size of the user buffer | 2562 | * @lenp: the size of the user buffer |
2532 | * @ppos: file position | 2563 | * @ppos: file position |
@@ -2539,19 +2570,18 @@ static int do_proc_dointvec_minmax_conv(int *negp, unsigned long *lvalp, | |||
2539 | * | 2570 | * |
2540 | * Returns 0 on success. | 2571 | * Returns 0 on success. |
2541 | */ | 2572 | */ |
2542 | int proc_dointvec_minmax(struct ctl_table *table, int write, struct file *filp, | 2573 | int proc_dointvec_minmax(struct ctl_table *table, int write, |
2543 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2574 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2544 | { | 2575 | { |
2545 | struct do_proc_dointvec_minmax_conv_param param = { | 2576 | struct do_proc_dointvec_minmax_conv_param param = { |
2546 | .min = (int *) table->extra1, | 2577 | .min = (int *) table->extra1, |
2547 | .max = (int *) table->extra2, | 2578 | .max = (int *) table->extra2, |
2548 | }; | 2579 | }; |
2549 | return do_proc_dointvec(table, write, filp, buffer, lenp, ppos, | 2580 | return do_proc_dointvec(table, write, buffer, lenp, ppos, |
2550 | do_proc_dointvec_minmax_conv, ¶m); | 2581 | do_proc_dointvec_minmax_conv, ¶m); |
2551 | } | 2582 | } |
2552 | 2583 | ||
2553 | static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int write, | 2584 | static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int write, |
2554 | struct file *filp, | ||
2555 | void __user *buffer, | 2585 | void __user *buffer, |
2556 | size_t *lenp, loff_t *ppos, | 2586 | size_t *lenp, loff_t *ppos, |
2557 | unsigned long convmul, | 2587 | unsigned long convmul, |
@@ -2656,21 +2686,19 @@ static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int | |||
2656 | } | 2686 | } |
2657 | 2687 | ||
2658 | static int do_proc_doulongvec_minmax(struct ctl_table *table, int write, | 2688 | static int do_proc_doulongvec_minmax(struct ctl_table *table, int write, |
2659 | struct file *filp, | ||
2660 | void __user *buffer, | 2689 | void __user *buffer, |
2661 | size_t *lenp, loff_t *ppos, | 2690 | size_t *lenp, loff_t *ppos, |
2662 | unsigned long convmul, | 2691 | unsigned long convmul, |
2663 | unsigned long convdiv) | 2692 | unsigned long convdiv) |
2664 | { | 2693 | { |
2665 | return __do_proc_doulongvec_minmax(table->data, table, write, | 2694 | return __do_proc_doulongvec_minmax(table->data, table, write, |
2666 | filp, buffer, lenp, ppos, convmul, convdiv); | 2695 | buffer, lenp, ppos, convmul, convdiv); |
2667 | } | 2696 | } |
2668 | 2697 | ||
2669 | /** | 2698 | /** |
2670 | * proc_doulongvec_minmax - read a vector of long integers with min/max values | 2699 | * proc_doulongvec_minmax - read a vector of long integers with min/max values |
2671 | * @table: the sysctl table | 2700 | * @table: the sysctl table |
2672 | * @write: %TRUE if this is a write to the sysctl file | 2701 | * @write: %TRUE if this is a write to the sysctl file |
2673 | * @filp: the file structure | ||
2674 | * @buffer: the user buffer | 2702 | * @buffer: the user buffer |
2675 | * @lenp: the size of the user buffer | 2703 | * @lenp: the size of the user buffer |
2676 | * @ppos: file position | 2704 | * @ppos: file position |
@@ -2683,17 +2711,16 @@ static int do_proc_doulongvec_minmax(struct ctl_table *table, int write, | |||
2683 | * | 2711 | * |
2684 | * Returns 0 on success. | 2712 | * Returns 0 on success. |
2685 | */ | 2713 | */ |
2686 | int proc_doulongvec_minmax(struct ctl_table *table, int write, struct file *filp, | 2714 | int proc_doulongvec_minmax(struct ctl_table *table, int write, |
2687 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2715 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2688 | { | 2716 | { |
2689 | return do_proc_doulongvec_minmax(table, write, filp, buffer, lenp, ppos, 1l, 1l); | 2717 | return do_proc_doulongvec_minmax(table, write, buffer, lenp, ppos, 1l, 1l); |
2690 | } | 2718 | } |
2691 | 2719 | ||
2692 | /** | 2720 | /** |
2693 | * proc_doulongvec_ms_jiffies_minmax - read a vector of millisecond values with min/max values | 2721 | * proc_doulongvec_ms_jiffies_minmax - read a vector of millisecond values with min/max values |
2694 | * @table: the sysctl table | 2722 | * @table: the sysctl table |
2695 | * @write: %TRUE if this is a write to the sysctl file | 2723 | * @write: %TRUE if this is a write to the sysctl file |
2696 | * @filp: the file structure | ||
2697 | * @buffer: the user buffer | 2724 | * @buffer: the user buffer |
2698 | * @lenp: the size of the user buffer | 2725 | * @lenp: the size of the user buffer |
2699 | * @ppos: file position | 2726 | * @ppos: file position |
@@ -2708,11 +2735,10 @@ int proc_doulongvec_minmax(struct ctl_table *table, int write, struct file *filp | |||
2708 | * Returns 0 on success. | 2735 | * Returns 0 on success. |
2709 | */ | 2736 | */ |
2710 | int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int write, | 2737 | int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int write, |
2711 | struct file *filp, | ||
2712 | void __user *buffer, | 2738 | void __user *buffer, |
2713 | size_t *lenp, loff_t *ppos) | 2739 | size_t *lenp, loff_t *ppos) |
2714 | { | 2740 | { |
2715 | return do_proc_doulongvec_minmax(table, write, filp, buffer, | 2741 | return do_proc_doulongvec_minmax(table, write, buffer, |
2716 | lenp, ppos, HZ, 1000l); | 2742 | lenp, ppos, HZ, 1000l); |
2717 | } | 2743 | } |
2718 | 2744 | ||
@@ -2788,7 +2814,6 @@ static int do_proc_dointvec_ms_jiffies_conv(int *negp, unsigned long *lvalp, | |||
2788 | * proc_dointvec_jiffies - read a vector of integers as seconds | 2814 | * proc_dointvec_jiffies - read a vector of integers as seconds |
2789 | * @table: the sysctl table | 2815 | * @table: the sysctl table |
2790 | * @write: %TRUE if this is a write to the sysctl file | 2816 | * @write: %TRUE if this is a write to the sysctl file |
2791 | * @filp: the file structure | ||
2792 | * @buffer: the user buffer | 2817 | * @buffer: the user buffer |
2793 | * @lenp: the size of the user buffer | 2818 | * @lenp: the size of the user buffer |
2794 | * @ppos: file position | 2819 | * @ppos: file position |
@@ -2800,10 +2825,10 @@ static int do_proc_dointvec_ms_jiffies_conv(int *negp, unsigned long *lvalp, | |||
2800 | * | 2825 | * |
2801 | * Returns 0 on success. | 2826 | * Returns 0 on success. |
2802 | */ | 2827 | */ |
2803 | int proc_dointvec_jiffies(struct ctl_table *table, int write, struct file *filp, | 2828 | int proc_dointvec_jiffies(struct ctl_table *table, int write, |
2804 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2829 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2805 | { | 2830 | { |
2806 | return do_proc_dointvec(table,write,filp,buffer,lenp,ppos, | 2831 | return do_proc_dointvec(table,write,buffer,lenp,ppos, |
2807 | do_proc_dointvec_jiffies_conv,NULL); | 2832 | do_proc_dointvec_jiffies_conv,NULL); |
2808 | } | 2833 | } |
2809 | 2834 | ||
@@ -2811,7 +2836,6 @@ int proc_dointvec_jiffies(struct ctl_table *table, int write, struct file *filp, | |||
2811 | * proc_dointvec_userhz_jiffies - read a vector of integers as 1/USER_HZ seconds | 2836 | * proc_dointvec_userhz_jiffies - read a vector of integers as 1/USER_HZ seconds |
2812 | * @table: the sysctl table | 2837 | * @table: the sysctl table |
2813 | * @write: %TRUE if this is a write to the sysctl file | 2838 | * @write: %TRUE if this is a write to the sysctl file |
2814 | * @filp: the file structure | ||
2815 | * @buffer: the user buffer | 2839 | * @buffer: the user buffer |
2816 | * @lenp: the size of the user buffer | 2840 | * @lenp: the size of the user buffer |
2817 | * @ppos: pointer to the file position | 2841 | * @ppos: pointer to the file position |
@@ -2823,10 +2847,10 @@ int proc_dointvec_jiffies(struct ctl_table *table, int write, struct file *filp, | |||
2823 | * | 2847 | * |
2824 | * Returns 0 on success. | 2848 | * Returns 0 on success. |
2825 | */ | 2849 | */ |
2826 | int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write, struct file *filp, | 2850 | int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write, |
2827 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2851 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2828 | { | 2852 | { |
2829 | return do_proc_dointvec(table,write,filp,buffer,lenp,ppos, | 2853 | return do_proc_dointvec(table,write,buffer,lenp,ppos, |
2830 | do_proc_dointvec_userhz_jiffies_conv,NULL); | 2854 | do_proc_dointvec_userhz_jiffies_conv,NULL); |
2831 | } | 2855 | } |
2832 | 2856 | ||
@@ -2834,7 +2858,6 @@ int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write, struct file | |||
2834 | * proc_dointvec_ms_jiffies - read a vector of integers as 1 milliseconds | 2858 | * proc_dointvec_ms_jiffies - read a vector of integers as 1 milliseconds |
2835 | * @table: the sysctl table | 2859 | * @table: the sysctl table |
2836 | * @write: %TRUE if this is a write to the sysctl file | 2860 | * @write: %TRUE if this is a write to the sysctl file |
2837 | * @filp: the file structure | ||
2838 | * @buffer: the user buffer | 2861 | * @buffer: the user buffer |
2839 | * @lenp: the size of the user buffer | 2862 | * @lenp: the size of the user buffer |
2840 | * @ppos: file position | 2863 | * @ppos: file position |
@@ -2847,14 +2870,14 @@ int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write, struct file | |||
2847 | * | 2870 | * |
2848 | * Returns 0 on success. | 2871 | * Returns 0 on success. |
2849 | */ | 2872 | */ |
2850 | int proc_dointvec_ms_jiffies(struct ctl_table *table, int write, struct file *filp, | 2873 | int proc_dointvec_ms_jiffies(struct ctl_table *table, int write, |
2851 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2874 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2852 | { | 2875 | { |
2853 | return do_proc_dointvec(table, write, filp, buffer, lenp, ppos, | 2876 | return do_proc_dointvec(table, write, buffer, lenp, ppos, |
2854 | do_proc_dointvec_ms_jiffies_conv, NULL); | 2877 | do_proc_dointvec_ms_jiffies_conv, NULL); |
2855 | } | 2878 | } |
2856 | 2879 | ||
2857 | static int proc_do_cad_pid(struct ctl_table *table, int write, struct file *filp, | 2880 | static int proc_do_cad_pid(struct ctl_table *table, int write, |
2858 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2881 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2859 | { | 2882 | { |
2860 | struct pid *new_pid; | 2883 | struct pid *new_pid; |
@@ -2863,7 +2886,7 @@ static int proc_do_cad_pid(struct ctl_table *table, int write, struct file *filp | |||
2863 | 2886 | ||
2864 | tmp = pid_vnr(cad_pid); | 2887 | tmp = pid_vnr(cad_pid); |
2865 | 2888 | ||
2866 | r = __do_proc_dointvec(&tmp, table, write, filp, buffer, | 2889 | r = __do_proc_dointvec(&tmp, table, write, buffer, |
2867 | lenp, ppos, NULL, NULL); | 2890 | lenp, ppos, NULL, NULL); |
2868 | if (r || !write) | 2891 | if (r || !write) |
2869 | return r; | 2892 | return r; |
@@ -2878,50 +2901,49 @@ static int proc_do_cad_pid(struct ctl_table *table, int write, struct file *filp | |||
2878 | 2901 | ||
2879 | #else /* CONFIG_PROC_FS */ | 2902 | #else /* CONFIG_PROC_FS */ |
2880 | 2903 | ||
2881 | int proc_dostring(struct ctl_table *table, int write, struct file *filp, | 2904 | int proc_dostring(struct ctl_table *table, int write, |
2882 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2905 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2883 | { | 2906 | { |
2884 | return -ENOSYS; | 2907 | return -ENOSYS; |
2885 | } | 2908 | } |
2886 | 2909 | ||
2887 | int proc_dointvec(struct ctl_table *table, int write, struct file *filp, | 2910 | int proc_dointvec(struct ctl_table *table, int write, |
2888 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2911 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2889 | { | 2912 | { |
2890 | return -ENOSYS; | 2913 | return -ENOSYS; |
2891 | } | 2914 | } |
2892 | 2915 | ||
2893 | int proc_dointvec_minmax(struct ctl_table *table, int write, struct file *filp, | 2916 | int proc_dointvec_minmax(struct ctl_table *table, int write, |
2894 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2917 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2895 | { | 2918 | { |
2896 | return -ENOSYS; | 2919 | return -ENOSYS; |
2897 | } | 2920 | } |
2898 | 2921 | ||
2899 | int proc_dointvec_jiffies(struct ctl_table *table, int write, struct file *filp, | 2922 | int proc_dointvec_jiffies(struct ctl_table *table, int write, |
2900 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2923 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2901 | { | 2924 | { |
2902 | return -ENOSYS; | 2925 | return -ENOSYS; |
2903 | } | 2926 | } |
2904 | 2927 | ||
2905 | int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write, struct file *filp, | 2928 | int proc_dointvec_userhz_jiffies(struct ctl_table *table, int write, |
2906 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2929 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2907 | { | 2930 | { |
2908 | return -ENOSYS; | 2931 | return -ENOSYS; |
2909 | } | 2932 | } |
2910 | 2933 | ||
2911 | int proc_dointvec_ms_jiffies(struct ctl_table *table, int write, struct file *filp, | 2934 | int proc_dointvec_ms_jiffies(struct ctl_table *table, int write, |
2912 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2935 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2913 | { | 2936 | { |
2914 | return -ENOSYS; | 2937 | return -ENOSYS; |
2915 | } | 2938 | } |
2916 | 2939 | ||
2917 | int proc_doulongvec_minmax(struct ctl_table *table, int write, struct file *filp, | 2940 | int proc_doulongvec_minmax(struct ctl_table *table, int write, |
2918 | void __user *buffer, size_t *lenp, loff_t *ppos) | 2941 | void __user *buffer, size_t *lenp, loff_t *ppos) |
2919 | { | 2942 | { |
2920 | return -ENOSYS; | 2943 | return -ENOSYS; |
2921 | } | 2944 | } |
2922 | 2945 | ||
2923 | int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int write, | 2946 | int proc_doulongvec_ms_jiffies_minmax(struct ctl_table *table, int write, |
2924 | struct file *filp, | ||
2925 | void __user *buffer, | 2947 | void __user *buffer, |
2926 | size_t *lenp, loff_t *ppos) | 2948 | size_t *lenp, loff_t *ppos) |
2927 | { | 2949 | { |