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

Commit e94f7ba1 authored by Jeff Layton's avatar Jeff Layton
Browse files

cifs: fix allocation in cifs_write_allocate_pages



The gfp flags are currently set to __GPF_HIGHMEM, which doesn't allow
for any reclaim. Make this more resilient by or'ing that with
GFP_KERNEL. Also, get rid of the goto and unify the exit codepath.

Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Acked-by: default avatarPavel Shilovsky <piastry@etersoft.ru>
parent c2e87640
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -2045,7 +2045,7 @@ cifs_write_allocate_pages(struct page **pages, unsigned long num_pages)
	unsigned long i;

	for (i = 0; i < num_pages; i++) {
		pages[i] = alloc_page(__GFP_HIGHMEM);
		pages[i] = alloc_page(GFP_KERNEL|__GFP_HIGHMEM);
		if (!pages[i]) {
			/*
			 * save number of pages we have already allocated and
@@ -2053,15 +2053,14 @@ cifs_write_allocate_pages(struct page **pages, unsigned long num_pages)
			 */
			num_pages = i;
			rc = -ENOMEM;
			goto error;
			break;
		}
	}

	return rc;

error:
	if (rc) {
		for (i = 0; i < num_pages; i++)
			put_page(pages[i]);
	}
	return rc;
}