From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754276AbcAMCY7 (ORCPT ); Tue, 12 Jan 2016 21:24:59 -0500 Received: from mail-pa0-f44.google.com ([209.85.220.44]:36319 "EHLO mail-pa0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752009AbcAMCY6 (ORCPT ); Tue, 12 Jan 2016 21:24:58 -0500 Message-ID: <1452651896.1223.45.camel@edumazet-glaptop2.roam.corp.google.com> Subject: Re: [PATCH v2 net-next 3/4] bpf: bpf_htab: Add syscall to iterate percpu value of a key From: Eric Dumazet To: Martin KaFai Lau Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Alexei Starovoitov , Ming Lei , FB Kernel Team Date: Tue, 12 Jan 2016 18:24:56 -0800 In-Reply-To: <1452586852-1575604-4-git-send-email-kafai@fb.com> References: <1452586852-1575604-1-git-send-email-kafai@fb.com> <1452586852-1575604-4-git-send-email-kafai@fb.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.10.4-0ubuntu2 Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2016-01-12 at 00:20 -0800, Martin KaFai Lau wrote: > Add map_lookup_percpu_elem() syscall to lookup value > of a particular CPU. ... > +static int map_lookup_percpu_elem(union bpf_attr *attr) > +{ > + void __user *ukey = u64_to_ptr(attr->key); > + void __user *uvalue = u64_to_ptr(attr->value); > + u32 __user ucpu = attr->cpu; > + int ufd = attr->map_fd; > + struct percpu_map_value_info value_info; > + struct bpf_map *map; > + void *key, *value; > + struct fd f; > + int err; > + > + if (CHECK_ATTR(BPF_MAP_LOOKUP_PERCPU_ELEM) || > + ucpu >= num_possible_cpus()) > + return -EINVAL; Arg, a num_possible_cpus() wrong call. You probably want to use (ucpu >= nr_cpu_ids) hint : You can have hosts with 2 possibles cpus, CPU0 and CPU2 So the userland loop in your changelog is wrong.