Replace RW lock with mutex, shared_mutex
Test: built, flashed, booted
system/netd/tests/runtests.sh passes
Change-Id: I42b52d815b6ba0ba6f93dc27e83a900d2abec715
diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp
index ed5156f..ac709a0 100644
--- a/server/NetworkController.cpp
+++ b/server/NetworkController.cpp
@@ -149,12 +149,12 @@
}
unsigned NetworkController::getDefaultNetwork() const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
return mDefaultNetId;
}
int NetworkController::setDefaultNetwork(unsigned netId) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
if (netId == mDefaultNetId) {
return 0;
@@ -241,14 +241,14 @@
}
uint32_t NetworkController::getNetworkForDns(unsigned* netId, uid_t uid) const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
return getNetworkForDnsLocked(netId, uid);
}
// Returns the NetId that a given UID would use if no network is explicitly selected. Specifically,
// the VPN that applies to the UID if any; otherwise, the default network.
unsigned NetworkController::getNetworkForUser(uid_t uid) const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
if (VirtualNetwork* virtualNetwork = getVirtualNetworkForUserLocked(uid)) {
return virtualNetwork->getNetId();
}
@@ -278,13 +278,13 @@
}
unsigned NetworkController::getNetworkForConnect(uid_t uid) const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
return getNetworkForConnectLocked(uid);
}
void NetworkController::getNetworkContext(
unsigned netId, uid_t uid, struct android_net_context* netcontext) const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
struct android_net_context nc = {
.app_netid = netId,
@@ -341,12 +341,12 @@
}
unsigned NetworkController::getNetworkForInterface(const char* interface) const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
return getNetworkForInterfaceLocked(interface);
}
bool NetworkController::isVirtualNetwork(unsigned netId) const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
return isVirtualNetworkLocked(netId);
}
@@ -382,7 +382,7 @@
}
int NetworkController::createPhysicalNetwork(unsigned netId, Permission permission) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
return createPhysicalNetworkLocked(netId, permission);
}
@@ -391,7 +391,7 @@
return -EINVAL;
}
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
for (*pNetId = MIN_OEM_ID; *pNetId <= MAX_OEM_ID; (*pNetId)++) {
if (!isValidNetworkLocked(*pNetId)) {
break;
@@ -413,7 +413,7 @@
}
int NetworkController::createVirtualNetwork(unsigned netId, bool hasDns, bool secure) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
if (!(MIN_NET_ID <= netId && netId <= MAX_NET_ID)) {
ALOGE("invalid netId %u", netId);
@@ -433,7 +433,7 @@
}
int NetworkController::destroyNetwork(unsigned netId) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
if (netId == LOCAL_NET_ID) {
ALOGE("cannot destroy local network");
@@ -486,7 +486,7 @@
}
int NetworkController::addInterfaceToNetwork(unsigned netId, const char* interface) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
if (!isValidNetworkLocked(netId)) {
ALOGE("no such netId %u", netId);
@@ -513,7 +513,7 @@
}
int NetworkController::removeInterfaceFromNetwork(unsigned netId, const char* interface) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
if (!isValidNetworkLocked(netId)) {
ALOGE("no such netId %u", netId);
@@ -524,26 +524,26 @@
}
Permission NetworkController::getPermissionForUser(uid_t uid) const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
return getPermissionForUserLocked(uid);
}
void NetworkController::setPermissionForUsers(Permission permission,
const std::vector<uid_t>& uids) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
for (uid_t uid : uids) {
mUsers[uid] = permission;
}
}
int NetworkController::checkUserNetworkAccess(uid_t uid, unsigned netId) const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
return checkUserNetworkAccessLocked(uid, netId);
}
int NetworkController::setPermissionForNetworks(Permission permission,
const std::vector<unsigned>& netIds) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
for (unsigned netId : netIds) {
Network* network = getNetworkLocked(netId);
if (!network) {
@@ -563,7 +563,7 @@
}
int NetworkController::addUsersToNetwork(unsigned netId, const UidRanges& uidRanges) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
Network* network = getNetworkLocked(netId);
if (!network) {
ALOGE("no such netId %u", netId);
@@ -580,7 +580,7 @@
}
int NetworkController::removeUsersFromNetwork(unsigned netId, const UidRanges& uidRanges) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
Network* network = getNetworkLocked(netId);
if (!network) {
ALOGE("no such netId %u", netId);
@@ -608,8 +608,7 @@
}
void NetworkController::addInterfaceAddress(unsigned ifIndex, const char* address) {
- android::RWLock::AutoWLock lock(mRWLock);
-
+ ScopedWLock lock(mRWLock);
if (ifIndex == 0) {
ALOGE("Attempting to add address %s without ifindex", address);
return;
@@ -619,7 +618,7 @@
// Returns whether we should call SOCK_DESTROY on the removed address.
bool NetworkController::removeInterfaceAddress(unsigned ifindex, const char* address) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
// First, update mAddressToIfindices map
auto ifindicesIter = mAddressToIfindices.find(address);
if (ifindicesIter == mAddressToIfindices.end()) {
@@ -660,24 +659,24 @@
}
bool NetworkController::canProtect(uid_t uid) const {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
return canProtectLocked(uid);
}
void NetworkController::allowProtect(const std::vector<uid_t>& uids) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
mProtectableUsers.insert(uids.begin(), uids.end());
}
void NetworkController::denyProtect(const std::vector<uid_t>& uids) {
- android::RWLock::AutoWLock lock(mRWLock);
+ ScopedWLock lock(mRWLock);
for (uid_t uid : uids) {
mProtectableUsers.erase(uid);
}
}
void NetworkController::dump(DumpWriter& dw) {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
dw.incIndent();
dw.println("NetworkController");
@@ -782,7 +781,7 @@
int NetworkController::modifyRoute(unsigned netId, const char* interface, const char* destination,
const char* nexthop, bool add, bool legacy, uid_t uid) {
- android::RWLock::AutoRLock lock(mRWLock);
+ ScopedRLock lock(mRWLock);
if (!isValidNetworkLocked(netId)) {
ALOGE("no such netId %u", netId);