diff mbox series

[bpf-next,1/2] bpf: Change error code when ops is NULL

Message ID 20200422083010.28000-2-maowenan@huawei.com
State Changes Requested
Delegated to: BPF Maintainers
Headers show
Series Change return code if failed to load object | expand

Commit Message

maowenan April 22, 2020, 8:30 a.m. UTC
There is one error printed when use type
BPF_MAP_TYPE_SOCKMAP to create map:
libbpf: failed to create map (name: 'sock_map'): Invalid argument(-22)

This is because CONFIG_BPF_STREAM_PARSER is not set, and
bpf_map_types[type] return invalid ops. It is not clear
to show the cause of config missing with return code -EINVAL,
so add pr_warn() and change error code to describe the reason.

Signed-off-by: Mao Wenan <maowenan@huawei.com>
---
 kernel/bpf/syscall.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

Comments

Dan Carpenter April 22, 2020, 9:33 a.m. UTC | #1
On Wed, Apr 22, 2020 at 04:30:09PM +0800, Mao Wenan wrote:
> There is one error printed when use type
> BPF_MAP_TYPE_SOCKMAP to create map:
> libbpf: failed to create map (name: 'sock_map'): Invalid argument(-22)
> 
> This is because CONFIG_BPF_STREAM_PARSER is not set, and
> bpf_map_types[type] return invalid ops. It is not clear
> to show the cause of config missing with return code -EINVAL,
> so add pr_warn() and change error code to describe the reason.

Since you're going to have to redo the commit any way, maybe you should
put the line breaks at 72 characters.  I think you're using 65 character
line breaks, but that's only for the Subject.

> 
> Signed-off-by: Mao Wenan <maowenan@huawei.com>
> ---
>  kernel/bpf/syscall.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
> index d85f37239540..f67bc063bf75 100644
> --- a/kernel/bpf/syscall.c
> +++ b/kernel/bpf/syscall.c
> @@ -112,9 +112,11 @@ static struct bpf_map *find_and_alloc_map(union bpf_attr *attr)
>  		return ERR_PTR(-EINVAL);
>  	type = array_index_nospec(type, ARRAY_SIZE(bpf_map_types));
>  	ops = bpf_map_types[type];
> -	if (!ops)
> -		return ERR_PTR(-EINVAL);
> -
> +	if (!ops) {
> +		pr_warn("map type %d not supported or
> +			 kernel config not opened\n", type);

This pr_warn() will be badly formatted in dmesg because of the new line
and the tabs.  I tried to add a checkpatch.pl warning for this but maybe
it only works with -f?...

regards,
dan carpenter
maowenan April 23, 2020, 3:33 a.m. UTC | #2
The first patch change return code from -EINVAL to -EOPNOTSUPP,
the second patch quote the err value returned by bpf_object__load().

v2: Adjust line breaks at 72 characters for commit log, and pr_warn alignment as suggested by dan carpenter. For second patch, add Acked-by tag as well.

Mao Wenan (2):
  bpf: Change error code when ops is NULL
  libbpf: Return err if bpf_object__load failed

 kernel/bpf/syscall.c   | 7 ++++---
 tools/lib/bpf/libbpf.c | 2 +-
 2 files changed, 5 insertions(+), 4 deletions(-)
kernel test robot April 24, 2020, 5:10 a.m. UTC | #3
Hi Mao,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on bpf-next/master]
[also build test ERROR on bpf/master net/master net-next/master v5.7-rc2 next-20200423]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Mao-Wenan/Change-return-code-if-failed-to-load-object/20200424-025339
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: c6x-allyesconfig (attached as .config)
compiler: c6x-elf-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=c6x 

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

All error/warnings (new ones prefixed by >>):

   kernel/bpf/syscall.c: In function 'find_and_alloc_map':
>> kernel/bpf/syscall.c:116:11: warning: missing terminating " character
     116 |   pr_warn("map type %d not supported or
         |           ^
   kernel/bpf/syscall.c:117:31: warning: missing terminating " character
     117 |     kernel config not opened\n", type);
         |                               ^
   In file included from kernel/bpf/syscall.c:1551:
>> include/linux/bpf_types.h:120: error: unterminated argument list invoking macro "pr_warn"
     120 | #endif
         | 
>> kernel/bpf/syscall.c:116:3: error: 'pr_warn' undeclared (first use in this function)
     116 |   pr_warn("map type %d not supported or
         |   ^~~~~~~
   kernel/bpf/syscall.c:116:3: note: each undeclared identifier is reported only once for each function it appears in
>> kernel/bpf/syscall.c:116:10: error: expected ';' before '}' token
     116 |   pr_warn("map type %d not supported or
         |          ^
         |          ;
   ......
    1554 | };
         | ~         
>> kernel/bpf/syscall.c:1556:12: error: invalid storage class for function 'find_prog_type'
    1556 | static int find_prog_type(enum bpf_prog_type type, struct bpf_prog *prog)
         |            ^~~~~~~~~~~~~~
   In file included 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:
   kernel/bpf/syscall.c: In function 'find_prog_type':
>> kernel/bpf/syscall.c:1560:25: error: 'bpf_prog_types' undeclared (first use in this function); did you mean 'bpf_prog_type'?
    1560 |  if (type >= ARRAY_SIZE(bpf_prog_types))
         |                         ^~~~~~~~~~~~~~
   include/linux/kernel.h:47:33: note: in definition of macro 'ARRAY_SIZE'
      47 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
         |                                 ^~~
   In file included from include/linux/bits.h:23,
                    from include/linux/bitops.h:5,
                    from include/linux/kernel.h:12,
                    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/linux/build_bug.h:16:51: error: bit-field '<anonymous>' width not an integer constant
      16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))
         |                                                   ^
   include/linux/compiler.h:357:28: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
     357 | #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
         |                            ^~~~~~~~~~~~~~~~~
   include/linux/kernel.h:47:59: note: in expansion of macro '__must_be_array'
      47 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
         |                                                           ^~~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1560:14: note: in expansion of macro 'ARRAY_SIZE'
    1560 |  if (type >= ARRAY_SIZE(bpf_prog_types))
         |              ^~~~~~~~~~
   In file included from include/linux/fdtable.h:13,
                    from kernel/bpf/syscall.c:14:
   include/linux/build_bug.h:16:51: error: bit-field '<anonymous>' width not an integer constant
      16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))
         |                                                   ^
   include/linux/nospec.h:52:9: note: in definition of macro 'array_index_nospec'
      52 |  typeof(size) _s = (size);     \
         |         ^~~~
   include/linux/compiler.h:357:28: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
     357 | #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
         |                            ^~~~~~~~~~~~~~~~~
   include/linux/kernel.h:47:59: note: in expansion of macro '__must_be_array'
      47 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
         |                                                           ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1562:34: note: in expansion of macro 'ARRAY_SIZE'
    1562 |  type = array_index_nospec(type, ARRAY_SIZE(bpf_prog_types));
         |                                  ^~~~~~~~~~
   include/linux/build_bug.h:16:51: error: bit-field '<anonymous>' width not an integer constant
      16 | #define BUILD_BUG_ON_ZERO(e) ((int)(sizeof(struct { int:(-!!(e)); })))
         |                                                   ^
   include/linux/nospec.h:52:21: note: in definition of macro 'array_index_nospec'
      52 |  typeof(size) _s = (size);     \
         |                     ^~~~
   include/linux/compiler.h:357:28: note: in expansion of macro 'BUILD_BUG_ON_ZERO'
     357 | #define __must_be_array(a) BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
         |                            ^~~~~~~~~~~~~~~~~
   include/linux/kernel.h:47:59: note: in expansion of macro '__must_be_array'
      47 | #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]) + __must_be_array(arr))
         |                                                           ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1562:34: note: in expansion of macro 'ARRAY_SIZE'
    1562 |  type = array_index_nospec(type, ARRAY_SIZE(bpf_prog_types));
         |                                  ^~~~~~~~~~
   kernel/bpf/syscall.c: In function 'find_and_alloc_map':
