lkml.org 
[lkml]   [2012]   [Jan]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 2/2] xen/xenbus: don't reimplement kvasprintf via a fixed size buffer
    Date
    Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
    Cc: Haogang Chen <haogangchen@gmail.com>
    Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    Cc: Jeremy Fitzhardinge <jeremy@goop.org>
    Cc: xen-devel@lists.xensource.com
    Cc: virtualization@lists.linux-foundation.org
    Cc: linux-kernel@vger.kernel.org
    ---
    drivers/xen/xenbus/xenbus_xs.c | 17 +++++++----------
    1 files changed, 7 insertions(+), 10 deletions(-)

    diff --git a/drivers/xen/xenbus/xenbus_xs.c b/drivers/xen/xenbus/xenbus_xs.c
    index 6f0121e..226d1ac 100644
    --- a/drivers/xen/xenbus/xenbus_xs.c
    +++ b/drivers/xen/xenbus/xenbus_xs.c
    @@ -532,21 +532,18 @@ int xenbus_printf(struct xenbus_transaction t,
    {
    va_list ap;
    int ret;
    -#define PRINTF_BUFFER_SIZE 4096
    - char *printf_buffer;
    -
    - printf_buffer = kmalloc(PRINTF_BUFFER_SIZE, GFP_NOIO | __GFP_HIGH);
    - if (printf_buffer == NULL)
    - return -ENOMEM;
    + char *buf;

    va_start(ap, fmt);
    - ret = vsnprintf(printf_buffer, PRINTF_BUFFER_SIZE, fmt, ap);
    + buf = kvasprintf(GFP_NOIO | __GFP_HIGH, fmt, ap);
    va_end(ap);

    - BUG_ON(ret > PRINTF_BUFFER_SIZE-1);
    - ret = xenbus_write(t, dir, node, printf_buffer);
    + if (!buf)
    + return -ENOMEM;
    +
    + ret = xenbus_write(t, dir, node, buf);

    - kfree(printf_buffer);
    + kfree(buf);

    return ret;
    }
    --
    1.7.2.5


    \
     
     \ /
      Last update: 2012-01-04 12:51    [W:0.023 / U:0.964 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site