From 2afffc2d6acf2d1322a09b71d03d9054d289c057 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= Date: Sat, 15 Jun 2024 06:37:03 -0700 Subject: [PATCH] Revert "NetBpfLoad: gently enable mainline" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 231598bc928edf9c5714dc667f9e7240bc37a1ed. This is targetting mainline release M-2024-09. Note: left the failure message in netbpfload/netbpfload.33rc to mention 'netbpfload-failed' and not 'bpfloader-failed'. Test: TreeHugger Signed-off-by: Maciej Żenczykowski Change-Id: Iaf99360a215b1a74bda457ed55b7f56a5a3f2b48 --- bpf_progs/block.c | 1 - bpf_progs/clatd.c | 1 - bpf_progs/dscpPolicy.c | 1 - bpf_progs/netd.c | 1 - bpf_progs/offload.c | 1 - bpf_progs/test.c | 6 +++--- netbpfload/loader.cpp | 9 --------- netbpfload/netbpfload.33rc | 2 +- netd/BpfHandler.cpp | 16 +++++----------- .../native/bpf_headers/include/bpf/bpf_helpers.h | 3 --- 10 files changed, 9 insertions(+), 32 deletions(-) diff --git a/bpf_progs/block.c b/bpf_progs/block.c index 353525ef84..e46720373e 100644 --- a/bpf_progs/block.c +++ b/bpf_progs/block.c @@ -76,4 +76,3 @@ DEFINE_NETD_RO_BPF_PROG("bind6/block_port", bind6_block_port, KVER_4_19) LICENSE("Apache 2.0"); CRITICAL("ConnectivityNative"); DISABLE_BTF_ON_USER_BUILDS(); -DISABLE_ON_MAINLINE_BEFORE_U_QPR3(); diff --git a/bpf_progs/clatd.c b/bpf_progs/clatd.c index 95e9a4ce98..9e0d4c4903 100644 --- a/bpf_progs/clatd.c +++ b/bpf_progs/clatd.c @@ -431,4 +431,3 @@ DEFINE_BPF_PROG("schedcls/egress4/clat_rawip", AID_ROOT, AID_SYSTEM, sched_cls_e LICENSE("Apache 2.0"); CRITICAL("Connectivity"); DISABLE_BTF_ON_USER_BUILDS(); -DISABLE_ON_MAINLINE_BEFORE_U_QPR3(); diff --git a/bpf_progs/dscpPolicy.c b/bpf_progs/dscpPolicy.c index 8bb8ad52ea..1739c37a33 100644 --- a/bpf_progs/dscpPolicy.c +++ b/bpf_progs/dscpPolicy.c @@ -239,4 +239,3 @@ DEFINE_BPF_PROG_KVER("schedcls/set_dscp_ether", AID_ROOT, AID_SYSTEM, schedcls_s LICENSE("Apache 2.0"); CRITICAL("Connectivity"); DISABLE_BTF_ON_USER_BUILDS(); -DISABLE_ON_MAINLINE_BEFORE_U_QPR3(); diff --git a/bpf_progs/netd.c b/bpf_progs/netd.c index 5ce22279ad..5a8f76f405 100644 --- a/bpf_progs/netd.c +++ b/bpf_progs/netd.c @@ -757,4 +757,3 @@ DEFINE_NETD_V_BPF_PROG_KVER("setsockopt/prog", AID_ROOT, AID_ROOT, setsockopt_pr LICENSE("Apache 2.0"); CRITICAL("Connectivity and netd"); DISABLE_BTF_ON_USER_BUILDS(); -DISABLE_ON_MAINLINE_BEFORE_U_QPR3(); diff --git a/bpf_progs/offload.c b/bpf_progs/offload.c index c7ac059de4..8c3011bdd3 100644 --- a/bpf_progs/offload.c +++ b/bpf_progs/offload.c @@ -878,4 +878,3 @@ DEFINE_XDP_PROG("xdp/tether_upstream_rawip", LICENSE("Apache 2.0"); CRITICAL("Connectivity (Tethering)"); DISABLE_BTF_ON_USER_BUILDS(); -DISABLE_ON_MAINLINE_BEFORE_U_QPR3(); diff --git a/bpf_progs/test.c b/bpf_progs/test.c index 6a4471cb98..ba059d5445 100644 --- a/bpf_progs/test.c +++ b/bpf_progs/test.c @@ -22,11 +22,11 @@ // BTF is incompatible with bpfloaders < v0.10, hence for S (v0.2) we must // ship a different file than for later versions, but we need bpfloader v0.25+ // for obj@ver.o support -#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION +#define BPFLOADER_MIN_VER BPFLOADER_OBJ_AT_VER_VERSION #else /* MAINLINE */ -// The resulting .o needs to load on the Android S bpfloader +// The resulting .o needs to load on the Android S & T bpfloaders #define BPFLOADER_MIN_VER BPFLOADER_S_VERSION -#define BPFLOADER_MAX_VER BPFLOADER_T_VERSION +#define BPFLOADER_MAX_VER BPFLOADER_OBJ_AT_VER_VERSION #endif /* MAINLINE */ // Warning: values other than AID_ROOT don't work for map uid on BpfLoader < v0.21 diff --git a/netbpfload/loader.cpp b/netbpfload/loader.cpp index bb7c56f447..5141095040 100644 --- a/netbpfload/loader.cpp +++ b/netbpfload/loader.cpp @@ -1124,20 +1124,11 @@ int loadProg(const char* const elfPath, bool* const isCritical, const unsigned i readSectionUint("bpfloader_max_ver", elfFile, DEFAULT_BPFLOADER_MAX_VER); unsigned int bpfLoaderMinRequiredVer = readSectionUint("bpfloader_min_required_ver", elfFile, 0); - unsigned int netBpfLoadMinVer = - readSectionUint("netbpfload_min_ver", elfFile, 0); size_t sizeOfBpfMapDef = readSectionUint("size_of_bpf_map_def", elfFile, DEFAULT_SIZEOF_BPF_MAP_DEF); size_t sizeOfBpfProgDef = readSectionUint("size_of_bpf_prog_def", elfFile, DEFAULT_SIZEOF_BPF_PROG_DEF); - // temporary hack to enable gentle enablement of mainline NetBpfLoad - if (bpfloader_ver < netBpfLoadMinVer) { - ALOGI("NetBpfLoad version %d ignoring ELF object %s with netbpfload min ver %d", - bpfloader_ver, elfPath, netBpfLoadMinVer); - return 0; - } - // inclusive lower bound check if (bpfloader_ver < bpfLoaderMinVer) { ALOGI("BpfLoader version 0x%05x ignoring ELF object %s with min ver 0x%05x", diff --git a/netbpfload/netbpfload.33rc b/netbpfload/netbpfload.33rc index d269ce9be2..493731fd5f 100644 --- a/netbpfload/netbpfload.33rc +++ b/netbpfload/netbpfload.33rc @@ -17,5 +17,5 @@ service mdnsd_netbpfload /apex/com.android.tethering/bin/netbpfload file /dev/kmsg w rlimit memlock 1073741824 1073741824 oneshot - # TODO: reboot_on_failure reboot,netbpfload-failed + reboot_on_failure reboot,netbpfload-failed override diff --git a/netd/BpfHandler.cpp b/netd/BpfHandler.cpp index 5d64ae7a6e..80f5869488 100644 --- a/netd/BpfHandler.cpp +++ b/netd/BpfHandler.cpp @@ -215,25 +215,19 @@ Status BpfHandler::init(const char* cg2_path) { android::bpf::waitForProgsLoaded(); } - if (!mainlineNetBpfLoadDone()) { - const bool enforce_mainline = false; // TODO: flip to true - + if (false && !mainlineNetBpfLoadDone()) { // We're on < U QPR3 & it's the first time netd is starting up (unless crashlooping) // // On U QPR3+ netbpfload is guaranteed to run before the platform bpfloader, // so waitForProgsLoaded() implies mainlineNetBpfLoadDone(). if (!base::SetProperty("ctl.start", "mdnsd_netbpfload")) { ALOGE("Failed to set property ctl.start=mdnsd_netbpfload, see dmesg for reason."); - if (enforce_mainline) abort(); + abort(); } - if (enforce_mainline) { - ALOGI("Waiting for Networking BPF programs"); - waitForNetProgsLoaded(); - ALOGI("Networking BPF programs are loaded"); - } else { - ALOGI("Started mdnsd_netbpfload asynchronously."); - } + ALOGI("Waiting for Networking BPF programs"); + waitForNetProgsLoaded(); + ALOGI("Networking BPF programs are loaded"); } ALOGI("BPF programs are loaded"); diff --git a/staticlibs/native/bpf_headers/include/bpf/bpf_helpers.h b/staticlibs/native/bpf_headers/include/bpf/bpf_helpers.h index e11a9e2751..4ddec8bcd5 100644 --- a/staticlibs/native/bpf_headers/include/bpf/bpf_helpers.h +++ b/staticlibs/native/bpf_headers/include/bpf/bpf_helpers.h @@ -117,9 +117,6 @@ unsigned _btf_min_bpfloader_ver SECTION("btf_min_bpfloader_ver") = 39u; \ unsigned _btf_user_min_bpfloader_ver SECTION("btf_user_min_bpfloader_ver") = 0xFFFFFFFFu -#define DISABLE_ON_MAINLINE_BEFORE_U_QPR3() \ - unsigned _netbpfload_min_ver SECTION("netbpfload_min_ver") = BPFLOADER_MAINLINE_U_QPR3_VERSION; - /* flag the resulting bpf .o file as critical to system functionality, * loading all kernel version appropriate programs in it must succeed * for bpfloader success