Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 1 Apr 2020 00:29:33 +0000 (17:29 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 1 Apr 2020 00:29:33 +0000 (17:29 -0700)
Pull networking updates from David Miller:
 "Highlights:

   1) Fix the iwlwifi regression, from Johannes Berg.

   2) Support BSS coloring and 802.11 encapsulation offloading in
      hardware, from John Crispin.

   3) Fix some potential Spectre issues in qtnfmac, from Sergey
      Matyukevich.

   4) Add TTL decrement action to openvswitch, from Matteo Croce.

   5) Allow paralleization through flow_action setup by not taking the
      RTNL mutex, from Vlad Buslov.

   6) A lot of zero-length array to flexible-array conversions, from
      Gustavo A. R. Silva.

   7) Align XDP statistics names across several drivers for consistency,
      from Lorenzo Bianconi.

   8) Add various pieces of infrastructure for offloading conntrack, and
      make use of it in mlx5 driver, from Paul Blakey.

   9) Allow using listening sockets in BPF sockmap, from Jakub Sitnicki.

  10) Lots of parallelization improvements during configuration changes
      in mlxsw driver, from Ido Schimmel.

  11) Add support to devlink for generic packet traps, which report
      packets dropped during ACL processing. And use them in mlxsw
      driver. From Jiri Pirko.

  12) Support bcmgenet on ACPI, from Jeremy Linton.

  13) Make BPF compatible with RT, from Thomas Gleixnet, Alexei
      Starovoitov, and your's truly.

  14) Support XDP meta-data in virtio_net, from Yuya Kusakabe.

  15) Fix sysfs permissions when network devices change namespaces, from
      Christian Brauner.

  16) Add a flags element to ethtool_ops so that drivers can more simply
      indicate which coalescing parameters they actually support, and
      therefore the generic layer can validate the user's ethtool
      request. Use this in all drivers, from Jakub Kicinski.

  17) Offload FIFO qdisc in mlxsw, from Petr Machata.

  18) Support UDP sockets in sockmap, from Lorenz Bauer.

  19) Fix stretch ACK bugs in several TCP congestion control modules,
      from Pengcheng Yang.

  20) Support virtual functiosn in octeontx2 driver, from Tomasz
      Duszynski.

  21) Add region operations for devlink and use it in ice driver to dump
      NVM contents, from Jacob Keller.

  22) Add support for hw offload of MACSEC, from Antoine Tenart.

  23) Add support for BPF programs that can be attached to LSM hooks,
      from KP Singh.

  24) Support for multiple paths, path managers, and counters in MPTCP.
      From Peter Krystad, Paolo Abeni, Florian Westphal, Davide Caratti,
      and others.

  25) More progress on adding the netlink interface to ethtool, from
      Michal Kubecek"

* git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net-next: (2121 commits)
  net: ipv6: rpl_iptunnel: Fix potential memory leak in rpl_do_srh_inline
  cxgb4/chcr: nic-tls stats in ethtool
  net: dsa: fix oops while probing Marvell DSA switches
  net/bpfilter: remove superfluous testing message
  net: macb: Fix handling of fixed-link node
  net: dsa: ksz: Select KSZ protocol tag
  netdevsim: dev: Fix memory leak in nsim_dev_take_snapshot_write
  net: stmmac: add EHL 2.5Gbps PCI info and PCI ID
  net: stmmac: add EHL PSE0 & PSE1 1Gbps PCI info and PCI ID
  net: stmmac: create dwmac-intel.c to contain all Intel platform
  net: dsa: bcm_sf2: Support specifying VLAN tag egress rule
  net: dsa: bcm_sf2: Add support for matching VLAN TCI
  net: dsa: bcm_sf2: Move writing of CFP_DATA(5) into slicing functions
  net: dsa: bcm_sf2: Check earlier for FLOW_EXT and FLOW_MAC_EXT
  net: dsa: bcm_sf2: Disable learning for ASP port
  net: dsa: b53: Deny enslaving port 7 for 7278 into a bridge
  net: dsa: b53: Prevent tagged VLAN on port 7 for 7278
  net: dsa: b53: Restore VLAN entries upon (re)configuration
  net: dsa: bcm_sf2: Fix overflow checks
  hv_netvsc: Remove unnecessary round_up for recv_completion_cnt
  ...

