greybus: enforce non-zero operation type requirement

The operation type 0x00 is reserved as an explicitly invalid
operation type in all protocols.  Enforce this.

Add a check for callers who erroneously have the RESPONSE message
type flag set in the operation type passed in gb_operation_create().

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-12-02 08:30:31 -06:00 committed by Greg Kroah-Hartman
parent 64ce39a346
commit 55f66a88db

View file

@ -455,10 +455,23 @@ gb_operation_create_common(struct gb_connection *connection, bool outgoing,
return NULL;
}
/*
* Create a new operation associated with the given connection. The
* request and response sizes provided are the number of bytes
* required to hold the request/response payload only. Both of
* these are allowed to be 0. Note that 0x00 is reserved as an
* invalid operation type for all protocols, and this is enforced
* here.
*/
struct gb_operation *gb_operation_create(struct gb_connection *connection,
u8 type, size_t request_size,
size_t response_size)
{
if (WARN_ON_ONCE(!type))
return NULL;
if (WARN_ON_ONCE(type & GB_OPERATION_TYPE_RESPONSE))
type &= ~GB_OPERATION_TYPE_RESPONSE;
return gb_operation_create_common(connection, true, type,
request_size, response_size);
}