X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=fs%2Fbio.c;h=71072ab99128aadf1090e2ceab32bae67827dc9c;hb=3376b8b753bcc300c4f1b170d01c2fb472889a3d;hp=5eaa70c9d96e6bb3900930d63beb224f38d15c8f;hpb=aacea90fa447855f2d5a15ee0b9fd5273cdd7c5b;p=~andy%2Flinux diff --git a/fs/bio.c b/fs/bio.c index 5eaa70c9d96..71072ab9912 100644 --- a/fs/bio.c +++ b/fs/bio.c @@ -73,7 +73,7 @@ static struct kmem_cache *bio_find_or_create_slab(unsigned int extra_size) { unsigned int sz = sizeof(struct bio) + extra_size; struct kmem_cache *slab = NULL; - struct bio_slab *bslab; + struct bio_slab *bslab, *new_bio_slabs; unsigned int i, entry = -1; mutex_lock(&bio_slab_lock); @@ -97,11 +97,12 @@ static struct kmem_cache *bio_find_or_create_slab(unsigned int extra_size) if (bio_slab_nr == bio_slab_max && entry == -1) { bio_slab_max <<= 1; - bio_slabs = krealloc(bio_slabs, - bio_slab_max * sizeof(struct bio_slab), - GFP_KERNEL); - if (!bio_slabs) + new_bio_slabs = krealloc(bio_slabs, + bio_slab_max * sizeof(struct bio_slab), + GFP_KERNEL); + if (!new_bio_slabs) goto out_unlock; + bio_slabs = new_bio_slabs; } if (entry == -1) entry = bio_slab_nr++;