chengshan / rpms / kernel

Forked from rpms/kernel 2 years ago
Clone
Blob Blame History Raw
commit 9a035a40f7f3f6708b79224b86c5777a3334f7ea
Author: Jan Beulich <JBeulich@suse.com>
Date:   Mon Aug 15 09:02:38 2016 -0600

    xenbus: don't look up transaction IDs for ordinary writes
    
    This should really only be done for XS_TRANSACTION_END messages, or
    else at least some of the xenstore-* tools don't work anymore.
    
    Fixes: 0beef634b8 ("xenbus: don't BUG() on user mode induced condition")
    Reported-by: Richard Schütz <rschuetz@uni-koblenz.de>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jan Beulich <jbeulich@suse.com>
    Tested-by: Richard Schütz <rschuetz@uni-koblenz.de>
    Signed-off-by: David Vrabel <david.vrabel@citrix.com>

diff --git a/drivers/xen/xenbus/xenbus_dev_frontend.c b/drivers/xen/xenbus/xenbus_dev_frontend.c
index 7487971..c1010f01 100644
--- a/drivers/xen/xenbus/xenbus_dev_frontend.c
+++ b/drivers/xen/xenbus/xenbus_dev_frontend.c
@@ -316,7 +316,7 @@ static int xenbus_write_transaction(unsigned msg_type,
 			rc = -ENOMEM;
 			goto out;
 		}
-	} else {
+	} else if (msg_type == XS_TRANSACTION_END) {
 		list_for_each_entry(trans, &u->transactions, list)
 			if (trans->handle.id == u->u.msg.tx_id)
 				break;