CC: [email protected]
CC: [email protected]
TO: Christophe Leroy <[email protected]>
CC: Michael Ellerman <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   3f667b5d4053ad54aee13dab5c94f04ff75ddfdf
commit: 1e688dd2a3d6759d416616ff07afc4bb836c4213 powerpc/bug: Provide better 
flexibility to WARN_ON/__WARN_FLAGS() with asm goto
date:   4 months ago
:::::: branch date: 4 hours ago
:::::: commit date: 4 months ago
config: powerpc-randconfig-m031-20211218 
(https://download.01.org/0day-ci/archive/20211219/[email protected]/config)
compiler: powerpc-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

smatch warnings:
kernel/trace/ring_buffer.c:5897 test_ringbuffer() warn: passing zero to 
'PTR_ERR'
kernel/trace/trace_events_hist.c:1693 create_hist_field() error: we previously 
assumed 'field' could be null (see line 1627)

vim +/PTR_ERR +5897 kernel/trace/ring_buffer.c

6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5855) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5856) static __init int 
test_ringbuffer(void)
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5857) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5858)      struct 
task_struct *rb_hammer;
13292494379f92f Steven Rostedt (VMware   2019-12-13  5859)      struct 
trace_buffer *buffer;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5860)      int cpu;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5861)      int ret = 0;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5862) 
a356646a56857c2 Steven Rostedt (VMware   2019-12-02  5863)      if 
(security_locked_down(LOCKDOWN_TRACEFS)) {
ee19545220a8663 Stephen Rothwell         2019-12-06  5864               
pr_warn("Lockdown is enabled, skipping ring buffer tests\n");
a356646a56857c2 Steven Rostedt (VMware   2019-12-02  5865)              return 
0;
a356646a56857c2 Steven Rostedt (VMware   2019-12-02  5866)      }
a356646a56857c2 Steven Rostedt (VMware   2019-12-02  5867) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5868)      
pr_info("Running ring buffer tests...\n");
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5869) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5870)      buffer = 
ring_buffer_alloc(RB_TEST_BUFFER_SIZE, RB_FL_OVERWRITE);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5871)      if 
(WARN_ON(!buffer))
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5872)              return 
0;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5873) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5874)      /* Disable 
buffer so that threads can't write to it yet */
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5875)      
ring_buffer_record_off(buffer);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5876) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5877)      
for_each_online_cpu(cpu) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5878)              
rb_data[cpu].buffer = buffer;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5879)              
rb_data[cpu].cpu = cpu;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5880)              
rb_data[cpu].cnt = cpu;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5881)              
rb_threads[cpu] = kthread_create(rb_test, &rb_data[cpu],
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5882)                      
                         "rbtester/%d", cpu);
