All of lore.kernel.org
 help / color / mirror / Atom feed
From: dtor_core@ameritech.net (Dmitry Torokhov)
To: sensors@Stimpy.netroedge.com
Cc: LKML <linux-kernel@vger.kernel.org>, Greg KH <gregkh@suse.de>,
	Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Subject: [RFC/PATCH 5/22] W1: list handling cleanup
Date: Thu, 19 May 2005 06:25:53 +0000	[thread overview]
Message-ID: <200504210211.53134.dtor_core@ameritech.net> (raw)
In-Reply-To: <200504210207.02421.dtor_core@ameritech.net>

W1: list handling cleanup. Most of the list_for_each_safe users
    don't need *_safe variant, *_entry variant is better suited
    in most places. Also, checking retrieved list element for
    null is a bit pointless...

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---

 w1.c     |  131 +++++++++++++++++++++++----------------------------------------
 w1.h     |    6 +-
 w1_int.c |   23 +++--------
 3 files changed, 58 insertions(+), 102 deletions(-)

Index: dtor/drivers/w1/w1.c
=================================--- dtor.orig/drivers/w1/w1.c
+++ dtor/drivers/w1/w1.c
@@ -184,6 +184,7 @@ static ssize_t w1_master_attribute_show_
 
 {
 	struct w1_master *md = container_of(dev, struct w1_master, dev);
+	struct w1_slave *slave;
 	int c = PAGE_SIZE;
 
 	if (down_interruptible(&md->mutex))
@@ -191,16 +192,9 @@ static ssize_t w1_master_attribute_show_
 
 	if (md->slave_count = 0)
 		c -= snprintf(buf + PAGE_SIZE - c, c, "not found.\n");
-	else {
-		struct list_head *ent, *n;
-		struct w1_slave *sl;
-
-		list_for_each_safe(ent, n, &md->slist) {
-			sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-			c -= snprintf(buf + PAGE_SIZE - c, c, "%s\n", sl->name);
-		}
-	}
+	else
+		list_for_each_entry(slave, &md->slist, node)
+			c -= snprintf(buf + PAGE_SIZE - c, c, "%s\n", slave->name);
 
 	up(&md->mutex);
 
@@ -391,7 +385,7 @@ static int __w1_attach_slave_device(stru
 		return err;
 	}
 
-	list_add_tail(&sl->w1_slave_entry, &sl->master->slist);
+	list_add_tail(&sl->node, &sl->master->slist);
 
 	return 0;
 }
@@ -415,7 +409,7 @@ static int w1_attach_slave_device(struct
 
 	sl->owner = THIS_MODULE;
 	sl->master = dev;
-	set_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);
+	set_bit(W1_SLAVE_ACTIVE, &sl->flags);
 
 	memcpy(&sl->reg_num, rn, sizeof(sl->reg_num));
 	atomic_set(&sl->refcnt, 0);
