From f4a1b831bc6745f19ac4488c5c4bb8e7dd419ef6 Mon Sep 17 00:00:00 2001 From: John Fastabend Date: Tue, 16 Nov 2010 06:31:39 +0000 Subject: [PATCH] --- yaml --- r: 224432 b: refs/heads/master c: 9ea19481db31d614f729f346bdcf28e4e60ff14a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/core/net-sysfs.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index f27384b53478..5e2399463c2b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5811662b15db018c740c57d037523683fd3e6123 +refs/heads/master: 9ea19481db31d614f729f346bdcf28e4e60ff14a diff --git a/trunk/net/core/net-sysfs.c b/trunk/net/core/net-sysfs.c index 3ba526b56fe3..7abeb7ceaa4c 100644 --- a/trunk/net/core/net-sysfs.c +++ b/trunk/net/core/net-sysfs.c @@ -711,13 +711,18 @@ 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); + } + memset(kobj, 0, sizeof(*kobj)); dev_put(queue->dev); }