Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-10 Thread Eric Dumazet
On Fri, 2017-06-09 at 21:24 +0200, Bjørn Mork wrote:
> Chenbo Feng  writes:
> 
> > This patch is still under working since it may have problem with
> > ip_fragment() call, did you applied it already? Should I send a revert
> > patch to you then?
> 
> It does? I initially thought so too, but looking closer I believe the
> ip6_copy_metadata() calls in ip6_fragment() takes care of it.

Indeed, this should be fine.




Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-10 Thread Eric Dumazet
On Fri, 2017-06-09 at 16:12 -0700, Chenbo Feng wrote:
> 
> On 06/09/2017 12:39 PM, David Miller wrote:
> > From: Chenbo Feng 
> > Date: Fri, 9 Jun 2017 12:13:57 -0700
> >
> >>
> >> On 06/09/2017 12:08 PM, David Miller wrote:
> >>> From: Chenbo Feng 
> >>> Date: Fri,  9 Jun 2017 12:06:07 -0700
> >>>
>  From: Chenbo Feng 
> 
>  Move the initialization of skb->dev and skb->protocol from
>  ip6_finish_output2 to ip6_output. This can make the skb->dev and
>  skb->protocol information avalaible to the CGROUP eBPF filter.
> 
>  Signed-off-by: Chenbo Feng 
>  Acked-by: Eric Dumazet 
> >>> Applied, thanks.
> >>>
> >>> This makes ipv6 consistent with ipv4.
> >>>
> >>> I am surprised this wasn't noticed, for example, in netfilter.
> >>> .
> >>>
> >> Hi David,
> >>
> >> This patch is still under working since it may have problem with
> >> ip_fragment() call, did you applied it already? Should I send a revert
> >> patch to you then?
> > A revert is necessary or a relative fixup.
> >
> > Thank you.
> >
> Hi David,
> 
> The revert is uploaded here: http://patchwork.ozlabs.org/patch/774136/
> 
> Thanks and sorry for the trouble caused
> 
> Chenbo Feng

No worries !

It seems the revert is not needed, after further analysis.

One of the point I raised was this no longer needed chunk, that can be
added as a separate patch :

diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 
02cd44f0953900108701895108b2fdaa9f9980e5..0d6f3b6345de26c329ae1d6f25dde652a5452d4b
 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -869,7 +869,6 @@ int ip6_fragment(struct net *net, struct sock *sk, struct 
sk_buff *skb,
if (skb->sk && dst_allfrag(skb_dst(skb)))
sk_nocaps_add(skb->sk, NETIF_F_GSO_MASK);
 
-   skb->dev = skb_dst(skb)->dev;
icmpv6_send(skb, ICMPV6_PKT_TOOBIG, 0, mtu);
err = -EMSGSIZE;
 





Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-09 Thread Chenbo Feng



On 06/09/2017 12:39 PM, David Miller wrote:

From: Chenbo Feng 
Date: Fri, 9 Jun 2017 12:13:57 -0700



On 06/09/2017 12:08 PM, David Miller wrote:

From: Chenbo Feng 
Date: Fri,  9 Jun 2017 12:06:07 -0700


From: Chenbo Feng 

Move the initialization of skb->dev and skb->protocol from
ip6_finish_output2 to ip6_output. This can make the skb->dev and
skb->protocol information avalaible to the CGROUP eBPF filter.

Signed-off-by: Chenbo Feng 
Acked-by: Eric Dumazet 

Applied, thanks.

This makes ipv6 consistent with ipv4.

I am surprised this wasn't noticed, for example, in netfilter.
.


Hi David,

This patch is still under working since it may have problem with
ip_fragment() call, did you applied it already? Should I send a revert
patch to you then?

A revert is necessary or a relative fixup.

Thank you.


Hi David,

The revert is uploaded here: http://patchwork.ozlabs.org/patch/774136/

Thanks and sorry for the trouble caused

Chenbo Feng


Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-09 Thread Eric Dumazet
On Fri, Jun 9, 2017 at 12:06 PM, Chenbo Feng
 wrote:
> From: Chenbo Feng 
>
> Move the initialization of skb->dev and skb->protocol from
> ip6_finish_output2 to ip6_output. This can make the skb->dev and
> skb->protocol information avalaible to the CGROUP eBPF filter.
>
> Signed-off-by: Chenbo Feng 
> Acked-by: Eric Dumazet 
> ---

Arg, you mixed my Acked-by for your other patch :/


Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-09 Thread Chenbo Feng



On 06/09/2017 12:24 PM, Bjørn Mork wrote:

Chenbo Feng  writes:


This patch is still under working since it may have problem with
ip_fragment() call, did you applied it already? Should I send a revert
patch to you then?

It does? I initially thought so too, but looking closer I believe the
ip6_copy_metadata() calls in ip6_fragment() takes care of it.



Bjørn

At least in the fail_toobig code path of ip_fragment() call, skb->dev 
get assigned again. It seems to be redundant with this patch or it will 
rewrite the skb->dev field. I will revert this one and upload again 
after I have a proper handle for that.


Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-09 Thread David Miller
From: Chenbo Feng 
Date: Fri, 9 Jun 2017 12:13:57 -0700

> 
> 
> On 06/09/2017 12:08 PM, David Miller wrote:
>> From: Chenbo Feng 
>> Date: Fri,  9 Jun 2017 12:06:07 -0700
>>
>>> From: Chenbo Feng 
>>>
>>> Move the initialization of skb->dev and skb->protocol from
>>> ip6_finish_output2 to ip6_output. This can make the skb->dev and
>>> skb->protocol information avalaible to the CGROUP eBPF filter.
>>>
>>> Signed-off-by: Chenbo Feng 
>>> Acked-by: Eric Dumazet 
>> Applied, thanks.
>>
>> This makes ipv6 consistent with ipv4.
>>
>> I am surprised this wasn't noticed, for example, in netfilter.
>> .
>>
> Hi David,
> 
> This patch is still under working since it may have problem with
> ip_fragment() call, did you applied it already? Should I send a revert
> patch to you then?

A revert is necessary or a relative fixup.

Thank you.


Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-09 Thread David Miller
From: Chenbo Feng 
Date: Fri, 9 Jun 2017 12:08:39 -0700

> Sorry, this is the wrong patch, please ignore it.

:-/ already applied it.

You must now send a relative fixup patch.


Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-09 Thread Bjørn Mork
Chenbo Feng  writes:

> This patch is still under working since it may have problem with
> ip_fragment() call, did you applied it already? Should I send a revert
> patch to you then?

It does? I initially thought so too, but looking closer I believe the
ip6_copy_metadata() calls in ip6_fragment() takes care of it.



Bjørn


Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-09 Thread Chenbo Feng



On 06/09/2017 12:08 PM, David Miller wrote:

From: Chenbo Feng 
Date: Fri,  9 Jun 2017 12:06:07 -0700


From: Chenbo Feng 

Move the initialization of skb->dev and skb->protocol from
ip6_finish_output2 to ip6_output. This can make the skb->dev and
skb->protocol information avalaible to the CGROUP eBPF filter.

Signed-off-by: Chenbo Feng 
Acked-by: Eric Dumazet 

Applied, thanks.

This makes ipv6 consistent with ipv4.

I am surprised this wasn't noticed, for example, in netfilter.
.


Hi David,

This patch is still under working since it may have problem with 
ip_fragment() call, did you applied it already? Should I send a revert 
patch to you then?


Chenbo Feng



Re: [PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-09 Thread David Miller
From: Chenbo Feng 
Date: Fri,  9 Jun 2017 12:06:07 -0700

> From: Chenbo Feng 
> 
> Move the initialization of skb->dev and skb->protocol from
> ip6_finish_output2 to ip6_output. This can make the skb->dev and
> skb->protocol information avalaible to the CGROUP eBPF filter.
> 
> Signed-off-by: Chenbo Feng 
> Acked-by: Eric Dumazet 

Applied, thanks.

This makes ipv6 consistent with ipv4.

I am surprised this wasn't noticed, for example, in netfilter.


[PATCH net-next] ipv6: Initial skb->dev and skb->protocol in ip6_output

2017-06-09 Thread Chenbo Feng
From: Chenbo Feng 

Move the initialization of skb->dev and skb->protocol from
ip6_finish_output2 to ip6_output. This can make the skb->dev and
skb->protocol information avalaible to the CGROUP eBPF filter.

Signed-off-by: Chenbo Feng 
Acked-by: Eric Dumazet 
---
 net/ipv6/ip6_output.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index bf8a58a..02cd44f 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -67,9 +67,6 @@ static int ip6_finish_output2(struct net *net, struct sock 
*sk, struct sk_buff *
struct in6_addr *nexthop;
int ret;
 
-   skb->protocol = htons(ETH_P_IPV6);
-   skb->dev = dev;
-
if (ipv6_addr_is_multicast(&ipv6_hdr(skb)->daddr)) {
struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
 
@@ -154,6 +151,9 @@ int ip6_output(struct net *net, struct sock *sk, struct 
sk_buff *skb)
struct net_device *dev = skb_dst(skb)->dev;
struct inet6_dev *idev = ip6_dst_idev(skb_dst(skb));
 
+   skb->protocol = htons(ETH_P_IPV6);
+   skb->dev = dev;
+
if (unlikely(idev->cnf.disable_ipv6)) {
IP6_INC_STATS(net, idev, IPSTATS_MIB_OUTDISCARDS);
kfree_skb(skb);
-- 
2.7.4