Received: by 10.223.185.116 with SMTP id b49csp1136753wrg; Wed, 14 Feb 2018 12:11:15 -0800 (PST) X-Google-Smtp-Source: AH8x2258k1SVEBxAg+D0p4/buaOrZTgvFmoO+quKicEgOVT8H1+ELsvM7++7ZtxR3R8zOpaocRX/ X-Received: by 10.98.198.143 with SMTP id x15mr255814pfk.22.1518639075357; Wed, 14 Feb 2018 12:11:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518639075; cv=none; d=google.com; s=arc-20160816; b=vyqtOTBDSnGBn48Y6RFpaxSnbb1reNMXMyAfTH32TYKJtzWVzS/4SbNxZtrTiTFMEb Hqhi5GsBc4Pvh6yEeLm1Xw/VHiRaYfZex1tOQJimAD1PUD3gk0C4qwF6wRXDBtolPZ5u vl+rfht17PQI80zNowW/0pRFY5BbtTmOry1AE07vjPPHamkoS3WbGS4SrSSNfxnTXk/K HdFazUuD1vExC8p3TIo+iek4GI0LHJCQZMFviIsmGYD9jtKB9Gr2rulrRug6ZZCRMAQQ pLswezoWSMT2oHQFFPvBet7Ff2KVFrtxp63mAl45K5of4saFq0RX7DLUSA7/wFEsA+zz Gs2A== 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:arc-authentication-results; bh=pNzRXRsIjqgzcwud69U2JZnQ9W5h7+YdqnCNcLL9vBM=; b=c0PIrn9cxMXZrdjLKVQoq7oDnjf1qe236OGgOCaLSj8myofmbBAdWfb1ge1eSPKTKb 719bNa+NpzYQRA47yDmiuUgkqOj3YONRnIh+tvnLnDkmcaIbExtZZ7/M8bM5Ge4iDWhn yF+2bcE1lrqhCSpP4O5Zru79cGUPtIt0nop+A06muKDMdZZ4EAI2ilum96qOmwSnCNdi Ql9eO/hCiHjUHQ75s+3+3s+Ang5CVXSXT77TSxBQMAFEtqnPIQ7I7H1/UTVOay5cqGgt c4+TcIbFbFYpetfgkherR5cS6giPri/15JmPaIxWebtyc5l4x8Ju7DcVBRY1IOGDrkS/ ++nA== 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 j4si2981985pgf.585.2018.02.14.12.11.00; Wed, 14 Feb 2018 12:11:15 -0800 (PST) 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 S1161579AbeBNR6o (ORCPT + 99 others); Wed, 14 Feb 2018 12:58:44 -0500 Received: from mx2.suse.de ([195.135.220.15]:50596 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1161508AbeBNR6l (ORCPT ); Wed, 14 Feb 2018 12:58:41 -0500 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay1.suse.de (charybdis-ext.suse.de [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 1D0E0AE82; Wed, 14 Feb 2018 17:58:39 +0000 (UTC) Date: Wed, 14 Feb 2018 18:58:38 +0100 From: Michal Hocko To: Jesper Dangaard Brouer Cc: Jason Wang , ast@kernel.org, daniel@iogearbox.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, mst@redhat.com, Matthew Wilcox , akpm@linux-foundation.org, dhowells@redhat.com, hannes@cmpxchg.org Subject: Re: [PATCH net] bpf: cpumap: use GFP_KERNEL instead of GFP_ATOMIC in __cpu_map_entry_alloc() Message-ID: <20180214175838.GA7275@dhcp22.suse.cz> References: <1518617854-4486-1-git-send-email-jasowang@redhat.com> <20180214150640.GC3443@dhcp22.suse.cz> <20180214183451.25252d72@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180214183451.25252d72@redhat.com> User-Agent: Mutt/1.9.3 (2018-01-21) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed 14-02-18 18:34:51, Jesper Dangaard Brouer wrote: > On Wed, 14 Feb 2018 16:06:40 +0100 > Michal Hocko wrote: > > > On Wed 14-02-18 22:17:34, Jason Wang wrote: > > > There're several implications after commit 0bf7800f1799 ("ptr_ring: > > > try vmalloc() when kmalloc() fails") with the using of vmalloc() since > > > can't allow GFP_ATOMIC but mandate GFP_KERNEL. This will lead a WARN > > > since cpumap try to call with GFP_ATOMIC. Fortunately, entry > > > allocation of cpumap can only be done through syscall path which means > > > GFP_ATOMIC is not necessary, so fixing this by replacing GFP_ATOMIC > > > with GFP_KERNEL. > > > > map_update_elem does the following. Unless I am missing something and > > the callback doesn't call cpu_map_update_elem there then we are in a > > non-preemptible context there and GFP_WAIT would blow up. > > rcu_read_lock(); > > err = map->ops->map_update_elem(map, key, value, attr->flags); > > rcu_read_unlock(); > > Nope - you did miss something ;-) > > You are looking at the wrong place. Look at /kernel/bpf/syscall.c line 697. > > vim +697 kernel/bpf/syscall.c > [...] > } else if (map->map_type == BPF_MAP_TYPE_CPUMAP) { > err = map->ops->map_update_elem(map, key, value, attr->flags); > goto out; > } > > You missed that map type BPF_MAP_TYPE_CPUMAP is special cased, and > is moved outside rcu_read_{lock,unlock} (because it need to create some > kthreads). > > Further more the BPF-verifier disallow BPF programs runtime changing > the BPF_MAP_TYPE_CPUMAP. Right now, we disallow almost everything from > the bpf-side (even reading the value): > > vim +2057 kernel/bpf/verifier.c OK, thanks for the clarification. I am not familiar with the code at all so I was merely looking at call sites and this one just hit my eyes. -- Michal Hocko SUSE Labs