[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110830134640.GI3705@shale.localdomain>
Date: Tue, 30 Aug 2011 16:46:40 +0300
From: Dan Carpenter <error27@...il.com>
To: Alexander Smirnov <alex.bluesman.smirnov@...il.com>
Cc: Dmitry Eremin-Solenikov <dbaryshkov@...il.com>,
Sergey Lapin <slapin@...fans.org>,
"David S. Miller" <davem@...emloft.net>,
"open list:IEEE 802.15.4 SUB..."
<linux-zigbee-devel@...ts.sourceforge.net>,
"open list:NETWORKING [GENERAL]" <netdev@...r.kernel.org>,
kernel-janitors@...r.kernel.org
Subject: [patch 2/3 -next] 6LoWPAN: use the _safe version of list_for_each
When we kfree(entry) that causes a use-after-free bug so we have to
use list_for_each_entry_safe() safe here.
Signed-off-by: Dan Carpenter <error27@...il.com>
---
Curly parens are not needed here, but kernel style is to use them for
multi-line indent blocks.
diff --git a/net/ieee802154/6lowpan.c b/net/ieee802154/6lowpan.c
index cf304cc..5dc0489 100644
--- a/net/ieee802154/6lowpan.c
+++ b/net/ieee802154/6lowpan.c
@@ -813,15 +813,17 @@ static void lowpan_dellink(struct net_device *dev, struct list_head *head)
struct lowpan_dev_info *lowpan_dev = lowpan_dev_info(dev);
struct net_device *real_dev = lowpan_dev->real_dev;
struct lowpan_dev_record *entry;
+ struct lowpan_dev_record *tmp;
ASSERT_RTNL();
mutex_lock(&lowpan_dev_info(dev)->dev_list_mtx);
- list_for_each_entry(entry, &lowpan_devices, list)
+ list_for_each_entry_safe(entry, tmp, &lowpan_devices, list) {
if (entry->ldev == dev) {
list_del(&entry->list);
kfree(entry);
}
+ }
mutex_unlock(&lowpan_dev_info(dev)->dev_list_mtx);
mutex_destroy(&lowpan_dev_info(dev)->dev_list_mtx);
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists