History

scsi: drivers: base: Propagate errors through the transport component

The transport registration may fail. Make sure the errors are propagated to the callers.

Gabriel Krisman Bertazi committed 6 years ago

Commit cd7ea701 parent 7c1ef332 files · +11 −6Browse files

Unified · Split

2 files
  1. drivers/base/transport_class.c +8 −3
  2. include/linux/transport_class.h +3 −3
drivers/base/transport_class.c+8−3
@@ -30,6 +30,10 @@ · 29 unmodified lines
3030 #include <linux/attribute_container.h>
3131 #include <linux/transport_class.h>
3232
33+static int transport_remove_classdev(struct attribute_container *cont,
34+ struct device *dev,
35+ struct device *classdev);
36+
3337 /**
3438 * transport_class_register - register an initial transport class
3539 *
@@ -172,10 +176,11 @@ static int transport_add_class_device(struct attribute_container *cont, · 136 unmodified lines
172176 * routine is simply a trigger point used to add the device to the
173177 * system and register attributes for it.
174178 */
175−
176−void transport_add_device(struct device *dev)
179+int transport_add_device(struct device *dev)
177180 {
178− attribute_container_device_trigger(dev, transport_add_class_device);
181+ return attribute_container_device_trigger_safe(dev,
182+ transport_add_class_device,
183+ transport_remove_classdev);
179184 }
180185 EXPORT_SYMBOL_GPL(transport_add_device);
181186
include/linux/transport_class.h+3−3
@@ -62,16 +62,16 @@ struct transport_container { · 61 unmodified lines
6262 container_of(x, struct transport_container, ac)
6363
6464 void transport_remove_device(struct device *);
65−void transport_add_device(struct device *);
65+int transport_add_device(struct device *);
6666 void transport_setup_device(struct device *);
6767 void transport_configure_device(struct device *);
6868 void transport_destroy_device(struct device *);
6969
70−static inline void
70+static inline int
7171 transport_register_device(struct device *dev)
7272 {
7373 transport_setup_device(dev);
74− transport_add_device(dev);
74+ return transport_add_device(dev);
7575 }
7676
7777 static inline void