Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: openvswitch: suitable access to the dp_meters

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 <lkp@intel.com>
Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Tonghao Zhang and committed by
David S. Miller
4b36a0df 06b439de

+3 -3
+3 -3
net/openvswitch/meter.c
··· 107 107 return -ENOMEM; 108 108 109 109 for (i = 0; i < n_meters; i++) 110 - new_ti->dp_meters[i] = 111 - rcu_dereference_ovsl(ti->dp_meters[i]); 110 + if (rcu_dereference_ovsl(ti->dp_meters[i])) 111 + new_ti->dp_meters[i] = ti->dp_meters[i]; 112 112 113 113 rcu_assign_pointer(tbl->ti, new_ti); 114 114 call_rcu(&ti->rcu, dp_meter_instance_free_rcu); ··· 752 752 int i; 753 753 754 754 for (i = 0; i < ti->n_meters; i++) 755 - ovs_meter_free(ti->dp_meters[i]); 755 + ovs_meter_free(rcu_dereference_raw(ti->dp_meters[i])); 756 756 757 757 dp_meter_instance_free(ti); 758 758 }