From c44b85134f1ab039e90c38003e780344bd17bf06 Mon Sep 17 00:00:00 2001 From: Joel Becker Date: Tue, 23 Jan 2007 17:00:45 -0800 Subject: [PATCH] --- yaml --- r: 46923 b: refs/heads/master c: ff05d1c4643dd4260eb699396043d7e8009c0de4 h: refs/heads/master i: 46921: b0bea3dac80572a336c8ac7960cb558223e54bea 46919: fd75b4861e273ad1bf041fe200aaaf2309805d97 v: v3 --- [refs] | 2 +- trunk/fs/configfs/file.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 983eace7e301..6e477fd2e713 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b559292e066f6d570cd5aa5dbd41de61dd04bdce +refs/heads/master: ff05d1c4643dd4260eb699396043d7e8009c0de4 diff --git a/trunk/fs/configfs/file.c b/trunk/fs/configfs/file.c index 2a7cb086e80c..d98be5e01328 100644 --- a/trunk/fs/configfs/file.c +++ b/trunk/fs/configfs/file.c @@ -162,14 +162,17 @@ fill_write_buffer(struct configfs_buffer * buffer, const char __user * buf, size int error; if (!buffer->page) - buffer->page = (char *)get_zeroed_page(GFP_KERNEL); + buffer->page = (char *)__get_free_pages(GFP_KERNEL, 0); if (!buffer->page) return -ENOMEM; - if (count > PAGE_SIZE) - count = PAGE_SIZE; + if (count >= PAGE_SIZE) + count = PAGE_SIZE - 1; error = copy_from_user(buffer->page,buf,count); buffer->needs_read_fill = 1; + /* if buf is assumed to contain a string, terminate it by \0, + * so e.g. sscanf() can scan the string easily */ + buffer->page[count] = 0; return error ? -EFAULT : count; }