From nobody Sun May 24 22:35:58 2026 Received: from mail-pf1-f175.google.com (mail-pf1-f175.google.com [209.85.210.175]) (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 E78B2379966 for ; Wed, 20 May 2026 21:50:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779313826; cv=none; b=oxFfR0VI4n0Jibk/KSd/AZopIJWpeTOfNJ12S29QkstjpE3ou2H7h0sxDoXy8u4CZTPY/dMDZd8gFkaMCQl7RnX35rqb9s8J3Jd3PPG9k3gU759UE8AVZbUs19RXkfDe1iyk2dWlKG/OoYwFUfhqpPMSF3H3gyGfe2B3l7Hmfco= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779313826; c=relaxed/simple; bh=ynN8Vs0xZzsjVZyAdUWO19rgjTDbt1mNQ9hyGrhUVek=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=MkG7bmQ9Cs5WOCpMrcWJMEtyPSIj0SfYSVVon+cEEVSea8B9zf+nc4ezzgriWm9qspXEIe0r8gUVGKbjvBLC69ChwUqI5av5aMiD+BcTejOD4UwaJYHHH/IhrFLEBa3zLUyKfEWpMPouRScvCmMsST1KCwTbmKAEoBeTz4j/YXU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HSayCSYG; arc=none smtp.client-ip=209.85.210.175 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HSayCSYG" Received: by mail-pf1-f175.google.com with SMTP id d2e1a72fcca58-82748257f5fso4099468b3a.1 for ; Wed, 20 May 2026 14:50:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779313824; x=1779918624; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=nyj701wbzyjF0Dc32YbM2f3R90qkbdPz6PEZTrxwlPQ=; b=HSayCSYGXyken6FFqgT8THC76HETxqzGfRCxtmKc4kYaiDc0DPeRKfOO4xs1iiNQgX ln5TCop0iQGT6AwevjjDO12zmwf7HEP/8U+1KH0oUxnniK52iz133VfK6gn77FzR2LjX twx0ZnOkjlLcKHDNf9FckT7oKc8FPN091in3A8wx9HIwdg53Oimg3YTjbTFT9P58Jebo jnVhjKHEQi4MiepfpaivfKuu9bJnun+xdZirYENh+KLd/oy+ACUwZXB4yJHWklRG/Kzw /AG8es08UKjWGxH+/CF7N1ZAI4FyQOUFfQ04aQrKxzHF0q+jmh5pXL4bLo3Vi97Pmd/Z CKcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779313824; x=1779918624; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=nyj701wbzyjF0Dc32YbM2f3R90qkbdPz6PEZTrxwlPQ=; b=GHLS6cDjkItcxvcbztK3b2pA0NRlC6IWESTt6qHw5OOrliCe3dFVSo2bOxBs9TkT81 HeME6v8Ebr5c2a0KD04D1BqbyD26Zh3bmjIsA/oq85zGadmPQBu3xAjBno/tAaQzm48i cVqFIA0Be7/wI5lRuqtG4A7iUNcckwyBKDO4ppOY6rvJbdjX4qXecpep6IJIdiVgOOAD zlFJ7+tOxdaVmcmJTJ4uAbN3bZGU4PofFocEqyDbJv+0Rex6oVQB76rwYu1XNi++E7so 9wrkzymsxgncG8vqRW0HWu7qRaoQt6yU2qbXxTBfXnAzIy7MtOoHBH6M/WDqGmsiOide SrbA== X-Forwarded-Encrypted: i=1; AFNElJ88FtVXliiq8xO8y1/bd1ktYMIas864kA5KGjSEMHXsSP9ZNQ8Chg3fPqIvcfO+oc9FA0Y23gVa5IA5JV4=@vger.kernel.org X-Gm-Message-State: AOJu0YxijvX4IlrnVfYe6rSzIBD2BwTzpRnpiq2mpnVWEcJfS0bHBSLE oMNdw1pEo2CJ9SXh2AzMHZGKDQjUA2l0k/aJ7Q1ovl5NbXx68pJ/zCgO X-Gm-Gg: Acq92OG4id7e7NiulJThTOxaIriWA3/rZnod+bwl54GF+U8okKHxuowgcK2x+1g3Sc6 FMbxQqR7KYOF3rbS/N3lbzCW4higJW1sKEqcxkGQHCzNq/C3Nf2qT/EcCrLc0xdNNwPCnoPoxPF hKugqT9uFrwZWrLoM+rpZX9zjZqbgJtTy9aaS2L1aHrk0x+XodsaMXjOh+k5jbVfIVvQDjq6gyA TZbKn15fBUQyGqJ40VWyVhYN/lQ4uxK8xsz+kQ5FbYBRqqf6K3dt0yJP6iFc4VEpD1ESyaLm/FM A8Bwxi29+Bv1wevBber1ENI13XOjTd5+lWdXOUoP9FWGI2h6D+jaUd20phE7n+TSim29dfnAS9I c2aZ3e4tW5uGL+7jSHyFNQLgsZbZNujWJyycTsjtq+xauFjqfD7gZW2rL1JCevraOlUl7AVlfLF HsJSgl4JBM3oYcDbow1Z3OgFU4BUGkwwo3cSrBtiLBE6Pz31dp/k0d4/et2WCZVA4mNtx6RAWJb ALsiwLRXcl+C+coX8ug7S1jMOJBBfGy9JA= X-Received: by 2002:a05:6a20:2e0e:b0:3a2:ebfc:6bfc with SMTP id adf61e73a8af0-3b3083181c5mr110836637.17.1779313823881; Wed, 20 May 2026 14:50:23 -0700 (PDT) Received: from ryzen ([2601:644:8000:5b5d:7285:c2ff:fe45:8a32]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19c5be71sm21006858b3a.39.2026.05.20.14.50.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 20 May 2026 14:50:23 -0700 (PDT) From: Rosen Penev To: linux-trace-kernel@vger.kernel.org Cc: Steven Rostedt , Masami Hiramatsu , Mathieu Desnoyers , Kees Cook , "Gustavo A. R. Silva" , linux-kernel@vger.kernel.org (open list:TRACING), linux-hardening@vger.kernel.org (open list:KERNEL HARDENING (not covered by other areas):Keyword:\b__counted_by(_le|_be|_ptr)?\b) Subject: [PATCHv2] tracing: simplify pages allocation Date: Wed, 20 May 2026 14:50:06 -0700 Message-ID: <20260520215006.12008-1-rosenp@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Change to a flexible array member to allocate together with the array struct. Simplifies code slightly by removing no longer correct null checks for pages and removing kfrees. Signed-off-by: Rosen Penev Acked-by: Masami Hiramatsu (Google) --- v2: add back kfree(a). Accidentally removed. kernel/trace/tracing_map.c | 30 +++++++++++------------------- kernel/trace/tracing_map.h | 2 +- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/kernel/trace/tracing_map.c b/kernel/trace/tracing_map.c index c59326ad7a84..97f7e3cde262 100644 --- a/kernel/trace/tracing_map.c +++ b/kernel/trace/tracing_map.c @@ -288,9 +288,6 @@ static void tracing_map_array_clear(struct tracing_map_= array *a) { unsigned int i; - if (!a->pages) - return; - for (i =3D 0; i < a->n_pages; i++) memset(a->pages[i], 0, PAGE_SIZE); } @@ -302,9 +299,6 @@ static void tracing_map_array_free(struct tracing_map_a= rray *a) if (!a) return; - if (!a->pages) - goto free; - for (i =3D 0; i < a->n_pages; i++) { if (!a->pages[i]) break; @@ -312,9 +306,6 @@ static void tracing_map_array_free(struct tracing_map_a= rray *a) free_page((unsigned long)a->pages[i]); } - kfree(a->pages); - - free: kfree(a); } @@ -322,24 +313,25 @@ static struct tracing_map_array *tracing_map_array_al= loc(unsigned int n_elts, unsigned int entry_size) { struct tracing_map_array *a; + unsigned int entry_size_shift; + unsigned int entries_per_page; + unsigned int n_pages; unsigned int i; - a =3D kzalloc_obj(*a); + entry_size_shift =3D fls(roundup_pow_of_two(entry_size) - 1); + entries_per_page =3D PAGE_SIZE / (1 << entry_size_shift); + n_pages =3D max(1, n_elts / entries_per_page); + + a =3D kzalloc_flex(*a, pages, n_pages); if (!a) return NULL; - a->entry_size_shift =3D fls(roundup_pow_of_two(entry_size) - 1); - a->entries_per_page =3D PAGE_SIZE / (1 << a->entry_size_shift); - a->n_pages =3D n_elts / a->entries_per_page; - if (!a->n_pages) - a->n_pages =3D 1; + a->entry_size_shift =3D entry_size_shift; + a->entries_per_page =3D entries_per_page; + a->n_pages =3D n_pages; a->entry_shift =3D fls(a->entries_per_page) - 1; a->entry_mask =3D (1 << a->entry_shift) - 1; - a->pages =3D kcalloc(a->n_pages, sizeof(void *), GFP_KERNEL); - if (!a->pages) - goto free; - for (i =3D 0; i < a->n_pages; i++) { a->pages[i] =3D (void *)get_zeroed_page(GFP_KERNEL); if (!a->pages[i]) diff --git a/kernel/trace/tracing_map.h b/kernel/trace/tracing_map.h index ed64136782d8..90a7fde5dd02 100644 --- a/kernel/trace/tracing_map.h +++ b/kernel/trace/tracing_map.h @@ -167,7 +167,7 @@ struct tracing_map_array { unsigned int entry_shift; unsigned int entry_mask; unsigned int n_pages; - void **pages; + void *pages[] __counted_by(n_pages); }; #define TRACING_MAP_ARRAY_ELT(array, idx) \ -- 2.54.0