mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 08:38:45 +02:00 
			
		
		
		
	bpf: move arg:ctx type enforcement check inside the main logic loop
Now that bpf and bpf-next trees converged and we don't run the risk of merge conflicts, move btf_validate_prog_ctx_type() into its most logical place inside the main logic loop. Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Link: https://lore.kernel.org/r/20240125205510.3642094-4-andrii@kernel.org Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
		
							parent
							
								
									9eea8fafe3
								
							
						
					
					
						commit
						add9c58cd4
					
				
					 1 changed files with 4 additions and 17 deletions
				
			
		|  | @ -7112,6 +7112,10 @@ int btf_prepare_func_args(struct bpf_verifier_env *env, int subprog) | |||
| 				bpf_log(log, "arg#%d has invalid combination of tags\n", i); | ||||
| 				return -EINVAL; | ||||
| 			} | ||||
| 			if ((tags & ARG_TAG_CTX) && | ||||
| 			    btf_validate_prog_ctx_type(log, btf, t, i, prog_type, | ||||
| 						       prog->expected_attach_type)) | ||||
| 				return -EINVAL; | ||||
| 			sub->args[i].arg_type = ARG_PTR_TO_CTX; | ||||
| 			continue; | ||||
| 		} | ||||
|  | @ -7156,23 +7160,6 @@ int btf_prepare_func_args(struct bpf_verifier_env *env, int subprog) | |||
| 		return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
| 	for (i = 0; i < nargs; i++) { | ||||
| 		const char *tag; | ||||
| 
 | ||||
| 		if (sub->args[i].arg_type != ARG_PTR_TO_CTX) | ||||
| 			continue; | ||||
| 
 | ||||
| 		/* check if arg has "arg:ctx" tag */ | ||||
| 		t = btf_type_by_id(btf, args[i].type); | ||||
| 		tag = btf_find_decl_tag_value(btf, fn_t, i, "arg:"); | ||||
| 		if (IS_ERR_OR_NULL(tag) || strcmp(tag, "ctx") != 0) | ||||
| 			continue; | ||||
| 
 | ||||
| 		if (btf_validate_prog_ctx_type(log, btf, t, i, prog_type, | ||||
| 					       prog->expected_attach_type)) | ||||
| 			return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
| 	sub->arg_cnt = nargs; | ||||
| 	sub->args_cached = true; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Andrii Nakryiko
						Andrii Nakryiko