* net/netfilter/nf_tables_api.c:2034:18: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
@ 2022-02-01 8:53 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-02-01 8:53 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 24019 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Yajun Deng <yajun.deng@linux.dev>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 26291c54e111ff6ba87a164d85d4a4e134b7315c
commit: f9b282b36dfa9b6c6d6b3e8816cdf0e4defff482 net: netlink: add the case when nlh is NULL
date: 6 months ago
:::::: branch date: 2 days ago
:::::: commit date: 6 months ago
config: riscv-randconfig-c006-20220129 (https://download.01.org/0day-ci/archive/20220201/202202011655.PUMkk8kx-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 33b45ee44b1f32ffdbc995e6fec806271b4b3ba4)
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 riscv cross compiling tool for clang build
# apt-get install binutils-riscv64-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f9b282b36dfa9b6c6d6b3e8816cdf0e4defff482
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout f9b282b36dfa9b6c6d6b3e8816cdf0e4defff482
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
include/uapi/linux/byteorder/little_endian.h:40:26: note: expanded from macro '__be32_to_cpu'
#define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
^
include/uapi/linux/swab.h:118:3: note: expanded from macro '__swab32'
(__builtin_constant_p((__u32)(x)) ? \
^
net/netfilter/nf_tables_api.c:1940:19: note: '?' condition is false
hook->priority = ntohl(nla_get_be32(ha[NFTA_HOOK_PRIORITY]));
^
include/linux/byteorder/generic.h:140:18: note: expanded from macro 'ntohl'
#define ntohl(x) ___ntohl(x)
^
include/linux/byteorder/generic.h:136:21: note: expanded from macro '___ntohl'
#define ___ntohl(x) __be32_to_cpu(x)
^
include/uapi/linux/byteorder/little_endian.h:40:26: note: expanded from macro '__be32_to_cpu'
#define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
^
include/uapi/linux/swab.h:118:3: note: expanded from macro '__swab32'
(__builtin_constant_p((__u32)(x)) ? \
^
net/netfilter/nf_tables_api.c:1943:6: note: Assuming 'type' is non-null
if (!type)
^~~~~
net/netfilter/nf_tables_api.c:1943:2: note: Taking false branch
if (!type)
^
net/netfilter/nf_tables_api.c:1946:6: note: Assuming the condition is false
if (nla[NFTA_CHAIN_TYPE]) {
^~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1946:2: note: Taking false branch
if (nla[NFTA_CHAIN_TYPE]) {
^
net/netfilter/nf_tables_api.c:1954:6: note: Assuming the condition is false
if (hook->num >= NFT_MAX_HOOKS || !(type->hook_mask & (1 << hook->num)))
^~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1954:6: note: Left side of '||' is false
net/netfilter/nf_tables_api.c:1954:36: note: Assuming the condition is false
if (hook->num >= NFT_MAX_HOOKS || !(type->hook_mask & (1 << hook->num)))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1954:2: note: Taking false branch
if (hook->num >= NFT_MAX_HOOKS || !(type->hook_mask & (1 << hook->num)))
^
net/netfilter/nf_tables_api.c:1957:6: note: Assuming field 'type' is not equal to NFT_CHAIN_T_NAT
if (type->type == NFT_CHAIN_T_NAT &&
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1957:36: note: Left side of '&&' is false
if (type->type == NFT_CHAIN_T_NAT &&
^
net/netfilter/nf_tables_api.c:1961:2: note: Taking false branch
if (!try_module_get(type->owner)) {
^
net/netfilter/nf_tables_api.c:1970:2: note: Taking true branch
if (nft_base_chain_netdev(family, hook->num)) {
^
net/netfilter/nf_tables_api.c:1971:9: note: Calling 'nft_chain_parse_netdev'
err = nft_chain_parse_netdev(net, ha, &hook->list);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1895:6: note: Assuming the condition is true
if (tb[NFTA_HOOK_DEV]) {
^~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1895:2: note: Taking true branch
if (tb[NFTA_HOOK_DEV]) {
^
net/netfilter/nf_tables_api.c:1896:10: note: Calling 'nft_netdev_hook_alloc'
hook = nft_netdev_hook_alloc(net, tb[NFTA_HOOK_DEV]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1798:9: note: Memory is allocated
hook = kmalloc(sizeof(struct nft_hook), GFP_KERNEL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1799:6: note: Assuming 'hook' is non-null
if (!hook) {
^~~~~
net/netfilter/nf_tables_api.c:1799:2: note: Taking false branch
if (!hook) {
^
net/netfilter/nf_tables_api.c:1810:6: note: Assuming 'dev' is non-null
if (!dev) {
^~~~
net/netfilter/nf_tables_api.c:1810:2: note: Taking false branch
if (!dev) {
^
net/netfilter/nf_tables_api.c:1896:10: note: Returned allocated memory
hook = nft_netdev_hook_alloc(net, tb[NFTA_HOOK_DEV]);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1897:3: note: Taking true branch
if (IS_ERR(hook))
^
net/netfilter/nf_tables_api.c:1971:9: note: Returned allocated memory
err = nft_chain_parse_netdev(net, ha, &hook->list);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1972:7: note: 'err' is >= 0
if (err < 0) {
^~~
net/netfilter/nf_tables_api.c:1972:3: note: Taking false branch
if (err < 0) {
^
net/netfilter/nf_tables_api.c:1981:9: note: Potential leak of memory pointed to by 'err'
return 0;
^
>> net/netfilter/nf_tables_api.c:2034:18: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
basechain->type = hook->type;
^
net/netfilter/nf_tables_api.c:2091:6: note: Assuming the condition is false
if (table->use == UINT_MAX)
^~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:2091:2: note: Taking false branch
if (table->use == UINT_MAX)
^
net/netfilter/nf_tables_api.c:2094:6: note: Assuming the condition is true
if (nla[NFTA_CHAIN_HOOK]) {
^~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:2094:2: note: Taking true branch
if (nla[NFTA_CHAIN_HOOK]) {
^
net/netfilter/nf_tables_api.c:2097:7: note: Assuming the condition is false
if (flags & NFT_CHAIN_BINDING)
^~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:2097:3: note: Taking false branch
if (flags & NFT_CHAIN_BINDING)
^
net/netfilter/nf_tables_api.c:2100:9: note: Calling 'nft_chain_parse_hook'
err = nft_chain_parse_hook(net, nla, &hook, family, extack,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1926:2: note: Assuming 'debug_locks' is 0
lockdep_assert_held(&nft_net->commit_mutex);
^
include/linux/lockdep.h:310:11: note: expanded from macro 'lockdep_assert_held'
WARN_ON(debug_locks && \
^~~~~~~~~~~
include/asm-generic/bug.h:166:25: note: expanded from macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
net/netfilter/nf_tables_api.c:1926:2: note: Left side of '&&' is false
lockdep_assert_held(&nft_net->commit_mutex);
^
include/linux/lockdep.h:310:23: note: expanded from macro 'lockdep_assert_held'
WARN_ON(debug_locks && \
^
net/netfilter/nf_tables_api.c:1926:2: note: Loop condition is false. Exiting loop
lockdep_assert_held(&nft_net->commit_mutex);
^
include/linux/lockdep.h:309:32: note: expanded from macro 'lockdep_assert_held'
#define lockdep_assert_held(l) do { \
^
net/netfilter/nf_tables_api.c:1932:6: note: Assuming 'err' is >= 0
if (err < 0)
^~~~~~~
net/netfilter/nf_tables_api.c:1932:2: note: Taking false branch
if (err < 0)
^
net/netfilter/nf_tables_api.c:1935:6: note: Assuming the condition is false
if (ha[NFTA_HOOK_HOOKNUM] == NULL ||
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1935:6: note: Left side of '||' is false
net/netfilter/nf_tables_api.c:1936:6: note: Assuming the condition is false
ha[NFTA_HOOK_PRIORITY] == NULL)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1935:2: note: Taking false branch
if (ha[NFTA_HOOK_HOOKNUM] == NULL ||
^
net/netfilter/nf_tables_api.c:1939:14: note: '?' condition is false
hook->num = ntohl(nla_get_be32(ha[NFTA_HOOK_HOOKNUM]));
^
include/linux/byteorder/generic.h:140:18: note: expanded from macro 'ntohl'
#define ntohl(x) ___ntohl(x)
^
include/linux/byteorder/generic.h:136:21: note: expanded from macro '___ntohl'
#define ___ntohl(x) __be32_to_cpu(x)
^
include/uapi/linux/byteorder/little_endian.h:40:26: note: expanded from macro '__be32_to_cpu'
#define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
^
include/uapi/linux/swab.h:118:3: note: expanded from macro '__swab32'
(__builtin_constant_p((__u32)(x)) ? \
^
net/netfilter/nf_tables_api.c:1940:19: note: '?' condition is false
hook->priority = ntohl(nla_get_be32(ha[NFTA_HOOK_PRIORITY]));
^
include/linux/byteorder/generic.h:140:18: note: expanded from macro 'ntohl'
#define ntohl(x) ___ntohl(x)
^
include/linux/byteorder/generic.h:136:21: note: expanded from macro '___ntohl'
#define ___ntohl(x) __be32_to_cpu(x)
^
include/uapi/linux/byteorder/little_endian.h:40:26: note: expanded from macro '__be32_to_cpu'
#define __be32_to_cpu(x) __swab32((__force __u32)(__be32)(x))
^
include/uapi/linux/swab.h:118:3: note: expanded from macro '__swab32'
(__builtin_constant_p((__u32)(x)) ? \
^
net/netfilter/nf_tables_api.c:1943:6: note: Assuming 'type' is non-null
if (!type)
^~~~~
net/netfilter/nf_tables_api.c:1943:2: note: Taking false branch
if (!type)
^
net/netfilter/nf_tables_api.c:1946:6: note: Assuming the condition is true
if (nla[NFTA_CHAIN_TYPE]) {
^~~~~~~~~~~~~~~~~~~~
net/netfilter/nf_tables_api.c:1946:2: note: Taking true branch
vim +2034 net/netfilter/nf_tables_api.c
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1915
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1916 static int nft_chain_parse_hook(struct net *net,
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1917 const struct nlattr * const nla[],
36596dadf54a92 Pablo Neira Ayuso 2018-01-09 1918 struct nft_chain_hook *hook, u8 family,
983c4fcb81d6bd Pablo Neira Ayuso 2021-05-19 1919 struct netlink_ext_ack *extack, bool autoload)
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1920 {
d59d2f82f984df Pablo Neira Ayuso 2021-04-23 1921 struct nftables_pernet *nft_net = nft_pernet(net);
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1922 struct nlattr *ha[NFTA_HOOK_MAX + 1];
32537e91847a56 Pablo Neira Ayuso 2018-03-27 1923 const struct nft_chain_type *type;
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1924 int err;
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1925
0854db2aaef3fc Florian Westphal 2021-04-01 1926 lockdep_assert_held(&nft_net->commit_mutex);
f102d66b335a41 Florian Westphal 2018-07-11 1927 lockdep_nfnl_nft_mutex_not_held();
f102d66b335a41 Florian Westphal 2018-07-11 1928
8cb081746c031f Johannes Berg 2019-04-26 1929 err = nla_parse_nested_deprecated(ha, NFTA_HOOK_MAX,
8cb081746c031f Johannes Berg 2019-04-26 1930 nla[NFTA_CHAIN_HOOK],
fceb6435e85298 Johannes Berg 2017-04-12 1931 nft_hook_policy, NULL);
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1932 if (err < 0)
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1933 return err;
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1934
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1935 if (ha[NFTA_HOOK_HOOKNUM] == NULL ||
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1936 ha[NFTA_HOOK_PRIORITY] == NULL)
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1937 return -EINVAL;
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1938
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1939 hook->num = ntohl(nla_get_be32(ha[NFTA_HOOK_HOOKNUM]));
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1940 hook->priority = ntohl(nla_get_be32(ha[NFTA_HOOK_PRIORITY]));
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1941
826035498ec14b Pablo Neira Ayuso 2020-01-21 1942 type = __nft_chain_type_get(family, NFT_CHAIN_T_DEFAULT);
826035498ec14b Pablo Neira Ayuso 2020-01-21 1943 if (!type)
826035498ec14b Pablo Neira Ayuso 2020-01-21 1944 return -EOPNOTSUPP;
826035498ec14b Pablo Neira Ayuso 2020-01-21 1945
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1946 if (nla[NFTA_CHAIN_TYPE]) {
452238e8d5ffd8 Florian Westphal 2018-07-11 1947 type = nf_tables_chain_type_lookup(net, nla[NFTA_CHAIN_TYPE],
445509eb9b0027 Pablo Neira Ayuso 2018-08-03 1948 family, autoload);
983c4fcb81d6bd Pablo Neira Ayuso 2021-05-19 1949 if (IS_ERR(type)) {
983c4fcb81d6bd Pablo Neira Ayuso 2021-05-19 1950 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_TYPE]);
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1951 return PTR_ERR(type);
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1952 }
983c4fcb81d6bd Pablo Neira Ayuso 2021-05-19 1953 }
d25e2e9388eda6 Pablo Neira Ayuso 2020-10-14 1954 if (hook->num >= NFT_MAX_HOOKS || !(type->hook_mask & (1 << hook->num)))
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1955 return -EOPNOTSUPP;
84ba7dd71add05 Florian Westphal 2017-12-08 1956
84ba7dd71add05 Florian Westphal 2017-12-08 1957 if (type->type == NFT_CHAIN_T_NAT &&
84ba7dd71add05 Florian Westphal 2017-12-08 1958 hook->priority <= NF_IP_PRI_CONNTRACK)
84ba7dd71add05 Florian Westphal 2017-12-08 1959 return -EOPNOTSUPP;
84ba7dd71add05 Florian Westphal 2017-12-08 1960
983c4fcb81d6bd Pablo Neira Ayuso 2021-05-19 1961 if (!try_module_get(type->owner)) {
983c4fcb81d6bd Pablo Neira Ayuso 2021-05-19 1962 if (nla[NFTA_CHAIN_TYPE])
983c4fcb81d6bd Pablo Neira Ayuso 2021-05-19 1963 NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_TYPE]);
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1964 return -ENOENT;
983c4fcb81d6bd Pablo Neira Ayuso 2021-05-19 1965 }
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1966
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1967 hook->type = type;
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1968
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1969 INIT_LIST_HEAD(&hook->list);
d3519cb89f6d59 Pablo Neira Ayuso 2020-10-08 1970 if (nft_base_chain_netdev(family, hook->num)) {
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1971 err = nft_chain_parse_netdev(net, ha, &hook->list);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 @1972 if (err < 0) {
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1973 module_put(type->owner);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1974 return err;
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1975 }
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1976 } else if (ha[NFTA_HOOK_DEV] || ha[NFTA_HOOK_DEVS]) {
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1977 module_put(type->owner);
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1978 return -EOPNOTSUPP;
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1979 }
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1980
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1981 return 0;
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1982 }
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1983
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1984 static void nft_chain_release_hook(struct nft_chain_hook *hook)
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1985 {
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1986 struct nft_hook *h, *next;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1987
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1988 list_for_each_entry_safe(h, next, &hook->list, list) {
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1989 list_del(&h->list);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1990 kfree(h);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 1991 }
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1992 module_put(hook->type->owner);
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1993 }
508f8ccdab0ef5 Pablo Neira Ayuso 2016-08-02 1994
0cbc06b3faba75 Florian Westphal 2018-05-25 1995 struct nft_rules_old {
0cbc06b3faba75 Florian Westphal 2018-05-25 1996 struct rcu_head h;
0cbc06b3faba75 Florian Westphal 2018-05-25 1997 struct nft_rule **start;
0cbc06b3faba75 Florian Westphal 2018-05-25 1998 };
0cbc06b3faba75 Florian Westphal 2018-05-25 1999
0cbc06b3faba75 Florian Westphal 2018-05-25 2000 static struct nft_rule **nf_tables_chain_alloc_rules(const struct nft_chain *chain,
0cbc06b3faba75 Florian Westphal 2018-05-25 2001 unsigned int alloc)
0cbc06b3faba75 Florian Westphal 2018-05-25 2002 {
0cbc06b3faba75 Florian Westphal 2018-05-25 2003 if (alloc > INT_MAX)
0cbc06b3faba75 Florian Westphal 2018-05-25 2004 return NULL;
0cbc06b3faba75 Florian Westphal 2018-05-25 2005
0cbc06b3faba75 Florian Westphal 2018-05-25 2006 alloc += 1; /* NULL, ends rules */
0cbc06b3faba75 Florian Westphal 2018-05-25 2007 if (sizeof(struct nft_rule *) > INT_MAX / alloc)
0cbc06b3faba75 Florian Westphal 2018-05-25 2008 return NULL;
0cbc06b3faba75 Florian Westphal 2018-05-25 2009
0cbc06b3faba75 Florian Westphal 2018-05-25 2010 alloc *= sizeof(struct nft_rule *);
0cbc06b3faba75 Florian Westphal 2018-05-25 2011 alloc += sizeof(struct nft_rules_old);
0cbc06b3faba75 Florian Westphal 2018-05-25 2012
0cbc06b3faba75 Florian Westphal 2018-05-25 2013 return kvmalloc(alloc, GFP_KERNEL);
0cbc06b3faba75 Florian Westphal 2018-05-25 2014 }
0cbc06b3faba75 Florian Westphal 2018-05-25 2015
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2016 static void nft_basechain_hook_init(struct nf_hook_ops *ops, u8 family,
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2017 const struct nft_chain_hook *hook,
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2018 struct nft_chain *chain)
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2019 {
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2020 ops->pf = family;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2021 ops->hooknum = hook->num;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2022 ops->priority = hook->priority;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2023 ops->priv = chain;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2024 ops->hook = hook->type->hooks[ops->hooknum];
c5c6accd7b7e10 Florian Westphal 2021-06-08 2025 ops->hook_ops_type = NF_HOOK_OP_NF_TABLES;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2026 }
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2027
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2028 static int nft_basechain_init(struct nft_base_chain *basechain, u8 family,
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2029 struct nft_chain_hook *hook, u32 flags)
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2030 {
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2031 struct nft_chain *chain;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2032 struct nft_hook *h;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2033
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 @2034 basechain->type = hook->type;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2035 INIT_LIST_HEAD(&basechain->hook_list);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2036 chain = &basechain->chain;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2037
d3519cb89f6d59 Pablo Neira Ayuso 2020-10-08 2038 if (nft_base_chain_netdev(family, hook->num)) {
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2039 list_splice_init(&hook->list, &basechain->hook_list);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2040 list_for_each_entry(h, &basechain->hook_list, list)
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2041 nft_basechain_hook_init(&h->ops, family, hook, chain);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2042
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2043 basechain->ops.hooknum = hook->num;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2044 basechain->ops.priority = hook->priority;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2045 } else {
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2046 nft_basechain_hook_init(&basechain->ops, family, hook, chain);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2047 }
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2048
67c49de4ad862c Pablo Neira Ayuso 2020-06-30 2049 chain->flags |= NFT_CHAIN_BASE | flags;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2050 basechain->policy = NF_ACCEPT;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2051 if (chain->flags & NFT_CHAIN_HW_OFFLOAD &&
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2052 nft_chain_offload_priority(basechain) < 0)
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2053 return -EOPNOTSUPP;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2054
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2055 flow_block_init(&basechain->flow_block);
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2056
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2057 return 0;
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2058 }
d54725cd11a57c Pablo Neira Ayuso 2019-10-16 2059
:::::: The code at line 2034 was first introduced by commit
:::::: d54725cd11a57c30f650260cfb0a92c268bdc3e0 netfilter: nf_tables: support for multiple devices per netdev hook
:::::: TO: Pablo Neira Ayuso <pablo@netfilter.org>
:::::: CC: Pablo Neira Ayuso <pablo@netfilter.org>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-02-01 8:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-02-01 8:53 net/netfilter/nf_tables_api.c:2034:18: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign] 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.