CC: [email protected]
CC: [email protected]
In-Reply-To: <[email protected]>
References: <[email protected]>
TO: Lad Prabhakar <[email protected]>
TO: Geert Uytterhoeven <[email protected]>
TO: "Greg Kroah-Hartman" <[email protected]>
TO: Rob Herring <[email protected]>
TO: Jiri Slaby <[email protected]>
TO: Philipp Zabel <[email protected]>
CC: [email protected]
CC: [email protected]
CC: [email protected]
CC: [email protected]
CC: Prabhakar <[email protected]>

Hi Lad,

I love your patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on tty/tty-testing usb/usb-testing v5.15 next-20211105]
[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/Lad-Prabhakar/RZ-G2L-SCI-support-and-sh-sci-driver-update/20211104-013332
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
:::::: branch date: 2 days ago
:::::: commit date: 2 days ago
config: arm-randconfig-c002-20211104 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 
847a6807332b13f43704327c2d30103ec0347c77)
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://github.com/0day-ci/linux/commit/2e72564a41cb943ebc9d60ea46a187591ff2a576
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review 
Lad-Prabhakar/RZ-G2L-SCI-support-and-sh-sci-driver-update/20211104-013332
        git checkout 2e72564a41cb943ebc9d60ea46a187591ff2a576
        # save the attached .config 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 <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
           ^
   drivers/tty/serial/sh-sci.c:100:2: note: expanded from macro 'for_each_sr'
           for ((_sr) = max_sr(_port); (_sr) >= min_sr(_port); (_sr)--)    \
           ^
   drivers/tty/serial/sh-sci.c:2230:2: note: The result of the left shift is 
