[Devel] [PATCH RHEL7 COMMIT] Revert "ploop: Remove excess variable"

Konstantin Khorenko khorenko at virtuozzo.com
Tue Mar 26 12:37:01 MSK 2019


The commit is pushed to "branch-rh7-3.10.0-957.10.1.vz7.85.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git
after rh7-3.10.0-957.10.1.vz7.85.3
------>
commit 855b630cf3d5afe7c96c230b1958d0c02ffd6ae6
Author: Kirill Tkhai <ktkhai at virtuozzo.com>
Date:   Tue Mar 26 12:36:59 2019 +0300

    Revert "ploop: Remove excess variable"
    
    saved_ioc may be NULL. Then we increment the counter
    and never decrement it. It even may overflow later.
    
    https://jira.sw.ru/browse/PSBM-93006
    
    Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
 drivers/block/ploop/dev.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/block/ploop/dev.c b/drivers/block/ploop/dev.c
index 1d6ee2329bb9..f8b9b0bcba78 100644
--- a/drivers/block/ploop/dev.c
+++ b/drivers/block/ploop/dev.c
@@ -2565,6 +2565,7 @@ static void ploop_req_state_process(struct ploop_request * preq)
 	struct ploop_device * plo = preq->plo;
 	struct ploop_delta * top_delta;
 	struct io_context * saved_ioc = NULL;
+	int release_ioc = 0;
 #ifdef CONFIG_BEANCOUNTERS
 	struct user_beancounter *saved_ub = NULL;
 #endif
@@ -2575,6 +2576,7 @@ static void ploop_req_state_process(struct ploop_request * preq)
 		saved_ioc = current->io_context;
 		current->io_context = preq->ioc;
 		atomic_long_inc(&preq->ioc->refcount);
+		release_ioc = 1;
 	}
 #ifdef CONFIG_BEANCOUNTERS
 	WARN_ONCE(!preq->preq_ub,
@@ -2906,7 +2908,7 @@ static void ploop_req_state_process(struct ploop_request * preq)
 		BUG();
 	}
 out:
-	if (saved_ioc) {
+	if (release_ioc) {
 		struct io_context * ioc = current->io_context;
 		current->io_context = saved_ioc;
 		put_io_context(ioc);



More information about the Devel mailing list