Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1037357ybz; Fri, 1 May 2020 13:10:56 -0700 (PDT) X-Google-Smtp-Source: APiQypLuoi1eGrRA2OGOP9yrZ6hSGIhi+ulmO97n7EHX0rVly5qiryVAYPgghUDXo7xa8qV7TaUg X-Received: by 2002:a05:6402:88a:: with SMTP id e10mr4978179edy.252.1588363856468; Fri, 01 May 2020 13:10:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588363856; cv=none; d=google.com; s=arc-20160816; b=xi7oFTlcLPnP/x3+Qu5SRbSrbhAYYe6D2VWNxZzl7kcYraI/FaJDXoRxFC52rkbxCK cHaYy0edpo5x1RbcDU1DRAQKfEXzoO+78geLOSZPdECrk8IyedTqSTj/sEhqAXSndK/7 od4u3UyPNe0D7yLU2YhuTo+Lrc8sOsQFA3pS4VdKgRDVJWojllM8wFunjaRHi6ZoObMt 6glPjKxxC6Hp2Wz2CEdeSfRnmfyWsWIoyJgpnwdBrKLvOpYUZuns5pAZSbrWhirA7mJe h/hcCqSJAG3pdPQ9kbGRm1qKPQBodEo1JZFa9KSg7ag5HtYYA2Xd70Mf6pcTNJz07dQ2 JX4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version; bh=lzU10oKVME6Pt2pm42w5WAhRpSeU7tc5K6GFf08dHMA=; b=IKWrPh+TobTtAu1l/zZQhJ5DtbGyVjjvDZZFueXjt1s9SzGm5FUnzInrEs1/06UWro 2j8RtRzB2gBVONpI1mGC9rZ9gzbM1fDqALdp0YC1YTY9wsdwxMvxsi51Q0NJFsUyt+4U RNg8B5uM4U9OdEj1a0QbPAchDKNy1DBaOZKTwfbk5hdk8MFbzMY1ZPPFm00W1fC/PdJG b5U6S74j2gNOQ0RUCR6F+OKMJBqge9QCrNIzSz2VoPhSUOH16Q33hKsxRc5kqmJt2kco T9nn5gyjvTm/fT6C28X53VNWgd4pnidxycsqGpcJxCfBeMtgsvOlVYZSin8MSTui1m85 jBqQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d14si2388022edv.332.2020.05.01.13.10.33; Fri, 01 May 2020 13:10:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727065AbgEAUHJ (ORCPT + 99 others); Fri, 1 May 2020 16:07:09 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:60405 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726307AbgEAUHI (ORCPT ); Fri, 1 May 2020 16:07:08 -0400 Received: from mail-qk1-f172.google.com ([209.85.222.172]) by mrelayeu.kundenserver.de (mreue010 [212.227.15.129]) with ESMTPSA (Nemesis) id 1MZTVu-1jhO1d035q-00WTo7; Fri, 01 May 2020 22:07:07 +0200 Received: by mail-qk1-f172.google.com with SMTP id h124so10343955qke.11; Fri, 01 May 2020 13:07:06 -0700 (PDT) X-Gm-Message-State: AGi0PuaUr4imBaFb+wj3UVDiugtu4c4l8W4PjBfKNyerS4dXiHoQMHgf iTl/9OfepIb5xRMRaWYmwoSYf6F4+BfGQV1QFqw= X-Received: by 2002:a37:a492:: with SMTP id n140mr5418238qke.352.1588363625776; Fri, 01 May 2020 13:07:05 -0700 (PDT) MIME-Version: 1.0 References: <20200430213101.135134-9-arnd@arndb.de> In-Reply-To: From: Arnd Bergmann Date: Fri, 1 May 2020 22:06:49 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 08/15] usb: ehci: avoid gcc-10 zero-length-bounds warning To: Alan Stern Cc: "linux-kernel@vger.kernel.org" , Greg Kroah-Hartman , Yoshihiro Shimoda , USB list Content-Type: text/plain; charset="UTF-8" X-Provags-ID: V03:K1:xMHR+/oei8shEKjqO2aNZ3xjz7BHk5Lj/8vXQYotfGOzvKiM/Ju zUpHkZvLjluojzxBfkVkt4+ioG52jT/EMBrClBCgMWTp0aYCQsF7w+4fb2PfLq63xymPPBe n8fL27ToK5K2gkD85t0/WlbME7mHfDmt1Ws7LDFD0R4+83epSd0lT789VLjk2BCxCv0PTNc nSgI4Fg6fMDFmwNA+iAwA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:KVV7I/FEbdY=:XDUZ0FkiqS+pGR+84WeAxd /hPXVKblcwFzPxol83ZdkPDHbw5eGn6Q01XhSrVuiKKEs1OymiuwYXAkd3QCvh7ZUXd6WZ0yS oIH02jeZfCbH0QvBwrGUF5i+wegJXtxCJ7TuH8COsphQ8pZUHZfnK7Rf5mD3v5pnOmvBmTgO8 D0waHvE+pOeynLKUnqDPZWKm2gb3wIyZnvpgX5EyEfrK6Ge1+YcwPYuiqbmZS1zGkdSAjV9rp VpurKtwFjMZjC7hw+Up/kG4YJvIZ66zUYRJOzhjPwenE6C7P44H9kFogxWxWcnPQEuoyGKzhN tZnKNrAmzGxE+xhSt9BdiasECTBlWprzQKm7KGSNb96FZoWZi3liUs5YbXu06VqmseVzF+NKE vmqmHnaAdo7yRWqz6zKa5wVti77ZRDI8H9PKcADoInFxxPmaRxHKf7w2xYgppP8A85AjpRUL7 6WgenLbje7FFAXsL0ER+3sy2WG9CtZQ2SGWJFevJq6h3FUv5d2daR1+L0QgSTm1T/U74oRKt5 TkYw/myo+GT4tjTkHZVgXQsT4mFsz5CyDtpFA8Ohbjx7eKhJURG6g2VdzSi7mlkwDsFwgcNZ2 z+NoRYrgy3x7vfO9kmfNCNJ55ObHeNkZ2Xak79e3oMwmAXp5uKgNFMWXHw1czZIDtDSq/jPKd 1WL9tXeHQJDEhYjGl5g6FWIre2r6boYoi48geZDyLO0k+9sQggIk+4POVz9UNw8gOygSZ1dgK oah47pvlixF9A8rcNvDEr7cIdmkTmJIT3Fw0HyLG9Mwm/enObWKfnuCbauH2m6rYH470PsHMx ewoAAKQS+nQ9fUv39e/sHLLf+7s7VK0TQr4uCRbCpAuZ3bUHIA= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 1, 2020 at 4:42 AM Alan Stern wrote: > On Thu, 30 Apr 2020, Arnd Bergmann wrote: > > No, they don't. > > /* PORTSC: offset 0x44 */ > > - u32 port_status[0]; /* up to N_PORTS */ > > + union { > > + u32 port_status[9]; /* up to N_PORTS */ > > This array can have up to 15 elements, meaning that it can extend out > to offset 0x80. Ok, thanks for the clarification! > > /* EHCI 1.1 addendum */ > > #define PORTSC_SUSPEND_STS_ACK 0 > > #define PORTSC_SUSPEND_STS_NYET 1 > > @@ -165,7 +166,8 @@ struct ehci_regs { > > #define PORT_CONNECT (1<<0) /* device connected */ > > #define PORT_RWC_BITS (PORT_CSC | PORT_PEC | PORT_OCC) > > > > - u32 reserved3[9]; > > + u32 reserved3[9]; > > + }; > > > > /* USBMODE: offset 0x68 */ > > u32 usbmode; /* USB Device mode */ > > As you see, this next field actually lies inside the preceding array. > It's not a real conflict; any hardware which supports the usbmode field > uses only the first element of the port_status array. > > I don't know how you want to handle this. Doing > > #define usbmode port_status[9] > > doesn't seem like a very good approach, but I can't think of anything > better at the moment. Maybe just set the array size to 9, as you did, > but with a comment explaining what's really going on. The easiest change would be to use an anonymous struct like this /* PORTSC: offset 0x44 */ union { u32 port_status[15]; /* up to N_PORTS */ /* EHCI 1.1 addendum */ #define PORTSC_SUSPEND_STS_ACK 0 ... #define PORT_RWC_BITS (PORT_CSC | PORT_PEC | PORT_OCC) struct { u32 reserved3[9]; /* USBMODE: offset 0x68 */ u32 usbmode; /* USB Device mode */ #define USBMODE_SDIS (1<<3) /* Stream disable */ #define USBMODE_BE (1<<2) /* BE/LE endianness select */ #define USBMODE_CM_HC (3<<0) /* host controller mode */ #define USBMODE_CM_IDLE (0<<0) /* idle state */ u32 reserved4[5]; }; }; u32 reserved5; It doesn't really improve readability, but it should correctly reflect the layout as you described it. Arnd