mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-24 13:13:57 +08:00
ring_buffer: add paranoid check for buffer page
If for some strange reason the buffer_page gets bigger, or the page struct gets smaller, I want to know this ASAP. The best way is to not let the kernel compile. This patch adds code to test the size of the struct buffer_page against the page struct and will cause compile issues if the buffer_page ever gets bigger than the page struct. Signed-off-by: Steven Rostedt <srostedt@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
7a8e76a382
commit
a7b1374333
@ -289,6 +289,12 @@ static void rb_free_cpu_buffer(struct ring_buffer_per_cpu *cpu_buffer)
|
||||
kfree(cpu_buffer);
|
||||
}
|
||||
|
||||
/*
|
||||
* Causes compile errors if the struct buffer_page gets bigger
|
||||
* than the struct page.
|
||||
*/
|
||||
extern int ring_buffer_page_too_big(void);
|
||||
|
||||
/**
|
||||
* ring_buffer_alloc - allocate a new ring_buffer
|
||||
* @size: the size in bytes that is needed.
|
||||
@ -305,6 +311,11 @@ struct ring_buffer *ring_buffer_alloc(unsigned long size, unsigned flags)
|
||||
int bsize;
|
||||
int cpu;
|
||||
|
||||
/* Paranoid! Optimizes out when all is well */
|
||||
if (sizeof(struct buffer_page) > sizeof(struct page))
|
||||
ring_buffer_page_too_big();
|
||||
|
||||
|
||||
/* keep it in its own cache line */
|
||||
buffer = kzalloc(ALIGN(sizeof(*buffer), cache_line_size()),
|
||||
GFP_KERNEL);
|
||||
|
Loading…
Reference in New Issue
Block a user