All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues
@ 2021-07-23 14:24 Mark Gray
  2021-07-23 14:24 ` [PATCH net-next 1/3] openvswitch: update kdoc OVS_DP_ATTR_PER_CPU_PIDS Mark Gray
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Mark Gray @ 2021-07-23 14:24 UTC (permalink / raw)
  To: netdev, dev; +Cc: pshelar, davem, kuba, Mark Gray

Some issues were raised by patchwork at:
https://patchwork.kernel.org/project/netdevbpf/patch/20210630095350.817785-1-mark.d.gray@redhat.com/#24285159

Mark Gray (3):
  openvswitch: update kdoc OVS_DP_ATTR_PER_CPU_PIDS
  openvswitch: fix alignment issues
  openvswitch: fix sparse warning incorrect type

 include/uapi/linux/openvswitch.h |  6 +++---
 net/openvswitch/actions.c        |  6 ++++--
 net/openvswitch/datapath.c       | 18 +++++++++++-------
 3 files changed, 18 insertions(+), 12 deletions(-)

-- 
2.27.0



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

* [PATCH net-next 1/3] openvswitch: update kdoc OVS_DP_ATTR_PER_CPU_PIDS
  2021-07-23 14:24 [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues Mark Gray
@ 2021-07-23 14:24 ` Mark Gray
  2021-07-23 14:24 ` [PATCH net-next 2/3] openvswitch: fix alignment issues Mark Gray
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Mark Gray @ 2021-07-23 14:24 UTC (permalink / raw)
  To: netdev, dev; +Cc: pshelar, davem, kuba, Mark Gray

Signed-off-by: Mark Gray <mark.d.gray@redhat.com>
---
 include/uapi/linux/openvswitch.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index 6571b57b2268..0e436a3755f1 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -70,7 +70,7 @@ enum ovs_datapath_cmd {
  * set on the datapath port (for OVS_ACTION_ATTR_MISS).  Only valid on
  * %OVS_DP_CMD_NEW requests. A value of zero indicates that upcalls should
  * not be sent.
- * OVS_DP_ATTR_PER_CPU_PIDS: Per-cpu array of PIDs for upcalls when
+ * @OVS_DP_ATTR_PER_CPU_PIDS: Per-cpu array of PIDs for upcalls when
  * OVS_DP_F_DISPATCH_UPCALL_PER_CPU feature is set.
  * @OVS_DP_ATTR_STATS: Statistics about packets that have passed through the
  * datapath.  Always present in notifications.
-- 
2.27.0


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

* [PATCH net-next 2/3] openvswitch: fix alignment issues
  2021-07-23 14:24 [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues Mark Gray
  2021-07-23 14:24 ` [PATCH net-next 1/3] openvswitch: update kdoc OVS_DP_ATTR_PER_CPU_PIDS Mark Gray
