diff options
Diffstat (limited to 'block/bio.c')
-rw-r--r-- | block/bio.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/block/bio.c b/block/bio.c index 4ca3f31ce45f..68ce75fd9b7c 100644 --- a/block/bio.c +++ b/block/bio.c @@ -1630,8 +1630,18 @@ again: goto again; } - /* release cgroup info */ - bio_uninit(bio); +#ifdef CONFIG_BLK_CGROUP + /* + * Release cgroup info. We shouldn't have to do this here, but quite + * a few callers of bio_init fail to call bio_uninit, so we cover up + * for that here at least for now. + */ + if (bio->bi_blkg) { + blkg_put(bio->bi_blkg); + bio->bi_blkg = NULL; + } +#endif + if (bio->bi_end_io) bio->bi_end_io(bio); } |