We used to use kmalloc (more exactly, krealloc()) for creating and
growing the temporary buffer for text proc write.  It can grow up to
16kB, and it's already a bit doubtful whether it's always safe to use
kmalloc().  With the recent addition of kvmalloc(), we can have a
better chance for succeed of memory allocation, so let's switch to
that new API.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
                }
        }
        if (next > buf->len) {
-               char *nbuf = krealloc(buf->buffer, PAGE_ALIGN(next),
-                                     GFP_KERNEL | __GFP_ZERO);
+               char *nbuf = kvzalloc(PAGE_ALIGN(next), GFP_KERNEL);
                if (!nbuf) {
                        err = -ENOMEM;
                        goto error;
                }
+               kvfree(buf->buffer);
                buf->buffer = nbuf;
                buf->len = PAGE_ALIGN(next);
        }
        single_release(inode, file);
        kfree(data->rbuffer);
        if (data->wbuffer) {
-               kfree(data->wbuffer->buffer);
+               kvfree(data->wbuffer->buffer);
                kfree(data->wbuffer);
        }