]> exis.tech > repos - linux.git/blobdiff - kernel/trace/ring_buffer.c
Merge tag 'hwmon-for-v7.2-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/groec...
[linux.git] / kernel / trace / ring_buffer.c
index 56a328e943955e64c43c3493a8813e9c3a3d73d9..804ccae694d2151810da6ed0d2c01e069de1e529 100644 (file)
@@ -270,7 +270,8 @@ unsigned ring_buffer_event_length(struct ring_buffer_event *event)
        if (event->type_len > RINGBUF_TYPE_DATA_TYPE_LEN_MAX)
                return length;
        length -= RB_EVNT_HDR_SIZE;
-       if (length > RB_MAX_SMALL_DATA + sizeof(event->array[0]))
+       if (length > RB_MAX_SMALL_DATA + sizeof(event->array[0]) ||
+           RB_FORCE_8BYTE_ALIGNMENT)
                 length -= sizeof(event->array[0]);
        return length;
 }
@@ -2329,10 +2330,7 @@ static struct ring_buffer_desc *ring_buffer_desc(struct trace_buffer_desc *trace
        size_t len;
        int i;
 
-       if (!trace_desc)
-               return NULL;
-
-       if (cpu >= trace_desc->nr_cpus)
+       if (!trace_desc || !trace_desc->nr_cpus)
                return NULL;
 
        end = (struct ring_buffer_desc *)((void *)trace_desc + trace_desc->struct_len);
@@ -7174,7 +7172,7 @@ int ring_buffer_read_page(struct trace_buffer *buffer,
                        rpos = reader->read;
                        pos += event_size;
 
-                       if (rpos >= event_size)
+                       if (rpos >= size)
                                break;
 
                        event = rb_reader_event(cpu_buffer);