From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dl1-f73.google.com (mail-dl1-f73.google.com [74.125.82.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CB3A83A9015 for ; Tue, 24 Feb 2026 16:52:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.73 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771951975; cv=none; b=m3M2RP5+sObWCkZhZru1EvlQL0YIKa7Nt+j0DJMPEmmVkfJWWYyet0CJAqjlpamxCOFryuMiW0n8UR+Jr7RriiOQ0fx1jsiyXUtFaz4u92u2I4RkTd+k009MzXgvhU2uJFyVE1WR9Q6j2OofV/jXlIgUq5j2J3Upe/27aDn6XZ8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771951975; c=relaxed/simple; bh=DPH1xe+MBKECpjUB3jiEjioI+lnEO69DdEqNC7xMH/o=; h=Date:Mime-Version:Message-ID:Subject:From:To:Cc:Content-Type; b=Ar6dPUvVrauapSzYOVD8aCLW+rRKmhxapHrfv0vFAJYd9MrrcSFqGpdc3sGVbIUkFGkX1Wau/gi6pOsOcly7nWH6SJKpxJoVuQw/YWHkfP0GMEN/yF58Kd7UZpuEx6+nYxcFfRr1o0IogAm5Bx15SLWsouetWvcUjNO4ky3R168= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--surenb.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=ZjaAoC9n; arc=none smtp.client-ip=74.125.82.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--surenb.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ZjaAoC9n" Received: by mail-dl1-f73.google.com with SMTP id a92af1059eb24-12711967e0eso7989106c88.0 for ; Tue, 24 Feb 2026 08:52:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1771951973; x=1772556773; darn=vger.kernel.org; h=cc:to:from:subject:message-id:mime-version:date:from:to:cc:subject :date:message-id:reply-to; bh=RMuxXmIqP2+dssDx1Vj46Iwohxm9R1VZEsldkCoK/jY=; b=ZjaAoC9nm2+8BzUKWhA5dq20P3V1ehfLNGbZ5ixfyEl6iocJ1wzrVb7/WRq+g9aW6h E+lH0ERtpFCyP3M6L0ARnrX8mTQdt6uXW1HBX8vmrMTodVO/8TZfAY2vKnVZBkGn6Glv yO9gu6V4piF4co20uUh0OZXu3BFDSahUu4viZ/6cWyZ2ol+UwPdp+XpAFAHNLrya3aXt dPB0zlE7s3bN3OWug0NhgwhUj6rBJEsXQTAmbKnDzqGZRa/+bSLCkZM17kOo/KF9euaX aV0oa/3EQ7z5wbnNYKibeVtRlEBJw9drY2K3sOnVED7YHZJModDt6bpvWQgVuc6JHLTV ITPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771951973; x=1772556773; h=cc:to:from:subject:message-id:mime-version:date:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=RMuxXmIqP2+dssDx1Vj46Iwohxm9R1VZEsldkCoK/jY=; b=QpmLKUnKgTVKlOYcPMZB1vOztjpl2jVySDG3GKwcvLybBvonJeLetOMduOT5NvGigd tKR5CLE0swdPFWwxYtblb3EM4Ugx/YNkHlzV9tVQfyNx0droUbvUf1KY05iBKjauhw8m YC9dc9Z8F/HWh7m5BxHfCDLxNWZN3qxPX1r2UjnBHs740vJGL+xofw8og5N2kn2YTTwJ s3yJow/egn2Bq3ShvZPWYuxMQTLCNC9Hk/JvPbW+LTRSpkC8Glvi2UFIKGNFG42gbsHP CvHPv95fCwvUKEIzub2D1KuMfPqo3XbzzET6fDb+W9V8bq0zfcOE/Qrpp9oX3ZU9MNsE RD2w== X-Forwarded-Encrypted: i=1; AJvYcCWvqZgqCBPs6Q4m6XiKI/dL7BGV/AUKtnsklYN4BBDGE3XULmBe6eXg14FOrD67oAENooOW3JSQkF8prsU=@vger.kernel.org X-Gm-Message-State: AOJu0YzzyXZWrPdfIkV0cix3rym0SiZVQRGK1RRG0ZLXRpppmuJYdSpk wX2EttHf2PJQuEkQ3UxF0IBPZZ1eEwqxfmwPHHBU5pPemiLu3Vp6a2HVqhoZkBoWdhxeumRccTf ckPu8cQ== X-Received: from dlbcy2.prod.google.com ([2002:a05:7022:b82:b0:124:7188:93da]) (user=surenb job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:6291:b0:126:fddf:3d86 with SMTP id a92af1059eb24-1276ad511e1mr5280312c88.39.1771951972810; Tue, 24 Feb 2026 08:52:52 -0800 (PST) Date: Tue, 24 Feb 2026 08:52:50 -0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 X-Mailer: git-send-email 2.53.0.371.g1d285c8824-goog Message-ID: <20260224165250.1322946-1-surenb@google.com> Subject: [PATCH 1/1] mm/slab: mark alloc tags empty for sheafs allocated with __GFP_NO_OBJ_EXT From: Suren Baghdasaryan To: akpm@linux-foundation.org Cc: vbabka@suse.cz, harry.yoo@oracle.com, 00107082@163.com, cl@gentwo.org, rientjes@google.com, roman.gushchin@linux.dev, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Suren Baghdasaryan Content-Type: text/plain; charset="UTF-8" alloc_empty_sheaf() allocates sheafs from SLAB_KMALLOC caches using __GFP_NO_OBJ_EXT to avoid recursion, however it does not mark their allocation tags empty before freeing, which results in a warning when CONFIG_MEM_ALLOC_PROFILING_DEBUG is set. Fix this by marking allocation tags for such allocations as empty. Reported-by: David Wang <00107082@163.com> Closes: https://lore.kernel.org/all/20260223155128.3849-1-00107082@163.com/ Analyzed-by: Harry Yoo Signed-off-by: Suren Baghdasaryan --- mm/slab.h | 4 ++-- mm/slub.c | 17 ++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/mm/slab.h b/mm/slab.h index 71c7261bf822..f6ef862b60ef 100644 --- a/mm/slab.h +++ b/mm/slab.h @@ -290,14 +290,14 @@ static inline void *nearest_obj(struct kmem_cache *cache, /* Determine object index from a given position */ static inline unsigned int __obj_to_index(const struct kmem_cache *cache, - void *addr, void *obj) + void *addr, const void *obj) { return reciprocal_divide(kasan_reset_tag(obj) - addr, cache->reciprocal_size); } static inline unsigned int obj_to_index(const struct kmem_cache *cache, - const struct slab *slab, void *obj) + const struct slab *slab, const void *obj) { if (is_kfence_address(obj)) return 0; diff --git a/mm/slub.c b/mm/slub.c index 862642c165ed..3ddbe654cd56 100644 --- a/mm/slub.c +++ b/mm/slub.c @@ -2041,18 +2041,18 @@ static inline void dec_slabs_node(struct kmem_cache *s, int node, #ifdef CONFIG_MEM_ALLOC_PROFILING_DEBUG -static inline void mark_objexts_empty(struct slabobj_ext *obj_exts) +static inline void mark_objexts_empty(const void *obj) { - struct slab *obj_exts_slab; + struct slab *obj_slab; unsigned long slab_exts; - obj_exts_slab = virt_to_slab(obj_exts); - slab_exts = slab_obj_exts(obj_exts_slab); + obj_slab = virt_to_slab(obj); + slab_exts = slab_obj_exts(obj_slab); if (slab_exts) { get_slab_obj_exts(slab_exts); - unsigned int offs = obj_to_index(obj_exts_slab->slab_cache, - obj_exts_slab, obj_exts); - struct slabobj_ext *ext = slab_obj_ext(obj_exts_slab, + unsigned int offs = obj_to_index(obj_slab->slab_cache, + obj_slab, obj); + struct slabobj_ext *ext = slab_obj_ext(obj_slab, slab_exts, offs); if (unlikely(is_codetag_empty(&ext->ref))) { @@ -2783,6 +2783,9 @@ static inline struct slab_sheaf *alloc_empty_sheaf(struct kmem_cache *s, static void free_empty_sheaf(struct kmem_cache *s, struct slab_sheaf *sheaf) { + if (s->flags & SLAB_KMALLOC) + mark_objexts_empty(sheaf); + kfree(sheaf); stat(s, SHEAF_FREE); base-commit: 7dff99b354601dd01829e1511711846e04340a69 -- 2.53.0.371.g1d285c8824-goog