Hi Jesper, I love your patch! Perhaps something to improve: [auto build test WARNING on bpf/master] url: https://github.com/0day-ci/linux/commits/Jesper-Dangaard-Brouer/bpf-avoid-using-returning-file-descriptor-value-zero/20200609-005457 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git master config: um-allmodconfig (attached as .config) compiler: gcc-9 (Debian 9.3.0-13) 9.3.0 reproduce (this is a W=1 build): # save the attached .config to linux build tree make W=1 ARCH=um If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot All warnings (new ones prefixed by >>, old ones prefixed by <<): cc1: warning: arch/um/include/uapi: No such file or directory [-Wmissing-include-dirs] In file included from include/linux/kernel.h:11, from include/linux/list.h:9, from include/linux/timer.h:5, from include/linux/workqueue.h:9, from include/linux/bpf.h:9, from kernel/bpf/syscall.c:4: include/asm-generic/fixmap.h: In function 'fix_to_virt': include/asm-generic/fixmap.h:32:19: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits] 32 | BUILD_BUG_ON(idx >= __end_of_fixed_addresses); | ^~ include/linux/compiler.h:383:9: note: in definition of macro '__compiletime_assert' 383 | if (!(condition)) | ^~~~~~~~~ include/linux/compiler.h:403:2: note: in expansion of macro '_compiletime_assert' 403 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__) | ^~~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert' 39 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg) | ^~~~~~~~~~~~~~~~~~ include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG' 50 | BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition) | ^~~~~~~~~~~~~~~~ include/asm-generic/fixmap.h:32:2: note: in expansion of macro 'BUILD_BUG_ON' 32 | BUILD_BUG_ON(idx >= __end_of_fixed_addresses); | ^~~~~~~~~~~~ In file included from include/linux/uaccess.h:11, from include/linux/sched/task.h:11, from include/linux/sched/signal.h:9, from include/linux/rcuwait.h:6, from include/linux/percpu-rwsem.h:7, from include/linux/fs.h:34, from include/linux/huge_mm.h:8, from include/linux/mm.h:675, from include/linux/kallsyms.h:12, from include/linux/bpf.h:21, from kernel/bpf/syscall.c:4: arch/um/include/asm/uaccess.h: In function '__access_ok': arch/um/include/asm/uaccess.h:17:29: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits] 17 | (((unsigned long) (addr) >= FIXADDR_USER_START) && | ^~ arch/um/include/asm/uaccess.h:45:3: note: in expansion of macro '__access_ok_vsyscall' 45 | __access_ok_vsyscall(addr, size) || | ^~~~~~~~~~~~~~~~~~~~ kernel/bpf/syscall.c: At top level: >> kernel/bpf/syscall.c:692:5: warning: no previous prototype for 'bpf_anon_inode_getfd' [-Wmissing-prototypes] 692 | int bpf_anon_inode_getfd(const char *name, const struct file_operations *fops, | ^~~~~~~~~~~~~~~~~~~~ vim +/bpf_anon_inode_getfd +692 kernel/bpf/syscall.c 690 691 /* Code is similar to anon_inode_getfd(), except starts at FD 1 */ > 692 int bpf_anon_inode_getfd(const char *name, const struct file_operations *fops, 693 void *priv, int flags) 694 { 695 int error, fd; 696 struct file *file; 697 698 error = alloc_fd(1, flags); 699 if (error < 0) 700 return error; 701 fd = error; 702 703 file = anon_inode_getfile(name, fops, priv, flags); 704 if (IS_ERR(file)) { 705 error = PTR_ERR(file); 706 goto err_put_unused_fd; 707 } 708 fd_install(fd, file); 709 710 return fd; 711 712 err_put_unused_fd: 713 put_unused_fd(fd); 714 return error; 715 } 716 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org