summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Roy Luo <royluo@google.com> 2024-12-04 11:06:19 +0000
committer Roy Luo <royluo@google.com> 2024-12-11 00:20:34 +0000
commit5e49cc0c4c87a129e67871292a1d3fd5dfdebebe (patch)
tree1c9fa0ccd797f60cf2324e0ac5700e20026eb6e4
parentfb23f3fa92f890c0cf49b671e94bfe4fa66d542f (diff)
Guard uevent migration with genfs label version
android.hardware.usb.flags.enable_udc_sysfs_usb_state_update introduces a new way to detect usb state update, however, it depends on system server having access to sysfs_udc fs context, which is only guaranteed in genfs label version later than 202404. Guard the feature enablement with genfs label version check. Bug: 339241080 Test: Tested on shiba Flag: android.hardware.usb.flags.enable_udc_sysfs_usb_state_update Change-Id: Ib7de2e780c8046a7745e650c1dc6c04eaca1b4f5
-rw-r--r--services/usb/java/com/android/server/usb/UsbDeviceManager.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbDeviceManager.java b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
index 15c8b135d2c4..c65f7844f201 100644
--- a/services/usb/java/com/android/server/usb/UsbDeviceManager.java
+++ b/services/usb/java/com/android/server/usb/UsbDeviceManager.java
@@ -70,6 +70,7 @@ import android.os.Looper;
import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.os.RemoteException;
+import android.os.SELinux;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UEventObserver;
@@ -161,6 +162,11 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
private static final String MIDI_ALSA_PATH =
"/sys/class/android_usb/android0/f_midi/alsa";
+ /**
+ * The minimum SELinux genfs labels version that supports udc sysfs genfs context.
+ */
+ private static final int MIN_SELINUX_GENFS_LABELS_VERSION = 202404;
+
private static final int MSG_UPDATE_STATE = 0;
private static final int MSG_ENABLE_ADB = 1;
private static final int MSG_SET_CURRENT_FUNCTIONS = 2;
@@ -445,7 +451,8 @@ public class UsbDeviceManager implements ActivityTaskManagerInternal.ScreenObser
mEnableUdcSysfsUsbStateUpdate =
android.hardware.usb.flags.Flags.enableUdcSysfsUsbStateUpdate()
- && context.getResources().getBoolean(R.bool.config_enableUdcSysfsUsbStateUpdate);
+ && context.getResources().getBoolean(R.bool.config_enableUdcSysfsUsbStateUpdate)
+ && SELinux.getGenfsLabelsVersion() > MIN_SELINUX_GENFS_LABELS_VERSION;
if (mEnableUdcSysfsUsbStateUpdate) {
mUEventObserver.startObserving(UDC_SUBSYS_MATCH);