Re: [PATCH] flex_array: Change behaviour on zero size allocations

From: Steffen Klassert
Date: Tue Feb 01 2011 - 05:24:26 EST


On Mon, Jan 31, 2011 at 08:31:37AM -0800, Dave Hansen wrote:
>
> I think this still has some of the issues of the earlier patch. The
> zero-size check needs to be moved after the ->total_nr_elements check.
> Otherwise, this won't produce any errors:
>
> fa = flex_array_alloc(0, 100, GFP_KERNEL);
> flex_array_put(fa, 1001, ptr, GFP_KERNEL);
>
> > @@ -284,6 +297,8 @@ void *flex_array_get(struct flex_array *fa, unsigned int element_nr)
> > int part_nr = fa_element_to_part_nr(fa, element_nr);
> > struct flex_array_part *part;
> >
> > + if (!fa->total_nr_elements || !fa->element_size)
> > + return NULL;
> > if (element_nr >= fa->total_nr_elements)
> > return NULL;
> > if (elements_fit_in_base(fa))
>
> Do you really need to check fa->total_nr_elements both for zero and
> against element_nr? Seems a but superfluous to me.
>

Both objections are correct, I'll send an updated patch.

Steffen
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/