From: Greg Edwards Date: Wed, 8 Aug 2018 19:27:53 +0000 (-0600) Subject: block: bvec_nr_vecs() returns value for wrong slab X-Git-Tag: v4.14.70~60 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d67c7c9dd14f3f6d6743d802ef017f14ddc73d3a;p=platform%2Fkernel%2Flinux-exynos.git block: bvec_nr_vecs() returns value for wrong slab [ Upstream commit d6c02a9beb67f13d5f14f23e72fa9981e8b84477 ] In commit ed996a52c868 ("block: simplify and cleanup bvec pool handling"), the value of the slab index is incremented by one in bvec_alloc() after the allocation is done to indicate an index value of 0 does not need to be later freed. bvec_nr_vecs() was not updated accordingly, and thus returns the wrong value. Decrement idx before performing the lookup. Fixes: ed996a52c868 ("block: simplify and cleanup bvec pool handling") Signed-off-by: Greg Edwards Signed-off-by: Jens Axboe Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- diff --git a/block/bio.c b/block/bio.c index 194d28cd..2e5d881 100644 --- a/block/bio.c +++ b/block/bio.c @@ -156,7 +156,7 @@ out: unsigned int bvec_nr_vecs(unsigned short idx) { - return bvec_slabs[idx].nr_vecs; + return bvec_slabs[--idx].nr_vecs; } void bvec_free(mempool_t *pool, struct bio_vec *bv, unsigned int idx)