diff options
| author | 2024-12-04 11:06:19 +0000 | |
|---|---|---|
| committer | 2024-12-11 00:20:34 +0000 | |
| commit | 5e49cc0c4c87a129e67871292a1d3fd5dfdebebe (patch) | |
| tree | 1c9fa0ccd797f60cf2324e0ac5700e20026eb6e4 | |
| parent | fb23f3fa92f890c0cf49b671e94bfe4fa66d542f (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.java | 9 |
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); |