Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / parisc / gsc.c
index af5e025..16d40f9 100644 (file)
@@ -183,12 +183,20 @@ void gsc_asic_assign_irq(struct gsc_asic *asic, int local_irq, int *irqp)
        *irqp = irq;
 }
 
+static struct device *next_device(struct klist_iter *i)
+{
+       struct klist_node * n = klist_next(i);
+       return n ? container_of(n, struct device, knode_parent) : NULL;
+}
+
 void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl,
                        void (*choose_irq)(struct parisc_device *, void *))
 {
        struct device *dev;
+       struct klist_iter i;
 
-       list_for_each_entry(dev, &parent->dev.children, node) {
+       klist_iter_init(&parent->dev.klist_children, &i);
+       while ((dev = next_device(&i))) {
                struct parisc_device *padev = to_parisc_device(dev);
 
                /* work-around for 715/64 and others which have parent 
@@ -197,6 +205,7 @@ void gsc_fixup_irqs(struct parisc_device *parent, void *ctrl,
                        return gsc_fixup_irqs(padev, ctrl, choose_irq);
                choose_irq(padev, ctrl);
        }
+       klist_iter_exit(&i);
 }
 
 int gsc_common_setup(struct parisc_device *parent, struct gsc_asic *gsc_asic)