Commit 7cd9c9bb57476167e83b7780dbc06d1dd601789d

Authored by Greg Kroah-Hartman
1 parent 591bfc6bf9

Revert "driver core: check start node in klist_iter_init_node"

This reverts commit a15d49fd3094cff90e5410ca454a870e0a722fe1 as that
patch broke the build.

Cc: Hannes Reinecke <hare@suse.de>
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Showing 6 changed files with 46 additions and 76 deletions Side-by-side Diff

... ... @@ -296,13 +296,11 @@
296 296 if (!bus)
297 297 return -EINVAL;
298 298  
299   - error = klist_iter_init_node(&bus->p->klist_devices, &i,
300   - (start ? &start->p->knode_bus : NULL));
301   - if (!error) {
302   - while ((dev = next_device(&i)) && !error)
303   - error = fn(dev, data);
304   - klist_iter_exit(&i);
305   - }
  299 + klist_iter_init_node(&bus->p->klist_devices, &i,
  300 + (start ? &start->p->knode_bus : NULL));
  301 + while ((dev = next_device(&i)) && !error)
  302 + error = fn(dev, data);
  303 + klist_iter_exit(&i);
306 304 return error;
307 305 }
308 306 EXPORT_SYMBOL_GPL(bus_for_each_dev);
... ... @@ -332,10 +330,8 @@
332 330 if (!bus)
333 331 return NULL;
334 332  
335   - if (klist_iter_init_node(&bus->p->klist_devices, &i,
336   - (start ? &start->p->knode_bus : NULL)) < 0)
337   - return NULL;
338   -
  333 + klist_iter_init_node(&bus->p->klist_devices, &i,
  334 + (start ? &start->p->knode_bus : NULL));
339 335 while ((dev = next_device(&i)))
340 336 if (match(dev, data) && get_device(dev))
341 337 break;
... ... @@ -388,9 +384,7 @@
388 384 return NULL;
389 385  
390 386 if (hint) {
391   - if (klist_iter_init_node(&subsys->p->klist_devices, &i,
392   - &hint->p->knode_bus) < 0)
393   - return NULL;
  387 + klist_iter_init_node(&subsys->p->klist_devices, &i, &hint->p->knode_bus);
394 388 dev = next_device(&i);
395 389 if (dev && dev->id == id && get_device(dev)) {
396 390 klist_iter_exit(&i);
... ... @@ -452,13 +446,11 @@
452 446 if (!bus)
453 447 return -EINVAL;
454 448  
455   - error = klist_iter_init_node(&bus->p->klist_drivers, &i,
456   - start ? &start->p->knode_bus : NULL);
457   - if (!error) {
458   - while ((drv = next_driver(&i)) && !error)
459   - error = fn(drv, data);
460   - klist_iter_exit(&i);
461   - }
  449 + klist_iter_init_node(&bus->p->klist_drivers, &i,
  450 + start ? &start->p->knode_bus : NULL);
  451 + while ((drv = next_driver(&i)) && !error)
  452 + error = fn(drv, data);
  453 + klist_iter_exit(&i);
462 454 return error;
463 455 }
464 456 EXPORT_SYMBOL_GPL(bus_for_each_drv);
465 457  
466 458  
... ... @@ -1119,19 +1111,15 @@
1119 1111 * otherwise if it is NULL, the iteration starts at the beginning of
1120 1112 * the list.
1121 1113 */
1122   -int subsys_dev_iter_init(struct subsys_dev_iter *iter, struct bus_type *subsys,
1123   - struct device *start, const struct device_type *type)
  1114 +void subsys_dev_iter_init(struct subsys_dev_iter *iter, struct bus_type *subsys,
  1115 + struct device *start, const struct device_type *type)
1124 1116 {
1125 1117 struct klist_node *start_knode = NULL;
1126   - int error;
1127 1118  
1128 1119 if (start)
1129 1120 start_knode = &start->p->knode_bus;
1130   - error = klist_iter_init_node(&subsys->p->klist_devices, &iter->ki,
1131   - start_knode);
1132   - if (!error)
1133   - iter->type = type;
1134   - return error;
  1121 + klist_iter_init_node(&subsys->p->klist_devices, &iter->ki, start_knode);
  1122 + iter->type = type;
1135 1123 }
1136 1124 EXPORT_SYMBOL_GPL(subsys_dev_iter_init);
1137 1125  
drivers/base/class.c
... ... @@ -301,20 +301,15 @@
301 301 * otherwise if it is NULL, the iteration starts at the beginning of
302 302 * the list.
303 303 */
304   -int class_dev_iter_init(struct class_dev_iter *iter, struct class *class,
305   - struct device *start, const struct device_type *type)
  304 +void class_dev_iter_init(struct class_dev_iter *iter, struct class *class,
  305 + struct device *start, const struct device_type *type)
306 306 {
307 307 struct klist_node *start_knode = NULL;
308   - int error;
309 308  
310 309 if (start)
311 310 start_knode = &start->knode_class;
312   - error = klist_iter_init_node(&class->p->klist_devices, &iter->ki,
313   - start_knode);
314   - if (!error)
315   - iter->type = type;
316   -
317   - return error;
  311 + klist_iter_init_node(&class->p->klist_devices, &iter->ki, start_knode);
  312 + iter->type = type;
318 313 }
319 314 EXPORT_SYMBOL_GPL(class_dev_iter_init);
320 315  
321 316  
... ... @@ -392,15 +387,14 @@
392 387 return -EINVAL;
393 388 }
394 389  
395   - error = class_dev_iter_init(&iter, class, start, NULL);
396   - if (!error) {
397   - while ((dev = class_dev_iter_next(&iter))) {
398   - error = fn(dev, data);
399   - if (error)
400   - break;
401   - }
402   - class_dev_iter_exit(&iter);
  390 + class_dev_iter_init(&iter, class, start, NULL);
  391 + while ((dev = class_dev_iter_next(&iter))) {
  392 + error = fn(dev, data);
  393 + if (error)
  394 + break;
403 395 }
  396 + class_dev_iter_exit(&iter);
  397 +
404 398 return error;
405 399 }
406 400 EXPORT_SYMBOL_GPL(class_for_each_device);
... ... @@ -440,9 +434,7 @@
440 434 return NULL;
441 435 }
442 436  
443   - if (class_dev_iter_init(&iter, class, start, NULL) < 0)
444   - return NULL;
445   -
  437 + class_dev_iter_init(&iter, class, start, NULL);
