Commit cd7ea70b authored by Gabriel Krisman Bertazi's avatar Gabriel Krisman Bertazi Committed by Martin K. Petersen
Browse files

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

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

Link: https://lore.kernel.org/r/20200106185817.640331-3-krisman@collabora.com


Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarGabriel Krisman Bertazi <krisman@collabora.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 7c1ef338
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -30,6 +30,10 @@
#include <linux/attribute_container.h>
#include <linux/transport_class.h>

static int transport_remove_classdev(struct attribute_container *cont,
				     struct device *dev,
				     struct device *classdev);

/**
 * transport_class_register - register an initial transport class
 *
@@ -172,10 +176,11 @@ static int transport_add_class_device(struct attribute_container *cont,
 * routine is simply a trigger point used to add the device to the
 * system and register attributes for it.
 */

void transport_add_device(struct device *dev)
int transport_add_device(struct device *dev)
{
	attribute_container_device_trigger(dev, transport_add_class_device);
	return attribute_container_device_trigger_safe(dev,
					transport_add_class_device,
					transport_remove_classdev);
}
EXPORT_SYMBOL_GPL(transport_add_device);

+3 −3
Original line number Diff line number Diff line
@@ -62,16 +62,16 @@ struct transport_container {
	container_of(x, struct transport_container, ac)

void transport_remove_device(struct device *);
void transport_add_device(struct device *);
int transport_add_device(struct device *);
void transport_setup_device(struct device *);
void transport_configure_device(struct device *);
void transport_destroy_device(struct device *);

static inline void
static inline int
transport_register_device(struct device *dev)
{
	transport_setup_device(dev);
	transport_add_device(dev);
	return transport_add_device(dev);
}

static inline void