lkml.org 
[lkml]   [2015]   [May]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.13.y-ckt 07/95] Drivers: hv: vmbus: Fix a bug in the error path in vmbus_open()
    Date
    3.13.11-ckt21 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: "K. Y. Srinivasan" <kys@microsoft.com>

    commit 40384e4bbeb9f2651fe9bffc0062d9f31ef625bf upstream.

    Correctly rollback state if the failure occurs after we have handed over
    the ownership of the buffer to the host.

    Signed-off-by: K. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Kamal Mostafa <kamal@canonical.com>
    ---
    drivers/hv/channel.c | 7 +++++--
    1 file changed, 5 insertions(+), 2 deletions(-)

    diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
    index cf1e49b..433f780 100644
    --- a/drivers/hv/channel.c
    +++ b/drivers/hv/channel.c
    @@ -134,7 +134,7 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size,
    GFP_KERNEL);
    if (!open_info) {
    err = -ENOMEM;
    - goto error0;
    + goto error_gpadl;
    }

    init_completion(&open_info->waitevent);
    @@ -150,7 +150,7 @@ int vmbus_open(struct vmbus_channel *newchannel, u32 send_ringbuffer_size,

    if (userdatalen > MAX_USER_DEFINED_BYTES) {
    err = -EINVAL;
    - goto error0;
    + goto error_gpadl;
    }

    if (userdatalen)
    @@ -194,6 +194,9 @@ error1:
    list_del(&open_info->msglistentry);
    spin_unlock_irqrestore(&vmbus_connection.channelmsg_lock, flags);

    +error_gpadl:
    + vmbus_teardown_gpadl(newchannel, newchannel->ringbuffer_gpadlhandle);
    +
    error0:
    free_pages((unsigned long)out,
    get_order(send_ringbuffer_size + recv_ringbuffer_size));
    --
    1.9.1


    \
     
     \ /
      Last update: 2015-05-27 21:41    [W:4.033 / U:1.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site