CC: [email protected] CC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Arnaud Pouliquen <[email protected]> TO: "Greg Kroah-Hartman" <[email protected]> TO: Jiri Slaby <[email protected]> CC: Bjorn Andersson <[email protected]> CC: Mathieu Poirier <[email protected]> CC: [email protected] CC: [email protected] CC: [email protected] CC: [email protected]
Hi Arnaud, I love your patch! Perhaps something to improve: [auto build test WARNING on tty/tty-testing] [also build test WARNING on linux/master linus/master v5.16-rc7 next-20211224] [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/Arnaud-Pouliquen/tty-rpmsg-Fix-race-condition-releasing-tty-port/20211215-235006 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git tty-testing :::::: branch date: 3 weeks ago :::::: commit date: 3 weeks ago config: riscv-randconfig-c006-20211226 (https://download.01.org/0day-ci/archive/20220102/[email protected]/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project a9e8b1ee7fd44b53c555a7823ae8fd1a8209c520) 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://github.com/0day-ci/linux/commit/827a192629877cd67f12b906fb467d46f3526db5 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Arnaud-Pouliquen/tty-rpmsg-Fix-race-condition-releasing-tty-port/20211215-235006 git checkout 827a192629877cd67f12b906fb467d46f3526db5 # 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 <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^ drivers/misc/fastrpc.c:459:6: note: Assuming field 'nscalars' is not equal to 0 if (ctx->nscalars) { ^~~~~~~~~~~~~ drivers/misc/fastrpc.c:459:2: note: Taking true branch if (ctx->nscalars) { ^ drivers/misc/fastrpc.c:460:15: note: Calling 'kcalloc' ctx->maps = kcalloc(ctx->nscalars, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:661:9: note: Calling 'kmalloc_array' return kmalloc_array(n, size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:626:2: note: Taking false branch if (unlikely(check_mul_overflow(n, size, &bytes))) ^ include/linux/slab.h:628:30: note: Left side of '&&' is false if (__builtin_constant_p(n) && __builtin_constant_p(size)) ^ include/linux/slab.h:630:2: note: Returning pointer, which participates in a condition later return __kmalloc(bytes, flags); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:661:9: note: Returning from 'kmalloc_array' return kmalloc_array(n, size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:661:2: note: Returning pointer, which participates in a condition later return kmalloc_array(n, size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/fastrpc.c:460:15: note: Returning from 'kcalloc' ctx->maps = kcalloc(ctx->nscalars, ^~~~~~~~~~~~~~~~~~~~~~ drivers/misc/fastrpc.c:462:7: note: Assuming field 'maps' is non-null if (!ctx->maps) { ^~~~~~~~~~ drivers/misc/fastrpc.c:462:3: note: Taking false branch if (!ctx->maps) { ^ drivers/misc/fastrpc.c:466:16: note: Calling 'kcalloc' ctx->olaps = kcalloc(ctx->nscalars, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:661:9: note: Calling 'kmalloc_array' return kmalloc_array(n, size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:626:2: note: Taking false branch if (unlikely(check_mul_overflow(n, size, &bytes))) ^ include/linux/slab.h:628:30: note: Left side of '&&' is false if (__builtin_constant_p(n) && __builtin_constant_p(size)) ^ include/linux/slab.h:630:2: note: Returning pointer, which participates in a condition later return __kmalloc(bytes, flags); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:661:9: note: Returning from 'kmalloc_array' return kmalloc_array(n, size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:661:2: note: Returning pointer, which participates in a condition later return kmalloc_array(n, size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/fastrpc.c:466:16: note: Returning from 'kcalloc' ctx->olaps = kcalloc(ctx->nscalars, ^~~~~~~~~~~~~~~~~~~~~~ drivers/misc/fastrpc.c:468:7: note: Assuming field 'olaps' is non-null if (!ctx->olaps) { ^~~~~~~~~~~ drivers/misc/fastrpc.c:468:3: note: Taking false branch if (!ctx->olaps) { ^ drivers/misc/fastrpc.c:473:3: note: Null pointer value stored to field 'args' ctx->args = args; ^~~~~~~~~~~~~~~~ drivers/misc/fastrpc.c:474:3: note: Calling 'fastrpc_get_buff_overlaps' fastrpc_get_buff_overlaps(ctx); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/misc/fastrpc.c:409:14: note: Assuming 'i' is < field 'nbufs' for (i = 0; i < ctx->nbufs; ++i) { ^~~~~~~~~~~~~~ drivers/misc/fastrpc.c:409:2: note: Loop condition is true. Entering loop body for (i = 0; i < ctx->nbufs; ++i) { ^ drivers/misc/fastrpc.c:410:25: note: Dereference of null pointer ctx->olaps[i].start = ctx->args[i].ptr; ^~~~~~~~~~~~~~~~ Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. >> drivers/tty/rpmsg_tty.c:53:19: warning: Value stored to 'port' during its >> initialization is never read [clang-analyzer-deadcode.DeadStores] struct tty_port *port = tty->port; ^~~~ ~~~~~~~~~ drivers/tty/rpmsg_tty.c:53:19: note: Value stored to 'port' during its initialization is never read struct tty_port *port = tty->port; ^~~~ ~~~~~~~~~ Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 8 warnings generated. Suppressed 8 warnings (7 in non-user code, 1 with check filters). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 6 warnings generated. Suppressed 6 warnings (6 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 7 warnings generated. Suppressed 7 warnings (7 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 5 warnings generated. Suppressed 5 warnings (5 in non-user code). Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well. 9 warnings generated. drivers/firewire/core-cdev.c:611:2: warning: 7th function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] fw_send_request(client->device->card, &e->r.transaction, ^ drivers/firewire/core-cdev.c:1481:6: note: Assuming field 'speed' is <= field 'link_speed' if (a->speed > client->device->card->link_speed || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/firewire/core-cdev.c:1481:6: note: Left side of '||' is false drivers/firewire/core-cdev.c:1482:6: note: Assuming the condition is false a->length > 1024 << a->speed) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/firewire/core-cdev.c:1481:2: note: Taking false branch if (a->speed > client->device->card->link_speed || ^ drivers/firewire/core-cdev.c:1485:6: note: Assuming field 'tag' is <= 3 if (a->tag > 3 || a->channel > 63 || a->sy > 15) ^~~~~~~~~~ drivers/firewire/core-cdev.c:1485:6: note: Left side of '||' is false drivers/firewire/core-cdev.c:1485:20: note: Assuming field 'channel' is <= 63 if (a->tag > 3 || a->channel > 63 || a->sy > 15) ^~~~~~~~~~~~~~~ drivers/firewire/core-cdev.c:1485:6: note: Left side of '||' is false if (a->tag > 3 || a->channel > 63 || a->sy > 15) ^ drivers/firewire/core-cdev.c:1485:39: note: Assuming field 'sy' is <= 15 if (a->tag > 3 || a->channel > 63 || a->sy > 15) ^~~~~~~~~~ drivers/firewire/core-cdev.c:1485:2: note: Taking false branch if (a->tag > 3 || a->channel > 63 || a->sy > 15) ^ drivers/firewire/core-cdev.c:1495:9: note: Calling 'init_request' return init_request(client, &request, dest, a->speed); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/firewire/core-cdev.c:583:15: note: Field 'tcode' is equal to TCODE_STREAM_DATA if (request->tcode != TCODE_STREAM_DATA && ^ drivers/firewire/core-cdev.c:583:42: note: Left side of '&&' is false if (request->tcode != TCODE_STREAM_DATA && ^ drivers/firewire/core-cdev.c:587:15: note: Field 'tcode' is not equal to TCODE_WRITE_QUADLET_REQUEST if (request->tcode == TCODE_WRITE_QUADLET_REQUEST && ^ drivers/firewire/core-cdev.c:587:52: note: Left side of '&&' is false if (request->tcode == TCODE_WRITE_QUADLET_REQUEST && ^ drivers/firewire/core-cdev.c:592:6: note: Assuming 'e' is not equal to NULL if (e == NULL) ^~~~~~~~~ drivers/firewire/core-cdev.c:592:2: note: Taking false branch if (e == NULL) ^ vim +/port +53 drivers/tty/rpmsg_tty.c 7c0408d8057971 Arnaud Pouliquen 2021-10-15 49 7c0408d8057971 Arnaud Pouliquen 2021-10-15 50 static int rpmsg_tty_install(struct tty_driver *driver, struct tty_struct *tty) 7c0408d8057971 Arnaud Pouliquen 2021-10-15 51 { 7c0408d8057971 Arnaud Pouliquen 2021-10-15 52 struct rpmsg_tty_port *cport = idr_find(&tty_idr, tty->index); 827a192629877c Arnaud Pouliquen 2021-12-15 @53 struct tty_port *port = tty->port; 7c0408d8057971 Arnaud Pouliquen 2021-10-15 54 7c0408d8057971 Arnaud Pouliquen 2021-10-15 55 tty->driver_data = cport; 7c0408d8057971 Arnaud Pouliquen 2021-10-15 56 827a192629877c Arnaud Pouliquen 2021-12-15 57 port = tty_port_get(&cport->port); 827a192629877c Arnaud Pouliquen 2021-12-15 58 return tty_port_install(port, driver, tty); 827a192629877c Arnaud Pouliquen 2021-12-15 59 } 827a192629877c Arnaud Pouliquen 2021-12-15 60 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
