mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
SUNRPC: Use GFP_NOFS when allocating credentials
Since the credentials may be allocated during the call to rpc_new_task(), which again may be called by a memory allocator... Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
7e5f614660
commit
0f38b873ae
5 changed files with 11 additions and 11 deletions
|
@ -146,7 +146,7 @@ simple_get_netobj(const void *p, const void *end, struct xdr_netobj *dest)
|
||||||
q = (const void *)((const char *)p + len);
|
q = (const void *)((const char *)p + len);
|
||||||
if (unlikely(q > end || q < p))
|
if (unlikely(q > end || q < p))
|
||||||
return ERR_PTR(-EFAULT);
|
return ERR_PTR(-EFAULT);
|
||||||
dest->data = kmemdup(p, len, GFP_KERNEL);
|
dest->data = kmemdup(p, len, GFP_NOFS);
|
||||||
if (unlikely(dest->data == NULL))
|
if (unlikely(dest->data == NULL))
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
dest->len = len;
|
dest->len = len;
|
||||||
|
@ -171,7 +171,7 @@ gss_alloc_context(void)
|
||||||
{
|
{
|
||||||
struct gss_cl_ctx *ctx;
|
struct gss_cl_ctx *ctx;
|
||||||
|
|
||||||
ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
|
ctx = kzalloc(sizeof(*ctx), GFP_NOFS);
|
||||||
if (ctx != NULL) {
|
if (ctx != NULL) {
|
||||||
ctx->gc_proc = RPC_GSS_PROC_DATA;
|
ctx->gc_proc = RPC_GSS_PROC_DATA;
|
||||||
ctx->gc_seq = 1; /* NetApp 6.4R1 doesn't accept seq. no. 0 */
|
ctx->gc_seq = 1; /* NetApp 6.4R1 doesn't accept seq. no. 0 */
|
||||||
|
@ -341,7 +341,7 @@ gss_alloc_msg(struct gss_auth *gss_auth, uid_t uid)
|
||||||
{
|
{
|
||||||
struct gss_upcall_msg *gss_msg;
|
struct gss_upcall_msg *gss_msg;
|
||||||
|
|
||||||
gss_msg = kzalloc(sizeof(*gss_msg), GFP_KERNEL);
|
gss_msg = kzalloc(sizeof(*gss_msg), GFP_NOFS);
|
||||||
if (gss_msg != NULL) {
|
if (gss_msg != NULL) {
|
||||||
INIT_LIST_HEAD(&gss_msg->list);
|
INIT_LIST_HEAD(&gss_msg->list);
|
||||||
rpc_init_wait_queue(&gss_msg->rpc_waitqueue, "RPCSEC_GSS upcall waitq");
|
rpc_init_wait_queue(&gss_msg->rpc_waitqueue, "RPCSEC_GSS upcall waitq");
|
||||||
|
@ -503,7 +503,7 @@ gss_pipe_downcall(struct file *filp, const char __user *src, size_t mlen)
|
||||||
if (mlen > MSG_BUF_MAXSIZE)
|
if (mlen > MSG_BUF_MAXSIZE)
|
||||||
goto out;
|
goto out;
|
||||||
err = -ENOMEM;
|
err = -ENOMEM;
|
||||||
buf = kmalloc(mlen, GFP_KERNEL);
|
buf = kmalloc(mlen, GFP_NOFS);
|
||||||
if (!buf)
|
if (!buf)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
@ -806,7 +806,7 @@ gss_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)
|
||||||
dprintk("RPC: gss_create_cred for uid %d, flavor %d\n",
|
dprintk("RPC: gss_create_cred for uid %d, flavor %d\n",
|
||||||
acred->uid, auth->au_flavor);
|
acred->uid, auth->au_flavor);
|
||||||
|
|
||||||
if (!(cred = kzalloc(sizeof(*cred), GFP_KERNEL)))
|
if (!(cred = kzalloc(sizeof(*cred), GFP_NOFS)))
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
rpcauth_init_cred(&cred->gc_base, acred, auth, &gss_credops);
|
rpcauth_init_cred(&cred->gc_base, acred, auth, &gss_credops);
|
||||||
|
|
|
@ -70,7 +70,7 @@ simple_get_netobj(const void *p, const void *end, struct xdr_netobj *res)
|
||||||
q = (const void *)((const char *)p + len);
|
q = (const void *)((const char *)p + len);
|
||||||
if (unlikely(q > end || q < p))
|
if (unlikely(q > end || q < p))
|
||||||
return ERR_PTR(-EFAULT);
|
return ERR_PTR(-EFAULT);
|
||||||
res->data = kmemdup(p, len, GFP_KERNEL);
|
res->data = kmemdup(p, len, GFP_NOFS);
|
||||||
if (unlikely(res->data == NULL))
|
if (unlikely(res->data == NULL))
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
res->len = len;
|
res->len = len;
|
||||||
|
@ -131,7 +131,7 @@ gss_import_sec_context_kerberos(const void *p,
|
||||||
struct krb5_ctx *ctx;
|
struct krb5_ctx *ctx;
|
||||||
int tmp;
|
int tmp;
|
||||||
|
|
||||||
if (!(ctx = kzalloc(sizeof(*ctx), GFP_KERNEL)))
|
if (!(ctx = kzalloc(sizeof(*ctx), GFP_NOFS)))
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
p = simple_get_bytes(p, end, &ctx->initiate, sizeof(ctx->initiate));
|
p = simple_get_bytes(p, end, &ctx->initiate, sizeof(ctx->initiate));
|
||||||
|
|
|
@ -76,7 +76,7 @@ simple_get_netobj(const void *p, const void *end, struct xdr_netobj *res)
|
||||||
q = (const void *)((const char *)p + len);
|
q = (const void *)((const char *)p + len);
|
||||||
if (unlikely(q > end || q < p))
|
if (unlikely(q > end || q < p))
|
||||||
return ERR_PTR(-EFAULT);
|
return ERR_PTR(-EFAULT);
|
||||||
res->data = kmemdup(p, len, GFP_KERNEL);
|
res->data = kmemdup(p, len, GFP_NOFS);
|
||||||
if (unlikely(res->data == NULL))
|
if (unlikely(res->data == NULL))
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
return q;
|
return q;
|
||||||
|
@ -90,7 +90,7 @@ gss_import_sec_context_spkm3(const void *p, size_t len,
|
||||||
struct spkm3_ctx *ctx;
|
struct spkm3_ctx *ctx;
|
||||||
int version;
|
int version;
|
||||||
|
|
||||||
if (!(ctx = kzalloc(sizeof(*ctx), GFP_KERNEL)))
|
if (!(ctx = kzalloc(sizeof(*ctx), GFP_NOFS)))
|
||||||
goto out_err;
|
goto out_err;
|
||||||
|
|
||||||
p = simple_get_bytes(p, end, &version, sizeof(version));
|
p = simple_get_bytes(p, end, &version, sizeof(version));
|
||||||
|
|
|
@ -90,7 +90,7 @@ asn1_bitstring_len(struct xdr_netobj *in, int *enclen, int *zerobits)
|
||||||
int
|
int
|
||||||
decode_asn1_bitstring(struct xdr_netobj *out, char *in, int enclen, int explen)
|
decode_asn1_bitstring(struct xdr_netobj *out, char *in, int enclen, int explen)
|
||||||
{
|
{
|
||||||
if (!(out->data = kzalloc(explen,GFP_KERNEL)))
|
if (!(out->data = kzalloc(explen,GFP_NOFS)))
|
||||||
return 0;
|
return 0;
|
||||||
out->len = explen;
|
out->len = explen;
|
||||||
memcpy(out->data, in, enclen);
|
memcpy(out->data, in, enclen);
|
||||||
|
|
|
@ -66,7 +66,7 @@ unx_create_cred(struct rpc_auth *auth, struct auth_cred *acred, int flags)
|
||||||
dprintk("RPC: allocating UNIX cred for uid %d gid %d\n",
|
dprintk("RPC: allocating UNIX cred for uid %d gid %d\n",
|
||||||
acred->uid, acred->gid);
|
acred->uid, acred->gid);
|
||||||
|
|
||||||
if (!(cred = kmalloc(sizeof(*cred), GFP_KERNEL)))
|
if (!(cred = kmalloc(sizeof(*cred), GFP_NOFS)))
|
||||||
return ERR_PTR(-ENOMEM);
|
return ERR_PTR(-ENOMEM);
|
||||||
|
|
||||||
rpcauth_init_cred(&cred->uc_base, acred, auth, &unix_credops);
|
rpcauth_init_cred(&cred->uc_base, acred, auth, &unix_credops);
|
||||||
|
|
Loading…
Reference in a new issue