>> kernel/bpf/syscall.c:1556:1: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
    1556 | static int find_prog_type(enum bpf_prog_type type, struct bpf_prog *prog)
         | ^~~~~~
>> kernel/bpf/syscall.c:1586:13: error: invalid storage class for function 'bpf_audit_prog'
    1586 | static void bpf_audit_prog(const struct bpf_prog *prog, unsigned int op)
         |             ^~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1627:12: error: invalid storage class for function 'bpf_prog_charge_memlock'
    1627 | static int bpf_prog_charge_memlock(struct bpf_prog *prog)
         |            ^~~~~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1642:13: error: invalid storage class for function 'bpf_prog_uncharge_memlock'
    1642 | static void bpf_prog_uncharge_memlock(struct bpf_prog *prog)
         |             ^~~~~~~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1650:12: error: invalid storage class for function 'bpf_prog_alloc_id'
    1650 | static int bpf_prog_alloc_id(struct bpf_prog *prog)
         |            ^~~~~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1693:13: error: invalid storage class for function '__bpf_prog_put_rcu'
    1693 | static void __bpf_prog_put_rcu(struct rcu_head *rcu)
         |             ^~~~~~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1704:13: error: invalid storage class for function '__bpf_prog_put_noref'
    1704 | static void __bpf_prog_put_noref(struct bpf_prog *prog, bool deferred)
         |             ^~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1716:13: error: invalid storage class for function '__bpf_prog_put'
    1716 | static void __bpf_prog_put(struct bpf_prog *prog, bool do_idr_lock)
         |             ^~~~~~~~~~~~~~
   In file included from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    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:
>> kernel/bpf/syscall.c:1731:19: error: non-static declaration of 'bpf_prog_put' follows static declaration
    1731 | EXPORT_SYMBOL_GPL(bpf_prog_put);
         |                   ^~~~~~~~~~~~
   include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL'
      98 |  extern typeof(sym) sym;       \
         |                     ^~~
   include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
     155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
         |                                  ^~~~~~~~~~~~~~~
   include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
     159 | #define EXPORT_SYMBOL_GPL(sym)  _EXPORT_SYMBOL(sym, "_gpl")
         |                                 ^~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1731:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
    1731 | EXPORT_SYMBOL_GPL(bpf_prog_put);
         | ^~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1727:6: note: previous definition of 'bpf_prog_put' was here
    1727 | void bpf_prog_put(struct bpf_prog *prog)
         |      ^~~~~~~~~~~~
   In file included from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    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/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
      67 |  static const struct kernel_symbol __ksymtab_##sym  \
         |  ^~~~~~
   include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
     108 |  __KSYMTAB_ENTRY(sym, sec)
         |  ^~~~~~~~~~~~~~~
   include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
     147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
         |                                       ^~~~~~~~~~~~~~~~
   include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
     155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
         |                                  ^~~~~~~~~~~~~~~
   include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
     159 | #define EXPORT_SYMBOL_GPL(sym)  _EXPORT_SYMBOL(sym, "_gpl")
         |                                 ^~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1731:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
    1731 | EXPORT_SYMBOL_GPL(bpf_prog_put);
         | ^~~~~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1733:12: error: invalid storage class for function 'bpf_prog_release'
    1733 | static int bpf_prog_release(struct inode *inode, struct file *filp)
         |            ^~~~~~~~~~~~~~~~
