aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/bluetooth
diff options
context:
space:
mode:
authorJulia Lawall <Julia.Lawall@lip6.fr>2015-10-24 10:42:32 -0400
committerMarcel Holtmann <marcel@holtmann.org>2015-10-25 16:03:29 -0400
commitc0859e2f4ca530c0bf6a333ca3eb8430008e62c9 (patch)
treeacfd690ac7b9b86b922bdd1f295503479e9436da /drivers/bluetooth
parent13972adc3240ea8b18b44906b819c622941a64b6 (diff)
Bluetooth: btmrvl: add missing of_node_put
for_each_compatible_node performs an of_node_get on each iteration, so a break out of the loop requires an of_node_put. A simplified version of the semantic patch that fixes this problem is as follows (http://coccinelle.lip6.fr): // <smpl> @@ expression e; local idexpression n; @@ for_each_compatible_node(n, ...) { ... when != of_node_put(n) when != e = n ( return n; | + of_node_put(n); ? return ...; ) ... } // </smpl> Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'drivers/bluetooth')
-rw-r--r--drivers/bluetooth/btmrvl_main.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/bluetooth/btmrvl_main.c b/drivers/bluetooth/btmrvl_main.c
index 6ba22862d788..6af917331962 100644
--- a/drivers/bluetooth/btmrvl_main.c
+++ b/drivers/bluetooth/btmrvl_main.c
@@ -516,14 +516,17 @@ static int btmrvl_check_device_tree(struct btmrvl_private *priv)
516 ret = of_property_read_u8_array(dt_node, "btmrvl,cal-data", 516 ret = of_property_read_u8_array(dt_node, "btmrvl,cal-data",
517 cal_data + BT_CAL_HDR_LEN, 517 cal_data + BT_CAL_HDR_LEN,
518 BT_CAL_DATA_SIZE); 518 BT_CAL_DATA_SIZE);
519 if (ret) 519 if (ret) {
520 of_node_put(dt_node);
520 return ret; 521 return ret;
522 }
521 523
522 BT_DBG("Use cal data from device tree"); 524 BT_DBG("Use cal data from device tree");
523 ret = btmrvl_download_cal_data(priv, cal_data, 525 ret = btmrvl_download_cal_data(priv, cal_data,
524 BT_CAL_DATA_SIZE); 526 BT_CAL_DATA_SIZE);
525 if (ret) { 527 if (ret) {
526 BT_ERR("Fail to download calibrate data"); 528 BT_ERR("Fail to download calibrate data");
529 of_node_put(dt_node);
527 return ret; 530 return ret;
528 } 531 }
529 } 532 }