Before, ec->data_buffer could be written to from multiple
contexts at the same time. Since the ec is shared data,
it needs to be inside the mutex as well.

Signed-off-by: Nick Crews <ncr...@chromium.org>
---
 drivers/platform/chrome/wilco_ec/mailbox.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/platform/chrome/wilco_ec/mailbox.c 
b/drivers/platform/chrome/wilco_ec/mailbox.c
index f6ff29a11f1a..d6cb96168285 100644
--- a/drivers/platform/chrome/wilco_ec/mailbox.c
+++ b/drivers/platform/chrome/wilco_ec/mailbox.c
@@ -223,12 +223,12 @@ int wilco_ec_mailbox(struct wilco_ec_device *ec, struct 
wilco_ec_message *msg)
                msg->command, msg->type, msg->flags, msg->response_size,
                msg->request_size);
 
-       /* Prepare request packet */
+       mutex_lock(&ec->mailbox_lock);
+
        rq = ec->data_buffer;
        wilco_ec_prepare(msg, rq);
-
-       mutex_lock(&ec->mailbox_lock);
        ret = wilco_ec_transfer(ec, msg, rq);
+       
        mutex_unlock(&ec->mailbox_lock);
 
        return ret;
-- 

Reply via email to