Skip to content

Commit cfe90f4

Browse files
committed
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf
Daniel Borkmann says: ==================== pull-request: bpf 2020-10-08 The main changes are: 1) Fix "unresolved symbol" build error under CONFIG_NET w/o CONFIG_INET due to missing tcp_timewait_sock and inet_timewait_sock BTF, from Yonghong Song. 2) Fix 32 bit sub-register bounds tracking for OR case, from Daniel Borkmann. ==================== Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2 parents b6c02ef + 5b9fbeb commit cfe90f4

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

kernel/bpf/verifier.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5667,8 +5667,8 @@ static void scalar32_min_max_or(struct bpf_reg_state *dst_reg,
56675667
bool src_known = tnum_subreg_is_const(src_reg->var_off);
56685668
bool dst_known = tnum_subreg_is_const(dst_reg->var_off);
56695669
struct tnum var32_off = tnum_subreg(dst_reg->var_off);
5670-
s32 smin_val = src_reg->smin_value;
5671-
u32 umin_val = src_reg->umin_value;
5670+
s32 smin_val = src_reg->s32_min_value;
5671+
u32 umin_val = src_reg->u32_min_value;
56725672

56735673
/* Assuming scalar64_min_max_or will be called so it is safe
56745674
* to skip updating register for known case.
@@ -5691,8 +5691,8 @@ static void scalar32_min_max_or(struct bpf_reg_state *dst_reg,
56915691
/* ORing two positives gives a positive, so safe to
56925692
* cast result into s64.
56935693
*/
5694-
dst_reg->s32_min_value = dst_reg->umin_value;
5695-
dst_reg->s32_max_value = dst_reg->umax_value;
5694+
dst_reg->s32_min_value = dst_reg->u32_min_value;
5695+
dst_reg->s32_max_value = dst_reg->u32_max_value;
56965696
}
56975697
}
56985698

net/core/filter.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9558,6 +9558,12 @@ const struct bpf_func_proto bpf_skc_to_tcp_sock_proto = {
95589558

95599559
BPF_CALL_1(bpf_skc_to_tcp_timewait_sock, struct sock *, sk)
95609560
{
9561+
/* BTF types for tcp_timewait_sock and inet_timewait_sock are not
9562+
* generated if CONFIG_INET=n. Trigger an explicit generation here.
9563+
*/
9564+
BTF_TYPE_EMIT(struct inet_timewait_sock);
9565+
BTF_TYPE_EMIT(struct tcp_timewait_sock);
9566+
95619567
#ifdef CONFIG_INET
95629568
if (sk && sk->sk_prot == &tcp_prot && sk->sk_state == TCP_TIME_WAIT)
95639569
return (unsigned long)sk;

0 commit comments

Comments
 (0)