[PATCH linux 0/2] [RFC] ncsi: Fix not releasing lock in ncsi_rcv_rsp()

OpenBMC Patches openbmc-patches at stwcx.xyz
Fri Jan 22 14:50:25 AEDT 2016


I've found a locking problem which I believe might address issue #8. With this patch applied I also cannot reproduce #17.

I'm not sure this is the correct fix:
ncsi_free_req() takes ndp_req_lock again so this is 1 possible solution. Unfortunately I don't know the code enough to be sure it is safe to drop the lock before calling ncsi_free_req(), it is possible that dropping the lock could allow someone else to jump in and use the same nr possibly resulting in a double free.

Furthermore, after investigating other LOCKDEP issues I wrote that this patch:

```
commit e19be46436cc50cf6842d38fb5c44bca92ebb26f
Author: Cyril Bur <cyrilbur at gmail.com>
Date:   Thu Jan 21 11:30:26 2016 +1100

    i2c: aspeed spin_lock_init() on cmd_lock

diff --git a/drivers/i2c/busses/i2c-aspeed.c b/drivers/i2c/busses/i2c-aspeed.c
index 3b858d3..e4bf88a3 100644
--- a/drivers/i2c/busses/i2c-aspeed.c
+++ b/drivers/i2c/busses/i2c-aspeed.c
@@ -721,6 +721,7 @@ static int ast_i2c_probe_bus(struct platform_device *pdev)
        }
 
        /* Initialize the I2C adapter */
+       spin_lock_init(&bus->cmd_lock);
        bus->adap.nr = bus_num;
        bus->adap.owner = THIS_MODULE;
        bus->adap.retries = 0;
```

Breaks networking! I also found this extraordinarily hard to believe as well but it's absolutely the case. Please help understand why!

https://github.com/openbmc/linux/pull/42

Cyril Bur (2):
  ncsi: Fix not releasing lock in ncsi_rcv_rsp()
  i2c: aspeed spin_lock_init() on cmd_lock

 drivers/i2c/busses/i2c-aspeed.c | 1 +
 net/ncsi/ncsi-rsp.c             | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

-- 
2.6.4




More information about the openbmc mailing list