> -----Original Message-----
> From: Bill Fischofer [mailto:bill.fischo...@linaro.org]
> Sent: Thursday, December 22, 2016 4:20 PM
> To: Savolainen, Petri (Nokia - FI/Espoo) <petri.savolainen@nokia-bell-
> labs.com>
> Cc: Mike Holmes <mike.hol...@linaro.org>; Maxim Uvarov
> <maxim.uva...@linaro.org>; lng-odp <lng-odp@lists.linaro.org>
> Subject: Re: [lng-odp] [PATCHv2] linux-generic: packet: fix buggy compiler
> error
> 
> On Thu, Dec 22, 2016 at 8:13 AM, Savolainen, Petri (Nokia - FI/Espoo)
> <petri.savolai...@nokia-bell-labs.com> wrote:
> >
> >
> >> -----Original Message-----
> >> From: lng-odp [mailto:lng-odp-boun...@lists.linaro.org] On Behalf Of
> Mike
> >> Holmes
> >> Sent: Thursday, December 22, 2016 4:08 PM
> >> To: Maxim Uvarov <maxim.uva...@linaro.org>
> >> Cc: lng-odp <lng-odp@lists.linaro.org>
> >> Subject: Re: [lng-odp] [PATCHv2] linux-generic: packet: fix buggy
> compiler
> >> error
> >>
> >> On 22 December 2016 at 08:49, Maxim Uvarov <maxim.uva...@linaro.org>
> >> wrote:
> >>
> >> > On debian jessie gcc unable to compile current code
> >> > with error:
> >> > odp_packet.c: In function 'odp_packet_trunc_head':
> >> > odp_packet.c:314:46: error: array subscript is above array bounds
> >> > [-Werror=array-bounds]
> >> > to->buf_hdr.seg[i].len = from->buf_hdr.seg[num + i].len;
> >> >
> >> > The problem is that it breaks compilation only on .len line:
> >> > for (i = 0; i < num; i++) {
> >> >         to->buf_hdr.seg[i].hdr  = from->buf_hdr.seg[num + i].hdr;
> >> >         to->buf_hdr.seg[i].data = from->buf_hdr.seg[num + i].data;
> >> >         to->buf_hdr.seg[i].len  = from->buf_hdr.seg[num + i].len;
> >> > }
> >> >
> >> > If that line is commented out compilation passes. If lines are
> reordered
> >> > than compilation also fails on .len line. Because there is no warning
> on
> >> > .hdr and .data it looks like compiler error. Additional check for
> >> > preconfigured value is workaround to that situation.
> >> >
> >> > Signed-off-by: Maxim Uvarov <maxim.uva...@linaro.org>
> >> >
> >>
> >> Reviewed-by: Mike Holmes <mike.hol...@linaro.org>
> >>
> >> -O3 now passes for me on x86 gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0
> 20161005
> >>
> >
> > I'll send shortly a patch set which modifies also this function. I think
> it should remove the issue also.
> 
> Thanks, Petri. Can you also please take a look at my patch for Bug
> 2789, http://patches.opendataplane.org/patch/7696/ as this is also
> working in the new pool code area.
> 

The free_segments() issues is corrected. The trunc head/tail might not be ... 
but on the other hand I'm not sure if zero length packets must be supported. 
Trunc documentation allows that, but e.g. alloc does not. Zero length packets 
are not very useful, so we could change API to get rid of the corner case.

-Petri

Reply via email to