All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] dma-buf: dma-heap: Add a size limitation for allocation
@ 2021-12-17  9:41 ` guangming.cao
  0 siblings, 0 replies; 97+ messages in thread
From: guangming.cao @ 2021-12-17  9:41 UTC (permalink / raw)
  To: Sumit Semwal, Benjamin Gaignard, Liam Mark, Laura Abbott,
	Brian Starkey, John Stultz, Christian König,
	Matthias Brugger, open list:DMA-BUF HEAPS FRAMEWORK,
	open list:DMA-BUF HEAPS FRAMEWORK,
	moderated list:DMA-BUF HEAPS FRAMEWORK, open list,
	moderated list:ARM/Mediatek SoC support,
	moderated list:ARM/Mediatek SoC support
  Cc: wsd_upstream, Bo Song, Libo Kang, jianjiao zeng, mingyuan ma,
	Yunfei Wang, Guangming

From: Guangming <Guangming.Cao@mediatek.com>

Currently, there is no size check for allocation.

If the alloc size is larger than DRAM, it will cause OOM issue.
Besides, if it runs on a process that won't be killed by OOM flow, it will
cause a kernel exception finally,  and we couldn't find the correct
memory usage by dma-buf dump api such as "dma_buf_debug_show" since the
allocation is still on going and the corresponding dmabuf is not exported.

However, it sounds not simple enough to adding a count to count how many
pages has been allocated before allocating done.
So adding a size limitation here to prevent this case.

Signed-off-by: Guangming <Guangming.Cao@mediatek.com>
Signed-off-by: jianjiao zeng <jianjiao.zeng@mediatek.com>
---
 drivers/dma-buf/dma-heap.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/dma-buf/dma-heap.c b/drivers/dma-buf/dma-heap.c
index 56bf5ad01ad5..8b75998a106c 100644
--- a/drivers/dma-buf/dma-heap.c
+++ b/drivers/dma-buf/dma-heap.c
@@ -107,6 +107,9 @@ static long dma_heap_ioctl_allocate(struct file *file, void *data)
 	if (heap_allocation->heap_flags & ~DMA_HEAP_VALID_HEAP_FLAGS)
 		return -EINVAL;
 
+	if (heap_allocation->len / PAGE_SIZE > totalram_pages() / 2)
+		return -EINVAL;
+
 	fd = dma_heap_buffer_alloc(heap, heap_allocation->len,
 				   heap_allocation->fd_flags,
 				   heap_allocation->heap_flags);
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 97+ messages in thread
* [PATCH v2] dma-buf: dma-heap: Add a size check for allocation
@ 2021-12-27  9:47 ` guangming.cao
  0 siblings, 0 replies; 97+ messages in thread
From: guangming.cao @ 2021-12-27  9:47 UTC (permalink / raw)
  To: Sumit Semwal, Benjamin Gaignard, Liam Mark, Laura Abbott,
	Brian Starkey, John Stultz, Christian König,
	Matthias Brugger, open list:DMA-BUF HEAPS FRAMEWORK,
	open list:DMA-BUF HEAPS FRAMEWORK,
	moderated list:DMA-BUF HEAPS FRAMEWORK, open list,
	moderated list:ARM/Mediatek SoC support,
	moderated list:ARM/Mediatek SoC support
  Cc: Bo Song, Libo Kang, jianjiao zeng, mingyuan ma, Yunfei Wang,
	wsd_upstream, Guangming

From: Guangming <Guangming.Cao@mediatek.com>

Add a size check for allcation since the allocation size is
always less than the total DRAM size.

Signed-off-by: Guangming <Guangming.Cao@mediatek.com>
Signed-off-by: jianjiao zeng <jianjiao.zeng@mediatek.com>
---
v2: 1. update size limitation as total_dram page size.
    2. update commit message
---
 drivers/dma-buf/dma-heap.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/dma-buf/dma-heap.c b/drivers/dma-buf/dma-heap.c
