From 652433f3fe97e3609acd9afcb9b50ec62f7a8d05 Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Fri, 3 Oct 2014 15:05:19 -0500 Subject: [PATCH] greybus: gbuf: have caller set actual_length A Greybus buffer has both a transfer_buffer_size field, which is the size in bytes of the transfer buffer, and an actual_length field, which is the number of bytes in that buffer that are actually consumed. The user of the buffer--and not the buffer allocation method--should be setting the actual_length field. Stop setting the actual length on the es1-ap-usb alloc_gbuf_data method. And *do* set it in gb_operation_create(), where we can presume the operation being allocated will consume all the bytes requested. Signed-off-by: Alex Elder Signed-off-by: Greg Kroah-Hartman --- drivers/staging/greybus/es1-ap-usb.c | 1 - drivers/staging/greybus/operation.c | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/greybus/es1-ap-usb.c b/drivers/staging/greybus/es1-ap-usb.c index f23c67414ecf..360149923c17 100644 --- a/drivers/staging/greybus/es1-ap-usb.c +++ b/drivers/staging/greybus/es1-ap-usb.c @@ -126,7 +126,6 @@ static int alloc_gbuf_data(struct gbuf *gbuf, unsigned int size, gfp_t gfp_mask) buffer[0] = gbuf->cport_id; gbuf->transfer_buffer = &buffer[1]; gbuf->transfer_buffer_length = size; - gbuf->actual_length = size; /* When we send the gbuf, we need this pointer to be here */ gbuf->hdpriv = es1; diff --git a/drivers/staging/greybus/operation.c b/drivers/staging/greybus/operation.c index fe2f1a7137e5..75f6e50b2ee6 100644 --- a/drivers/staging/greybus/operation.c +++ b/drivers/staging/greybus/operation.c @@ -132,6 +132,7 @@ struct gb_operation *gb_operation_create(struct gb_connection *connection, kfree(operation); return NULL; } + gbuf->actual_length = size; /* Record what we'll use */ operation->connection = connection; /* XXX refcount? */ -- 2.20.1