diff options
author | Andrew Lassalle <andrewlassalle@chromium.org> | 2020-10-13 15:41:57 -0700 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-04-14 11:27:27 +0200 |
commit | e24346128d2c93501f0a41596fdfa4a6b8e18753 (patch) | |
tree | 894a69234eeb3700dcd05d74bc7a92b7215ac7d7 | |
parent | d2ffb47ec86a3d83b87b46a47ea1ad491e186a2d (diff) |
filter: add filter for QRTR devices
Add support for devices using the subsystem "qrtr".
-rw-r--r-- | src/mm-filter.c | 10 | ||||
-rw-r--r-- | src/mm-filter.h | 30 |
2 files changed, 27 insertions, 13 deletions
diff --git a/src/mm-filter.c b/src/mm-filter.c index 870ae7b8..3bc84e17 100644 --- a/src/mm-filter.c +++ b/src/mm-filter.c @@ -178,6 +178,15 @@ mm_filter_port (MMFilter *self, } } + /* If this is a QRTR device, we always allow it. This check comes before + * checking for VIRTUAL since qrtr devices don't have a sysfs path, and the + * check for VIRTUAL will return FALSE. */ + if ((self->priv->enabled_rules & MM_FILTER_RULE_QRTR) && + g_str_equal (subsystem, "qrtr")) { + mm_obj_dbg (self, "(%s/%s) port allowed: qrtr device", subsystem, name); + return TRUE; + } + /* If this is a virtual device, don't allow it */ if ((self->priv->enabled_rules & MM_FILTER_RULE_VIRTUAL) && (!mm_kernel_device_get_physdev_sysfs_path (port))) { @@ -453,6 +462,7 @@ mm_filter_new (MMFilterRule enabled_rules, mm_obj_dbg (self, " explicit whitelist: %s", RULE_ENABLED_STR (MM_FILTER_RULE_EXPLICIT_WHITELIST)); mm_obj_dbg (self, " explicit blacklist: %s", RULE_ENABLED_STR (MM_FILTER_RULE_EXPLICIT_BLACKLIST)); mm_obj_dbg (self, " plugin whitelist: %s", RULE_ENABLED_STR (MM_FILTER_RULE_PLUGIN_WHITELIST)); + mm_obj_dbg (self, " qrtr devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_QRTR)); mm_obj_dbg (self, " virtual devices forbidden: %s", RULE_ENABLED_STR (MM_FILTER_RULE_VIRTUAL)); mm_obj_dbg (self, " net devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_NET)); mm_obj_dbg (self, " usbmisc devices allowed: %s", RULE_ENABLED_STR (MM_FILTER_RULE_USBMISC)); diff --git a/src/mm-filter.h b/src/mm-filter.h index 8d2e0e22..a7fa7c93 100644 --- a/src/mm-filter.h +++ b/src/mm-filter.h @@ -50,25 +50,27 @@ typedef enum { /*< underscore_name=mm_filter_rule >*/ MM_FILTER_RULE_EXPLICIT_WHITELIST = 1 << 0, MM_FILTER_RULE_EXPLICIT_BLACKLIST = 1 << 1, MM_FILTER_RULE_PLUGIN_WHITELIST = 1 << 2, - MM_FILTER_RULE_VIRTUAL = 1 << 3, - MM_FILTER_RULE_NET = 1 << 4, - MM_FILTER_RULE_USBMISC = 1 << 5, - MM_FILTER_RULE_RPMSG = 1 << 6, - MM_FILTER_RULE_TTY = 1 << 7, - MM_FILTER_RULE_TTY_BLACKLIST = 1 << 8, - MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY = 1 << 9, - MM_FILTER_RULE_TTY_PLATFORM_DRIVER = 1 << 10, - MM_FILTER_RULE_TTY_DEFAULT_ALLOWED = 1 << 11, - MM_FILTER_RULE_TTY_DRIVER = 1 << 12, - MM_FILTER_RULE_TTY_ACM_INTERFACE = 1 << 13, - MM_FILTER_RULE_TTY_WITH_NET = 1 << 14, - MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN = 1 << 15, + MM_FILTER_RULE_QRTR = 1 << 3, + MM_FILTER_RULE_VIRTUAL = 1 << 4, + MM_FILTER_RULE_NET = 1 << 5, + MM_FILTER_RULE_USBMISC = 1 << 6, + MM_FILTER_RULE_RPMSG = 1 << 7, + MM_FILTER_RULE_TTY = 1 << 8, + MM_FILTER_RULE_TTY_BLACKLIST = 1 << 9, + MM_FILTER_RULE_TTY_MANUAL_SCAN_ONLY = 1 << 10, + MM_FILTER_RULE_TTY_PLATFORM_DRIVER = 1 << 11, + MM_FILTER_RULE_TTY_DEFAULT_ALLOWED = 1 << 12, + MM_FILTER_RULE_TTY_DRIVER = 1 << 13, + MM_FILTER_RULE_TTY_ACM_INTERFACE = 1 << 14, + MM_FILTER_RULE_TTY_WITH_NET = 1 << 15, + MM_FILTER_RULE_TTY_DEFAULT_FORBIDDEN = 1 << 16, } MMFilterRule; #define MM_FILTER_RULE_ALL \ (MM_FILTER_RULE_EXPLICIT_WHITELIST | \ MM_FILTER_RULE_EXPLICIT_BLACKLIST | \ MM_FILTER_RULE_PLUGIN_WHITELIST | \ + MM_FILTER_RULE_QRTR | \ MM_FILTER_RULE_VIRTUAL | \ MM_FILTER_RULE_NET | \ MM_FILTER_RULE_USBMISC | \ @@ -104,6 +106,7 @@ typedef enum { /*< underscore_name=mm_filter_rule >*/ (MM_FILTER_RULE_EXPLICIT_WHITELIST | \ MM_FILTER_RULE_EXPLICIT_BLACKLIST | \ MM_FILTER_RULE_PLUGIN_WHITELIST | \ + MM_FILTER_RULE_QRTR | \ MM_FILTER_RULE_VIRTUAL | \ MM_FILTER_RULE_NET | \ MM_FILTER_RULE_USBMISC | \ @@ -121,6 +124,7 @@ typedef enum { /*< underscore_name=mm_filter_rule >*/ (MM_FILTER_RULE_EXPLICIT_WHITELIST | \ MM_FILTER_RULE_EXPLICIT_BLACKLIST | \ MM_FILTER_RULE_PLUGIN_WHITELIST | \ + MM_FILTER_RULE_QRTR | \ MM_FILTER_RULE_VIRTUAL | \ MM_FILTER_RULE_NET | \ MM_FILTER_RULE_USBMISC | \ |