index 56bf5ad01ad5..e39d2be98d69 100644
--- a/drivers/dma-buf/dma-heap.c
+++ b/drivers/dma-buf/dma-heap.c
@@ -55,6 +55,8 @@ static int dma_heap_buffer_alloc(struct dma_heap *heap, size_t len,
 	struct dma_buf *dmabuf;
 	int fd;
 
+	if (len / PAGE_SIZE > totalram_pages())
+		return -EINVAL;
 	/*
 	 * Allocations from all heaps have to begin
 	 * and end on page boundaries.
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 97+ messages in thread

end of thread, other threads:[~2022-01-20 10:23 UTC | newest]

Thread overview: 97+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-17  9:41 [PATCH] dma-buf: dma-heap: Add a size limitation for allocation guangming.cao
2021-12-17  9:41 ` guangming.cao
2021-12-17  9:41 ` guangming.cao
2021-12-17  9:41 ` guangming.cao
2021-12-27  9:51 ` [PATCH v2] dma-buf: dma-heap: Add a size check " guangming.cao
2021-12-27  9:51   ` guangming.cao
2021-12-27  9:51   ` guangming.cao
2021-12-27  9:51   ` guangming.cao
2022-01-03 18:57   ` John Stultz
2022-01-03 18:57     ` John Stultz
2022-01-03 18:57     ` John Stultz
2022-01-03 18:57     ` John Stultz
2022-01-04  7:47     ` Christian König
2022-01-04  7:47       ` Christian König
2022-01-04  7:47       ` Christian König
2022-01-04  7:47       ` Christian König
2022-01-04  8:44       ` Guangming.Cao
2022-01-04  8:44         ` Guangming.Cao
2022-01-04  8:44         ` Guangming.Cao
2022-01-05  6:36       ` guangming.cao
2022-01-05  6:36         ` guangming.cao
2022-01-05  6:36         ` guangming.cao
2022-01-05  6:36         ` guangming.cao
2022-01-13 10:50         ` Sumit Semwal
2022-01-13 10:50           ` Sumit Semwal
2022-01-13 10:50           ` Sumit Semwal
2022-01-13 10:50           ` Sumit Semwal
2022-01-13 12:34           ` [PATCH v3] " guangming.cao
2022-01-13 12:34             ` guangming.cao
2022-01-13 12:34             ` guangming.cao
2022-01-13 12:34             ` guangming.cao
2022-01-13 12:57             ` Ruhl, Michael J
2022-01-13 12:57               ` Ruhl, Michael J
2022-01-13 12:57               ` Ruhl, Michael J
2022-01-13 12:57               ` Ruhl, Michael J
2022-01-13 13:00               ` Ruhl, Michael J
2022-01-13 13:00                 ` Ruhl, Michael J
2022-01-13 13:00                 ` Ruhl, Michael J
2022-01-13 13:00                 ` Ruhl, Michael J
2022-01-13 13:05                 ` Christian König
2022-01-13 13:05                   ` Christian König
2022-01-13 13:05                   ` Christian König
2022-01-13 13:05                   ` Christian König
2022-01-13 23:26                   ` John Stultz
2022-01-13 23:26                     ` John Stultz
2022-01-13 23:26                     ` John Stultz
2022-01-13 23:26                     ` John Stultz
2022-01-14  7:16                     ` Christian König
2022-01-14  7:16                       ` Christian König
2022-01-14  7:16                       ` Christian König
2022-01-14  7:16                       ` Christian König
2022-01-14 12:05                       ` Guangming.Cao
2022-01-14 12:05                         ` Guangming.Cao
2022-01-14 12:05                         ` Guangming.Cao
2022-01-15  1:17                         ` John Stultz
2022-01-15  1:17                           ` John Stultz
2022-01-15  1:17                           ` John Stultz
2022-01-15  1:17                           ` John Stultz
2022-01-19  9:59                           ` Guangming.Cao
2022-01-19  9:59                             ` Guangming.Cao
2022-01-19  9:59                             ` Guangming.Cao
2022-01-19 20:37                             ` John Stultz
2022-01-19 20:37                               ` John Stultz
2022-01-19 20:37                               ` John Stultz
2022-01-19 20:37                               ` John Stultz
2022-01-20  3:34                               ` [PATCH v4] dma-buf: system_heap: " guangming.cao
2022-01-20  3:34                                 ` guangming.cao
2022-01-20  3:34                                 ` guangming.cao
2022-01-20  3:34                                 ` guangming.cao
2022-01-20  3:48                                 ` John Stultz
2022-01-20  3:48                                   ` John Stultz
2022-01-20  3:48                                   ` John Stultz
2022-01-20  3:48                                   ` John Stultz
2022-01-20  7:08                                   ` [PATCH v5] " guangming.cao
2022-01-20  7:08                                     ` guangming.cao
2022-01-20  7:08                                     ` guangming.cao
2022-01-20  7:08                                     ` guangming.cao
2022-01-20  8:27                                     ` Christian König
2022-01-20  8:27                                       ` Christian König
2022-01-20  8:27                                       ` Christian König
2022-01-20  8:27                                       ` Christian König
2022-01-20  8:52                                       ` [PATCH v6] " guangming.cao
2022-01-20  8:52                                         ` guangming.cao
2022-01-20  8:52                                         ` guangming.cao
2022-01-20  8:52                                         ` guangming.cao
2022-01-20 10:00                                         ` [PATCH v6 RESEND] " guangming.cao
2022-01-20 10:00                                           ` guangming.cao
2022-01-20 10:00                                           ` guangming.cao
2022-01-20 10:00                                           ` guangming.cao
2022-01-20 10:22                                           ` Christian König
2022-01-20 10:22                                             ` Christian König
2022-01-20 10:22                                             ` Christian König
2022-01-20 10:22                                             ` Christian König
2021-12-27  9:47 [PATCH v2] dma-buf: dma-heap: " guangming.cao
2021-12-27  9:47 ` guangming.cao
2021-12-27  9:47 ` guangming.cao
2021-12-27  9:47 ` guangming.cao

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.