Thanks for reporting the memory leak. Will add a fix. On Tue, Dec 1, 2020 at 3:58 PM Aleksei Marov <alekseymmm@xxxxxxx> wrote: > > On Tue, 2020-12-01 at 11:09 +0530, SelvaKumar S wrote: > > + ret = __blkdev_issue_copy(bdev, dest, nr_srcs, rlist, gfp_mask, flags, > > + &bio); > > + if (!ret && bio) { > > + ret = submit_bio_wait(bio); > > + if (ret == -EOPNOTSUPP) > > + ret = 0; > > + > > + kfree(page_address(bio_first_bvec_all(bio)->bv_page) + > > + bio_first_bvec_all(bio)->bv_offset); > > + bio_put(bio); > > + } > > + > > + return ret; > > +} > I think there is an issue here that if bio_add_page returns error in > __blkdev_issue_copy then ret is -ENOMEM and we never do bio_put for bio > allocated in __blkdev_issue_copy so it is small memory leak. > >