:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check warning: 
include/linux/bitops.h:52:11: warning: dereference of NULL 'page' [CWE-476] 
[-Wanalyzer-null-dereference]"
:::::: 

CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Alexander Lobakin <[email protected]>

tree:   https://github.com/alobakin/linux bitops
head:   9bd39b17ce49d350eed93a031e0da6389067013e
commit: a8846f7b2f123f210694db27803e17fae1c15cbe [6/7] bitops: let optimize out 
non-atomic bitops on compile-time constants
:::::: branch date: 18 hours ago
:::::: commit date: 20 hours ago
config: i386-randconfig-c001 
(https://download.01.org/0day-ci/archive/20220618/[email protected]/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
        wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
        chmod +x ~/bin/make.cross
        # 
https://github.com/alobakin/linux/commit/a8846f7b2f123f210694db27803e17fae1c15cbe
        git remote add alobakin https://github.com/alobakin/linux
        git fetch --no-tags alobakin bitops
        git checkout a8846f7b2f123f210694db27803e17fae1c15cbe
        # save the config file
         ARCH=i386 KBUILD_USERCFLAGS='-fanalyzer -Wno-error' 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>


gcc-analyzer warnings: (new ones prefixed by >>)
   net/unix/af_unix.c: In function 'unix_dgram_disconnected':
>> net/unix/af_unix.c:208:35: warning: dereference of NULL 'other' [CWE-476] 
>> [-Wanalyzer-null-dereference]
     208 | #define unix_peer(sk) (unix_sk(sk)->peer)
         |                       ~~~~~~~~~~~~^~~~~~~
   net/unix/af_unix.c:537:53: note: in expansion of macro 'unix_peer'
     537 |                 if (!sock_flag(other, SOCK_DEAD) && unix_peer(other) 
== sk) {
         |                                                     ^~~~~~~~~
     'unix_seqpacket_sendmsg.part.0': events 1-2
       |
       | 2329 | static int unix_seqpacket_sendmsg(struct socket *sock, struct 
msghdr *msg,
       |      |            ^~~~~~~~~~~~~~~~~~~~~~
       |      |            |
       |      |            (1) entry to 'unix_seqpacket_sendmsg.part.0'
       |......
       | 2345 |         return unix_dgram_sendmsg(sock, msg, len);
       |      |                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                |
       |      |                (2) calling 'unix_dgram_sendmsg' from 
'unix_seqpacket_sendmsg.part.0'
       |
       +--> 'unix_dgram_sendmsg': events 3-4
              |
              | 1840 | static int unix_dgram_sendmsg(struct socket *sock, 
struct msghdr *msg,
              |      |            ^~~~~~~~~~~~~~~~~~
              |      |            |
              |      |            (3) entry to 'unix_dgram_sendmsg'
              |......
              | 1856 |         err = scm_send(sock, msg, &scm, false);
              |      |               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |               |
              |      |               (4) calling 'scm_send' from 
'unix_dgram_sendmsg'
              |
              +--> 'scm_send': event 5
                     |
                     |include/net/scm.h:78:23:
                     |   78 | static __inline__ int scm_send(struct socket 
*sock, struct msghdr *msg,
                     |      |                       ^~~~~~~~
                     |      |                       |
                     |      |                       (5) entry to 'scm_send'
                     |
                   'scm_send': event 6
                     |
                     |include/linux/fortify-string.h:274:12:
                     |  274 |         if (p_size != (size_t)(-1) && p_size < 
size)
                     |      |            ^
                     |      |            |
                     |      |            (6) following 'false' branch...
                     |
                   'scm_send': event 7
                     |
                     |   47 | #define __underlying_memset     __builtin_memset
                     |      |                                 ^
                     |      |                                 |
                     |      |                                 (7) ...to here
   include/linux/fortify-string.h:281:9: note: in expansion of macro 
'__underlying_memset'
                     |  281 |         __underlying_memset(p, c, 
__fortify_size);                      \
                     |      |         ^~~~~~~~~~~~~~~~~~~
   include/linux/fortify-string.h:288:25: note: in expansion of macro 
'__fortify_memset_chk'
                     |  288 | #define memset(p, c, s) __fortify_memset_chk(p, 
c, s,                   \
                     |      |                         ^~~~~~~~~~~~~~~~~~~~
   include/net/scm.h:81:9: note: in expansion of macro 'memset'
                     |   81 |         memset(scm, 0, sizeof(*scm));
                     |      |         ^~~~~~
                     |
                   'scm_send': events 8-9
                     |
                     |   84 |         if (forcecreds)
                     |      |            ^
                     |      |            |
                     |      |            (8) following 'false' branch (when 
'forcecreds == 0')...
                     |   85 |                 scm_set_cred(scm, 
task_tgid(current), current_uid(), current_gid());
                     |   86 |         unix_get_peersec_dgram(sock, scm);
                     |      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     |      |         |
                     |      |         (9) ...to here
                     |
              <------+
              |
            'unix_dgram_sendmsg': events 10-11
              |
              |net/unix/af_unix.c:1856:15:
              | 1856 |         err = scm_send(sock, msg, &scm, false);
              |      |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |               |
              |      |               (10) returning to 'unix_dgram_sendmsg' 
from 'scm_send'
              | 1857 |         if (err < 0)
              |      |            ~   
              |      |            |
              |      |            (11) following 'false' branch...
              |
            'unix_dgram_sendmsg': events 12-15
              |
              | 1860 |         err = -EOPNOTSUPP;
              | 1861 |         if (msg->msg_flags&MSG_OOB)
              |      |            ~ 
              |      |            |
              |      |            (13) following 'false' branch...
              |......
              | 1864 |         if (msg->msg_namelen) {
              |      |            ~~~~~~~~~~~~~~~~~
              |      |            |   |
              |      |            |   (14) ...to here
              |      |            (15) following 'false' branch...
--
              |      |                       |
              |      |                       (12) returning to 
'isolate_single_pageblock' from 'set_migratetype_isolate'
              |  335 |                                 isolate_pageblock, 
isolate_pageblock + pageblock_nr_pages);
              |      |                                 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |  336 | 
              |  337 |                 if (ret)
              |      |                    ~   
              |      |                    |
              |      |                    (13) following 'false' branch (when 
'ret == 0')...
              |......
              |  353 |         if (isolate_before) {
              |      |            ~           
              |      |            |
              |      |            (14) ...to here
              |      |            (15) following 'false' branch (when 
'isolate_before == 0')...
              |
            'isolate_single_pageblock': event 16
              |
              |  357 |                 if (!pfn_to_online_page(boundary_pfn - 
1))
   arch/x86/include/asm/page_32.h:19:35: note: in definition of macro 
'pfn_valid'
              |   19 | #define pfn_valid(pfn)          ((pfn) < max_mapnr)
              |      |                                   ^~~
   mm/page_isolation.c:357:22: note: in expansion of macro 'pfn_to_online_page'
              |  357 |                 if (!pfn_to_online_page(boundary_pfn - 
1))
              |      |                      ^~~~~~~~~~~~~~~~~~
              |
            'isolate_single_pageblock': event 17
              |
              |include/linux/memory_hotplug.h:223:12:
              |  223 |         if (pfn_valid(pfn))                     \
              |      |            ^
              |      |            |
              |      |            (17) following 'true' branch...
   mm/page_isolation.c:357:22: note: in expansion of macro 'pfn_to_online_page'
              |  357 |                 if (!pfn_to_online_page(boundary_pfn - 
1))
              |      |                      ^~~~~~~~~~~~~~~~~~
              |
            'isolate_single_pageblock': event 18
              |
              |include/asm-generic/memory_model.h:18:42:
              |   18 | #define __pfn_to_page(pfn)      (mem_map + ((pfn) - 
ARCH_PFN_OFFSET))
              |      |                                 
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                                          |
              |      |                                          (18) ...to here
   include/asm-generic/memory_model.h:53:21: note: in expansion of macro 
'__pfn_to_page'
              |   53 | #define pfn_to_page __pfn_to_page
              |      |                     ^~~~~~~~~~~~~
   include/linux/memory_hotplug.h:224:27: note: in expansion of macro 
'pfn_to_page'
              |  224 |                 ___page = pfn_to_page(pfn);     \
              |      |                           ^~~~~~~~~~~
   mm/page_isolation.c:357:22: note: in expansion of macro 'pfn_to_online_page'
              |  357 |                 if (!pfn_to_online_page(boundary_pfn - 
1))
              |      |                      ^~~~~~~~~~~~~~~~~~
              |
            'isolate_single_pageblock': event 19
              |
              |  357 |                 if (!pfn_to_online_page(boundary_pfn - 
1))
              |      |                    ^
              |      |                    |
              |      |                    (19) following 'false' branch (when 
'___page' is non-NULL)...
              |
            'isolate_single_pageblock': event 20
              |
              |cc1:
              | (20): ...to here
              |
            'isolate_single_pageblock': events 21-22
              |
              |  361 |         for (pfn = start_pfn; pfn < boundary_pfn;) {
              |      |                               ~~~~^~~~~~~~~~~~~~
              |      |                                   |
              |      |                                   (21) following 'true' 
branch (when 'pfn < boundary_pfn')...
              |  362 |                 struct page *page = 
__first_valid_page(pfn, boundary_pfn - pfn);
              |      |                                     
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                                     |
              |      |                                     (22) ...to here
              |
            'isolate_single_pageblock': event 23
              |
              |include/linux/page-flags.h:316:48:
              |  316 |         return test_bit(PG_head, &page->flags) ||
              |
            'isolate_single_pageblock': events 24-25
              |
              |arch/x86/include/asm/bitops.h:207:22:
              |  207 |                 (addr[nr >> _BITOPS_LONG_SHIFT])) != 0;
              |      |                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                      |
              |      |                      (24) ...to here
              |      |                      (25) dereference of NULL 'page'
              |
   In file included from include/linux/kernel.h:22,
                    from arch/x86/include/asm/percpu.h:27,
                    from arch/x86/include/asm/preempt.h:6,
                    from include/linux/preempt.h:78,
                    from include/linux/spinlock.h:55,
                    from include/linux/mmzone.h:8,
                    from include/linux/gfp.h:6,
                    from include/linux/mm.h:7,
                    from mm/page_isolation.c:6:
>> include/linux/bitops.h:52:11: warning: dereference of NULL 'page' [CWE-476] 
>> [-Wanalyzer-null-dereference]
      52 |           __builtin_constant_p(*(const unsigned long *)(addr))) ?    
   \
         |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitops.h:61:41: note: in expansion of macro 'bitop'
      61 | #define test_bit(nr, addr)              bitop(_test_bit, nr, addr)
         |                                         ^~~~~
   include/linux/page-flags.h:316:16: note: in expansion of macro 'test_bit'
     316 |         return test_bit(PG_head, &page->flags) ||
         |                ^~~~~~~~
     'start_isolate_page_range': events 1-2
       |
       |mm/page_isolation.c:526:5:
       |  526 | int start_isolate_page_range(unsigned long start_pfn, unsigned 
long end_pfn,
       |      |     ^~~~~~~~~~~~~~~~~~~~~~~~
       |      |     |
       |      |     (1) entry to 'start_isolate_page_range'
       |......
       |  538 |         ret = isolate_single_pageblock(isolate_start, flags, 
gfp_flags, false, skip_isolation);
       |      |               
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |               |
       |      |               (2) calling 'isolate_single_pageblock' from 
'start_isolate_page_range'
       |
       +--> 'isolate_single_pageblock': events 3-8
              |
              |  302 | static int isolate_single_pageblock(unsigned long 
boundary_pfn, int flags,
              |      |            ^~~~~~~~~~~~~~~~~~~~~~~~
              |      |            |
              |      |            (3) entry to 'isolate_single_pageblock'
              |......
              |  314 |         if (isolate_before)
              |      |            ~
              |      |            |
              |      |            (4) following 'false' branch (when 
'isolate_before == 0')...
              |......
              |  325 |         zone  = 
page_zone(pfn_to_page(isolate_pageblock));
              |      |                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                 |
              |      |                 (5) ...to here
              |......
              |  331 |         if (skip_isolation)
              |      |            ~
              |      |            |
              |      |            (6) following 'false' branch (when 
'skip_isolation == 0')...
              |......
              |  334 |                 ret = 
set_migratetype_isolate(pfn_to_page(isolate_pageblock), saved_mt, flags,
              |      |                       
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                       |
              |      |                       (7) ...to here
              |      |                       (8) calling 
'set_migratetype_isolate' from 'isolate_single_pageblock'
              |  335 |                                 isolate_pageblock, 
isolate_pageblock + pageblock_nr_pages);
              |      |                                 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |
              +--> 'set_migratetype_isolate': events 9-10
                     |
                     |  147 | static int set_migratetype_isolate(struct page 
*page, int migratetype, int isol_flags,
                     |      |            ^~~~~~~~~~~~~~~~~~~~~~~
                     |      |            |
                     |      |            (9) entry to 'set_migratetype_isolate'
                     |......
                     |  180 |         if (!unmovable) {
                     |      |            ~
                     |      |            |
                     |      |            (10) following 'true' branch (when 
'unmovable' is NULL)...
                     |
                   'set_migratetype_isolate': event 11
                     |
                     |include/asm-generic/memory_model.h:19:57:
                     |   19 | #define __page_to_pfn(page)     ((unsigned 
long)((page) - mem_map) + \
                     |      |                                                   
      ^
                     |      |                                                   
      |
                     |      |                                                   
      (11) ...to here
   include/asm-generic/memory_model.h:52:21: note: in expansion of macro 
'__page_to_pfn'
                     |   52 | #define page_to_pfn __page_to_pfn
                     |      |                     ^~~~~~~~~~~~~
   include/linux/mmzone.h:103:39: note: in expansion of macro 'page_to_pfn'
                     |  103 |         get_pfnblock_flags_mask(page, 
page_to_pfn(page), MIGRATETYPE_MASK)
                     |      |                                       ^~~~~~~~~~~
   mm/page_isolation.c:182:26: note: in expansion of macro 
'get_pageblock_migratetype'
                     |  182 |                 int mt = 
get_pageblock_migratetype(page);
                     |      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~
                     |
              <------+
              |
            'isolate_single_pageblock': events 12-15
              |
              |  334 |                 ret = 
set_migratetype_isolate(pfn_to_page(isolate_pageblock), saved_mt, flags,
              |      |                       
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |      |                       |
              |      |                       (12) returning to 
'isolate_single_pageblock' from 'set_migratetype_isolate'
              |  335 |                                 isolate_pageblock, 
isolate_pageblock + pageblock_nr_pages);
              |      |                                 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
              |  336 | 
              |  337 |                 if (ret)
              |      |                    ~   
              |      |                    |
              |      |                    (13) following 'false' branch (when 
'ret == 0')...
              |......
              |  353 |         if (isolate_before) {
              |      |            ~           
              |      |            |
              |      |            (14) ...to here
--
                            |
                          'get_parents': events 32-41
                            |
                            | 1216 |                 if ((ret = 
get_far_parent(tb, h + 1, &curf,
                            |      |                    ~       
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            |      |                    |       |
                            |      |                    |       (32) returning 
to 'get_parents' from 'get_far_parent'
                            |      |                    (33) following 'false' 
branch (when 'ret == 0')...
                            | 1217 |                                            
       &curcf,
                            |      |                                            
       ~~~~~~~
                            | 1218 |                                            
       LEFT_PARENTS)) != CARRY_ON)
                            |      |                                            
       ~~~~~~~~~~~~~
                            |......
                            | 1222 |         brelse(tb->FL[h]);
                            |      |                ~~~~~~~~~    
                            |      |                      |
                            |      |                      (34) ...to here
                            | 1223 |         tb->FL[h] = curf;       /* New 
initialization of FL[h]. */
                            |      |         ~~~~~~~~~~~~~~~~    
                            |      |                   |
                            |      |                   (35) 'curf' is NULL
                            |      |                   (36) 'curf' is NULL
                            | 1224 |         brelse(tb->CFL[h]);
                            | 1225 |         tb->CFL[h] = curcf;     /* New 
initialization of CFL[h]. */
                            |      |         ~~~~~~~~~~~~~~~~~~  
                            |      |                    |
                            |      |                    (37) 'curf' is NULL
                            |      |                    (38) 'curf' is NULL
                            |......
                            | 1234 |         if (position == 
B_NR_ITEMS(PATH_H_PBUFFER(path, h + 1))) {
                            |      |            ~                
                            |      |            |
                            |      |            (39) following 'true' branch...
                            |......
                            | 1242 |                      get_far_parent(tb, h 
+ 1, &curf, &curcf,
                            |      |                      
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                            |      |                      |
                            |      |                      (40) ...to here
                            |      |                      (41) calling 
'get_far_parent' from 'get_parents'
                            | 1243 |                                     
RIGHT_PARENTS)) != CARRY_ON)
                            |      |                                     
~~~~~~~~~~~~~~
                            |
                            +--> 'get_far_parent': events 42-45
                                   |
                                   | 1023 | static int get_far_parent(struct 
tree_balance *tb,
                                   |      |            ^~~~~~~~~~~~~~
                                   |      |            |
                                   |      |            (42) entry to 
'get_far_parent'
                                   |......
                                   | 1086 |         if (counter == 
FIRST_PATH_ELEMENT_OFFSET) {
                                   |      |            ~
                                   |      |            |
                                   |      |            (43) following 'false' 
branch (when 'counter != 2')...
                                   |......
                                   | 1107 |         if 
(buffer_locked(*pcom_father)) {
                                   |      |             
~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |      |             |
                                   |      |             (44) ...to here
                                   |      |             (45) 'curf' is NULL
                                   |
                                 'get_far_parent': event 46
                                   |
                                   |include/linux/bitops.h:53:30:
                                   |   49 |         ((__builtin_constant_p(nr) 
&&                                   \
                                   |      |         
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |   50 |           
__builtin_constant_p((uintptr_t)(addr) != (uintptr_t)NULL) && \
                                   |      |           
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |   51 |           (uintptr_t)(addr) != 
(uintptr_t)NULL &&                       \
                                   |      |           
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |   52 |           
__builtin_constant_p(*(const unsigned long *)(addr))) ?       \
                                   |      |           
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |   53 |          const##op(nr, addr) : 
op(nr, addr))
                                   |      |          
~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
                                   |      |                              |
                                   |      |                              (46) 
following 'false' branch...
   include/linux/bitops.h:61:41: note: in expansion of macro 'bitop'
                                   |   61 | #define test_bit(nr, addr)          
    bitop(_test_bit, nr, addr)
                                   |      |                                     
    ^~~~~
   include/linux/buffer_head.h:99:16: note: in expansion of macro 'test_bit'
                                   |   99 |         return test_bit(BH_##bit, 
&(bh)->b_state);                      \
                                   |      |                ^~~~~~~~
   include/linux/buffer_head.h:123:1: note: in expansion of macro 'BUFFER_FNS'
                                   |  123 | BUFFER_FNS(Lock, locked)
                                   |      | ^~~~~~~~~~
                                   |
                                 'get_far_parent': events 47-48
                                   |
                                   |arch/x86/include/asm/bitops.h:207:22:
                                   |  207 |                 (addr[nr >> 
_BITOPS_LONG_SHIFT])) != 0;
                                   |      |                 
~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
                                   |      |                      |
                                   |      |                      (47) ...to here
                                   |      |                      (48) 
dereference of NULL '*pcom_father'
                                   |
   In file included from include/linux/log2.h:12,
                    from arch/x86/include/asm/div64.h:8,
                    from include/linux/math.h:6,
                    from include/linux/math64.h:6,
                    from include/linux/time.h:6,
                    from fs/reiserfs/fix_node.c:5:
>> include/linux/bitops.h:52:32: warning: dereference of NULL 'curf' [CWE-476] 
>> [-Wanalyzer-null-dereference]
      52 |           __builtin_constant_p(*(const unsigned long *)(addr))) ?    
   \
         |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitops.h:61:41: note: in expansion of macro 'bitop'
      61 | #define test_bit(nr, addr)              bitop(_test_bit, nr, addr)
         |                                         ^~~~~
   include/linux/buffer_head.h:99:16: note: in expansion of macro 'test_bit'
      99 |         return test_bit(BH_##bit, &(bh)->b_state);                   
   \
         |                ^~~~~~~~
   include/linux/buffer_head.h:123:1: note: in expansion of macro 'BUFFER_FNS'
     123 | BUFFER_FNS(Lock, locked)
         | ^~~~~~~~~~
     'fix_nodes': events 1-2
       |
       |fs/reiserfs/fix_node.c:2545:5:
       | 2545 | int fix_nodes(int op_mode, struct tree_balance *tb,
       |      |     ^~~~~~~~~
       |      |     |
       |      |     (1) entry to 'fix_nodes'
       |......
       | 2574 |         if (FILESYSTEM_CHANGED_TB(tb))
       |      |            ~
       |      |            |
       |      |            (2) following 'false' branch...
       |
     'fix_nodes': event 3
       |
       |include/linux/buffer_head.h:99:35:
       |   99 |         return test_bit(BH_##bit, &(bh)->b_state);              
        \
   include/linux/bitops.h:50:44: note: in definition of macro 'bitop'
       |   50 |           __builtin_constant_p((uintptr_t)(addr) != 
(uintptr_t)NULL) && \
       |      |                                            ^~~~
   include/linux/buffer_head.h:99:16: note: in expansion of macro 'test_bit'
       |   99 |         return test_bit(BH_##bit, &(bh)->b_state);              
        \
       |      |                ^~~~~~~~
   include/linux/buffer_head.h:123:1: note: in expansion of macro 'BUFFER_FNS'
       |  123 | BUFFER_FNS(Lock, locked)
       |      | ^~~~~~~~~~
       |
     'fix_nodes': event 4
       |
       |fs/reiserfs/fix_node.c:2625:12:
       | 2625 |         if (get_mem_for_virtual_node(tb) == REPEAT_SEARCH)
       |      |            ^
       |      |            |
       |      |            (4) following 'false' branch...
       |
     'fix_nodes': event 5
       |
       |cc1:
       | (5): ...to here
       |
     'fix_nodes': events 6-10
       |
       | 2630 |         for (h = 0; h < MAX_HEIGHT && tb->insert_size[h]; h++) {
       |      |                     ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
       |      |                                    |
       |      |                                    (6) following 'true' 
branch...
       | 2631 |                 ret = get_direct_parent(tb, h);
       |      |                       ~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                       |
       |      |                       (7) ...to here
       | 2632 |                 if (ret != CARRY_ON)
       |      |                    ~                
       |      |                    |
       |      |                    (8) following 'false' branch (when 'ret == 
0')...
       |......
       | 2635 |                 ret = check_balance(op_mode, tb, h, item_num,
       |      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       |      |                       |
       |      |                       (9) ...to here
       |      |                       (10) calling 'check_balance' from 
'fix_nodes'
       | 2636 |                                     pos_in_item, ins_ih, data);
       |      |                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~
       |
       +--> 'check_balance': events 11-14
              |
              | 2061 | static int check_balance(int mode,
              |      |            ^~~~~~~~~~~~~
              |      |            |
              |      |            (11) entry to 'check_balance'
              |......
              | 2082 |         if (tb->insert_size[h] > 0)
              |      |            ~
              |      |            |
              |      |            (12) following 'true' branch...
              | 2083 |                 return ip_check_balance(tb, h);
              |      |                        ~~~~~~~~~~~~~~~~~~~~~~~
              |      |                        |
              |      |                        (13) ...to here
              |      |                        (14) calling 'ip_check_balance' 
from 'check_balance'
              |
              +--> 'ip_check_balance': events 15-18
                     |
                     | 1324 | static int ip_check_balance(struct tree_balance 
*tb, int h)
                     |      |            ^~~~~~~~~~~~~~~~
                     |      |            |
                     |      |            (15) entry to 'ip_check_balance'
                     |......
                     | 1377 |         if (!Sh) {
                     |      |            ~

vim +/page +52 include/linux/bitops.h

521611f961a7dd Alexander Lobakin 2022-05-09  35  
a8846f7b2f123f Alexander Lobakin 2022-05-12  36  /*
a8846f7b2f123f Alexander Lobakin 2022-05-12  37   * Many architecture-specific 
non-atomic bitops contain inline asm code and due
a8846f7b2f123f Alexander Lobakin 2022-05-12  38   * to that the compiler can't 
optimize them to compile-time expressions or
a8846f7b2f123f Alexander Lobakin 2022-05-12  39   * constants. In contrary, 
gen_*() helpers are defined in pure C and compilers
a8846f7b2f123f Alexander Lobakin 2022-05-12  40   * optimize them just well.
a8846f7b2f123f Alexander Lobakin 2022-05-12  41   * Therefore, to make 
`unsigned long foo = 0; __set_bit(BAR, &foo)` effectively
a8846f7b2f123f Alexander Lobakin 2022-05-12  42   * equal to `unsigned long foo 
= BIT(BAR)`, pick the generic C alternative when
a8846f7b2f123f Alexander Lobakin 2022-05-12  43   * the arguments can be 
resolved at compile time. That expression itself is a
a8846f7b2f123f Alexander Lobakin 2022-05-12  44   * constant and doesn't bring 
any functional changes to the rest of cases.
a8846f7b2f123f Alexander Lobakin 2022-05-12  45   * The casts to `uintptr_t` 
are needed to mitigate `-Waddress` warnings when
a8846f7b2f123f Alexander Lobakin 2022-05-12  46   * passing a bitmap from .bss 
or .data (-> `!!addr` is always true).
a8846f7b2f123f Alexander Lobakin 2022-05-12  47   */
54dcb250626d4e Alexander Lobakin 2022-06-16  48  #define bitop(op, nr, addr)    
                                        \
a8846f7b2f123f Alexander Lobakin 2022-05-12  49         
((__builtin_constant_p(nr) &&                                   \
a8846f7b2f123f Alexander Lobakin 2022-05-12  50           
__builtin_constant_p((uintptr_t)(addr) != (uintptr_t)NULL) && \
a8846f7b2f123f Alexander Lobakin 2022-05-12  51           (uintptr_t)(addr) != 
(uintptr_t)NULL &&                       \
a8846f7b2f123f Alexander Lobakin 2022-05-12 @52           
__builtin_constant_p(*(const unsigned long *)(addr))) ?       \
a8846f7b2f123f Alexander Lobakin 2022-05-12  53          const##op(nr, addr) : 
op(nr, addr))
54dcb250626d4e Alexander Lobakin 2022-06-16  54  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to