Re: [patch] ext2_fill_super breakage

Nikita Danilov
2002-03-28T14:37:11Z

Alexander Viro writes:
>
>
> On Wed, 27 Mar 2002, Andrew Morton wrote:
>
> > In 2.5.7 there is a thinko in the allocation and initialisation
> > of the fs-private superblock for ext2. It's passing the wrong type
> > to the sizeof operator (which of course gives the wrong size)
> > when allocating and clearing the memory.
>
> > Lesson for the day: this is one of the reasons why this idiom:
> >
> > some_type *p;
> >
> > p = malloc(sizeof(*p));
> > ...
> > memset(p, 0, sizeof(*p));
> >
> > is preferable to
> >
> > some_type *p;
> >
> > p = malloc(sizeof(some_type));
> > ...
> > memset(p, 0, sizeof(some_type));
>
> ... however, there is a lot of reasons why the former is preferable.
> For one thing, the latter is hell on any search. Moreover, I would
> argue that memset() on a structure is not a good idea - better do
> the explicit initialization.

Explicit initialization always leaves room for some "pad" field inserted
by compiler for alignment to be left with garbage. This is more than
just annoyance when structure is something that will be written to the
disk. Reiserfs had such problems.

>
>

Nikita.