From c37df5f0a0e31b1609fd931f8605f4b675d504d3 Mon Sep 17 00:00:00 2001 From: Jes Sorensen Date: Tue, 5 May 2015 18:36:29 -0400 Subject: [PATCH] staging: unisys: visorchannel_clear(): No need to use vmalloc here Using a page is sufficient, and avoids the cost of vmalloc/vfree Signed-off-by: Jes Sorensen Signed-off-by: Benjamin Romer Signed-off-by: Greg Kroah-Hartman --- drivers/staging/unisys/visorbus/visorchannel.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/staging/unisys/visorbus/visorchannel.c b/drivers/staging/unisys/visorbus/visorchannel.c index e555476..1a1e7be 100644 --- a/drivers/staging/unisys/visorbus/visorchannel.c +++ b/drivers/staging/unisys/visorbus/visorchannel.c @@ -214,17 +214,18 @@ visorchannel_clear(struct visorchannel *channel, ulong offset, u8 ch, ulong nbytes) { int err; - int bufsize = 65536; + int bufsize = PAGE_SIZE; int written = 0; u8 *buf; - buf = vmalloc(bufsize); + buf = (u8 *) __get_free_page(GFP_KERNEL); if (!buf) return -ENOMEM; memset(buf, ch, bufsize); + while (nbytes > 0) { - ulong thisbytes = bufsize; + int thisbytes = bufsize; if (nbytes < thisbytes) thisbytes = nbytes; @@ -239,7 +240,7 @@ visorchannel_clear(struct visorchannel *channel, ulong offset, u8 ch, err = 0; cleanup: - vfree(buf); + free_page((unsigned long) buf); return err; } EXPORT_SYMBOL_GPL(visorchannel_clear); -- 2.7.4