CC: kbuild-...@lists.01.org
TO: "Andrii, Nakryiko," <andr...@fb.com>
CC: Daniel Borkmann <dan...@iogearbox.net>

tree:   
https://github.com/0day-ci/linux/commits/John-Fastabend/fix-ktls-with-sk_skb_verdict-programs/20200601-011016
head:   782773c4c3638155ca2955789a3f70e090afc347
commit: 35dd30a79d27f96ab5ca28e65a869ed9e611af69 [1888/1896] bpf: Implement BPF 
ring buffer and verifier support for it
:::::: branch date: 35 hours ago
:::::: commit date: 4 days ago
config: microblaze-randconfig-s031-20200602 (attached as .config)
compiler: microblaze-linux-gcc (GCC) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.1-243-gc100a7ab-dirty
        git checkout 35dd30a79d27f96ab5ca28e65a869ed9e611af69
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=microblaze CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

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


sparse warnings: (new ones prefixed by >>)

>> kernel/bpf/ringbuf.c:332:13: sparse: sparse: context imbalance in 
>> '__bpf_ringbuf_reserve' - different lock contexts for basic block

# 
https://github.com/0day-ci/linux/commit/35dd30a79d27f96ab5ca28e65a869ed9e611af69
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 35dd30a79d27f96ab5ca28e65a869ed9e611af69
vim +/__bpf_ringbuf_reserve +332 kernel/bpf/ringbuf.c

35dd30a79d27f9 Andrii Nakryiko 2020-05-29  331  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29 @332  static void 
*__bpf_ringbuf_reserve(struct bpf_ringbuf *rb, u64 size)
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  333  {
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  334          unsigned long cons_pos, 
prod_pos, new_prod_pos, flags;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  335          u32 len, pg_off;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  336          struct bpf_ringbuf_hdr 
*hdr;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  337  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  338          if (unlikely(size > 
RINGBUF_MAX_RECORD_SZ))
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  339                  return NULL;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  340  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  341          len = round_up(size + 
BPF_RINGBUF_HDR_SZ, 8);
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  342          cons_pos = 
smp_load_acquire(&rb->consumer_pos);
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  343  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  344          if (in_nmi()) {
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  345                  if 
(!spin_trylock_irqsave(&rb->spinlock, flags))
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  346                          return 
NULL;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  347          } else {
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  348                  
spin_lock_irqsave(&rb->spinlock, flags);
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  349          }
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  350  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  351          prod_pos = 
rb->producer_pos;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  352          new_prod_pos = prod_pos 
+ len;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  353  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  354          /* check for out of 
ringbuf space by ensuring producer position
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  355           * doesn't advance more 
than (ringbuf_size - 1) ahead
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  356           */
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  357          if (new_prod_pos - 
cons_pos > rb->mask) {
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  358                  
spin_unlock_irqrestore(&rb->spinlock, flags);
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  359                  return NULL;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  360          }
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  361  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  362          hdr = (void *)rb->data 
+ (prod_pos & rb->mask);
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  363          pg_off = 
bpf_ringbuf_rec_pg_off(rb, hdr);
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  364          hdr->len = size | 
BPF_RINGBUF_BUSY_BIT;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  365          hdr->pg_off = pg_off;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  366  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  367          /* pairs with 
consumer's smp_load_acquire() */
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  368          
smp_store_release(&rb->producer_pos, new_prod_pos);
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  369  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  370          
spin_unlock_irqrestore(&rb->spinlock, flags);
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  371  
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  372          return (void *)hdr + 
BPF_RINGBUF_HDR_SZ;
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  373  }
35dd30a79d27f9 Andrii Nakryiko 2020-05-29  374  

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

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to