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 <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
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;
kfree(operation);
return NULL;
}
+ gbuf->actual_length = size; /* Record what we'll use */
operation->connection = connection; /* XXX refcount? */