[dm-devel] Re: Bug in dm-stripe.c driver
Alasdair G Kergon
agk at redhat.com
Wed Nov 21 19:42:14 UTC 2007
On Wed, Nov 21, 2007 at 07:39:32PM +0000, Alasdair G Kergon wrote:
> On Wed, Nov 21, 2007 at 11:15:52AM -0800, Wood, Brian J wrote:
> > /***** Here's the problem spot *****/
> > struct stripe stripe[0];
>
> That one must remain the last element in the struct.
> Add any new fields above it.
Here's how the real size is calculated before it's allocated:
static inline struct stripe_c *alloc_context(unsigned int stripes)
{
size_t len;
if (array_too_big(sizeof(struct stripe_c), sizeof(struct stripe),
stripes))
return NULL;
len = sizeof(struct stripe_c) + (sizeof(struct stripe) * stripes);
return kmalloc(len, GFP_KERNEL);
}
Alasdair
--
agk at redhat.com
More information about the dm-devel
mailing list