Message ID | 23168336f18a9f6cb1a5b47130fc134dc0510d7f.1698648980.git.christophe.jaillet@wanadoo.fr (mailing list archive) |
---|---|
State | Accepted |
Commit | cdd0cde8d8837de3d234bb08115d5f196e0ac8dd |
Headers | show |
Series | USB: typec: tps6598x: Fix a memory leak in an error handling path | expand |
On Mon, Oct 30, 2023 at 07:56:40AM +0100, Christophe JAILLET wrote: > All error handling end to the error handling path, except these ones. > Go to 'release_fw' as well here, otherwise 'fw' is leaking. > > Fixes: 7e7a3c815d22 ("USB: typec: tps6598x: Add TPS25750 support") > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > drivers/usb/typec/tipd/core.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c > index 0e867f531d34..b0184be06c3d 100644 > --- a/drivers/usb/typec/tipd/core.c > +++ b/drivers/usb/typec/tipd/core.c > @@ -968,16 +968,17 @@ static int tps25750_start_patch_burst_mode(struct tps6598x *tps) > ret = of_property_match_string(np, "reg-names", "patch-address"); > if (ret < 0) { > dev_err(tps->dev, "failed to get patch-address %d\n", ret); > - return ret; > + goto release_fw; > } > > ret = of_property_read_u32_index(np, "reg", ret, &addr); > if (ret) > - return ret; > + goto release_fw; > > if (addr == 0 || (addr >= 0x20 && addr <= 0x23)) { > dev_err(tps->dev, "wrong patch address %u\n", addr); > - return -EINVAL; > + ret = -EINVAL; > + goto release_fw; > } > > bpms_data.addr = (u8)addr; > -- > 2.34.1
diff --git a/drivers/usb/typec/tipd/core.c b/drivers/usb/typec/tipd/core.c index 0e867f531d34..b0184be06c3d 100644 --- a/drivers/usb/typec/tipd/core.c +++ b/drivers/usb/typec/tipd/core.c @@ -968,16 +968,17 @@ static int tps25750_start_patch_burst_mode(struct tps6598x *tps) ret = of_property_match_string(np, "reg-names", "patch-address"); if (ret < 0) { dev_err(tps->dev, "failed to get patch-address %d\n", ret); - return ret; + goto release_fw; } ret = of_property_read_u32_index(np, "reg", ret, &addr); if (ret) - return ret; + goto release_fw; if (addr == 0 || (addr >= 0x20 && addr <= 0x23)) { dev_err(tps->dev, "wrong patch address %u\n", addr); - return -EINVAL; + ret = -EINVAL; + goto release_fw; } bpms_data.addr = (u8)addr;
All error handling end to the error handling path, except these ones. Go to 'release_fw' as well here, otherwise 'fw' is leaking. Fixes: 7e7a3c815d22 ("USB: typec: tps6598x: Add TPS25750 support") Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- drivers/usb/typec/tipd/core.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)