@ 2021-07-23 14:24 ` Mark Gray
  2021-07-23 14:24 ` [PATCH net-next 3/3] openvswitch: fix sparse warning incorrect type Mark Gray
  2021-07-27 11:00 ` [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Mark Gray @ 2021-07-23 14:24 UTC (permalink / raw)
  To: netdev, dev; +Cc: pshelar, davem, kuba, Mark Gray

Signed-off-by: Mark Gray <mark.d.gray@redhat.com>
---
 include/uapi/linux/openvswitch.h |  4 ++--
 net/openvswitch/actions.c        |  6 ++++--
 net/openvswitch/datapath.c       | 16 ++++++++++------
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index 0e436a3755f1..150bcff49b1c 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -89,8 +89,8 @@ enum ovs_datapath_attr {
 	OVS_DP_ATTR_USER_FEATURES,	/* OVS_DP_F_*  */
 	OVS_DP_ATTR_PAD,
 	OVS_DP_ATTR_MASKS_CACHE_SIZE,
-	OVS_DP_ATTR_PER_CPU_PIDS,   /* Netlink PIDS to receive upcalls in per-cpu
-				     * dispatch mode
+	OVS_DP_ATTR_PER_CPU_PIDS,   /* Netlink PIDS to receive upcalls in
+				     * per-cpu dispatch mode
 				     */
 	__OVS_DP_ATTR_MAX
 };
diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c
index f79679746c62..076774034bb9 100644
--- a/net/openvswitch/actions.c
+++ b/net/openvswitch/actions.c
@@ -924,9 +924,11 @@ static int output_userspace(struct datapath *dp, struct sk_buff *skb,
 			break;
 
 		case OVS_USERSPACE_ATTR_PID:
-			if (dp->user_features & OVS_DP_F_DISPATCH_UPCALL_PER_CPU)
+			if (dp->user_features &
+			    OVS_DP_F_DISPATCH_UPCALL_PER_CPU)
 				upcall.portid =
-				   ovs_dp_get_upcall_portid(dp, smp_processor_id());
+				  ovs_dp_get_upcall_portid(dp,
+							   smp_processor_id());
 			else
 				upcall.portid = nla_get_u32(a);
 			break;
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 7a4edafdc685..e6f0ae5618dd 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -244,7 +244,8 @@ void ovs_dp_process_packet(struct sk_buff *skb, struct sw_flow_key *key)
 		upcall.cmd = OVS_PACKET_CMD_MISS;
 
 		if (dp->user_features & OVS_DP_F_DISPATCH_UPCALL_PER_CPU)
-			upcall.portid = ovs_dp_get_upcall_portid(dp, smp_processor_id());
+			upcall.portid =
+			    ovs_dp_get_upcall_portid(dp, smp_processor_id());
 		else
 			upcall.portid = ovs_vport_find_upcall_portid(p, skb);
 
@@ -1636,13 +1637,16 @@ u32 ovs_dp_get_upcall_portid(const struct datapath *dp, uint32_t cpu_id)
 	if (dp_nlsk_pids) {
 		if (cpu_id < dp_nlsk_pids->n_pids) {
 			return dp_nlsk_pids->pids[cpu_id];
-		} else if (dp_nlsk_pids->n_pids > 0 && cpu_id >= dp_nlsk_pids->n_pids) {
-			/* If the number of netlink PIDs is mismatched with the number of
-			 * CPUs as seen by the kernel, log this and send the upcall to an
-			 * arbitrary socket (0) in order to not drop packets
+		} else if (dp_nlsk_pids->n_pids > 0 &&
+			   cpu_id >= dp_nlsk_pids->n_pids) {
+			/* If the number of netlink PIDs is mismatched with
+			 * the number of CPUs as seen by the kernel, log this
+			 * and send the upcall to an arbitrary socket (0) in
+			 * order to not drop packets
 			 */
 			pr_info_ratelimited("cpu_id mismatch with handler threads");
-			return dp_nlsk_pids->pids[cpu_id % dp_nlsk_pids->n_pids];
+			return dp_nlsk_pids->pids[cpu_id %
+						  dp_nlsk_pids->n_pids];
 		} else {
 			return 0;
 		}
-- 
2.27.0


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

* [PATCH net-next 3/3] openvswitch: fix sparse warning incorrect type
  2021-07-23 14:24 [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues Mark Gray
  2021-07-23 14:24 ` [PATCH net-next 1/3] openvswitch: update kdoc OVS_DP_ATTR_PER_CPU_PIDS Mark Gray
  2021-07-23 14:24 ` [PATCH net-next 2/3] openvswitch: fix alignment issues Mark Gray
@ 2021-07-23 14:24 ` Mark Gray
  2021-07-27 11:00 ` [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: Mark Gray @ 2021-07-23 14:24 UTC (permalink / raw)
  To: netdev, dev; +Cc: pshelar, davem, kuba, Mark Gray

fix incorrect type in argument 1 (different address spaces)

../net/openvswitch/datapath.c:169:17: warning: incorrect type in argument 1 (different address spaces)
../net/openvswitch/datapath.c:169:17:    expected void const *
../net/openvswitch/datapath.c:169:17:    got struct dp_nlsk_pids [noderef] __rcu *upcall_portids

Found at: https://patchwork.kernel.org/project/netdevbpf/patch/20210630095350.817785-1-mark.d.gray@redhat.com/#24285159

Signed-off-by: Mark Gray <mark.d.gray@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 e6f0ae5618dd..67ad08320886 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -168,7 +168,7 @@ static void destroy_dp_rcu(struct rcu_head *rcu)
 	free_percpu(dp->stats_percpu);
 	kfree(dp->ports);
 	ovs_meters_exit(dp);
-	kfree(dp->upcall_portids);
+	kfree(rcu_dereference_raw(dp->upcall_portids));
 	kfree(dp);
 }
 
-- 
2.27.0


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

* Re: [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues
  2021-07-23 14:24 [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues Mark Gray
                   ` (2 preceding siblings ...)
  2021-07-23 14:24 ` [PATCH net-next 3/3] openvswitch: fix sparse warning incorrect type Mark Gray
@ 2021-07-27 11:00 ` patchwork-bot+netdevbpf
  3 siblings, 0 replies; 5+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-07-27 11:00 UTC (permalink / raw)
  To: Mark Gray; +Cc: netdev, dev, pshelar, davem, kuba

Hello:

This series was applied to netdev/net-next.git (refs/heads/master):

On Fri, 23 Jul 2021 10:24:11 -0400 you wrote:
> Some issues were raised by patchwork at:
> https://patchwork.kernel.org/project/netdevbpf/patch/20210630095350.817785-1-mark.d.gray@redhat.com/#24285159
> 
> Mark Gray (3):
>   openvswitch: update kdoc OVS_DP_ATTR_PER_CPU_PIDS
>   openvswitch: fix alignment issues
>   openvswitch: fix sparse warning incorrect type
> 
> [...]

Here is the summary with links:
  - [net-next,1/3] openvswitch: update kdoc OVS_DP_ATTR_PER_CPU_PIDS
    https://git.kernel.org/netdev/net-next/c/e4252cb66637
  - [net-next,2/3] openvswitch: fix alignment issues
    https://git.kernel.org/netdev/net-next/c/784dcfa56e04
  - [net-next,3/3] openvswitch: fix sparse warning incorrect type
    https://git.kernel.org/netdev/net-next/c/076999e46027

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2021-07-27 11:00 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-23 14:24 [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues Mark Gray
2021-07-23 14:24 ` [PATCH net-next 1/3] openvswitch: update kdoc OVS_DP_ATTR_PER_CPU_PIDS Mark Gray
2021-07-23 14:24 ` [PATCH net-next 2/3] openvswitch: fix alignment issues Mark Gray
2021-07-23 14:24 ` [PATCH net-next 3/3] openvswitch: fix sparse warning incorrect type Mark Gray
2021-07-27 11:00 ` [PATCH net-next 0/3] openvswitch: per-cpu upcall patchwork issues patchwork-bot+netdevbpf

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.