[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200609060410.29700-1-wu000273@umn.edu>
Date: Tue, 9 Jun 2020 01:04:10 -0500
From: wu000273@....edu
To: kjlu@....edu
Cc: wu000273@....edu, Corey Minyard <minyard@....org>,
Arnd Bergmann <arnd@...db.de>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
openipmi-developer@...ts.sourceforge.net,
linux-kernel@...r.kernel.org
Subject: [PATCH] ipmi: code cleanup and prevent potential issue.
From: Qiushi Wu <wu000273@....edu>
All the previous get/put operations against intf->refcount are
inside the mutex. Thus, put the last kref_put() also inside mutex
to make sure get/put functions execute in order and prevent the
potential race condition.
Signed-off-by: Qiushi Wu <wu000273@....edu>
---
drivers/char/ipmi/ipmi_msghandler.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c
index e1b22fe0916c..d34343e34272 100644
--- a/drivers/char/ipmi/ipmi_msghandler.c
+++ b/drivers/char/ipmi/ipmi_msghandler.c
@@ -2583,10 +2583,11 @@ static int __bmc_get_device_id(struct ipmi_smi *intf, struct bmc_device *bmc,
*guid = bmc->guid;
}
+ kref_put(&intf->refcount, intf_free);
+
mutex_unlock(&bmc->dyn_mutex);
mutex_unlock(&intf->bmc_reg_mutex);
- kref_put(&intf->refcount, intf_free);
return rv;
}
--
2.17.1
Powered by blists - more mailing lists