From: Andrey Shvetsov <andrey.shvet...@k2l.de>

This patch fixes the offset and data handling when traversing
the list of devices that are attached to the bus.

Signed-off-by: Christian Gromm <christian.gr...@microchip.com>
---
v2: fix patch numeration
v3: - add cover letter
    - create patches with -M switch to make file movement visible

 drivers/staging/most/core.c | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c
index 6ec56930..7d94b47 100644
--- a/drivers/staging/most/core.c
+++ b/drivers/staging/most/core.c
@@ -542,10 +542,16 @@ static struct core_component *match_component(char *name)
        return NULL;
 }
 
+struct show_links_data {
+       int offs;
+       char *buf;
+};
+
 int print_links(struct device *dev, void *data)
 {
-       int offs = 0;
-       char *buf = data;
+       struct show_links_data *d = data;
+       int offs = d->offs;
+       char *buf = d->buf;
        struct most_channel *c;
        struct most_interface *iface = to_most_interface(dev);
 
@@ -567,13 +573,16 @@ int print_links(struct device *dev, void *data)
                                         dev_name(&c->dev));
                }
        }
+       d->offs = offs;
        return 0;
 }
 
 static ssize_t links_show(struct device_driver *drv, char *buf)
 {
-       bus_for_each_dev(&mc.bus, NULL, buf, print_links);
-       return strlen(buf);
+       struct show_links_data d = { .buf = buf };
+
+       bus_for_each_dev(&mc.bus, NULL, &d, print_links);
+       return d.offs;
 }
 
 static ssize_t components_show(struct device_driver *drv, char *buf)
-- 
1.9.1

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to