Message ID | 20241116085503.3835860-1-joe@pf.is.s.u-tokyo.ac.jp (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] usb: typec: anx7411: fix OF node reference leaks in anx7411_typec_switch_probe() | expand |
On Sat, Nov 16, 2024 at 05:55:03PM +0900, Joe Hattori wrote: > The refcounts of the OF nodes obtained in by of_get_child_by_name() > calls in anx7411_typec_switch_probe() are not decremented, so add > fwnode_handle_put() calls to anx7411_unregister_switch() and > anx7411_unregister_mux(). > > Fixes: e45d7337dc0e ("usb: typec: anx7411: Use of_get_child_by_name() instead of of_find_node_by_name()") > Cc: stable@vger.kernel.org > Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp> > --- > Changed in v2: > - Add the Cc: stable@vger.kernel.org tag. > --- > drivers/usb/typec/anx7411.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/usb/typec/anx7411.c b/drivers/usb/typec/anx7411.c > index cdb7e8273823..d3c5d8f410ca 100644 > --- a/drivers/usb/typec/anx7411.c > +++ b/drivers/usb/typec/anx7411.c > @@ -29,6 +29,8 @@ > #include <linux/workqueue.h> > #include <linux/power_supply.h> > > +#include "mux.h" This should not be necessary. > #define TCPC_ADDRESS1 0x58 > #define TCPC_ADDRESS2 0x56 > #define TCPC_ADDRESS3 0x54 > @@ -1094,6 +1096,7 @@ static void anx7411_unregister_mux(struct anx7411_data *ctx) > { > if (ctx->typec.typec_mux) { > typec_mux_unregister(ctx->typec.typec_mux); > + fwnode_handle_put(ctx->typec.typec_mux->dev.fwnode); > ctx->typec.typec_mux = NULL; > } > } > @@ -1102,6 +1105,7 @@ static void anx7411_unregister_switch(struct anx7411_data *ctx) > { > if (ctx->typec.typec_switch) { > typec_switch_unregister(ctx->typec.typec_switch); > + fwnode_handle_put(ctx->typec.typec_switch->dev.fwnode); > ctx->typec.typec_switch = NULL; > } > } Instead of accessing the fwnode like that, add members for them to anx7411_data. thanks,
diff --git a/drivers/usb/typec/anx7411.c b/drivers/usb/typec/anx7411.c index cdb7e8273823..d3c5d8f410ca 100644 --- a/drivers/usb/typec/anx7411.c +++ b/drivers/usb/typec/anx7411.c @@ -29,6 +29,8 @@ #include <linux/workqueue.h> #include <linux/power_supply.h> +#include "mux.h" + #define TCPC_ADDRESS1 0x58 #define TCPC_ADDRESS2 0x56 #define TCPC_ADDRESS3 0x54 @@ -1094,6 +1096,7 @@ static void anx7411_unregister_mux(struct anx7411_data *ctx) { if (ctx->typec.typec_mux) { typec_mux_unregister(ctx->typec.typec_mux); + fwnode_handle_put(ctx->typec.typec_mux->dev.fwnode); ctx->typec.typec_mux = NULL; } } @@ -1102,6 +1105,7 @@ static void anx7411_unregister_switch(struct anx7411_data *ctx) { if (ctx->typec.typec_switch) { typec_switch_unregister(ctx->typec.typec_switch); + fwnode_handle_put(ctx->typec.typec_switch->dev.fwnode); ctx->typec.typec_switch = NULL; } }
The refcounts of the OF nodes obtained in by of_get_child_by_name() calls in anx7411_typec_switch_probe() are not decremented, so add fwnode_handle_put() calls to anx7411_unregister_switch() and anx7411_unregister_mux(). Fixes: e45d7337dc0e ("usb: typec: anx7411: Use of_get_child_by_name() instead of of_find_node_by_name()") Cc: stable@vger.kernel.org Signed-off-by: Joe Hattori <joe@pf.is.s.u-tokyo.ac.jp> --- Changed in v2: - Add the Cc: stable@vger.kernel.org tag. --- drivers/usb/typec/anx7411.c | 4 ++++ 1 file changed, 4 insertions(+)