[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190122020759.GA4054@ubu-Virtual-Machine>
Date: Mon, 21 Jan 2019 21:07:59 -0500
From: Kimberly Brown <kimbrownkd@...il.com>
To: Michael Kelley <mikelley@...rosoft.com>,
Long Li <longli@...rosoft.com>,
Sasha Levin <Alexander.Levin@...rosoft.com>,
Dexuan Cui <decui@...rosoft.com>,
Stephen Hemminger <sthemmin@...rosoft.com>
Cc: "K. Y. Srinivasan" <kys@...rosoft.com>,
Haiyang Zhang <haiyangz@...rosoft.com>,
devel@...uxdriverproject.org, linux-kernel@...r.kernel.org
Subject: [PATCH] Drivers: hv: vmbus: Add mutex lock to channel show functions
The channel level "_show" functions are vulnerable to race conditions.
Add a mutex lock and unlock around the call to the channel level "_show"
functions in vmbus_chan_attr_show().
This problem was discussed here: https://lkml.org/lkml/2018/10/18/830
Signed-off-by: Kimberly Brown <kimbrownkd@...il.com>
---
drivers/hv/vmbus_drv.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
index 403fee01572c..e8189bc168da 100644
--- a/drivers/hv/vmbus_drv.c
+++ b/drivers/hv/vmbus_drv.c
@@ -1414,6 +1414,7 @@ static ssize_t vmbus_chan_attr_show(struct kobject *kobj,
= container_of(attr, struct vmbus_chan_attribute, attr);
const struct vmbus_channel *chan
= container_of(kobj, struct vmbus_channel, kobj);
+ ssize_t ret;
if (!attribute->show)
return -EIO;
@@ -1421,7 +1422,10 @@ static ssize_t vmbus_chan_attr_show(struct kobject *kobj,
if (chan->state != CHANNEL_OPENED_STATE)
return -EINVAL;
- return attribute->show(chan, buf);
+ mutex_lock(&vmbus_connection.channel_mutex);
+ ret = attribute->show(chan, buf);
+ mutex_unlock(&vmbus_connection.channel_mutex);
+ return ret;
}
static const struct sysfs_ops vmbus_chan_sysfs_ops = {
--
2.17.1
Powered by blists - more mailing lists