Received: by 2002:a05:6358:1087:b0:cb:c9d3:cd90 with SMTP id j7csp5926741rwi; Tue, 18 Oct 2022 06:07:11 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6GUk3JmfJP8ayDVSeL5H2hjk4kk0HDmKQyLqH6pahH/Uj9vGFp7K82hq0v0mbsrzuKUqAB X-Received: by 2002:a05:6a00:22cf:b0:563:744a:8951 with SMTP id f15-20020a056a0022cf00b00563744a8951mr3123667pfj.3.1666098431136; Tue, 18 Oct 2022 06:07:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666098431; cv=none; d=google.com; s=arc-20160816; b=LYXp5EV3wYfHwsKZKQMbZbNXm+JFcu24ZngTSsnaWbaBlgr0XgdQ6cZXzaof9I36Wk 16TO6z/1dOPvT7/OKTEC+kgJLznzBf6u3YtcDURfazozU7lRtAe3CrE3f0Ljmvyv5Cfw LNr0d1MdLeS4UCwcfTb1RqqnUl2kllvQjZnf+BCmBFBKkNoplTHjOVMYtXtgfo5JhPc6 MjASCD672WEjFmxWSywW784WmD98DbnZyUklsAmtXhVqFCbXCXsOY/MEbJpftPEHJoeH ZyYZTPeDW/PNt9N9qrefF7Nm7m2yCZLj3x41iOFbdL/Dq15aNmAtcIuD/DlKHZcbXocn YWMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent:references:message-id :in-reply-to:subject:cc:to:from:date:dkim-signature; bh=kvRNOODH0hAK/I+48IQTDRcDA3h5NRe1Qa4i4sZWArs=; b=H5dCkWkMThyadUMBxAvOVSDAlnLob4gBieL0zIF4vFa4Q7b0l5CfiaQTKucD63d6Gm wM6qlro3QuJIBnOyM1KroJ6tG6lAGQWODgIjjTRGErw73JYrDCkllP9DgEO+rDhlze6O EtGNOSi/t96rodBj8SOxq5JTj39Rsy5tAfAHopm7gmX+05G9RR94C80l/FsmB2HPzeGR rKM65O9E0zMcKW5Wdyy67l0UPYHCm/0IOdwGaQLGiO2GWqxaSDTcwtHZpLImJqEJTOrA GSPBzbxWGfz4p2LgA46gZsESYes2UhISHmSTvdwPU1kOnfJrUJFl0n5OcQNGW+mzm2jt bx7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=EtZTt+G9; 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=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l22-20020a63da56000000b0043941763eadsi15418822pgj.835.2022.10.18.06.06.43; Tue, 18 Oct 2022 06:07:11 -0700 (PDT) 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=@kernel.org header.s=k20201202 header.b=EtZTt+G9; 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=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229898AbiJRM4f (ORCPT + 99 others); Tue, 18 Oct 2022 08:56:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60714 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230272AbiJRM4b (ORCPT ); Tue, 18 Oct 2022 08:56:31 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FAE9733FD; Tue, 18 Oct 2022 05:56:27 -0700 (PDT) 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 2E4136153F; Tue, 18 Oct 2022 12:56:27 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 15559C433C1; Tue, 18 Oct 2022 12:56:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1666097786; bh=/vHNygegziKCA4VNx1TW5Fmp5dKqLbj1UZYsAAqZAeo=; h=Date:From:To:cc:Subject:In-Reply-To:References:From; b=EtZTt+G9DOU4CSgbn8arUlALvx79zUkfj+olr5bhKDXDfLPy1T06DiJOymCNdQ7JY WSveE5OEC5STK4QoCWaVtx6k/E0FWgfnmjXml0P3PGMGK0zuNEMQUnUmtyE3UsBLEL TT+rlXUo3QFn5Nh8XZnybCd8KH5R27cUVTgnMdilHJnPuL2ALn66OUEsQfZu4JTsZT C5NhvNOCkEVrLIFyzXCbpg2qXemLTar1JzAIp9pHA9pcEvZTfvYddRwkjV2+hcC3nY 86AtVLZDtyA2jTTeMP7rUkM5eSWYiSmkGhlF/UwEoTqrBfMnJdPMXFYFMmS0a1JS1I jO3Azr+4B1y9A== Date: Tue, 18 Oct 2022 14:56:21 +0200 (CEST) From: Jiri Kosina To: "Michael Kelley (LINUX)" cc: Paulo Miguel Almeida , KY Srinivasan , Haiyang Zhang , Stephen Hemminger , Wei Liu , Dexuan Cui , Benjamin Tissoires , "linux-hyperv@vger.kernel.org" , "linux-input@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-hardening@vger.kernel.org" Subject: RE: [PATCH] [next] HID: hyperv: Replace one-element array with flexible-array member In-Reply-To: Message-ID: References: User-Agent: Alpine 2.21 (LSU 202 2017-01-01) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII X-Spam-Status: No, score=-7.4 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 Mon, 17 Oct 2022, Michael Kelley (LINUX) wrote: > > One-element arrays are deprecated, and we are replacing them with > > flexible array members instead. So, replace one-element array with > > flexible-array member in structs synthhid_msg, synthhid_input_report, > > pipe_prt_msg and refactor the rest of the code accordingly. > > > > This helps with the ongoing efforts to tighten the FORTIFY_SOURCE > > routines on memcpy() and help us make progress towards globally > > enabling -fstrict-flex-arrays=3 [1]. > > > > Link: https://github.com/KSPP/linux/issues/79 > > Link: https://github.com/KSPP/linux/issues/210 > > Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101836 [1] > > > > Signed-off-by: Paulo Miguel Almeida > > --- > > drivers/hid/hid-hyperv.c | 17 +++++++---------- > > 1 file changed, 7 insertions(+), 10 deletions(-) > > > > diff --git a/drivers/hid/hid-hyperv.c b/drivers/hid/hid-hyperv.c > > index e0bc73124196..208cf8d981a5 100644 > > --- a/drivers/hid/hid-hyperv.c > > +++ b/drivers/hid/hid-hyperv.c > > @@ -61,7 +61,7 @@ struct synthhid_msg_hdr { > > > > struct synthhid_msg { > > struct synthhid_msg_hdr header; > > - char data[1]; /* Enclosed message */ > > + char data[]; /* Enclosed message */ > > }; > > > > union synthhid_version { > > @@ -99,7 +99,7 @@ struct synthhid_device_info_ack { > > > > struct synthhid_input_report { > > struct synthhid_msg_hdr header; > > - char buffer[1]; > > + char buffer[]; > > }; > > > > #pragma pack(pop) > > @@ -118,7 +118,7 @@ enum pipe_prot_msg_type { > > struct pipe_prt_msg { > > enum pipe_prot_msg_type type; > > u32 size; > > - char data[1]; > > + char data[]; > > }; > > > > struct mousevsc_prt_msg { > > @@ -232,7 +232,7 @@ static void mousevsc_on_receive_device_info(struct > > mousevsc_dev *input_device, > > > > ret = vmbus_sendpacket(input_device->device->channel, > > &ack, > > - sizeof(struct pipe_prt_msg) - sizeof(unsigned char) + > > + sizeof(struct pipe_prt_msg) + > > sizeof(struct synthhid_device_info_ack), > > (unsigned long)&ack, > > VM_PKT_DATA_INBAND, > > @@ -271,16 +271,14 @@ static void mousevsc_on_receive(struct hv_device *device, > > * malicious/buggy hypervisor/host, add a check here to > > * ensure we don't corrupt memory. > > */ > > - if ((pipe_msg->size + sizeof(struct pipe_prt_msg) > > - - sizeof(unsigned char)) > > + if (struct_size(pipe_msg, data, pipe_msg->size) > > > sizeof(struct mousevsc_prt_msg)) { > > WARN_ON(1); > > break; > > } > > > > memcpy(&input_dev->protocol_resp, pipe_msg, > > - pipe_msg->size + sizeof(struct pipe_prt_msg) - > > - sizeof(unsigned char)); > > + struct_size(pipe_msg, data, pipe_msg->size)); > > complete(&input_dev->wait_event); > > break; > > > > @@ -359,8 +357,7 @@ static int mousevsc_connect_to_vsp(struct hv_device *device) > > request->request.version_requested.version = SYNTHHID_INPUT_VERSION; > > > > ret = vmbus_sendpacket(device->channel, request, > > - sizeof(struct pipe_prt_msg) - > > - sizeof(unsigned char) + > > + sizeof(struct pipe_prt_msg) + > > sizeof(struct synthhid_protocol_request), > > (unsigned long)request, > > VM_PKT_DATA_INBAND, > > -- > > 2.37.3 > > Reviewed-by: Michael Kelley Thanks, applied. -- Jiri Kosina SUSE Labs