netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net 0/2] openvswitch: remove a couple of BUG_ON()
@ 2019-11-26 12:10 Paolo Abeni
  2019-11-26 12:10 ` [PATCH net 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Paolo Abeni
  2019-11-26 12:10 ` [PATCH net 2/2] openvswitch: remove another BUG_ON() Paolo Abeni
  0 siblings, 2 replies; 6+ messages in thread
From: Paolo Abeni @ 2019-11-26 12:10 UTC (permalink / raw)
  To: netdev; +Cc: David S. Miller, Pravin B Shelar

The openvswitch kernel datapath includes some BUG_ON() statements to check for
exceptional/unexpected failures. These patches drop a couple of them, where
we can do that without introducing other side effects.

Paolo Abeni (2):
  openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info()
  openvswitch: remove another BUG_ON()

 net/openvswitch/datapath.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

-- 
2.21.0


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH net 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info()
  2019-11-26 12:10 [PATCH net 0/2] openvswitch: remove a couple of BUG_ON() Paolo Abeni
@ 2019-11-26 12:10 ` Paolo Abeni
  2019-11-27 10:07   ` Sergei Shtylyov
  2019-11-28 21:17   ` David Miller
  2019-11-26 12:10 ` [PATCH net 2/2] openvswitch: remove another BUG_ON() Paolo Abeni
  1 sibling, 2 replies; 6+ messages in thread
From: Paolo Abeni @ 2019-11-26 12:10 UTC (permalink / raw)
  To: netdev; +Cc: David S. Miller, Pravin B Shelar

All callers already deal with errors correctly, dump a warn instead.

Fixes: ccb1352e76cf ("net: Add Open vSwitch kernel components.")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
 net/openvswitch/datapath.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index d8c364d637b1..e94f675794f1 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -882,7 +882,7 @@ static struct sk_buff *ovs_flow_cmd_build_info(const struct sw_flow *flow,
 	retval = ovs_flow_cmd_fill_info(flow, dp_ifindex, skb,
 					info->snd_portid, info->snd_seq, 0,
 					cmd, ufid_flags);
-	BUG_ON(retval < 0);
+	WARN_ON_ONCE(retval < 0);
 	return skb;
 }
 
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH net 2/2] openvswitch: remove another BUG_ON()
  2019-11-26 12:10 [PATCH net 0/2] openvswitch: remove a couple of BUG_ON() Paolo Abeni
  2019-11-26 12:10 ` [PATCH net 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Paolo Abeni
@ 2019-11-26 12:10 ` Paolo Abeni
  1 sibling, 0 replies; 6+ messages in thread
From: Paolo Abeni @ 2019-11-26 12:10 UTC (permalink / raw)
  To: netdev; +Cc: David S. Miller, Pravin B Shelar

If we can't build the flow del notification, we can simply delete
the flow, no need to crash the kernel. Still keep a WARN_ON to
preserve debuggability.

Note: the BUG_ON() predates the Fixes tag, but this change
can be applied only after the mentioned commit.

Fixes: aed067783e50 ("openvswitch: Minimize ovs_flow_cmd_del critical section.")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
 net/openvswitch/datapath.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index e94f675794f1..50656e807c8c 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -1346,7 +1346,8 @@ static int ovs_flow_cmd_del(struct sk_buff *skb, struct genl_info *info)
 						     OVS_FLOW_CMD_DEL,
 						     ufid_flags);
 			rcu_read_unlock();
-			BUG_ON(err < 0);
+			if (WARN_ON_ONCE(err < 0))
+				goto out_free;
 
 			ovs_notify(&dp_flow_genl_family, reply, info);
 		} else {
@@ -1354,6 +1355,7 @@ static int ovs_flow_cmd_del(struct sk_buff *skb, struct genl_info *info)
 		}
 	}
 
+out_free:
 	ovs_flow_free(flow, true);
 	return 0;
 unlock:
