diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-26 22:42:59 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-11-26 22:42:59 -0500 |
commit | 423eaf8f00d89ca79bb2c9d4d22e92c9774e2d8a (patch) | |
tree | e160521a6b059d50045ea47c3f730bf2c83c1f85 /net | |
parent | 0685ab4fb8e527639d9867df60d49dccba85d842 (diff) | |
parent | 02fe494619d525ea803ab1f4f671186dc8a52f7a (diff) |
Merge git://git.linux-nfs.org/pub/linux/nfs-2.6
* git://git.linux-nfs.org/pub/linux/nfs-2.6:
NFS: Clean up new multi-segment direct I/O changes
NFS: Ensure we return zero if applications attempt to write zero bytes
NFS: Support multiple segment iovecs in the NFS direct I/O path
NFS: Introduce iovec I/O helpers to fs/nfs/direct.c
SUNRPC: Add missing "space" to net/sunrpc/auth_gss.c
SUNRPC: make sunrpc/xprtsock.c:xs_setup_{udp,tcp}() static
NFS: fs/nfs/dir.c should #include "internal.h"
NFS: make nfs_wb_page_priority() static
NFS: mount failure causes bad page state
SUNRPC: remove NFS/RDMA client's binary sysctls
kernel BUG at fs/nfs/namespace.c:108! - can be triggered by bad server
sunrpc: rpc_pipe_poll may miss available data in some cases
sunrpc: return error if unsupported enctype or cksumtype is encountered
sunrpc: gss_pipe_downcall(), don't assume all errors are transient
NFS: Fix the ustat() regression
Diffstat (limited to 'net')
-rw-r--r-- | net/sunrpc/auth_gss/auth_gss.c | 4 | ||||
-rw-r--r-- | net/sunrpc/auth_gss/gss_krb5_mech.c | 8 | ||||
-rw-r--r-- | net/sunrpc/auth_gss/gss_krb5_seal.c | 1 | ||||
-rw-r--r-- | net/sunrpc/rpc_pipe.c | 2 | ||||
-rw-r--r-- | net/sunrpc/xprtrdma/transport.c | 10 | ||||
-rw-r--r-- | net/sunrpc/xprtsock.c | 4 |
6 files changed, 17 insertions, 12 deletions
diff --git a/net/sunrpc/auth_gss/auth_gss.c b/net/sunrpc/auth_gss/auth_gss.c index 53995af9ca4..a6e57d1c2eb 100644 --- a/net/sunrpc/auth_gss/auth_gss.c +++ b/net/sunrpc/auth_gss/auth_gss.c | |||
@@ -540,7 +540,7 @@ gss_pipe_downcall(struct file *filp, const char __user *src, size_t mlen) | |||
540 | p = gss_fill_context(p, end, ctx, gss_msg->auth->mech); | 540 | p = gss_fill_context(p, end, ctx, gss_msg->auth->mech); |
541 | if (IS_ERR(p)) { | 541 | if (IS_ERR(p)) { |
542 | err = PTR_ERR(p); | 542 | err = PTR_ERR(p); |
543 | gss_msg->msg.errno = (err == -EACCES) ? -EACCES : -EAGAIN; | 543 | gss_msg->msg.errno = (err == -EAGAIN) ? -EAGAIN : -EACCES; |
544 | goto err_release_msg; | 544 | goto err_release_msg; |
545 | } | 545 | } |
546 | gss_msg->ctx = gss_get_ctx(ctx); | 546 | gss_msg->ctx = gss_get_ctx(ctx); |
@@ -967,7 +967,7 @@ gss_validate(struct rpc_task *task, __be32 *p) | |||
967 | if (maj_stat == GSS_S_CONTEXT_EXPIRED) | 967 | if (maj_stat == GSS_S_CONTEXT_EXPIRED) |
968 | clear_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags); | 968 | clear_bit(RPCAUTH_CRED_UPTODATE, &cred->cr_flags); |
969 | if (maj_stat) { | 969 | if (maj_stat) { |
970 | dprintk("RPC: %5u gss_validate: gss_verify_mic returned" | 970 | dprintk("RPC: %5u gss_validate: gss_verify_mic returned " |
971 | "error 0x%08x\n", task->tk_pid, maj_stat); | 971 | "error 0x%08x\n", task->tk_pid, maj_stat); |
972 | goto out_bad; | 972 | goto out_bad; |
973 | } | 973 | } |
diff --git a/net/sunrpc/auth_gss/gss_krb5_mech.c b/net/sunrpc/auth_gss/gss_krb5_mech.c index 9843eacef11..60c3dba545d 100644 --- a/net/sunrpc/auth_gss/gss_krb5_mech.c +++ b/net/sunrpc/auth_gss/gss_krb5_mech.c | |||
@@ -147,13 +147,17 @@ gss_import_sec_context_kerberos(const void *p, | |||
147 | p = simple_get_bytes(p, end, &tmp, sizeof(tmp)); | 147 | p = simple_get_bytes(p, end, &tmp, sizeof(tmp)); |
148 | if (IS_ERR(p)) | 148 | if (IS_ERR(p)) |
149 | goto out_err_free_ctx; | 149 | goto out_err_free_ctx; |
150 | if (tmp != SGN_ALG_DES_MAC_MD5) | 150 | if (tmp != SGN_ALG_DES_MAC_MD5) { |
151 | p = ERR_PTR(-ENOSYS); | ||
151 | goto out_err_free_ctx; | 152 | goto out_err_free_ctx; |
153 | } | ||
152 | p = simple_get_bytes(p, end, &tmp, sizeof(tmp)); | 154 | p = simple_get_bytes(p, end, &tmp, sizeof(tmp)); |
153 | if (IS_ERR(p)) | 155 | if (IS_ERR(p)) |
154 | goto out_err_free_ctx; | 156 | goto out_err_free_ctx; |
155 | if (tmp != SEAL_ALG_DES) | 157 | if (tmp != SEAL_ALG_DES) { |
158 | p = ERR_PTR(-ENOSYS); | ||
156 | goto out_err_free_ctx; | 159 | goto out_err_free_ctx; |
160 | } | ||
157 | p = simple_get_bytes(p, end, &ctx->endtime, sizeof(ctx->endtime)); | 161 | p = simple_get_bytes(p, end, &ctx->endtime, sizeof(ctx->endtime)); |
158 | if (IS_ERR(p)) | 162 | if (IS_ERR(p)) |
159 | goto out_err_free_ctx; | 163 | goto out_err_free_ctx; |
diff --git a/net/sunrpc/auth_gss/gss_krb5_seal.c b/net/sunrpc/auth_gss/gss_krb5_seal.c index 1c6eda5077c..dedcbd6108f 100644 --- a/net/sunrpc/auth_gss/gss_krb5_seal.c +++ b/net/sunrpc/auth_gss/gss_krb5_seal.c | |||
@@ -83,6 +83,7 @@ gss_get_mic_kerberos(struct gss_ctx *gss_ctx, struct xdr_buf *text, | |||
83 | u32 seq_send; | 83 | u32 seq_send; |
84 | 84 | ||
85 | dprintk("RPC: gss_krb5_seal\n"); | 85 | dprintk("RPC: gss_krb5_seal\n"); |
86 | BUG_ON(ctx == NULL); | ||
86 | 87 | ||
87 | now = get_seconds(); | 88 | now = get_seconds(); |
88 | 89 | ||
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 18f0a8dcc09..c59f3ca2b41 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c | |||
@@ -280,7 +280,7 @@ rpc_pipe_poll(struct file *filp, struct poll_table_struct *wait) | |||
280 | mask = POLLOUT | POLLWRNORM; | 280 | mask = POLLOUT | POLLWRNORM; |
281 | if (rpci->ops == NULL) | 281 | if (rpci->ops == NULL) |
282 | mask |= POLLERR | POLLHUP; | 282 | mask |= POLLERR | POLLHUP; |
283 | if (!list_empty(&rpci->pipe)) | 283 | if (filp->private_data || !list_empty(&rpci->pipe)) |
284 | mask |= POLLIN | POLLRDNORM; | 284 | mask |= POLLIN | POLLRDNORM; |
285 | return mask; | 285 | return mask; |
286 | } | 286 | } |
diff --git a/net/sunrpc/xprtrdma/transport.c b/net/sunrpc/xprtrdma/transport.c index 1afeb3eb8e4..6f2112dd9f7 100644 --- a/net/sunrpc/xprtrdma/transport.c +++ b/net/sunrpc/xprtrdma/transport.c | |||
@@ -89,7 +89,7 @@ static struct ctl_table_header *sunrpc_table_header; | |||
89 | 89 | ||
90 | static ctl_table xr_tunables_table[] = { | 90 | static ctl_table xr_tunables_table[] = { |
91 | { | 91 | { |
92 | .ctl_name = CTL_SLOTTABLE_RDMA, | 92 | .ctl_name = CTL_UNNUMBERED, |
93 | .procname = "rdma_slot_table_entries", | 93 | .procname = "rdma_slot_table_entries", |
94 | .data = &xprt_rdma_slot_table_entries, | 94 | .data = &xprt_rdma_slot_table_entries, |
95 | .maxlen = sizeof(unsigned int), | 95 | .maxlen = sizeof(unsigned int), |
@@ -100,7 +100,7 @@ static ctl_table xr_tunables_table[] = { | |||
100 | .extra2 = &max_slot_table_size | 100 | .extra2 = &max_slot_table_size |
101 | }, | 101 | }, |
102 | { | 102 | { |
103 | .ctl_name = CTL_RDMA_MAXINLINEREAD, | 103 | .ctl_name = CTL_UNNUMBERED, |
104 | .procname = "rdma_max_inline_read", | 104 | .procname = "rdma_max_inline_read", |
105 | .data = &xprt_rdma_max_inline_read, | 105 | .data = &xprt_rdma_max_inline_read, |
106 | .maxlen = sizeof(unsigned int), | 106 | .maxlen = sizeof(unsigned int), |
@@ -109,7 +109,7 @@ static ctl_table xr_tunables_table[] = { | |||
109 | .strategy = &sysctl_intvec, | 109 | .strategy = &sysctl_intvec, |
110 | }, | 110 | }, |
111 | { | 111 | { |
112 | .ctl_name = CTL_RDMA_MAXINLINEWRITE, | 112 | .ctl_name = CTL_UNNUMBERED, |
113 | .procname = "rdma_max_inline_write", | 113 | .procname = "rdma_max_inline_write", |
114 | .data = &xprt_rdma_max_inline_write, | 114 | .data = &xprt_rdma_max_inline_write, |
115 | .maxlen = sizeof(unsigned int), | 115 | .maxlen = sizeof(unsigned int), |
@@ -118,7 +118,7 @@ static ctl_table xr_tunables_table[] = { | |||
118 | .strategy = &sysctl_intvec, | 118 | .strategy = &sysctl_intvec, |
119 | }, | 119 | }, |
120 | { | 120 | { |
121 | .ctl_name = CTL_RDMA_WRITEPADDING, | 121 | .ctl_name = CTL_UNNUMBERED, |
122 | .procname = "rdma_inline_write_padding", | 122 | .procname = "rdma_inline_write_padding", |
123 | .data = &xprt_rdma_inline_write_padding, | 123 | .data = &xprt_rdma_inline_write_padding, |
124 | .maxlen = sizeof(unsigned int), | 124 | .maxlen = sizeof(unsigned int), |
@@ -129,7 +129,7 @@ static ctl_table xr_tunables_table[] = { | |||
129 | .extra2 = &max_padding, | 129 | .extra2 = &max_padding, |
130 | }, | 130 | }, |
131 | { | 131 | { |
132 | .ctl_name = CTL_RDMA_MEMREG, | 132 | .ctl_name = CTL_UNNUMBERED, |
133 | .procname = "rdma_memreg_strategy", | 133 | .procname = "rdma_memreg_strategy", |
134 | .data = &xprt_rdma_memreg_strategy, | 134 | .data = &xprt_rdma_memreg_strategy, |
135 | .maxlen = sizeof(unsigned int), | 135 | .maxlen = sizeof(unsigned int), |
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 02298f529da..2f630a512ab 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -1828,7 +1828,7 @@ static struct rpc_xprt *xs_setup_xprt(struct xprt_create *args, | |||
1828 | * @args: rpc transport creation arguments | 1828 | * @args: rpc transport creation arguments |
1829 | * | 1829 | * |
1830 | */ | 1830 | */ |
1831 | struct rpc_xprt *xs_setup_udp(struct xprt_create *args) | 1831 | static struct rpc_xprt *xs_setup_udp(struct xprt_create *args) |
1832 | { | 1832 | { |
1833 | struct sockaddr *addr = args->dstaddr; | 1833 | struct sockaddr *addr = args->dstaddr; |
1834 | struct rpc_xprt *xprt; | 1834 | struct rpc_xprt *xprt; |
@@ -1894,7 +1894,7 @@ struct rpc_xprt *xs_setup_udp(struct xprt_create *args) | |||
1894 | * @args: rpc transport creation arguments | 1894 | * @args: rpc transport creation arguments |
1895 | * | 1895 | * |
1896 | */ | 1896 | */ |
1897 | struct rpc_xprt *xs_setup_tcp(struct xprt_create *args) | 1897 | static struct rpc_xprt *xs_setup_tcp(struct xprt_create *args) |
1898 | { | 1898 | { |
1899 | struct sockaddr *addr = args->dstaddr; | 1899 | struct sockaddr *addr = args->dstaddr; |
1900 | struct rpc_xprt *xprt; | 1900 | struct rpc_xprt *xprt; |