ptr_ring: fail early if queue occupies more than KMALLOC_MAX_SIZE

"Linux Kernel Mailing List" <[email protected]>
Newsgroups gmane.linux.kernel.commits.head
Message-ID <[email protected]>
Web:        https://git.kernel.org/torvalds/c/6e6e41c3112276288ccaf80c70916779b84bb276
Commit:     6e6e41c3112276288ccaf80c70916779b84bb276
Parent:     909ebd5840d158670eb88b2f73e9d38a894f28e2
Refname:    refs/heads/master
Author:     Jason Wang <[email protected]>
AuthorDate: Fri Feb 9 17:45:49 2018 +0800
Committer:  David S. Miller <[email protected]>
CommitDate: Fri Feb 9 14:28:57 2018 -0500

    ptr_ring: fail early if queue occupies more than KMALLOC_MAX_SIZE
    
    To avoid slab to warn about exceeded size, fail early if queue
    occupies more than KMALLOC_MAX_SIZE.
    
    Reported-by: [email protected]
    Fixes: 2e0ab8ca83c12 ("ptr_ring: array based FIFO for pointers")
    Signed-off-by: Jason Wang <[email protected]>
    Acked-by: Michael S. Tsirkin <[email protected]>
    Signed-off-by: David S. Miller <[email protected]>
---
 include/linux/ptr_ring.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/linux/ptr_ring.h b/include/linux/ptr_ring.h
index 1883d6137e9b..6051a5fe6913 100644
--- a/include/linux/ptr_ring.h
+++ b/include/linux/ptr_ring.h
@@ -466,6 +466,8 @@ static inline int ptr_ring_consume_batched_bh(struct ptr_ring *r,
 
 static inline void **__ptr_ring_init_queue_alloc(unsigned int size, gfp_t gfp)
 {
+	if (size * sizeof(void *) > KMALLOC_MAX_SIZE)
+		return NULL;
 	return kcalloc(size, sizeof(void *), gfp);
 }
 
--
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.