Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a9537c93 authored by David S. Miller's avatar David S. Miller
Browse files


Merging net into net-next to help the bpf folks avoid
some really ugly merge conflicts.

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents e9350d44 25eb0ea7
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -557,6 +557,14 @@ A: Although LLVM IR generation and optimization try to stay architecture
       pulls in some header files containing file scope host assembly codes.
     - You can add "-fno-jump-tables" to work around the switch table issue.

   Otherwise, you can use bpf target.
   Otherwise, you can use bpf target. Additionally, you _must_ use bpf target
   when:

     - Your program uses data structures with pointer or long / unsigned long
       types that interface with BPF helpers or context data structures. Access
       into these structures is verified by the BPF verifier and may result
       in verification failures if the native architecture is not aligned with
       the BPF architecture, e.g. 64-bit. An example of this is
       BPF_PROG_TYPE_SK_MSG require '-target bpf'

Happy BPF hacking!
+11 −1
Original line number Diff line number Diff line
@@ -1027,7 +1027,17 @@ xadd: if (is_imm8(insn->off))
			break;

		case BPF_JMP | BPF_JA:
			if (insn->off == -1)
				/* -1 jmp instructions will always jump
				 * backwards two bytes. Explicitly handling
				 * this case avoids wasting too many passes
				 * when there are long sequences of replaced
				 * dead code.
				 */
				jmp_offset = -2;
			else
				jmp_offset = addrs[i + insn->off] - addrs[i];

			if (!jmp_offset)
				/* optimize out nop jumps */
				break;
+10 −1
Original line number Diff line number Diff line
@@ -535,8 +535,17 @@ static int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id,

	/* Grab the bits from PHYIR1, and put them in the upper half */
	phy_reg = mdiobus_read(bus, addr, MII_PHYSID1);
	if (phy_reg < 0)
	if (phy_reg < 0) {
		/* if there is no device, return without an error so scanning
		 * the bus works properly
		 */
		if (phy_reg == -EIO || phy_reg == -ENODEV) {
			*phy_id = 0xffffffff;
			return 0;
		}

		return -EIO;
	}

	*phy_id = (phy_reg & 0xffff) << 16;

+3 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ struct bpf_map_ops {
	void (*map_release)(struct bpf_map *map, struct file *map_file);
	void (*map_free)(struct bpf_map *map);
	int (*map_get_next_key)(struct bpf_map *map, void *key, void *next_key);
	void (*map_release_uref)(struct bpf_map *map);

	/* funcs callable from userspace and from eBPF programs */
	void *(*map_lookup_elem)(struct bpf_map *map, void *key);
@@ -365,6 +366,7 @@ int bpf_prog_array_copy(struct bpf_prog_array __rcu *old_array,
		struct bpf_prog **_prog, *__prog;	\
		struct bpf_prog_array *_array;		\
		u32 _ret = 1;				\
		preempt_disable();			\
		rcu_read_lock();			\
		_array = rcu_dereference(array);	\
		if (unlikely(check_non_null && !_array))\
@@ -376,6 +378,7 @@ int bpf_prog_array_copy(struct bpf_prog_array __rcu *old_array,
		}					\
_out:							\
		rcu_read_unlock();			\
		preempt_enable_no_resched();		\
		_ret;					\
	 })

@@ -448,7 +451,6 @@ int bpf_stackmap_copy(struct bpf_map *map, void *key, void *value);
int bpf_fd_array_map_update_elem(struct bpf_map *map, struct file *map_file,
				 void *key, void *value, u64 map_flags);
int bpf_fd_array_map_lookup_elem(struct bpf_map *map, void *key, u32 *value);
void bpf_fd_array_map_clear(struct bpf_map *map);
int bpf_fd_htab_map_update_elem(struct bpf_map *map, struct file *map_file,
				void *key, void *value, u64 map_flags);
int bpf_fd_htab_map_lookup_elem(struct bpf_map *map, void *key, u32 *value);
+2 −1
Original line number Diff line number Diff line
@@ -526,7 +526,7 @@ static u32 prog_fd_array_sys_lookup_elem(void *ptr)
}

/* decrement refcnt of all bpf_progs that are stored in this map */
void bpf_fd_array_map_clear(struct bpf_map *map)
static void bpf_fd_array_map_clear(struct bpf_map *map)
{
	struct bpf_array *array = container_of(map, struct bpf_array, map);
	int i;
@@ -545,6 +545,7 @@ const struct bpf_map_ops prog_array_map_ops = {
	.map_fd_get_ptr = prog_fd_array_get_ptr,
	.map_fd_put_ptr = prog_fd_array_put_ptr,
	.map_fd_sys_lookup_elem = prog_fd_array_sys_lookup_elem,
	.map_release_uref = bpf_fd_array_map_clear,
};

static struct bpf_event_entry *bpf_event_entry_gen(struct file *perf_file,
Loading