All of lore.kernel.org
 help / color / mirror / Atom feed
* [perf:tmp.bpf/sign 2/3] kernel/bpf/syscall.c:2253:29: error: too many arguments to function call, expected single argument 'attr', have 2 arguments
@ 2020-10-07 22:36 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-10-07 22:36 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 7770 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tmp.bpf/sign
head:   8557905cdcfad6d1bb100cc12e2a4f6bcc6b3e1a
commit: a8c35674f209361e4b9fb3e2c8c3a93d29bf1d9b [2/3] bpf: Add support for checking BPF program signatures
config: x86_64-randconfig-a012-20201008 (attached as .config)
compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project 4d1d8ae7100ec3c7e1709addb7b3ec6f9ad0b44f)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install x86_64 cross compiling tool for clang build
        # apt-get install binutils-x86-64-linux-gnu
        # https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git/commit/?id=a8c35674f209361e4b9fb3e2c8c3a93d29bf1d9b
        git remote add perf https://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git
        git fetch --no-tags perf tmp.bpf/sign
        git checkout a8c35674f209361e4b9fb3e2c8c3a93d29bf1d9b
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> kernel/bpf/syscall.c:2253:29: error: too many arguments to function call, expected single argument 'attr', have 2 arguments
                   err = bpf_sig_check(prog, attr);
                         ~~~~~~~~~~~~~       ^~~~
   kernel/bpf/syscall.c:2156:12: note: 'bpf_sig_check' declared here
   static int bpf_sig_check(union bpf_attr *attr)
              ^
   1 error generated.

