提交 949b2112 编写于 作者: L Linus Torvalds

Merge git://git.linux-nfs.org/pub/linux/nfs-2.6

* git://git.linux-nfs.org/pub/linux/nfs-2.6:
  SUNRPC: Dead code in net/sunrpc/auth_gss/auth_gss.c
  NFS: remove needless check in nfs_opendir()
  NFS: nfs_show_stats; for_each_possible_cpu(), not NR_CPUS
  NFS: make 2 functions static
  NFS,SUNRPC: Fix compiler warnings if CONFIG_PROC_FS & CONFIG_SYSCTL are unset
  NFS: fix PROC_FS=n compile error
  VFS: Fix another open intent Oops
  RPCSEC_GSS: fix leak in krb5 code caused by superfluous kmalloc
...@@ -650,7 +650,7 @@ static void nlmsvc_grant_callback(struct rpc_task *task, void *data) ...@@ -650,7 +650,7 @@ static void nlmsvc_grant_callback(struct rpc_task *task, void *data)
svc_wake_up(block->b_daemon); svc_wake_up(block->b_daemon);
} }
void nlmsvc_grant_release(void *data) static void nlmsvc_grant_release(void *data)
{ {
struct nlm_rqst *call = data; struct nlm_rqst *call = data;
......
...@@ -128,15 +128,14 @@ struct inode_operations nfs4_dir_inode_operations = { ...@@ -128,15 +128,14 @@ struct inode_operations nfs4_dir_inode_operations = {
static int static int
nfs_opendir(struct inode *inode, struct file *filp) nfs_opendir(struct inode *inode, struct file *filp)
{ {
int res = 0; int res;
dfprintk(VFS, "NFS: opendir(%s/%ld)\n", dfprintk(VFS, "NFS: opendir(%s/%ld)\n",
inode->i_sb->s_id, inode->i_ino); inode->i_sb->s_id, inode->i_ino);
lock_kernel(); lock_kernel();
/* Call generic open code in order to cache credentials */ /* Call generic open code in order to cache credentials */
if (!res) res = nfs_open(inode, filp);
res = nfs_open(inode, filp);
unlock_kernel(); unlock_kernel();
return res; return res;
} }
......
...@@ -112,10 +112,9 @@ static void nfs_direct_write_complete(struct nfs_direct_req *dreq, struct inode ...@@ -112,10 +112,9 @@ static void nfs_direct_write_complete(struct nfs_direct_req *dreq, struct inode
*/ */
ssize_t nfs_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, loff_t pos, unsigned long nr_segs) ssize_t nfs_direct_IO(int rw, struct kiocb *iocb, const struct iovec *iov, loff_t pos, unsigned long nr_segs)
{ {
struct dentry *dentry = iocb->ki_filp->f_dentry;
dprintk("NFS: nfs_direct_IO (%s) off/no(%Ld/%lu) EINVAL\n", dprintk("NFS: nfs_direct_IO (%s) off/no(%Ld/%lu) EINVAL\n",
dentry->d_name.name, (long long) pos, nr_segs); iocb->ki_filp->f_dentry->d_name.name,
(long long) pos, nr_segs);
return -EINVAL; return -EINVAL;
} }
...@@ -468,7 +467,6 @@ static const struct rpc_call_ops nfs_commit_direct_ops = { ...@@ -468,7 +467,6 @@ static const struct rpc_call_ops nfs_commit_direct_ops = {
static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq) static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq)
{ {
struct nfs_write_data *data = dreq->commit_data; struct nfs_write_data *data = dreq->commit_data;
struct rpc_task *task = &data->task;
data->inode = dreq->inode; data->inode = dreq->inode;
data->cred = dreq->ctx->cred; data->cred = dreq->ctx->cred;
...@@ -489,7 +487,7 @@ static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq) ...@@ -489,7 +487,7 @@ static void nfs_direct_commit_schedule(struct nfs_direct_req *dreq)
/* Note: task.tk_ops->rpc_release will free dreq->commit_data */ /* Note: task.tk_ops->rpc_release will free dreq->commit_data */
dreq->commit_data = NULL; dreq->commit_data = NULL;
dprintk("NFS: %5u initiated commit call\n", task->tk_pid); dprintk("NFS: %5u initiated commit call\n", data->task.tk_pid);
lock_kernel(); lock_kernel();
rpc_execute(&data->task); rpc_execute(&data->task);
......
...@@ -534,10 +534,9 @@ static int nfs_lock(struct file *filp, int cmd, struct file_lock *fl) ...@@ -534,10 +534,9 @@ static int nfs_lock(struct file *filp, int cmd, struct file_lock *fl)
*/ */
static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl) static int nfs_flock(struct file *filp, int cmd, struct file_lock *fl)
{ {
struct inode * inode = filp->f_mapping->host;
dprintk("NFS: nfs_flock(f=%s/%ld, t=%x, fl=%x)\n", dprintk("NFS: nfs_flock(f=%s/%ld, t=%x, fl=%x)\n",
inode->i_sb->s_id, inode->i_ino, filp->f_dentry->d_inode->i_sb->s_id,
filp->f_dentry->d_inode->i_ino,
fl->fl_type, fl->fl_flags); fl->fl_type, fl->fl_flags);
/* /*
......
...@@ -700,12 +700,9 @@ static int nfs_show_stats(struct seq_file *m, struct vfsmount *mnt) ...@@ -700,12 +700,9 @@ static int nfs_show_stats(struct seq_file *m, struct vfsmount *mnt)
/* /*
* Display superblock I/O counters * Display superblock I/O counters
*/ */
for (cpu = 0; cpu < NR_CPUS; cpu++) { for_each_possible_cpu(cpu) {
struct nfs_iostats *stats; struct nfs_iostats *stats;
if (!cpu_possible(cpu))
continue;
preempt_disable(); preempt_disable();
stats = per_cpu_ptr(nfss->io_stats, cpu); stats = per_cpu_ptr(nfss->io_stats, cpu);
......
...@@ -1218,7 +1218,7 @@ int nfs4_do_close(struct inode *inode, struct nfs4_state *state) ...@@ -1218,7 +1218,7 @@ int nfs4_do_close(struct inode *inode, struct nfs4_state *state)
return status; return status;
} }
static void nfs4_intent_set_file(struct nameidata *nd, struct dentry *dentry, struct nfs4_state *state) static int nfs4_intent_set_file(struct nameidata *nd, struct dentry *dentry, struct nfs4_state *state)
{ {
struct file *filp; struct file *filp;
...@@ -1227,8 +1227,10 @@ static void nfs4_intent_set_file(struct nameidata *nd, struct dentry *dentry, st ...@@ -1227,8 +1227,10 @@ static void nfs4_intent_set_file(struct nameidata *nd, struct dentry *dentry, st
struct nfs_open_context *ctx; struct nfs_open_context *ctx;
ctx = (struct nfs_open_context *)filp->private_data; ctx = (struct nfs_open_context *)filp->private_data;
ctx->state = state; ctx->state = state;
} else return 0;
nfs4_close_state(state, nd->intent.open.flags); }
nfs4_close_state(state, nd->intent.open.flags);
return PTR_ERR(filp);
} }
struct dentry * struct dentry *
...@@ -1835,7 +1837,7 @@ nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr, ...@@ -1835,7 +1837,7 @@ nfs4_proc_create(struct inode *dir, struct dentry *dentry, struct iattr *sattr,
nfs_setattr_update_inode(state->inode, sattr); nfs_setattr_update_inode(state->inode, sattr);
} }
if (status == 0 && nd != NULL && (nd->flags & LOOKUP_OPEN)) if (status == 0 && nd != NULL && (nd->flags & LOOKUP_OPEN))
nfs4_intent_set_file(nd, dentry, state); status = nfs4_intent_set_file(nd, dentry, state);
else else
nfs4_close_state(state, flags); nfs4_close_state(state, flags);
out: out:
......
...@@ -69,9 +69,21 @@ struct rpc_clnt; ...@@ -69,9 +69,21 @@ struct rpc_clnt;
/* /*
* EXPORTed functions for managing rpc_iostats structures * EXPORTed functions for managing rpc_iostats structures
*/ */
#ifdef CONFIG_PROC_FS
struct rpc_iostats * rpc_alloc_iostats(struct rpc_clnt *); struct rpc_iostats * rpc_alloc_iostats(struct rpc_clnt *);
void rpc_count_iostats(struct rpc_task *); void rpc_count_iostats(struct rpc_task *);
void rpc_print_iostats(struct seq_file *, struct rpc_clnt *); void rpc_print_iostats(struct seq_file *, struct rpc_clnt *);
void rpc_free_iostats(struct rpc_iostats *); void rpc_free_iostats(struct rpc_iostats *);
#else /* CONFIG_PROC_FS */
static inline struct rpc_iostats *rpc_alloc_iostats(struct rpc_clnt *clnt) { return NULL; }
static inline void rpc_count_iostats(struct rpc_task *task) {}
static inline void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) {}
static inline void rpc_free_iostats(struct rpc_iostats *stats) {}
#endif /* CONFIG_PROC_FS */
#endif /* _LINUX_SUNRPC_METRICS_H */ #endif /* _LINUX_SUNRPC_METRICS_H */
...@@ -53,6 +53,7 @@ struct rpc_timeout { ...@@ -53,6 +53,7 @@ struct rpc_timeout {
struct rpc_task; struct rpc_task;
struct rpc_xprt; struct rpc_xprt;
struct seq_file;
/* /*
* This describes a complete RPC request * This describes a complete RPC request
......
...@@ -794,7 +794,6 @@ gss_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags) ...@@ -794,7 +794,6 @@ gss_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)
out_err: out_err:
dprintk("RPC: gss_create_cred failed with error %d\n", err); dprintk("RPC: gss_create_cred failed with error %d\n", err);
if (cred) gss_destroy_cred(&cred->gc_base);
return ERR_PTR(err); return ERR_PTR(err);
} }
......
...@@ -212,7 +212,6 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body, ...@@ -212,7 +212,6 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
char *cksumname; char *cksumname;
struct crypto_tfm *tfm = NULL; /* XXX add to ctx? */ struct crypto_tfm *tfm = NULL; /* XXX add to ctx? */
struct scatterlist sg[1]; struct scatterlist sg[1];
u32 code = GSS_S_FAILURE;
switch (cksumtype) { switch (cksumtype) {
case CKSUMTYPE_RSA_MD5: case CKSUMTYPE_RSA_MD5:
...@@ -221,13 +220,11 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body, ...@@ -221,13 +220,11 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
default: default:
dprintk("RPC: krb5_make_checksum:" dprintk("RPC: krb5_make_checksum:"
" unsupported checksum %d", cksumtype); " unsupported checksum %d", cksumtype);
goto out; return GSS_S_FAILURE;
} }
if (!(tfm = crypto_alloc_tfm(cksumname, CRYPTO_TFM_REQ_MAY_SLEEP))) if (!(tfm = crypto_alloc_tfm(cksumname, CRYPTO_TFM_REQ_MAY_SLEEP)))
goto out; return GSS_S_FAILURE;
cksum->len = crypto_tfm_alg_digestsize(tfm); cksum->len = crypto_tfm_alg_digestsize(tfm);
if ((cksum->data = kmalloc(cksum->len, GFP_KERNEL)) == NULL)
goto out;
crypto_digest_init(tfm); crypto_digest_init(tfm);
sg_set_buf(sg, header, hdrlen); sg_set_buf(sg, header, hdrlen);
...@@ -235,10 +232,8 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body, ...@@ -235,10 +232,8 @@ make_checksum(s32 cksumtype, char *header, int hdrlen, struct xdr_buf *body,
process_xdr_buf(body, body_offset, body->len - body_offset, process_xdr_buf(body, body_offset, body->len - body_offset,
checksummer, tfm); checksummer, tfm);
crypto_digest_final(tfm, cksum->data); crypto_digest_final(tfm, cksum->data);
code = 0;
out:
crypto_free_tfm(tfm); crypto_free_tfm(tfm);
return code; return 0;
} }
EXPORT_SYMBOL(make_checksum); EXPORT_SYMBOL(make_checksum);
......
...@@ -176,7 +176,8 @@ void rpc_count_iostats(struct rpc_task *task) ...@@ -176,7 +176,8 @@ void rpc_count_iostats(struct rpc_task *task)
op_metrics->om_execute += execute; op_metrics->om_execute += execute;
} }
void _print_name(struct seq_file *seq, unsigned int op, struct rpc_procinfo *procs) static void _print_name(struct seq_file *seq, unsigned int op,
struct rpc_procinfo *procs)
{ {
if (procs[op].p_name) if (procs[op].p_name)
seq_printf(seq, "\t%12s: ", procs[op].p_name); seq_printf(seq, "\t%12s: ", procs[op].p_name);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册