>> kernel/bpf/syscall.c:1741:13: error: invalid storage class for function 'bpf_prog_get_stats'
    1741 | static void bpf_prog_get_stats(const struct bpf_prog *prog,
         |             ^~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1766:13: error: invalid storage class for function 'bpf_prog_show_fdinfo'
    1766 | static void bpf_prog_show_fdinfo(struct seq_file *m, struct file *filp)
         |             ^~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1797:11: error: 'bpf_dummy_read' undeclared (first use in this function)
    1797 |  .read  = bpf_dummy_read,
         |           ^~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1798:12: error: 'bpf_dummy_write' undeclared (first use in this function)
    1798 |  .write  = bpf_dummy_write,
         |            ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1813:25: error: invalid storage class for function '____bpf_prog_get'
    1813 | static struct bpf_prog *____bpf_prog_get(struct fd f)
         |                         ^~~~~~~~~~~~~~~~
   In file included from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    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:
   kernel/bpf/syscall.c:1829:19: error: non-static declaration of 'bpf_prog_add' follows static declaration
    1829 | EXPORT_SYMBOL_GPL(bpf_prog_add);
         |                   ^~~~~~~~~~~~
   include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL'
      98 |  extern typeof(sym) sym;       \
         |                     ^~~
   include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
     155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
         |                                  ^~~~~~~~~~~~~~~
   include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
     159 | #define EXPORT_SYMBOL_GPL(sym)  _EXPORT_SYMBOL(sym, "_gpl")
         |                                 ^~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1829:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
    1829 | EXPORT_SYMBOL_GPL(bpf_prog_add);
         | ^~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1825:6: note: previous definition of 'bpf_prog_add' was here
    1825 | void bpf_prog_add(struct bpf_prog *prog, int i)
         |      ^~~~~~~~~~~~
   In file included from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    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/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
      67 |  static const struct kernel_symbol __ksymtab_##sym  \
         |  ^~~~~~
   include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
     108 |  __KSYMTAB_ENTRY(sym, sec)
         |  ^~~~~~~~~~~~~~~
   include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
     147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
         |                                       ^~~~~~~~~~~~~~~~
   include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
     155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
         |                                  ^~~~~~~~~~~~~~~
   include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
     159 | #define EXPORT_SYMBOL_GPL(sym)  _EXPORT_SYMBOL(sym, "_gpl")
         |                                 ^~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1829:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
    1829 | EXPORT_SYMBOL_GPL(bpf_prog_add);
         | ^~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1840:19: error: non-static declaration of 'bpf_prog_sub' follows static declaration
    1840 | EXPORT_SYMBOL_GPL(bpf_prog_sub);
         |                   ^~~~~~~~~~~~
   include/linux/export.h:98:21: note: in definition of macro '___EXPORT_SYMBOL'
      98 |  extern typeof(sym) sym;       \
         |                     ^~~
   include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
     155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")
         |                                  ^~~~~~~~~~~~~~~
   include/linux/export.h:159:33: note: in expansion of macro '_EXPORT_SYMBOL'
     159 | #define EXPORT_SYMBOL_GPL(sym)  _EXPORT_SYMBOL(sym, "_gpl")
         |                                 ^~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1840:1: note: in expansion of macro 'EXPORT_SYMBOL_GPL'
    1840 | EXPORT_SYMBOL_GPL(bpf_prog_sub);
         | ^~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:1831:6: note: previous definition of 'bpf_prog_sub' was here
    1831 | void bpf_prog_sub(struct bpf_prog *prog, int i)
         |      ^~~~~~~~~~~~
   In file included from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    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/linux/export.h:67:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
      67 |  static const struct kernel_symbol __ksymtab_##sym  \
         |  ^~~~~~
   include/linux/export.h:108:2: note: in expansion of macro '__KSYMTAB_ENTRY'
     108 |  __KSYMTAB_ENTRY(sym, sec)
         |  ^~~~~~~~~~~~~~~
   include/linux/export.h:147:39: note: in expansion of macro '___EXPORT_SYMBOL'
     147 | #define __EXPORT_SYMBOL(sym, sec, ns) ___EXPORT_SYMBOL(sym, sec, ns)
         |                                       ^~~~~~~~~~~~~~~~
   include/linux/export.h:155:34: note: in expansion of macro '__EXPORT_SYMBOL'
     155 | #define _EXPORT_SYMBOL(sym, sec) __EXPORT_SYMBOL(sym, sec, "")

vim +/pr_warn +120 include/linux/bpf_types.h

40077e0cf62206 Johannes Berg          2017-04-11   78  
40077e0cf62206 Johannes Berg          2017-04-11   79  BPF_MAP_TYPE(BPF_MAP_TYPE_ARRAY, array_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   80  BPF_MAP_TYPE(BPF_MAP_TYPE_PERCPU_ARRAY, percpu_array_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   81  BPF_MAP_TYPE(BPF_MAP_TYPE_PROG_ARRAY, prog_array_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   82  BPF_MAP_TYPE(BPF_MAP_TYPE_PERF_EVENT_ARRAY, perf_event_array_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   83  #ifdef CONFIG_CGROUPS
40077e0cf62206 Johannes Berg          2017-04-11   84  BPF_MAP_TYPE(BPF_MAP_TYPE_CGROUP_ARRAY, cgroup_array_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   85  #endif
de9cbbaadba5ad Roman Gushchin         2018-08-02   86  #ifdef CONFIG_CGROUP_BPF
de9cbbaadba5ad Roman Gushchin         2018-08-02   87  BPF_MAP_TYPE(BPF_MAP_TYPE_CGROUP_STORAGE, cgroup_storage_map_ops)
b741f1630346de Roman Gushchin         2018-09-28   88  BPF_MAP_TYPE(BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE, cgroup_storage_map_ops)
de9cbbaadba5ad Roman Gushchin         2018-08-02   89  #endif
40077e0cf62206 Johannes Berg          2017-04-11   90  BPF_MAP_TYPE(BPF_MAP_TYPE_HASH, htab_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   91  BPF_MAP_TYPE(BPF_MAP_TYPE_PERCPU_HASH, htab_percpu_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   92  BPF_MAP_TYPE(BPF_MAP_TYPE_LRU_HASH, htab_lru_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   93  BPF_MAP_TYPE(BPF_MAP_TYPE_LRU_PERCPU_HASH, htab_lru_percpu_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   94  BPF_MAP_TYPE(BPF_MAP_TYPE_LPM_TRIE, trie_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   95  #ifdef CONFIG_PERF_EVENTS
144991602e6a14 Mauricio Vasquez B     2018-10-18   96  BPF_MAP_TYPE(BPF_MAP_TYPE_STACK_TRACE, stack_trace_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   97  #endif
40077e0cf62206 Johannes Berg          2017-04-11   98  BPF_MAP_TYPE(BPF_MAP_TYPE_ARRAY_OF_MAPS, array_of_maps_map_ops)
40077e0cf62206 Johannes Berg          2017-04-11   99  BPF_MAP_TYPE(BPF_MAP_TYPE_HASH_OF_MAPS, htab_of_maps_map_ops)
546ac1ffb70d25 John Fastabend         2017-07-17  100  #ifdef CONFIG_NET
546ac1ffb70d25 John Fastabend         2017-07-17  101  BPF_MAP_TYPE(BPF_MAP_TYPE_DEVMAP, dev_map_ops)
6f9d451ab1a337 Toke Høiland-Jørgensen 2019-07-26  102  BPF_MAP_TYPE(BPF_MAP_TYPE_DEVMAP_HASH, dev_map_hash_ops)
6ac99e8f23d4b1 Martin KaFai Lau       2019-04-26  103  BPF_MAP_TYPE(BPF_MAP_TYPE_SK_STORAGE, sk_storage_map_ops)
604326b41a6fb9 Daniel Borkmann        2018-10-13  104  #if defined(CONFIG_BPF_STREAM_PARSER)
174a79ff9515f4 John Fastabend         2017-08-15  105  BPF_MAP_TYPE(BPF_MAP_TYPE_SOCKMAP, sock_map_ops)
81110384441a59 John Fastabend         2018-05-14  106  BPF_MAP_TYPE(BPF_MAP_TYPE_SOCKHASH, sock_hash_ops)
546ac1ffb70d25 John Fastabend         2017-07-17  107  #endif
6710e1126934d8 Jesper Dangaard Brouer 2017-10-16  108  BPF_MAP_TYPE(BPF_MAP_TYPE_CPUMAP, cpu_map_ops)
fbfc504a24f53f Björn Töpel            2018-05-02  109  #if defined(CONFIG_XDP_SOCKETS)
fbfc504a24f53f Björn Töpel            2018-05-02  110  BPF_MAP_TYPE(BPF_MAP_TYPE_XSKMAP, xsk_map_ops)
fbfc504a24f53f Björn Töpel            2018-05-02  111  #endif
5dc4c4b7d4e811 Martin KaFai Lau       2018-08-08  112  #ifdef CONFIG_INET
5dc4c4b7d4e811 Martin KaFai Lau       2018-08-08  113  BPF_MAP_TYPE(BPF_MAP_TYPE_REUSEPORT_SOCKARRAY, reuseport_array_ops)
5dc4c4b7d4e811 Martin KaFai Lau       2018-08-08  114  #endif
6bdc9c4c31c816 John Fastabend         2017-08-16  115  #endif
f1a2e44a3aeccb Mauricio Vasquez B     2018-10-18  116  BPF_MAP_TYPE(BPF_MAP_TYPE_QUEUE, queue_map_ops)
f1a2e44a3aeccb Mauricio Vasquez B     2018-10-18  117  BPF_MAP_TYPE(BPF_MAP_TYPE_STACK, stack_map_ops)
85d33df357b634 Martin KaFai Lau       2020-01-08  118  #if defined(CONFIG_BPF_JIT)
85d33df357b634 Martin KaFai Lau       2020-01-08  119  BPF_MAP_TYPE(BPF_MAP_TYPE_STRUCT_OPS, bpf_struct_ops_map_ops)
85d33df357b634 Martin KaFai Lau       2020-01-08 @120  #endif

:::::: The code at line 120 was first introduced by commit
:::::: 85d33df357b634649ddbe0a20fd2d0fc5732c3cb bpf: Introduce BPF_MAP_TYPE_STRUCT_OPS

:::::: TO: Martin KaFai Lau <kafai@fb.com>
:::::: CC: Alexei Starovoitov <ast@kernel.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
kernel test robot April 24, 2020, 5:18 a.m. UTC | #4
Hi Mao,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on bpf-next/master]
[also build test ERROR on bpf/master net/master net-next/master v5.7-rc2 next-20200423]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Mao-Wenan/Change-return-code-if-failed-to-load-object/20200424-025339
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
config: sh-allmodconfig (attached as .config)
compiler: sh4-linux-gcc (GCC) 9.3.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day GCC_VERSION=9.3.0 make.cross ARCH=sh 

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

All error/warnings (new ones prefixed by >>):

    2452 | static const struct bpf_link_ops bpf_raw_tp_lops = {
         |                                  ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2256:34: note: previous declaration of 'bpf_raw_tp_lops' was here
    2256 | static const struct bpf_link_ops bpf_raw_tp_lops;
         |                                  ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2453:13: error: initializer element is not constant
    2453 |  .release = bpf_raw_tp_link_release,
         |             ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2453:13: note: (near initialization for 'bpf_raw_tp_lops.release')
   kernel/bpf/syscall.c:2454:13: error: initializer element is not constant
    2454 |  .dealloc = bpf_raw_tp_link_dealloc,
         |             ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2454:13: note: (near initialization for 'bpf_raw_tp_lops.dealloc')
   kernel/bpf/syscall.c:2459:12: error: invalid storage class for function 'bpf_raw_tracepoint_open'
    2459 | static int bpf_raw_tracepoint_open(const union bpf_attr *attr)
         |            ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2546:12: error: invalid storage class for function 'bpf_prog_attach_check_attach_type'
    2546 | static int bpf_prog_attach_check_attach_type(const struct bpf_prog *prog,
         |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2564:1: error: invalid storage class for function 'attach_type_to_prog_type'
    2564 | attach_type_to_prog_type(enum bpf_attach_type attach_type)
         | ^~~~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2612:12: error: invalid storage class for function 'bpf_prog_attach'
    2612 | static int bpf_prog_attach(const union bpf_attr *attr)
         |            ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2671:12: error: invalid storage class for function 'bpf_prog_detach'
    2671 | static int bpf_prog_detach(const union bpf_attr *attr)
         |            ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2706:12: error: invalid storage class for function 'bpf_prog_query'
    2706 | static int bpf_prog_query(const union bpf_attr *attr,
         |            ^~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2747:12: error: invalid storage class for function 'bpf_prog_test_run'
    2747 | static int bpf_prog_test_run(const union bpf_attr *attr,
         |            ^~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2779:12: error: invalid storage class for function 'bpf_obj_get_next_id'
    2779 | static int bpf_obj_get_next_id(const union bpf_attr *attr,
         |            ^~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2824:12: error: invalid storage class for function 'bpf_prog_get_fd_by_id'
    2824 | static int bpf_prog_get_fd_by_id(const union bpf_attr *attr)
         |            ^~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2849:12: error: invalid storage class for function 'bpf_map_get_fd_by_id'
    2849 | static int bpf_map_get_fd_by_id(const union bpf_attr *attr)
         |            ^~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c: In function 'bpf_map_get_fd_by_id':
   kernel/bpf/syscall.c:2870:9: error: implicit declaration of function '__bpf_map_inc_not_zero'; did you mean 'bpf_map_inc_not_zero'? [-Werror=implicit-function-declaration]
    2870 |   map = __bpf_map_inc_not_zero(map, true);
         |         ^~~~~~~~~~~~~~~~~~~~~~
         |         bpf_map_inc_not_zero
   kernel/bpf/syscall.c:2870:7: warning: assignment to 'struct bpf_map *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
    2870 |   map = __bpf_map_inc_not_zero(map, true);
         |       ^
   kernel/bpf/syscall.c: In function 'find_and_alloc_map':
   kernel/bpf/syscall.c:2885:30: error: invalid storage class for function 'bpf_map_from_imm'
    2885 | static const struct bpf_map *bpf_map_from_imm(const struct bpf_prog *prog,
         |                              ^~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2909:25: error: invalid storage class for function 'bpf_insn_prepare_dump'
    2909 | static struct bpf_insn *bpf_insn_prepare_dump(const struct bpf_prog *prog)
         |                         ^~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2953:12: error: invalid storage class for function 'set_info_rec_size'
    2953 | static int set_info_rec_size(struct bpf_prog_info *info)
         |            ^~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:2984:12: error: invalid storage class for function 'bpf_prog_get_info_by_fd'
    2984 | static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
         |            ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3260:12: error: invalid storage class for function 'bpf_map_get_info_by_fd'
    3260 | static int bpf_map_get_info_by_fd(struct bpf_map *map,
         |            ^~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3303:12: error: invalid storage class for function 'bpf_btf_get_info_by_fd'
    3303 | static int bpf_btf_get_info_by_fd(struct btf *btf,
         |            ^~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3320:12: error: invalid storage class for function 'bpf_obj_get_info_by_fd'
    3320 | static int bpf_obj_get_info_by_fd(const union bpf_attr *attr,
         |            ^~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3351:12: error: invalid storage class for function 'bpf_btf_load'
    3351 | static int bpf_btf_load(const union bpf_attr *attr)
         |            ^~~~~~~~~~~~
   kernel/bpf/syscall.c:3364:12: error: invalid storage class for function 'bpf_btf_get_fd_by_id'
    3364 | static int bpf_btf_get_fd_by_id(const union bpf_attr *attr)
         |            ^~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3375:12: error: invalid storage class for function 'bpf_task_fd_query_copy'
    3375 | static int bpf_task_fd_query_copy(const union bpf_attr *attr,
         |            ^~~~~~~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3424:12: error: invalid storage class for function 'bpf_task_fd_query'
    3424 | static int bpf_task_fd_query(const union bpf_attr *attr,
         |            ^~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3519:12: error: invalid storage class for function 'bpf_map_do_batch'
    3519 | static int bpf_map_do_batch(const union bpf_attr *attr,
         |            ^~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c: In function 'bpf_map_do_batch':
   kernel/bpf/syscall.c:3538:8: error: implicit declaration of function 'map_get_sys_perms' [-Werror=implicit-function-declaration]
    3538 |      !(map_get_sys_perms(map, f) & FMODE_CAN_READ)) {
         |        ^~~~~~~~~~~~~~~~~
   kernel/bpf/syscall.c: In function 'find_and_alloc_map':
   kernel/bpf/syscall.c:3564:12: error: invalid storage class for function 'link_create'
    3564 | static int link_create(union bpf_attr *attr)
         |            ^~~~~~~~~~~
   kernel/bpf/syscall.c:3611:12: error: invalid storage class for function 'link_update'
    3611 | static int link_update(union bpf_attr *attr)
         |            ^~~~~~~~~~~
   In file included from kernel/bpf/syscall.c:8:
>> include/linux/syscalls.h:152:33: error: redeclaration of '__syscall_meta__bpf' with no linkage
     152 |  static struct syscall_metadata __syscall_meta_##sname;  \
         |                                 ^~~~~~~~~~~~~~~
>> include/linux/syscalls.h:175:2: note: in expansion of macro 'SYSCALL_TRACE_EXIT_EVENT'
     175 |  SYSCALL_TRACE_EXIT_EVENT(sname);   \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/syscalls.h:224:2: note: in expansion of macro 'SYSCALL_METADATA'
     224 |  SYSCALL_METADATA(sname, x, __VA_ARGS__)   \
         |  ^~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:136:33: note: previous declaration of '__syscall_meta__bpf' was here
     136 |  static struct syscall_metadata __syscall_meta_##sname;  \
         |                                 ^~~~~~~~~~~~~~~
>> include/linux/syscalls.h:174:2: note: in expansion of macro 'SYSCALL_TRACE_ENTER_EVENT'
     174 |  SYSCALL_TRACE_ENTER_EVENT(sname);   \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/syscalls.h:224:2: note: in expansion of macro 'SYSCALL_METADATA'
     224 |  SYSCALL_METADATA(sname, x, __VA_ARGS__)   \
         |  ^~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:152:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     152 |  static struct syscall_metadata __syscall_meta_##sname;  \
         |  ^~~~~~
>> include/linux/syscalls.h:175:2: note: in expansion of macro 'SYSCALL_TRACE_EXIT_EVENT'
     175 |  SYSCALL_TRACE_EXIT_EVENT(sname);   \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/syscalls.h:224:2: note: in expansion of macro 'SYSCALL_METADATA'
     224 |  SYSCALL_METADATA(sname, x, __VA_ARGS__)   \
         |  ^~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:177:4: error: redeclaration of '__syscall_meta__bpf' with no linkage
     177 |    __syscall_meta_##sname = {    \
         |    ^~~~~~~~~~~~~~~
>> include/linux/syscalls.h:224:2: note: in expansion of macro 'SYSCALL_METADATA'
     224 |  SYSCALL_METADATA(sname, x, __VA_ARGS__)   \
         |  ^~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:152:33: note: previous declaration of '__syscall_meta__bpf' was here
     152 |  static struct syscall_metadata __syscall_meta_##sname;  \
         |                                 ^~~~~~~~~~~~~~~
>> include/linux/syscalls.h:175:2: note: in expansion of macro 'SYSCALL_TRACE_EXIT_EVENT'
     175 |  SYSCALL_TRACE_EXIT_EVENT(sname);   \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~
>> include/linux/syscalls.h:224:2: note: in expansion of macro 'SYSCALL_METADATA'
     224 |  SYSCALL_METADATA(sname, x, __VA_ARGS__)   \
         |  ^~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:176:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     176 |  static struct syscall_metadata __used   \
         |  ^~~~~~
>> include/linux/syscalls.h:224:2: note: in expansion of macro 'SYSCALL_METADATA'
     224 |  SYSCALL_METADATA(sname, x, __VA_ARGS__)   \
         |  ^~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:38: warning: 'alias' attribute ignored [-Wattributes]
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         |                                      ^~~~~~~~
   include/linux/syscalls.h:116:25: note: in definition of macro '__SC_DECL'
     116 | #define __SC_DECL(t, a) t a
         |                         ^
   include/linux/syscalls.h:110:35: note: in expansion of macro '__MAP2'
     110 | #define __MAP3(m,t,a,...) m(t,a), __MAP2(m,__VA_ARGS__)
         |                                   ^~~~~~
   include/linux/syscalls.h:114:22: note: in expansion of macro '__MAP3'
     114 | #define __MAP(n,...) __MAP##n(__VA_ARGS__)
         |                      ^~~~~
   include/linux/syscalls.h:239:28: note: in expansion of macro '__MAP'
     239 |  asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \
         |                            ^~~~~
   include/linux/syscalls.h:225:2: note: in expansion of macro '__SYSCALL_DEFINEx'
     225 |  __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
         |  ^~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:239:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     239 |  asmlinkage long sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \
         |             ^~~~
   include/linux/syscalls.h:225:2: note: in expansion of macro '__SYSCALL_DEFINEx'
     225 |  __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
         |  ^~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:242:21: error: invalid storage class for function '__do_sys_bpf'
     242 |  static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\
         |                     ^~~~~~~~
   include/linux/syscalls.h:225:2: note: in expansion of macro '__SYSCALL_DEFINEx'
     225 |  __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
         |  ^~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:242:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
     242 |  static inline long __do_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\
         |  ^~~~~~
   include/linux/syscalls.h:225:2: note: in expansion of macro '__SYSCALL_DEFINEx'
     225 |  __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
         |  ^~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:244:18: error: static declaration of '__se_sys_bpf' follows non-static declaration
     244 |  asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
         |                  ^~~~~~~~
   include/linux/syscalls.h:225:2: note: in expansion of macro '__SYSCALL_DEFINEx'
     225 |  __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
         |  ^~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   include/linux/syscalls.h:243:18: note: previous declaration of '__se_sys_bpf' was here
     243 |  asmlinkage long __se_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \
         |                  ^~~~~~~~
   include/linux/syscalls.h:225:2: note: in expansion of macro '__SYSCALL_DEFINEx'
     225 |  __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
         |  ^~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'
     216 | #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
         |                                    ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c:3661:1: note: in expansion of macro 'SYSCALL_DEFINE3'
    3661 | SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
         | ^~~~~~~~~~~~~~~
   kernel/bpf/syscall.c: In function '__se_sys_bpf':
   include/linux/syscalls.h:246:14: error: implicit declaration of function '__do_sys_bpf'; did you mean '__se_sys_bpf'? [-Werror=implicit-function-declaration]
     246 |   long ret = __do_sys##name(__MAP(x,__SC_CAST,__VA_ARGS__));\
         |              ^~~~~~~~
   include/linux/syscalls.h:225:2: note: in expansion of macro '__SYSCALL_DEFINEx'
     225 |  __SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
         |  ^~~~~~~~~~~~~~~~~
   include/linux/syscalls.h:216:36: note: in expansion of macro 'SYSCALL_DEFINEx'

vim +/__syscall_meta__bpf +152 include/linux/syscalls.h

8f0820183056ad2 Steven Rostedt           2010-04-20  134  
fb34a08c3469b2b Jason Baron              2009-08-10  135  #define SYSCALL_TRACE_ENTER_EVENT(sname)				\
3d56e331b653767 Steven Rostedt           2011-02-02  136  	static struct syscall_metadata __syscall_meta_##sname;		\
2425bcb9240f8c9 Steven Rostedt (Red Hat  2015-05-05  137) 	static struct trace_event_call __used				\
fb34a08c3469b2b Jason Baron              2009-08-10  138  	  event_enter_##sname = {					\
2239291aeb0379f Steven Rostedt           2010-04-21  139  		.class			= &event_class_syscall_enter,	\
abb43f6998eb646 Mathieu Desnoyers        2014-04-09  140  		{							\
abb43f6998eb646 Mathieu Desnoyers        2014-04-09  141  			.name                   = "sys_enter"#sname,	\
abb43f6998eb646 Mathieu Desnoyers        2014-04-09  142  		},							\
80decc70afc57c8 Steven Rostedt           2010-04-23  143  		.event.funcs            = &enter_syscall_print_funcs,	\
31c16b13349970b Lai Jiangshan            2009-12-01  144  		.data			= (void *)&__syscall_meta_##sname,\
f4d5c029bd6731b Lai Jiangshan            2011-01-26  145  		.flags                  = TRACE_EVENT_FL_CAP_ANY,	\
53cf810b1934f08 Frederic Weisbecker      2010-11-18  146  	};								\
2425bcb9240f8c9 Steven Rostedt (Red Hat  2015-05-05  147) 	static struct trace_event_call __used				\
e4a9ea5ee7c8812 Steven Rostedt           2011-01-27  148  	  __attribute__((section("_ftrace_events")))			\
f4d5c029bd6731b Lai Jiangshan            2011-01-26  149  	 *__event_enter_##sname = &event_enter_##sname;
fb34a08c3469b2b Jason Baron              2009-08-10  150  
fb34a08c3469b2b Jason Baron              2009-08-10  151  #define SYSCALL_TRACE_EXIT_EVENT(sname)					\
3d56e331b653767 Steven Rostedt           2011-02-02 @152  	static struct syscall_metadata __syscall_meta_##sname;		\
2425bcb9240f8c9 Steven Rostedt (Red Hat  2015-05-05  153) 	static struct trace_event_call __used				\
fb34a08c3469b2b Jason Baron              2009-08-10  154  	  event_exit_##sname = {					\
2239291aeb0379f Steven Rostedt           2010-04-21  155  		.class			= &event_class_syscall_exit,	\
abb43f6998eb646 Mathieu Desnoyers        2014-04-09  156  		{							\
abb43f6998eb646 Mathieu Desnoyers        2014-04-09  157  			.name                   = "sys_exit"#sname,	\
abb43f6998eb646 Mathieu Desnoyers        2014-04-09  158  		},							\
80decc70afc57c8 Steven Rostedt           2010-04-23  159  		.event.funcs		= &exit_syscall_print_funcs,	\
31c16b13349970b Lai Jiangshan            2009-12-01  160  		.data			= (void *)&__syscall_meta_##sname,\
f4d5c029bd6731b Lai Jiangshan            2011-01-26  161  		.flags                  = TRACE_EVENT_FL_CAP_ANY,	\
53cf810b1934f08 Frederic Weisbecker      2010-11-18  162  	};								\
2425bcb9240f8c9 Steven Rostedt (Red Hat  2015-05-05  163) 	static struct trace_event_call __used				\
e4a9ea5ee7c8812 Steven Rostedt           2011-01-27  164  	  __attribute__((section("_ftrace_events")))			\
f4d5c029bd6731b Lai Jiangshan            2011-01-26  165  	*__event_exit_##sname = &event_exit_##sname;
fb34a08c3469b2b Jason Baron              2009-08-10  166  
99e621f796d7f03 Al Viro                  2013-03-05  167  #define SYSCALL_METADATA(sname, nb, ...)			\
99e621f796d7f03 Al Viro                  2013-03-05  168  	static const char *types_##sname[] = {			\
99e621f796d7f03 Al Viro                  2013-03-05  169  		__MAP(nb,__SC_STR_TDECL,__VA_ARGS__)		\
99e621f796d7f03 Al Viro                  2013-03-05  170  	};							\
99e621f796d7f03 Al Viro                  2013-03-05  171  	static const char *args_##sname[] = {			\
99e621f796d7f03 Al Viro                  2013-03-05  172  		__MAP(nb,__SC_STR_ADECL,__VA_ARGS__)		\
99e621f796d7f03 Al Viro                  2013-03-05  173  	};							\
540b7b8d65575c8 Li Zefan                 2009-08-19 @174  	SYSCALL_TRACE_ENTER_EVENT(sname);			\
540b7b8d65575c8 Li Zefan                 2009-08-19 @175  	SYSCALL_TRACE_EXIT_EVENT(sname);			\
2e33af029556cb8 Steven Rostedt           2010-04-22  176  	static struct syscall_metadata __used			\
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  177  	  __syscall_meta_##sname = {				\
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  178  		.name 		= "sys"#sname,			\
ba976970c79fd2f Ian Munsie               2011-02-03  179  		.syscall_nr	= -1,	/* Filled in at boot */	\
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  180  		.nb_args 	= nb,				\
99e621f796d7f03 Al Viro                  2013-03-05  181  		.types		= nb ? types_##sname : NULL,	\
99e621f796d7f03 Al Viro                  2013-03-05  182  		.args		= nb ? args_##sname : NULL,	\
540b7b8d65575c8 Li Zefan                 2009-08-19  183  		.enter_event	= &event_enter_##sname,		\
540b7b8d65575c8 Li Zefan                 2009-08-19  184  		.exit_event	= &event_exit_##sname,		\
2e33af029556cb8 Steven Rostedt           2010-04-22  185  		.enter_fields	= LIST_HEAD_INIT(__syscall_meta_##sname.enter_fields), \
3d56e331b653767 Steven Rostedt           2011-02-02  186  	};							\
3d56e331b653767 Steven Rostedt           2011-02-02  187  	static struct syscall_metadata __used			\
3d56e331b653767 Steven Rostedt           2011-02-02  188  	  __attribute__((section("__syscalls_metadata")))	\
3d56e331b653767 Steven Rostedt           2011-02-02  189  	 *__p_syscall_meta_##sname = &__syscall_meta_##sname;
cf5f5cea270655d Yonghong Song            2017-08-04  190  
cf5f5cea270655d Yonghong Song            2017-08-04  191  static inline int is_syscall_trace_event(struct trace_event_call *tp_event)
cf5f5cea270655d Yonghong Song            2017-08-04  192  {
cf5f5cea270655d Yonghong Song            2017-08-04  193  	return tp_event->class == &event_class_syscall_enter ||
cf5f5cea270655d Yonghong Song            2017-08-04  194  	       tp_event->class == &event_class_syscall_exit;
cf5f5cea270655d Yonghong Song            2017-08-04  195  }
cf5f5cea270655d Yonghong Song            2017-08-04  196  
99e621f796d7f03 Al Viro                  2013-03-05  197  #else
99e621f796d7f03 Al Viro                  2013-03-05  198  #define SYSCALL_METADATA(sname, nb, ...)
cf5f5cea270655d Yonghong Song            2017-08-04  199  
cf5f5cea270655d Yonghong Song            2017-08-04  200  static inline int is_syscall_trace_event(struct trace_event_call *tp_event)
cf5f5cea270655d Yonghong Song            2017-08-04  201  {
cf5f5cea270655d Yonghong Song            2017-08-04  202  	return 0;
cf5f5cea270655d Yonghong Song            2017-08-04  203  }
99e621f796d7f03 Al Viro                  2013-03-05  204  #endif
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  205  
1bd21c6c21e8489 Dominik Brodowski        2018-04-05  206  #ifndef SYSCALL_DEFINE0
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  207  #define SYSCALL_DEFINE0(sname)					\
99e621f796d7f03 Al Viro                  2013-03-05  208  	SYSCALL_METADATA(_##sname, 0);				\
c9a211951c7c79c Howard McLauchlan        2018-03-21  209  	asmlinkage long sys_##sname(void);			\
c9a211951c7c79c Howard McLauchlan        2018-03-21  210  	ALLOW_ERROR_INJECTION(sys_##sname, ERRNO);		\
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  211  	asmlinkage long sys_##sname(void)
1bd21c6c21e8489 Dominik Brodowski        2018-04-05  212  #endif /* SYSCALL_DEFINE0 */
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  213  
6c5979631b4b03c Heiko Carstens           2009-02-11  214  #define SYSCALL_DEFINE1(name, ...) SYSCALL_DEFINEx(1, _##name, __VA_ARGS__)
6c5979631b4b03c Heiko Carstens           2009-02-11  215  #define SYSCALL_DEFINE2(name, ...) SYSCALL_DEFINEx(2, _##name, __VA_ARGS__)
6c5979631b4b03c Heiko Carstens           2009-02-11  216  #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)
6c5979631b4b03c Heiko Carstens           2009-02-11  217  #define SYSCALL_DEFINE4(name, ...) SYSCALL_DEFINEx(4, _##name, __VA_ARGS__)
6c5979631b4b03c Heiko Carstens           2009-02-11  218  #define SYSCALL_DEFINE5(name, ...) SYSCALL_DEFINEx(5, _##name, __VA_ARGS__)
6c5979631b4b03c Heiko Carstens           2009-02-11  219  #define SYSCALL_DEFINE6(name, ...) SYSCALL_DEFINEx(6, _##name, __VA_ARGS__)
1a94bc34768e463 Heiko Carstens           2009-01-14  220  
609320c8a22715b Yonghong Song            2017-09-07  221  #define SYSCALL_DEFINE_MAXARGS	6
609320c8a22715b Yonghong Song            2017-09-07  222  
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  223  #define SYSCALL_DEFINEx(x, sname, ...)				\
99e621f796d7f03 Al Viro                  2013-03-05 @224  	SYSCALL_METADATA(sname, x, __VA_ARGS__)			\
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  225  	__SYSCALL_DEFINEx(x, sname, __VA_ARGS__)
bed1ffca022cc87 Frederic Weisbecker      2009-03-13  226  

:::::: The code at line 152 was first introduced by commit
:::::: 3d56e331b6537671c66f1b510bed0f1e0331dfc8 tracing: Replace syscall_meta_data struct array with pointer array

:::::: TO: Steven Rostedt <srostedt@redhat.com>
:::::: CC: Steven Rostedt <rostedt@goodmis.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
kernel test robot April 30, 2020, 2:04 a.m. UTC | #5
Hi Mao,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on bpf-next/master]
[also build test WARNING on bpf/master net/master net-next/master ipvs/master v5.7-rc2 next-20200423]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Mao-Wenan/Change-return-code-if-failed-to-load-object/20200424-025339
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-191-gc51a0382-dirty
        make ARCH=x86_64 allmodconfig
        make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
:::::: branch date: 19 hours ago
:::::: commit date: 19 hours ago

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


sparse warnings: (new ones prefixed by >>)

>> kernel/bpf/syscall.c:117:0: sparse: sparse: missing terminating " character
   kernel/bpf/syscall.c:118:0: sparse: sparse: missing terminating " character
>> kernel/bpf/syscall.c:686:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:772:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:979:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:1046:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:1111:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:1164:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:1341:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:1442:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:1504:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:1548:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:1550:1: sparse: sparse: directive in macro's argument list
   kernel/bpf/syscall.c:1551:1: sparse: sparse: directive in macro's argument list
>> kernel/bpf/syscall.c:116:17: sparse: sparse: macro "pr_warn" passed 2 arguments, but takes just 2
>> include/linux/bpf_types.h:7:1: sparse: sparse: No right hand side of ','-expression
   include/linux/bpf_types.h:7:1: sparse: sparse: Expected ; at end of statement
   include/linux/bpf_types.h:7:1: sparse: sparse: got [
   include/linux/bpf_types.h:121:0: sparse: sparse: Expected } at end of compound statement
   include/linux/bpf_types.h:121:0: sparse: sparse: got end-of-input
   include/linux/bpf_types.h:121:0: sparse: sparse: Expected } at end of function
   include/linux/bpf_types.h:121:0: sparse: sparse: got end-of-input
   kernel/bpf/syscall.c:116:17: sparse: sparse: undefined identifier 'pr_warn'
   kernel/bpf/syscall.c:1560:21: sparse: sparse: undefined identifier 'bpf_prog_types'
   kernel/bpf/syscall.c:1560:21: sparse: sparse: undefined identifier 'bpf_prog_types'
   kernel/bpf/syscall.c:1562:16: sparse: sparse: undefined identifier 'bpf_prog_types'
   kernel/bpf/syscall.c:1562:16: sparse: sparse: undefined identifier 'bpf_prog_types'
   kernel/bpf/syscall.c:1562:16: sparse: sparse: undefined identifier 'bpf_prog_types'
   kernel/bpf/syscall.c:1562:16: sparse: sparse: undefined identifier 'bpf_prog_types'
>> kernel/bpf/syscall.c:1562:16: sparse: sparse: cannot size expression
   kernel/bpf/syscall.c:1563:15: sparse: sparse: undefined identifier 'bpf_prog_types'
   kernel/bpf/syscall.c:1797:27: sparse: sparse: undefined identifier 'bpf_dummy_read'
   kernel/bpf/syscall.c:1798:27: sparse: sparse: undefined identifier 'bpf_dummy_write'
   kernel/bpf/syscall.c:2293:27: sparse: sparse: undefined identifier 'bpf_dummy_read'
   kernel/bpf/syscall.c:2294:27: sparse: sparse: undefined identifier 'bpf_dummy_write'
   kernel/bpf/syscall.c:2870:23: sparse: sparse: undefined identifier '__bpf_map_inc_not_zero'
   kernel/bpf/syscall.c:3538:15: sparse: sparse: undefined identifier 'map_get_sys_perms'
   kernel/bpf/syscall.c:3544:15: sparse: sparse: undefined identifier 'map_get_sys_perms'
   kernel/bpf/syscall.c:3685:23: sparse: sparse: undefined identifier 'map_create'
   kernel/bpf/syscall.c:3688:23: sparse: sparse: undefined identifier 'map_lookup_elem'
   kernel/bpf/syscall.c:3691:23: sparse: sparse: undefined identifier 'map_update_elem'
   kernel/bpf/syscall.c:3694:23: sparse: sparse: undefined identifier 'map_delete_elem'
   kernel/bpf/syscall.c:3697:23: sparse: sparse: undefined identifier 'map_get_next_key'
   kernel/bpf/syscall.c:3700:23: sparse: sparse: undefined identifier 'map_freeze'
   kernel/bpf/syscall.c:3757:23: sparse: sparse: undefined identifier 'map_lookup_and_delete_elem'

# https://github.com/0day-ci/linux/commit/45c88e856945c443c39e3f519ad9740b8e487d8d
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 45c88e856945c443c39e3f519ad9740b8e487d8d
vim +117 kernel/bpf/syscall.c

a38845729ea398 Jakub Kicinski     2018-01-11  103  
99c55f7d47c0dc Alexei Starovoitov 2014-09-26  104  static struct bpf_map *find_and_alloc_map(union bpf_attr *attr)
99c55f7d47c0dc Alexei Starovoitov 2014-09-26  105  {
1110f3a9bcf394 Jakub Kicinski     2018-01-11  106  	const struct bpf_map_ops *ops;
9ef09e35e521bf Mark Rutland       2018-05-03  107  	u32 type = attr->map_type;
99c55f7d47c0dc Alexei Starovoitov 2014-09-26  108  	struct bpf_map *map;
1110f3a9bcf394 Jakub Kicinski     2018-01-11  109  	int err;
99c55f7d47c0dc Alexei Starovoitov 2014-09-26  110  
9ef09e35e521bf Mark Rutland       2018-05-03  111  	if (type >= ARRAY_SIZE(bpf_map_types))
1110f3a9bcf394 Jakub Kicinski     2018-01-11  112  		return ERR_PTR(-EINVAL);
9ef09e35e521bf Mark Rutland       2018-05-03  113  	type = array_index_nospec(type, ARRAY_SIZE(bpf_map_types));
9ef09e35e521bf Mark Rutland       2018-05-03  114  	ops = bpf_map_types[type];
45c88e856945c4 Mao Wenan          2020-04-22  115  	if (!ops) {
45c88e856945c4 Mao Wenan          2020-04-22 @116  		pr_warn("map type %d not supported or
45c88e856945c4 Mao Wenan          2020-04-22 @117  			 kernel config not opened\n", type);
45c88e856945c4 Mao Wenan          2020-04-22  118  		return ERR_PTR(-EOPNOTSUPP);
45c88e856945c4 Mao Wenan          2020-04-22  119  	}
1110f3a9bcf394 Jakub Kicinski     2018-01-11  120  	if (ops->map_alloc_check) {
1110f3a9bcf394 Jakub Kicinski     2018-01-11  121  		err = ops->map_alloc_check(attr);
1110f3a9bcf394 Jakub Kicinski     2018-01-11  122  		if (err)
1110f3a9bcf394 Jakub Kicinski     2018-01-11  123  			return ERR_PTR(err);
1110f3a9bcf394 Jakub Kicinski     2018-01-11  124  	}
a38845729ea398 Jakub Kicinski     2018-01-11  125  	if (attr->map_ifindex)
a38845729ea398 Jakub Kicinski     2018-01-11  126  		ops = &bpf_map_offload_ops;
1110f3a9bcf394 Jakub Kicinski     2018-01-11  127  	map = ops->map_alloc(attr);
99c55f7d47c0dc Alexei Starovoitov 2014-09-26  128  	if (IS_ERR(map))
99c55f7d47c0dc Alexei Starovoitov 2014-09-26  129  		return map;
1110f3a9bcf394 Jakub Kicinski     2018-01-11  130  	map->ops = ops;
9ef09e35e521bf Mark Rutland       2018-05-03  131  	map->map_type = type;
99c55f7d47c0dc Alexei Starovoitov 2014-09-26  132  	return map;
99c55f7d47c0dc Alexei Starovoitov 2014-09-26  133  }
99c55f7d47c0dc Alexei Starovoitov 2014-09-26  134  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
diff mbox series

Patch

diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index d85f37239540..f67bc063bf75 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -112,9 +112,11 @@  static struct bpf_map *find_and_alloc_map(union bpf_attr *attr)
 		return ERR_PTR(-EINVAL);
 	type = array_index_nospec(type, ARRAY_SIZE(bpf_map_types));
 	ops = bpf_map_types[type];
-	if (!ops)
-		return ERR_PTR(-EINVAL);
-
+	if (!ops) {
+		pr_warn("map type %d not supported or
+			 kernel config not opened\n", type);
+		return ERR_PTR(-EOPNOTSUPP);
+	}
 	if (ops->map_alloc_check) {
 		err = ops->map_alloc_check(attr);
 		if (err)