Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp1149857rwb; Fri, 23 Sep 2022 08:48:12 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7mT4fc7Nj/VLWuJUnh4VFhQhGRhS8BfRxUXPY7pq864Kdeo4N7Gh/WWUiRDZ9+fOODdWm7 X-Received: by 2002:a17:90b:1d0f:b0:202:be3e:a14a with SMTP id on15-20020a17090b1d0f00b00202be3ea14amr21732610pjb.102.1663948092562; Fri, 23 Sep 2022 08:48:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663948092; cv=none; d=google.com; s=arc-20160816; b=mBmHeo1fF93mr2w6ICxdTXcyHdDuZNNaYT4HSk6KD6zGbtcx3SE2/iOXYC+Kgw2Pps 4LHeSmsG08R0iwVjgmqCzimeslmw9qZAFHRIN5d4mT8JjfVfRvT6GXfFpgnhOn1BzvvB PTTVyqMQCsyJTfYc+z55+cAUswOeqXRiaZou3qdbLL+PZnlJKUnVVaJChedaymlkFaEF TCWxpywlKgK64XGcxvLJw9+6mzniTCdxn6xDAJ6Vo93DxX89MGv8YlaV9HV7WoVn8k9S E1k3dG5qHwnDtkOmaLMnp+vVxPGA3jdGyuGJAoKvzKGNthGEBu/F7y2M0cBOmNvhAsiZ f16w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:user-agent:in-reply-to:content-disposition :mime-version:references:message-id:subject:cc:to:from:date; bh=6t7Bzb59KeLBu2JN1j2i5iXwKUjEPZWQCnmP5RXLr9E=; b=ULHvBfVnOP30ErLpajqwoldTC02+a5FlgxdnqN8Hr18GtFoP2hYCKx48s1SWMvjxpH oWIm9GAvVak/9zgG8Lk1iy+oWeB03/bNhw3so82NTpi5cr8J5ofm0RxgXVHBXj5Iby5Z JUy6s+M/GI3NoLZbDrayUd+tChJA+2Bwim0gpEnxzqzOkqd/zcjNs+Zlt4f7HA54fJr/ PTF9nslimj7z36WJwAir8jWeinJMfI7gFW1/6UWXU6gA08Dq4sQ5SSDoo+U4+syJUvlo LH9Z4naayCtLIU6achE8wmFLjTEgzbezAI72cpqvrQ1fUmmIAiKXGsHSEyhzDUC2KClv OKmQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l7-20020a637007000000b0043961d06b6fsi9316373pgc.598.2022.09.23.08.48.01; Fri, 23 Sep 2022 08:48:12 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231478AbiIWOyS (ORCPT + 99 others); Fri, 23 Sep 2022 10:54:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49606 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229512AbiIWOyR (ORCPT ); Fri, 23 Sep 2022 10:54:17 -0400 Received: from Chamillionaire.breakpoint.cc (Chamillionaire.breakpoint.cc [IPv6:2a0a:51c0:0:12e:520::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05B6B12B4BF; Fri, 23 Sep 2022 07:54:13 -0700 (PDT) Received: from fw by Chamillionaire.breakpoint.cc with local (Exim 4.92) (envelope-from ) id 1obk49-0005kN-E1; Fri, 23 Sep 2022 16:54:09 +0200 Date: Fri, 23 Sep 2022 16:54:09 +0200 From: Florian Westphal To: Uladzislau Rezki Cc: Florian Westphal , Michal Hocko , linux-mm@kvack.org, linux-kernel@vger.kernel.org, vbabka@suse.cz, akpm@linux-foundation.org, netdev@vger.kernel.org, netfilter-devel@vger.kernel.org, Martin Zaharinov Subject: Re: [PATCH mm] mm: fix BUG with kvzalloc+GFP_ATOMIC Message-ID: <20220923145409.GF22541@breakpoint.cc> References: <20220923103858.26729-1-fw@strlen.de> <20220923133512.GE22541@breakpoint.cc> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.10.1 (2018-07-13) X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Uladzislau Rezki wrote: > On Fri, Sep 23, 2022 at 03:35:12PM +0200, Florian Westphal wrote: > > Michal Hocko wrote: > > > On Fri 23-09-22 12:38:58, Florian Westphal wrote: > > > > Martin Zaharinov reports BUG() in mm land for 5.19.10 kernel: > > > > kernel BUG at mm/vmalloc.c:2437! > > > > invalid opcode: 0000 [#1] SMP > > > > CPU: 28 PID: 0 Comm: swapper/28 Tainted: G W O 5.19.9 #1 > > > > [..] > > > > RIP: 0010:__get_vm_area_node+0x120/0x130 > > > > __vmalloc_node_range+0x96/0x1e0 > > > > kvmalloc_node+0x92/0xb0 > > > > bucket_table_alloc.isra.0+0x47/0x140 > > > > rhashtable_try_insert+0x3a4/0x440 > > > > rhashtable_insert_slow+0x1b/0x30 > > > > [..] > > > > > > > > bucket_table_alloc uses kvzallocGPF_ATOMIC). If kmalloc fails, this now > > > > falls through to vmalloc and hits code paths that assume GFP_KERNEL. > > > > > > > > Revert the problematic change and stay with slab allocator. > > > > > > Why don't you simply fix the caller? > > > > Uh, not following? > > > > kvzalloc(GFP_ATOMIC) was perfectly fine, is this illegal again? > > > > static struct vm_struct *__get_vm_area_node(unsigned long size, > unsigned long align, unsigned long shift, unsigned long flags, > unsigned long start, unsigned long end, int node, > gfp_t gfp_mask, const void *caller) > { > struct vmap_area *va; > struct vm_struct *area; > unsigned long requested_size = size; > > BUG_ON(in_interrupt()); > ... > > > vmalloc is not supposed to be called from the IRQ context. It uses kvzalloc, not vmalloc api. Before 2018, rhashtable did use kzalloc OR kvzalloc, depending on gfp_t. Quote from 93f976b5190df327939 changelog: As of ce91f6ee5b3b ("mm: kvmalloc does not fallback to vmalloc for incompatible gfp flags") we can simplify the caller and trust kvzalloc() to just do the right thing. I fear that if this isn't allowed it will result in hard-to-spot bugs because things will work fine until a fallback to vmalloc happens. rhashtable may not be the only user of kvmalloc api that rely on ability to call it from (soft)irq.