undefined due to shifting by '4294967295', which is greater or equal to the 
width of type 'unsigned long'
           for_each_sr(sr, s) {
           ^
   drivers/tty/serial/sh-sci.c:101:37: note: expanded from macro 'for_each_sr'
                   if ((_port)->sampling_rate_mask & SCI_SR((_sr)))
                                                     ^~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:88:20: note: expanded from macro 'SCI_SR'
   #define SCI_SR(x)               BIT((x) - 1)
                                   ^~~~~~~~~~~~
   include/vdso/bits.h:7:26: note: expanded from macro 'BIT'
   #define BIT(nr)                 (UL(1) << (nr))
                                          ^  ~~~~
   drivers/tty/serial/sh-sci.c:2257:2: warning: The result of the left shift is 
undefined due to shifting by '4294967295', which is greater or equal to the 
width of type 'unsigned long' 
[clang-analyzer-core.UndefinedBinaryOperatorResult]
           for_each_sr(sr, s) {
           ^
   drivers/tty/serial/sh-sci.c:101:37: note: expanded from macro 'for_each_sr'
                   if ((_port)->sampling_rate_mask & SCI_SR((_sr)))
                                                     ^~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:88:20: note: expanded from macro 'SCI_SR'
   #define SCI_SR(x)               BIT((x) - 1)
                                   ^~~~~~~~~~~~
   include/vdso/bits.h:7:26: note: expanded from macro 'BIT'
   #define BIT(nr)                 (UL(1) << (nr))
                                          ^  ~~~~
   drivers/tty/serial/sh-sci.c:2254:6: note: Assuming field 'type' is equal to 
PORT_HSCIF
           if (s->port.type != PORT_HSCIF)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:2254:2: note: Taking false branch
           if (s->port.type != PORT_HSCIF)
           ^
   drivers/tty/serial/sh-sci.c:2257:2: note: Assuming the condition is true
           for_each_sr(sr, s) {
           ^
   drivers/tty/serial/sh-sci.c:100:30: note: expanded from macro 'for_each_sr'
           for ((_sr) = max_sr(_port); (_sr) >= min_sr(_port); (_sr)--)    \
                                       ^~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:2257:2: note: Loop condition is true.  Entering 
loop body
           for_each_sr(sr, s) {
           ^
   drivers/tty/serial/sh-sci.c:100:2: note: expanded from macro 'for_each_sr'
           for ((_sr) = max_sr(_port); (_sr) >= min_sr(_port); (_sr)--)    \
           ^
   drivers/tty/serial/sh-sci.c:2257:2: note: The result of the left shift is 
undefined due to shifting by '4294967295', which is greater or equal to the 
width of type 'unsigned long'
           for_each_sr(sr, s) {
           ^
   drivers/tty/serial/sh-sci.c:101:37: note: expanded from macro 'for_each_sr'
                   if ((_port)->sampling_rate_mask & SCI_SR((_sr)))
                                                     ^~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:88:20: note: expanded from macro 'SCI_SR'
   #define SCI_SR(x)               BIT((x) - 1)
                                   ^~~~~~~~~~~~
   include/vdso/bits.h:7:26: note: expanded from macro 'BIT'
   #define BIT(nr)                 (UL(1) << (nr))
                                          ^  ~~~~
   drivers/tty/serial/sh-sci.c:2305:2: warning: The result of the left shift is 
undefined due to shifting by '4294967295', which is greater or equal to the 
width of type 'unsigned long' 
[clang-analyzer-core.UndefinedBinaryOperatorResult]
           for_each_sr(sr, s) {
           ^
   drivers/tty/serial/sh-sci.c:101:37: note: expanded from macro 'for_each_sr'
                   if ((_port)->sampling_rate_mask & SCI_SR((_sr)))
                                                     ^~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:88:20: note: expanded from macro 'SCI_SR'
   #define SCI_SR(x)               BIT((x) - 1)
                                   ^~~~~~~~~~~~
   include/vdso/bits.h:7:26: note: expanded from macro 'BIT'
   #define BIT(nr)                 (UL(1) << (nr))
                                          ^  ~~~~
   drivers/tty/serial/sh-sci.c:2287:6: note: Assuming field 'type' is equal to 
PORT_HSCIF
           if (s->port.type != PORT_HSCIF)
               ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:2287:2: note: Taking false branch
           if (s->port.type != PORT_HSCIF)
           ^
   drivers/tty/serial/sh-sci.c:2305:2: note: Assuming the condition is true
           for_each_sr(sr, s) {
           ^
   drivers/tty/serial/sh-sci.c:100:30: note: expanded from macro 'for_each_sr'
           for ((_sr) = max_sr(_port); (_sr) >= min_sr(_port); (_sr)--)    \
                                       ^~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:2305:2: note: Loop condition is true.  Entering 
loop body
           for_each_sr(sr, s) {
           ^
   drivers/tty/serial/sh-sci.c:100:2: note: expanded from macro 'for_each_sr'
           for ((_sr) = max_sr(_port); (_sr) >= min_sr(_port); (_sr)--)    \
           ^
   drivers/tty/serial/sh-sci.c:2305:2: note: The result of the left shift is 
undefined due to shifting by '4294967295', which is greater or equal to the 
width of type 'unsigned long'
           for_each_sr(sr, s) {
           ^
   drivers/tty/serial/sh-sci.c:101:37: note: expanded from macro 'for_each_sr'
                   if ((_port)->sampling_rate_mask & SCI_SR((_sr)))
                                                     ^~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:88:20: note: expanded from macro 'SCI_SR'
   #define SCI_SR(x)               BIT((x) - 1)
                                   ^~~~~~~~~~~~
   include/vdso/bits.h:7:26: note: expanded from macro 'BIT'
   #define BIT(nr)                 (UL(1) << (nr))
                                          ^  ~~~~
>> drivers/tty/serial/sh-sci.c:3369:8: warning: Array subscript is undefined 
>> [clang-analyzer-core.uninitialized.ArraySubscript]
           sp = &sci_ports[dev_id];
                 ^         ~~~~~~
   drivers/tty/serial/sh-sci.c:3342:2: note: 'dev_id' declared without an 
initial value
           unsigned int dev_id;
           ^~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:3355:6: note: Assuming field 'of_node' is 
non-null
           if (dev->dev.of_node) {
               ^~~~~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:3355:2: note: Taking true branch
           if (dev->dev.of_node) {
           ^
   drivers/tty/serial/sh-sci.c:3356:7: note: Calling 'sci_parse_dt'
                   p = sci_parse_dt(dev, &dev_id);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:3222:6: note: Left side of '||' is false
           if (!IS_ENABLED(CONFIG_OF) || !np)
               ^
   drivers/tty/serial/sh-sci.c:3222:33: note: 'np' is non-null
           if (!IS_ENABLED(CONFIG_OF) || !np)
                                          ^~
   drivers/tty/serial/sh-sci.c:3222:2: note: Taking false branch
           if (!IS_ENABLED(CONFIG_OF) || !np)
           ^
   drivers/tty/serial/sh-sci.c:3226:6: note: Assuming 'of_id' is non-null
           if (!of_id)
               ^~~~~~
   drivers/tty/serial/sh-sci.c:3226:2: note: Taking false branch
           if (!of_id)
           ^
   drivers/tty/serial/sh-sci.c:3229:59: note: Left side of '||' is true
           if (!strcmp(of_id->compatible, "renesas,scif-r9a07g044") ||
                                                                    ^
   drivers/tty/serial/sh-sci.c:3235:3: note: Taking false branch
                   if (IS_ERR(rstc)) {
                   ^
   drivers/tty/serial/sh-sci.c:3241:7: note: Assuming 'ret' is not equal to 0
                   if (ret) {
                       ^~~
   drivers/tty/serial/sh-sci.c:3241:3: note: Taking true branch
                   if (ret) {
                   ^
   drivers/tty/serial/sh-sci.c:3242:4: note: Loop condition is false.  Exiting 
loop
                           dev_err(&pdev->dev, "failed to deassert %d\n", ret);
                           ^
   include/linux/dev_printk.h:144:2: note: expanded from macro 'dev_err'
           dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), 
##__VA_ARGS__)
           ^
   include/linux/dev_printk.h:109:3: note: expanded from macro 
'dev_printk_index_wrap'
                   dev_printk_index_emit(level, fmt);                      \
                   ^
   include/linux/dev_printk.h:105:2: note: expanded from macro 
'dev_printk_index_emit'
           printk_index_subsys_emit("%s %s: ", level, fmt)
           ^
   include/linux/printk.h:413:2: note: expanded from macro 
'printk_index_subsys_emit'
           __printk_index_emit(fmt, level, subsys_fmt_prefix)
           ^
   include/linux/printk.h:392:34: note: expanded from macro 
'__printk_index_emit'
   #define __printk_index_emit(...) do {} while (0)
                                    ^
   drivers/tty/serial/sh-sci.c:3243:4: note: Returning without writing to 
'*dev_id'
                           return ERR_PTR(ret);
                           ^
   drivers/tty/serial/sh-sci.c:3356:7: note: Returning from 'sci_parse_dt'
                   p = sci_parse_dt(dev, &dev_id);
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:3357:7: note: Calling 'IS_ERR'
                   if (IS_ERR(p))
                       ^~~~~~~~~
   include/linux/err.h:36:9: note: Assuming the condition is false
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE'
   #define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned 
long)-MAX_ERRNO)
                           
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   include/linux/err.h:36:2: note: Returning zero, which participates in a 
condition later
           return IS_ERR_VALUE((unsigned long)ptr);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/tty/serial/sh-sci.c:3357:7: note: Returning from 'IS_ERR'
                   if (IS_ERR(p))
                       ^~~~~~~~~
   drivers/tty/serial/sh-sci.c:3357:3: note: Taking false branch
                   if (IS_ERR(p))
                   ^
   drivers/tty/serial/sh-sci.c:3369:8: note: Array subscript is undefined
           sp = &sci_ports[dev_id];
                 ^         ~~~~~~
   1 warning generated.
   include/linux/list.h:73:2: warning: Dereference of null pointer 
[clang-analyzer-core.NullDereference]
           WRITE_ONCE(prev->next, new);
           ^
   include/asm-generic/rwonce.h:61:2: note: expanded from macro 'WRITE_ONCE'
           __WRITE_ONCE(x, val);                                           \
           ^
   include/asm-generic/rwonce.h:55:30: note: expanded from macro '__WRITE_ONCE'
           *(volatile typeof(x) *)&(x) = (val);                            \
                                       ^
   drivers/gpu/drm/arm/display/komeda/komeda_kms.c:205:6: note: Assuming 'err' 
is 0

vim +3369 drivers/tty/serial/sh-sci.c

7b6fd3bf82c490 drivers/serial/sh-sci.c     Magnus Damm        2009-12-14  3354  
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3355  
        if (dev->dev.of_node) {
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3356  
                p = sci_parse_dt(dev, &dev_id);
2e72564a41cb94 drivers/tty/serial/sh-sci.c Lad Prabhakar      2021-11-03  3357  
                if (IS_ERR(p))
2e72564a41cb94 drivers/tty/serial/sh-sci.c Lad Prabhakar      2021-11-03  3358  
                        return PTR_ERR(p);
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3359  
        } else {
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3360  
                p = dev->dev.platform_data;
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3361  
                if (p == NULL) {
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3362  
                        dev_err(&dev->dev, "no platform data supplied\n");
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3363  
                        return -EINVAL;
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3364  
                }
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3365  
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3366  
                dev_id = dev->id;
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3367  
        }
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3368  
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06 @3369  
        sp = &sci_ports[dev_id];
d535a2305facf9 drivers/serial/sh-sci.c     Paul Mundt         2011-01-19  3370  
        platform_set_drvdata(dev, sp);
0ee70712922c15 drivers/serial/sh-sci.c     Magnus Damm        2009-01-21  3371  
20bdcab8268cb0 drivers/tty/serial/sh-sci.c Bastian Hecht      2013-12-06  3372  
        ret = sci_probe_single(dev, dev_id, p, sp);
0ee70712922c15 drivers/serial/sh-sci.c     Magnus Damm        2009-01-21  3373  
        if (ret)
6dae14216c85ee drivers/tty/serial/sh-sci.c Laurent Pinchart   2012-06-13  3374  
                return ret;
d535a2305facf9 drivers/serial/sh-sci.c     Paul Mundt         2011-01-19  3375  
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3376  
        if (sp->port.fifosize > 1) {
6aa57f16185cfd drivers/tty/serial/sh-sci.c Greg Kroah-Hartman 2019-07-04  3377  
                ret = device_create_file(&dev->dev, &dev_attr_rx_fifo_trigger);
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3378  
                if (ret)
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3379  
                        return ret;
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3380  
        }
fa2abb03637a55 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-09-29  3381  
        if (sp->port.type == PORT_SCIFA || sp->port.type == PORT_SCIFB ||
fa2abb03637a55 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-09-29  3382  
            sp->port.type == PORT_HSCIF) {
6aa57f16185cfd drivers/tty/serial/sh-sci.c Greg Kroah-Hartman 2019-07-04  3383  
                ret = device_create_file(&dev->dev, &dev_attr_rx_fifo_timeout);
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3384  
                if (ret) {
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3385  
                        if (sp->port.fifosize > 1) {
6aa57f16185cfd drivers/tty/serial/sh-sci.c Greg Kroah-Hartman 2019-07-04  3386  
                                device_remove_file(&dev->dev,
6aa57f16185cfd drivers/tty/serial/sh-sci.c Greg Kroah-Hartman 2019-07-04  3387  
                                                   &dev_attr_rx_fifo_trigger);
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3388  
                        }
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3389  
                        return ret;
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3390  
                }
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3391  
        }
5d23188a473da0 drivers/tty/serial/sh-sci.c Ulrich Hecht       2017-02-03  3392  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to