16 files changed:
1  2 
MAINTAINERS
arch/arm64/configs/defconfig
arch/x86/mm/init_32.c
drivers/base/core.c
drivers/net/ethernet/intel/e1000e/netdev.c
drivers/net/wireless/ath/ath10k/core.c
drivers/net/wireless/intel/ipw2x00/ipw2100.c
drivers/net/wireless/intersil/orinoco/orinoco_usb.c
drivers/staging/qlge/qlge_ethtool.c
include/asm-generic/vmlinux.lds.h
include/linux/limits.h
include/linux/lsm_hooks.h
include/net/drop_monitor.h
init/Kconfig
kernel/events/core.c
kernel/seccomp.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
   *     code execution in kernel space should be permitted.
   *
   *     @what: kernel feature being accessed
 + *
 + * Security hooks for perf events
 + *
 + * @perf_event_open:
 + *    Check whether the @type of perf_event_open syscall is allowed.
 + * @perf_event_alloc:
 + *    Allocate and save perf_event security info.
 + * @perf_event_free:
 + *    Release (free) perf_event security info.
 + * @perf_event_read:
 + *    Read perf_event security info if allowed.
 + * @perf_event_write:
 + *    Write perf_event security info if allowed.
   */
  union security_list_options {
-       int (*binder_set_context_mgr)(struct task_struct *mgr);
-       int (*binder_transaction)(struct task_struct *from,
-                                       struct task_struct *to);
-       int (*binder_transfer_binder)(struct task_struct *from,
-                                       struct task_struct *to);
-       int (*binder_transfer_file)(struct task_struct *from,
-                                       struct task_struct *to,
-                                       struct file *file);
-       int (*ptrace_access_check)(struct task_struct *child,
-                                       unsigned int mode);
-       int (*ptrace_traceme)(struct task_struct *parent);
-       int (*capget)(struct task_struct *target, kernel_cap_t *effective,
-                       kernel_cap_t *inheritable, kernel_cap_t *permitted);
-       int (*capset)(struct cred *new, const struct cred *old,
-                       const kernel_cap_t *effective,
-                       const kernel_cap_t *inheritable,
-                       const kernel_cap_t *permitted);
-       int (*capable)(const struct cred *cred,
-                       struct user_namespace *ns,
-                       int cap,
-                       unsigned int opts);
-       int (*quotactl)(int cmds, int type, int id, struct super_block *sb);
-       int (*quota_on)(struct dentry *dentry);
-       int (*syslog)(int type);
-       int (*settime)(const struct timespec64 *ts, const struct timezone *tz);
-       int (*vm_enough_memory)(struct mm_struct *mm, long pages);
-       int (*bprm_set_creds)(struct linux_binprm *bprm);
-       int (*bprm_check_security)(struct linux_binprm *bprm);
-       void (*bprm_committing_creds)(struct linux_binprm *bprm);
-       void (*bprm_committed_creds)(struct linux_binprm *bprm);
-       int (*fs_context_dup)(struct fs_context *fc, struct fs_context *src_sc);
-       int (*fs_context_parse_param)(struct fs_context *fc, struct fs_parameter *param);
-       int (*sb_alloc_security)(struct super_block *sb);
-       void (*sb_free_security)(struct super_block *sb);
-       void (*sb_free_mnt_opts)(void *mnt_opts);
-       int (*sb_eat_lsm_opts)(char *orig, void **mnt_opts);
-       int (*sb_remount)(struct super_block *sb, void *mnt_opts);
-       int (*sb_kern_mount)(struct super_block *sb);
-       int (*sb_show_options)(struct seq_file *m, struct super_block *sb);
-       int (*sb_statfs)(struct dentry *dentry);
-       int (*sb_mount)(const char *dev_name, const struct path *path,
-                       const char *type, unsigned long flags, void *data);
-       int (*sb_umount)(struct vfsmount *mnt, int flags);
-       int (*sb_pivotroot)(const struct path *old_path, const struct path *new_path);
-       int (*sb_set_mnt_opts)(struct super_block *sb,
-                               void *mnt_opts,
-                               unsigned long kern_flags,
-                               unsigned long *set_kern_flags);
-       int (*sb_clone_mnt_opts)(const struct super_block *oldsb,
-                                       struct super_block *newsb,
-                                       unsigned long kern_flags,
-                                       unsigned long *set_kern_flags);
-       int (*sb_add_mnt_opt)(const char *option, const char *val, int len,
-                             void **mnt_opts);
-       int (*move_mount)(const struct path *from_path, const struct path *to_path);
-       int (*dentry_init_security)(struct dentry *dentry, int mode,
-                                       const struct qstr *name, void **ctx,
-                                       u32 *ctxlen);
-       int (*dentry_create_files_as)(struct dentry *dentry, int mode,
-                                       struct qstr *name,
-                                       const struct cred *old,
-                                       struct cred *new);
- #ifdef CONFIG_SECURITY_PATH
-       int (*path_unlink)(const struct path *dir, struct dentry *dentry);
-       int (*path_mkdir)(const struct path *dir, struct dentry *dentry,
-                               umode_t mode);
-       int (*path_rmdir)(const struct path *dir, struct dentry *dentry);
-       int (*path_mknod)(const struct path *dir, struct dentry *dentry,
-                               umode_t mode, unsigned int dev);
-       int (*path_truncate)(const struct path *path);
-       int (*path_symlink)(const struct path *dir, struct dentry *dentry,
-                               const char *old_name);
-       int (*path_link)(struct dentry *old_dentry, const struct path *new_dir,
-                               struct dentry *new_dentry);
-       int (*path_rename)(const struct path *old_dir, struct dentry *old_dentry,
-                               const struct path *new_dir,
-                               struct dentry *new_dentry);
-       int (*path_chmod)(const struct path *path, umode_t mode);
-       int (*path_chown)(const struct path *path, kuid_t uid, kgid_t gid);
-       int (*path_chroot)(const struct path *path);
- #endif
-       /* Needed for inode based security check */
-       int (*path_notify)(const struct path *path, u64 mask,
-                               unsigned int obj_type);
-       int (*inode_alloc_security)(struct inode *inode);
-       void (*inode_free_security)(struct inode *inode);
-       int (*inode_init_security)(struct inode *inode, struct inode *dir,
-                                       const struct qstr *qstr,
-                                       const char **name, void **value,
-                                       size_t *len);
-       int (*inode_create)(struct inode *dir, struct dentry *dentry,
-                               umode_t mode);
-       int (*inode_link)(struct dentry *old_dentry, struct inode *dir,
-                               struct dentry *new_dentry);
-       int (*inode_unlink)(struct inode *dir, struct dentry *dentry);
-       int (*inode_symlink)(struct inode *dir, struct dentry *dentry,
-                               const char *old_name);
-       int (*inode_mkdir)(struct inode *dir, struct dentry *dentry,
-                               umode_t mode);
-       int (*inode_rmdir)(struct inode *dir, struct dentry *dentry);
-       int (*inode_mknod)(struct inode *dir, struct dentry *dentry,
-                               umode_t mode, dev_t dev);
-       int (*inode_rename)(struct inode *old_dir, struct dentry *old_dentry,
-                               struct inode *new_dir,
-                               struct dentry *new_dentry);
-       int (*inode_readlink)(struct dentry *dentry);
-       int (*inode_follow_link)(struct dentry *dentry, struct inode *inode,
-                                bool rcu);
-       int (*inode_permission)(struct inode *inode, int mask);
-       int (*inode_setattr)(struct dentry *dentry, struct iattr *attr);
-       int (*inode_getattr)(const struct path *path);
-       int (*inode_setxattr)(struct dentry *dentry, const char *name,
-                               const void *value, size_t size, int flags);
-       void (*inode_post_setxattr)(struct dentry *dentry, const char *name,
-                                       const void *value, size_t size,
-                                       int flags);
-       int (*inode_getxattr)(struct dentry *dentry, const char *name);
-       int (*inode_listxattr)(struct dentry *dentry);
-       int (*inode_removexattr)(struct dentry *dentry, const char *name);
-       int (*inode_need_killpriv)(struct dentry *dentry);
-       int (*inode_killpriv)(struct dentry *dentry);
-       int (*inode_getsecurity)(struct inode *inode, const char *name,
-                                       void **buffer, bool alloc);
-       int (*inode_setsecurity)(struct inode *inode, const char *name,
-                                       const void *value, size_t size,
-                                       int flags);
-       int (*inode_listsecurity)(struct inode *inode, char *buffer,
-                                       size_t buffer_size);
-       void (*inode_getsecid)(struct inode *inode, u32 *secid);
-       int (*inode_copy_up)(struct dentry *src, struct cred **new);
-       int (*inode_copy_up_xattr)(const char *name);
-       int (*kernfs_init_security)(struct kernfs_node *kn_dir,
-                                   struct kernfs_node *kn);
-       int (*file_permission)(struct file *file, int mask);
-       int (*file_alloc_security)(struct file *file);
-       void (*file_free_security)(struct file *file);
-       int (*file_ioctl)(struct file *file, unsigned int cmd,
-                               unsigned long arg);
-       int (*mmap_addr)(unsigned long addr);
-       int (*mmap_file)(struct file *file, unsigned long reqprot,
-                               unsigned long prot, unsigned long flags);
-       int (*file_mprotect)(struct vm_area_struct *vma, unsigned long reqprot,
-                               unsigned long prot);
-       int (*file_lock)(struct file *file, unsigned int cmd);
-       int (*file_fcntl)(struct file *file, unsigned int cmd,
-                               unsigned long arg);
-       void (*file_set_fowner)(struct file *file);
-       int (*file_send_sigiotask)(struct task_struct *tsk,
-                                       struct fown_struct *fown, int sig);
-       int (*file_receive)(struct file *file);
-       int (*file_open)(struct file *file);
-       int (*task_alloc)(struct task_struct *task, unsigned long clone_flags);
-       void (*task_free)(struct task_struct *task);
-       int (*cred_alloc_blank)(struct cred *cred, gfp_t gfp);
-       void (*cred_free)(struct cred *cred);
-       int (*cred_prepare)(struct cred *new, const struct cred *old,
-                               gfp_t gfp);
-       void (*cred_transfer)(struct cred *new, const struct cred *old);
-       void (*cred_getsecid)(const struct cred *c, u32 *secid);
-       int (*kernel_act_as)(struct cred *new, u32 secid);
-       int (*kernel_create_files_as)(struct cred *new, struct inode *inode);
-       int (*kernel_module_request)(char *kmod_name);
-       int (*kernel_load_data)(enum kernel_load_data_id id);
-       int (*kernel_read_file)(struct file *file, enum kernel_read_file_id id);
-       int (*kernel_post_read_file)(struct file *file, char *buf, loff_t size,
-                                    enum kernel_read_file_id id);
-       int (*task_fix_setuid)(struct cred *new, const struct cred *old,
-                               int flags);
-       int (*task_setpgid)(struct task_struct *p, pid_t pgid);
-       int (*task_getpgid)(struct task_struct *p);
-       int (*task_getsid)(struct task_struct *p);
-       void (*task_getsecid)(struct task_struct *p, u32 *secid);
-       int (*task_setnice)(struct task_struct *p, int nice);
-       int (*task_setioprio)(struct task_struct *p, int ioprio);
-       int (*task_getioprio)(struct task_struct *p);
-       int (*task_prlimit)(const struct cred *cred, const struct cred *tcred,
-                           unsigned int flags);
-       int (*task_setrlimit)(struct task_struct *p, unsigned int resource,
-                               struct rlimit *new_rlim);
-       int (*task_setscheduler)(struct task_struct *p);
-       int (*task_getscheduler)(struct task_struct *p);
-       int (*task_movememory)(struct task_struct *p);
-       int (*task_kill)(struct task_struct *p, struct kernel_siginfo *info,
-                               int sig, const struct cred *cred);
-       int (*task_prctl)(int option, unsigned long arg2, unsigned long arg3,
-                               unsigned long arg4, unsigned long arg5);
-       void (*task_to_inode)(struct task_struct *p, struct inode *inode);
-       int (*ipc_permission)(struct kern_ipc_perm *ipcp, short flag);
-       void (*ipc_getsecid)(struct kern_ipc_perm *ipcp, u32 *secid);
-       int (*msg_msg_alloc_security)(struct msg_msg *msg);
-       void (*msg_msg_free_security)(struct msg_msg *msg);
-       int (*msg_queue_alloc_security)(struct kern_ipc_perm *perm);
-       void (*msg_queue_free_security)(struct kern_ipc_perm *perm);
-       int (*msg_queue_associate)(struct kern_ipc_perm *perm, int msqflg);
-       int (*msg_queue_msgctl)(struct kern_ipc_perm *perm, int cmd);
-       int (*msg_queue_msgsnd)(struct kern_ipc_perm *perm, struct msg_msg *msg,
-                               int msqflg);
-       int (*msg_queue_msgrcv)(struct kern_ipc_perm *perm, struct msg_msg *msg,
-                               struct task_struct *target, long type,
-                               int mode);
-       int (*shm_alloc_security)(struct kern_ipc_perm *perm);
-       void (*shm_free_security)(struct kern_ipc_perm *perm);
-       int (*shm_associate)(struct kern_ipc_perm *perm, int shmflg);
-       int (*shm_shmctl)(struct kern_ipc_perm *perm, int cmd);
-       int (*shm_shmat)(struct kern_ipc_perm *perm, char __user *shmaddr,
-                               int shmflg);
-       int (*sem_alloc_security)(struct kern_ipc_perm *perm);
-       void (*sem_free_security)(struct kern_ipc_perm *perm);
-       int (*sem_associate)(struct kern_ipc_perm *perm, int semflg);
-       int (*sem_semctl)(struct kern_ipc_perm *perm, int cmd);
-       int (*sem_semop)(struct kern_ipc_perm *perm, struct sembuf *sops,
-                               unsigned nsops, int alter);
-       int (*netlink_send)(struct sock *sk, struct sk_buff *skb);
-       void (*d_instantiate)(struct dentry *dentry, struct inode *inode);
-       int (*getprocattr)(struct task_struct *p, char *name, char **value);
-       int (*setprocattr)(const char *name, void *value, size_t size);
-       int (*ismaclabel)(const char *name);
-       int (*secid_to_secctx)(u32 secid, char **secdata, u32 *seclen);
-       int (*secctx_to_secid)(const char *secdata, u32 seclen, u32 *secid);
-       void (*release_secctx)(char *secdata, u32 seclen);
-       void (*inode_invalidate_secctx)(struct inode *inode);
-       int (*inode_notifysecctx)(struct inode *inode, void *ctx, u32 ctxlen);
-       int (*inode_setsecctx)(struct dentry *dentry, void *ctx, u32 ctxlen);
-       int (*inode_getsecctx)(struct inode *inode, void **ctx, u32 *ctxlen);
- #ifdef CONFIG_SECURITY_NETWORK
-       int (*unix_stream_connect)(struct sock *sock, struct sock *other,
-                                       struct sock *newsk);
-       int (*unix_may_send)(struct socket *sock, struct socket *other);
-       int (*socket_create)(int family, int type, int protocol, int kern);
-       int (*socket_post_create)(struct socket *sock, int family, int type,
-                                       int protocol, int kern);
-       int (*socket_socketpair)(struct socket *socka, struct socket *sockb);
-       int (*socket_bind)(struct socket *sock, struct sockaddr *address,
-                               int addrlen);
-       int (*socket_connect)(struct socket *sock, struct sockaddr *address,
-                               int addrlen);
-       int (*socket_listen)(struct socket *sock, int backlog);
-       int (*socket_accept)(struct socket *sock, struct socket *newsock);
-       int (*socket_sendmsg)(struct socket *sock, struct msghdr *msg,
-                               int size);
-       int (*socket_recvmsg)(struct socket *sock, struct msghdr *msg,
-                               int size, int flags);
-       int (*socket_getsockname)(struct socket *sock);
-       int (*socket_getpeername)(struct socket *sock);
-       int (*socket_getsockopt)(struct socket *sock, int level, int optname);
-       int (*socket_setsockopt)(struct socket *sock, int level, int optname);
-       int (*socket_shutdown)(struct socket *sock, int how);
-       int (*socket_sock_rcv_skb)(struct sock *sk, struct sk_buff *skb);
-       int (*socket_getpeersec_stream)(struct socket *sock,
-                                       char __user *optval,
-                                       int __user *optlen, unsigned len);
-       int (*socket_getpeersec_dgram)(struct socket *sock,
-                                       struct sk_buff *skb, u32 *secid);
-       int (*sk_alloc_security)(struct sock *sk, int family, gfp_t priority);
-       void (*sk_free_security)(struct sock *sk);
-       void (*sk_clone_security)(const struct sock *sk, struct sock *newsk);
-       void (*sk_getsecid)(struct sock *sk, u32 *secid);
-       void (*sock_graft)(struct sock *sk, struct socket *parent);
-       int (*inet_conn_request)(struct sock *sk, struct sk_buff *skb,
-                                       struct request_sock *req);
-       void (*inet_csk_clone)(struct sock *newsk,
-                               const struct request_sock *req);
-       void (*inet_conn_established)(struct sock *sk, struct sk_buff *skb);
-       int (*secmark_relabel_packet)(u32 secid);
-       void (*secmark_refcount_inc)(void);
-       void (*secmark_refcount_dec)(void);
-       void (*req_classify_flow)(const struct request_sock *req,
-                                       struct flowi *fl);
-       int (*tun_dev_alloc_security)(void **security);
-       void (*tun_dev_free_security)(void *security);
-       int (*tun_dev_create)(void);
-       int (*tun_dev_attach_queue)(void *security);
-       int (*tun_dev_attach)(struct sock *sk, void *security);
-       int (*tun_dev_open)(void *security);
-       int (*sctp_assoc_request)(struct sctp_endpoint *ep,
-                                 struct sk_buff *skb);
-       int (*sctp_bind_connect)(struct sock *sk, int optname,
-                                struct sockaddr *address, int addrlen);
-       void (*sctp_sk_clone)(struct sctp_endpoint *ep, struct sock *sk,
-                             struct sock *newsk);
- #endif        /* CONFIG_SECURITY_NETWORK */
- #ifdef CONFIG_SECURITY_INFINIBAND
-       int (*ib_pkey_access)(void *sec, u64 subnet_prefix, u16 pkey);
-       int (*ib_endport_manage_subnet)(void *sec, const char *dev_name,
-                                       u8 port_num);
-       int (*ib_alloc_security)(void **sec);
-       void (*ib_free_security)(void *sec);
- #endif        /* CONFIG_SECURITY_INFINIBAND */
- #ifdef CONFIG_SECURITY_NETWORK_XFRM
-       int (*xfrm_policy_alloc_security)(struct xfrm_sec_ctx **ctxp,
-                                         struct xfrm_user_sec_ctx *sec_ctx,
-                                               gfp_t gfp);
-       int (*xfrm_policy_clone_security)(struct xfrm_sec_ctx *old_ctx,
-                                               struct xfrm_sec_ctx **new_ctx);
-       void (*xfrm_policy_free_security)(struct xfrm_sec_ctx *ctx);
-       int (*xfrm_policy_delete_security)(struct xfrm_sec_ctx *ctx);
-       int (*xfrm_state_alloc)(struct xfrm_state *x,
-                               struct xfrm_user_sec_ctx *sec_ctx);
-       int (*xfrm_state_alloc_acquire)(struct xfrm_state *x,
-                                       struct xfrm_sec_ctx *polsec,
-                                       u32 secid);
-       void (*xfrm_state_free_security)(struct xfrm_state *x);
-       int (*xfrm_state_delete_security)(struct xfrm_state *x);
-       int (*xfrm_policy_lookup)(struct xfrm_sec_ctx *ctx, u32 fl_secid,
-                                       u8 dir);
-       int (*xfrm_state_pol_flow_match)(struct xfrm_state *x,
-                                               struct xfrm_policy *xp,
-                                               const struct flowi *fl);
-       int (*xfrm_decode_session)(struct sk_buff *skb, u32 *secid, int ckall);
- #endif        /* CONFIG_SECURITY_NETWORK_XFRM */
-       /* key management security hooks */
- #ifdef CONFIG_KEYS
-       int (*key_alloc)(struct key *key, const struct cred *cred,
-                               unsigned long flags);
-       void (*key_free)(struct key *key);
-       int (*key_permission)(key_ref_t key_ref, const struct cred *cred,
-                               unsigned perm);
-       int (*key_getsecurity)(struct key *key, char **_buffer);
- #endif        /* CONFIG_KEYS */
- #ifdef CONFIG_AUDIT
-       int (*audit_rule_init)(u32 field, u32 op, char *rulestr,
-                               void **lsmrule);
-       int (*audit_rule_known)(struct audit_krule *krule);
-       int (*audit_rule_match)(u32 secid, u32 field, u32 op, void *lsmrule);
-       void (*audit_rule_free)(void *lsmrule);
- #endif /* CONFIG_AUDIT */
- #ifdef CONFIG_BPF_SYSCALL
-       int (*bpf)(int cmd, union bpf_attr *attr,
-                                unsigned int size);
-       int (*bpf_map)(struct bpf_map *map, fmode_t fmode);
-       int (*bpf_prog)(struct bpf_prog *prog);
-       int (*bpf_map_alloc_security)(struct bpf_map *map);
-       void (*bpf_map_free_security)(struct bpf_map *map);
-       int (*bpf_prog_alloc_security)(struct bpf_prog_aux *aux);
-       void (*bpf_prog_free_security)(struct bpf_prog_aux *aux);
- #endif /* CONFIG_BPF_SYSCALL */
-       int (*locked_down)(enum lockdown_reason what);
- #ifdef CONFIG_PERF_EVENTS
-       int (*perf_event_open)(struct perf_event_attr *attr, int type);
-       int (*perf_event_alloc)(struct perf_event *event);
-       void (*perf_event_free)(struct perf_event *event);
-       int (*perf_event_read)(struct perf_event *event);
-       int (*perf_event_write)(struct perf_event *event);
- #endif
+       #define LSM_HOOK(RET, DEFAULT, NAME, ...) RET (*NAME)(__VA_ARGS__);
+       #include "lsm_hook_defs.h"
+       #undef LSM_HOOK
  };
  
  struct security_hook_heads {
@@@ -17,9 -19,10 +19,10 @@@ struct net_dm_hw_metadata 
        const char *trap_group_name;
        const char *trap_name;
        struct net_device *input_dev;
+       const struct flow_action_cookie *fa_cookie;
  };
  
 -#if IS_ENABLED(CONFIG_NET_DROP_MONITOR)
 +#if IS_REACHABLE(CONFIG_NET_DROP_MONITOR)
  void net_dm_hw_report(struct sk_buff *skb,
                      const struct net_dm_hw_metadata *hw_metadata);
  #else
diff --cc init/Kconfig
Simple merge
Simple merge
Simple merge