Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6216ff18 authored by Vlad Apostolov's avatar Vlad Apostolov Committed by Tim Shimmin
Browse files

[XFS] pv 956240, author: nathans, rv: vapo - Minor fixes in


kmem_zalloc_greedy()

SGI-PV: 956240
SGI-Modid: xfs-linux-melb:xfs-kern:26983a

Signed-off-by: default avatarVlad Apostolov <vapo@sgi.com>
Signed-off-by: default avatarTim Shimmin <tes@sgi.com>
parent f273ab84
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -73,14 +73,19 @@ kmem_zalloc_greedy(size_t *size, size_t minsize, size_t maxsize,
		   unsigned int __nocast flags)
{
	void		*ptr;
	size_t		kmsize = maxsize;
	unsigned int	kmflags = (flags & ~KM_SLEEP) | KM_NOSLEEP;

	while (!(ptr = kmem_zalloc(maxsize, flags))) {
		if ((maxsize >>= 1) <= minsize) {
			maxsize = minsize;
		 	flags = KM_SLEEP;
	while (!(ptr = kmem_zalloc(kmsize, kmflags))) {
		if ((kmsize <= minsize) && (flags & KM_NOSLEEP))
			break;
		if ((kmsize >>= 1) <= minsize) {
			kmsize = minsize;
			kmflags = flags;
		}
	}
	*size = maxsize;
	if (ptr)
		*size = kmsize;
	return ptr;
}