Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp74521yba; Thu, 25 Apr 2019 18:18:41 -0700 (PDT) X-Google-Smtp-Source: APXvYqzgKJsFnYG7kmWACKHeJnl4JxH5B3X9y35E69f3gx+v97Nld7KJbW2TmUBp94OffXGuxoXu X-Received: by 2002:a17:902:778b:: with SMTP id o11mr19773476pll.333.1556241521880; Thu, 25 Apr 2019 18:18:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556241521; cv=none; d=google.com; s=arc-20160816; b=P932KrCSlk7kJJStJD+sK1lExaeqdZGYmS601CqSkDfqv4PkCIQ3rudyCQG0+WjnA6 omG4ATXSahVj5+MyAQF+m1qKh/KRqPUtAZE9tAUKcDhyWFpmQNypiSYzonKDjqgkb7L3 hlf+/0in5AVmWWMED0QRZIb6JZlAWb8mB0DleMMnKU925naT96Erc8QH/gmOrcFJiwC4 9jLgR9tiRbGKqmWmhquaMeRVluR08qw1vFEukH+MWpgbmWAaTd8/18lOOIoihMdW/0tq usc+kL2J0C24iPykQQCUgep21LwIPWtkdxcyOZj3q1NTjlbWLP/X8bRHup8oTuDKhW1/ OlZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:dkim-signature; bh=UKfv/+2hxNXo3G0f1rs2ctgRlkVqpH5iJye5M7jma6w=; b=bSJ7+sUL0axj9K7J8dU3bS/tUw4OdQ3MG88pwPlV8ur6hV7epEXhu2dA4Mpnue01C+ DhuZx0nejy+fMj7tsa3hV2xsHGbgAaldBrQv2iE/Thik1klZ04OgTjNVBl0bNcs/rRgc Qmp63/yigS8ncTt/7bvEllxV/kJ/yI4QOYjkNogPobnvB8xRm+rkM3MZDdR1kcsbcWlJ uA/PE3rwNHX6ZCnKyOiTj3l9Nz9p739grhKVPARi8NFNKXGY5owaDomFFnC9MCAW3E3a hXmmgy98LV5ZatKBPipnDjB904wxm6oR7kH+2UG9Ce1/ahcx1z/MzYnO2as2M0tTO7kB 37mw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=f1r9GGLo; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o6si24104290plh.186.2019.04.25.18.18.26; Thu, 25 Apr 2019 18:18:41 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=f1r9GGLo; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387410AbfDYVXo (ORCPT + 99 others); Thu, 25 Apr 2019 17:23:44 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:42997 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726358AbfDYVXn (ORCPT ); Thu, 25 Apr 2019 17:23:43 -0400 Received: by mail-pf1-f195.google.com with SMTP id w25so539280pfi.9 for ; Thu, 25 Apr 2019 14:23:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=UKfv/+2hxNXo3G0f1rs2ctgRlkVqpH5iJye5M7jma6w=; b=f1r9GGLoERmtzgX/NQ/h4vSipA8uc+NFmDN3XAryLlX9f9A3Yka0gS20g/yJ2kYpot uUwVbj2+F+71B16gxNDqujSdvO0dx0mZL2k239u/Sbe3z/sMXo+zXx68WsRqdSw5TCvY HFTb3y2TqXLh1ajZSSOz+1foND/Gm4nHCLFx3vyHQ9yT70nVcv9tBi6kcdUSTdi6tJVK tjk0LLyLKJNydZKcGxwModVIsy2YeCbOhw/HZkDjKZqumc1e3FE/4uzz6mYc5Yjg7nQN 4S6rUXlY0nqXb4mFvxE3O9SAUyCbMVbUrnVB3kNs1I5GxKXK/e3Lv+qI9nAnhSWmST+G 1QsA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=UKfv/+2hxNXo3G0f1rs2ctgRlkVqpH5iJye5M7jma6w=; b=nBown/pzCx4h4fzLrGl7xyVrFUeo7AMFT2D746D7i6xMc85De2zmR/qiTQgFbD67dT /MIYV5QI4vZ26FuAOwftc1QqKvEWlQo7xOz7ilJ/7VY6XHE9AtAhKfUr4WI2MRpENm3t erRjKyAOuQZVcUo2lEQJWln9L7OExHEit91DIuFICfU/MZogFtQE2qmY9D52jCPGB+tc 9T5RAVwEp0PtWj1oOJdmMJX79MbHXDvTSXN7Snir8IjdJ+7VOu4uOlH4GEIlKzzNxeSE Oo7DBC6myKdmiRRZbzZ1+RhBe/vn6ZBXlYdJ9zBRE24hzoiKIb6RoQjgG4rbIIEHoI5G QBYQ== X-Gm-Message-State: APjAAAWJ6cAZpirx2euWkKAJPMXVDqdx+D7z/FnKeUboOCW7hvam6m2W 5HfJBwCB6pjtpNqaOMsZ8Sc= X-Received: by 2002:a63:e048:: with SMTP id n8mr39673496pgj.41.1556227422606; Thu, 25 Apr 2019 14:23:42 -0700 (PDT) Received: from ast-mbp.dhcp.thefacebook.com ([2620:10d:c090:200::3cda]) by smtp.gmail.com with ESMTPSA id y1sm26597209pgc.29.2019.04.25.14.23.40 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 Apr 2019 14:23:41 -0700 (PDT) Date: Thu, 25 Apr 2019 14:23:40 -0700 From: Alexei Starovoitov To: Peter Zijlstra Cc: Waiman Long , Linus Torvalds , Ingo Molnar , Will Deacon , Thomas Gleixner , Linux List Kernel Mailing , the arch/x86 maintainers , Davidlohr Bueso , Tim Chen , huang ying , Roman Gushchin , Alexei Starovoitov , Daniel Borkmann Subject: Re: [PATCH] bpf: Fix preempt_enable_no_resched() abuse Message-ID: <20190425212338.zo3gzg4avfy6ukxf@ast-mbp.dhcp.thefacebook.com> References: <20190419130304.GV14281@hirez.programming.kicks-ass.net> <20190419131522.GW14281@hirez.programming.kicks-ass.net> <57620139-92a3-4a21-56bd-5d6fff23214f@redhat.com> <7b1bfc26-6e90-bd65-ab46-08413acd80e9@redhat.com> <20190423141714.GO11158@hirez.programming.kicks-ass.net> <4f62d7f2-e5f6-500e-3e70-b1d1978f7140@redhat.com> <20190423193435.GX4038@hirez.programming.kicks-ass.net> <88ba7be0-9ec5-941e-1b3f-80fbe05fe3a0@redhat.com> <20190423195559.GY4038@hirez.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190423195559.GY4038@hirez.programming.kicks-ass.net> User-Agent: NeoMutt/20180223 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Apr 23, 2019 at 09:55:59PM +0200, Peter Zijlstra wrote: > On Tue, Apr 23, 2019 at 03:41:32PM -0400, Waiman Long wrote: > > On 4/23/19 3:34 PM, Peter Zijlstra wrote: > > > On Tue, Apr 23, 2019 at 03:12:16PM -0400, Waiman Long wrote: > > > >> You are right on that. However, there is a variant called > > >> preempt_enable_no_resched() that doesn't have this side effect. So I am > > >> going to use that one instead. > > > Only if the very next line is schedule(). Otherwise you're very much not > > > going to use that function. > > > > May I know the reason why. > > Because it can 'consume' a need_resched and introduces arbitrary delays > before the schedule() eventually happens, breaking the very notion of > PREEMPT=y (and the fundamentals RT relies on). > > > I saw a number of instances of > > preempt_enable_no_resched() without right next a schedule(). > > Look more closely.. and let me know, if true, those are bugs that need > fixing. > > Argghhh.. BPF... > > Also, with the recent RCU rework, we can probably drop that > rcu_read_lock()/rcu_read_unlock() from there if we're disabling > preemption anyway. > > --- > Subject: bpf: Fix preempt_enable_no_resched() abuse > > Unless the very next line is schedule(), or implies it, one must not use > preempt_enable_no_resched(). It can cause a preemption to go missing and > thereby cause arbitrary delays, breaking the PREEMPT=y invariant. > > Cc: Roman Gushchin > Cc: Alexei Starovoitov > Cc: Daniel Borkmann > Signed-off-by: Peter Zijlstra (Intel) > --- > > diff --git a/include/linux/bpf.h b/include/linux/bpf.h > index f02367faa58d..944ccc310201 100644 > --- a/include/linux/bpf.h > +++ b/include/linux/bpf.h > @@ -510,7 +510,7 @@ int bpf_prog_array_copy(struct bpf_prog_array __rcu *old_array, > } \ > _out: \ > rcu_read_unlock(); \ > - preempt_enable_no_resched(); \ > + preempt_enable(); \ > _ret; \ Applied to bpf tree. Thanks! It should have been fixed long ago. Not sure how we kept forgetting about it.