diff --git a/bpf_progs/block.c b/bpf_progs/block.c index 0a2b0b8728..152dda64a9 100644 --- a/bpf_progs/block.c +++ b/bpf_progs/block.c @@ -19,8 +19,8 @@ #include #include -// The resulting .o needs to load on the Android T bpfloader -#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION +// The resulting .o needs to load on Android T+ +#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION #include "bpf_helpers.h" diff --git a/bpf_progs/clatd.c b/bpf_progs/clatd.c index 8877bfe156..f83e5ae746 100644 --- a/bpf_progs/clatd.c +++ b/bpf_progs/clatd.c @@ -30,8 +30,8 @@ #define __kernel_udphdr udphdr #include -// The resulting .o needs to load on the Android T bpfloader -#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION +// The resulting .o needs to load on Android T+ +#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION #include "bpf_helpers.h" #include "bpf_net_helpers.h" diff --git a/bpf_progs/dscpPolicy.c b/bpf_progs/dscpPolicy.c index e845a699e9..ed114e4fbd 100644 --- a/bpf_progs/dscpPolicy.c +++ b/bpf_progs/dscpPolicy.c @@ -27,8 +27,8 @@ #include #include -// The resulting .o needs to load on the Android T bpfloader -#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION +// The resulting .o needs to load on Android T+ +#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION #include "bpf_helpers.h" #include "dscpPolicy.h" diff --git a/bpf_progs/netd.c b/bpf_progs/netd.c index 5e401aa745..dfc769917a 100644 --- a/bpf_progs/netd.c +++ b/bpf_progs/netd.c @@ -14,8 +14,8 @@ * limitations under the License. */ -// The resulting .o needs to load on the Android T bpfloader -#define BPFLOADER_MIN_VER BPFLOADER_T_VERSION +// The resulting .o needs to load on Android T+ +#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION #include #include @@ -103,13 +103,13 @@ DEFINE_BPF_MAP_NO_NETD(iface_index_name_map, HASH, uint32_t, IfaceValue, IFACE_I // A single-element configuration array, packet tracing is enabled when 'true'. DEFINE_BPF_MAP_EXT(packet_trace_enabled_map, ARRAY, uint32_t, bool, 1, AID_ROOT, AID_SYSTEM, 0060, "fs_bpf_net_shared", "", PRIVATE, - BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG, + BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG) // A ring buffer on which packet information is pushed. DEFINE_BPF_RINGBUF_EXT(packet_trace_ringbuf, PacketTrace, PACKET_TRACE_BUF_SIZE, AID_ROOT, AID_SYSTEM, 0060, "fs_bpf_net_shared", "", PRIVATE, - BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG, + BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, LOAD_ON_ENG, LOAD_ON_USER, LOAD_ON_USERDEBUG); DEFINE_BPF_MAP_RO_NETD(data_saver_enabled_map, ARRAY, uint32_t, bool, @@ -516,7 +516,7 @@ static __always_inline inline int bpf_traffic_account(struct __sk_buff* skb, // This program is optional, and enables tracing on Android U+, 5.8+ on user builds. DEFINE_BPF_PROG_EXT("cgroupskb/ingress/stats$trace_user", AID_ROOT, AID_SYSTEM, bpf_cgroup_ingress_trace_user, KVER_5_8, KVER_INF, - BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, OPTIONAL, + BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, OPTIONAL, "fs_bpf_netd_readonly", "", IGNORE_ON_ENG, LOAD_ON_USER, IGNORE_ON_USERDEBUG) (struct __sk_buff* skb) { @@ -526,7 +526,7 @@ DEFINE_BPF_PROG_EXT("cgroupskb/ingress/stats$trace_user", AID_ROOT, AID_SYSTEM, // This program is required, and enables tracing on Android U+, 5.8+, userdebug/eng. DEFINE_BPF_PROG_EXT("cgroupskb/ingress/stats$trace", AID_ROOT, AID_SYSTEM, bpf_cgroup_ingress_trace, KVER_5_8, KVER_INF, - BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, MANDATORY, + BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, MANDATORY, "fs_bpf_netd_readonly", "", LOAD_ON_ENG, IGNORE_ON_USER, LOAD_ON_USERDEBUG) (struct __sk_buff* skb) { @@ -548,7 +548,7 @@ DEFINE_NETD_BPF_PROG_KVER_RANGE("cgroupskb/ingress/stats$4_14", AID_ROOT, AID_SY // This program is optional, and enables tracing on Android U+, 5.8+ on user builds. DEFINE_BPF_PROG_EXT("cgroupskb/egress/stats$trace_user", AID_ROOT, AID_SYSTEM, bpf_cgroup_egress_trace_user, KVER_5_8, KVER_INF, - BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, OPTIONAL, + BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, OPTIONAL, "fs_bpf_netd_readonly", "", IGNORE_ON_ENG, LOAD_ON_USER, IGNORE_ON_USERDEBUG) (struct __sk_buff* skb) { @@ -558,7 +558,7 @@ DEFINE_BPF_PROG_EXT("cgroupskb/egress/stats$trace_user", AID_ROOT, AID_SYSTEM, // This program is required, and enables tracing on Android U+, 5.8+, userdebug/eng. DEFINE_BPF_PROG_EXT("cgroupskb/egress/stats$trace", AID_ROOT, AID_SYSTEM, bpf_cgroup_egress_trace, KVER_5_8, KVER_INF, - BPFLOADER_IGNORED_ON_VERSION, BPFLOADER_MAX_VER, MANDATORY, + BPFLOADER_MAINLINE_U_VERSION, BPFLOADER_MAX_VER, MANDATORY, "fs_bpf_netd_readonly", "", LOAD_ON_ENG, IGNORE_ON_USER, LOAD_ON_USERDEBUG) (struct __sk_buff* skb) { diff --git a/bpf_progs/offload.c b/bpf_progs/offload.c index dd59dcaa31..4f152bf6c3 100644 --- a/bpf_progs/offload.c +++ b/bpf_progs/offload.c @@ -28,11 +28,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_OBJ_AT_VER_VERSION +#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION #else /* MAINLINE */ // The resulting .o needs to load on the Android S bpfloader #define BPFLOADER_MIN_VER BPFLOADER_S_VERSION -#define BPFLOADER_MAX_VER BPFLOADER_OBJ_AT_VER_VERSION +#define BPFLOADER_MAX_VER BPFLOADER_T_VERSION #endif /* MAINLINE */ // Warning: values other than AID_ROOT don't work for map uid on BpfLoader < v0.21 diff --git a/bpf_progs/test.c b/bpf_progs/test.c index e2b8ea515b..fff3512333 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_OBJ_AT_VER_VERSION +#define BPFLOADER_MIN_VER BPFLOADER_MAINLINE_T_VERSION #else /* MAINLINE */ // The resulting .o needs to load on the Android S bpfloader #define BPFLOADER_MIN_VER BPFLOADER_S_VERSION -#define BPFLOADER_MAX_VER BPFLOADER_OBJ_AT_VER_VERSION +#define BPFLOADER_MAX_VER BPFLOADER_T_VERSION #endif /* MAINLINE */ // Warning: values other than AID_ROOT don't work for map uid on BpfLoader < v0.21 diff --git a/netbpfload/NetBpfLoad.cpp b/netbpfload/NetBpfLoad.cpp index 196b687311..9651a3b29c 100644 --- a/netbpfload/NetBpfLoad.cpp +++ b/netbpfload/NetBpfLoad.cpp @@ -261,9 +261,10 @@ int main(int argc, char** argv, char * const envp[]) { // Tethering apex shipped initrc file causes us to reach here // but we're not ready to correctly handle anything before U QPR2 // in which the 'bpfloader' vs 'netbpfload' split happened - const char * args[] = { platformBpfLoader, NULL, }; - execve(args[0], (char**)args, envp); - ALOGE("exec '%s' fail: %d[%s]", platformBpfLoader, errno, strerror(errno)); + } + + if (!isAtLeastT) { + ALOGE("Impossible - not reachable on Android