diff options
Diffstat (limited to 'net/core/dev.c')
| -rw-r--r-- | net/core/dev.c | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index 84a0d9542fe9..1baab07820f6 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -8981,6 +8981,12 @@ static int bpf_xdp_link_update(struct bpf_link *link, struct bpf_prog *new_prog,  		goto out_unlock;  	}  	old_prog = link->prog; +	if (old_prog->type != new_prog->type || +	    old_prog->expected_attach_type != new_prog->expected_attach_type) { +		err = -EINVAL; +		goto out_unlock; +	} +  	if (old_prog == new_prog) {  		/* no-op, don't disturb drivers */  		bpf_prog_put(new_prog);  | 
