From: Mike Snitzer <snitzer@redhat.com>
To: sultan@kerneltoast.com
Cc: dm-devel@redhat.com, Alasdair Kergon <agk@redhat.com>,
linux-kernel@vger.kernel.org
Subject: Re: dm crypt: fix memory leak in dm_crypt_integrity_io_alloc() error path
Date: Fri, 22 Feb 2019 17:45:18 -0500 [thread overview]
Message-ID: <20190222224518.GA11359@redhat.com> (raw)
In-Reply-To: <20190216210022.29483-1-sultan@kerneltoast.com>
On Sat, Feb 16 2019 at 4:00pm -0500,
sultan@kerneltoast.com <sultan@kerneltoast.com> wrote:
> From: Sultan Alsawaf <sultan@kerneltoast.com>
>
> dm_crypt_integrity_io_alloc() allocates space for an integrity payload but
> doesn't free it in the error path, leaking memory. Add a bio_integrity_free()
> invocation upon error to fix the memory leak.
>
> Signed-off-by: Sultan Alsawaf <sultan@kerneltoast.com>
> ---
> drivers/md/dm-crypt.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/md/dm-crypt.c b/drivers/md/dm-crypt.c
> index dd538e6b2..f731e1fe0 100644
> --- a/drivers/md/dm-crypt.c
> +++ b/drivers/md/dm-crypt.c
> @@ -939,8 +939,10 @@ static int dm_crypt_integrity_io_alloc(struct dm_crypt_io *io, struct bio *bio)
>
> ret = bio_integrity_add_page(bio, virt_to_page(io->integrity_metadata),
> tag_len, offset_in_page(io->integrity_metadata));
> - if (unlikely(ret != tag_len))
> + if (unlikely(ret != tag_len)) {
> + bio_integrity_free(bio);
> return -ENOMEM;
> + }
>
> return 0;
> }
Since commit 7c20f11680a4 bio_integrity_free() is no longer and exported
symbol.
But that aside, this dm-crypt clone bio's endio will clean up the bip
once -ENOMEM return starts to make its way out via
crypt_alloc_buffer()'s bio_put().
Mike
prev parent reply other threads:[~2019-02-22 22:45 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-16 21:00 [PATCH] dm crypt: fix memory leak in dm_crypt_integrity_io_alloc() error path sultan
2019-02-16 21:00 ` sultan
2019-02-22 22:45 ` Mike Snitzer [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190222224518.GA11359@redhat.com \
--to=snitzer@redhat.com \
--cc=agk@redhat.com \
--cc=dm-devel@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sultan@kerneltoast.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.