mirror of
				https://github.com/torvalds/linux.git
				synced 2025-10-31 16:48:26 +02:00 
			
		
		
		
	bpf: Gate dynptr API behind CAP_BPF
This has been enabled for unprivileged programs for only one kernel release, hence the expected annoyances due to this move are low. Users using ringbuf can stick to non-dynptr APIs. The actual use cases dynptr is meant to serve may not make sense in unprivileged BPF programs. Hence, gate these helpers behind CAP_BPF and limit use to privileged BPF programs. Fixes:263ae152e9("bpf: Add bpf_dynptr_from_mem for local dynptrs") Fixes:bc34dee65a("bpf: Dynptr support for ring buffers") Fixes:13bbbfbea7("bpf: Add bpf_dynptr_read and bpf_dynptr_write") Fixes:34d4ef5775("bpf: Add dynptr data slices") Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com> Link: https://lore.kernel.org/r/20220921143550.30247-1-memxor@gmail.com Acked-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
		
							parent
							
								
									d703256f53
								
							
						
					
					
						commit
						8addbfc7b3
					
				
					 1 changed files with 14 additions and 14 deletions
				
			
		|  | @ -1627,26 +1627,12 @@ bpf_base_func_proto(enum bpf_func_id func_id) | ||||||
| 		return &bpf_ringbuf_discard_proto; | 		return &bpf_ringbuf_discard_proto; | ||||||
| 	case BPF_FUNC_ringbuf_query: | 	case BPF_FUNC_ringbuf_query: | ||||||
| 		return &bpf_ringbuf_query_proto; | 		return &bpf_ringbuf_query_proto; | ||||||
| 	case BPF_FUNC_ringbuf_reserve_dynptr: |  | ||||||
| 		return &bpf_ringbuf_reserve_dynptr_proto; |  | ||||||
| 	case BPF_FUNC_ringbuf_submit_dynptr: |  | ||||||
| 		return &bpf_ringbuf_submit_dynptr_proto; |  | ||||||
| 	case BPF_FUNC_ringbuf_discard_dynptr: |  | ||||||
| 		return &bpf_ringbuf_discard_dynptr_proto; |  | ||||||
| 	case BPF_FUNC_for_each_map_elem: | 	case BPF_FUNC_for_each_map_elem: | ||||||
| 		return &bpf_for_each_map_elem_proto; | 		return &bpf_for_each_map_elem_proto; | ||||||
| 	case BPF_FUNC_loop: | 	case BPF_FUNC_loop: | ||||||
| 		return &bpf_loop_proto; | 		return &bpf_loop_proto; | ||||||
| 	case BPF_FUNC_strncmp: | 	case BPF_FUNC_strncmp: | ||||||
| 		return &bpf_strncmp_proto; | 		return &bpf_strncmp_proto; | ||||||
| 	case BPF_FUNC_dynptr_from_mem: |  | ||||||
| 		return &bpf_dynptr_from_mem_proto; |  | ||||||
| 	case BPF_FUNC_dynptr_read: |  | ||||||
| 		return &bpf_dynptr_read_proto; |  | ||||||
| 	case BPF_FUNC_dynptr_write: |  | ||||||
| 		return &bpf_dynptr_write_proto; |  | ||||||
| 	case BPF_FUNC_dynptr_data: |  | ||||||
| 		return &bpf_dynptr_data_proto; |  | ||||||
| 	default: | 	default: | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
|  | @ -1675,6 +1661,20 @@ bpf_base_func_proto(enum bpf_func_id func_id) | ||||||
| 		return &bpf_timer_cancel_proto; | 		return &bpf_timer_cancel_proto; | ||||||
| 	case BPF_FUNC_kptr_xchg: | 	case BPF_FUNC_kptr_xchg: | ||||||
| 		return &bpf_kptr_xchg_proto; | 		return &bpf_kptr_xchg_proto; | ||||||
|  | 	case BPF_FUNC_ringbuf_reserve_dynptr: | ||||||
|  | 		return &bpf_ringbuf_reserve_dynptr_proto; | ||||||
|  | 	case BPF_FUNC_ringbuf_submit_dynptr: | ||||||
|  | 		return &bpf_ringbuf_submit_dynptr_proto; | ||||||
|  | 	case BPF_FUNC_ringbuf_discard_dynptr: | ||||||
|  | 		return &bpf_ringbuf_discard_dynptr_proto; | ||||||
|  | 	case BPF_FUNC_dynptr_from_mem: | ||||||
|  | 		return &bpf_dynptr_from_mem_proto; | ||||||
|  | 	case BPF_FUNC_dynptr_read: | ||||||
|  | 		return &bpf_dynptr_read_proto; | ||||||
|  | 	case BPF_FUNC_dynptr_write: | ||||||
|  | 		return &bpf_dynptr_write_proto; | ||||||
|  | 	case BPF_FUNC_dynptr_data: | ||||||
|  | 		return &bpf_dynptr_data_proto; | ||||||
| 	default: | 	default: | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Kumar Kartikeya Dwivedi
						Kumar Kartikeya Dwivedi