lkml.org 
[lkml]   [2009]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 024/100] md/raid1 - dont assume newly allocated bvecs are initialised.
    -stable review patch.  If anyone has any objections, please let us know.
    ---------------------

    From: NeilBrown <neilb@suse.de>

    upstream commit: 303a0e11d0ee136ad8f53f747f3c377daece763b

    Since commit d3f761104b097738932afcc310fbbbbfb007ef92
    newly allocated bvecs aren't initialised to NULL, so we have
    to be more careful about freeing a bio which only managed
    to get a few pages allocated to it. Otherwise the resync
    process crashes.

    This patch is appropriate for 2.6.29-stable.

    Cc: stable@kernel.org
    Cc: "Jens Axboe" <jens.axboe@oracle.com>
    Reported-by: Gabriele Tozzi <gabriele@tozzi.eu>
    Signed-off-by: NeilBrown <neilb@suse.de>
    Signed-off-by: Chris Wright <chrisw@sous-sol.org>
    ---
    drivers/md/raid1.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    --- a/drivers/md/raid1.c
    +++ b/drivers/md/raid1.c
    @@ -120,6 +120,7 @@ static void * r1buf_pool_alloc(gfp_t gfp
    goto out_free_pages;

    bio->bi_io_vec[i].bv_page = page;
    + bio->bi_vcnt = i+1;
    }
    }
    /* If not user-requests, copy the page pointers to all bios */
    @@ -135,9 +136,9 @@ static void * r1buf_pool_alloc(gfp_t gfp
    return r1_bio;

    out_free_pages:
    - for (i=0; i < RESYNC_PAGES ; i++)
    - for (j=0 ; j < pi->raid_disks; j++)
    - safe_put_page(r1_bio->bios[j]->bi_io_vec[i].bv_page);
    + for (j=0 ; j < pi->raid_disks; j++)
    + for (i=0; i < r1_bio->bios[j]->bi_vcnt ; i++)
    + put_page(r1_bio->bios[j]->bi_io_vec[i].bv_page);
    j = -1;
    out_free_bio:
    while ( ++j < pi->raid_disks )


    \
     
     \ /
      Last update: 2009-04-23 09:41    [W:4.061 / U:0.700 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site