Skip to content

Commit 4b642dc

Browse files
kyletsoadlgregkh
authored andcommitted
usb: typec: Iterate pds array when showing the pd list
The pointers of each usb_power_delivery handles are stored in "pds" array returned from the pd_get ops but not in the adjacent memory calculated from "pd". Get the handles from "pds" array directly instead of deriving them from "pd". Fixes: a7cff92 ("usb: typec: USB Power Delivery helpers for ports and partners") Cc: stable@vger.kernel.org Signed-off-by: Kyle Tso <kyletso@google.com> Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Link: https://lore.kernel.org/r/20230623151036.3955013-3-kyletso@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent b33ebb2 commit 4b642dc

File tree

1 file changed

+5
-6
lines changed

1 file changed

+5
-6
lines changed

drivers/usb/typec/class.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1277,8 +1277,7 @@ static ssize_t select_usb_power_delivery_show(struct device *dev,
12771277
{
12781278
struct typec_port *port = to_typec_port(dev);
12791279
struct usb_power_delivery **pds;
1280-
struct usb_power_delivery *pd;
1281-
int ret = 0;
1280+
int i, ret = 0;
12821281

12831282
if (!port->ops || !port->ops->pd_get)
12841283
return -EOPNOTSUPP;
@@ -1287,11 +1286,11 @@ static ssize_t select_usb_power_delivery_show(struct device *dev,
12871286
if (!pds)
12881287
return 0;
12891288

1290-
for (pd = pds[0]; pd; pd++) {
1291-
if (pd == port->pd)
1292-
ret += sysfs_emit(buf + ret, "[%s] ", dev_name(&pd->dev));
1289+
for (i = 0; pds[i]; i++) {
1290+
if (pds[i] == port->pd)
1291+
ret += sysfs_emit(buf + ret, "[%s] ", dev_name(&pds[i]->dev));
12931292
else
1294-
ret += sysfs_emit(buf + ret, "%s ", dev_name(&pd->dev));
1293+
ret += sysfs_emit(buf + ret, "%s ", dev_name(&pds[i]->dev));
12951294
}
12961295

12971296
buf[ret - 1] = '\n';

0 commit comments

Comments
 (0)