Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1166288

Re: call_rcu from trace_preempt

Path csiph.com!aioe.org!bofh.it!news.nic.it!robomod
From Steven Rostedt <rostedt@goodmis.org>
Newsgroups linux.kernel
Subject Re: call_rcu from trace_preempt
Date Tue, 16 Jun 2015 19:40:03 +0200
Message-ID <pC307-Sa-29@gated-at.bofh.it> (permalink)
References <pBL3d-6S-55@gated-at.bofh.it> <pBLFT-15x-3@gated-at.bofh.it> <pBNHI-3WS-3@gated-at.bofh.it> <pBODL-5mO-1@gated-at.bofh.it> <pBRUZ-1yj-9@gated-at.bofh.it> <pBYa7-2jk-13@gated-at.bofh.it> <pBYjN-2uo-17@gated-at.bofh.it> <pC2Qr-GT-29@gated-at.bofh.it>
X-Original-To Alexei Starovoitov <ast@plumgrid.com>
X-Session-Marker 726F737465647440676F6F646D69732E6F7267
X-Spam-Summary 2,0,0,,d41d8cd98f00b204,rostedt@goodmis.org,:::::::::,RULES_HIT:41:355:379:541:599:800:960:966:973:988:989:1260:1277:1311:1313:1314:1345:1359:1431:1437:1515:1516:1518:1534:1541:1593:1594:1711:1730:1747:1777:1792:2196:2199:2393:2553:2559:2562:2897:3138:3139:3140:3141:3142:3352:3622:3865:3866:3867:3868:3871:3872:3874:4385:5007:6119:6261:7875:7903:9010:10004:10400:10848:10967:11026:11232:11658:11914:12043:12294:12296:12517:12519:12663:12740:13069:13172:13229:13311:13357:14096:14097:21080,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:fn,MSBL:0,DNSBL:none,Custom_rules:0:0:0
X-He-Tag magic68_2199160611012
X-Filterd-Recvd-Size 2272
X-Mailer Claws Mail 3.11.1 (GTK+ 2.24.25; x86_64-pc-linux-gnu)
MIME-Version 1.0
Content-Type text/plain; charset=US-ASCII
Content-Transfer-Encoding 7bit
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 35
Organization linux.* mail to news gateway
X-Original-Cc Daniel Wagner <wagi@monom.org>, paulmck@linux.vnet.ibm.com, Daniel Wagner <daniel.wagner@bmw-carit.de>, LKML <linux-kernel@vger.kernel.org>
X-Original-Date Tue, 16 Jun 2015 13:37:09 -0400
X-Original-Message-ID <20150616133709.6c53645d@gandalf.local.home>
X-Original-References <557F509D.2000509@plumgrid.com> <20150615230702.GB3913@linux.vnet.ibm.com> <557F7764.5060707@plumgrid.com> <20150616021458.GE3913@linux.vnet.ibm.com> <557FB7E1.6080004@plumgrid.com> <20150616122733.GG3913@linux.vnet.ibm.com> <558018DD.1080701@monom.org> <55805AC5.8020507@plumgrid.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref aioe.org linux.kernel:1166288

Show key headers only | View raw


On Tue, 16 Jun 2015 10:20:05 -0700
Alexei Starovoitov <ast@plumgrid.com> wrote:

> On 6/16/15 5:38 AM, Daniel Wagner wrote:
> > static int free_thread(void *arg)
> > +{
> > +	unsigned long flags;
> > +	struct htab_elem *l;
> > +
> > +	while (!kthread_should_stop()) {
> > +		spin_lock_irqsave(&elem_freelist_lock, flags);
> > +		while (!list_empty(&elem_freelist)) {
> > +			l = list_entry(elem_freelist.next,
> > +				struct htab_elem, list);
> > +			list_del(&l->list);
> > +			kfree(l);
> 
> that's not right, since such thread defeats rcu protection of lookup.
> We need either kfree_rcu/call_rcu or synchronize_rcu.
> Obviously the former is preferred that's why I'm still digging into it.
> Probably a thread that does kfree_rcu would be ok, but we shouldn't
> be doing it unconditionally. For all networking programs and 99%
> of tracing programs the existing code is fine and I don't want to
> slow it down to tackle the corner case.
> Extra spin_lock just to add it to the list is also quite costly.

Use a irq_work() handler to do the kfree_rcu(), and use llist (lockless
list) to add items to the list.

-- Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

Re: call_rcu from trace_preempt Alexei Starovoitov <ast@plumgrid.com> - 2015-06-16 03:20 +0200
  Re: call_rcu from trace_preempt Alexei Starovoitov <ast@plumgrid.com> - 2015-06-16 19:30 +0200
    Re: call_rcu from trace_preempt Steven Rostedt <rostedt@goodmis.org> - 2015-06-16 19:40 +0200
    Re: call_rcu from trace_preempt "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2015-06-17 22:40 +0200
      Re: call_rcu from trace_preempt Alexei Starovoitov <ast@plumgrid.com> - 2015-06-17 23:00 +0200
        Re: call_rcu from trace_preempt "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2015-06-17 23:40 +0200
          Re: call_rcu from trace_preempt Alexei Starovoitov <ast@plumgrid.com> - 2015-06-18 02:00 +0200
            Re: call_rcu from trace_preempt "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2015-06-18 02:30 +0200
  Re: call_rcu from trace_preempt "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2015-06-16 19:50 +0200
    Re: call_rcu from trace_preempt Steven Rostedt <rostedt@goodmis.org> - 2015-06-16 21:00 +0200
      Re: call_rcu from trace_preempt "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2015-06-16 21:30 +0200
        Re: call_rcu from trace_preempt Steven Rostedt <rostedt@goodmis.org> - 2015-06-16 21:30 +0200
          Re: call_rcu from trace_preempt "Paul E. McKenney" <paulmck@linux.vnet.ibm.com> - 2015-06-16 21:40 +0200

csiph-web