mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-12 05:48:40 +00:00
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:
parent
64ce39a346
commit
55f66a88db
1 changed files with 13 additions and 0 deletions
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue