diff options
Diffstat (limited to 'net/sunrpc')
-rw-r--r-- | net/sunrpc/xprtsock.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 8aaf9003fe6..62438f3a914 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -2371,3 +2371,55 @@ void cleanup_socket_xprt(void) | |||
2371 | xprt_unregister_transport(&xs_udp_transport); | 2371 | xprt_unregister_transport(&xs_udp_transport); |
2372 | xprt_unregister_transport(&xs_tcp_transport); | 2372 | xprt_unregister_transport(&xs_tcp_transport); |
2373 | } | 2373 | } |
2374 | |||
2375 | static int param_set_uint_minmax(const char *val, struct kernel_param *kp, | ||
2376 | unsigned int min, unsigned int max) | ||
2377 | { | ||
2378 | unsigned long num; | ||
2379 | int ret; | ||
2380 | |||
2381 | if (!val) | ||
2382 | return -EINVAL; | ||
2383 | ret = strict_strtoul(val, 0, &num); | ||
2384 | if (ret == -EINVAL || num < min || num > max) | ||
2385 | return -EINVAL; | ||
2386 | *((unsigned int *)kp->arg) = num; | ||
2387 | return 0; | ||
2388 | } | ||
2389 | |||
2390 | static int param_set_portnr(const char *val, struct kernel_param *kp) | ||
2391 | { | ||
2392 | return param_set_uint_minmax(val, kp, | ||
2393 | RPC_MIN_RESVPORT, | ||
2394 | RPC_MAX_RESVPORT); | ||
2395 | } | ||
2396 | |||
2397 | static int param_get_portnr(char *buffer, struct kernel_param *kp) | ||
2398 | { | ||
2399 | return param_get_uint(buffer, kp); | ||
2400 | } | ||
2401 | #define param_check_portnr(name, p) \ | ||
2402 | __param_check(name, p, unsigned int); | ||
2403 | |||
2404 | module_param_named(min_resvport, xprt_min_resvport, portnr, 0644); | ||
2405 | module_param_named(max_resvport, xprt_max_resvport, portnr, 0644); | ||
2406 | |||
2407 | static int param_set_slot_table_size(const char *val, struct kernel_param *kp) | ||
2408 | { | ||
2409 | return param_set_uint_minmax(val, kp, | ||
2410 | RPC_MIN_SLOT_TABLE, | ||
2411 | RPC_MAX_SLOT_TABLE); | ||
2412 | } | ||
2413 | |||
2414 | static int param_get_slot_table_size(char *buffer, struct kernel_param *kp) | ||
2415 | { | ||
2416 | return param_get_uint(buffer, kp); | ||
2417 | } | ||
2418 | #define param_check_slot_table_size(name, p) \ | ||
2419 | __param_check(name, p, unsigned int); | ||
2420 | |||
2421 | module_param_named(tcp_slot_table_entries, xprt_tcp_slot_table_entries, | ||
2422 | slot_table_size, 0644); | ||
2423 | module_param_named(udp_slot_table_entries, xprt_udp_slot_table_entries, | ||
2424 | slot_table_size, 0644); | ||
2425 | |||