diff options
Diffstat (limited to 'net/sunrpc/xprtsock.c')
-rw-r--r-- | net/sunrpc/xprtsock.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index be8bbd5d65ec..43cd89eacfab 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -594,6 +594,7 @@ static int xs_local_send_request(struct rpc_task *task) | |||
594 | } | 594 | } |
595 | 595 | ||
596 | switch (status) { | 596 | switch (status) { |
597 | case -ENOBUFS: | ||
597 | case -EAGAIN: | 598 | case -EAGAIN: |
598 | status = xs_nospace(task); | 599 | status = xs_nospace(task); |
599 | break; | 600 | break; |
@@ -661,6 +662,7 @@ static int xs_udp_send_request(struct rpc_task *task) | |||
661 | dprintk("RPC: sendmsg returned unrecognized error %d\n", | 662 | dprintk("RPC: sendmsg returned unrecognized error %d\n", |
662 | -status); | 663 | -status); |
663 | case -ENETUNREACH: | 664 | case -ENETUNREACH: |
665 | case -ENOBUFS: | ||
664 | case -EPIPE: | 666 | case -EPIPE: |
665 | case -ECONNREFUSED: | 667 | case -ECONNREFUSED: |
666 | /* When the server has died, an ICMP port unreachable message | 668 | /* When the server has died, an ICMP port unreachable message |
@@ -758,6 +760,7 @@ static int xs_tcp_send_request(struct rpc_task *task) | |||
758 | status = -ENOTCONN; | 760 | status = -ENOTCONN; |
759 | /* Should we call xs_close() here? */ | 761 | /* Should we call xs_close() here? */ |
760 | break; | 762 | break; |
763 | case -ENOBUFS: | ||
761 | case -EAGAIN: | 764 | case -EAGAIN: |
762 | status = xs_nospace(task); | 765 | status = xs_nospace(task); |
763 | break; | 766 | break; |
@@ -1946,6 +1949,7 @@ static int xs_local_setup_socket(struct sock_xprt *transport) | |||
1946 | dprintk("RPC: xprt %p connected to %s\n", | 1949 | dprintk("RPC: xprt %p connected to %s\n", |
1947 | xprt, xprt->address_strings[RPC_DISPLAY_ADDR]); | 1950 | xprt, xprt->address_strings[RPC_DISPLAY_ADDR]); |
1948 | xprt_set_connected(xprt); | 1951 | xprt_set_connected(xprt); |
1952 | case -ENOBUFS: | ||
1949 | break; | 1953 | break; |
1950 | case -ENOENT: | 1954 | case -ENOENT: |
1951 | dprintk("RPC: xprt %p: socket %s does not exist\n", | 1955 | dprintk("RPC: xprt %p: socket %s does not exist\n", |
@@ -2281,6 +2285,7 @@ static void xs_tcp_setup_socket(struct work_struct *work) | |||
2281 | case -ECONNREFUSED: | 2285 | case -ECONNREFUSED: |
2282 | case -ECONNRESET: | 2286 | case -ECONNRESET: |
2283 | case -ENETUNREACH: | 2287 | case -ENETUNREACH: |
2288 | case -ENOBUFS: | ||
2284 | /* retry with existing socket, after a delay */ | 2289 | /* retry with existing socket, after a delay */ |
2285 | goto out; | 2290 | goto out; |
2286 | } | 2291 | } |
@@ -3054,12 +3059,12 @@ static int param_set_uint_minmax(const char *val, | |||
3054 | const struct kernel_param *kp, | 3059 | const struct kernel_param *kp, |
3055 | unsigned int min, unsigned int max) | 3060 | unsigned int min, unsigned int max) |
3056 | { | 3061 | { |
3057 | unsigned long num; | 3062 | unsigned int num; |
3058 | int ret; | 3063 | int ret; |
3059 | 3064 | ||
3060 | if (!val) | 3065 | if (!val) |
3061 | return -EINVAL; | 3066 | return -EINVAL; |
3062 | ret = strict_strtoul(val, 0, &num); | 3067 | ret = kstrtouint(val, 0, &num); |
3063 | if (ret == -EINVAL || num < min || num > max) | 3068 | if (ret == -EINVAL || num < min || num > max) |
3064 | return -EINVAL; | 3069 | return -EINVAL; |
3065 | *((unsigned int *)kp->arg) = num; | 3070 | *((unsigned int *)kp->arg) = num; |