62277de758b155d Wei Yongjun              2016-06-17  5883               if 
(WARN_ON(IS_ERR(rb_threads[cpu]))) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5884)                      
pr_cont("FAILED\n");
62277de758b155d Wei Yongjun              2016-06-17  5885                       
ret = PTR_ERR(rb_threads[cpu]);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5886)                      
goto out_free;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5887)              }
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5888) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5889)              
kthread_bind(rb_threads[cpu], cpu);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5890)              
wake_up_process(rb_threads[cpu]);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5891)      }
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5892) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5893)      /* Now create 
the rb hammer! */
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5894)      rb_hammer = 
kthread_run(rb_hammer_test, NULL, "rbhammer");
62277de758b155d Wei Yongjun              2016-06-17  5895       if 
(WARN_ON(IS_ERR(rb_hammer))) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5896)              
pr_cont("FAILED\n");
62277de758b155d Wei Yongjun              2016-06-17 @5897               ret = 
PTR_ERR(rb_hammer);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5898)              goto 
out_free;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5899)      }
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5900) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5901)      
ring_buffer_record_on(buffer);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5902)      /*
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5903)       * Show buffer 
is enabled before setting rb_test_started.
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5904)       * Yes there's 
a small race window where events could be
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5905)       * dropped and 
the thread wont catch it. But when a ring
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5906)       * buffer gets 
enabled, there will always be some kind of
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5907)       * delay before 
other CPUs see it. Thus, we don't care about
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5908)       * those 
dropped events. We care about events dropped after
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5909)       * the threads 
see that the buffer is active.
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5910)       */
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5911)      smp_wmb();
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5912)      rb_test_started 
= true;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5913) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5914)      
set_current_state(TASK_INTERRUPTIBLE);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5915)      /* Just run for 
10 seconds */;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5916)      
schedule_timeout(10 * HZ);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5917) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5918)      
kthread_stop(rb_hammer);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5919) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5920)  out_free:
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5921)      
for_each_online_cpu(cpu) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5922)              if 
(!rb_threads[cpu])
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5923)                      
break;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5924)              
kthread_stop(rb_threads[cpu]);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5925)      }
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5926)      if (ret) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5927)              
ring_buffer_free(buffer);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5928)              return 
ret;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5929)      }
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5930) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5931)      /* Report! */
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5932)      
pr_info("finished\n");
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5933)      
for_each_online_cpu(cpu) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5934)              struct 
ring_buffer_event *event;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5935)              struct 
rb_test_data *data = &rb_data[cpu];
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5936)              struct 
rb_item *item;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5937)              
unsigned long total_events;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5938)              
unsigned long total_dropped;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5939)              
unsigned long total_written;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5940)              
unsigned long total_alloc;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5941)              
unsigned long total_read = 0;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5942)              
unsigned long total_size = 0;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5943)              
unsigned long total_len = 0;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5944)              
unsigned long total_lost = 0;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5945)              
unsigned long lost;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5946)              int 
big_event_size;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5947)              int 
small_event_size;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5948) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5949)              ret = 
-1;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5950) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5951)              
total_events = data->events + data->events_nested;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5952)              
total_written = data->bytes_written + data->bytes_written_nested;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5953)              
total_alloc = data->bytes_alloc + data->bytes_alloc_nested;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5954)              
total_dropped = data->bytes_dropped + data->bytes_dropped_nested;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5955) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5956)              
big_event_size = data->max_size + data->max_size_nested;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5957)              
small_event_size = data->min_size + data->min_size_nested;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5958) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5959)              
pr_info("CPU %d:\n", cpu);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5960)              
pr_info("              events:    %ld\n", total_events);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5961)              
pr_info("       dropped bytes:    %ld\n", total_dropped);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5962)              
pr_info("       alloced bytes:    %ld\n", total_alloc);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5963)              
pr_info("       written bytes:    %ld\n", total_written);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5964)              
pr_info("       biggest event:    %d\n", big_event_size);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5965)              
pr_info("      smallest event:    %d\n", small_event_size);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5966) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5967)              if 
(RB_WARN_ON(buffer, total_dropped))
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5968)                      
break;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5969) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5970)              ret = 0;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5971) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5972)              while 
((event = ring_buffer_consume(buffer, cpu, NULL, &lost))) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5973)                      
total_lost += lost;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5974)                      
item = ring_buffer_event_data(event);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5975)                      
total_len += ring_buffer_event_length(event);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5976)                      
total_size += item->size + sizeof(struct rb_item);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5977)                      
if (memcmp(&item->str[0], rb_string, item->size) != 0) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5978)                      
        pr_info("FAILED!\n");
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5979)                      
        pr_info("buffer had: %.*s\n", item->size, item->str);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5980)                      
        pr_info("expected:   %.*s\n", item->size, rb_string);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5981)                      
        RB_WARN_ON(buffer, 1);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5982)                      
        ret = -1;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5983)                      
        break;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5984)                      
}
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5985)                      
total_read++;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5986)              }
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5987)              if (ret)
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5988)                      
break;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5989) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5990)              ret = 
-1;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5991) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5992)              
pr_info("         read events:   %ld\n", total_read);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5993)              
pr_info("         lost events:   %ld\n", total_lost);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5994)              
pr_info("        total events:   %ld\n", total_lost + total_read);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5995)              
pr_info("  recorded len bytes:   %ld\n", total_len);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5996)              
pr_info(" recorded size bytes:   %ld\n", total_size);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5997)              if 
(total_lost)
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5998)                      
pr_info(" With dropped events, record len and size may not match\n"
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  5999)                      
        " alloced and written from above\n");
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6000)              if 
(!total_lost) {
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6001)                      
if (RB_WARN_ON(buffer, total_len != total_alloc ||
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6002)                      
               total_size != total_written))
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6003)                      
        break;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6004)              }
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6005)              if 
(RB_WARN_ON(buffer, total_lost + total_read != total_events))
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6006)                      
break;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6007) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6008)              ret = 0;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6009)      }
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6010)      if (!ret)
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6011)              
pr_info("Ring buffer PASSED!\n");
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6012) 
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6013)      
ring_buffer_free(buffer);
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6014)      return 0;
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6015) }
6c43e554a2a5c1f Steven Rostedt (Red Hat  2013-03-15  6016) 

:::::: The code at line 5897 was first introduced by commit
:::::: 62277de758b155dc04b78f195a1cb5208c37b2df ring-buffer: Fix return value 
check in test_ringbuffer()

:::::: TO: Wei Yongjun <[email protected]>
:::::: CC: Steven Rostedt (VMware) <[email protected]>

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

Reply via email to