diff --git a/netd/BpfHandler.cpp b/netd/BpfHandler.cpp index 42d0de5666..5ae8ab6ee3 100644 --- a/netd/BpfHandler.cpp +++ b/netd/BpfHandler.cpp @@ -199,6 +199,7 @@ int BpfHandler::tagSocket(int sockFd, uint32_t tag, uid_t chargeUid, uid_t realU BpfMap& currentMap = (configuration.value() == SELECT_MAP_A) ? mStatsMapA : mStatsMapB; + // HACK: mStatsMapB becomes RW BpfMap here, but countUidStatsEntries doesn't modify so it works base::Result res = currentMap.iterate(countUidStatsEntries); if (!res.ok()) { ALOGE("Failed to count the stats entry in map %d: %s", currentMap.getMap().get(), diff --git a/netd/BpfHandler.h b/netd/BpfHandler.h index 05b9ebc81d..7e3b94d6e8 100644 --- a/netd/BpfHandler.h +++ b/netd/BpfHandler.h @@ -23,6 +23,7 @@ #include "bpf_shared.h" using android::bpf::BpfMap; +using android::bpf::BpfMapRO; namespace android { namespace net { @@ -61,7 +62,7 @@ class BpfHandler { BpfMap mCookieTagMap; BpfMap mStatsMapA; - BpfMap mStatsMapB; + BpfMapRO mStatsMapB; BpfMap mConfigurationMap; BpfMap mUidPermissionMap;