Messages in this thread | | | Date | Tue, 12 Feb 2008 16:57:01 -0800 (PST) | From | David Rientjes <> | Subject | Re: [patch 3/4] mempolicy: add MPOL_F_STATIC_NODES flag |
| |
On Tue, 12 Feb 2008, Lee Schermerhorn wrote:
> PATCH mempolicy - consolidate mpol_new() error paths > > Use common error path in mpol_new() for errors that we discover > after allocation the new mempolicy structure. Free the mempolicy > in the common error path. > > Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com> > > mm/mempolicy.c | 16 +++++++++------- > 1 file changed, 9 insertions(+), 7 deletions(-) > > Index: Linux/mm/mempolicy.c > =================================================================== > --- Linux.orig/mm/mempolicy.c 2008-02-12 15:18:12.000000000 -0700 > +++ Linux/mm/mempolicy.c 2008-02-12 15:22:07.000000000 -0700 > @@ -156,6 +156,7 @@ static struct mempolicy *mpol_new(enum m > { > struct mempolicy *policy; > nodemask_t cpuset_context_nmask; > + void *error_code = ERR_PTR(-EINVAL); > > pr_debug("setting mode %d flags %d nodes[0] %lx\n", > mode, flags, nodes ? nodes_addr(*nodes)[0] : -1); > @@ -172,8 +173,7 @@ static struct mempolicy *mpol_new(enum m > switch (mode) { > case MPOL_INTERLEAVE: > if (nodes_empty(*nodes) || nodes_empty(cpuset_context_nmask)) { > - kmem_cache_free(policy_cache, policy); > - return ERR_PTR(-EINVAL); > + goto free_mpol; > } > policy->v.nodes = cpuset_context_nmask; > break;
You can also get rid of the parentheses to make checkpatch.pl happy, too.
> @@ -184,14 +184,12 @@ static struct mempolicy *mpol_new(enum m > break; > case MPOL_BIND: > if (nodes_empty(*nodes)) { > - kmem_cache_free(policy_cache, policy); > - return ERR_PTR(-EINVAL); > + goto free_mpol; > } > policy->v.zonelist = bind_zonelist(&cpuset_context_nmask); > if (IS_ERR(policy->v.zonelist)) { > - void *error_code = policy->v.zonelist; > - kmem_cache_free(policy_cache, policy); > - return error_code; > + error_code = policy->v.zonelist; > + goto free_mpol; > } > break; > default: > @@ -201,6 +199,10 @@ static struct mempolicy *mpol_new(enum m > policy->cpuset_mems_allowed = cpuset_mems_allowed(current); > policy->user_nodemask = *nodes; > return policy; > + > +free_mpol: > + kmem_cache_free(policy_cache, policy); > + return error_code; > } > > static void gather_stats(struct page *, void *, int pte_dirty); >
I'll fold this into my patchset when I repost it, thanks.
David
| |