Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp2149111imm; Fri, 7 Sep 2018 11:33:07 -0700 (PDT) X-Google-Smtp-Source: ANB0VdYBWrxsw4RcoapGwvUKBhBO2ODouYjW5sAdd+7n2AeKLczG1ZPZx4oA1umbXTP9nC3cnWNE X-Received: by 2002:a17:902:864b:: with SMTP id y11-v6mr9424920plt.335.1536345187787; Fri, 07 Sep 2018 11:33:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1536345187; cv=none; d=google.com; s=arc-20160816; b=dxVWMTgvTpbL7rCcDLP85KKZ0DDTYDvlF25zvq/43QlPq6ZJZaoKjTfHDHZCz/5d71 IwnrioIUTtNUBPwC7PSqlXGKgtcqNUMEIAXOuzD5wyRWSsYpdh+QtolQl2/yogbh7JsB RqoQeazxDloiZB4W3ujhGLkPiu3XBO14+FUGDITWwKrYKPmllhub/CNiZEzXykdeg5xW kyrfjsJ3myGJKfh7scjciVNKjcigFUm/OFAXcNSIGhzd4oL+dp9tQ+TzOPHuyjIbwJG+ +Z8+jv9ACeobO4xCkP3Yrn6hJ0hiq7Z3o/B/MMjgtigW91AKQfSb4ZSAf1cghaIpx3yX XmnQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date; bh=fF934Wah8YnfIJpBQNcJVAzMSxKpZP6CR1W8fTP5l1s=; b=wOEeNtCBDYekl7B9nbB0Lz2rHya80NVBIdHoFOO6O8oiMUIM5XFCnpqKQUv9CaQIkA KxEHfgKivh3Yw8Tuwv+phAdPo18Hbwck0fhmG4Fpc+dG2vF9qbl60HPFyqEpxCrRjDsq bVQ0JKoHdDF6nrx+1S9ftp/lnJf7Ul9+PYPXzVuB8v3VvOPeVlzgtWfMJixs0ANXWETL mmxrc8sT0cO0/FcBxqYbyFY+cFpGljGU2isY1sQoQXlEJbuuOIOCl/XwDDbzMZEnCuAc 2dvP/38j3qEuPZ5glLgehOM/PQAgt9VrwAhwVbdbGVQ2NVurRqW+SwBBEPCtJIW/yK6o yjzQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y4-v6si9029346pgh.225.2018.09.07.11.32.52; Fri, 07 Sep 2018 11:33:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727734AbeIGXNE (ORCPT + 99 others); Fri, 7 Sep 2018 19:13:04 -0400 Received: from mail.kernel.org ([198.145.29.99]:55980 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727607AbeIGXNE (ORCPT ); Fri, 7 Sep 2018 19:13:04 -0400 Received: from gandalf.local.home (cpe-66-24-56-78.stny.res.rr.com [66.24.56.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 79E1D20652; Fri, 7 Sep 2018 18:30:53 +0000 (UTC) Date: Fri, 7 Sep 2018 14:30:52 -0400 From: Steven Rostedt To: Vaibhav Nagarnaik Cc: linux-kernel@vger.kernel.org, jbehmer@google.com Subject: Re: [PATCH] ring-buffer: Allow for rescheduling when removing pages Message-ID: <20180907143052.50ccfab6@gandalf.local.home> In-Reply-To: <20180907182131.144514-1-vnagarnaik@google.com> References: <20180907182131.144514-1-vnagarnaik@google.com> X-Mailer: Claws Mail 3.16.0 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, 7 Sep 2018 11:21:31 -0700 Vaibhav Nagarnaik wrote: > When reducing ring buffer size, pages are removed by scheduling a work > item on each CPU for the corresponding CPU ring buffer. After the pages > are removed from ring buffer linked list, the pages are free()d in a > tight loop. The loop does not give up CPU until all pages are removed. > In a worst case behavior, when lot of pages are to be freed, it can > cause system stall. > > After the pages are removed from the list, the free() can happen while > the work is rescheduled. Add a check for need_sched() within the loop > to prevent the system hangup. > > Reported-by: Jason Behmer > Signed-off-by: Vaibhav Nagarnaik > --- > kernel/trace/ring_buffer.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c > index 1d92d4a982fd..bc1789df7c53 100644 > --- a/kernel/trace/ring_buffer.c > +++ b/kernel/trace/ring_buffer.c > @@ -1546,6 +1546,9 @@ rb_remove_pages(struct ring_buffer_per_cpu *cpu_buffer, unsigned long nr_pages) > tmp_iter_page = first_page; > > do { > + if (need_resched()) > + schedule(); > + Hi, thanks for the patch, but the proper way to do this is to stick in: cond_resched(); And that should solve it for you. Want to send in another patch? -- Steve > to_remove_page = tmp_iter_page; > rb_inc_page(cpu_buffer, &tmp_iter_page); >