All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Jiri Slaby <jslaby@suse.cz>
Cc: llvm@lists.linux.dev, kbuild-all@lists.01.org,
	linux-kernel@vger.kernel.org
Subject: [jirislaby:devel 25/28] drivers/tty/mxser.c:1745:30: warning: unused variable 'mxser_ops'
Date: Fri, 14 Jan 2022 14:22:29 +0800	[thread overview]
Message-ID: <202201141428.PLNSXkwB-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jirislaby/linux.git devel
head:   54c28df496f290b0dfbb55d569ce5ddf8cafc4be
commit: 6f7621dd2f7f908ab9ca6882cebf663d4aac4e3e [25/28] mxser: switch to uart_driver
config: arm-randconfig-c002-20220111 (https://download.01.org/0day-ci/archive/20220114/202201141428.PLNSXkwB-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 244dd2913a43a200f5a6544d424cdc37b771028b)
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 arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://git.kernel.org/pub/scm/linux/kernel/git/jirislaby/linux.git/commit/?id=6f7621dd2f7f908ab9ca6882cebf663d4aac4e3e
        git remote add jirislaby https://git.kernel.org/pub/scm/linux/kernel/git/jirislaby/linux.git
        git fetch --no-tags jirislaby devel
        git checkout 6f7621dd2f7f908ab9ca6882cebf663d4aac4e3e
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 

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

All warnings (new ones prefixed by >>):

>> drivers/tty/mxser.c:1745:30: warning: unused variable 'mxser_ops' [-Wunused-const-variable]
   static const struct uart_ops mxser_ops = {
                                ^
   1 warning generated.


clang-analyzer warnings: (new ones prefixed by >>)
   9 warnings generated.
   Suppressed 9 warnings (4 in non-user code, 5 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.
   7 warnings generated.
   kernel/sched/deadline.c:1534:22: warning: Value stored to 'p' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct task_struct *p = dl_task_of(dl_se);
                               ^   ~~~~~~~~~~~~~~~~~
   kernel/sched/deadline.c:1534:22: note: Value stored to 'p' during its initialization is never read
           struct task_struct *p = dl_task_of(dl_se);
                               ^   ~~~~~~~~~~~~~~~~~
   Suppressed 6 warnings (4 in non-user code, 2 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   drivers/iio/adc/ltc2497.c:18:8: warning: Excessive padding in 'struct ltc2497_driverdata' (32 padding bytes, where 0 is optimal). 
   Optimal fields order: 
   buf, 
   client, 
   common_ddata, 
   consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
   struct ltc2497_driverdata {
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~
   drivers/iio/adc/ltc2497.c:18:8: note: Excessive padding in 'struct ltc2497_driverdata' (32 padding bytes, where 0 is optimal). Optimal fields order: buf, client, common_ddata, consider reordering the fields or adding explicit padding members
   struct ltc2497_driverdata {
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   drivers/w1/w1.c:589:3: warning: Value stored to 'event_owner' is never read [clang-analyzer-deadcode.DeadStores]
                   event_owner = "master";
                   ^             ~~~~~~~~
   drivers/w1/w1.c:589:3: note: Value stored to 'event_owner' is never read
                   event_owner = "master";
                   ^             ~~~~~~~~
   drivers/w1/w1.c:590:3: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores]
                   name = md->name;
                   ^      ~~~~~~~~
   drivers/w1/w1.c:590:3: note: Value stored to 'name' is never read
                   name = md->name;
                   ^      ~~~~~~~~
   drivers/w1/w1.c:593:3: warning: Value stored to 'event_owner' is never read [clang-analyzer-deadcode.DeadStores]
                   event_owner = "slave";
                   ^             ~~~~~~~
   drivers/w1/w1.c:593:3: note: Value stored to 'event_owner' is never read
                   event_owner = "slave";
                   ^             ~~~~~~~
   drivers/w1/w1.c:594:3: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores]
                   name = sl->name;
                   ^      ~~~~~~~~
   drivers/w1/w1.c:594:3: note: Value stored to 'name' is never read
                   name = sl->name;
                   ^      ~~~~~~~~
   drivers/w1/w1.c:997:2: warning: Value stored to 'search_bit' is never read [clang-analyzer-deadcode.DeadStores]
           search_bit = 0;
           ^            ~
   drivers/w1/w1.c:997:2: note: Value stored to 'search_bit' is never read
           search_bit = 0;
           ^            ~
   drivers/w1/w1.c:999:2: warning: Value stored to 'last_rn' is never read [clang-analyzer-deadcode.DeadStores]
           last_rn = 0;
           ^         ~
   drivers/w1/w1.c:999:2: note: Value stored to 'last_rn' is never read
           last_rn = 0;
           ^         ~
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   drivers/tty/mxser.c:396:7: warning: Although the value stored to 'hwid' is used in the enclosing expression, the value is never actually read from 'hwid' [clang-analyzer-deadcode.DeadStores]
           if ((hwid = inb(io + UART_MCR)) != 0) {
                ^
   drivers/tty/mxser.c:396:7: note: Although the value stored to 'hwid' is used in the enclosing expression, the value is never actually read from 'hwid'
>> drivers/tty/mxser.c:1693:4: warning: Value stored to 'int_cnt' is never read [clang-analyzer-deadcode.DeadStores]
                           int_cnt = 0;
                           ^         ~
   drivers/tty/mxser.c:1693:4: note: Value stored to 'int_cnt' is never read
                           int_cnt = 0;
                           ^         ~
   Suppressed 3 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   drivers/iio/adc/qcom-spmi-vadc.c:326:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
                   ret = vadc_poll_wait_eoc(vadc, timeout);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/adc/qcom-spmi-vadc.c:326:3: note: Value stored to 'ret' is never read
                   ret = vadc_poll_wait_eoc(vadc, timeout);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   sound/isa/gus/interwave.c:686:2: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcat(wss->pcm->name, " (codec)");
           ^~~~~~
   sound/isa/gus/interwave.c:686:2: note: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119
           strcat(wss->pcm->name, " (codec)");
           ^~~~~~
   sound/isa/gus/interwave.c:740:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(card->driver, str);
           ^~~~~~
   sound/isa/gus/interwave.c:740:2: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119
           strcpy(card->driver, str);
           ^~~~~~
   sound/isa/gus/interwave.c:741:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(card->shortname, str);
--
           if (unlikely(__ret_warn_on))                                    \
           ^
   drivers/nvme/host/fc.c:540:2: note: Memory is released
           kfree(rport);
           ^~~~~~~~~~~~
   include/linux/kref.h:65:3: note: Returning; memory was released
                   release(kref);
                   ^~~~~~~~~~~~~
   drivers/nvme/host/fc.c:548:2: note: Returning; memory was released
           kref_put(&rport->ref, nvme_fc_free_rport);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/fc.c:3826:3: note: Returning; memory was released
                   nvme_fc_rport_put(rport);
                   ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/fc.c:3829:3: note: Loop condition is false.  Exiting loop
                   spin_lock_irqsave(&nvme_fc_lock, flags);
                   ^
   include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
           raw_spin_lock_irqsave(spinlock_check(lock), flags);     \
           ^
   include/linux/spinlock.h:240:2: note: expanded from macro 'raw_spin_lock_irqsave'
           do {                                            \
           ^
   drivers/nvme/host/fc.c:3829:3: note: Loop condition is false.  Exiting loop
                   spin_lock_irqsave(&nvme_fc_lock, flags);
                   ^
   include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave'
   #define spin_lock_irqsave(lock, flags)                          \
                                                                   ^
   drivers/nvme/host/fc.c:3817:2: note: Loop condition is true.  Entering loop body
           while (!list_empty(&local_disc_list)) {
           ^
   drivers/nvme/host/fc.c:3820:3: note: Calling 'list_del_init'
                   list_del_init(&rport->disc_list);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:206:2: note: Calling '__list_del_entry'
           __list_del_entry(entry);
           ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:134:6: note: Assuming the condition is false
           if (!__list_del_entry_valid(entry))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:134:2: note: Taking false branch
           if (!__list_del_entry_valid(entry))
           ^
   include/linux/list.h:137:13: note: Use of memory after it is freed
           __list_del(entry->prev, entry->next);
                      ^~~~~~~~~~~
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   drivers/tty/serial/fsl_lpuart.c:1283:33: warning: The result of the left shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult]
           sport->rx_dma_rng_buf_len = (1 << (fls(sport->rx_dma_rng_buf_len) - 1));
                                          ^
   drivers/tty/serial/fsl_lpuart.c:2868:6: note: Assuming field 'suspended' is 0
           if (sport->port.suspended && !irq_wake)
               ^~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:2868:28: note: Left side of '&&' is false
           if (sport->port.suspended && !irq_wake)
                                     ^
   drivers/tty/serial/fsl_lpuart.c:2871:2: note: Taking false branch
           if (lpuart_is_32(sport))
           ^
   drivers/tty/serial/fsl_lpuart.c:2876:6: note: Assuming field 'lpuart_dma_rx_use' is true
           if (sport->lpuart_dma_rx_use) {
               ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:2876:2: note: Taking true branch
           if (sport->lpuart_dma_rx_use) {
           ^
   drivers/tty/serial/fsl_lpuart.c:2877:7: note: Assuming 'irq_wake' is true
                   if (irq_wake) {
                       ^~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:2877:3: note: Taking true branch
                   if (irq_wake) {
                   ^
   drivers/tty/serial/fsl_lpuart.c:2878:9: note: Calling 'lpuart_start_rx_dma'
                           if (!lpuart_start_rx_dma(sport))
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:1274:9: note: Assuming the condition is false
           bits = (termios->c_cflag & CSIZE) == CS7 ? 9 : 10;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:1274:9: note: '?' condition is false
   drivers/tty/serial/fsl_lpuart.c:1275:6: note: Assuming the condition is false
           if (termios->c_cflag & PARENB)
               ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:1275:2: note: Taking false branch
           if (termios->c_cflag & PARENB)
           ^
   drivers/tty/serial/fsl_lpuart.c:1283:33: note: The result of the left shift is undefined because the right operand is negative
           sport->rx_dma_rng_buf_len = (1 << (fls(sport->rx_dma_rng_buf_len) - 1));
                                          ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   drivers/tty/mxser.c:396:7: warning: Although the value stored to 'hwid' is used in the enclosing expression, the value is never actually read from 'hwid' [clang-analyzer-deadcode.DeadStores]
           if ((hwid = inb(io + UART_MCR)) != 0) {
                ^
   drivers/tty/mxser.c:396:7: note: Although the value stored to 'hwid' is used in the enclosing expression, the value is never actually read from 'hwid'
>> drivers/tty/mxser.c:1693:4: warning: Value stored to 'int_cnt' is never read [clang-analyzer-deadcode.DeadStores]
                           int_cnt = 0;
                           ^         ~
   drivers/tty/mxser.c:1693:4: note: Value stored to 'int_cnt' is never read
                           int_cnt = 0;
                           ^         ~
   Suppressed 3 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   drivers/leds/leds-pwm.c:146:15: warning: Access to field 'name' results in a dereference of a null pointer [clang-analyzer-core.NullDereference]
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:161:2: note: expanded from macro 'to_of_node'
           ({                                                              \
           ^
   drivers/leds/leds-pwm.c:180:6: note: Assuming 'count' is not equal to 0
           if (!count)
               ^~~~~~
   drivers/leds/leds-pwm.c:180:2: note: Taking false branch
           if (!count)
           ^
   drivers/leds/leds-pwm.c:185:6: note: Assuming 'priv' is non-null
           if (!priv)
               ^~~~~
   drivers/leds/leds-pwm.c:185:2: note: Taking false branch
           if (!priv)
           ^
   drivers/leds/leds-pwm.c:188:8: note: Calling 'led_pwm_create_fwnode'
           ret = led_pwm_create_fwnode(&pdev->dev, priv);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/leds/leds-pwm.c:143:2: note: Loop condition is true.  Entering loop body
           device_for_each_child_node(dev, fwnode) {
           ^
   include/linux/property.h:112:2: note: expanded from macro 'device_for_each_child_node'
           for (child = device_get_next_child_node(dev, NULL); child;      \
           ^
   drivers/leds/leds-pwm.c:145:7: note: Assuming 'ret' is not equal to 0
                   if (ret && is_of_node(fwnode))
                       ^~~
   drivers/leds/leds-pwm.c:145:7: note: Left side of '&&' is true
   drivers/leds/leds-pwm.c:145:14: note: Assuming the condition is true
                   if (ret && is_of_node(fwnode))
                              ^~~~~~~~~~~~~~~~~~
   drivers/leds/leds-pwm.c:145:3: note: Taking true branch
                   if (ret && is_of_node(fwnode))
                   ^
   drivers/leds/leds-pwm.c:146:15: note: Assuming the condition is false
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:164:3: note: expanded from macro 'to_of_node'
                   is_of_node(__to_of_node_fwnode) ?                       \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/leds/leds-pwm.c:146:15: note: '?' condition is false
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:164:3: note: expanded from macro 'to_of_node'
                   is_of_node(__to_of_node_fwnode) ?                       \
                   ^
   drivers/leds/leds-pwm.c:146:15: note: Access to field 'name' results in a dereference of a null pointer
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:161:2: note: expanded from macro 'to_of_node'
           ({                                                              \
           ^
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   drivers/ata/pata_pdc2027x.c:521:2: warning: Value stored to 'pll_ctl' is never read [clang-analyzer-deadcode.DeadStores]
           pll_ctl = ioread16(mmio_base + PDC_PLL_CTL);
           ^
   drivers/ata/pata_pdc2027x.c:521:2: note: Value stored to 'pll_ctl' is never read
   drivers/ata/pata_pdc2027x.c:570:2: warning: Value stored to 'pll_ctl' is never read [clang-analyzer-deadcode.DeadStores]
           pll_ctl = ioread16(mmio_base + PDC_PLL_CTL);
           ^
   drivers/ata/pata_pdc2027x.c:570:2: note: Value stored to 'pll_ctl' is never read
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   drivers/ata/pata_sis.c:417:6: warning: Value stored to 'speed' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           int speed = adev->dma_mode - XFER_MW_DMA_0;

vim +/mxser_ops +1745 drivers/tty/mxser.c

  1612	
  1613	static bool mxser_port_isr(struct mxser_port *port)
  1614	{
  1615		struct uart_port *uport = &port->uport;
  1616		struct tty_struct *tty;
  1617		u8 iir, status;
  1618		bool error = false;
  1619	
  1620		iir = inb(uport->iobase + UART_IIR);
  1621		if (iir & UART_IIR_NO_INT)
  1622			return true;
  1623	
  1624		iir &= MOXA_MUST_IIR_MASK;
  1625		tty = tty_port_tty_get(&port->port);
  1626		if (!tty) {
  1627			status = inb(uport->iobase + UART_LSR);
  1628			outb(port->FCR | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT,
  1629					uport->iobase + UART_FCR);
  1630			inb(uport->iobase + UART_MSR);
  1631	
  1632			error = true;
  1633			goto put_tty;
  1634		}
  1635	
  1636		status = inb(uport->iobase + UART_LSR);
  1637	
  1638		if (port->board->must_hwid) {
  1639			if (iir == MOXA_MUST_IIR_GDA ||
  1640			    iir == MOXA_MUST_IIR_RDA ||
  1641			    iir == MOXA_MUST_IIR_RTO ||
  1642			    iir == MOXA_MUST_IIR_LSR)
  1643				status = mxser_receive_chars(tty, port, status);
  1644		} else {
  1645			status &= uport->read_status_mask;
  1646			if (status & UART_LSR_DR)
  1647				status = mxser_receive_chars(tty, port, status);
  1648		}
  1649	
  1650		mxser_check_modem_status(tty, port);
  1651	
  1652		if (port->board->must_hwid) {
  1653			if (iir == 0x02 && (status & UART_LSR_THRE))
  1654				mxser_transmit_chars(tty, port);
  1655		} else {
  1656			if (status & UART_LSR_THRE)
  1657				mxser_transmit_chars(tty, port);
  1658		}
  1659	
  1660	put_tty:
  1661		tty_kref_put(tty);
  1662	
  1663		return error;
  1664	}
  1665	#endif
  1666	/*
  1667	 * This is the serial driver's generic interrupt routine
  1668	 */
  1669	static irqreturn_t mxser_interrupt(int irq, void *dev_id)
  1670	{
  1671		struct mxser_board *brd = dev_id;
  1672		struct mxser_port *port;
  1673		struct uart_port *uport;
  1674		unsigned int int_cnt, pass_counter = 0;
  1675		unsigned int i, max = brd->nports;
  1676		int handled = IRQ_NONE;
  1677		u8 irqbits, bits, mask = BIT(max) - 1;
  1678	
  1679		while (pass_counter++ < MXSER_ISR_PASS_LIMIT) {
  1680			irqbits = inb(brd->vector) & mask;
  1681			if (irqbits == mask)
  1682				break;
  1683	
  1684			handled = IRQ_HANDLED;
  1685			for (i = 0, bits = 1; i < max; i++, irqbits |= bits, bits <<= 1) {
  1686				if (irqbits == mask)
  1687					break;
  1688				if (bits & irqbits)
  1689					continue;
  1690				port = &brd->ports[i];
  1691				uport = &port->uport;
  1692	
> 1693				int_cnt = 0;
  1694				spin_lock(&uport->lock);
  1695				do {
  1696					//if (mxser_port_isr(port))
  1697						break;
  1698				} while (int_cnt++ < MXSER_ISR_PASS_LIMIT);
  1699				spin_unlock(&uport->lock);
  1700			}
  1701		}
  1702	
  1703		return handled;
  1704	}
  1705	#ifdef OLD
  1706	static const struct tty_operations mxser_ops = {
  1707		.open = mxser_open,
  1708		.close = mxser_close,
  1709		.write = mxser_write,
  1710		.put_char = mxser_put_char,
  1711		.flush_chars = mxser_flush_chars,
  1712		.write_room = mxser_write_room,
  1713		.chars_in_buffer = mxser_chars_in_buffer,
  1714		.flush_buffer = mxser_flush_buffer,
  1715		.ioctl = mxser_ioctl,
  1716		.throttle = mxser_throttle,
  1717		.unthrottle = mxser_unthrottle,
  1718		.set_termios = mxser_set_termios,
  1719		.stop = mxser_stop,
  1720		.start = mxser_start,
  1721		.hangup = mxser_hangup,
  1722		.break_ctl = mxser_rs_break,
  1723		.wait_until_sent = mxser_wait_until_sent,
  1724		.tiocmget = mxser_tiocmget,
  1725		.tiocmset = mxser_tiocmset,
  1726		.set_serial = mxser_set_serial_info,
  1727		.get_serial = mxser_get_serial_info,
  1728		.get_icount = mxser_get_icount,
  1729	};
  1730	
  1731	static const struct tty_port_operations mxser_port_ops = {
  1732		.carrier_raised = mxser_carrier_raised,
  1733		.dtr_rts = mxser_dtr_rts,
  1734		.activate = mxser_activate,
  1735		.shutdown = mxser_shutdown_port,
  1736	};
  1737	#endif
  1738	
  1739	static struct uart_driver mxser_uart_driver = {
  1740		.owner		= THIS_MODULE,
  1741		.dev_name	= "ttyMI",
  1742		.nr		= MXSER_PORTS,
  1743	};
  1744	
> 1745	static const struct uart_ops mxser_ops = {
  1746		.tx_empty       = mxser_tx_empty,
  1747		//.get_mctrl      = mxser_get_mctrl,
  1748		//.set_mctrl      = mxser_set_mctrl,
  1749		.stop_tx        = mxser_stop_tx,
  1750		.start_tx       = mxser_start_tx,
  1751		.stop_rx        = mxser_stop_rx,
  1752		.break_ctl      = mxser_break_ctl,
  1753		.startup        = mxser_startup,
  1754		.shutdown       = mxser_shutdown,
  1755		.set_termios    = mxser_set_termios,
  1756		//.pm             = mxser_pm,
  1757		//.type           = mxser_type,
  1758		//.release_port   = mxser_release_port,
  1759		//.request_port   = mxser_request_port,
  1760		//.config_port    = mxser_config_port,
  1761		//.verify_port    = mxser_verify_port,
  1762	};
  1763	
  1764	

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

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [jirislaby:devel 25/28] drivers/tty/mxser.c:1745:30: warning: unused variable 'mxser_ops'
Date: Fri, 14 Jan 2022 14:22:29 +0800	[thread overview]
Message-ID: <202201141428.PLNSXkwB-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 33543 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/jirislaby/linux.git devel
head:   54c28df496f290b0dfbb55d569ce5ddf8cafc4be
commit: 6f7621dd2f7f908ab9ca6882cebf663d4aac4e3e [25/28] mxser: switch to uart_driver
config: arm-randconfig-c002-20220111 (https://download.01.org/0day-ci/archive/20220114/202201141428.PLNSXkwB-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 244dd2913a43a200f5a6544d424cdc37b771028b)
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 arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # https://git.kernel.org/pub/scm/linux/kernel/git/jirislaby/linux.git/commit/?id=6f7621dd2f7f908ab9ca6882cebf663d4aac4e3e
        git remote add jirislaby https://git.kernel.org/pub/scm/linux/kernel/git/jirislaby/linux.git
        git fetch --no-tags jirislaby devel
        git checkout 6f7621dd2f7f908ab9ca6882cebf663d4aac4e3e
        # save the config file to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer 

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

All warnings (new ones prefixed by >>):

>> drivers/tty/mxser.c:1745:30: warning: unused variable 'mxser_ops' [-Wunused-const-variable]
   static const struct uart_ops mxser_ops = {
                                ^
   1 warning generated.


clang-analyzer warnings: (new ones prefixed by >>)
   9 warnings generated.
   Suppressed 9 warnings (4 in non-user code, 5 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.
   7 warnings generated.
   kernel/sched/deadline.c:1534:22: warning: Value stored to 'p' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           struct task_struct *p = dl_task_of(dl_se);
                               ^   ~~~~~~~~~~~~~~~~~
   kernel/sched/deadline.c:1534:22: note: Value stored to 'p' during its initialization is never read
           struct task_struct *p = dl_task_of(dl_se);
                               ^   ~~~~~~~~~~~~~~~~~
   Suppressed 6 warnings (4 in non-user code, 2 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   4 warnings generated.
   Suppressed 4 warnings (4 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   drivers/iio/adc/ltc2497.c:18:8: warning: Excessive padding in 'struct ltc2497_driverdata' (32 padding bytes, where 0 is optimal). 
   Optimal fields order: 
   buf, 
   client, 
   common_ddata, 
   consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
   struct ltc2497_driverdata {
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~
   drivers/iio/adc/ltc2497.c:18:8: note: Excessive padding in 'struct ltc2497_driverdata' (32 padding bytes, where 0 is optimal). Optimal fields order: buf, client, common_ddata, consider reordering the fields or adding explicit padding members
   struct ltc2497_driverdata {
   ~~~~~~~^~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   drivers/w1/w1.c:589:3: warning: Value stored to 'event_owner' is never read [clang-analyzer-deadcode.DeadStores]
                   event_owner = "master";
                   ^             ~~~~~~~~
   drivers/w1/w1.c:589:3: note: Value stored to 'event_owner' is never read
                   event_owner = "master";
                   ^             ~~~~~~~~
   drivers/w1/w1.c:590:3: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores]
                   name = md->name;
                   ^      ~~~~~~~~
   drivers/w1/w1.c:590:3: note: Value stored to 'name' is never read
                   name = md->name;
                   ^      ~~~~~~~~
   drivers/w1/w1.c:593:3: warning: Value stored to 'event_owner' is never read [clang-analyzer-deadcode.DeadStores]
                   event_owner = "slave";
                   ^             ~~~~~~~
   drivers/w1/w1.c:593:3: note: Value stored to 'event_owner' is never read
                   event_owner = "slave";
                   ^             ~~~~~~~
   drivers/w1/w1.c:594:3: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores]
                   name = sl->name;
                   ^      ~~~~~~~~
   drivers/w1/w1.c:594:3: note: Value stored to 'name' is never read
                   name = sl->name;
                   ^      ~~~~~~~~
   drivers/w1/w1.c:997:2: warning: Value stored to 'search_bit' is never read [clang-analyzer-deadcode.DeadStores]
           search_bit = 0;
           ^            ~
   drivers/w1/w1.c:997:2: note: Value stored to 'search_bit' is never read
           search_bit = 0;
           ^            ~
   drivers/w1/w1.c:999:2: warning: Value stored to 'last_rn' is never read [clang-analyzer-deadcode.DeadStores]
           last_rn = 0;
           ^         ~
   drivers/w1/w1.c:999:2: note: Value stored to 'last_rn' is never read
           last_rn = 0;
           ^         ~
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   drivers/tty/mxser.c:396:7: warning: Although the value stored to 'hwid' is used in the enclosing expression, the value is never actually read from 'hwid' [clang-analyzer-deadcode.DeadStores]
           if ((hwid = inb(io + UART_MCR)) != 0) {
                ^
   drivers/tty/mxser.c:396:7: note: Although the value stored to 'hwid' is used in the enclosing expression, the value is never actually read from 'hwid'
>> drivers/tty/mxser.c:1693:4: warning: Value stored to 'int_cnt' is never read [clang-analyzer-deadcode.DeadStores]
                           int_cnt = 0;
                           ^         ~
   drivers/tty/mxser.c:1693:4: note: Value stored to 'int_cnt' is never read
                           int_cnt = 0;
                           ^         ~
   Suppressed 3 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   drivers/iio/adc/qcom-spmi-vadc.c:326:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
                   ret = vadc_poll_wait_eoc(vadc, timeout);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/iio/adc/qcom-spmi-vadc.c:326:3: note: Value stored to 'ret' is never read
                   ret = vadc_poll_wait_eoc(vadc, timeout);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   sound/isa/gus/interwave.c:686:2: warning: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcat(wss->pcm->name, " (codec)");
           ^~~~~~
   sound/isa/gus/interwave.c:686:2: note: Call to function 'strcat' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcat'. CWE-119
           strcat(wss->pcm->name, " (codec)");
           ^~~~~~
   sound/isa/gus/interwave.c:740:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(card->driver, str);
           ^~~~~~
   sound/isa/gus/interwave.c:740:2: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119
           strcpy(card->driver, str);
           ^~~~~~
   sound/isa/gus/interwave.c:741:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(card->shortname, str);
--
           if (unlikely(__ret_warn_on))                                    \
           ^
   drivers/nvme/host/fc.c:540:2: note: Memory is released
           kfree(rport);
           ^~~~~~~~~~~~
   include/linux/kref.h:65:3: note: Returning; memory was released
                   release(kref);
                   ^~~~~~~~~~~~~
   drivers/nvme/host/fc.c:548:2: note: Returning; memory was released
           kref_put(&rport->ref, nvme_fc_free_rport);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/fc.c:3826:3: note: Returning; memory was released
                   nvme_fc_rport_put(rport);
                   ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvme/host/fc.c:3829:3: note: Loop condition is false.  Exiting loop
                   spin_lock_irqsave(&nvme_fc_lock, flags);
                   ^
   include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
           raw_spin_lock_irqsave(spinlock_check(lock), flags);     \
           ^
   include/linux/spinlock.h:240:2: note: expanded from macro 'raw_spin_lock_irqsave'
           do {                                            \
           ^
   drivers/nvme/host/fc.c:3829:3: note: Loop condition is false.  Exiting loop
                   spin_lock_irqsave(&nvme_fc_lock, flags);
                   ^
   include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave'
   #define spin_lock_irqsave(lock, flags)                          \
                                                                   ^
   drivers/nvme/host/fc.c:3817:2: note: Loop condition is true.  Entering loop body
           while (!list_empty(&local_disc_list)) {
           ^
   drivers/nvme/host/fc.c:3820:3: note: Calling 'list_del_init'
                   list_del_init(&rport->disc_list);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:206:2: note: Calling '__list_del_entry'
           __list_del_entry(entry);
           ^~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:134:6: note: Assuming the condition is false
           if (!__list_del_entry_valid(entry))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:134:2: note: Taking false branch
           if (!__list_del_entry_valid(entry))
           ^
   include/linux/list.h:137:13: note: Use of memory after it is freed
           __list_del(entry->prev, entry->next);
                      ^~~~~~~~~~~
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   drivers/tty/serial/fsl_lpuart.c:1283:33: warning: The result of the left shift is undefined because the right operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult]
           sport->rx_dma_rng_buf_len = (1 << (fls(sport->rx_dma_rng_buf_len) - 1));
                                          ^
   drivers/tty/serial/fsl_lpuart.c:2868:6: note: Assuming field 'suspended' is 0
           if (sport->port.suspended && !irq_wake)
               ^~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:2868:28: note: Left side of '&&' is false
           if (sport->port.suspended && !irq_wake)
                                     ^
   drivers/tty/serial/fsl_lpuart.c:2871:2: note: Taking false branch
           if (lpuart_is_32(sport))
           ^
   drivers/tty/serial/fsl_lpuart.c:2876:6: note: Assuming field 'lpuart_dma_rx_use' is true
           if (sport->lpuart_dma_rx_use) {
               ^~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:2876:2: note: Taking true branch
           if (sport->lpuart_dma_rx_use) {
           ^
   drivers/tty/serial/fsl_lpuart.c:2877:7: note: Assuming 'irq_wake' is true
                   if (irq_wake) {
                       ^~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:2877:3: note: Taking true branch
                   if (irq_wake) {
                   ^
   drivers/tty/serial/fsl_lpuart.c:2878:9: note: Calling 'lpuart_start_rx_dma'
                           if (!lpuart_start_rx_dma(sport))
                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:1274:9: note: Assuming the condition is false
           bits = (termios->c_cflag & CSIZE) == CS7 ? 9 : 10;
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:1274:9: note: '?' condition is false
   drivers/tty/serial/fsl_lpuart.c:1275:6: note: Assuming the condition is false
           if (termios->c_cflag & PARENB)
               ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/fsl_lpuart.c:1275:2: note: Taking false branch
           if (termios->c_cflag & PARENB)
           ^
   drivers/tty/serial/fsl_lpuart.c:1283:33: note: The result of the left shift is undefined because the right operand is negative
           sport->rx_dma_rng_buf_len = (1 << (fls(sport->rx_dma_rng_buf_len) - 1));
                                          ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   drivers/tty/mxser.c:396:7: warning: Although the value stored to 'hwid' is used in the enclosing expression, the value is never actually read from 'hwid' [clang-analyzer-deadcode.DeadStores]
           if ((hwid = inb(io + UART_MCR)) != 0) {
                ^
   drivers/tty/mxser.c:396:7: note: Although the value stored to 'hwid' is used in the enclosing expression, the value is never actually read from 'hwid'
>> drivers/tty/mxser.c:1693:4: warning: Value stored to 'int_cnt' is never read [clang-analyzer-deadcode.DeadStores]
                           int_cnt = 0;
                           ^         ~
   drivers/tty/mxser.c:1693:4: note: Value stored to 'int_cnt' is never read
                           int_cnt = 0;
                           ^         ~
   Suppressed 3 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   drivers/leds/leds-pwm.c:146:15: warning: Access to field 'name' results in a dereference of a null pointer [clang-analyzer-core.NullDereference]
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:161:2: note: expanded from macro 'to_of_node'
           ({                                                              \
           ^
   drivers/leds/leds-pwm.c:180:6: note: Assuming 'count' is not equal to 0
           if (!count)
               ^~~~~~
   drivers/leds/leds-pwm.c:180:2: note: Taking false branch
           if (!count)
           ^
   drivers/leds/leds-pwm.c:185:6: note: Assuming 'priv' is non-null
           if (!priv)
               ^~~~~
   drivers/leds/leds-pwm.c:185:2: note: Taking false branch
           if (!priv)
           ^
   drivers/leds/leds-pwm.c:188:8: note: Calling 'led_pwm_create_fwnode'
           ret = led_pwm_create_fwnode(&pdev->dev, priv);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/leds/leds-pwm.c:143:2: note: Loop condition is true.  Entering loop body
           device_for_each_child_node(dev, fwnode) {
           ^
   include/linux/property.h:112:2: note: expanded from macro 'device_for_each_child_node'
           for (child = device_get_next_child_node(dev, NULL); child;      \
           ^
   drivers/leds/leds-pwm.c:145:7: note: Assuming 'ret' is not equal to 0
                   if (ret && is_of_node(fwnode))
                       ^~~
   drivers/leds/leds-pwm.c:145:7: note: Left side of '&&' is true
   drivers/leds/leds-pwm.c:145:14: note: Assuming the condition is true
                   if (ret && is_of_node(fwnode))
                              ^~~~~~~~~~~~~~~~~~
   drivers/leds/leds-pwm.c:145:3: note: Taking true branch
                   if (ret && is_of_node(fwnode))
                   ^
   drivers/leds/leds-pwm.c:146:15: note: Assuming the condition is false
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:164:3: note: expanded from macro 'to_of_node'
                   is_of_node(__to_of_node_fwnode) ?                       \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/leds/leds-pwm.c:146:15: note: '?' condition is false
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:164:3: note: expanded from macro 'to_of_node'
                   is_of_node(__to_of_node_fwnode) ?                       \
                   ^
   drivers/leds/leds-pwm.c:146:15: note: Access to field 'name' results in a dereference of a null pointer
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:161:2: note: expanded from macro 'to_of_node'
           ({                                                              \
           ^
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   2 warnings generated.
   Suppressed 2 warnings (2 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   drivers/ata/pata_pdc2027x.c:521:2: warning: Value stored to 'pll_ctl' is never read [clang-analyzer-deadcode.DeadStores]
           pll_ctl = ioread16(mmio_base + PDC_PLL_CTL);
           ^
   drivers/ata/pata_pdc2027x.c:521:2: note: Value stored to 'pll_ctl' is never read
   drivers/ata/pata_pdc2027x.c:570:2: warning: Value stored to 'pll_ctl' is never read [clang-analyzer-deadcode.DeadStores]
           pll_ctl = ioread16(mmio_base + PDC_PLL_CTL);
           ^
   drivers/ata/pata_pdc2027x.c:570:2: note: Value stored to 'pll_ctl' is never read
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   3 warnings generated.
   Suppressed 3 warnings (3 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.
   drivers/ata/pata_sis.c:417:6: warning: Value stored to 'speed' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
           int speed = adev->dma_mode - XFER_MW_DMA_0;

vim +/mxser_ops +1745 drivers/tty/mxser.c

  1612	
  1613	static bool mxser_port_isr(struct mxser_port *port)
  1614	{
  1615		struct uart_port *uport = &port->uport;
  1616		struct tty_struct *tty;
  1617		u8 iir, status;
  1618		bool error = false;
  1619	
  1620		iir = inb(uport->iobase + UART_IIR);
  1621		if (iir & UART_IIR_NO_INT)
  1622			return true;
  1623	
  1624		iir &= MOXA_MUST_IIR_MASK;
  1625		tty = tty_port_tty_get(&port->port);
  1626		if (!tty) {
  1627			status = inb(uport->iobase + UART_LSR);
  1628			outb(port->FCR | UART_FCR_CLEAR_RCVR | UART_FCR_CLEAR_XMIT,
  1629					uport->iobase + UART_FCR);
  1630			inb(uport->iobase + UART_MSR);
  1631	
  1632			error = true;
  1633			goto put_tty;
  1634		}
  1635	
  1636		status = inb(uport->iobase + UART_LSR);
  1637	
  1638		if (port->board->must_hwid) {
  1639			if (iir == MOXA_MUST_IIR_GDA ||
  1640			    iir == MOXA_MUST_IIR_RDA ||
  1641			    iir == MOXA_MUST_IIR_RTO ||
  1642			    iir == MOXA_MUST_IIR_LSR)
  1643				status = mxser_receive_chars(tty, port, status);
  1644		} else {
  1645			status &= uport->read_status_mask;
  1646			if (status & UART_LSR_DR)
  1647				status = mxser_receive_chars(tty, port, status);
  1648		}
  1649	
  1650		mxser_check_modem_status(tty, port);
  1651	
  1652		if (port->board->must_hwid) {
  1653			if (iir == 0x02 && (status & UART_LSR_THRE))
  1654				mxser_transmit_chars(tty, port);
  1655		} else {
  1656			if (status & UART_LSR_THRE)
  1657				mxser_transmit_chars(tty, port);
  1658		}
  1659	
  1660	put_tty:
  1661		tty_kref_put(tty);
  1662	
  1663		return error;
  1664	}
  1665	#endif
  1666	/*
  1667	 * This is the serial driver's generic interrupt routine
  1668	 */
  1669	static irqreturn_t mxser_interrupt(int irq, void *dev_id)
  1670	{
  1671		struct mxser_board *brd = dev_id;
  1672		struct mxser_port *port;
  1673		struct uart_port *uport;
  1674		unsigned int int_cnt, pass_counter = 0;
  1675		unsigned int i, max = brd->nports;
  1676		int handled = IRQ_NONE;
  1677		u8 irqbits, bits, mask = BIT(max) - 1;
  1678	
  1679		while (pass_counter++ < MXSER_ISR_PASS_LIMIT) {
  1680			irqbits = inb(brd->vector) & mask;
  1681			if (irqbits == mask)
  1682				break;
  1683	
  1684			handled = IRQ_HANDLED;
  1685			for (i = 0, bits = 1; i < max; i++, irqbits |= bits, bits <<= 1) {
  1686				if (irqbits == mask)
  1687					break;
  1688				if (bits & irqbits)
  1689					continue;
  1690				port = &brd->ports[i];
  1691				uport = &port->uport;
  1692	
> 1693				int_cnt = 0;
  1694				spin_lock(&uport->lock);
  1695				do {
  1696					//if (mxser_port_isr(port))
  1697						break;
  1698				} while (int_cnt++ < MXSER_ISR_PASS_LIMIT);
  1699				spin_unlock(&uport->lock);
  1700			}
  1701		}
  1702	
  1703		return handled;
  1704	}
  1705	#ifdef OLD
  1706	static const struct tty_operations mxser_ops = {
  1707		.open = mxser_open,
  1708		.close = mxser_close,
  1709		.write = mxser_write,
  1710		.put_char = mxser_put_char,
  1711		.flush_chars = mxser_flush_chars,
  1712		.write_room = mxser_write_room,
  1713		.chars_in_buffer = mxser_chars_in_buffer,
  1714		.flush_buffer = mxser_flush_buffer,
  1715		.ioctl = mxser_ioctl,
  1716		.throttle = mxser_throttle,
  1717		.unthrottle = mxser_unthrottle,
  1718		.set_termios = mxser_set_termios,
  1719		.stop = mxser_stop,
  1720		.start = mxser_start,
  1721		.hangup = mxser_hangup,
  1722		.break_ctl = mxser_rs_break,
  1723		.wait_until_sent = mxser_wait_until_sent,
  1724		.tiocmget = mxser_tiocmget,
  1725		.tiocmset = mxser_tiocmset,
  1726		.set_serial = mxser_set_serial_info,
  1727		.get_serial = mxser_get_serial_info,
  1728		.get_icount = mxser_get_icount,
  1729	};
  1730	
  1731	static const struct tty_port_operations mxser_port_ops = {
  1732		.carrier_raised = mxser_carrier_raised,
  1733		.dtr_rts = mxser_dtr_rts,
  1734		.activate = mxser_activate,
  1735		.shutdown = mxser_shutdown_port,
  1736	};
  1737	#endif
  1738	
  1739	static struct uart_driver mxser_uart_driver = {
  1740		.owner		= THIS_MODULE,
  1741		.dev_name	= "ttyMI",
  1742		.nr		= MXSER_PORTS,
  1743	};
  1744	
> 1745	static const struct uart_ops mxser_ops = {
  1746		.tx_empty       = mxser_tx_empty,
  1747		//.get_mctrl      = mxser_get_mctrl,
  1748		//.set_mctrl      = mxser_set_mctrl,
  1749		.stop_tx        = mxser_stop_tx,
  1750		.start_tx       = mxser_start_tx,
  1751		.stop_rx        = mxser_stop_rx,
  1752		.break_ctl      = mxser_break_ctl,
  1753		.startup        = mxser_startup,
  1754		.shutdown       = mxser_shutdown,
  1755		.set_termios    = mxser_set_termios,
  1756		//.pm             = mxser_pm,
  1757		//.type           = mxser_type,
  1758		//.release_port   = mxser_release_port,
  1759		//.request_port   = mxser_request_port,
  1760		//.config_port    = mxser_config_port,
  1761		//.verify_port    = mxser_verify_port,
  1762	};
  1763	
  1764	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

             reply	other threads:[~2022-01-14  6:23 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-14  6:22 kernel test robot [this message]
2022-01-14  6:22 ` [jirislaby:devel 25/28] drivers/tty/mxser.c:1745:30: warning: unused variable 'mxser_ops' 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=202201141428.PLNSXkwB-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=jslaby@suse.cz \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    /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.