On Tue, Sep 16, 2014 at 1:54 PM, David Miller <davem@xxxxxxxxxxxxx> wrote: > > The cost of the compat layer must be considered and weighted > against this cast, which I think is really no big deal. > >> I think compat layer is a better option. > > It's overhead you'll have to support forever, I think you should > reconsider. > > All of the "ugly casting" will be hidden, or can be hidden, in the > syscall wrappers and/or interfaces in userspace. ahh, ok. I thought you're strongly against any type of casts. In such case I can get rid of 'union bpf_attr' as well and simply define a struct per command, then syscall will look like: sys_bpf(int cmd, void __user *attr, unsigned int size); and uapi/linux/bpf.h will have: struct bpf_prog_load_attr { /* for BPF_PROG_LOAD cmd */ __u32 prog_type; __u32 insn_cnt; __aligned_u64 insns; __aligned_u64 license; __u32 log_level; __u32 log_size; __aligned_u64 log_buf; }; and similar for other commands. no compat layer and type checking will be done by syscall wrappers. Ok? -- To unsubscribe from this list: send the line "unsubscribe linux-api" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html