Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7cf0d57 authored by Heiko Carstens's avatar Heiko Carstens Committed by Martin Schwidefsky
Browse files

[S390] sysfs_create_xxx return values.



Take return values of sysfs_create_group & friends into account.

Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent dc8f5d21
Loading
Loading
Loading
Loading
+36 −10
Original line number Diff line number Diff line
@@ -877,31 +877,57 @@ static struct bin_attribute ipl_scp_data_attr = {

static decl_subsys(ipl, NULL, NULL);

static int ipl_register_fcp_files(void)
{
	int rc;

	rc = sysfs_create_group(&ipl_subsys.kset.kobj,
				&ipl_fcp_attr_group);
	if (rc)
		goto out;
	rc = sysfs_create_bin_file(&ipl_subsys.kset.kobj,
				   &ipl_parameter_attr);
	if (rc)
		goto out_ipl_parm;
	rc = sysfs_create_bin_file(&ipl_subsys.kset.kobj,
				   &ipl_scp_data_attr);
	if (!rc)
		goto out;

	sysfs_remove_bin_file(&ipl_subsys.kset.kobj, &ipl_parameter_attr);

out_ipl_parm:
	sysfs_remove_group(&ipl_subsys.kset.kobj, &ipl_fcp_attr_group);
out:
	return rc;
}

static int __init
ipl_device_sysfs_register(void) {
	int rc;

	rc = firmware_register(&ipl_subsys);
	if (rc)
		return rc;
		goto out;

	switch (get_ipl_type()) {
	case ipl_type_ccw:
		sysfs_create_group(&ipl_subsys.kset.kobj, &ipl_ccw_attr_group);
		rc = sysfs_create_group(&ipl_subsys.kset.kobj,
					&ipl_ccw_attr_group);
		break;
	case ipl_type_fcp:
		sysfs_create_group(&ipl_subsys.kset.kobj, &ipl_fcp_attr_group);
		sysfs_create_bin_file(&ipl_subsys.kset.kobj,
				      &ipl_parameter_attr);
		sysfs_create_bin_file(&ipl_subsys.kset.kobj,
				      &ipl_scp_data_attr);
		rc = ipl_register_fcp_files();
		break;
	default:
		sysfs_create_group(&ipl_subsys.kset.kobj,
		rc = sysfs_create_group(&ipl_subsys.kset.kobj,
					&ipl_unknown_attr_group);
		break;
	}
	return 0;

	if (rc)
		firmware_unregister(&ipl_subsys);
out:
	return rc;
}

__initcall(ipl_device_sysfs_register);
+35 −17
Original line number Diff line number Diff line
@@ -1106,10 +1106,10 @@ raw3270_delete_device(struct raw3270 *rp)

	/* Remove from device chain. */
	mutex_lock(&raw3270_mutex);
	if (rp->clttydev)
	if (rp->clttydev && !IS_ERR(rp->clttydev))
		class_device_destroy(class3270,
				     MKDEV(IBM_TTY3270_MAJOR, rp->minor));
	if (rp->cltubdev)
	if (rp->cltubdev && !IS_ERR(rp->cltubdev))
		class_device_destroy(class3270,
				     MKDEV(IBM_FS3270_MAJOR, rp->minor));
	list_del_init(&rp->list);
@@ -1173,21 +1173,37 @@ static struct attribute_group raw3270_attr_group = {
	.attrs = raw3270_attrs,
};

static void
raw3270_create_attributes(struct raw3270 *rp)
static int raw3270_create_attributes(struct raw3270 *rp)
{
	//FIXME: check return code
	sysfs_create_group(&rp->cdev->dev.kobj, &raw3270_attr_group);
	rp->clttydev =
		class_device_create(class3270, NULL,
	int rc;

	rc = sysfs_create_group(&rp->cdev->dev.kobj, &raw3270_attr_group);
	if (rc)
		goto out;

	rp->clttydev = class_device_create(class3270, NULL,
					   MKDEV(IBM_TTY3270_MAJOR, rp->minor),
					   &rp->cdev->dev, "tty%s",
					   rp->cdev->dev.bus_id);
	rp->cltubdev =
		class_device_create(class3270, NULL,
	if (IS_ERR(rp->clttydev)) {
		rc = PTR_ERR(rp->clttydev);
		goto out_ttydev;
	}

	rp->cltubdev = class_device_create(class3270, NULL,
					   MKDEV(IBM_FS3270_MAJOR, rp->minor),
					   &rp->cdev->dev, "tub%s",
					   rp->cdev->dev.bus_id);
	if (!IS_ERR(rp->cltubdev))
		goto out;

	rc = PTR_ERR(rp->cltubdev);
	class_device_destroy(class3270, MKDEV(IBM_TTY3270_MAJOR, rp->minor));

out_ttydev:
	sysfs_remove_group(&rp->cdev->dev.kobj, &raw3270_attr_group);
out:
	return rc;
}

/*
@@ -1255,7 +1271,9 @@ raw3270_set_online (struct ccw_device *cdev)
	rc = raw3270_reset_device(rp);
	if (rc)
		goto failure;
	raw3270_create_attributes(rp);
	rc = raw3270_create_attributes(rp);
	if (rc)
		goto failure;
	set_bit(RAW3270_FLAGS_READY, &rp->flags);
	mutex_lock(&raw3270_mutex);
	list_for_each_entry(np, &raw3270_notifier, list)
+9 −1
Original line number Diff line number Diff line
@@ -76,14 +76,22 @@ struct tape_class_device *register_tape_dev(
				device,
				"%s", tcd->device_name
			);
	sysfs_create_link(
	rc = PTR_ERR(tcd->class_device);
	if (rc)
		goto fail_with_cdev;
	rc = sysfs_create_link(
		&device->kobj,
		&tcd->class_device->kobj,
		tcd->mode_name
	);
	if (rc)
		goto fail_with_class_device;

	return tcd;

fail_with_class_device:
	class_device_destroy(tape_class, tcd->char_device->dev);

fail_with_cdev:
	cdev_del(tcd->char_device);

+11 −7
Original line number Diff line number Diff line
@@ -543,20 +543,24 @@ int
tape_generic_probe(struct ccw_device *cdev)
{
	struct tape_device *device;
	int ret;

	device = tape_alloc_device();
	if (IS_ERR(device))
		return -ENODEV;
	PRINT_INFO("tape device %s found\n", cdev->dev.bus_id);
	ccw_device_set_options(cdev, CCWDEV_DO_PATHGROUP);
	ret = sysfs_create_group(&cdev->dev.kobj, &tape_attr_group);
	if (ret) {
		tape_put_device(device);
		PRINT_ERR("probe failed for tape device %s\n", cdev->dev.bus_id);
		return ret;
	}
	cdev->dev.driver_data = device;
	cdev->handler = __tape_do_irq;
	device->cdev = cdev;
	device->cdev_id = busid_to_int(cdev->dev.bus_id);
	cdev->handler = __tape_do_irq;

	ccw_device_set_options(cdev, CCWDEV_DO_PATHGROUP);
	sysfs_create_group(&cdev->dev.kobj, &tape_attr_group);

	return 0;
	PRINT_INFO("tape device %s found\n", cdev->dev.bus_id);
	return ret;
}

static inline void
+17 −4
Original line number Diff line number Diff line
@@ -2686,9 +2686,17 @@ static struct attribute_group ctc_attr_group = {
static int
ctc_add_attributes(struct device *dev)
{
	device_create_file(dev, &dev_attr_loglevel);
	device_create_file(dev, &dev_attr_stats);
	return 0;
	int rc;

	rc = device_create_file(dev, &dev_attr_loglevel);
	if (rc)
		goto out;
	rc = device_create_file(dev, &dev_attr_stats);
	if (!rc)
		goto out;
	device_remove_file(dev, &dev_attr_loglevel);
out:
	return rc;
}

static void
@@ -2901,7 +2909,12 @@ ctc_new_device(struct ccwgroup_device *cgdev)
		goto out;
	}

	ctc_add_attributes(&cgdev->dev);
	if (ctc_add_attributes(&cgdev->dev)) {
		ctc_netdev_unregister(dev);
		dev->priv = NULL;
		ctc_free_netdevice(dev, 1);
		goto out;
	}

	strlcpy(privptr->fsm->name, dev->name, sizeof (privptr->fsm->name));

Loading