forked from mirrors/linux
		
	 fdb5c4531c
			
		
	
	
		fdb5c4531c
		
	
	
	
	
		
			
			If the kernel is compiled with CONFIG_CGROUP_BPF not enabled, it is not
possible to attach, detach or query IR BPF programs to /dev/lircN devices,
making them impossible to use. For embedded devices, it should be possible
to use IR decoding without cgroups or CONFIG_CGROUP_BPF enabled.
This change requires some refactoring, since bpf_prog_{attach,detach,query}
functions are now always compiled, but their code paths for cgroups need
moving out. Rather than a #ifdef CONFIG_CGROUP_BPF in kernel/bpf/syscall.c,
moving them to kernel/bpf/cgroup.c and kernel/bpf/sockmap.c does not
require #ifdefs since that is already conditionally compiled.
Fixes: f4364dcfc8 ("media: rc: introduce BPF_PROG_LIRC_MODE2")
Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
		
	
			
		
			
				
	
	
		
			30 lines
		
	
	
	
		
			698 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
	
		
			698 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _BPF_LIRC_H
 | |
| #define _BPF_LIRC_H
 | |
| 
 | |
| #include <uapi/linux/bpf.h>
 | |
| 
 | |
| #ifdef CONFIG_BPF_LIRC_MODE2
 | |
| int lirc_prog_attach(const union bpf_attr *attr, struct bpf_prog *prog);
 | |
| int lirc_prog_detach(const union bpf_attr *attr);
 | |
| int lirc_prog_query(const union bpf_attr *attr, union bpf_attr __user *uattr);
 | |
| #else
 | |
| static inline int lirc_prog_attach(const union bpf_attr *attr,
 | |
| 				   struct bpf_prog *prog)
 | |
| {
 | |
| 	return -EINVAL;
 | |
| }
 | |
| 
 | |
| static inline int lirc_prog_detach(const union bpf_attr *attr)
 | |
| {
 | |
| 	return -EINVAL;
 | |
| }
 | |
| 
 | |
| static inline int lirc_prog_query(const union bpf_attr *attr,
 | |
| 				  union bpf_attr __user *uattr)
 | |
| {
 | |
| 	return -EINVAL;
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif /* _BPF_LIRC_H */
 |