All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mikulas Patocka <mpatocka@redhat.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Sasha Levin <alexander.levin@microsoft.com>,
	stable@vger.kernel.org
Cc: Mike Snitzer <msnitzer@redhat.com>, Zhang Yi <yizhan@redhat.com>
Subject: [PATCH 3.18-4.7] dm io: fix duplicate bio completion due to missing ref count
Date: Tue, 6 Mar 2018 08:27:42 -0500 (EST)	[thread overview]
Message-ID: <alpine.LRH.2.02.1803060822440.1164@file01.intranet.prod.int.rdu2.redhat.com> (raw)

Hi

This is backport of the upstream commit that fixes memory corruption in 
dm-io. It is suitable for stable kernels 3.18 to 4.7. (the bug didn't 
exist before 3.18)

Mikulas


commit feb7695fe9fb83084aa29de0094774f4c9d4c9fc
Author: Mike Snitzer <snitzer@redhat.com>
Date:   Tue Jun 20 19:14:30 2017 -0400

    dm io: fix duplicate bio completion due to missing ref count
    
    If only a subset of the devices associated with multiple regions support
    a given special operation (eg. DISCARD) then the dec_count() that is
    used to set error for the region must increment the io->count.
    
    Otherwise, when the dec_count() is called it can cause the dm-io
    caller's bio to be completed multiple times.  As was reported against
    the dm-mirror target that had mirror legs with a mix of discard
    capabilities.
    
    Bug: https://bugzilla.kernel.org/show_bug.cgi?id=196077
    Reported-by: Zhang Yi <yizhan@redhat.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>

---
 drivers/md/dm-io.c |    1 +
 1 file changed, 1 insertion(+)

Index: linux-stable/drivers/md/dm-io.c
===================================================================
--- linux-stable.orig/drivers/md/dm-io.c	2018-03-06 14:13:59.000000000 +0100
+++ linux-stable/drivers/md/dm-io.c	2018-03-06 14:14:23.000000000 +0100
@@ -316,6 +316,7 @@ static void do_region(int op, int op_fla
 		special_cmd_max_sectors = q->limits.max_write_same_sectors;
 	if ((op == REQ_OP_DISCARD || op == REQ_OP_WRITE_SAME) &&
 	    special_cmd_max_sectors == 0) {
+		atomic_inc(&io->count);
 		dec_count(io, region, -EOPNOTSUPP);
 		return;
 	}

             reply	other threads:[~2018-03-06 13:27 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-06 13:27 Mikulas Patocka [this message]
2018-03-07 17:26 ` [PATCH 3.18-4.7] dm io: fix duplicate bio completion due to missing ref count Greg Kroah-Hartman
2018-03-08  8:51   ` Mikulas Patocka
2018-03-09 22:12     ` Greg Kroah-Hartman

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=alpine.LRH.2.02.1803060822440.1164@file01.intranet.prod.int.rdu2.redhat.com \
    --to=mpatocka@redhat.com \
    --cc=alexander.levin@microsoft.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=msnitzer@redhat.com \
    --cc=stable@vger.kernel.org \
    --cc=yizhan@redhat.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.