Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5e49cc0c authored by Roy Luo's avatar Roy Luo
Browse files

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
parent fb23f3fa
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -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);