1. [I2C] fix unsafe usage of list_for_each in i2c-core
Hi,
i2c-core.c contains 2 loops that iterate over the list of the clients attached
to an adapter and detaches them. Detaching the clients will actually remove
them from the list the loop is iterating over. Therefore the
list_for_each_safe() method has to be used.
Andreas
===== i2c-core.c 1.38 vs edited =====
--- 1.38/drivers/i2c/i2c-core.c Mon May 26 02:00:00 2003
int i2c_del_adapter(struct i2c_adapter *adap)
{
- struct list_head *item;
+ struct list_head *item, *_n;
struct i2c_driver *driver;
struct i2c_client *client;
/* detach any active clients. This must be done first, because
* it can fail; in which case we give upp. */
- list_for_each(item,&adap->clients) {
+ list_for_each_safe(item, _n, &adap->clients) {
client = list_entry(item, struct i2c_client, list);
int i2c_del_driver(struct i2c_driver *driver)
{
- struct list_head *item1;
- struct list_head *item2;
+ struct list_head *item1, *item2, *_n;
struct i2c_client *client;
struct i2c_adapter *adap;
goto out_unlock;
}
} else {
- list_for_each(item2,&adap->clients) {
+ list_for_each_safe(item2, _n, &adap->clients) {
client = list_entry(item2, struct i2c_client, list);
if (client->driver != driver)
continue;
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
2. AVA-1505 scsi:0 hosts - Slackware 3.4
3. i2c #1/3: listify i2c core
4. Best way to return characters?
5. [2.5][CHECKER] i2c-core locking
6. pinout for happy hacker PC keyboard cable...
7. driver core support for i2c bus and drivers
8. Xman Error: No manual pages found
9. 2.5.36 i2c core drivers module_init/exit cleanup
10. Four new i2c drivers and __init/__exit cleanup to i2c
11. 2.5.36 i2c new adapter i2c-pport driver
12. Four new i2c drivers and __init/__exit cleanup to i2c