Make sure to drop the operation reference when sending the request fails
to avoid leaking the operation structures.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
        struct gb_connection *connection = operation->connection;
        struct gb_operation_msg_hdr *header;
        unsigned int cycle;
+       int ret;
 
        if (!callback)
                return -EINVAL;
        /* All set, send the request */
        gb_operation_result_set(operation, -EINPROGRESS);
 
-       return gb_message_send(operation->request);
+       ret = gb_message_send(operation->request);
+       if (ret)
+               gb_operation_put(operation);
+
+       return ret;
 }
 EXPORT_SYMBOL_GPL(gb_operation_request_send);