From mboxrd@z Thu Jan 1 00:00:00 1970 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 28F33C10F15 for ; Thu, 25 Apr 2024 20:55:29 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 9D8E46B0093; Thu, 25 Apr 2024 16:55:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 988416B0096; Thu, 25 Apr 2024 16:55:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8292C6B0098; Thu, 25 Apr 2024 16:55:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 6353C6B0093 for ; Thu, 25 Apr 2024 16:55:28 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 1947D40632 for ; Thu, 25 Apr 2024 20:55:28 +0000 (UTC) X-FDA: 82049259936.21.9CC6D63 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) by imf23.hostedemail.com (Postfix) with ESMTP id 36F2B140002 for ; Thu, 25 Apr 2024 20:55:26 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b="OguLkIt/"; spf=pass (imf23.hostedemail.com: domain of keescook@chromium.org designates 209.85.216.52 as permitted sender) smtp.mailfrom=keescook@chromium.org; dmarc=pass (policy=none) header.from=chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1714078526; 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:dkim-signature; bh=ISz6479faSwg2T6S4jx3WNpGT6tzmgyY9eqAE3NqtuI=; b=5zAQ0d82flJFDadtQJTa3m36zMuYE2DnGfxJGj/V9KQA2BIXiP/cy7wQkKQEGTwLB+q7Cz kJqgTfaGHrE3GJVcADsiKh8+pQcF7qmEpfXLHjy9T8pWyLyuIwcshM3rcIJd8ArO0gGzJm rvJMqBh8ZkxY2pjrrKSEzorr1g2FHdo= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1714078526; a=rsa-sha256; cv=none; b=NYuovqPrsU5XgsZUX9sYgjj7e6vyrLXlhnXtY+77M896p1rgsBZi04JVHes8xiGG0GZZFd lReyeR4akHeK1pM9NNB48P4sMmhIROGpwgd+I1AsIgRtLV7d5Ivgj8PiUp/CD9716MEHlz NPXDKlFT0SoUS93GvCv5cJy7hpBvbWA= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b="OguLkIt/"; spf=pass (imf23.hostedemail.com: domain of keescook@chromium.org designates 209.85.216.52 as permitted sender) smtp.mailfrom=keescook@chromium.org; dmarc=pass (policy=none) header.from=chromium.org Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-2a2d82537efso1061477a91.2 for ; Thu, 25 Apr 2024 13:55:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1714078525; x=1714683325; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=ISz6479faSwg2T6S4jx3WNpGT6tzmgyY9eqAE3NqtuI=; b=OguLkIt/LQbJ7e+862KTSKF1NMtpppw7qakukYq/GH/ICizwyWsi9WBiTmGwyt5V+F v0NohihN/WyqFHOyGy7v1S9Oqrrgv7jF6Me6gool+1dJu2efKyn71LKRHWhy50tBn5tk qTaYWj0jPfO14tjnp8RPCnRVZOuIEt3+I20vc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1714078525; x=1714683325; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ISz6479faSwg2T6S4jx3WNpGT6tzmgyY9eqAE3NqtuI=; b=fGjRt54a1xtCxmX/Qvz0/BbjK97GS5Tpkq6IfKA55nYdd9WeJLSwMISGsPfU01dXma K+2Oj7o3PdoatOhLvP7Qz5ZGUkieQdqqCqImnrqbfiB3iLssRrHO33x3e/VKRfEh9k0w IGx0XitcsI4Qe0g+hjt6DDd4nQp8iAM+f/wfEMMaYbk9I3UGw3HTaU974MfD3e6N480N /jHRGlEX0wtKFTv6DOfiL9vhRbhYSI5JP4X0ySsnbi3uNtnHwco14QCLTCzYzBh4B6un 3eWSfErsaS7ZfOvOmeFndjDJE9qic0h7Ariztk66VHh52+IP1hIeTePf5kuVuxDtQCPd uZjQ== X-Forwarded-Encrypted: i=1; AJvYcCXPneULar2nFWXB3yMVklV9zbP3BBu9ntDkrXw3pacVMS2FaYY2tAxf3fOOFHuEtGz0pWPYx27AXxJJZT5T2ODhNuE= X-Gm-Message-State: AOJu0YyUMMLkyLCMJUH5EOih+msWnI6EpTUiK4xTopbpOx/FJZF7E9dr 59JmbRBdVVL5uJ18faofsszoia5Vze5xabUHIcFGIAcHMfFAz3l4C5nlqgWD6Q== X-Google-Smtp-Source: AGHT+IGuak1A5s4buRECAohF0iWefXrhA28ayIjCoI5pRSndED0RKVF3MGtMAQ81PA5K/hyZWPPbQg== X-Received: by 2002:a17:90a:654c:b0:2ac:dbec:2d6f with SMTP id f12-20020a17090a654c00b002acdbec2d6fmr783550pjs.39.1714078525060; Thu, 25 Apr 2024 13:55:25 -0700 (PDT) Received: from www.outflux.net ([198.0.35.241]) by smtp.gmail.com with ESMTPSA id cn19-20020a17090af09300b002a2b06ce909sm14996316pjb.17.2024.04.25.13.55.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 25 Apr 2024 13:55:24 -0700 (PDT) From: Kees Cook To: Suren Baghdasaryan Cc: Kees Cook , Kent Overstreet , Catalin Marinas , Andrew Morton , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Vlastimil Babka , Roman Gushchin , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org Subject: [PATCH] mm/slub: Avoid recursive loop with kmemleak Date: Thu, 25 Apr 2024 13:55:23 -0700 Message-Id: <20240425205516.work.220-kees@kernel.org> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=2235; i=keescook@chromium.org; h=from:subject:message-id; bh=wgzxsbZYA35UmV3+kDlEwfXFaeOy97jxAsm3UECTe0s=; b=owEBbQKS/ZANAwAKAYly9N/cbcAmAcsmYgBmKsM6HVptwlfHLpIq5pI6IWcjLcoSkU3RtMyDq ARbu9SC/s2JAjMEAAEKAB0WIQSlw/aPIp3WD3I+bhOJcvTf3G3AJgUCZirDOgAKCRCJcvTf3G3A JuDSEAC0l2PUgYlxj4pnnLraH/55sLfoMFhtLob3K/MWGueyTyye50pQtaI15ClOF/OhkH+MqSK rzq16NGHmNk78CCUeoVXnLRz9PDmsolxQD9MigPFQP6eKHIK5hFcWhPCR5ijm7oZf9bPp1jTOYa dlVKyNyeuZek6H1+X90JoyTdyg7UT9ls3CRTTRV8aGcBUtxlG+QsWB6atAvQRpPggUqSovoR/CJ 8Y6GBikQb/3K85EQNcSwFF1cL63srGhveek31TGCFAF24rPFhbzyH4qS58OOW0R7tBjnESSQJTr XXmlqcmRWv/eWjNtTjcJD7R4Fw6iBhUelgzjDMsXw6wtGiV89VGe5wXxC8KheuUfihbSGwQAVdZ EH2koc3B9KhvYljNjnUQroDA3BASbFktma2rYYcScRfDi80Vnpt8/1OYjtqFj9wOLx4RF23WfXQ dOBKxl+1oxl4icrWM9Fw7jfXr4w00CMTwXYDYqrKRm4AQ3pl8gYFEwDUiPDxKpoHs0j5OKrGGNA aK3HASaKRX7fb6aMPPqsfg3fdiCk/rhiLzVCk7KbjibPt1r4nhpPwTe3Giu31YIdYbYKFCji2ZP plrAm71N0FQ2N/FetOqaIoPsvbc2H4NzOu8ysPNslnEFA7Z+Fp+MnCYzu/VJi0jjB7mSIN9ZynJ +ysUJzG Op1iR2+w== X-Developer-Key: i=keescook@chromium.org; a=openpgp; fpr=A5C3F68F229DD60F723E6E138972F4DFDC6DC026 Content-Transfer-Encoding: 8bit X-Stat-Signature: 6gk8o3ob6t9xma4etsx9pszw7cgjz6g7 X-Rspamd-Queue-Id: 36F2B140002 X-Rspamd-Server: rspam06 X-Rspam-User: X-HE-Tag: 1714078526-698764 X-HE-Meta: U2FsdGVkX1++cF1a0DA/KZyDRCMP89uH2XIZchV3Ug8lJp7bDN/NQj3WXbs8Jg0T86TjVOIqefYjtNeRQbSvOKCfweRYQeMOAKZkPvuMl34FVj3M55EXbYRIXi6yFkCEIX27otbkCFOtfBfJ3ETorIY44dR2Mfo1/JQmNEw27ox1uvHHz03wLn5zI5Fsj2kwYTeFc2Q6Cg6KMZkzBB1IoT0ra9SU4cGXeINlUNyXDsl/g9AK7jz389cnqmyN2m3MuXwsIlN5c5lVabYFO+1espadhfK0urBFdjFpJITyGHEv9XotN9vJq1KE7fJXog2948V0sHC+aA908tQ0N4SZdM+ku1Bb+DLmQAob6yB7qd+HAsdTerBM5bAK+EXb8kpaVGDTEKma8CX1FmZXJn5Lsr5X5QTareA/iUZKNW98DKRFxvl1/A/GDYMBPh1pLC/kFNUqc6O7shz5dwZPK2MVsogWgRMG8PVgPcnLJ8rfQtIKVIolgblTAKYl1cuMxvCKDB+LdymCymt8NVrsVNZEj8dfT9C3tNG3Mk8QgQ+3m3ur5a0LVE72SV/0iLwG2KkK/JfWr8TWHZa8wTBb+iVCXMYXPuLG2gkBpPde79WR1M11x4dUmcVEmw/2PJsFMKm7h0JTmUlDDt6Vtmjc7F4YbE1Ln3wDi6b/PMtjD/gy8Hrzisxwlb+9DTEoDhCsH/nlc8BPCzdN993gyxZJD1dfvbFItInjY/WIL66M96kgezISBITw9IC1yFYfFR0E2EzME+AacW5M6JGagfXGH786ZXMx7yGXiaxif4btmHdDNsVoIf9UrPXMcSSqlKddgnUC+kOG3qFuNAxmQPnu7l+eZwh1xjdfPc9hC9tl1Zb5bvNRDbOmKnCFUN4PuJylnvcWhJy9MDo+EaaWPi4JEyW7fVCrhIdNMpDLOeJjU5y3kDJbvQveeELOY985w0NjuSUN/SfV3Bu7rn6VnDvzGsC gdBKTOYW QzjiMahGoDoyF3AMuF83ipcXOCjaqpKLuoxjp7A+jOG5J6QHXV0pHrxwj5qSsx0C9FJJ7gsRHSfWlBnoh3FOygL84wZPsCiYMdENhrJJwm8pFkOB21YYOck1wmxrtgD0ehHhNqZchTsAVwXt0kn7oqWc57Yzkerpp+KPh5Gwc7wt/spkbSz/bRU4V528a09FZKFvofppqZ4lyEGCZPIWX8pZFZRaIXJnZezP5oB4ZiLXhKyk8tlXLWOk87s5qKO39kpNU4EKCcOyhusUQh4AjQvqKQvDpEYOIN+7sqgykTMfkTEQQl6kbtxInY9JVxe4Hfn5Fb9viHxjEhRL+qvkOOKsC8Tkr5PLQRCu6ikTfK5dnr0zsq6eh7JMf8KV2VzrhWSF7IOYe8hXBp18cuCZ4yrIu/f7R0nP/fIgdTtYrQcxFrh7CnnNbKXgxSg8P1jzZ1R6RdKG7HF9hNBWu9kPFR5CONjdkB6Vnn/JkaAQde2dLJVUin8b32RmthlatLndkhCTAHxkShxLvr4mQjSXZoQF8zx4RIhsvxSogBeZjEi+PQHjtIiY5quHQKlLFbmJ2yTkPznqjISOlK5JRtgJM4TgXELmCwx3hdJfF0fma9ViqeNTxCRq6Q9zm+VT95A0vvz4wkFT44UMtvMrTLqIzCqmxoiNN6e16fFbGWAXluKy7DGIdQeRwxjsSxJzfvRDDAqvOq633tMsBzUY+5B6oj2+B8jYFLpUAGBhuSblRbI4uzjg548pmBeT28lcdlRi2bqJf7Qsi+z14cKNIczsGaoy6s7XSKTx7R/NHawgiz+AoX+jscPcr3szz+7dGOw7dkuPL3IR/WDNP2+8= 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: List-Subscribe: List-Unsubscribe: The system will immediate fill up stack and crash when both CONFIG_DEBUG_KMEMLEAK and CONFIG_MEM_ALLOC_PROFILING are enabled. Avoid allocation tagging of kmemleak caches, otherwise recursive allocation tracking occurs. Fixes: 279bb991b4d9 ("mm/slab: add allocation accounting into slab allocation and free paths") Signed-off-by: Kees Cook --- Cc: Suren Baghdasaryan Cc: Kent Overstreet Cc: Catalin Marinas Cc: Andrew Morton Cc: Christoph Lameter Cc: Pekka Enberg Cc: David Rientjes Cc: Joonsoo Kim Cc: Vlastimil Babka Cc: Roman Gushchin Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: linux-mm@kvack.org --- mm/kmemleak.c | 4 ++-- mm/slub.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mm/kmemleak.c b/mm/kmemleak.c index c55c2cbb6837..fdcf01f62202 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -463,7 +463,7 @@ static struct kmemleak_object *mem_pool_alloc(gfp_t gfp) /* try the slab allocator first */ if (object_cache) { - object = kmem_cache_alloc(object_cache, gfp_kmemleak_mask(gfp)); + object = kmem_cache_alloc_noprof(object_cache, gfp_kmemleak_mask(gfp)); if (object) return object; } @@ -947,7 +947,7 @@ static void add_scan_area(unsigned long ptr, size_t size, gfp_t gfp) untagged_objp = (unsigned long)kasan_reset_tag((void *)object->pointer); if (scan_area_cache) - area = kmem_cache_alloc(scan_area_cache, gfp_kmemleak_mask(gfp)); + area = kmem_cache_alloc_noprof(scan_area_cache, gfp_kmemleak_mask(gfp)); raw_spin_lock_irqsave(&object->lock, flags); if (!area) { diff --git a/mm/slub.c b/mm/slub.c index a94a0507e19c..9ae032ed17ed 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2016,7 +2016,7 @@ prepare_slab_obj_exts_hook(struct kmem_cache *s, gfp_t flags, void *p) if (!p) return NULL; - if (s->flags & SLAB_NO_OBJ_EXT) + if (s->flags & (SLAB_NO_OBJ_EXT | SLAB_NOLEAKTRACE)) return NULL; if (flags & __GFP_NO_OBJ_EXT) -- 2.34.1