From: kernel test robot <lkp@intel.com>
To: Pablo Neira Ayuso <pablo@netfilter.org>, netfilter-devel@vger.kernel.org
Cc: kbuild-all@lists.01.org
Subject: Re: [PATCH nf] netfilter: nft_dynset: fix timeouts layer than 23 days
Date: Thu, 10 Dec 2020 19:16:00 +0800 [thread overview]
Message-ID: <202012101916.DVBzRrPR-lkp@intel.com> (raw)
In-Reply-To: <20201208173810.14018-1-pablo@netfilter.org>
[-- Attachment #1: Type: text/plain, Size: 8939 bytes --]
Hi Pablo,
I love your patch! Yet something to improve:
[auto build test ERROR on nf/master]
url: https://github.com/0day-ci/linux/commits/Pablo-Neira-Ayuso/netfilter-nft_dynset-fix-timeouts-layer-than-23-days/20201209-014206
base: https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git master
config: x86_64-rhel (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/cecc29f4c0cd9cf5b095647a11c29b228de7939b
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Pablo-Neira-Ayuso/netfilter-nft_dynset-fix-timeouts-layer-than-23-days/20201209-014206
git checkout cecc29f4c0cd9cf5b095647a11c29b228de7939b
# save the attached .config to linux build tree
make W=1 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 >>):
net/netfilter/nft_dynset.c: In function 'nft_dynset_init':
>> net/netfilter/nft_dynset.c:160:13: error: implicit declaration of function 'nf_msecs_to_jiffies'; did you mean 'nf_msecs_to_jiffies64'? [-Werror=implicit-function-declaration]
160 | timeout = nf_msecs_to_jiffies(be64_to_cpu(nla_get_be64(tb[NFTA_DYNSET_TIMEOUT])));
| ^~~~~~~~~~~~~~~~~~~
| nf_msecs_to_jiffies64
In file included from include/linux/swab.h:5,
from include/uapi/linux/byteorder/little_endian.h:13,
from include/linux/byteorder/little_endian.h:5,
from arch/x86/include/uapi/asm/byteorder.h:5,
from include/asm-generic/bitops/le.h:6,
from arch/x86/include/asm/bitops.h:395,
from include/linux/bitops.h:29,
from include/linux/kernel.h:12,
from net/netfilter/nft_dynset.c:6:
net/netfilter/nft_dynset.c: In function 'nft_dynset_dump':
>> net/netfilter/nft_dynset.c:269:17: error: implicit declaration of function 'nf_jiffies_to_msecs'; did you mean 'nf_jiffies64_to_msecs'? [-Werror=implicit-function-declaration]
269 | cpu_to_be64(nf_jiffies_to_msecs(priv->timeout)),
| ^~~~~~~~~~~~~~~~~~~
include/uapi/linux/swab.h:128:54: note: in definition of macro '__swab64'
128 | #define __swab64(x) (__u64)__builtin_bswap64((__u64)(x))
| ^
include/linux/byteorder/generic.h:92:21: note: in expansion of macro '__cpu_to_be64'
92 | #define cpu_to_be64 __cpu_to_be64
| ^~~~~~~~~~~~~
net/netfilter/nft_dynset.c:269:5: note: in expansion of macro 'cpu_to_be64'
269 | cpu_to_be64(nf_jiffies_to_msecs(priv->timeout)),
| ^~~~~~~~~~~
cc1: some warnings being treated as errors
vim +160 net/netfilter/nft_dynset.c
104
105 static int nft_dynset_init(const struct nft_ctx *ctx,
106 const struct nft_expr *expr,
107 const struct nlattr * const tb[])
108 {
109 struct nft_dynset *priv = nft_expr_priv(expr);
110 u8 genmask = nft_genmask_next(ctx->net);
111 struct nft_set *set;
112 u64 timeout;
113 int err;
114
115 lockdep_assert_held(&ctx->net->nft.commit_mutex);
116
117 if (tb[NFTA_DYNSET_SET_NAME] == NULL ||
118 tb[NFTA_DYNSET_OP] == NULL ||
119 tb[NFTA_DYNSET_SREG_KEY] == NULL)
120 return -EINVAL;
121
122 if (tb[NFTA_DYNSET_FLAGS]) {
123 u32 flags = ntohl(nla_get_be32(tb[NFTA_DYNSET_FLAGS]));
124
125 if (flags & ~NFT_DYNSET_F_INV)
126 return -EINVAL;
127 if (flags & NFT_DYNSET_F_INV)
128 priv->invert = true;
129 }
130
131 set = nft_set_lookup_global(ctx->net, ctx->table,
132 tb[NFTA_DYNSET_SET_NAME],
133 tb[NFTA_DYNSET_SET_ID], genmask);
134 if (IS_ERR(set))
135 return PTR_ERR(set);
136
137 if (set->ops->update == NULL)
138 return -EOPNOTSUPP;
139
140 if (set->flags & NFT_SET_CONSTANT)
141 return -EBUSY;
142
143 priv->op = ntohl(nla_get_be32(tb[NFTA_DYNSET_OP]));
144 switch (priv->op) {
145 case NFT_DYNSET_OP_ADD:
146 case NFT_DYNSET_OP_DELETE:
147 break;
148 case NFT_DYNSET_OP_UPDATE:
149 if (!(set->flags & NFT_SET_TIMEOUT))
150 return -EOPNOTSUPP;
151 break;
152 default:
153 return -EOPNOTSUPP;
154 }
155
156 timeout = 0;
157 if (tb[NFTA_DYNSET_TIMEOUT] != NULL) {
158 if (!(set->flags & NFT_SET_TIMEOUT))
159 return -EINVAL;
> 160 timeout = nf_msecs_to_jiffies(be64_to_cpu(nla_get_be64(tb[NFTA_DYNSET_TIMEOUT])));
161 }
162
163 priv->sreg_key = nft_parse_register(tb[NFTA_DYNSET_SREG_KEY]);
164 err = nft_validate_register_load(priv->sreg_key, set->klen);
165 if (err < 0)
166 return err;
167
168 if (tb[NFTA_DYNSET_SREG_DATA] != NULL) {
169 if (!(set->flags & NFT_SET_MAP))
170 return -EINVAL;
171 if (set->dtype == NFT_DATA_VERDICT)
172 return -EOPNOTSUPP;
173
174 priv->sreg_data = nft_parse_register(tb[NFTA_DYNSET_SREG_DATA]);
175 err = nft_validate_register_load(priv->sreg_data, set->dlen);
176 if (err < 0)
177 return err;
178 } else if (set->flags & NFT_SET_MAP)
179 return -EINVAL;
180
181 if (tb[NFTA_DYNSET_EXPR] != NULL) {
182 if (!(set->flags & NFT_SET_EVAL))
183 return -EINVAL;
184
185 priv->expr = nft_set_elem_expr_alloc(ctx, set,
186 tb[NFTA_DYNSET_EXPR]);
187 if (IS_ERR(priv->expr))
188 return PTR_ERR(priv->expr);
189
190 if (set->expr && set->expr->ops != priv->expr->ops) {
191 err = -EOPNOTSUPP;
192 goto err_expr_free;
193 }
194 }
195
196 nft_set_ext_prepare(&priv->tmpl);
197 nft_set_ext_add_length(&priv->tmpl, NFT_SET_EXT_KEY, set->klen);
198 if (set->flags & NFT_SET_MAP)
199 nft_set_ext_add_length(&priv->tmpl, NFT_SET_EXT_DATA, set->dlen);
200 if (priv->expr != NULL)
201 nft_set_ext_add_length(&priv->tmpl, NFT_SET_EXT_EXPR,
202 priv->expr->ops->size);
203 if (set->flags & NFT_SET_TIMEOUT) {
204 if (timeout || set->timeout)
205 nft_set_ext_add(&priv->tmpl, NFT_SET_EXT_EXPIRATION);
206 }
207
208 priv->timeout = timeout;
209
210 err = nf_tables_bind_set(ctx, set, &priv->binding);
211 if (err < 0)
212 goto err_expr_free;
213
214 if (set->size == 0)
215 set->size = 0xffff;
216
217 priv->set = set;
218 return 0;
219
220 err_expr_free:
221 if (priv->expr != NULL)
222 nft_expr_destroy(ctx, priv->expr);
223 return err;
224 }
225
226 static void nft_dynset_deactivate(const struct nft_ctx *ctx,
227 const struct nft_expr *expr,
228 enum nft_trans_phase phase)
229 {
230 struct nft_dynset *priv = nft_expr_priv(expr);
231
232 nf_tables_deactivate_set(ctx, priv->set, &priv->binding, phase);
233 }
234
235 static void nft_dynset_activate(const struct nft_ctx *ctx,
236 const struct nft_expr *expr)
237 {
238 struct nft_dynset *priv = nft_expr_priv(expr);
239
240 priv->set->use++;
241 }
242
243 static void nft_dynset_destroy(const struct nft_ctx *ctx,
244 const struct nft_expr *expr)
245 {
246 struct nft_dynset *priv = nft_expr_priv(expr);
247
248 if (priv->expr != NULL)
249 nft_expr_destroy(ctx, priv->expr);
250
251 nf_tables_destroy_set(ctx, priv->set);
252 }
253
254 static int nft_dynset_dump(struct sk_buff *skb, const struct nft_expr *expr)
255 {
256 const struct nft_dynset *priv = nft_expr_priv(expr);
257 u32 flags = priv->invert ? NFT_DYNSET_F_INV : 0;
258
259 if (nft_dump_register(skb, NFTA_DYNSET_SREG_KEY, priv->sreg_key))
260 goto nla_put_failure;
261 if (priv->set->flags & NFT_SET_MAP &&
262 nft_dump_register(skb, NFTA_DYNSET_SREG_DATA, priv->sreg_data))
263 goto nla_put_failure;
264 if (nla_put_be32(skb, NFTA_DYNSET_OP, htonl(priv->op)))
265 goto nla_put_failure;
266 if (nla_put_string(skb, NFTA_DYNSET_SET_NAME, priv->set->name))
267 goto nla_put_failure;
268 if (nla_put_be64(skb, NFTA_DYNSET_TIMEOUT,
> 269 cpu_to_be64(nf_jiffies_to_msecs(priv->timeout)),
270 NFTA_DYNSET_PAD))
271 goto nla_put_failure;
272 if (priv->expr && nft_expr_dump(skb, NFTA_DYNSET_EXPR, priv->expr))
273 goto nla_put_failure;
274 if (nla_put_be32(skb, NFTA_DYNSET_FLAGS, htonl(flags)))
275 goto nla_put_failure;
276 return 0;
277
278 nla_put_failure:
279 return -1;
280 }
281
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 45618 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH nf] netfilter: nft_dynset: fix timeouts layer than 23 days
Date: Thu, 10 Dec 2020 19:16:00 +0800 [thread overview]
Message-ID: <202012101916.DVBzRrPR-lkp@intel.com> (raw)
In-Reply-To: <20201208173810.14018-1-pablo@netfilter.org>
[-- Attachment #1: Type: text/plain, Size: 9177 bytes --]
Hi Pablo,
I love your patch! Yet something to improve:
[auto build test ERROR on nf/master]
url: https://github.com/0day-ci/linux/commits/Pablo-Neira-Ayuso/netfilter-nft_dynset-fix-timeouts-layer-than-23-days/20201209-014206
base: https://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf.git master
config: x86_64-rhel (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce (this is a W=1 build):
# https://github.com/0day-ci/linux/commit/cecc29f4c0cd9cf5b095647a11c29b228de7939b
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Pablo-Neira-Ayuso/netfilter-nft_dynset-fix-timeouts-layer-than-23-days/20201209-014206
git checkout cecc29f4c0cd9cf5b095647a11c29b228de7939b
# save the attached .config to linux build tree
make W=1 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 >>):
net/netfilter/nft_dynset.c: In function 'nft_dynset_init':
>> net/netfilter/nft_dynset.c:160:13: error: implicit declaration of function 'nf_msecs_to_jiffies'; did you mean 'nf_msecs_to_jiffies64'? [-Werror=implicit-function-declaration]
160 | timeout = nf_msecs_to_jiffies(be64_to_cpu(nla_get_be64(tb[NFTA_DYNSET_TIMEOUT])));
| ^~~~~~~~~~~~~~~~~~~
| nf_msecs_to_jiffies64
In file included from include/linux/swab.h:5,
from include/uapi/linux/byteorder/little_endian.h:13,
from include/linux/byteorder/little_endian.h:5,
from arch/x86/include/uapi/asm/byteorder.h:5,
from include/asm-generic/bitops/le.h:6,
from arch/x86/include/asm/bitops.h:395,
from include/linux/bitops.h:29,
from include/linux/kernel.h:12,
from net/netfilter/nft_dynset.c:6:
net/netfilter/nft_dynset.c: In function 'nft_dynset_dump':
>> net/netfilter/nft_dynset.c:269:17: error: implicit declaration of function 'nf_jiffies_to_msecs'; did you mean 'nf_jiffies64_to_msecs'? [-Werror=implicit-function-declaration]
269 | cpu_to_be64(nf_jiffies_to_msecs(priv->timeout)),
| ^~~~~~~~~~~~~~~~~~~
include/uapi/linux/swab.h:128:54: note: in definition of macro '__swab64'
128 | #define __swab64(x) (__u64)__builtin_bswap64((__u64)(x))
| ^
include/linux/byteorder/generic.h:92:21: note: in expansion of macro '__cpu_to_be64'
92 | #define cpu_to_be64 __cpu_to_be64
| ^~~~~~~~~~~~~
net/netfilter/nft_dynset.c:269:5: note: in expansion of macro 'cpu_to_be64'
269 | cpu_to_be64(nf_jiffies_to_msecs(priv->timeout)),
| ^~~~~~~~~~~
cc1: some warnings being treated as errors
vim +160 net/netfilter/nft_dynset.c
104
105 static int nft_dynset_init(const struct nft_ctx *ctx,
106 const struct nft_expr *expr,
107 const struct nlattr * const tb[])
108 {
109 struct nft_dynset *priv = nft_expr_priv(expr);
110 u8 genmask = nft_genmask_next(ctx->net);
111 struct nft_set *set;
112 u64 timeout;
113 int err;
114
115 lockdep_assert_held(&ctx->net->nft.commit_mutex);
116
117 if (tb[NFTA_DYNSET_SET_NAME] == NULL ||
118 tb[NFTA_DYNSET_OP] == NULL ||
119 tb[NFTA_DYNSET_SREG_KEY] == NULL)
120 return -EINVAL;
121
122 if (tb[NFTA_DYNSET_FLAGS]) {
123 u32 flags = ntohl(nla_get_be32(tb[NFTA_DYNSET_FLAGS]));
124
125 if (flags & ~NFT_DYNSET_F_INV)
126 return -EINVAL;
127 if (flags & NFT_DYNSET_F_INV)
128 priv->invert = true;
129 }
130
131 set = nft_set_lookup_global(ctx->net, ctx->table,
132 tb[NFTA_DYNSET_SET_NAME],
133 tb[NFTA_DYNSET_SET_ID], genmask);
134 if (IS_ERR(set))
135 return PTR_ERR(set);
136
137 if (set->ops->update == NULL)
138 return -EOPNOTSUPP;
139
140 if (set->flags & NFT_SET_CONSTANT)
141 return -EBUSY;
142
143 priv->op = ntohl(nla_get_be32(tb[NFTA_DYNSET_OP]));
144 switch (priv->op) {
145 case NFT_DYNSET_OP_ADD:
146 case NFT_DYNSET_OP_DELETE:
147 break;
148 case NFT_DYNSET_OP_UPDATE:
149 if (!(set->flags & NFT_SET_TIMEOUT))
150 return -EOPNOTSUPP;
151 break;
152 default:
153 return -EOPNOTSUPP;
154 }
155
156 timeout = 0;
157 if (tb[NFTA_DYNSET_TIMEOUT] != NULL) {
158 if (!(set->flags & NFT_SET_TIMEOUT))
159 return -EINVAL;
> 160 timeout = nf_msecs_to_jiffies(be64_to_cpu(nla_get_be64(tb[NFTA_DYNSET_TIMEOUT])));
161 }
162
163 priv->sreg_key = nft_parse_register(tb[NFTA_DYNSET_SREG_KEY]);
164 err = nft_validate_register_load(priv->sreg_key, set->klen);
165 if (err < 0)
166 return err;
167
168 if (tb[NFTA_DYNSET_SREG_DATA] != NULL) {
169 if (!(set->flags & NFT_SET_MAP))
170 return -EINVAL;
171 if (set->dtype == NFT_DATA_VERDICT)
172 return -EOPNOTSUPP;
173
174 priv->sreg_data = nft_parse_register(tb[NFTA_DYNSET_SREG_DATA]);
175 err = nft_validate_register_load(priv->sreg_data, set->dlen);
176 if (err < 0)
177 return err;
178 } else if (set->flags & NFT_SET_MAP)
179 return -EINVAL;
180
181 if (tb[NFTA_DYNSET_EXPR] != NULL) {
182 if (!(set->flags & NFT_SET_EVAL))
183 return -EINVAL;
184
185 priv->expr = nft_set_elem_expr_alloc(ctx, set,
186 tb[NFTA_DYNSET_EXPR]);
187 if (IS_ERR(priv->expr))
188 return PTR_ERR(priv->expr);
189
190 if (set->expr && set->expr->ops != priv->expr->ops) {
191 err = -EOPNOTSUPP;
192 goto err_expr_free;
193 }
194 }
195
196 nft_set_ext_prepare(&priv->tmpl);
197 nft_set_ext_add_length(&priv->tmpl, NFT_SET_EXT_KEY, set->klen);
198 if (set->flags & NFT_SET_MAP)
199 nft_set_ext_add_length(&priv->tmpl, NFT_SET_EXT_DATA, set->dlen);
200 if (priv->expr != NULL)
201 nft_set_ext_add_length(&priv->tmpl, NFT_SET_EXT_EXPR,
202 priv->expr->ops->size);
203 if (set->flags & NFT_SET_TIMEOUT) {
204 if (timeout || set->timeout)
205 nft_set_ext_add(&priv->tmpl, NFT_SET_EXT_EXPIRATION);
206 }
207
208 priv->timeout = timeout;
209
210 err = nf_tables_bind_set(ctx, set, &priv->binding);
211 if (err < 0)
212 goto err_expr_free;
213
214 if (set->size == 0)
215 set->size = 0xffff;
216
217 priv->set = set;
218 return 0;
219
220 err_expr_free:
221 if (priv->expr != NULL)
222 nft_expr_destroy(ctx, priv->expr);
223 return err;
224 }
225
226 static void nft_dynset_deactivate(const struct nft_ctx *ctx,
227 const struct nft_expr *expr,
228 enum nft_trans_phase phase)
229 {
230 struct nft_dynset *priv = nft_expr_priv(expr);
231
232 nf_tables_deactivate_set(ctx, priv->set, &priv->binding, phase);
233 }
234
235 static void nft_dynset_activate(const struct nft_ctx *ctx,
236 const struct nft_expr *expr)
237 {
238 struct nft_dynset *priv = nft_expr_priv(expr);
239
240 priv->set->use++;
241 }
242
243 static void nft_dynset_destroy(const struct nft_ctx *ctx,
244 const struct nft_expr *expr)
245 {
246 struct nft_dynset *priv = nft_expr_priv(expr);
247
248 if (priv->expr != NULL)
249 nft_expr_destroy(ctx, priv->expr);
250
251 nf_tables_destroy_set(ctx, priv->set);
252 }
253
254 static int nft_dynset_dump(struct sk_buff *skb, const struct nft_expr *expr)
255 {
256 const struct nft_dynset *priv = nft_expr_priv(expr);
257 u32 flags = priv->invert ? NFT_DYNSET_F_INV : 0;
258
259 if (nft_dump_register(skb, NFTA_DYNSET_SREG_KEY, priv->sreg_key))
260 goto nla_put_failure;
261 if (priv->set->flags & NFT_SET_MAP &&
262 nft_dump_register(skb, NFTA_DYNSET_SREG_DATA, priv->sreg_data))
263 goto nla_put_failure;
264 if (nla_put_be32(skb, NFTA_DYNSET_OP, htonl(priv->op)))
265 goto nla_put_failure;
266 if (nla_put_string(skb, NFTA_DYNSET_SET_NAME, priv->set->name))
267 goto nla_put_failure;
268 if (nla_put_be64(skb, NFTA_DYNSET_TIMEOUT,
> 269 cpu_to_be64(nf_jiffies_to_msecs(priv->timeout)),
270 NFTA_DYNSET_PAD))
271 goto nla_put_failure;
272 if (priv->expr && nft_expr_dump(skb, NFTA_DYNSET_EXPR, priv->expr))
273 goto nla_put_failure;
274 if (nla_put_be32(skb, NFTA_DYNSET_FLAGS, htonl(flags)))
275 goto nla_put_failure;
276 return 0;
277
278 nla_put_failure:
279 return -1;
280 }
281
---
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: 45618 bytes --]
next prev parent reply other threads:[~2020-12-10 11:17 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-08 17:38 [PATCH nf] netfilter: nft_dynset: fix timeouts layer than 23 days Pablo Neira Ayuso
2020-12-10 11:16 ` kernel test robot [this message]
2020-12-10 11:16 ` kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202012101916.DVBzRrPR-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.