提交 21e863b2 编写于 作者: K Krzysztof Kozlowski 提交者: Sebastian Reichel

power: bq2415x_charger: Fix memory leak on DTS parsing error

Memory allocated for 'name' was leaking if required binding properties
were not present.

The memory for 'name' was allocated early at probe with kasprintf(). It
was freed in error paths executed before and after parsing DTS but not
in that error path.

Fix the error path for parsing device tree properties.
Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
Fixes: faffd234 ("bq2415x_charger: Add DT support")
Cc: <stable@vger.kernel.org>
Signed-off-by: NSebastian Reichel <sre@kernel.org>
上级 0eaf437a
...@@ -1609,27 +1609,27 @@ static int bq2415x_probe(struct i2c_client *client, ...@@ -1609,27 +1609,27 @@ static int bq2415x_probe(struct i2c_client *client,
ret = of_property_read_u32(np, "ti,current-limit", ret = of_property_read_u32(np, "ti,current-limit",
&bq->init_data.current_limit); &bq->init_data.current_limit);
if (ret) if (ret)
return ret; goto error_2;
ret = of_property_read_u32(np, "ti,weak-battery-voltage", ret = of_property_read_u32(np, "ti,weak-battery-voltage",
&bq->init_data.weak_battery_voltage); &bq->init_data.weak_battery_voltage);
if (ret) if (ret)
return ret; goto error_2;
ret = of_property_read_u32(np, "ti,battery-regulation-voltage", ret = of_property_read_u32(np, "ti,battery-regulation-voltage",
&bq->init_data.battery_regulation_voltage); &bq->init_data.battery_regulation_voltage);
if (ret) if (ret)
return ret; goto error_2;
ret = of_property_read_u32(np, "ti,charge-current", ret = of_property_read_u32(np, "ti,charge-current",
&bq->init_data.charge_current); &bq->init_data.charge_current);
if (ret) if (ret)
return ret; goto error_2;
ret = of_property_read_u32(np, "ti,termination-current", ret = of_property_read_u32(np, "ti,termination-current",
&bq->init_data.termination_current); &bq->init_data.termination_current);
if (ret) if (ret)
return ret; goto error_2;
ret = of_property_read_u32(np, "ti,resistor-sense", ret = of_property_read_u32(np, "ti,resistor-sense",
&bq->init_data.resistor_sense); &bq->init_data.resistor_sense);
if (ret) if (ret)
return ret; goto error_2;
} else { } else {
memcpy(&bq->init_data, pdata, sizeof(bq->init_data)); memcpy(&bq->init_data, pdata, sizeof(bq->init_data));
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册