greybus: pass gfp_flags for message allocation

The only reason gb_operation_message_init() gets its "outbound"
argument is so we can determine what allocation flags to use.
Just pass the flags in directly instead.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
This commit is contained in:
Alex Elder
2014-11-18 13:26:54 -06:00
committed by Greg Kroah-Hartman
parent 1f764af77c
commit de80073a17

View File

@@ -230,13 +230,12 @@ static void operation_timeout(struct work_struct *work)
*/
static int gb_operation_message_init(struct gb_operation *operation,
u8 type, size_t size,
bool request, bool outbound)
bool request, gfp_t gfp_flags)
{
struct gb_connection *connection = operation->connection;
struct greybus_host_device *hd = connection->hd;
struct gb_message *message;
struct gb_operation_msg_hdr *header;
gfp_t gfp_flags = request && !outbound ? GFP_ATOMIC : GFP_KERNEL;
if (size > GB_OPERATION_MESSAGE_SIZE_MAX)
return -E2BIG;
@@ -311,13 +310,13 @@ struct gb_operation *gb_operation_create(struct gb_connection *connection,
operation->connection = connection;
ret = gb_operation_message_init(operation, type, request_size,
true, outgoing);
true, gfp_flags);
if (ret)
goto err_cache;
if (outgoing) {
ret = gb_operation_message_init(operation, type, response_size,
false, false);
false, GFP_KERNEL);
if (ret)
goto err_request;
}