ipmi_ssif: Fix locking on probe error path
Subsystems (2)
PATCH 1/1 ipmi_ssif: Fix locking on probe error path
If the allocations failed then we returned with the lock held. This patch moves the allocations infront of the locking.
Fixes 714acbc6cc39 ("ipmi_ssif: avoid registering duplicate ssif interface")
Signed-off-by Dan Carpenter <[email protected]>
--- drivers/char/ipmi/ipmi_ssif.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
drivers/char/ipmi/ipmi_ssif.c +2 -1
@@ -1683,7 +1683,6 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id)u8 slave_addr =0 ;struct ssif_addr_info *addr_info =NULL ; -mutex_lock (&ssif_infos_mutex); resp =kmalloc (IPMI_MAX_MSG_LENGTH ,GFP_KERNEL );if (!resp)return -ENOMEM ;
@@ -1694,6 +1693,8 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id)return -ENOMEM ; } +mutex_lock (&ssif_infos_mutex); +if (!check_acpi (ssif_info, &client->dev)) { addr_info =ssif_info_find (client->addr, client->adapter->name, true);
Signature · 1 line
2.20.1
Quoted 2 lines · Dan Carpenter
If the allocations failed then we returned with the lock held. This patch moves the allocations infront of the locking.
This had already been fixed, but thanks for the heads up.
-corey
Quoted 31 lines
Fixes 714acbc6cc39 ("ipmi_ssif: avoid registering duplicate ssif interface")Signed-off-by Dan Carpenter <[email protected]>--- drivers/char/ipmi/ipmi_ssif.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)drivers/char/ipmi/ipmi_ssif.c +2
-1@@ -1683,7 +1683,6 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id)u8 slave_addr =0 ;struct ssif_addr_info *addr_info =NULL ; -mutex_lock (&ssif_infos_mutex); resp =kmalloc (IPMI_MAX_MSG_LENGTH ,GFP_KERNEL );if (!resp)return -ENOMEM ;@@ -1694,6 +1693,8 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id)return -ENOMEM ; } +mutex_lock (&ssif_infos_mutex); +if (!check_acpi (ssif_info, &client->dev)) { addr_info =ssif_info_find (client->addr, client->adapter->name, true);Signature · 1 line
2.20.1