struct buffer_data_page *bpage;
        struct buffer_page *reader;
        unsigned long missed_events;
-       unsigned long flags;
        unsigned int commit;
        unsigned int read;
        u64 save_timestamp;
-       int ret = -1;
 
        if (!cpumask_test_cpu(cpu, buffer->cpumask))
-               goto out;
+               return -1;
 
        /*
         * If len is not big enough to hold the page header, then
         * we can not copy anything.
         */
        if (len <= BUF_PAGE_HDR_SIZE)
-               goto out;
+               return -1;
 
        len -= BUF_PAGE_HDR_SIZE;
 
        if (!data_page || !data_page->data)
-               goto out;
+               return -1;
+
        if (data_page->order != buffer->subbuf_order)
-               goto out;
+               return -1;
 
        bpage = data_page->data;
        if (!bpage)
-               goto out;
+               return -1;
 
-       raw_spin_lock_irqsave(&cpu_buffer->reader_lock, flags);
+       guard(raw_spinlock_irqsave)(&cpu_buffer->reader_lock);
 
        reader = rb_get_reader_page(cpu_buffer);
        if (!reader)
-               goto out_unlock;
+               return -1;
 
        event = rb_reader_event(cpu_buffer);
 
                if (full &&
                    (!read || (len < (commit - read)) ||
                     cpu_buffer->reader_page == cpu_buffer->commit_page))
-                       goto out_unlock;
+                       return -1;
 
                if (len > (commit - read))
                        len = (commit - read);
                size = rb_event_ts_length(event);
 
                if (len < size)
-                       goto out_unlock;
+                       return -1;
 
                /* save the current timestamp, since the user will need it */
                save_timestamp = cpu_buffer->read_stamp;
                if (reader->real_end)
                        local_set(&bpage->commit, reader->real_end);
        }
-       ret = read;
 
        cpu_buffer->lost_events = 0;
 
        if (commit < buffer->subbuf_size)
                memset(&bpage->data[commit], 0, buffer->subbuf_size - commit);
 
- out_unlock:
-       raw_spin_unlock_irqrestore(&cpu_buffer->reader_lock, flags);
-
- out:
-       return ret;
+       return read;
 }
 EXPORT_SYMBOL_GPL(ring_buffer_read_page);