From: Andrew Morton Fix an error-path BIO leak. Cc: Pavel Machek Cc: "Rafael J. Wysocki" Signed-off-by: Andrew Morton --- kernel/power/swap.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff -puN kernel/power/swap.c~swsusp-read-speedup-fix kernel/power/swap.c --- a/kernel/power/swap.c~swsusp-read-speedup-fix +++ a/kernel/power/swap.c @@ -423,7 +423,6 @@ static struct block_device *resume_bdev; static int submit(int rw, pgoff_t page_off, struct page *page, struct bio **bio_chain) { - int error = 0; struct bio *bio; bio = bio_alloc(GFP_ATOMIC, 1); @@ -435,8 +434,8 @@ static int submit(int rw, pgoff_t page_o if (bio_add_page(bio, page, PAGE_SIZE, 0) < PAGE_SIZE) { printk("swsusp: ERROR: adding page to bio at %ld\n", page_off); - error = -EFAULT; - goto Done; + bio_put(bio); + return -EFAULT; } if (bio_chain == NULL) { @@ -456,8 +455,7 @@ static int submit(int rw, pgoff_t page_o *bio_chain = bio; submit_bio(rw, bio); } - Done: - return error; + return 0; } static int bio_read_page(pgoff_t page_off, void *addr, struct bio **bio_chain) _