On Mon, Aug 12, 2024 at 10:24 AM Kui-Feng Lee <sinquersw@xxxxxxxxx> wrote: > > > >> +static int bpf_map_update_value(struct bpf_map *map, struct file *map_file, > >> + void *key, void *value, __u64 flags) > >> +{ > >> + int err; > >> + > >> + if (flags & BPF_FROM_USER) { > > > > there shouldn't be a need for this extra flag. > > map->record has the info whether uptr is present or not. > > The BPF_FROM_USER flag is used to support updating map values from BPF > programs as well. Although BPF programs can udpate map values, I > don't want the values of uptrs to be changed by the BPF programs. > > Should we just forbid the BPF programs to udpate the map values having > uptrs in them? hmm. map_update_elem() is disallowed from bpf prog. case BPF_MAP_TYPE_TASK_STORAGE: if (func_id != BPF_FUNC_task_storage_get && func_id != BPF_FUNC_task_storage_delete && func_id != BPF_FUNC_kptr_xchg) goto error;