2023-09-12 21:31:12

by Lukasz Majewski

[permalink] [raw]
Subject: Re: [PATCH] net: hsr : Provide fix for HSRv1 supervisor frames decoding

Hi Sebastian,

> On 2023-09-11 16:57:08 [+0200], Lukasz Majewski wrote:
> > Hi Sebastian,
> Hi,
>
> >
> > Have you had time to review this patch?
>
> got distracted a few times. I need a quiet moment… Will do this week…
>

Ok. No problem. Thanks for the information.

> > Your comments are more than welcome.
>
> Sebastian




Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH, Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: [email protected]


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature

Subject: Re: [PATCH] net: hsr : Provide fix for HSRv1 supervisor frames decoding

On 2023-09-12 10:18:28 [+0200], Lukasz Majewski wrote:
> Hi Sebastian,
Hi Lukasz,

> Ok. No problem. Thanks for the information.

So what happens if you try this:

diff --git a/net/hsr/hsr_framereg.c b/net/hsr/hsr_framereg.c
index b77f1189d19d1..6d14d935ee828 100644
--- a/net/hsr/hsr_framereg.c
+++ b/net/hsr/hsr_framereg.c
@@ -288,13 +288,13 @@ void hsr_handle_sup_frame(struct hsr_frame_info *frame)

/* And leave the HSR tag. */
if (ethhdr->h_proto == htons(ETH_P_HSR)) {
- pull_size = sizeof(struct ethhdr);
+ pull_size = sizeof(struct hsr_tag);
skb_pull(skb, pull_size);
total_pull_size += pull_size;
}

/* And leave the HSR sup tag. */
- pull_size = sizeof(struct hsr_tag);
+ pull_size = sizeof(struct hsr_sup_tag);
skb_pull(skb, pull_size);
total_pull_size += pull_size;


Sebastian

2023-09-14 20:57:16

by Lukasz Majewski

[permalink] [raw]
Subject: Re: [PATCH] net: hsr : Provide fix for HSRv1 supervisor frames decoding

Hi Sebastian Andrzej,

> On 2023-09-12 10:18:28 [+0200], Lukasz Majewski wrote:
> > Hi Sebastian,
> Hi Lukasz,
>
> > Ok. No problem. Thanks for the information.
>
> So what happens if you try this:
>
> diff --git a/net/hsr/hsr_framereg.c b/net/hsr/hsr_framereg.c
> index b77f1189d19d1..6d14d935ee828 100644
> --- a/net/hsr/hsr_framereg.c
> +++ b/net/hsr/hsr_framereg.c
> @@ -288,13 +288,13 @@ void hsr_handle_sup_frame(struct hsr_frame_info
> *frame)
> /* And leave the HSR tag. */
> if (ethhdr->h_proto == htons(ETH_P_HSR)) {
> - pull_size = sizeof(struct ethhdr);
> + pull_size = sizeof(struct hsr_tag);
> skb_pull(skb, pull_size);
> total_pull_size += pull_size;
> }
>
> /* And leave the HSR sup tag. */
> - pull_size = sizeof(struct hsr_tag);
> + pull_size = sizeof(struct hsr_sup_tag);
> skb_pull(skb, pull_size);
> total_pull_size += pull_size;
>
>
> Sebastian

Yes, this fixes this issue (caused by: SHA1: eafaa88b3eb7f).
Such solution has also been pointed out earlier by Tristram.

I will prepare v2 of this patch.


Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH, Managing Director: Erika Unter
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: [email protected]


Attachments:
(No filename) (499.00 B)
OpenPGP digital signature