@@ -484,29 +478,27 @@ static void w1_slave_detach(struct w1_sl
 
 static struct w1_master *w1_search_master(unsigned long data)
 {
-	struct w1_master *dev;
+	struct w1_master *master;
 	int found = 0;
 
 	spin_lock_irq(&w1_mlock);
-	list_for_each_entry(dev, &w1_masters, w1_master_entry) {
-		if (dev->bus_master->data = data) {
+	list_for_each_entry(master, &w1_masters, node) {
+		if (master->bus_master->data = data) {
 			found = 1;
-			atomic_inc(&dev->refcnt);
+			atomic_inc(&master->refcnt);
 			break;
 		}
 	}
 	spin_unlock_irq(&w1_mlock);
 
-	return (found)?dev:NULL;
+	return found ? master : NULL;
 }
 
 void w1_slave_found(unsigned long data, u64 rn)
 {
 	int slave_count;
-	struct w1_slave *sl;
-	struct list_head *ent;
+	struct w1_slave *slave;
 	struct w1_reg_num *tmp;
-	int family_found = 0;
 	struct w1_master *dev;
 
 	dev = w1_search_master(data);
@@ -519,20 +511,14 @@ void w1_slave_found(unsigned long data, 
 	tmp = (struct w1_reg_num *) &rn;
 
 	slave_count = 0;
-	list_for_each(ent, &dev->slist) {
+	list_for_each_entry(slave, &dev->slist, node) {
 
-		sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-		if (sl->reg_num.family = tmp->family &&
-		    sl->reg_num.id = tmp->id &&
-		    sl->reg_num.crc = tmp->crc) {
-			set_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);
-			break;
-		} else if (sl->reg_num.family = tmp->family) {
-			family_found = 1;
+		if (slave->reg_num.family = tmp->family &&
+		    slave->reg_num.id = tmp->id &&
+		    slave->reg_num.crc = tmp->crc) {
+			set_bit(W1_SLAVE_ACTIVE, &slave->flags);
 			break;
 		}
-
 		slave_count++;
 	}
 
@@ -635,9 +621,8 @@ void w1_search(struct w1_master *dev)
 
 int w1_control(void *data)
 {
-	struct w1_slave *sl;
-	struct w1_master *dev;
-	struct list_head *ent, *ment, *n, *mn;
+	struct w1_slave *slave, *nexts;
+	struct w1_master *master, *nextm;
 	int err, have_to_wait = 0;
 
 	daemonize("w1_control");
@@ -652,52 +637,42 @@ int w1_control(void *data)
 		if (signal_pending(current))
 			flush_signals(current);
 
-		list_for_each_safe(ment, mn, &w1_masters) {
-			dev = list_entry(ment, struct w1_master, w1_master_entry);
+		list_for_each_entry_safe(master, nextm, &w1_masters, node) {
 
-			if (!control_needs_exit && !dev->need_exit)
+			if (!control_needs_exit && !master->need_exit)
 				continue;
 			/*
 			 * Little race: we can create thread but not set the flag.
 			 * Get a chance for external process to set flag up.
 			 */
-			if (!dev->initialized) {
+			if (!master->initialized) {
 				have_to_wait = 1;
 				continue;
 			}
 
 			spin_lock(&w1_mlock);
-			list_del(&dev->w1_master_entry);
+			list_del(&master->node);
 			spin_unlock(&w1_mlock);
 
 			if (control_needs_exit) {
-				dev->need_exit = 1;
+				master->need_exit = 1;
 
-				err = kill_proc(dev->kpid, SIGTERM, 1);
+				err = kill_proc(master->kpid, SIGTERM, 1);
 				if (err)
-					dev_err(&dev->dev,
+					dev_err(&master->dev,
 						 "Failed to send signal to w1 kernel thread %d.\n",
-						 dev->kpid);
+						 master->kpid);
 			}
 
-			wait_for_completion(&dev->dev_exited);
+			wait_for_completion(&master->dev_exited);
 
-			list_for_each_safe(ent, n, &dev->slist) {
-				sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-				if (!sl)
-					dev_warn(&dev->dev,
-						  "%s: slave entry is NULL.\n",
-						  __func__);
-				else {
-					list_del(&sl->w1_slave_entry);
-
-					w1_slave_detach(sl);
-					kfree(sl);
-				}
+			list_for_each_entry_safe(slave, nexts, &master->slist, node) {
+				list_del(&slave->node);
+				w1_slave_detach(slave);
+				kfree(slave);
 			}
-			w1_destroy_master_attributes(dev);
-			atomic_dec(&dev->refcnt);
+			w1_destroy_master_attributes(master);
+			atomic_dec(&master->refcnt);
 		}
 	}
 
@@ -707,8 +682,7 @@ int w1_control(void *data)
 int w1_process(void *data)
 {
 	struct w1_master *dev = (struct w1_master *) data;
-	struct list_head *ent, *n;
-	struct w1_slave *sl;
+	struct w1_slave *slave, *next;
 
 	daemonize("%s", dev->name);
 	allow_signal(SIGTERM);
@@ -729,27 +703,21 @@ int w1_process(void *data)
 		if (down_interruptible(&dev->mutex))
 			continue;
 
-		list_for_each_safe(ent, n, &dev->slist) {
-			sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-			if (sl)
-				clear_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);
-		}
+		list_for_each_entry(slave, &dev->slist, node)
+			clear_bit(W1_SLAVE_ACTIVE, &slave->flags);
 
 		w1_search_devices(dev, w1_slave_found);
 
-		list_for_each_safe(ent, n, &dev->slist) {
-			sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-			if (sl && !test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags) && !--sl->ttl) {
-				list_del (&sl->w1_slave_entry);
-
-				w1_slave_detach (sl);
-				kfree (sl);
+		list_for_each_entry_safe(slave, next, &dev->slist, node) {
 
+			if (test_bit(W1_SLAVE_ACTIVE, &slave->flags))
+				slave->ttl = dev->slave_ttl;
+			else if (!--slave->ttl) {
+				list_del(&slave->node);
+				w1_slave_detach(slave);
+				kfree(slave);
 				dev->slave_count--;
-			} else if (test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags))
-				sl->ttl = dev->slave_ttl;
+			}
 		}
 		up(&dev->mutex);
 	}
@@ -802,13 +770,10 @@ err_out_exit_init:
 
 void w1_fini(void)
 {
-	struct w1_master *dev;
-	struct list_head *ent, *n;
+	struct w1_master *master, *next;
 
-	list_for_each_safe(ent, n, &w1_masters) {
-		dev = list_entry(ent, struct w1_master, w1_master_entry);
-		__w1_remove_master_device(dev);
-	}
+	list_for_each_entry_safe(master, next, &w1_masters, node)
+		__w1_remove_master_device(master);
 
 	control_needs_exit = 1;
 
Index: dtor/drivers/w1/w1.h
=================================--- dtor.orig/drivers/w1/w1.h
+++ dtor/drivers/w1/w1.h
@@ -66,11 +66,11 @@ struct w1_slave
 {
 	struct module		*owner;
 	unsigned char		name[W1_MAXNAMELEN];
-	struct list_head	w1_slave_entry;
+	struct list_head	node;
 	struct w1_reg_num	reg_num;
 	atomic_t		refcnt;
 	u8			rom[9];
-	u32			flags;
+	unsigned long		flags;
 	int			ttl;
 
 	struct w1_master	*master;
@@ -107,7 +107,7 @@ struct w1_bus_master
 
 struct w1_master
 {
-	struct list_head	w1_master_entry;
+	struct list_head	node;
 	struct module		*owner;
 	unsigned char		name[W1_MAXNAMELEN];
 	struct list_head	slist;
Index: dtor/drivers/w1/w1_int.c
=================================--- dtor.orig/drivers/w1/w1_int.c
+++ dtor/drivers/w1/w1_int.c
@@ -142,7 +142,7 @@ int w1_add_master_device(struct w1_bus_m
 	dev->initialized = 1;
 
 	spin_lock(&w1_mlock);
-	list_add(&dev->w1_master_entry, &w1_masters);
+	list_add(&dev->node, &w1_masters);
 	spin_unlock(&w1_mlock);
 
 	msg.id.mst.id = dev->id;
@@ -196,24 +196,15 @@ void __w1_remove_master_device(struct w1
 
 void w1_remove_master_device(struct w1_bus_master *bm)
 {
-	struct w1_master *dev = NULL;
-	struct list_head *ent, *n;
+	struct w1_master *dev;
 
-	list_for_each_safe(ent, n, &w1_masters) {
-		dev = list_entry(ent, struct w1_master, w1_master_entry);
-		if (!dev->initialized)
-			continue;
-
-		if (dev->bus_master->data = bm->data)
+	list_for_each_entry(dev, &w1_masters, node)
+		if (dev->initialized && dev->bus_master->data = bm->data) {
+			__w1_remove_master_device(dev);
 			break;
-	}
-
-	if (!dev) {
-		printk(KERN_ERR "Device doesn't exist.\n");
-		return;
-	}
+		}
 
-	__w1_remove_master_device(dev);
+	printk(KERN_ERR "Device doesn't exist.\n");
 }
 
 EXPORT_SYMBOL(w1_add_master_device);

WARNING: multiple messages have this Message-ID (diff)
From: Dmitry Torokhov <dtor_core@ameritech.net>
To: sensors@Stimpy.netroedge.com
Cc: LKML <linux-kernel@vger.kernel.org>, Greg KH <gregkh@suse.de>,
	Evgeniy Polyakov <johnpol@2ka.mipt.ru>
Subject: [RFC/PATCH 5/22] W1: list handling cleanup
Date: Thu, 21 Apr 2005 02:11:52 -0500	[thread overview]
Message-ID: <200504210211.53134.dtor_core@ameritech.net> (raw)
In-Reply-To: <200504210207.02421.dtor_core@ameritech.net>

W1: list handling cleanup. Most of the list_for_each_safe users
    don't need *_safe variant, *_entry variant is better suited
    in most places. Also, checking retrieved list element for
    null is a bit pointless...

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
---

 w1.c     |  131 +++++++++++++++++++++++----------------------------------------
 w1.h     |    6 +-
 w1_int.c |   23 +++--------
 3 files changed, 58 insertions(+), 102 deletions(-)

Index: dtor/drivers/w1/w1.c
===================================================================
--- dtor.orig/drivers/w1/w1.c
+++ dtor/drivers/w1/w1.c
@@ -184,6 +184,7 @@ static ssize_t w1_master_attribute_show_
 
 {
 	struct w1_master *md = container_of(dev, struct w1_master, dev);
+	struct w1_slave *slave;
 	int c = PAGE_SIZE;
 
 	if (down_interruptible(&md->mutex))
@@ -191,16 +192,9 @@ static ssize_t w1_master_attribute_show_
 
 	if (md->slave_count == 0)
 		c -= snprintf(buf + PAGE_SIZE - c, c, "not found.\n");
-	else {
-		struct list_head *ent, *n;
-		struct w1_slave *sl;
-
-		list_for_each_safe(ent, n, &md->slist) {
-			sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-			c -= snprintf(buf + PAGE_SIZE - c, c, "%s\n", sl->name);
-		}
-	}
+	else
+		list_for_each_entry(slave, &md->slist, node)
+			c -= snprintf(buf + PAGE_SIZE - c, c, "%s\n", slave->name);
 
 	up(&md->mutex);
 
@@ -391,7 +385,7 @@ static int __w1_attach_slave_device(stru
 		return err;
 	}
 
-	list_add_tail(&sl->w1_slave_entry, &sl->master->slist);
+	list_add_tail(&sl->node, &sl->master->slist);
 
 	return 0;
 }
@@ -415,7 +409,7 @@ static int w1_attach_slave_device(struct
 
 	sl->owner = THIS_MODULE;
 	sl->master = dev;
-	set_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);
+	set_bit(W1_SLAVE_ACTIVE, &sl->flags);
 
 	memcpy(&sl->reg_num, rn, sizeof(sl->reg_num));
 	atomic_set(&sl->refcnt, 0);
@@ -484,29 +478,27 @@ static void w1_slave_detach(struct w1_sl
 
 static struct w1_master *w1_search_master(unsigned long data)
 {
-	struct w1_master *dev;
+	struct w1_master *master;
 	int found = 0;
 
 	spin_lock_irq(&w1_mlock);
-	list_for_each_entry(dev, &w1_masters, w1_master_entry) {
-		if (dev->bus_master->data == data) {
+	list_for_each_entry(master, &w1_masters, node) {
+		if (master->bus_master->data == data) {
 			found = 1;
-			atomic_inc(&dev->refcnt);
+			atomic_inc(&master->refcnt);
 			break;
 		}
 	}
 	spin_unlock_irq(&w1_mlock);
 
-	return (found)?dev:NULL;
+	return found ? master : NULL;
 }
 
 void w1_slave_found(unsigned long data, u64 rn)
 {
 	int slave_count;
-	struct w1_slave *sl;
-	struct list_head *ent;
+	struct w1_slave *slave;
 	struct w1_reg_num *tmp;
-	int family_found = 0;
 	struct w1_master *dev;
 
 	dev = w1_search_master(data);
@@ -519,20 +511,14 @@ void w1_slave_found(unsigned long data, 
 	tmp = (struct w1_reg_num *) &rn;
 
 	slave_count = 0;
-	list_for_each(ent, &dev->slist) {
+	list_for_each_entry(slave, &dev->slist, node) {
 
-		sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-		if (sl->reg_num.family == tmp->family &&
-		    sl->reg_num.id == tmp->id &&
-		    sl->reg_num.crc == tmp->crc) {
-			set_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);
-			break;
-		} else if (sl->reg_num.family == tmp->family) {
-			family_found = 1;
+		if (slave->reg_num.family == tmp->family &&
+		    slave->reg_num.id == tmp->id &&
+		    slave->reg_num.crc == tmp->crc) {
+			set_bit(W1_SLAVE_ACTIVE, &slave->flags);
 			break;
 		}
-
 		slave_count++;
 	}
 
@@ -635,9 +621,8 @@ void w1_search(struct w1_master *dev)
 
 int w1_control(void *data)
 {
-	struct w1_slave *sl;
-	struct w1_master *dev;
-	struct list_head *ent, *ment, *n, *mn;
+	struct w1_slave *slave, *nexts;
+	struct w1_master *master, *nextm;
 	int err, have_to_wait = 0;
 
 	daemonize("w1_control");
@@ -652,52 +637,42 @@ int w1_control(void *data)
 		if (signal_pending(current))
 			flush_signals(current);
 
-		list_for_each_safe(ment, mn, &w1_masters) {
-			dev = list_entry(ment, struct w1_master, w1_master_entry);
+		list_for_each_entry_safe(master, nextm, &w1_masters, node) {
 
-			if (!control_needs_exit && !dev->need_exit)
+			if (!control_needs_exit && !master->need_exit)
 				continue;
 			/*
 			 * Little race: we can create thread but not set the flag.
 			 * Get a chance for external process to set flag up.
 			 */
-			if (!dev->initialized) {
+			if (!master->initialized) {
 				have_to_wait = 1;
 				continue;
 			}
 
 			spin_lock(&w1_mlock);
-			list_del(&dev->w1_master_entry);
+			list_del(&master->node);
 			spin_unlock(&w1_mlock);
 
 			if (control_needs_exit) {
-				dev->need_exit = 1;
+				master->need_exit = 1;
 
-				err = kill_proc(dev->kpid, SIGTERM, 1);
+				err = kill_proc(master->kpid, SIGTERM, 1);
 				if (err)
-					dev_err(&dev->dev,
+					dev_err(&master->dev,
 						 "Failed to send signal to w1 kernel thread %d.\n",
-						 dev->kpid);
+						 master->kpid);
 			}
 
-			wait_for_completion(&dev->dev_exited);
+			wait_for_completion(&master->dev_exited);
 
-			list_for_each_safe(ent, n, &dev->slist) {
-				sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-				if (!sl)
-					dev_warn(&dev->dev,
-						  "%s: slave entry is NULL.\n",
-						  __func__);
-				else {
-					list_del(&sl->w1_slave_entry);
-
-					w1_slave_detach(sl);
-					kfree(sl);
-				}
+			list_for_each_entry_safe(slave, nexts, &master->slist, node) {
+				list_del(&slave->node);
+				w1_slave_detach(slave);
+				kfree(slave);
 			}
-			w1_destroy_master_attributes(dev);
-			atomic_dec(&dev->refcnt);
+			w1_destroy_master_attributes(master);
+			atomic_dec(&master->refcnt);
 		}
 	}
 
@@ -707,8 +682,7 @@ int w1_control(void *data)
 int w1_process(void *data)
 {
 	struct w1_master *dev = (struct w1_master *) data;
-	struct list_head *ent, *n;
-	struct w1_slave *sl;
+	struct w1_slave *slave, *next;
 
 	daemonize("%s", dev->name);
 	allow_signal(SIGTERM);
@@ -729,27 +703,21 @@ int w1_process(void *data)
 		if (down_interruptible(&dev->mutex))
 			continue;
 
-		list_for_each_safe(ent, n, &dev->slist) {
-			sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-			if (sl)
-				clear_bit(W1_SLAVE_ACTIVE, (long *)&sl->flags);
-		}
+		list_for_each_entry(slave, &dev->slist, node)
+			clear_bit(W1_SLAVE_ACTIVE, &slave->flags);
 
 		w1_search_devices(dev, w1_slave_found);
 
-		list_for_each_safe(ent, n, &dev->slist) {
-			sl = list_entry(ent, struct w1_slave, w1_slave_entry);
-
-			if (sl && !test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags) && !--sl->ttl) {
-				list_del (&sl->w1_slave_entry);
-
-				w1_slave_detach (sl);
-				kfree (sl);
+		list_for_each_entry_safe(slave, next, &dev->slist, node) {
 
+			if (test_bit(W1_SLAVE_ACTIVE, &slave->flags))
+				slave->ttl = dev->slave_ttl;
+			else if (!--slave->ttl) {
+				list_del(&slave->node);
+				w1_slave_detach(slave);
+				kfree(slave);
 				dev->slave_count--;
-			} else if (test_bit(W1_SLAVE_ACTIVE, (unsigned long *)&sl->flags))
-				sl->ttl = dev->slave_ttl;
+			}
 		}
 		up(&dev->mutex);
 	}
@@ -802,13 +770,10 @@ err_out_exit_init:
 
 void w1_fini(void)
 {
-	struct w1_master *dev;
-	struct list_head *ent, *n;
+	struct w1_master *master, *next;
 
-	list_for_each_safe(ent, n, &w1_masters) {
-		dev = list_entry(ent, struct w1_master, w1_master_entry);
-		__w1_remove_master_device(dev);
-	}
+	list_for_each_entry_safe(master, next, &w1_masters, node)
+		__w1_remove_master_device(master);
 
 	control_needs_exit = 1;
 
Index: dtor/drivers/w1/w1.h
===================================================================
--- dtor.orig/drivers/w1/w1.h
+++ dtor/drivers/w1/w1.h
@@ -66,11 +66,11 @@ struct w1_slave
 {
 	struct module		*owner;
 	unsigned char		name[W1_MAXNAMELEN];
-	struct list_head	w1_slave_entry;
+	struct list_head	node;
 	struct w1_reg_num	reg_num;
 	atomic_t		refcnt;
 	u8			rom[9];
-	u32			flags;
+	unsigned long		flags;
 	int			ttl;
 
 	struct w1_master	*master;
@@ -107,7 +107,7 @@ struct w1_bus_master
 
 struct w1_master
 {
-	struct list_head	w1_master_entry;
+	struct list_head	node;
 	struct module		*owner;
 	unsigned char		name[W1_MAXNAMELEN];
 	struct list_head	slist;
Index: dtor/drivers/w1/w1_int.c
===================================================================
--- dtor.orig/drivers/w1/w1_int.c
+++ dtor/drivers/w1/w1_int.c
@@ -142,7 +142,7 @@ int w1_add_master_device(struct w1_bus_m
 	dev->initialized = 1;
 
 	spin_lock(&w1_mlock);
-	list_add(&dev->w1_master_entry, &w1_masters);
+	list_add(&dev->node, &w1_masters);
 	spin_unlock(&w1_mlock);
 
 	msg.id.mst.id = dev->id;
@@ -196,24 +196,15 @@ void __w1_remove_master_device(struct w1
 
 void w1_remove_master_device(struct w1_bus_master *bm)
 {
-	struct w1_master *dev = NULL;
-	struct list_head *ent, *n;
+	struct w1_master *dev;
 
-	list_for_each_safe(ent, n, &w1_masters) {
-		dev = list_entry(ent, struct w1_master, w1_master_entry);
-		if (!dev->initialized)
-			continue;
-
-		if (dev->bus_master->data == bm->data)
+	list_for_each_entry(dev, &w1_masters, node)
+		if (dev->initialized && dev->bus_master->data == bm->data) {
+			__w1_remove_master_device(dev);
 			break;
-	}
-
-	if (!dev) {
-		printk(KERN_ERR "Device doesn't exist.\n");
-		return;
-	}
+		}
 
-	__w1_remove_master_device(dev);
+	printk(KERN_ERR "Device doesn't exist.\n");
 }
 
 EXPORT_SYMBOL(w1_add_master_device);

  parent reply	other threads:[~2005-05-19  6:25 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-21  7:07 [RFC/PATCH 0/22] W1: sysfs, lifetime and other fixes Dmitry Torokhov
2005-05-19  6:25 ` Dmitry Torokhov
2005-04-21  7:08 ` [RFC/PATCH 1/22] W1: whitespace fixes Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:08 ` [RFC/PATCH 2/22] W1: formatting fixes Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:09 ` [RFC/PATCH 3/22] W1: use attribute group for master's attributes Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:10 ` [RFC/PATCH 4/22] W1: use attribute group for slave's attributes Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:11 ` Dmitry Torokhov [this message]
2005-05-19  6:25   ` [RFC/PATCH 5/22] W1: list handling cleanup Dmitry Torokhov
2005-04-21  7:13 ` [RFC/PATCH 6/22] W1: drop owner field from master and slave structures Dmitry Torokhov
2005-05-19  6:25   ` [RFC/PATCH 6/22] W1: drop owner field from master and slave Dmitry Torokhov
2005-04-21  7:13 ` [RFC/PATCH 7/22] W1: bus operations cleanup Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:15 ` [RFC/PATCH 8/22] W1: merge master code into one file Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:16 ` [RFC/PATCH 9/22] W1: drop custom hotplug over netlink notification Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:17 ` [RFC/PATCH 10/22] W1: drop main control thread Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:18 ` [RFC/PATCH 11/22] W1: move w1_search to the rest of IO code Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:19 ` [RFC/PATCH 12/22] W1: drop unneeded master attributes Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:20 ` [RFC/PATCH 13/22] W1: cleanup master attributes handling Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:21 ` [RFC/PATCH 14/22] W1: rename timeout to scan_interval Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:22 ` [RFC/PATCH 15/22] W1: add slave_ttl master attribute Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:23 ` [RFC/PATCH 16/22] W1: cleanup masters refcounting & more Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:23 ` [RFC/PATCH 17/22] W1: cleanup slave " Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:25 ` [RFC/PATCH 18/22] W1: cleanup family implementation Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:26 ` [RFC/PATCH 19/22] W1: convert families to be proper sysfs rivers Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:27 ` [RFC/PATCH 20/22] W1: add w1_device_id/MODULE_DEVICE_TABLE for automatic driver loading Dmitry Torokhov
2005-05-19  6:25   ` [RFC/PATCH 20/22] W1: add w1_device_id/MODULE_DEVICE_TABLE for Dmitry Torokhov
2005-04-21  7:36 ` [RFC/PATCH 21/22] W1: implement standard hotplug handler Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21  7:38 ` [RFC/PATCH 22/22] W1: expose module parameters in sysfs Dmitry Torokhov
2005-05-19  6:25   ` Dmitry Torokhov
2005-04-21 13:18 ` [RFC/PATCH 0/22] W1: sysfs, lifetime and other fixes Evgeniy Polyakov
2005-05-19  6:25   ` Evgeniy Polyakov
2005-04-21 14:31   ` Dmitry Torokhov
2005-05-19  6:25     ` Dmitry Torokhov
2005-04-25  9:08     ` Evgeniy Polyakov
2005-05-19  6:25       ` Evgeniy Polyakov
2005-04-25 16:32       ` Dmitry Torokhov
2005-05-19  6:25         ` Dmitry Torokhov
2005-04-25 19:26         ` Evgeniy Polyakov
2005-05-19  6:25           ` Evgeniy Polyakov
2005-04-25 21:32           ` Dmitry Torokhov
2005-05-19  6:25             ` Dmitry Torokhov
2005-04-26  7:19             ` Evgeniy Polyakov
2005-05-19  6:25               ` Evgeniy Polyakov
2005-04-25 20:15         ` Evgeniy Polyakov
2005-05-19  6:25           ` Evgeniy Polyakov
2005-04-25 20:22           ` Dmitry Torokhov
2005-05-19  6:25             ` Dmitry Torokhov
2005-04-26  6:43             ` Evgeniy Polyakov
2005-05-19  6:25               ` Evgeniy Polyakov
2005-04-26  6:50               ` Dmitry Torokhov
2005-05-19  6:25                 ` Dmitry Torokhov
2005-04-26  7:06                 ` Evgeniy Polyakov
2005-05-19  6:25                   ` Evgeniy Polyakov
2005-04-26  7:16                   ` Dmitry Torokhov
2005-05-19  6:25                     ` Dmitry Torokhov
2005-04-26  7:35                     ` Evgeniy Polyakov
2005-05-19  6:25                       ` Evgeniy Polyakov
2005-04-26  7:00               ` Greg KH
2005-05-19  6:25                 ` Greg KH
2005-04-26  7:17                 ` Evgeniy Polyakov
2005-05-19  6:25                   ` Evgeniy Polyakov
2005-04-26  6:58         ` Greg KH
2005-05-19  6:25           ` Greg KH
2005-04-21 16:09   ` Dmitry Torokhov
2005-05-19  6:25     ` Dmitry Torokhov
2005-04-25  9:11     ` Evgeniy Polyakov
2005-05-19  6:25       ` Evgeniy Polyakov
2005-04-25 16:36       ` Dmitry Torokhov
2005-05-19  6:25         ` Dmitry Torokhov
2005-04-25 19:32         ` Evgeniy Polyakov
2005-05-19  6:25           ` Evgeniy Polyakov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200504210211.53134.dtor_core@ameritech.net \
    --to=dtor_core@ameritech.net \
    --cc=gregkh@suse.de \
    --cc=johnpol@2ka.mipt.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sensors@Stimpy.netroedge.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.