vim +/attr +2253 kernel/bpf/syscall.c

  2164	
  2165	static int bpf_prog_load(union bpf_attr *attr, union bpf_attr __user *uattr)
  2166	{
  2167		enum bpf_prog_type type = attr->prog_type;
  2168		struct bpf_prog *prog;
  2169		int err;
  2170		char license[128];
  2171		bool is_gpl;
  2172	
  2173		if (CHECK_ATTR(BPF_PROG_LOAD))
  2174			return -EINVAL;
  2175	
  2176		if (attr->prog_flags & ~(BPF_F_STRICT_ALIGNMENT |
  2177					 BPF_F_ANY_ALIGNMENT |
  2178					 BPF_F_TEST_STATE_FREQ |
  2179					 BPF_F_SLEEPABLE |
  2180					 BPF_F_TEST_RND_HI32))
  2181			return -EINVAL;
  2182	
  2183		if (!IS_ENABLED(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) &&
  2184		    (attr->prog_flags & BPF_F_ANY_ALIGNMENT) &&
  2185		    !bpf_capable())
  2186			return -EPERM;
  2187	
  2188		/* copy eBPF program license from user space */
  2189		if (strncpy_from_user(license, u64_to_user_ptr(attr->license),
  2190				      sizeof(license) - 1) < 0)
  2191			return -EFAULT;
  2192		license[sizeof(license) - 1] = 0;
  2193	
  2194		/* eBPF programs must be GPL compatible to use GPL-ed functions */
  2195		is_gpl = license_is_gpl_compatible(license);
  2196	
  2197		if (attr->insn_cnt == 0 ||
  2198		    attr->insn_cnt > (bpf_capable() ? BPF_COMPLEXITY_LIMIT_INSNS : BPF_MAXINSNS))
  2199			return -E2BIG;
  2200		if (type != BPF_PROG_TYPE_SOCKET_FILTER &&
  2201		    type != BPF_PROG_TYPE_CGROUP_SKB &&
  2202		    !bpf_capable())
  2203			return -EPERM;
  2204	
  2205		if (is_net_admin_prog_type(type) && !capable(CAP_NET_ADMIN) && !capable(CAP_SYS_ADMIN))
  2206			return -EPERM;
  2207		if (is_perfmon_prog_type(type) && !perfmon_capable())
  2208			return -EPERM;
  2209	
  2210		bpf_prog_load_fixup_attach_type(attr);
  2211		if (bpf_prog_load_check_attach(type, attr->expected_attach_type,
  2212					       attr->attach_btf_id,
  2213					       attr->attach_prog_fd))
  2214			return -EINVAL;
  2215	
  2216		/* plain bpf_prog allocation */
  2217		prog = bpf_prog_alloc(bpf_prog_size(attr->insn_cnt), GFP_USER);
  2218		if (!prog)
  2219			return -ENOMEM;
  2220	
  2221		prog->expected_attach_type = attr->expected_attach_type;
  2222		prog->aux->attach_btf_id = attr->attach_btf_id;
  2223		if (attr->attach_prog_fd) {
  2224			struct bpf_prog *dst_prog;
  2225	
  2226			dst_prog = bpf_prog_get(attr->attach_prog_fd);
  2227			if (IS_ERR(dst_prog)) {
  2228				err = PTR_ERR(dst_prog);
  2229				goto free_prog_nouncharge;
  2230			}
  2231			prog->aux->dst_prog = dst_prog;
  2232		}
  2233	
  2234		prog->aux->offload_requested = !!attr->prog_ifindex;
  2235		prog->aux->sleepable = attr->prog_flags & BPF_F_SLEEPABLE;
  2236	
  2237		err = security_bpf_prog_alloc(prog->aux);
  2238		if (err)
  2239			goto free_prog_nouncharge;
  2240	
  2241		err = bpf_prog_charge_memlock(prog);
  2242		if (err)
  2243			goto free_prog_sec;
  2244	
  2245		prog->len = attr->insn_cnt;
  2246	
  2247		err = -EFAULT;
  2248		if (copy_from_user(prog->insns, u64_to_user_ptr(attr->insns),
  2249				   bpf_prog_insn_size(prog)) != 0)
  2250			goto free_prog;
  2251	
  2252		if (attr->prog_sig_len > 0) {
> 2253			err = bpf_sig_check(prog, attr);
  2254			if (err)
  2255				goto free_prog;
  2256		}
  2257	
  2258		prog->orig_prog = NULL;
  2259		prog->jited = 0;
  2260	
  2261		atomic64_set(&prog->aux->refcnt, 1);
  2262		prog->gpl_compatible = is_gpl ? 1 : 0;
  2263	
  2264		if (bpf_prog_is_dev_bound(prog->aux)) {
  2265			err = bpf_prog_offload_init(prog, attr);
  2266			if (err)
  2267				goto free_prog;
  2268		}
  2269	
  2270		/* find program type: socket_filter vs tracing_filter */
  2271		err = find_prog_type(type, prog);
  2272		if (err < 0)
  2273			goto free_prog;
  2274	
  2275		prog->aux->load_time = ktime_get_boottime_ns();
  2276		err = bpf_obj_name_cpy(prog->aux->name, attr->prog_name,
  2277				       sizeof(attr->prog_name));
  2278		if (err < 0)
  2279			goto free_prog;
  2280	
  2281		/* run eBPF verifier */
  2282		err = bpf_check(&prog, attr, uattr);
  2283		if (err < 0)
  2284			goto free_used_maps;
  2285	
  2286		prog = bpf_prog_select_runtime(prog, &err);
  2287		if (err < 0)
  2288			goto free_used_maps;
  2289	
  2290		err = bpf_prog_alloc_id(prog);
  2291		if (err)
  2292			goto free_used_maps;
  2293	
  2294		/* Upon success of bpf_prog_alloc_id(), the BPF prog is
  2295		 * effectively publicly exposed. However, retrieving via
  2296		 * bpf_prog_get_fd_by_id() will take another reference,
  2297		 * therefore it cannot be gone underneath us.
  2298		 *
  2299		 * Only for the time /after/ successful bpf_prog_new_fd()
  2300		 * and before returning to userspace, we might just hold
  2301		 * one reference and any parallel close on that fd could
  2302		 * rip everything out. Hence, below notifications must
  2303		 * happen before bpf_prog_new_fd().
  2304		 *
  2305		 * Also, any failure handling from this point onwards must
  2306		 * be using bpf_prog_put() given the program is exposed.
  2307		 */
  2308		bpf_prog_kallsyms_add(prog);
  2309		perf_event_bpf_event(prog, PERF_BPF_EVENT_PROG_LOAD, 0);
  2310		bpf_audit_prog(prog, BPF_AUDIT_LOAD);
  2311	
  2312		err = bpf_prog_new_fd(prog);
  2313		if (err < 0)
  2314			bpf_prog_put(prog);
  2315		return err;
  2316	
  2317	free_used_maps:
  2318		/* In case we have subprogs, we need to wait for a grace
  2319		 * period before we can tear down JIT memory since symbols
  2320		 * are already exposed under kallsyms.
  2321		 */
  2322		__bpf_prog_put_noref(prog, prog->aux->func_cnt);
  2323		return err;
  2324	free_prog:
  2325		bpf_prog_uncharge_memlock(prog);
  2326	free_prog_sec:
  2327		security_bpf_prog_free(prog->aux);
  2328	free_prog_nouncharge:
  2329		bpf_prog_free(prog);
  2330		return err;
  2331	}
  2332	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 33548 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-10-07 22:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-07 22:36 [perf:tmp.bpf/sign 2/3] kernel/bpf/syscall.c:2253:29: error: too many arguments to function call, expected single argument 'attr', have 2 arguments kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.