[mcgrof-next:20210813-sysfs-fixes-v8 4/10] fs/kernfs/file.c:262:54: error: too many arguments provided to function-like macro invocation
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git 20210813-sysfs-fixes-v8
head: f5b8aadeca76656caad8bccc795bfe7b0730230a
commit: 039380571a670bd61d4192cbabbfcdff60c7f630 [4/10] kernfs: add initial failure injection support
config: hexagon-randconfig-r041-20210814 (attached as .config)
compiler: clang version 12.0.0
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
# https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git/com...
git remote add mcgrof-next https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git
git fetch --no-tags mcgrof-next 20210813-sysfs-fixes-v8
git checkout 039380571a670bd61d4192cbabbfcdff60c7f630
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross O=build_dir ARCH=hexagon SHELL=/bin/bash fs/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
fs/kernfs/file.c:128:15: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
return NULL + !*ppos;
~~~~ ^
>> fs/kernfs/file.c:262:54: error: too many arguments provided to function-like macro invocation
if (kernfs_debug_should_wait(kernfs_fop_write_iter, at_start))
^
fs/kernfs/kernfs-internal.h:218:9: note: macro 'kernfs_debug_should_wait' defined here
#define kernfs_debug_should_wait(when) (false)
^
>> fs/kernfs/file.c:262:6: error: use of undeclared identifier 'kernfs_debug_should_wait'; did you mean 'kernfs_debug_wait'?
if (kernfs_debug_should_wait(kernfs_fop_write_iter, at_start))
^~~~~~~~~~~~~~~~~~~~~~~~
kernfs_debug_wait
fs/kernfs/kernfs-internal.h:219:20: note: 'kernfs_debug_wait' declared here
static inline void kernfs_debug_wait(void) {}
^
fs/kernfs/file.c:286:54: error: too many arguments provided to function-like macro invocation
if (kernfs_debug_should_wait(kernfs_fop_write_iter, before_mutex))
^
fs/kernfs/kernfs-internal.h:218:9: note: macro 'kernfs_debug_should_wait' defined here
#define kernfs_debug_should_wait(when) (false)
^
fs/kernfs/file.c:286:6: error: use of undeclared identifier 'kernfs_debug_should_wait'; did you mean 'kernfs_debug_wait'?
if (kernfs_debug_should_wait(kernfs_fop_write_iter, before_mutex))
^~~~~~~~~~~~~~~~~~~~~~~~
kernfs_debug_wait
fs/kernfs/kernfs-internal.h:219:20: note: 'kernfs_debug_wait' declared here
static inline void kernfs_debug_wait(void) {}
^
fs/kernfs/file.c:295:54: error: too many arguments provided to function-like macro invocation
if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_mutex))
^
fs/kernfs/kernfs-internal.h:218:9: note: macro 'kernfs_debug_should_wait' defined here
#define kernfs_debug_should_wait(when) (false)
^
fs/kernfs/file.c:295:6: error: use of undeclared identifier 'kernfs_debug_should_wait'; did you mean 'kernfs_debug_wait'?
if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_mutex))
^~~~~~~~~~~~~~~~~~~~~~~~
kernfs_debug_wait
fs/kernfs/kernfs-internal.h:219:20: note: 'kernfs_debug_wait' declared here
static inline void kernfs_debug_wait(void) {}
^
fs/kernfs/file.c:304:54: error: too many arguments provided to function-like macro invocation
if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_active))
^
fs/kernfs/kernfs-internal.h:218:9: note: macro 'kernfs_debug_should_wait' defined here
#define kernfs_debug_should_wait(when) (false)
^
fs/kernfs/file.c:304:6: error: use of undeclared identifier 'kernfs_debug_should_wait'; did you mean 'kernfs_debug_wait'?
if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_active))
^~~~~~~~~~~~~~~~~~~~~~~~
kernfs_debug_wait
fs/kernfs/kernfs-internal.h:219:20: note: 'kernfs_debug_wait' declared here
static inline void kernfs_debug_wait(void) {}
^
1 warning and 8 errors generated.
vim +262 fs/kernfs/file.c
244
245 /*
246 * Copy data in from userland and pass it to the matching kernfs write
247 * operation.
248 *
249 * There is no easy way for us to know if userspace is only doing a partial
250 * write, so we don't support them. We expect the entire buffer to come on
251 * the first write. Hint: if you're writing a value, first read the file,
252 * modify only the the value you're changing, then write entire buffer
253 * back.
254 */
255 static ssize_t kernfs_fop_write_iter(struct kiocb *iocb, struct iov_iter *iter)
256 {
257 struct kernfs_open_file *of = kernfs_of(iocb->ki_filp);
258 ssize_t len = iov_iter_count(iter);
259 const struct kernfs_ops *ops;
260 char *buf;
261
> 262 if (kernfs_debug_should_wait(kernfs_fop_write_iter, at_start))
263 kernfs_debug_wait();
264
265 if (of->atomic_write_len) {
266 if (len > of->atomic_write_len)
267 return -E2BIG;
268 } else {
269 len = min_t(size_t, len, PAGE_SIZE);
270 }
271
272 buf = of->prealloc_buf;
273 if (buf)
274 mutex_lock(&of->prealloc_mutex);
275 else
276 buf = kmalloc(len + 1, GFP_KERNEL);
277 if (!buf)
278 return -ENOMEM;
279
280 if (copy_from_iter(buf, len, iter) != len) {
281 len = -EFAULT;
282 goto out_free;
283 }
284 buf[len] = '\0'; /* guarantee string termination */
285
286 if (kernfs_debug_should_wait(kernfs_fop_write_iter, before_mutex))
287 kernfs_debug_wait();
288
289 /*
290 * @of->mutex nests outside active ref and is used both to ensure that
291 * the ops aren't called concurrently for the same open file.
292 */
293 mutex_lock(&of->mutex);
294
295 if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_mutex))
296 kernfs_debug_wait();
297
298 if (!kernfs_get_active(of->kn)) {
299 mutex_unlock(&of->mutex);
300 len = -ENODEV;
301 goto out_free;
302 }
303
304 if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_active))
305 kernfs_debug_wait();
306
307 ops = kernfs_ops(of->kn);
308 if (ops->write)
309 len = ops->write(of, buf, len, iocb->ki_pos);
310 else
311 len = -EINVAL;
312
313 kernfs_put_active(of->kn);
314 mutex_unlock(&of->mutex);
315
316 if (len > 0)
317 iocb->ki_pos += len;
318
319 out_free:
320 if (buf == of->prealloc_buf)
321 mutex_unlock(&of->prealloc_mutex);
322 else
323 kfree(buf);
324 return len;
325 }
326
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[mcgrof-next:20210813-sysfs-fixes-v8 4/10] fs/kernfs/file.c:262:69: error: macro "kernfs_debug_should_wait" passed 2 arguments, but takes just 1
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git 20210813-sysfs-fixes-v8
head: f5b8aadeca76656caad8bccc795bfe7b0730230a
commit: 039380571a670bd61d4192cbabbfcdff60c7f630 [4/10] kernfs: add initial failure injection support
config: nios2-defconfig (attached as .config)
compiler: nios2-linux-gcc (GCC) 11.2.0
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
# https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git/com...
git remote add mcgrof-next https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux-next.git
git fetch --no-tags mcgrof-next 20210813-sysfs-fixes-v8
git checkout 039380571a670bd61d4192cbabbfcdff60c7f630
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=nios2 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
fs/kernfs/file.c: In function 'kernfs_fop_write_iter':
>> fs/kernfs/file.c:262:69: error: macro "kernfs_debug_should_wait" passed 2 arguments, but takes just 1
262 | if (kernfs_debug_should_wait(kernfs_fop_write_iter, at_start))
| ^
In file included from fs/kernfs/file.c:19:
fs/kernfs/kernfs-internal.h:218: note: macro "kernfs_debug_should_wait" defined here
218 | #define kernfs_debug_should_wait(when) (false)
|
>> fs/kernfs/file.c:262:13: error: 'kernfs_debug_should_wait' undeclared (first use in this function); did you mean 'kernfs_debug_wait'?
262 | if (kernfs_debug_should_wait(kernfs_fop_write_iter, at_start))
| ^~~~~~~~~~~~~~~~~~~~~~~~
| kernfs_debug_wait
fs/kernfs/file.c:262:13: note: each undeclared identifier is reported only once for each function it appears in
fs/kernfs/file.c:286:73: error: macro "kernfs_debug_should_wait" passed 2 arguments, but takes just 1
286 | if (kernfs_debug_should_wait(kernfs_fop_write_iter, before_mutex))
| ^
In file included from fs/kernfs/file.c:19:
fs/kernfs/kernfs-internal.h:218: note: macro "kernfs_debug_should_wait" defined here
218 | #define kernfs_debug_should_wait(when) (false)
|
fs/kernfs/file.c:295:72: error: macro "kernfs_debug_should_wait" passed 2 arguments, but takes just 1
295 | if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_mutex))
| ^
In file included from fs/kernfs/file.c:19:
fs/kernfs/kernfs-internal.h:218: note: macro "kernfs_debug_should_wait" defined here
218 | #define kernfs_debug_should_wait(when) (false)
|
fs/kernfs/file.c:304:73: error: macro "kernfs_debug_should_wait" passed 2 arguments, but takes just 1
304 | if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_active))
| ^
In file included from fs/kernfs/file.c:19:
fs/kernfs/kernfs-internal.h:218: note: macro "kernfs_debug_should_wait" defined here
218 | #define kernfs_debug_should_wait(when) (false)
|
vim +/kernfs_debug_should_wait +262 fs/kernfs/file.c
244
245 /*
246 * Copy data in from userland and pass it to the matching kernfs write
247 * operation.
248 *
249 * There is no easy way for us to know if userspace is only doing a partial
250 * write, so we don't support them. We expect the entire buffer to come on
251 * the first write. Hint: if you're writing a value, first read the file,
252 * modify only the the value you're changing, then write entire buffer
253 * back.
254 */
255 static ssize_t kernfs_fop_write_iter(struct kiocb *iocb, struct iov_iter *iter)
256 {
257 struct kernfs_open_file *of = kernfs_of(iocb->ki_filp);
258 ssize_t len = iov_iter_count(iter);
259 const struct kernfs_ops *ops;
260 char *buf;
261
> 262 if (kernfs_debug_should_wait(kernfs_fop_write_iter, at_start))
263 kernfs_debug_wait();
264
265 if (of->atomic_write_len) {
266 if (len > of->atomic_write_len)
267 return -E2BIG;
268 } else {
269 len = min_t(size_t, len, PAGE_SIZE);
270 }
271
272 buf = of->prealloc_buf;
273 if (buf)
274 mutex_lock(&of->prealloc_mutex);
275 else
276 buf = kmalloc(len + 1, GFP_KERNEL);
277 if (!buf)
278 return -ENOMEM;
279
280 if (copy_from_iter(buf, len, iter) != len) {
281 len = -EFAULT;
282 goto out_free;
283 }
284 buf[len] = '\0'; /* guarantee string termination */
285
286 if (kernfs_debug_should_wait(kernfs_fop_write_iter, before_mutex))
287 kernfs_debug_wait();
288
289 /*
290 * @of->mutex nests outside active ref and is used both to ensure that
291 * the ops aren't called concurrently for the same open file.
292 */
293 mutex_lock(&of->mutex);
294
295 if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_mutex))
296 kernfs_debug_wait();
297
298 if (!kernfs_get_active(of->kn)) {
299 mutex_unlock(&of->mutex);
300 len = -ENODEV;
301 goto out_free;
302 }
303
304 if (kernfs_debug_should_wait(kernfs_fop_write_iter, after_active))
305 kernfs_debug_wait();
306
307 ops = kernfs_ops(of->kn);
308 if (ops->write)
309 len = ops->write(of, buf, len, iocb->ki_pos);
310 else
311 len = -EINVAL;
312
313 kernfs_put_active(of->kn);
314 mutex_unlock(&of->mutex);
315
316 if (len > 0)
317 iocb->ki_pos += len;
318
319 out_free:
320 if (buf == of->prealloc_buf)
321 mutex_unlock(&of->prealloc_mutex);
322 else
323 kfree(buf);
324 return len;
325 }
326
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[cxl-cxl:pending 28/38] drivers/cxl/core/mbox.c:327:5: warning: no previous prototype for function 'cxl_query_cmd'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git pending
head: fa809cc6feedcd2575b63def7135dfaf066266bb
commit: 3ff01745221f15018b58a075e83bdaf807e38d22 [28/38] cxl/mbox: Move mailbox and other non-PCI specific infrastructure to the core
config: s390-randconfig-r013-20210814 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 1f7b25ea76a925aca690da28de9d78db7ca99d0c)
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 s390 cross compiling tool for clang build
# apt-get install binutils-s390x-linux-gnu
# https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git/commit/?id=3f...
git remote add cxl-cxl https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git
git fetch --no-tags cxl-cxl pending
git checkout 3ff01745221f15018b58a075e83bdaf807e38d22
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=s390
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
In file included from drivers/cxl/core/mbox.c:3:
In file included from include/linux/io-64-nonatomic-lo-hi.h:5:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:464:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __raw_readb(PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:477:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:36:59: note: expanded from macro '__le16_to_cpu'
#define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
^
include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
#define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
^
In file included from drivers/cxl/core/mbox.c:3:
In file included from include/linux/io-64-nonatomic-lo-hi.h:5:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:490:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:34:59: note: expanded from macro '__le32_to_cpu'
#define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
^
include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
#define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
^
In file included from drivers/cxl/core/mbox.c:3:
In file included from include/linux/io-64-nonatomic-lo-hi.h:5:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:75:
include/asm-generic/io.h:501:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writeb(value, PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:511:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:521:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
__raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
~~~~~~~~~~ ^
include/asm-generic/io.h:609:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:617:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:625:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
readsl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:634:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesb(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:643:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesw(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
include/asm-generic/io.h:652:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
writesl(PCI_IOBASE + addr, buffer, count);
~~~~~~~~~~ ^
>> drivers/cxl/core/mbox.c:327:5: warning: no previous prototype for function 'cxl_query_cmd' [-Wmissing-prototypes]
int cxl_query_cmd(struct cxl_memdev *cxlmd,
^
drivers/cxl/core/mbox.c:327:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int cxl_query_cmd(struct cxl_memdev *cxlmd,
^
static
>> drivers/cxl/core/mbox.c:452:5: warning: no previous prototype for function 'cxl_send_cmd' [-Wmissing-prototypes]
int cxl_send_cmd(struct cxl_memdev *cxlmd, struct cxl_send_command __user *s)
^
drivers/cxl/core/mbox.c:452:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
int cxl_send_cmd(struct cxl_memdev *cxlmd, struct cxl_send_command __user *s)
^
static
>> drivers/cxl/core/mbox.c:819:13: warning: no previous prototype for function 'cxl_mbox_init' [-Wmissing-prototypes]
void __init cxl_mbox_init(void)
^
drivers/cxl/core/mbox.c:819:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void __init cxl_mbox_init(void)
^
static
>> drivers/cxl/core/mbox.c:829:6: warning: no previous prototype for function 'cxl_mbox_exit' [-Wmissing-prototypes]
void cxl_mbox_exit(void)
^
drivers/cxl/core/mbox.c:829:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
void cxl_mbox_exit(void)
^
static
16 warnings generated.
vim +/cxl_query_cmd +327 drivers/cxl/core/mbox.c
326
> 327 int cxl_query_cmd(struct cxl_memdev *cxlmd,
328 struct cxl_mem_query_commands __user *q)
329 {
330 struct device *dev = &cxlmd->dev;
331 struct cxl_mem_command *cmd;
332 u32 n_commands;
333 int j = 0;
334
335 dev_dbg(dev, "Query IOCTL\n");
336
337 if (get_user(n_commands, &q->n_commands))
338 return -EFAULT;
339
340 /* returns the total number if 0 elements are requested. */
341 if (n_commands == 0)
342 return put_user(cxl_cmd_count, &q->n_commands);
343
344 /*
345 * otherwise, return max(n_commands, total commands) cxl_command_info
346 * structures.
347 */
348 cxl_for_each_cmd(cmd) {
349 const struct cxl_command_info *info = &cmd->info;
350
351 if (copy_to_user(&q->commands[j++], info, sizeof(*info)))
352 return -EFAULT;
353
354 if (j == n_commands)
355 break;
356 }
357
358 return 0;
359 }
360
361 /**
362 * handle_mailbox_cmd_from_user() - Dispatch a mailbox command for userspace.
363 * @cxlm: The CXL memory device to communicate with.
364 * @cmd: The validated command.
365 * @in_payload: Pointer to userspace's input payload.
366 * @out_payload: Pointer to userspace's output payload.
367 * @size_out: (Input) Max payload size to copy out.
368 * (Output) Payload size hardware generated.
369 * @retval: Hardware generated return code from the operation.
370 *
371 * Return:
372 * * %0 - Mailbox transaction succeeded. This implies the mailbox
373 * protocol completed successfully not that the operation itself
374 * was successful.
375 * * %-ENOMEM - Couldn't allocate a bounce buffer.
376 * * %-EFAULT - Something happened with copy_to/from_user.
377 * * %-EINTR - Mailbox acquisition interrupted.
378 * * %-EXXX - Transaction level failures.
379 *
380 * Creates the appropriate mailbox command and dispatches it on behalf of a
381 * userspace request. The input and output payloads are copied between
382 * userspace.
383 *
384 * See cxl_send_cmd().
385 */
386 static int handle_mailbox_cmd_from_user(struct cxl_mem *cxlm,
387 const struct cxl_mem_command *cmd,
388 u64 in_payload, u64 out_payload,
389 s32 *size_out, u32 *retval)
390 {
391 struct device *dev = cxlm->dev;
392 struct cxl_mbox_cmd mbox_cmd = {
393 .opcode = cmd->opcode,
394 .size_in = cmd->info.size_in,
395 .size_out = cmd->info.size_out,
396 };
397 int rc;
398
399 if (cmd->info.size_out) {
400 mbox_cmd.payload_out = kvzalloc(cmd->info.size_out, GFP_KERNEL);
401 if (!mbox_cmd.payload_out)
402 return -ENOMEM;
403 }
404
405 if (cmd->info.size_in) {
406 mbox_cmd.payload_in = vmemdup_user(u64_to_user_ptr(in_payload),
407 cmd->info.size_in);
408 if (IS_ERR(mbox_cmd.payload_in)) {
409 kvfree(mbox_cmd.payload_out);
410 return PTR_ERR(mbox_cmd.payload_in);
411 }
412 }
413
414 dev_dbg(dev,
415 "Submitting %s command for user\n"
416 "\topcode: %x\n"
417 "\tsize: %ub\n",
418 cxl_command_names[cmd->info.id].name, mbox_cmd.opcode,
419 cmd->info.size_in);
420
421 dev_WARN_ONCE(dev, cmd->info.id == CXL_MEM_COMMAND_ID_RAW,
422 "raw command path used\n");
423
424 rc = cxlm->mbox_send(cxlm, &mbox_cmd);
425 if (rc)
426 goto out;
427
428 /*
429 * @size_out contains the max size that's allowed to be written back out
430 * to userspace. While the payload may have written more output than
431 * this it will have to be ignored.
432 */
433 if (mbox_cmd.size_out) {
434 dev_WARN_ONCE(dev, mbox_cmd.size_out > *size_out,
435 "Invalid return size\n");
436 if (copy_to_user(u64_to_user_ptr(out_payload),
437 mbox_cmd.payload_out, mbox_cmd.size_out)) {
438 rc = -EFAULT;
439 goto out;
440 }
441 }
442
443 *size_out = mbox_cmd.size_out;
444 *retval = mbox_cmd.return_code;
445
446 out:
447 kvfree(mbox_cmd.payload_in);
448 kvfree(mbox_cmd.payload_out);
449 return rc;
450 }
451
> 452 int cxl_send_cmd(struct cxl_memdev *cxlmd, struct cxl_send_command __user *s)
453 {
454 struct cxl_mem *cxlm = cxlmd->cxlm;
455 struct device *dev = &cxlmd->dev;
456 struct cxl_send_command send;
457 struct cxl_mem_command c;
458 int rc;
459
460 dev_dbg(dev, "Send IOCTL\n");
461
462 if (copy_from_user(&send, s, sizeof(send)))
463 return -EFAULT;
464
465 rc = cxl_validate_cmd_from_user(cxlmd->cxlm, &send, &c);
466 if (rc)
467 return rc;
468
469 /* Prepare to handle a full payload for variable sized output */
470 if (c.info.size_out < 0)
471 c.info.size_out = cxlm->payload_size;
472
473 rc = handle_mailbox_cmd_from_user(cxlm, &c, send.in.payload,
474 send.out.payload, &send.out.size,
475 &send.retval);
476 if (rc)
477 return rc;
478
479 if (copy_to_user(s, &send, sizeof(send)))
480 return -EFAULT;
481
482 return 0;
483 }
484
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
[cxl-cxl:pending 28/38] drivers/cxl/core/mbox.c:327:5: warning: no previous prototype for 'cxl_query_cmd'
by kernel test robot
tree: https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git pending
head: fa809cc6feedcd2575b63def7135dfaf066266bb
commit: 3ff01745221f15018b58a075e83bdaf807e38d22 [28/38] cxl/mbox: Move mailbox and other non-PCI specific infrastructure to the core
config: xtensa-randconfig-r004-20210814 (attached as .config)
compiler: xtensa-linux-gcc (GCC) 11.2.0
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
# https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git/commit/?id=3f...
git remote add cxl-cxl https://git.kernel.org/pub/scm/linux/kernel/git/cxl/cxl.git
git fetch --no-tags cxl-cxl pending
git checkout 3ff01745221f15018b58a075e83bdaf807e38d22
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=xtensa
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
>> drivers/cxl/core/mbox.c:327:5: warning: no previous prototype for 'cxl_query_cmd' [-Wmissing-prototypes]
327 | int cxl_query_cmd(struct cxl_memdev *cxlmd,
| ^~~~~~~~~~~~~
>> drivers/cxl/core/mbox.c:452:5: warning: no previous prototype for 'cxl_send_cmd' [-Wmissing-prototypes]
452 | int cxl_send_cmd(struct cxl_memdev *cxlmd, struct cxl_send_command __user *s)
| ^~~~~~~~~~~~
>> drivers/cxl/core/mbox.c:819:13: warning: no previous prototype for 'cxl_mbox_init' [-Wmissing-prototypes]
819 | void __init cxl_mbox_init(void)
| ^~~~~~~~~~~~~
>> drivers/cxl/core/mbox.c:829:6: warning: no previous prototype for 'cxl_mbox_exit' [-Wmissing-prototypes]
829 | void cxl_mbox_exit(void)
| ^~~~~~~~~~~~~
vim +/cxl_query_cmd +327 drivers/cxl/core/mbox.c
326
> 327 int cxl_query_cmd(struct cxl_memdev *cxlmd,
328 struct cxl_mem_query_commands __user *q)
329 {
330 struct device *dev = &cxlmd->dev;
331 struct cxl_mem_command *cmd;
332 u32 n_commands;
333 int j = 0;
334
335 dev_dbg(dev, "Query IOCTL\n");
336
337 if (get_user(n_commands, &q->n_commands))
338 return -EFAULT;
339
340 /* returns the total number if 0 elements are requested. */
341 if (n_commands == 0)
342 return put_user(cxl_cmd_count, &q->n_commands);
343
344 /*
345 * otherwise, return max(n_commands, total commands) cxl_command_info
346 * structures.
347 */
348 cxl_for_each_cmd(cmd) {
349 const struct cxl_command_info *info = &cmd->info;
350
351 if (copy_to_user(&q->commands[j++], info, sizeof(*info)))
352 return -EFAULT;
353
354 if (j == n_commands)
355 break;
356 }
357
358 return 0;
359 }
360
361 /**
362 * handle_mailbox_cmd_from_user() - Dispatch a mailbox command for userspace.
363 * @cxlm: The CXL memory device to communicate with.
364 * @cmd: The validated command.
365 * @in_payload: Pointer to userspace's input payload.
366 * @out_payload: Pointer to userspace's output payload.
367 * @size_out: (Input) Max payload size to copy out.
368 * (Output) Payload size hardware generated.
369 * @retval: Hardware generated return code from the operation.
370 *
371 * Return:
372 * * %0 - Mailbox transaction succeeded. This implies the mailbox
373 * protocol completed successfully not that the operation itself
374 * was successful.
375 * * %-ENOMEM - Couldn't allocate a bounce buffer.
376 * * %-EFAULT - Something happened with copy_to/from_user.
377 * * %-EINTR - Mailbox acquisition interrupted.
378 * * %-EXXX - Transaction level failures.
379 *
380 * Creates the appropriate mailbox command and dispatches it on behalf of a
381 * userspace request. The input and output payloads are copied between
382 * userspace.
383 *
384 * See cxl_send_cmd().
385 */
386 static int handle_mailbox_cmd_from_user(struct cxl_mem *cxlm,
387 const struct cxl_mem_command *cmd,
388 u64 in_payload, u64 out_payload,
389 s32 *size_out, u32 *retval)
390 {
391 struct device *dev = cxlm->dev;
392 struct cxl_mbox_cmd mbox_cmd = {
393 .opcode = cmd->opcode,
394 .size_in = cmd->info.size_in,
395 .size_out = cmd->info.size_out,
396 };
397 int rc;
398
399 if (cmd->info.size_out) {
400 mbox_cmd.payload_out = kvzalloc(cmd->info.size_out, GFP_KERNEL);
401 if (!mbox_cmd.payload_out)
402 return -ENOMEM;
403 }
404
405 if (cmd->info.size_in) {
406 mbox_cmd.payload_in = vmemdup_user(u64_to_user_ptr(in_payload),
407 cmd->info.size_in);
408 if (IS_ERR(mbox_cmd.payload_in)) {
409 kvfree(mbox_cmd.payload_out);
410 return PTR_ERR(mbox_cmd.payload_in);
411 }
412 }
413
414 dev_dbg(dev,
415 "Submitting %s command for user\n"
416 "\topcode: %x\n"
417 "\tsize: %ub\n",
418 cxl_command_names[cmd->info.id].name, mbox_cmd.opcode,
419 cmd->info.size_in);
420
421 dev_WARN_ONCE(dev, cmd->info.id == CXL_MEM_COMMAND_ID_RAW,
422 "raw command path used\n");
423
424 rc = cxlm->mbox_send(cxlm, &mbox_cmd);
425 if (rc)
426 goto out;
427
428 /*
429 * @size_out contains the max size that's allowed to be written back out
430 * to userspace. While the payload may have written more output than
431 * this it will have to be ignored.
432 */
433 if (mbox_cmd.size_out) {
434 dev_WARN_ONCE(dev, mbox_cmd.size_out > *size_out,
435 "Invalid return size\n");
436 if (copy_to_user(u64_to_user_ptr(out_payload),
437 mbox_cmd.payload_out, mbox_cmd.size_out)) {
438 rc = -EFAULT;
439 goto out;
440 }
441 }
442
443 *size_out = mbox_cmd.size_out;
444 *retval = mbox_cmd.return_code;
445
446 out:
447 kvfree(mbox_cmd.payload_in);
448 kvfree(mbox_cmd.payload_out);
449 return rc;
450 }
451
> 452 int cxl_send_cmd(struct cxl_memdev *cxlmd, struct cxl_send_command __user *s)
453 {
454 struct cxl_mem *cxlm = cxlmd->cxlm;
455 struct device *dev = &cxlmd->dev;
456 struct cxl_send_command send;
457 struct cxl_mem_command c;
458 int rc;
459
460 dev_dbg(dev, "Send IOCTL\n");
461
462 if (copy_from_user(&send, s, sizeof(send)))
463 return -EFAULT;
464
465 rc = cxl_validate_cmd_from_user(cxlmd->cxlm, &send, &c);
466 if (rc)
467 return rc;
468
469 /* Prepare to handle a full payload for variable sized output */
470 if (c.info.size_out < 0)
471 c.info.size_out = cxlm->payload_size;
472
473 rc = handle_mailbox_cmd_from_user(cxlm, &c, send.in.payload,
474 send.out.payload, &send.out.size,
475 &send.retval);
476 if (rc)
477 return rc;
478
479 if (copy_to_user(s, &send, sizeof(send)))
480 return -EFAULT;
481
482 return 0;
483 }
484
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [PATCH 2/3] cifs: move calc_lanman_hash to smb1ops.c
by kernel test robot
Hi Ronnie,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on cifs/for-next]
[also build test ERROR on v5.14-rc5 next-20210813]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Ronnie-Sahlberg/cifs-only-compil...
base: git://git.samba.org/sfrench/cifs-2.6.git for-next
config: hexagon-randconfig-r041-20210814 (attached as .config)
compiler: clang version 12.0.0
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
# https://github.com/0day-ci/linux/commit/2a89ec2d759f8c3c9035498c5ef1bf66a...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Ronnie-Sahlberg/cifs-only-compile-in-smb1ops-c-if-we-configure-CIFS_ALLOW_INSECURE_LEGACY/20210814-045731
git checkout 2a89ec2d759f8c3c9035498c5ef1bf66a8f8b07b
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=hexagon
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
>> fs/cifs/smb1ops.c:51:26: error: implicitly declaring library function 'toupper' with type 'int (int)' [-Werror,-Wimplicit-function-declaration]
password_with_pad[i] = toupper(password_with_pad[i]);
^
fs/cifs/smb1ops.c:51:26: note: include the header <ctype.h> or explicitly provide a declaration for 'toupper'
1 error generated.
vim +51 fs/cifs/smb1ops.c
16
17 #ifdef CONFIG_CIFS_WEAK_PW_HASH
18 int calc_lanman_hash(const char *password, const char *cryptkey, bool encrypt,
19 char *lnm_session_key)
20 {
21 int i, len;
22 int rc;
23 char password_with_pad[CIFS_ENCPWD_SIZE] = {0};
24
25 if (password) {
26 for (len = 0; len < CIFS_ENCPWD_SIZE; len++)
27 if (!password[len])
28 break;
29
30 memcpy(password_with_pad, password, len);
31 }
32
33 if (!encrypt && global_secflags & CIFSSEC_MAY_PLNTXT) {
34 memcpy(lnm_session_key, password_with_pad,
35 CIFS_ENCPWD_SIZE);
36 return 0;
37 }
38
39 /* calculate old style session key */
40 /* calling toupper is less broken than repeatedly
41 calling nls_toupper would be since that will never
42 work for UTF8, but neither handles multibyte code pages
43 but the only alternative would be converting to UCS-16 (Unicode)
44 (using a routine something like UniStrupr) then
45 uppercasing and then converting back from Unicode - which
46 would only worth doing it if we knew it were utf8. Basically
47 utf8 and other multibyte codepages each need their own strupper
48 function since a byte at a time will ont work. */
49
50 for (i = 0; i < CIFS_ENCPWD_SIZE; i++)
> 51 password_with_pad[i] = toupper(password_with_pad[i]);
52
53 rc = SMBencrypt(password_with_pad, cryptkey, lnm_session_key);
54
55 return rc;
56 }
57 #endif /* CIFS_WEAK_PW_HASH */
58
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month
Re: [PATCH] mm/mempolicy: fix a race between offset_il_node and mpol_rebind_task
by kernel test robot
Hi yanghui,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on v5.14-rc5]
[cannot apply to hnaz-linux-mm/master next-20210813]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/yanghui/mm-mempolicy-fix-a-race-...
base: 36a21d51725af2ce0700c6ebcb6b9594aac658a6
config: ia64-randconfig-c024-20210813 (attached as .config)
compiler: ia64-linux-gcc (GCC) 11.2.0
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
# https://github.com/0day-ci/linux/commit/99d8d888eb92ea46a5f4883773f3edaee...
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review yanghui/mm-mempolicy-fix-a-race-between-offset_il_node-and-mpol_rebind_task/20210814-004451
git checkout 99d8d888eb92ea46a5f4883773f3edaee5ccd28e
# save the attached .config to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=ia64 SHELL=/bin/bash
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from arch/ia64/include/asm/pgtable.h:153,
from include/linux/pgtable.h:6,
from arch/ia64/include/asm/uaccess.h:40,
from include/linux/uaccess.h:11,
from include/linux/sched/task.h:11,
from include/linux/sched/signal.h:9,
from include/linux/rcuwait.h:6,
from include/linux/percpu-rwsem.h:7,
from include/linux/fs.h:33,
from include/linux/dax.h:5,
from include/linux/mempolicy.h:11,
from mm/mempolicy.c:70:
arch/ia64/include/asm/mmu_context.h: In function 'reload_context':
arch/ia64/include/asm/mmu_context.h:127:48: warning: variable 'old_rr4' set but not used [-Wunused-but-set-variable]
127 | unsigned long rr0, rr1, rr2, rr3, rr4, old_rr4;
| ^~~~~~~
In file included from <command-line>:
mm/mempolicy.c: In function 'mpol_new_interleave':
>> include/linux/compiler_types.h:328:45: error: call to '__compiletime_assert_319' declared with attribute error: Unsupported access size for {READ,WRITE}_ONCE().
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:309:25: note: in definition of macro '__compiletime_assert'
309 | prefix ## suffix(); \
| ^~~~~~
include/linux/compiler_types.h:328:9: note: in expansion of macro '_compiletime_assert'
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:60:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
60 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mm/mempolicy.c:196:9: note: in expansion of macro 'WRITE_ONCE'
196 | WRITE_ONCE(pol->nodes, *nodes);
| ^~~~~~~~~~
mm/mempolicy.c: In function 'mpol_new_bind':
include/linux/compiler_types.h:328:45: error: call to '__compiletime_assert_320' declared with attribute error: Unsupported access size for {READ,WRITE}_ONCE().
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:309:25: note: in definition of macro '__compiletime_assert'
309 | prefix ## suffix(); \
| ^~~~~~
include/linux/compiler_types.h:328:9: note: in expansion of macro '_compiletime_assert'
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:60:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
60 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mm/mempolicy.c:214:9: note: in expansion of macro 'WRITE_ONCE'
214 | WRITE_ONCE(pol->nodes, *nodes);
| ^~~~~~~~~~
mm/mempolicy.c: In function 'offset_il_node':
include/linux/compiler_types.h:328:45: error: call to '__compiletime_assert_326' declared with attribute error: Unsupported access size for {READ,WRITE}_ONCE().
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:309:25: note: in definition of macro '__compiletime_assert'
309 | prefix ## suffix(); \
| ^~~~~~
include/linux/compiler_types.h:328:9: note: in expansion of macro '_compiletime_assert'
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:49:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
49 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mm/mempolicy.c:1968:31: note: in expansion of macro 'READ_ONCE'
1968 | nodemask_t nodemask = READ_ONCE(pol->nodes);
| ^~~~~~~~~
mm/mempolicy.c: In function 'mpol_rebind_nodemask':
include/linux/compiler_types.h:328:45: error: call to '__compiletime_assert_321' declared with attribute error: Unsupported access size for {READ,WRITE}_ONCE().
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^
include/linux/compiler_types.h:309:25: note: in definition of macro '__compiletime_assert'
309 | prefix ## suffix(); \
| ^~~~~~
include/linux/compiler_types.h:328:9: note: in expansion of macro '_compiletime_assert'
328 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:36:9: note: in expansion of macro 'compiletime_assert'
36 | compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
| ^~~~~~~~~~~~~~~~~~
include/asm-generic/rwonce.h:60:9: note: in expansion of macro 'compiletime_assert_rwonce_type'
60 | compiletime_assert_rwonce_type(x); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mm/mempolicy.c:337:9: note: in expansion of macro 'WRITE_ONCE'
337 | WRITE_ONCE(pol->nodes, tmp);
| ^~~~~~~~~~
vim +/__compiletime_assert_319 +328 include/linux/compiler_types.h
eb5c2d4b45e3d2d Will Deacon 2020-07-21 314
eb5c2d4b45e3d2d Will Deacon 2020-07-21 315 #define _compiletime_assert(condition, msg, prefix, suffix) \
eb5c2d4b45e3d2d Will Deacon 2020-07-21 316 __compiletime_assert(condition, msg, prefix, suffix)
eb5c2d4b45e3d2d Will Deacon 2020-07-21 317
eb5c2d4b45e3d2d Will Deacon 2020-07-21 318 /**
eb5c2d4b45e3d2d Will Deacon 2020-07-21 319 * compiletime_assert - break build and emit msg if condition is false
eb5c2d4b45e3d2d Will Deacon 2020-07-21 320 * @condition: a compile-time constant condition to check
eb5c2d4b45e3d2d Will Deacon 2020-07-21 321 * @msg: a message to emit if condition is false
eb5c2d4b45e3d2d Will Deacon 2020-07-21 322 *
eb5c2d4b45e3d2d Will Deacon 2020-07-21 323 * In tradition of POSIX assert, this macro will break the build if the
eb5c2d4b45e3d2d Will Deacon 2020-07-21 324 * supplied condition is *false*, emitting the supplied error message if the
eb5c2d4b45e3d2d Will Deacon 2020-07-21 325 * compiler has support to do so.
eb5c2d4b45e3d2d Will Deacon 2020-07-21 326 */
eb5c2d4b45e3d2d Will Deacon 2020-07-21 327 #define compiletime_assert(condition, msg) \
eb5c2d4b45e3d2d Will Deacon 2020-07-21 @328 _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
eb5c2d4b45e3d2d Will Deacon 2020-07-21 329
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
1 year, 1 month