aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Lassalle <andrewlassalle@chromium.org>2020-10-13 15:41:57 -0700
committerAleksander Morgado <aleksander@aleksander.es>2021-04-14 11:27:27 +0200
commite24346128d2c93501f0a41596fdfa4a6b8e18753 (patch)
tree894a69234eeb3700dcd05d74bc7a92b7215ac7d7
parentd2ffb47ec86a3d83b87b46a47ea1ad491e186a2d (diff)
filter: add filter for QRTR devices
Add support for devices using the subsystem "qrtr".
-rw-r--r--src/mm-filter.c10
-rw-r--r--src/mm-filter.h30
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 | \