summaryrefslogtreecommitdiff
path: root/net/core/net-sysfs.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2010-11-29 07:44:01 +0100
committerTakashi Iwai <tiwai@suse.de>2010-11-29 07:44:01 +0100
commitca19e77e44985b5500f5461f7d2f4ce799cb60ce (patch)
tree3ba3635ac2f212b332198b14cc3239195c153e67 /net/core/net-sysfs.c
parent9d57883f08d3c0c111b50bf185dfee9731a12c76 (diff)
parentac70eb1305d5a81efd1e32327d7e79be15a63a5a (diff)
Merge branch 'fix/hda' into topic/hda
Diffstat (limited to 'net/core/net-sysfs.c')
-rw-r--r--net/core/net-sysfs.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index a5ff5a89f376..7f902cad10f8 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -712,15 +712,21 @@ static void rx_queue_release(struct kobject *kobj)
map = rcu_dereference_raw(queue->rps_map);
- if (map)
+ if (map) {
+ RCU_INIT_POINTER(queue->rps_map, NULL);
call_rcu(&map->rcu, rps_map_release);
+ }
flow_table = rcu_dereference_raw(queue->rps_flow_table);
- if (flow_table)
+ if (flow_table) {
+ RCU_INIT_POINTER(queue->rps_flow_table, NULL);
call_rcu(&flow_table->rcu, rps_dev_flow_table_release);
+ }
if (atomic_dec_and_test(&first->count))
kfree(first);
+ else
+ memset(kobj, 0, sizeof(*kobj));
}
static struct kobj_type rx_queue_ktype = {