From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net [23.128.96.19]) (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 95C8D41E2C for ; Fri, 22 Sep 2023 16:58:26 +0000 (UTC) Received: from omta038.useast.a.cloudfilter.net (omta038.useast.a.cloudfilter.net [44.202.169.37]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3A3CB192 for ; Fri, 22 Sep 2023 09:58:23 -0700 (PDT) Received: from eig-obgw-5002a.ext.cloudfilter.net ([10.0.29.215]) by cmsmtp with ESMTP id jjHaqyFGyWU1cjjTzqO5RI; Fri, 22 Sep 2023 16:58:23 +0000 Received: from gator4166.hostgator.com ([108.167.133.22]) by cmsmtp with ESMTPS id jjTyqOXkmjI4jjjTyqpVvB; Fri, 22 Sep 2023 16:58:23 +0000 X-Authority-Analysis: v=2.4 cv=Uoxwis8B c=1 sm=1 tr=0 ts=650dc7af a=1YbLdUo/zbTtOZ3uB5T3HA==:117 a=P7XfKmiOJ4/qXqHZrN7ymg==:17 a=OWjo9vPv0XrRhIrVQ50Ab3nP57M=:19 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=82YB-BmEshB4s5qE:21 a=IkcTkHD0fZMA:10 a=zNV7Rl7Rt7sA:10 a=wYkD_t78qR0A:10 a=M5GUcnROAAAA:8 a=jZVsG21pAAAA:8 a=J1Y8HTJGAAAA:8 a=1XWaLZrsAAAA:8 a=VwQbUJbxAAAA:8 a=20KFwNOVAAAA:8 a=QyXUC8HyAAAA:8 a=cm27Pg_UAAAA:8 a=JPoDtM7TZ6yJWmQF7qYA:9 a=QEXdDO2ut3YA:10 a=OBjm3rFKGHvpk9ecZwUJ:22 a=3Sh2lD0sZASs_lUdrUhf:22 a=y1Q9-5lHfBjTkpIzbSAN:22 a=AjGcO6oz07-iQ99wixmX:22 a=xmb-EsYY8bH0VWELuYED:22 a=QbVwxleSvN6QbbUpbDEe:22 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=embeddedor.com; s=default; h=Content-Transfer-Encoding:Content-Type: In-Reply-To:From:References:Cc:To:Subject:MIME-Version:Date:Message-ID:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=OFRJLSn67ylmUTDesqnwR89r8xipKnIGHe/ry8CSlXk=; b=HbLP1eegN06YX5GDIsBoF0TU0H cl2eMr0D7OYH+lFQXEZQMW7UVNXdh6ShvGci2bt6xeHph6Wuo05Kv1L3HcBkbZ1VeLc/4nBVy/WIS uAgWkfv4PYAMMsGnJuGjmTZAFgBU3R16zl9uD/WsSaATzgrtXX6wCqUkdJTHUiky9/NP9dGWrf/GA 5OdEfFsceqPWo2jxX5P0zVxExXiYVBbJtBRxjEaoREJ1LbLasVmvBgTmVXqlVivoDt2YKKWb8f/QH LaHq95/KscNTOVelKeG/st5RCugAQ6rOknbXzdGwqEpNkbZDbFpQKf7rM6AM/6OuzxEBcE5hUP0N9 69IAWJWw==; Received: from [94.239.20.48] (port=48068 helo=[192.168.1.98]) by gator4166.hostgator.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1qjjTw-003SsD-0v; Fri, 22 Sep 2023 11:58:20 -0500 Message-ID: <1c639919-342a-cccc-1cad-772455b72656@embeddedor.com> Date: Fri, 22 Sep 2023 18:59:23 -0600 Precedence: bulk X-Mailing-List: linux-hardening@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v2] sky2: Make sure there is at least one frag_addr available Content-Language: en-US To: Kees Cook , Mirko Lindner Cc: Stephen Hemminger , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, kernel test robot , Alexander Lobakin , linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org References: <20230922165036.gonna.464-kees@kernel.org> From: "Gustavo A. R. Silva" In-Reply-To: <20230922165036.gonna.464-kees@kernel.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator4166.hostgator.com X-AntiAbuse: Original Domain - vger.kernel.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - embeddedor.com X-BWhitelist: no X-Source-IP: 94.239.20.48 X-Source-L: No X-Exim-ID: 1qjjTw-003SsD-0v X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: ([192.168.1.98]) [94.239.20.48]:48068 X-Source-Auth: gustavo@embeddedor.com X-Email-Count: 1 X-Org: HG=hgshared;ORG=hostgator; X-Source-Cap: Z3V6aWRpbmU7Z3V6aWRpbmU7Z2F0b3I0MTY2Lmhvc3RnYXRvci5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfJ7LUT0frhPiMF0+sCNRcB+xxnthKeVKMrJgiFLxiXMa4HlGPR58i86e1eL3d2Ikb0qS7ovyeg53A2QINpv/KmJckdDkpxjmFaLEoD9iqm4f7NIYU3lU 3TaDTEOXi3v5PCsBFwEW7vF1i9Hsq8jgGQ8lk9DiIvQSMmrUlUHJtmxXZwHDiwlqj20Nf3pPWUhkmOMbolqLqzuUBONZqK9jiGxWhNlGO5T63Kn6JXvo4drt X-Spam-Status: No, score=-2.3 required=5.0 tests=BAYES_00,DATE_IN_FUTURE_06_12, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A, RCVD_IN_DNSWL_LOW,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net On 9/22/23 10:50, Kees Cook wrote: > In the pathological case of building sky2 with 16k PAGE_SIZE, the > frag_addr[] array would never be used, so the original code was correct > that size should be 0. But the compiler now gets upset with 0 size arrays > in places where it hasn't eliminated the code that might access such an > array (it can't figure out that in this case an rx skb with fragments > would never be created). To keep the compiler happy, make sure there is > at least 1 frag_addr in struct rx_ring_info: > > In file included from include/linux/skbuff.h:28, > from include/net/net_namespace.h:43, > from include/linux/netdevice.h:38, > from drivers/net/ethernet/marvell/sky2.c:18: > drivers/net/ethernet/marvell/sky2.c: In function 'sky2_rx_unmap_skb': > include/linux/dma-mapping.h:416:36: warning: array subscript i is outside array bounds of 'dma_addr_t[0]' {aka 'long long unsigned int[]'} [-Warray-bounds=] > 416 | #define dma_unmap_page(d, a, s, r) dma_unmap_page_attrs(d, a, s, r, 0) > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > drivers/net/ethernet/marvell/sky2.c:1257:17: note: in expansion of macro 'dma_unmap_page' > 1257 | dma_unmap_page(&pdev->dev, re->frag_addr[i], > | ^~~~~~~~~~~~~~ > In file included from drivers/net/ethernet/marvell/sky2.c:41: > drivers/net/ethernet/marvell/sky2.h:2198:25: note: while referencing 'frag_addr' > 2198 | dma_addr_t frag_addr[ETH_JUMBO_MTU >> PAGE_SHIFT]; > | ^~~~~~~~~ > > With CONFIG_PAGE_SIZE_16KB=y, PAGE_SHIFT == 14, so: > > #define ETH_JUMBO_MTU 9000 > > causes "ETH_JUMBO_MTU >> PAGE_SHIFT" to be 0. Use "?: 1" to solve this build warning. > > Cc: Mirko Lindner > Cc: Stephen Hemminger > Cc: "David S. Miller" > Cc: Eric Dumazet > Cc: Jakub Kicinski > Cc: Paolo Abeni > Cc: netdev@vger.kernel.org > Reported-by: kernel test robot > Closes: https://lore.kernel.org/oe-kbuild-all/202309191958.UBw1cjXk-lkp@intel.com/ > Reviewed-by: Alexander Lobakin > Signed-off-by: Kees Cook Reviewed-by: Gustavo A. R. Silva Thanks -- Gustavo > --- > v2 - improve commit message, add Ack > v1 - https://lore.kernel.org/netdev/20230920202509.never.299-kees@kernel.org/ > --- > drivers/net/ethernet/marvell/sky2.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/net/ethernet/marvell/sky2.h b/drivers/net/ethernet/marvell/sky2.h > index ddec1627f1a7..8d0bacf4e49c 100644 > --- a/drivers/net/ethernet/marvell/sky2.h > +++ b/drivers/net/ethernet/marvell/sky2.h > @@ -2195,7 +2195,7 @@ struct rx_ring_info { > struct sk_buff *skb; > dma_addr_t data_addr; > DEFINE_DMA_UNMAP_LEN(data_size); > - dma_addr_t frag_addr[ETH_JUMBO_MTU >> PAGE_SHIFT]; > + dma_addr_t frag_addr[ETH_JUMBO_MTU >> PAGE_SHIFT ?: 1]; > }; > > enum flow_control {