Received: by 2002:a05:6358:d09b:b0:dc:cd0c:909e with SMTP id jc27csp3759716rwb; Tue, 8 Nov 2022 08:06:30 -0800 (PST) X-Google-Smtp-Source: AMsMyM4LyPJ5BjyXWMTFdhTTgEe4RfO5btbarMdl9/8/lj7jM8ZaaNoSfpC9QtGVULGa7kJq6S6w X-Received: by 2002:a05:6402:1553:b0:461:539d:9b88 with SMTP id p19-20020a056402155300b00461539d9b88mr54928400edx.286.1667923590622; Tue, 08 Nov 2022 08:06:30 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1667923590; cv=none; d=google.com; s=arc-20160816; b=jrECCjp5HBufsmGfaylW8f17r9kL76P+v+k9dax98h7FM7o3AImtsL5YG5CRB01atd fKXggGjuVVKBpnO8CesZMOQb32iXf0LyCZcyRVkK6Lmzfcdp3rOK8l2Ey3WSpzzXuqkI em6QJMU9coHGUlk9ahmBSdQX5XQK8UEDRAXF9KgoxM63FK3PMTyxz1YvrkJ54Lm6uvl0 o7qagC1gc89osGeCW4znzmbyJa/1bsoP5Lhc4w53rpPKOgjDsZqA1HPLkG4gzp0BMzSo JBp+p6euA05Inv1+KRYGtia09ORh3qE815tWhGmFXZwyrHbQGxPg4dQqD9zeNwDDjgUf mMNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=ZlRYPIcbnaOSOuYirpGUo2HK4jqLOk9FNiyNgRGO5Z8=; b=HF3BZK2mCQFWZDrv//bLjyYuOe8JfA6BdI5BxLnHjjaK8E1yN0MpFmrW7Q1lSJMdgr rYsReJozVqAALCxhOTJT4dlpJmJacSzuYC3vx9oChBEk6wACTMH/stGY/YmbIqpMe6HI DRP3K3NDddYa9nwWG3g+B3yNXwtJaTwRQWlo+KypJiJSgdtVD1dNzBidaI1UE8oUrGQQ zyFqAzeE73oADvPEHRXVvODJs28TOiE5Hij6x/Hm3PgA8/oCW2SBWr3HdcTOr2GejwFo jV2FWsjwWjV6pl7L3xIa68dKYkrvL4Po8ehqp8L/zpoE8Ev9xvMCzyHrJDEAiIVcLRCD YWbQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=qHxocduA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id sc34-20020a1709078a2200b00775326fb2ebsi12908770ejc.665.2022.11.08.08.06.07; Tue, 08 Nov 2022 08:06:30 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=qHxocduA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234373AbiKHPwv (ORCPT + 92 others); Tue, 8 Nov 2022 10:52:51 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40670 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233970AbiKHPwt (ORCPT ); Tue, 8 Nov 2022 10:52:49 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ADA295C778 for ; Tue, 8 Nov 2022 07:52:48 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 49F2A61656 for ; Tue, 8 Nov 2022 15:52:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3A943C433C1; Tue, 8 Nov 2022 15:52:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1667922767; bh=MANpUbtMojnpkqgCOCSA6YWcTOTSpUDbvfCA/nA05fM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=qHxocduAjkb1uhHabDemNU7C622AC4aaNg/hccdDE3nLcHizpoKEeDQdPMKbtu4vf JzMp4PjZbkgTSAsPq2fVrJyJTfiV6Vz9XebghUNU5aBEPLPIrLKmeIZneNyrSAare9 3x5PFfncNy76GcAdZMvyWl2HTRnTa2VcmjFXdsX0= Date: Tue, 8 Nov 2022 16:52:44 +0100 From: Greg Kroah-Hartman To: Deepak R Varma Cc: linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: staging/wlan-ng query: convert to flexible array member Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Nov 08, 2022 at 09:15:10PM +0530, Deepak R Varma wrote: > On Tue, Nov 08, 2022 at 04:34:15PM +0100, Greg Kroah-Hartman wrote: > > On Tue, Nov 08, 2022 at 08:42:59PM +0530, Deepak R Varma wrote: > > > Hello, > > > > > > First, my apologies for the long email. > > > I am requesting guidance on how to approach resolving the zero element flexible > > > VLO struct implementation in this driver in file drivers/staging/waln-ng/hfa384x.f > > > > > > The struct hfa384x_pdrec contains nested structs with zero element arrays. These > > > zero element structs are part of a union 'data' inside the struct container. This > > > union 'data' is the last element of this container. Please see the code snip below: > > > > > > > > > > > > 1068 struct hfa384x_pdrec { > > > 1 __le16 len; /* in words */ > > > 2 __le16 code; > > > 3 union pdr { > > > 4 struct hfa384x_pdr_pcb_partnum pcb_partnum; > > > 11 struct hfa384x_pdr_nicid nicid; > > > 12 struct hfa384x_pdr_refdac_measurements refdac_measurements; > > > 13 struct hfa384x_pdr_vgdac_measurements vgdac_measurements; > > > 14 struct hfa384x_pdr_level_comp_measurements level_compc_measurements; > > > 15 struct hfa384x_pdr_mac_address mac_address; > > > 39 } data; > > > 40 } __packed; > > > > > > > > > > > > The three structures in question are declared as follows in the same file: > > > > > > > > > 962 struct hfa384x_pdr_refdac_measurements { > > > 1 u16 value[0]; > > > 2 } __packed; > > > 3 > > > 4 struct hfa384x_pdr_vgdac_measurements { > > > 5 u16 value[0]; > > > 6 } __packed; > > > 7 > > > 8 struct hfa384x_pdr_level_comp_measurements { > > > 9 u16 value[0]; > > > 10 } __packed; > > > > > > > > > As per the C99 specifications, the flexible array struct should have at least > > > one member other than the true flexible array member. So converting these from > > > [0] to [] is not feasible in the current form. > > > > > > I did not find these struct variables being used for memory allocation in the > > > code directly. My find may be short since the implementation appears to get very > > > complex as I tried to get deeper. > > > > > > Can you please suggest how should I approach correcting the zero element flex > > > array implementation here? Can these structs be removed if they are unused? > > > > Are you sure they are unused? > > > > They look like structures that are read from the memory of a device, > > right? Try removing the structures from the union and see what happens > > :) > > I did remove the structs from the union and it built fine. Is there anything else I > can check/test to verify the impact? > > > drv@qemulion:~/git/kernels/staging$ git diff > diff --git a/drivers/staging/wlan-ng/hfa384x.h b/drivers/staging/wlan-ng/hfa384x.h > index 0611e37df6ac..8fe10aa93dfb 100644 > --- a/drivers/staging/wlan-ng/hfa384x.h > +++ b/drivers/staging/wlan-ng/hfa384x.h > @@ -1077,9 +1077,6 @@ struct hfa384x_pdrec { > struct hfa384x_pdr_mfisuprange mfisuprange; > struct hfa384x_pdr_cfisuprange cfisuprange; > struct hfa384x_pdr_nicid nicid; > - struct hfa384x_pdr_refdac_measurements refdac_measurements; > - struct hfa384x_pdr_vgdac_measurements vgdac_measurements; > - struct hfa384x_pdr_level_comp_measurements level_compc_measurements; > struct hfa384x_pdr_mac_address mac_address; > struct hfa384x_pdr_mkk_callname mkk_callname; > struct hfa384x_pdr_regdomain regdomain; > drv@qemulion:~/git/kernels/staging$ make M=drivers/staging/wlan-ng/ > CC [M] drivers/staging/wlan-ng/prism2usb.o > CC [M] drivers/staging/wlan-ng/p80211netdev.o > LD [M] drivers/staging/wlan-ng/prism2_usb.o > MODPOST drivers/staging/wlan-ng/Module.symvers > LD [M] drivers/staging/wlan-ng/prism2_usb.ko > BTF [M] drivers/staging/wlan-ng/prism2_usb.ko > drv@qemulion:~/git/kernels/staging$ > > Test the device to make sure it still works?