Received: by 2002:a89:2c3:0:b0:1ed:23cc:44d1 with SMTP id d3csp558063lqs; Tue, 5 Mar 2024 09:25:44 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCW2oZo/V/83F/jBcyewXTDv/+e8aXlffa9f6cpJXXD5ohVZ+37/9W4jCT0V+a6Hl2Glbl/lgFg3qiJeK0QbDayoSrHrjav7468YKsZyzw== X-Google-Smtp-Source: AGHT+IEhIq1G/iTGPGkhPRsBbQHmHN034HMVi19ioUVNcVmzJzndvAnMwRo058Nz6v8oX0GxJNZt X-Received: by 2002:a17:907:bb85:b0:a45:af20:69e5 with SMTP id xo5-20020a170907bb8500b00a45af2069e5mr989690ejc.20.1709659543916; Tue, 05 Mar 2024 09:25:43 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1709659543; cv=pass; d=google.com; s=arc-20160816; b=BWlJMI2URcRHLHGEDkLCqPtOXJt010zuibui7lVBw+Ue1cgpTwaoKiaoovwumAYqrW VeDhte3YuTWcARWQzFlAaKLp57Ev5lEbvki/P5yHCL5aNnFb59ZyiAHWUzT8OEVDf7qw G7+RBTTjdjSYdcmcCtWyKsRM43Gr8dCCTcuCZP/po+G0esAoYs5ocztwZr8pvKUJlQXr +/8bSD5lC/GmAgIYsMtv4DFl6R86N/7b7eI9+11O6OWMt0dF7JhvdaULt6WkYxHfndpW 5ssWQqZm7DaUoJrxmghCABmkEEzYfMKljCWhJ4jEnKh2TyeZp0CLtpNDCnLPW3dYweR7 EGkQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :references:message-id:subject:cc:to:from:date:dkim-signature; bh=FiaUHKuRQVpj55CbVaHhQgh/ZyX3huThNqKm1Pph5YA=; fh=LJWY4oSh86Wd8Or+RSp++FMvcH22XBXBZbHk1iLjC04=; b=lvA/F/fKNoKOvDfSBrAhcQVZi2PCZ4oDZn395Dn91Jta5m+7FAXY6RvvnCIRg/4ZCl HLP95miTqORq9t48Ki9fuRJxxozuYQMxYo07mwGdaf1HI8bS8OpxlOi+92Vurf0Iurph MOJnB2fcPbv1P/yt0fXWT7qSvVYRBigrvTKLjGIfw1tJXvgeiReydCS0iakiXojXxXjY DtM4/u2RT1o2eL2yE7/8Jo+qKw35uApGd62bO0Ld6ef7zEFK/+sJ5SFLZndvvFd2ABcO IQ7iSISg/yo0Lif0CgUgQCD3aMfCFYudG6k8Q5ACLVPY6Iz97LRg/d9j3KJCNVbF3p49 /dxA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=nGIoI2Rq; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-92760-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-92760-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id he33-20020a1709073da100b00a44886693f2si4490480ejc.672.2024.03.05.09.25.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Mar 2024 09:25:43 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-92760-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=nGIoI2Rq; arc=pass (i=1 dkim=pass dkdomain=kernel.org); spf=pass (google.com: domain of linux-kernel+bounces-92760-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-92760-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 9F7031F26440 for ; Tue, 5 Mar 2024 17:25:43 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 997A21643A; Tue, 5 Mar 2024 17:25:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="nGIoI2Rq" Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB00714AA3; Tue, 5 Mar 2024 17:25:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709659535; cv=none; b=fyS5zioiC+Yw9UGBABaY8Kx+NUreRcX4ChU+89diz9HOkJgffo2ocJcnRJEtDufclBphqEhXW+xV5AK6xUOckr04j0jJiyU313/fkqDQZBto6X24f2EBuZpaSFNKAU9d9rmEZEjXVoL6tVQDXSHMWlwYEKVfJYT2Hwg9HN9GDks= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1709659535; c=relaxed/simple; bh=4nFC5omIFOjOAJ+cP/UoTfF1yurBWzlnntNqzpar1uA=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=HfBtgAV6H+rNMgDeAlAdUi8CX/rDNANU2Pgg1V4p3FCfL2+D929f4JWlP4nfNIWm/n6NlndLMSR4I/eY6wD1X9IldsPjqb0IszrRt4jsVrVZY27kzd4YSj88BM1z4UbXm6zmUfjxq5tOpuqKHB3i5nBL4BOaQr+7YxU8kD/5g5I= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nGIoI2Rq; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id ADE95C433C7; Tue, 5 Mar 2024 17:25:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1709659535; bh=4nFC5omIFOjOAJ+cP/UoTfF1yurBWzlnntNqzpar1uA=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=nGIoI2RqSSD+o5WgK9vgZYqgif+hg8huqzeRQfiT4srghDdJmIeoqQSII8KF0NwNc WhTFl3lISg2N3BXnnD8honFCDlkWkCLPzATIHWdliP3x3xjDnxmO6KuHzM2zL5APwC sAiyhqYbkWpDmbBP1JA/FAzosdQDSChqnfX/LBUGWTz9WUX/TEx3zPIzORcgYSm99b xYlQr6Z0yT4rAAWNEdQHP02sm4tNCDMnTGNARDBIrNaLW3sU3t2zXk1dvhGbcqpg0n 2F/sl6ixgTHrDNsicoFbpZ7owAlaGBnYy+P+Se9N6NqcNkd121JRUA5eDQIObyb65h wno0/gZxqkbdw== Date: Tue, 5 Mar 2024 11:25:32 -0600 From: "Gustavo A. R. Silva" To: Takashi Sakamoto , Clemens Ladisch , Jaroslav Kysela , Takashi Iwai Cc: Kees Cook , linux-kernel@vger.kernel.org, "Gustavo A. R. Silva" , linux-hardening@vger.kernel.org, alsa-devel@alsa-project.org, linux-sound@vger.kernel.org, linux1394-devel@lists.sourceforge.net Subject: [PATCH 2/2][next] ALSA: firewire-lib: Avoid -Wflex-array-member-not-at-end warning Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: -Wflex-array-member-not-at-end is coming in GCC-14, and we are getting ready to enable it globally. There is currently a local structure `template` that is using a flexible `struct fw_iso_packet` as a header for an on-stack array `__be32 header[CIP_HEADER_QUADLETS];`. struct { struct fw_iso_packet params; __be32 header[CIP_HEADER_QUADLETS]; } template = { {0}, {0} }; However, we are deprecating flexible arrays in the middle of another struct. So, in order to avoid this, we use the `struct_group_tagged()` helper to separate the flexible array from the rest of the members in the flexible structure: struct fw_iso_packet { struct_group_tagged(fw_iso_packet_hdr, hdr, ... the rest of the members ); u32 header[]; /* tx: Top of 1394 isoch. data_block */ }; With the change described above, we can now declare an object of the type of the tagged struct, without embedding the flexible array in the middle of another struct: struct { struct fw_iso_packet_hdr params; __be32 header[CIP_HEADER_QUADLETS]; } template = { {0}, {0} }; We also use `container_of()` whenever we need to retrieve a pointer to the flexible structure. So, with these changes, fix the following warning: sound/firewire/amdtp-stream.c: In function ‘process_rx_packets’: sound/firewire/amdtp-stream.c:1184:46: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end] 1184 | struct fw_iso_packet params; | Signed-off-by: Gustavo A. R. Silva --- sound/firewire/amdtp-stream.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sound/firewire/amdtp-stream.c b/sound/firewire/amdtp-stream.c index c9f153f85ae6..7ba1cd64d7f1 100644 --- a/sound/firewire/amdtp-stream.c +++ b/sound/firewire/amdtp-stream.c @@ -1181,12 +1181,14 @@ static void process_rx_packets(struct fw_iso_context *context, u32 tstamp, size_ for (i = 0; i < packets; ++i) { struct { - struct fw_iso_packet params; + struct fw_iso_packet_hdr params; __be32 header[CIP_HEADER_QUADLETS]; } template = { {0}, {0} }; + struct fw_iso_packet *params = + container_of(&template.params, struct fw_iso_packet, hdr); bool sched_irq = false; - build_it_pkt_header(s, desc->cycle, &template.params, pkt_header_length, + build_it_pkt_header(s, desc->cycle, params, pkt_header_length, desc->data_blocks, desc->data_block_counter, desc->syt, i, curr_cycle_time); @@ -1198,7 +1200,7 @@ static void process_rx_packets(struct fw_iso_context *context, u32 tstamp, size_ } } - if (queue_out_packet(s, &template.params, sched_irq) < 0) { + if (queue_out_packet(s, params, sched_irq) < 0) { cancel_stream(s); return; } -- 2.34.1