diff options
author | 2015-11-25 15:59:13 +0100 | |
---|---|---|
committer | 2015-11-25 15:34:19 -0800 | |
commit | 4ec1574ae99872a9d1922fb1e57b8d46df4d0920 (patch) | |
tree | 7cd1eea579e80bf90ed9bb743e630dfa7eeb0890 /drivers/staging/greybus | |
parent | greybus: connection: fix potential null-deref on create (diff) | |
download | linux-4ec1574ae99872a9d1922fb1e57b8d46df4d0920.tar.gz linux-4ec1574ae99872a9d1922fb1e57b8d46df4d0920.tar.bz2 linux-4ec1574ae99872a9d1922fb1e57b8d46df4d0920.zip |
greybus: connection: kill GB_PROTOCOL_SKIP_SVC_CONNECTION
Add helper to determine whether a connection is static, and remove the
protocol flag GB_PROTOCOL_SKIP_SVC_CONNECTION.
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Diffstat (limited to 'drivers/staging/greybus')
-rw-r--r-- | drivers/staging/greybus/connection.c | 5 | ||||
-rw-r--r-- | drivers/staging/greybus/connection.h | 5 | ||||
-rw-r--r-- | drivers/staging/greybus/protocol.h | 1 | ||||
-rw-r--r-- | drivers/staging/greybus/svc.c | 3 |
4 files changed, 8 insertions, 6 deletions
diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c index a7b803799fa5..3f2fe0103547 100644 --- a/drivers/staging/greybus/connection.c +++ b/drivers/staging/greybus/connection.c @@ -289,11 +289,10 @@ static int gb_connection_svc_connection_create(struct gb_connection *connection) { struct gb_host_device *hd = connection->hd; - struct gb_protocol *protocol = connection->protocol; struct gb_interface *intf; int ret; - if (protocol->flags & GB_PROTOCOL_SKIP_SVC_CONNECTION) + if (gb_connection_is_static(connection)) return 0; intf = connection->bundle->intf; @@ -315,7 +314,7 @@ gb_connection_svc_connection_create(struct gb_connection *connection) static void gb_connection_svc_connection_destroy(struct gb_connection *connection) { - if (connection->protocol->flags & GB_PROTOCOL_SKIP_SVC_CONNECTION) + if (gb_connection_is_static(connection)) return; gb_svc_connection_destroy(connection->hd->svc, diff --git a/drivers/staging/greybus/connection.h b/drivers/staging/greybus/connection.h index c5499fcbfd13..446ffe157a12 100644 --- a/drivers/staging/greybus/connection.h +++ b/drivers/staging/greybus/connection.h @@ -60,6 +60,11 @@ struct gb_connection *gb_connection_create_dynamic(struct gb_interface *intf, u8 protocol_id); void gb_connection_destroy(struct gb_connection *connection); +static inline bool gb_connection_is_static(struct gb_connection *connection) +{ + return !connection->intf; +} + void greybus_data_rcvd(struct gb_host_device *hd, u16 cport_id, u8 *data, size_t length); diff --git a/drivers/staging/greybus/protocol.h b/drivers/staging/greybus/protocol.h index b1d122c61c44..384ddf8d1600 100644 --- a/drivers/staging/greybus/protocol.h +++ b/drivers/staging/greybus/protocol.h @@ -18,7 +18,6 @@ struct gb_operation; #define GB_PROTOCOL_SKIP_CONTROL_DISCONNECTED BIT(1) /* Don't sent disconnected requests */ #define GB_PROTOCOL_NO_BUNDLE BIT(2) /* Protocol May have a bundle-less connection */ #define GB_PROTOCOL_SKIP_VERSION BIT(3) /* Don't send get_version() requests */ -#define GB_PROTOCOL_SKIP_SVC_CONNECTION BIT(4) /* Don't send SVC connection requests */ typedef int (*gb_connection_init_t)(struct gb_connection *); typedef void (*gb_connection_exit_t)(struct gb_connection *); diff --git a/drivers/staging/greybus/svc.c b/drivers/staging/greybus/svc.c index 9dd51122ea4c..3beb3a2dfb87 100644 --- a/drivers/staging/greybus/svc.c +++ b/drivers/staging/greybus/svc.c @@ -750,7 +750,6 @@ static struct gb_protocol svc_protocol = { .flags = GB_PROTOCOL_SKIP_CONTROL_CONNECTED | GB_PROTOCOL_SKIP_CONTROL_DISCONNECTED | GB_PROTOCOL_NO_BUNDLE | - GB_PROTOCOL_SKIP_VERSION | - GB_PROTOCOL_SKIP_SVC_CONNECTION, + GB_PROTOCOL_SKIP_VERSION, }; gb_builtin_protocol_driver(svc_protocol); |