From: Johan Hovold Date: Wed, 22 Jun 2016 09:42:03 +0000 (+0200) Subject: greybus: connection: prevent drivers from specifying core flags X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=1ba30c33096ced9d5c5814acdc46f53f3864f4e6;p=linux-beck.git greybus: connection: prevent drivers from specifying core flags Prevent drivers from specifying core flags (currently only GB_CONNECTION_FLAG_CONTROL) when creating connections. Reviewed-by: Alex Elder Signed-off-by: Johan Hovold Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/greybus/connection.c b/drivers/staging/greybus/connection.c index 232af8d13111..7b2d6358f432 100644 --- a/drivers/staging/greybus/connection.c +++ b/drivers/staging/greybus/connection.c @@ -260,6 +260,9 @@ gb_connection_create_flags(struct gb_bundle *bundle, u16 cport_id, { struct gb_interface *intf = bundle->intf; + if (WARN_ON_ONCE(flags & GB_CONNECTION_FLAG_CORE_MASK)) + flags &= ~GB_CONNECTION_FLAG_CORE_MASK; + return _gb_connection_create(intf->hd, -1, intf, bundle, cport_id, handler, flags); } @@ -269,12 +272,9 @@ struct gb_connection * gb_connection_create_offloaded(struct gb_bundle *bundle, u16 cport_id, unsigned long flags) { - struct gb_interface *intf = bundle->intf; - flags |= GB_CONNECTION_FLAG_OFFLOADED; - return _gb_connection_create(intf->hd, -1, intf, bundle, cport_id, - NULL, flags); + return gb_connection_create_flags(bundle, cport_id, NULL, flags); } EXPORT_SYMBOL_GPL(gb_connection_create_offloaded); diff --git a/drivers/staging/greybus/connection.h b/drivers/staging/greybus/connection.h index 7d0988ef1183..0ea8ac8fbb8f 100644 --- a/drivers/staging/greybus/connection.h +++ b/drivers/staging/greybus/connection.h @@ -19,6 +19,8 @@ #define GB_CONNECTION_FLAG_CDSI1 BIT(3) #define GB_CONNECTION_FLAG_CONTROL BIT(4) +#define GB_CONNECTION_FLAG_CORE_MASK GB_CONNECTION_FLAG_CONTROL + enum gb_connection_state { GB_CONNECTION_STATE_DISABLED = 0, GB_CONNECTION_STATE_ENABLED_TX = 1,