From a054db0b9775c187b88da5abebd51690eb9495b8 Mon Sep 17 00:00:00 2001 From: Robert Wu Date: Thu, 17 Feb 2022 17:55:04 +0000 Subject: [PATCH] MidiService: Add GuardedBy Annotation to USB MIDI As a follow-up to ag/16835029, adding GuardedBy annotation to new USB specific classes. This should help with identifying potential races Bug: 219763493 Test: Tested on MIDI 2.0 keyboard Change-Id: I3d77db0d741cca8f79a759d2dcc99e8254b0298c --- .../midi/java/com/android/server/midi/MidiService.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/services/midi/java/com/android/server/midi/MidiService.java b/services/midi/java/com/android/server/midi/MidiService.java index 2d082e1576924..bce5256e1e4c2 100644 --- a/services/midi/java/com/android/server/midi/MidiService.java +++ b/services/midi/java/com/android/server/midi/MidiService.java @@ -50,6 +50,7 @@ import android.os.UserHandle; import android.util.EventLog; import android.util.Log; +import com.android.internal.annotations.GuardedBy; import com.android.internal.content.PackageMonitor; import com.android.internal.util.DumpUtils; import com.android.internal.util.IndentingPrintWriter; @@ -136,10 +137,12 @@ public class MidiService extends IMidiManager.Stub { private final Object mUsbMidiLock = new Object(); // Number of times a USB MIDI 1.0 device has opened, based on the device name. + @GuardedBy("mUsbMidiLock") private final HashMap mUsbMidiLegacyDeviceOpenCount = new HashMap(); // Whether a USB MIDI device has opened, based on the device name. + @GuardedBy("mUsbMidiLock") private final HashSet mUsbMidiUniversalDeviceInUse = new HashSet(); // UID of BluetoothMidiService @@ -1247,7 +1250,7 @@ public class MidiService extends IMidiManager.Stub { pw.decreaseIndent(); } - // hold mUsbMidiLock before calling this + @GuardedBy("mUsbMidiLock") private boolean isUsbMidiDeviceInUseLocked(MidiDeviceInfo info) { String name = info.getProperties().getString(MidiDeviceInfo.PROPERTY_NAME); if (name.length() < MIDI_LEGACY_STRING.length()) { @@ -1266,7 +1269,7 @@ public class MidiService extends IMidiManager.Stub { return false; } - // hold mUsbMidiLock before calling this + @GuardedBy("mUsbMidiLock") void addUsbMidiDeviceLocked(MidiDeviceInfo info) { String name = info.getProperties().getString(MidiDeviceInfo.PROPERTY_NAME); if (name.length() < MIDI_LEGACY_STRING.length()) { @@ -1283,7 +1286,7 @@ public class MidiService extends IMidiManager.Stub { } } - // hold mUsbMidiLock before calling this + @GuardedBy("mUsbMidiLock") void removeUsbMidiDeviceLocked(MidiDeviceInfo info) { String name = info.getProperties().getString(MidiDeviceInfo.PROPERTY_NAME); if (name.length() < MIDI_LEGACY_STRING.length()) {