Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts: drivers/net/pcmcia/pcnet_cs.c net/caif/caif_socket.c
This commit is contained in:
@@ -745,17 +745,18 @@ gss_pipe_release(struct inode *inode)
|
||||
struct rpc_inode *rpci = RPC_I(inode);
|
||||
struct gss_upcall_msg *gss_msg;
|
||||
|
||||
restart:
|
||||
spin_lock(&inode->i_lock);
|
||||
while (!list_empty(&rpci->in_downcall)) {
|
||||
list_for_each_entry(gss_msg, &rpci->in_downcall, list) {
|
||||
|
||||
gss_msg = list_entry(rpci->in_downcall.next,
|
||||
struct gss_upcall_msg, list);
|
||||
if (!list_empty(&gss_msg->msg.list))
|
||||
continue;
|
||||
gss_msg->msg.errno = -EPIPE;
|
||||
atomic_inc(&gss_msg->count);
|
||||
__gss_unhash_msg(gss_msg);
|
||||
spin_unlock(&inode->i_lock);
|
||||
gss_release_msg(gss_msg);
|
||||
spin_lock(&inode->i_lock);
|
||||
goto restart;
|
||||
}
|
||||
spin_unlock(&inode->i_lock);
|
||||
|
||||
|
||||
@@ -237,6 +237,7 @@ get_key(const void *p, const void *end,
|
||||
if (!supported_gss_krb5_enctype(alg)) {
|
||||
printk(KERN_WARNING "gss_kerberos_mech: unsupported "
|
||||
"encryption key algorithm %d\n", alg);
|
||||
p = ERR_PTR(-EINVAL);
|
||||
goto out_err;
|
||||
}
|
||||
p = simple_get_netobj(p, end, &key);
|
||||
@@ -282,15 +283,19 @@ gss_import_v1_context(const void *p, const void *end, struct krb5_ctx *ctx)
|
||||
ctx->enctype = ENCTYPE_DES_CBC_RAW;
|
||||
|
||||
ctx->gk5e = get_gss_krb5_enctype(ctx->enctype);
|
||||
if (ctx->gk5e == NULL)
|
||||
if (ctx->gk5e == NULL) {
|
||||
p = ERR_PTR(-EINVAL);
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
/* The downcall format was designed before we completely understood
|
||||
* the uses of the context fields; so it includes some stuff we
|
||||
* just give some minimal sanity-checking, and some we ignore
|
||||
* completely (like the next twenty bytes): */
|
||||
if (unlikely(p + 20 > end || p + 20 < p))
|
||||
if (unlikely(p + 20 > end || p + 20 < p)) {
|
||||
p = ERR_PTR(-EFAULT);
|
||||
goto out_err;
|
||||
}
|
||||
p += 20;
|
||||
p = simple_get_bytes(p, end, &tmp, sizeof(tmp));
|
||||
if (IS_ERR(p))
|
||||
@@ -619,6 +624,7 @@ gss_import_v2_context(const void *p, const void *end, struct krb5_ctx *ctx,
|
||||
if (ctx->seq_send64 != ctx->seq_send) {
|
||||
dprintk("%s: seq_send64 %lx, seq_send %x overflow?\n", __func__,
|
||||
(long unsigned)ctx->seq_send64, ctx->seq_send);
|
||||
p = ERR_PTR(-EINVAL);
|
||||
goto out_err;
|
||||
}
|
||||
p = simple_get_bytes(p, end, &ctx->enctype, sizeof(ctx->enctype));
|
||||
|
||||
@@ -100,6 +100,7 @@ gss_import_sec_context_spkm3(const void *p, size_t len,
|
||||
if (version != 1) {
|
||||
dprintk("RPC: unknown spkm3 token format: "
|
||||
"obsolete nfs-utils?\n");
|
||||
p = ERR_PTR(-EINVAL);
|
||||
goto out_err_free_ctx;
|
||||
}
|
||||
|
||||
@@ -135,8 +136,10 @@ gss_import_sec_context_spkm3(const void *p, size_t len,
|
||||
if (IS_ERR(p))
|
||||
goto out_err_free_intg_alg;
|
||||
|
||||
if (p != end)
|
||||
if (p != end) {
|
||||
p = ERR_PTR(-EFAULT);
|
||||
goto out_err_free_intg_key;
|
||||
}
|
||||
|
||||
ctx_id->internal_ctx_id = ctx;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user