[PATCH 1/2] block: increase bio_slab_nr only for necessary case

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When fail to create new cache in bio_find_or_create_slab(),
we should not increase bio_slab_nr because it will cause
referring uninitilized data in subsequent search.

Signed-off-by: Chengguang Xu <cgxu519@xxxxxxx>
---
 block/bio.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/block/bio.c b/block/bio.c
index 4db1008309ed..8081906f5d01 100644
--- a/block/bio.c
+++ b/block/bio.c
@@ -109,7 +109,7 @@ static struct kmem_cache *bio_find_or_create_slab(unsigned int extra_size)
 		bio_slabs = new_bio_slabs;
 	}
 	if (entry == -1)
-		entry = bio_slab_nr++;
+		entry = bio_slab_nr;
 
 	bslab = &bio_slabs[entry];
 
@@ -122,6 +122,10 @@ static struct kmem_cache *bio_find_or_create_slab(unsigned int extra_size)
 	bslab->slab = slab;
 	bslab->slab_ref = 1;
 	bslab->slab_size = sz;
+
+	if (entry == bio_slab_nr)
+		bio_slab_nr++;
+
 out_unlock:
 	mutex_unlock(&bio_slab_lock);
 	return slab;
-- 
2.20.1




[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux