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

Commit 7d253b9a authored by Sebastian Ott's avatar Sebastian Ott Committed by Martin Schwidefsky
Browse files

[S390] cio: remove registered flag from ccw_device_private



We used to maintain a "registered" flag in our ccw_device_private
structure. This patch removes the "registered" flag and converts
all users of it to device_is_registered which has the exact same
meaning.

Note: The usage the atomic operation test_and_clear_bit is replaced
by the non-atomic if (device_is_registered()) device_del(). This
will not do harm, since we serialize calls to ccw_device_unregister
with a single-threaded workqueue.

Signed-off-by: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent d7d12ef2
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -303,7 +303,7 @@ int ccw_device_is_orphan(struct ccw_device *cdev)

static void ccw_device_unregister(struct ccw_device *cdev)
{
	if (test_and_clear_bit(1, &cdev->private->registered)) {
	if (device_is_registered(&cdev->dev)) {
		device_del(&cdev->dev);
		/* Release reference from device_initialize(). */
		put_device(&cdev->dev);
@@ -640,12 +640,7 @@ static int ccw_device_register(struct ccw_device *cdev)
			   cdev->private->dev_id.devno);
	if (ret)
		return ret;
	ret = device_add(dev);
	if (ret)
		return ret;

	set_bit(1, &cdev->private->registered);
	return ret;
	return device_add(dev);
}

static int match_dev_id(struct device *dev, void *data)
@@ -669,7 +664,7 @@ static void ccw_device_do_unbind_bind(struct ccw_device *cdev)
{
	int ret;

	if (test_bit(1, &cdev->private->registered)) {
	if (device_is_registered(&cdev->dev)) {
		device_release_driver(&cdev->dev);
		ret = device_attach(&cdev->dev);
		WARN_ON(ret == -ENODEV);
+0 −1
Original line number Diff line number Diff line
@@ -145,7 +145,6 @@ struct ccw_device_private {
	struct subchannel *sch;
	int state;		/* device state */
	atomic_t onoff;
	unsigned long registered;
	struct ccw_dev_id dev_id;	/* device id */
	struct subchannel_id schid;	/* subchannel number */
	struct ccw_request req;		/* internal I/O request */