2020-04-25 03:44:56

by Tonghao Zhang

[permalink] [raw]
Subject: [PATCH 1/2] net: openvswitch: suitable access to the dp_meters

From: Tonghao Zhang <[email protected]>

To fix the following sparse warning:
| net/openvswitch/meter.c:109:38: sparse: sparse: incorrect type
| in assignment (different address spaces) ...
| net/openvswitch/meter.c:720:45: sparse: sparse: incorrect type
| in argument 1 (different address spaces) ...

Reported-by: kbuild test robot <[email protected]>
Signed-off-by: Tonghao Zhang <[email protected]>
---
net/openvswitch/meter.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/net/openvswitch/meter.c b/net/openvswitch/meter.c
index 915f31123f23..612ad5586ce9 100644
--- a/net/openvswitch/meter.c
+++ b/net/openvswitch/meter.c
@@ -107,8 +107,8 @@ dp_meter_instance_realloc(struct dp_meter_table *tbl, u32 size)
return -ENOMEM;

for (i = 0; i < n_meters; i++)
- new_ti->dp_meters[i] =
- rcu_dereference_ovsl(ti->dp_meters[i]);
+ if (rcu_dereference_ovsl(ti->dp_meters[i]))
+ new_ti->dp_meters[i] = ti->dp_meters[i];

rcu_assign_pointer(tbl->ti, new_ti);
call_rcu(&ti->rcu, dp_meter_instance_free_rcu);
@@ -752,7 +752,7 @@ void ovs_meters_exit(struct datapath *dp)
int i;

for (i = 0; i < ti->n_meters; i++)
- ovs_meter_free(ti->dp_meters[i]);
+ ovs_meter_free(rcu_dereference_raw(ti->dp_meters[i]));

dp_meter_instance_free(ti);
}
--
2.23.0


2020-04-26 03:52:06

by David Miller

[permalink] [raw]
Subject: Re: [PATCH 1/2] net: openvswitch: suitable access to the dp_meters

From: [email protected]
Date: Sat, 25 Apr 2020 11:39:47 +0800

> From: Tonghao Zhang <[email protected]>
>
> To fix the following sparse warning:
> | net/openvswitch/meter.c:109:38: sparse: sparse: incorrect type
> | in assignment (different address spaces) ...
> | net/openvswitch/meter.c:720:45: sparse: sparse: incorrect type
> | in argument 1 (different address spaces) ...
>
> Reported-by: kbuild test robot <[email protected]>
> Signed-off-by: Tonghao Zhang <[email protected]>

Applied.