Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp4310480ybf; Wed, 4 Mar 2020 01:18:39 -0800 (PST) X-Google-Smtp-Source: ADFU+vsuO0EMI7UFN7GBBz6vyfDDAWK4xOrjmTIz9RqnJGL5y/x4p+U5wM2DK7E0HhmB0zwG0/6Y X-Received: by 2002:aca:37c3:: with SMTP id e186mr1099591oia.155.1583313518848; Wed, 04 Mar 2020 01:18:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583313518; cv=none; d=google.com; s=arc-20160816; b=BWt4rO7WEmVygrPcU4NvyPR3ZOtmRwNEyRaMa9x0p06iXFGdb1O4bHOmIyivuhoDI5 NV2qeg431A/AXzaDuWmuvQQGgctk0cbrqcHlv2aZHJ4YCKFtnNbuLC9oirqlEi9Zf9jp LrOXQMbx8dnrrMnsFiLgTObU8Ttu/FYi8D8V5ThRD+WO3ukiv92yFSo1498UivnXfKPJ ma2csnKOZ/eKWUX5eDVQYLf/FiYb+Isyq1ccVBOLmQ4n/tsup1DcnhekPBBLOu5Q3/3o TvUqVGi7cRCjyuKMz/7aaRWNNpp0viD39hogvekuoZ3PyNCHmyAEy/ekPMFCjVWfO3LO Z/OA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:references :organization:in-reply-to:subject:cc:to:from; bh=0wMia9SzTJ4piB4N2o/YZkfWB9NIPIr97s1W+fQwslk=; b=nGgXsHzuJLOtlHmcm0az0M97T0CvROSI+vMCT48gWlycJVQYihrK2yJcWOih+kn2Oh ny9aFIWqzW1EMQKBWs1pZ++OhHEmIsgT6j8Rq4re+UOtrDdPdDudsbMLzDx54qBWLY/b EGqtrUQyNvBlnIDRLA5G/vWnJbfJFLMsyXZ/+aAZIz3KgUHngyS+epIQ16PT1Rh8rklT EQIyOZVeHNEf+XjxJJeyBCkDtRR2gxiFYpcuZON80Ku3Y1dzWO9pxu2TXNlQCpvNryy4 ovh+mnw3J3Hs50X+2T9dn2BHrdoZmlBhdn/Gx/zkAc4aKwulVCHsTyUVDEGaeih5tY5B ZE0w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a6si860918oto.46.2020.03.04.01.18.26; Wed, 04 Mar 2020 01:18:38 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387626AbgCDJQw (ORCPT + 99 others); Wed, 4 Mar 2020 04:16:52 -0500 Received: from mga18.intel.com ([134.134.136.126]:21515 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725271AbgCDJQv (ORCPT ); Wed, 4 Mar 2020 04:16:51 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Mar 2020 01:16:50 -0800 X-IronPort-AV: E=Sophos;i="5.70,513,1574150400"; d="scan'208";a="233965863" Received: from ohoehne-mobl2.ger.corp.intel.com (HELO localhost) ([10.249.39.231]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Mar 2020 01:16:47 -0800 From: Jani Nikula To: "Gustavo A. R. Silva" , Joonas Lahtinen , Rodrigo Vivi , David Airlie , Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, "Gustavo A. R. Silva" Subject: Re: [PATCH][next] drm/i915: Replace zero-length array with flexible-array member In-Reply-To: <20200303220503.GA2663@embeddedor> Organization: Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo References: <20200303220503.GA2663@embeddedor> Date: Wed, 04 Mar 2020 11:16:47 +0200 Message-ID: <87k140pji8.fsf@intel.com> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 03 Mar 2020, "Gustavo A. R. Silva" wrote: > The current codebase makes use of the zero-length array language > extension to the C90 standard, but the preferred mechanism to declare > variable-length types such as these ones is a flexible array member[1][2], > introduced in C99: > > struct foo { > int stuff; > struct boo array[]; > }; > > By making use of the mechanism above, we will get a compiler warning > in case the flexible array does not occur last in the structure, which > will help us prevent some kind of undefined behavior bugs from being > inadvertently introduced[3] to the codebase from now on. > > Also, notice that, dynamic memory allocations won't be affected by > this change: > > "Flexible array members have incomplete type, and so the sizeof operator > may not be applied. As a quirk of the original implementation of > zero-length arrays, sizeof evaluates to zero."[1] > > This issue was found with the help of Coccinelle. > > [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html > [2] https://github.com/KSPP/linux/issues/21 > [3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour") > > Signed-off-by: Gustavo A. R. Silva Reviewed-by: Jani Nikula > --- > drivers/gpu/drm/i915/display/intel_vbt_defs.h | 4 ++-- > drivers/gpu/drm/i915/gt/intel_lrc.c | 2 +- > drivers/gpu/drm/i915/i915_gpu_error.h | 2 +- > 3 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_vbt_defs.h b/drivers/gpu/drm/i915/display/intel_vbt_defs.h > index 05c7cbe32eb4..aef7fe932d1a 100644 > --- a/drivers/gpu/drm/i915/display/intel_vbt_defs.h > +++ b/drivers/gpu/drm/i915/display/intel_vbt_defs.h > @@ -462,7 +462,7 @@ struct bdb_general_definitions { > * number = (block_size - sizeof(bdb_general_definitions))/ > * defs->child_dev_size; > */ > - u8 devices[0]; > + u8 devices[]; > } __packed; > > /* > @@ -839,7 +839,7 @@ struct bdb_mipi_config { > > struct bdb_mipi_sequence { > u8 version; > - u8 data[0]; /* up to 6 variable length blocks */ > + u8 data[]; /* up to 6 variable length blocks */ > } __packed; > > /* > diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c b/drivers/gpu/drm/i915/gt/intel_lrc.c > index b9b3f78f1324..a49ddda649b9 100644 > --- a/drivers/gpu/drm/i915/gt/intel_lrc.c > +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c > @@ -216,7 +216,7 @@ struct virtual_engine { > > /* And finally, which physical engines this virtual engine maps onto. */ > unsigned int num_siblings; > - struct intel_engine_cs *siblings[0]; > + struct intel_engine_cs *siblings[]; > }; > > static struct virtual_engine *to_virtual_engine(struct intel_engine_cs *engine) > diff --git a/drivers/gpu/drm/i915/i915_gpu_error.h b/drivers/gpu/drm/i915/i915_gpu_error.h > index 0d1f6c8ff355..5a6561f7a210 100644 > --- a/drivers/gpu/drm/i915/i915_gpu_error.h > +++ b/drivers/gpu/drm/i915/i915_gpu_error.h > @@ -42,7 +42,7 @@ struct i915_vma_coredump { > int num_pages; > int page_count; > int unused; > - u32 *pages[0]; > + u32 *pages[]; > }; > > struct i915_request_coredump { -- Jani Nikula, Intel Open Source Graphics Center