446 438 while ((dev = class_dev_iter_next(&iter))) {
447 439 if (match(dev, data)) {
448 440 get_device(dev);
drivers/base/driver.c
... ... @@ -49,13 +49,11 @@
49 49 if (!drv)
50 50 return -EINVAL;
51 51  
52   - error = klist_iter_init_node(&drv->p->klist_devices, &i,
53   - start ? &start->p->knode_driver : NULL);
54   - if (!error) {
55   - while ((dev = next_device(&i)) && !error)
56   - error = fn(dev, data);
57   - klist_iter_exit(&i);
58   - }
  52 + klist_iter_init_node(&drv->p->klist_devices, &i,
  53 + start ? &start->p->knode_driver : NULL);
  54 + while ((dev = next_device(&i)) && !error)
  55 + error = fn(dev, data);
  56 + klist_iter_exit(&i);
59 57 return error;
60 58 }
61 59 EXPORT_SYMBOL_GPL(driver_for_each_device);
... ... @@ -85,10 +83,8 @@
85 83 if (!drv)
86 84 return NULL;
87 85  
88   - if (klist_iter_init_node(&drv->p->klist_devices, &i,
89   - (start ? &start->p->knode_driver : NULL)) < 0)
90   - return NULL;
91   -
  86 + klist_iter_init_node(&drv->p->klist_devices, &i,
  87 + (start ? &start->p->knode_driver : NULL));
92 88 while ((dev = next_device(&i)))
93 89 if (match(dev, data) && get_device(dev))
94 90 break;
include/linux/device.h
... ... @@ -128,7 +128,7 @@
128 128 struct klist_iter ki;
129 129 const struct device_type *type;
130 130 };
131   -int subsys_dev_iter_init(struct subsys_dev_iter *iter,
  131 +void subsys_dev_iter_init(struct subsys_dev_iter *iter,
132 132 struct bus_type *subsys,
133 133 struct device *start,
134 134 const struct device_type *type);
... ... @@ -380,10 +380,10 @@
380 380 void class_compat_remove_link(struct class_compat *cls, struct device *dev,
381 381 struct device *device_link);
382 382  
383   -extern int class_dev_iter_init(struct class_dev_iter *iter,
384   - struct class *class,
385   - struct device *start,
386   - const struct device_type *type);
  383 +extern void class_dev_iter_init(struct class_dev_iter *iter,
  384 + struct class *class,
  385 + struct device *start,
  386 + const struct device_type *type);
387 387 extern struct device *class_dev_iter_next(struct class_dev_iter *iter);
388 388 extern void class_dev_iter_exit(struct class_dev_iter *iter);
389 389  
include/linux/klist.h
... ... @@ -60,7 +60,7 @@
60 60  
61 61  
62 62 extern void klist_iter_init(struct klist *k, struct klist_iter *i);
63   -extern int klist_iter_init_node(struct klist *k, struct klist_iter *i,
  63 +extern void klist_iter_init_node(struct klist *k, struct klist_iter *i,
64 64 struct klist_node *n);
65 65 extern void klist_iter_exit(struct klist_iter *i);
66 66 extern struct klist_node *klist_next(struct klist_iter *i);
... ... @@ -278,19 +278,13 @@
278 278 * Similar to klist_iter_init(), but starts the action off with @n,
279 279 * instead of with the list head.
280 280 */
281   -int klist_iter_init_node(struct klist *k, struct klist_iter *i,
282   - struct klist_node *n)
  281 +void klist_iter_init_node(struct klist *k, struct klist_iter *i,
  282 + struct klist_node *n)
283 283 {
284   - if (n) {
285   - kref_get(&n->n_ref);
286   - if (!n->n_klist) {
287   - kref_put(&n->n_ref);
288   - return -ENODEV;
289   - }
290   - }
291 284 i->i_klist = k;
292 285 i->i_cur = n;
293   - return 0;
  286 + if (n)
  287 + kref_get(&n->n_ref);
294 288 }
295 289 EXPORT_SYMBOL_GPL(klist_iter_init_node);
296 290