From patchwork Mon Sep 26 15:16:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Westphal X-Patchwork-Id: 12988854 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 45997C07E9D for ; Mon, 26 Sep 2022 15:17:39 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A4B6B8E0047; Mon, 26 Sep 2022 11:17:38 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9F9DB6B00F5; Mon, 26 Sep 2022 11:17:38 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8E9778E0047; Mon, 26 Sep 2022 11:17:38 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 813FA6B00F4 for ; Mon, 26 Sep 2022 11:17:38 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 4F9B3160125 for ; Mon, 26 Sep 2022 15:17:38 +0000 (UTC) X-FDA: 79954590996.13.5190BC8 Received: from Chamillionaire.breakpoint.cc (Chamillionaire.breakpoint.cc [193.142.43.52]) by imf15.hostedemail.com (Postfix) with ESMTP id C1994A0004 for ; Mon, 26 Sep 2022 15:17:37 +0000 (UTC) Received: from fw by Chamillionaire.breakpoint.cc with local (Exim 4.92) (envelope-from ) id 1ocprT-0006De-Tm; Mon, 26 Sep 2022 17:17:35 +0200 From: Florian Westphal To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, mhocko@suse.com, vbabka@suse.cz, urezki@gmail.com, linux-kernel@vger.kernel.org, Florian Westphal , Martin Zaharinov Subject: [PATCH v2 mm] mm: fix BUG splat with kvmalloc + GFP_ATOMIC Date: Mon, 26 Sep 2022 17:16:50 +0200 Message-Id: <20220926151650.15293-1-fw@strlen.de> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=none; spf=pass (imf15.hostedemail.com: domain of fw@breakpoint.cc designates 193.142.43.52 as permitted sender) smtp.mailfrom=fw@breakpoint.cc; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1664205457; a=rsa-sha256; cv=none; b=KbkHd+ibVmt/5Rn8HmE2wy4cXnRljthZlaRX5l1hUB8tWACAemKOZJMPfZd5AZqakC7H7v 3kGlIzL5cKtjP64qgzVZQj3PaGXrZN/bh3KwTA7Sz7jTRHMsxKHounTylpf/dlWa9jQnvJ QKTMoarWBg34ilc3iSMxAgUqTqCObKk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1664205457; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references; bh=XvdXKGreLfPjFMsKtqVeaQFZhIGfsMLQ/IOxXrRCaZs=; b=1EPfOUK9YXrstB7lMOxlMDTkQ1nj8Dfw0ruXc2fWV38RniC/a4aWKCV3WIH8+pBQo/qaRc xfEQ6OF1dmqIDC3hp1j/RpQsMrnKJXoNRkKUoRwTpNhV+9EoE2LzMngO0OrwsGQvYBmUWR bhg3wWYGXKXbukCf7UbT87FdHyiHRMo= Authentication-Results: imf15.hostedemail.com; dkim=none; spf=pass (imf15.hostedemail.com: domain of fw@breakpoint.cc designates 193.142.43.52 as permitted sender) smtp.mailfrom=fw@breakpoint.cc; dmarc=none X-Rspam-User: X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: C1994A0004 X-Stat-Signature: 5j1apy5aur1m6w7bzxukwsdmgsct4jur X-HE-Tag: 1664205457-737807 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Martin Zaharinov reports BUG with 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 kvzalloc(GPF_ATOMIC). If kmalloc fails, this now falls through to vmalloc and hits code paths that assume GFP_KERNEL. Reported-by: Martin Zaharinov Fixes: a421ef303008 ("mm: allow !GFP_KERNEL allocations for kvmalloc") Suggested-by: Michal Hocko Link: https://lore.kernel.org/linux-mm/Yy3MS2uhSgjF47dy@pc636/T/#t Signed-off-by: Florian Westphal Acked-by: Michal Hocko --- mm/util.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/util.c b/mm/util.c index c9439c66d8cf..346e40177bc6 100644 --- a/mm/util.c +++ b/mm/util.c @@ -619,6 +619,10 @@ void *kvmalloc_node(size_t size, gfp_t flags, int node) if (ret || size <= PAGE_SIZE) return ret; + /* non-sleeping allocations are not supported by vmalloc */ + if (!gfpflags_allow_blocking(flags)) + return NULL; + /* Don't even allow crazy sizes */ if (unlikely(size > INT_MAX)) { WARN_ON_ONCE(!(flags & __GFP_NOWARN));