xfs
[Top] [All Lists]

Re: [PATCH 3/5] repair: handle memory allocation failure from blkmap_gro

To: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Subject: Re: [PATCH 3/5] repair: handle memory allocation failure from blkmap_grow
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Mon, 10 Oct 2011 11:10:57 +1100
Cc: xfs@xxxxxxxxxxx
In-reply-to: <20111009235126.GC13527@xxxxxxxxxxxxx>
References: <1318201910-11144-1-git-send-email-david@xxxxxxxxxxxxx> <1318201910-11144-4-git-send-email-david@xxxxxxxxxxxxx> <20111009235126.GC13527@xxxxxxxxxxxxx>
User-agent: Mutt/1.5.21 (2010-09-15)
On Sun, Oct 09, 2011 at 07:51:26PM -0400, Christoph Hellwig wrote:
> >  static blkmap_t *
> >  blkmap_grow(
> > -   blkmap_t        **blkmapp)
> > +   blkmap_t        *blkmap)
> >  {
> >     pthread_key_t   key = dblkmap_key;
> > -   blkmap_t        *blkmap = *blkmapp;
> > +   blkmap_t        *new_blkmap;
> > +   int             new_naexts = blkmap->naexts + 4;
> >  
> >     if (pthread_getspecific(key) != blkmap) {
> >             key = ablkmap_key;
> >             ASSERT(pthread_getspecific(key) == blkmap);
> >     }
> >  
> > -   blkmap->naexts += 4;
> > -   blkmap = realloc(blkmap, BLKMAP_SIZE(blkmap->naexts));
> > -   if (blkmap == NULL)
> > -           do_error(_("realloc failed in blkmap_grow\n"));
> > -   *blkmapp = blkmap;
> > -   pthread_setspecific(key, blkmap);
> > -   return blkmap;
> > +   new_blkmap = realloc(blkmap, BLKMAP_SIZE(new_naexts));
> > +   if (!new_blkmap) {
> > +           do_error(_("realloc failed in blkmap_grow\n"));
> > +           return NULL;
> > +   }
> > +   blkmap->naexts = new_naexts;
> 
> Why would we modify naexts in the old blkmap?

Ooops. Will fix.


-- 
Dave Chinner
david@xxxxxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>