* [PATCH net v2 0/2] openvswitch: remove a couple of BUG_ON()
@ 2019-12-01 17:41 Paolo Abeni
2019-12-01 17:41 ` [PATCH net v2 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Paolo Abeni
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Paolo Abeni @ 2019-12-01 17:41 UTC (permalink / raw)
To: netdev; +Cc: David S. Miller, Pravin B Shelar, Sergei Shtylyov
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.
v1 -> v2:
- avoid memory leaks on error path
Paolo Abeni (2):
openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info()
openvswitch: remove another BUG_ON()
net/openvswitch/datapath.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
--
2.21.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH net v2 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info()
2019-12-01 17:41 [PATCH net v2 0/2] openvswitch: remove a couple of BUG_ON() Paolo Abeni
@ 2019-12-01 17:41 ` Paolo Abeni
2019-12-01 17:41 ` [PATCH net v2 2/2] openvswitch: remove another BUG_ON() Paolo Abeni
2019-12-01 21:21 ` [PATCH net v2 0/2] openvswitch: remove a couple of BUG_ON() David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Paolo Abeni @ 2019-12-01 17:41 UTC (permalink / raw)
To: netdev; +Cc: David S. Miller, Pravin B Shelar, Sergei Shtylyov
All the callers of ovs_flow_cmd_build_info() already deal with
error return code correctly, so we can handle the error condition
in a more gracefull way. Still dump a warning to preserve
debuggability.
v1 -> v2:
- clarify the commit message
- clean the skb and report the error (DaveM)
Fixes: ccb1352e76cf ("net: Add Open vSwitch kernel components.")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
net/openvswitch/datapath.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 293d5289c4a1..8cab3435d8da 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -905,7 +905,10 @@ 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);
+ if (WARN_ON_ONCE(retval < 0)) {
+ kfree_skb(skb);
+ skb = ERR_PTR(retval);
+ }
return skb;
}
--
2.21.0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH net v2 2/2] openvswitch: remove another BUG_ON()
2019-12-01 17:41 [PATCH net v2 0/2] openvswitch: remove a couple of BUG_ON() Paolo Abeni
2019-12-01 17:41 ` [PATCH net v2 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Paolo Abeni
@ 2019-12-01 17:41 ` Paolo Abeni
2019-12-01 21:21 ` [PATCH net v2 0/2] openvswitch: remove a couple of BUG_ON() David Miller
2 siblings, 0 replies; 4+ messages in thread
From: Paolo Abeni @ 2019-12-01 17:41 UTC (permalink / raw)
To: netdev; +Cc: David S. Miller, Pravin B Shelar, Sergei Shtylyov
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.
v1 -> v2:
- do not leak an skb on error
Fixes: aed067783e50 ("openvswitch: Minimize ovs_flow_cmd_del critical section.")
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
net/openvswitch/datapath.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 8cab3435d8da..1047e8043084 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -1372,7 +1372,10 @@ 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)) {
+ kfree_skb(reply);
+ goto out_free;
+ }
ovs_notify(&dp_flow_genl_family, reply, info);
} else {
@@ -1380,6 +1383,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] 4+ messages in thread
* Re: [PATCH net v2 0/2] openvswitch: remove a couple of BUG_ON()
2019-12-01 17:41 [PATCH net v2 0/2] openvswitch: remove a couple of BUG_ON() Paolo Abeni
2019-12-01 17:41 ` [PATCH net v2 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Paolo Abeni
2019-12-01 17:41 ` [PATCH net v2 2/2] openvswitch: remove another BUG_ON() Paolo Abeni
@ 2019-12-01 21:21 ` David Miller
2 siblings, 0 replies; 4+ messages in thread
From: David Miller @ 2019-12-01 21:21 UTC (permalink / raw)
To: pabeni; +Cc: netdev, pshelar, sergei.shtylyov
From: Paolo Abeni <pabeni@redhat.com>
Date: Sun, 1 Dec 2019 18:41:23 +0100
> 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.
>
> v1 -> v2:
> - avoid memory leaks on error path
Series applied and queued up for -stable, thanks.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2019-12-01 21:21 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-12-01 17:41 [PATCH net v2 0/2] openvswitch: remove a couple of BUG_ON() Paolo Abeni
2019-12-01 17:41 ` [PATCH net v2 1/2] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Paolo Abeni
2019-12-01 17:41 ` [PATCH net v2 2/2] openvswitch: remove another BUG_ON() Paolo Abeni
2019-12-01 21:21 ` [PATCH net v2 0/2] openvswitch: remove a couple of BUG_ON() David Miller
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).