Messages in this thread | | | From | Alexei Starovoitov <> | Date | Sun, 29 Jul 2018 18:57:06 +0300 | Subject | Re: [RFC] Add BPF_SYNCHRONIZE bpf(2) command |
| |
On Fri, Jul 27, 2018 at 10:17 PM, Daniel Colascione <dancol@google.com> wrote: > On Sat, Jul 14, 2018 at 11:18 AM, Joel Fernandes <joel@joelfernandes.org> > wrote: >> >> By the way just curious I was briefly going through kernel/bpf/arraymap.c. >> How are you protecting against load-store tearing of values of array map >> updates/lookups? >> >> For example, if userspace reads an array map at a particular index, while >> another CPU is updating it, then userspace can read partial values / >> half-updated values right? Since rcu_read_lock is in use, I was hoping to >> find something like rcu_assign_pointer there to protect readers against >> concurrent updates. Thanks for any clarification. > > > I'm also curious about the answer to this question.
i'm not sure I understand the question. bpf_map_type_array is a C-like array. There is no locking of elements. If single program executing on two cpus and accesses the same value it will collide. Same goes for user space vs prog parallel access. bpf long_memcpy is an attempt to provide minimal level of automicity when values are aligned and size==long.
| |