Loading fs/nfsd/nfs4xdr.c +9 −12 Original line number Diff line number Diff line Loading @@ -182,16 +182,14 @@ static int zero_clientid(clientid_t *clid) /** * defer_free - mark an allocation as deferred freed * @argp: NFSv4 compound argument structure to be freed with * @release: release callback to free @p, typically kfree() * @p: pointer to be freed * @argp: NFSv4 compound argument structure * @p: pointer to be freed (with kfree()) * * Marks @p to be freed when processing the compound operation * described in @argp finishes. */ static int defer_free(struct nfsd4_compoundargs *argp, void (*release)(const void *), void *p) defer_free(struct nfsd4_compoundargs *argp, void *p) { struct tmpbuf *tb; Loading @@ -199,7 +197,6 @@ defer_free(struct nfsd4_compoundargs *argp, if (!tb) return -ENOMEM; tb->buf = p; tb->release = release; tb->next = argp->to_free; argp->to_free = tb; return 0; Loading @@ -225,7 +222,7 @@ static char *savemem(struct nfsd4_compoundargs *argp, __be32 *p, int nbytes) BUG_ON(p != argp->tmpp); argp->tmpp = NULL; } if (defer_free(argp, kfree, p)) { if (defer_free(argp, p)) { kfree(p); return NULL; } else Loading Loading @@ -296,7 +293,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, if (*acl == NULL) return nfserr_jukebox; defer_free(argp, kfree, *acl); defer_free(argp, *acl); (*acl)->naces = nace; for (ace = (*acl)->aces; ace < (*acl)->aces + nace; ace++) { Loading Loading @@ -422,7 +419,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, if (!label->data) return nfserr_jukebox; label->len = dummy32; defer_free(argp, kfree, label->data); defer_free(argp, label->data); memcpy(label->data, buf, dummy32); } #endif Loading Loading @@ -610,7 +607,7 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create return nfserr_jukebox; memcpy(create->cr_data, p, create->cr_datalen); create->cr_data[create->cr_datalen] = '\0'; defer_free(argp, kfree, create->cr_data); defer_free(argp, create->cr_data); break; case NF4BLK: case NF4CHR: Loading Loading @@ -1486,7 +1483,7 @@ nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_sta goto out; } defer_free(argp, kfree, stateid); defer_free(argp, stateid); INIT_LIST_HEAD(&stateid->ts_id_list); list_add_tail(&stateid->ts_id_list, &test_stateid->ts_stateid_list); Loading Loading @@ -3972,7 +3969,7 @@ int nfsd4_release_compoundargs(void *rq, __be32 *p, void *resp) while (args->to_free) { struct tmpbuf *tb = args->to_free; args->to_free = tb->next; tb->release(tb->buf); kfree(tb->buf); kfree(tb); } return 1; Loading fs/nfsd/xdr4.h +0 −1 Original line number Diff line number Diff line Loading @@ -488,7 +488,6 @@ struct nfsd4_compoundargs { __be32 * tmpp; struct tmpbuf { struct tmpbuf *next; void (*release)(const void *); void *buf; } *to_free; Loading Loading
fs/nfsd/nfs4xdr.c +9 −12 Original line number Diff line number Diff line Loading @@ -182,16 +182,14 @@ static int zero_clientid(clientid_t *clid) /** * defer_free - mark an allocation as deferred freed * @argp: NFSv4 compound argument structure to be freed with * @release: release callback to free @p, typically kfree() * @p: pointer to be freed * @argp: NFSv4 compound argument structure * @p: pointer to be freed (with kfree()) * * Marks @p to be freed when processing the compound operation * described in @argp finishes. */ static int defer_free(struct nfsd4_compoundargs *argp, void (*release)(const void *), void *p) defer_free(struct nfsd4_compoundargs *argp, void *p) { struct tmpbuf *tb; Loading @@ -199,7 +197,6 @@ defer_free(struct nfsd4_compoundargs *argp, if (!tb) return -ENOMEM; tb->buf = p; tb->release = release; tb->next = argp->to_free; argp->to_free = tb; return 0; Loading @@ -225,7 +222,7 @@ static char *savemem(struct nfsd4_compoundargs *argp, __be32 *p, int nbytes) BUG_ON(p != argp->tmpp); argp->tmpp = NULL; } if (defer_free(argp, kfree, p)) { if (defer_free(argp, p)) { kfree(p); return NULL; } else Loading Loading @@ -296,7 +293,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, if (*acl == NULL) return nfserr_jukebox; defer_free(argp, kfree, *acl); defer_free(argp, *acl); (*acl)->naces = nace; for (ace = (*acl)->aces; ace < (*acl)->aces + nace; ace++) { Loading Loading @@ -422,7 +419,7 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, if (!label->data) return nfserr_jukebox; label->len = dummy32; defer_free(argp, kfree, label->data); defer_free(argp, label->data); memcpy(label->data, buf, dummy32); } #endif Loading Loading @@ -610,7 +607,7 @@ nfsd4_decode_create(struct nfsd4_compoundargs *argp, struct nfsd4_create *create return nfserr_jukebox; memcpy(create->cr_data, p, create->cr_datalen); create->cr_data[create->cr_datalen] = '\0'; defer_free(argp, kfree, create->cr_data); defer_free(argp, create->cr_data); break; case NF4BLK: case NF4CHR: Loading Loading @@ -1486,7 +1483,7 @@ nfsd4_decode_test_stateid(struct nfsd4_compoundargs *argp, struct nfsd4_test_sta goto out; } defer_free(argp, kfree, stateid); defer_free(argp, stateid); INIT_LIST_HEAD(&stateid->ts_id_list); list_add_tail(&stateid->ts_id_list, &test_stateid->ts_stateid_list); Loading Loading @@ -3972,7 +3969,7 @@ int nfsd4_release_compoundargs(void *rq, __be32 *p, void *resp) while (args->to_free) { struct tmpbuf *tb = args->to_free; args->to_free = tb->next; tb->release(tb->buf); kfree(tb->buf); kfree(tb); } return 1; Loading
fs/nfsd/xdr4.h +0 −1 Original line number Diff line number Diff line Loading @@ -488,7 +488,6 @@ struct nfsd4_compoundargs { __be32 * tmpp; struct tmpbuf { struct tmpbuf *next; void (*release)(const void *); void *buf; } *to_free; Loading