From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756402AbbJAMEF (ORCPT ); Thu, 1 Oct 2015 08:04:05 -0400 Received: from mail.kernel.org ([198.145.29.136]:52137 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933153AbbJAL4o (ORCPT ); Thu, 1 Oct 2015 07:56:44 -0400 Message-Id: <20151001115639.087067831@goodmis.org> User-Agent: quilt/0.61-1 Date: Thu, 01 Oct 2015 07:55:42 -0400 From: Steven Rostedt To: linux-kernel@vger.kernel.org Cc: Ingo Molnar , Andrew Morton Subject: [for-next][PATCH 18/25] tracing: Add build bug if we have more trace_flags than bits References: <20151001115524.066462793@goodmis.org> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Disposition: inline; filename=0018-tracing-Add-build-bug-if-we-have-more-trace_flags-th.patch Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: "Steven Rostedt (Red Hat)" Add a enum that denotes the last bit of the trace_flags and have a BUILD_BUG_ON(last_bit > 32). If we add more bits than we have in trace_flags, the kernel wont build. Signed-off-by: Steven Rostedt --- kernel/trace/trace.c | 6 ++++++ kernel/trace/trace.h | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 7446d4238f87..991bab9b79d2 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -7046,6 +7046,12 @@ __init static int tracer_alloc_buffers(void) int ring_buf_size; int ret = -ENOMEM; + /* + * Make sure we don't accidently add more trace options + * than we have bits for. + */ + BUILD_BUG_ON(TRACE_ITER_LAST_BIT > 32); + if (!alloc_cpumask_var(&tracing_buffer_mask, GFP_KERNEL)) goto out; diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h index 8ed97872b65b..07155652254d 100644 --- a/kernel/trace/trace.h +++ b/kernel/trace/trace.h @@ -966,7 +966,11 @@ extern int trace_get_user(struct trace_parser *parser, const char __user *ubuf, #undef C #define C(a, b) TRACE_ITER_##a##_BIT -enum trace_iterator_bits { TRACE_FLAGS }; +enum trace_iterator_bits { + TRACE_FLAGS + /* Make sure we don't go more than we have bits for */ + TRACE_ITER_LAST_BIT +}; /* * By redefining C, we can make TRACE_FLAGS a list of masks that -- 2.5.1