From patchwork Wed Aug 26 03:06:34 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexei Starovoitov X-Patchwork-Id: 510699 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 2A42014055A for ; Wed, 26 Aug 2015 13:07:18 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754987AbbHZDHO (ORCPT ); Tue, 25 Aug 2015 23:07:14 -0400 Received: from mail-pa0-f44.google.com ([209.85.220.44]:33680 "EHLO mail-pa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752134AbbHZDGq (ORCPT ); Tue, 25 Aug 2015 23:06:46 -0400 Received: by pacti10 with SMTP id ti10so71733482pac.0 for ; Tue, 25 Aug 2015 20:06:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=5suiakJjcVoZgs8CycCUDIys3zJ+ax5AJ1vOBHV2qzA=; b=MzoEAzHZrFli7R0MqzrVsy6Yea/PYsAl6cDwC4+dpoxpc+9me2YZjTo3pB9Nf8eiQO W19Xk5e/q2UdAVMP0JaUvj6pMlGB0QF1HonHuUG7H6cbsFCjDqFCTmef9lfv9ohDcr/i BTjpGtkPvpkRIcppdRU0wAUOdu6kZE/1XUlCiCRLP6H+e4F8/7tN6lMmfDpie1V0qJYZ 6v3ectfs+JPc0iiICHqPvL0scn5Pb9wsr7VEL2Q8FXfFLkdwOhmnHBEmzBJ/1tGfhLyi Ecm7WnR90O0gr7gJj9ugdFTUT4AP31UX8EWZFMJMTFv3r+QkxST0D8GLEiCw4+y6BpPV DmPA== X-Gm-Message-State: ALoCoQn4NxsGoXTkiqgzEUE95aef+IDKPlmWowka9dnf5VJCgTb+B4wQ9jaN9BN2Lgr1hkIExHmX X-Received: by 10.66.136.237 with SMTP id qd13mr65041082pab.84.1440558405701; Tue, 25 Aug 2015 20:06:45 -0700 (PDT) Received: from localhost.localdomain ([12.97.19.195]) by smtp.gmail.com with ESMTPSA id jy10sm22636552pbd.66.2015.08.25.20.06.45 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 25 Aug 2015 20:06:45 -0700 (PDT) From: Alexei Starovoitov To: "David S. Miller" Cc: Eric Dumazet , Daniel Borkmann , netdev@vger.kernel.org Subject: [PATCH v2 net-next 4/5] net_sched: convert rsvp to call tcf_exts_destroy from rcu callback Date: Tue, 25 Aug 2015 20:06:34 -0700 Message-Id: <1440558395-7765-5-git-send-email-ast@plumgrid.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1440558395-7765-1-git-send-email-ast@plumgrid.com> References: <1440558395-7765-1-git-send-email-ast@plumgrid.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Adjust destroy path of cls_rsvp to call tcf_exts_destroy() after rcu grace period. Signed-off-by: Alexei Starovoitov Acked-by: Daniel Borkmann --- net/sched/cls_rsvp.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/net/sched/cls_rsvp.h b/net/sched/cls_rsvp.h index 02fa82792dab..f9c9fc075fe6 100644 --- a/net/sched/cls_rsvp.h +++ b/net/sched/cls_rsvp.h @@ -283,12 +283,22 @@ static int rsvp_init(struct tcf_proto *tp) return -ENOBUFS; } -static void -rsvp_delete_filter(struct tcf_proto *tp, struct rsvp_filter *f) +static void rsvp_delete_filter_rcu(struct rcu_head *head) { - tcf_unbind_filter(tp, &f->res); + struct rsvp_filter *f = container_of(head, struct rsvp_filter, rcu); + tcf_exts_destroy(&f->exts); - kfree_rcu(f, rcu); + kfree(f); +} + +static void rsvp_delete_filter(struct tcf_proto *tp, struct rsvp_filter *f) +{ + tcf_unbind_filter(tp, &f->res); + /* all classifiers are required to call tcf_exts_destroy() after rcu + * grace period, since converted-to-rcu actions are relying on that + * in cleanup() callback + */ + call_rcu(&f->rcu, rsvp_delete_filter_rcu); } static bool rsvp_destroy(struct tcf_proto *tp, bool force)