-- 
2.21.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH net 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info()
  2019-11-26 12:10 ` [PATCH net 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Paolo Abeni
@ 2019-11-27 10:07   ` Sergei Shtylyov
  2019-11-28 21:17   ` David Miller
  1 sibling, 0 replies; 6+ messages in thread
From: Sergei Shtylyov @ 2019-11-27 10:07 UTC (permalink / raw)
  To: Paolo Abeni, netdev; +Cc: David S. Miller, Pravin B Shelar

Hello!

On 26.11.2019 15:10, Paolo Abeni wrote:

> All callers already deal with errors correctly, dump a warn instead.

    Warning, maybe?

> Fixes: ccb1352e76cf ("net: Add Open vSwitch kernel components.")
> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
> ---
>   net/openvswitch/datapath.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
> index d8c364d637b1..e94f675794f1 100644
> --- a/net/openvswitch/datapath.c
> +++ b/net/openvswitch/datapath.c
> @@ -882,7 +882,7 @@ static struct sk_buff *ovs_flow_cmd_build_info(const struct sw_flow *flow,
>   	retval = ovs_flow_cmd_fill_info(flow, dp_ifindex, skb,
>   					info->snd_portid, info->snd_seq, 0,
>   					cmd, ufid_flags);
> -	BUG_ON(retval < 0);
> +	WARN_ON_ONCE(retval < 0);
>   	return skb;
>   }
>   

MBR, Sergei

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info()
  2019-11-26 12:10 ` [PATCH net 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Paolo Abeni
  2019-11-27 10:07   ` Sergei Shtylyov
@ 2019-11-28 21:17   ` David Miller
  2019-11-29 10:16     ` Paolo Abeni
  1 sibling, 1 reply; 6+ messages in thread
From: David Miller @ 2019-11-28 21:17 UTC (permalink / raw)
  To: pabeni; +Cc: netdev, pshelar

From: Paolo Abeni <pabeni@redhat.com>
Date: Tue, 26 Nov 2019 13:10:29 +0100

> All callers already deal with errors correctly, dump a warn instead.
> 
> Fixes: ccb1352e76cf ("net: Add Open vSwitch kernel components.")
> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
> ---
>  net/openvswitch/datapath.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
> index d8c364d637b1..e94f675794f1 100644
> --- a/net/openvswitch/datapath.c
> +++ b/net/openvswitch/datapath.c
> @@ -882,7 +882,7 @@ static struct sk_buff *ovs_flow_cmd_build_info(const struct sw_flow *flow,
>  	retval = ovs_flow_cmd_fill_info(flow, dp_ifindex, skb,
>  					info->snd_portid, info->snd_seq, 0,
>  					cmd, ufid_flags);
> -	BUG_ON(retval < 0);
> +	WARN_ON_ONCE(retval < 0);
>  	return skb;
>  }

I don't think this is right.  We should propagate the error by freeing the skb
and returning a proper error pointer based upon retval.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH net 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info()
  2019-11-28 21:17   ` David Miller
@ 2019-11-29 10:16     ` Paolo Abeni
  0 siblings, 0 replies; 6+ messages in thread
From: Paolo Abeni @ 2019-11-29 10:16 UTC (permalink / raw)
  To: David Miller; +Cc: netdev, pshelar

On Thu, 2019-11-28 at 13:17 -0800, David Miller wrote:
> From: Paolo Abeni <pabeni@redhat.com>
> Date: Tue, 26 Nov 2019 13:10:29 +0100
> 
> > All callers already deal with errors correctly, dump a warn instead.
> > 
> > Fixes: ccb1352e76cf ("net: Add Open vSwitch kernel components.")
> > Signed-off-by: Paolo Abeni <pabeni@redhat.com>
> > ---
> >  net/openvswitch/datapath.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
> > index d8c364d637b1..e94f675794f1 100644
> > --- a/net/openvswitch/datapath.c
> > +++ b/net/openvswitch/datapath.c
> > @@ -882,7 +882,7 @@ static struct sk_buff *ovs_flow_cmd_build_info(const struct sw_flow *flow,
> >       retval = ovs_flow_cmd_fill_info(flow, dp_ifindex, skb,
> >                                       info->snd_portid, info->snd_seq, 0,
> >                                       cmd, ufid_flags);
> > -     BUG_ON(retval < 0);
> > +     WARN_ON_ONCE(retval < 0);
> >       return skb;
> >  }
> 
> I don't think this is right.  We should propagate the error by freeing the skb
> and returning a proper error pointer based upon retval.

Indeed you are right. Thank you for catching this.

Never cook patches when coffee is too low :/

Will send a v2

Thank you!

Paolo



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-11-29 10:16 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-11-26 12:10 [PATCH net 0/2] openvswitch: remove a couple of BUG_ON() Paolo Abeni
2019-11-26 12:10 ` [PATCH net 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Paolo Abeni
2019-11-27 10:07   ` Sergei Shtylyov
2019-11-28 21:17   ` David Miller
2019-11-29 10:16     ` Paolo Abeni
2019-11-26 12:10 ` [PATCH net 2/2] openvswitch: remove another BUG_ON() Paolo Abeni

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).