diff options
| author | Luke Huang <huangluke@google.com> | 2018-06-29 13:49:58 +0800 |
|---|---|---|
| committer | Luke Huang <huangluke@google.com> | 2018-07-11 15:04:07 +0800 |
| commit | d1ee462e94c34193bf5e8eb2975fff61b82ab1fb (patch) | |
| tree | dd8ba06ec3939751c61f9f1a672b2474729f2e5f /server/NetworkController.cpp | |
| parent | d4c0be8ed437ee2198a0d5d8561093ab23e51c2e (diff) | |
Replace RW lock with mutex, shared_mutex
Test: built, flashed, booted
system/netd/tests/runtests.sh passes
Change-Id: I42b52d815b6ba0ba6f93dc27e83a900d2abec715
Diffstat (limited to 'server/NetworkController.cpp')
| -rw-r--r-- | server/NetworkController.cpp | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/server/NetworkController.cpp b/server/NetworkController.cpp index ed5156f6..ac709a0b 100644 --- a/server/NetworkController.cpp +++ b/server/NetworkController.cpp @@ -149,12 +149,12 @@ NetworkController::NetworkController() : } 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::getNetworkForDnsLocked(unsigned* netId, uid_t uid) c } 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::getNetworkForConnectLocked(uid_t uid) const { } 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::getNetworkForInterfaceLocked(const char* interface) } 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::createPhysicalNetworkLocked(unsigned netId, Permission pe } int NetworkController::createPhysicalNetwork(unsigned netId, Permission permission) { - android::RWLock::AutoWLock lock(mRWLock); + ScopedWLock lock(mRWLock); return createPhysicalNetworkLocked(netId, permission); } @@ -391,7 +391,7 @@ int NetworkController::createPhysicalOemNetwork(Permission permission, unsigned 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::createPhysicalOemNetwork(Permission permission, unsigned } 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::createVirtualNetwork(unsigned netId, bool hasDns, bool se } 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::destroyNetwork(unsigned netId) { } 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::addInterfaceToNetwork(unsigned netId, const char* interfa } 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 @@ int NetworkController::removeInterfaceFromNetwork(unsigned netId, const char* in } 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::setPermissionForNetworks(Permission permission, } 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::addUsersToNetwork(unsigned netId, const UidRanges& uidRan } 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 @@ int NetworkController::removeRoute(unsigned netId, const char* interface, const } 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 @@ void NetworkController::addInterfaceAddress(unsigned ifIndex, const char* addres // 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::canProtectLocked(uid_t uid) const { } 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::checkUserNetworkAccessLocked(uid_t uid, unsigned netId) c 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); |
