[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