[Google filtered by ack as spam, so I'm trying again.]

Acked-by: Jarno Rajahalme <ja...@ovn.org>

> On Jun 9, 2016, at 11:50 AM, Jesse Gross <je...@kernel.org> wrote:
> 
> Since tunnel metadata is stored in a fixed area in the flow match field, we
> must allocate space for options as they are registered with the switch. In 
> order
> to avoid exposing implementation complexity to the controller, we support
> fragmentation when we run out of contiguous blocks that are large enough to
> handle new requests.
> 
> When reading or writing to these fragmented blocks, there is a bug that would
> cause us to keep on using the area after the allocated space rather than 
> moving
> to the next offset. This corrects that to use the offset for each block.
> 
> Unfortunately, while we did have a test for this exact use case, since the 
> same
> bug was present in both reading and writing code, everything appeared to work
> as normal from the outside.
> 
> Signed-off-by: Jesse Gross <je...@kernel.org>
> ---
> lib/tun-metadata.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/tun-metadata.c b/lib/tun-metadata.c
> index a773aea..7a2a84f 100644
> --- a/lib/tun-metadata.c
> +++ b/lib/tun-metadata.c
> @@ -490,7 +490,7 @@ memcpy_to_metadata(struct tun_metadata *dst, const void 
> *src,
>     int addr = 0;
> 
>     while (chain) {
> -        memcpy(dst->opts.u8 + loc->c.offset + addr, (uint8_t *)src + addr,
> +        memcpy(dst->opts.u8 + chain->offset, (uint8_t *)src + addr,
>                chain->len);
>         addr += chain->len;
>         chain = chain->next;
> @@ -507,7 +507,7 @@ memcpy_from_metadata(void *dst, const struct tun_metadata 
> *src,
>     int addr = 0;
> 
>     while (chain) {
> -        memcpy((uint8_t *)dst + addr, src->opts.u8 + loc->c.offset + addr,
> +        memcpy((uint8_t *)dst + addr, src->opts.u8 + chain->offset,
>                chain->len);
>         addr += chain->len;
>         chain = chain->next;
> -- 
> 2.5.0
> 
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to