diff options
author | Subhash Peddamallu <subhash.peddamallu@gmail.com> | 2009-02-16 10:27:07 +0100 |
---|---|---|
committer | Jens Axboe <jens.axboe@oracle.com> | 2009-02-18 10:32:01 +0100 |
commit | a60e78e57a17d55bbd5a96da16fe9649d364b987 (patch) | |
tree | 5b7a7c5977ee8862166f743d1aede56278c4971b /fs/bio.c | |
parent | 93dbb393503d53cd226e5e1f0088fe8f4dbaa2b8 (diff) | |
download | linux-a60e78e57a17d55bbd5a96da16fe9649d364b987.tar.gz linux-a60e78e57a17d55bbd5a96da16fe9649d364b987.tar.bz2 linux-a60e78e57a17d55bbd5a96da16fe9649d364b987.zip |
fs/bio: bio_alloc_bioset: pass right object ptr to mempool_free
When freeing from bio pool use right ptr to account for bs->front_pad,
instead of bio ptr,
Signed-off-by: Subhash Peddamallu <subhash.peddamallu@gmail.com>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'fs/bio.c')
-rw-r--r-- | fs/bio.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -302,9 +302,10 @@ void bio_init(struct bio *bio) struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs) { struct bio *bio = NULL; + void *p; if (bs) { - void *p = mempool_alloc(bs->bio_pool, gfp_mask); + p = mempool_alloc(bs->bio_pool, gfp_mask); if (p) bio = p + bs->front_pad; @@ -329,7 +330,7 @@ struct bio *bio_alloc_bioset(gfp_t gfp_mask, int nr_iovecs, struct bio_set *bs) } if (unlikely(!bvl)) { if (bs) - mempool_free(bio, bs->bio_pool); + mempool_free(p, bs->bio_pool); else kfree(bio); bio = NULL; |