Re: [PATCH] usb: typec: ucsi: Fix printing of a fwnode with %pOFn

From: Heikki Krogerus

Date: Fri Nov 06 2026 - 07:41:07 EST


On Mon, Nov 02, 2026 at 02:35:08AM +0200, Asdlerto Korry wrote:
> ucsi_glink and ucsi_huawei_gaokun walk the connector nodes with
> device_for_each_child_node(), which yields a struct fwnode_handle, but
> print it with %pOFn, which expects a struct device_node. vsprintf then
> treats the fwnode_handle as a device_node and calls fwnode_get_name()
> on a pointer into the middle of it, so the "missing reg property" error
> path oopses instead of printing the message (seen with the same code in
> pmic_glink_altmode on a Samsung Galaxy M52 5G).
>
> Use %pfwP, the specifier for the name of a fwnode.
>
> Fixes: c6165ed2f425 ("usb: ucsi: glink: use the connector orientation GPIO to provide switch events")
> Fixes: 00327d7f2c8c ("usb: typec: ucsi: add Huawei Matebook E Go ucsi driver")
> Signed-off-by: Asdlerto Korry <korryasdlerto@xxxxxxxxx>

Acked-by: Heikki Krogerus <heikki.krogeurs@xxxxxxxxxxxxxxx>

> ---
> drivers/usb/typec/ucsi/ucsi_glink.c | 2 +-
> drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/typec/ucsi/ucsi_glink.c b/drivers/usb/typec/ucsi/ucsi_glink.c
> index 1db0c88d817e..4b4905624d61 100644
> --- a/drivers/usb/typec/ucsi/ucsi_glink.c
> +++ b/drivers/usb/typec/ucsi/ucsi_glink.c
> @@ -433,7 +433,7 @@ static int pmic_glink_ucsi_probe(struct auxiliary_device *adev,
>
> ret = fwnode_property_read_u32(fwnode, "reg", &port);
> if (ret < 0) {
> - dev_err(dev, "missing reg property of %pOFn\n", fwnode);
> + dev_err(dev, "missing reg property of %pfwP\n", fwnode);
> return ret;
> }
>
> diff --git a/drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c b/drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
> index 57b37fca150c..fc74c205181e 100644
> --- a/drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
> +++ b/drivers/usb/typec/ucsi/ucsi_huawei_gaokun.c
> @@ -430,7 +430,7 @@ static int gaokun_ucsi_ports_init(struct gaokun_ucsi *uec)
> device_for_each_child_node(dev, fwnode) {
> ret = fwnode_property_read_u32(fwnode, "reg", &port);
> if (ret < 0) {
> - dev_err(dev, "missing reg property of %pOFn\n", fwnode);
> + dev_err(dev, "missing reg property of %pfwP\n", fwnode);
> fwnode_handle_put(fwnode);
> return ret;
> }
> --
> 2.25.1

--
heikki