Merge tag 'v4.9.218' into khadas-vims-4.9.y
authorNick Xie <nick@khadas.com>
Wed, 27 May 2020 10:04:52 +0000 (18:04 +0800)
committerNick Xie <nick@khadas.com>
Wed, 27 May 2020 10:04:52 +0000 (18:04 +0800)
This is the 4.9.218 stable release

21 files changed:
1  2 
Makefile
arch/arm64/include/asm/alternative.h
arch/arm64/kernel/smp.c
arch/x86/kvm/vmx.c
arch/x86/mm/fault.c
drivers/rtc/Kconfig
drivers/usb/core/quirks.c
drivers/usb/host/xhci-plat.c
drivers/usb/serial/option.c
fs/inode.c
include/linux/fs.h
include/linux/vmalloc.h
kernel/bpf/syscall.c
mm/slub.c
mm/vmalloc.c
net/ipv4/route.c
net/ipv6/ip6_vti.c
net/xfrm/xfrm_policy.c
net/xfrm/xfrm_user.c
scripts/dtc/dtc-lexer.l
scripts/dtc/dtc-lexer.lex.c_shipped

diff --cc Makefile
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc fs/inode.c
Simple merge
Simple merge
Simple merge
index 85ea5983d8751a1116990c38381a29b726a04d07,e10314223cbfecc11fb8de20230e3cdfe48c0035..60daeabede5d001c2b22e01c9fd327b849e8cefa
@@@ -882,96 -794,15 +882,96 @@@ static int bpf_obj_pin(const union bpf_
  
  static int bpf_obj_get(const union bpf_attr *attr)
  {
 -      if (CHECK_ATTR(BPF_OBJ) || attr->bpf_fd != 0)
 +      if (CHECK_ATTR(BPF_OBJ) || attr->bpf_fd != 0 ||
 +          attr->file_flags & ~BPF_OBJ_FLAG_MASK)
                return -EINVAL;
  
 -      return bpf_obj_get_user(u64_to_ptr(attr->pathname));
 +      return bpf_obj_get_user(u64_to_ptr(attr->pathname),
 +                              attr->file_flags);
  }
  
 +#ifdef CONFIG_CGROUP_BPF
 +
 +#define BPF_PROG_ATTACH_LAST_FIELD attach_flags
 +
 +static int bpf_prog_attach(const union bpf_attr *attr)
 +{
 +      struct bpf_prog *prog;
 +      struct cgroup *cgrp;
 +      int ret;
 +
 +      if (!capable(CAP_NET_ADMIN))
 +              return -EPERM;
 +
 +      if (CHECK_ATTR(BPF_PROG_ATTACH))
 +              return -EINVAL;
 +
 +      if (attr->attach_flags & ~BPF_F_ALLOW_OVERRIDE)
 +              return -EINVAL;
 +
 +      switch (attr->attach_type) {
 +      case BPF_CGROUP_INET_INGRESS:
 +      case BPF_CGROUP_INET_EGRESS:
 +              prog = bpf_prog_get_type(attr->attach_bpf_fd,
 +                                       BPF_PROG_TYPE_CGROUP_SKB);
 +              if (IS_ERR(prog))
 +                      return PTR_ERR(prog);
 +
 +              cgrp = cgroup_get_from_fd(attr->target_fd);
 +              if (IS_ERR(cgrp)) {
 +                      bpf_prog_put(prog);
 +                      return PTR_ERR(cgrp);
 +              }
 +
 +              ret = cgroup_bpf_update(cgrp, prog, attr->attach_type,
 +                                      attr->attach_flags & BPF_F_ALLOW_OVERRIDE);
 +              if (ret)
 +                      bpf_prog_put(prog);
 +              cgroup_put(cgrp);
 +              break;
 +
 +      default:
 +              return -EINVAL;
 +      }
 +
 +      return ret;
 +}
 +
 +#define BPF_PROG_DETACH_LAST_FIELD attach_type
 +
 +static int bpf_prog_detach(const union bpf_attr *attr)
 +{
 +      struct cgroup *cgrp;
 +      int ret;
 +
 +      if (!capable(CAP_NET_ADMIN))
 +              return -EPERM;
 +
 +      if (CHECK_ATTR(BPF_PROG_DETACH))
 +              return -EINVAL;
 +
 +      switch (attr->attach_type) {
 +      case BPF_CGROUP_INET_INGRESS:
 +      case BPF_CGROUP_INET_EGRESS:
 +              cgrp = cgroup_get_from_fd(attr->target_fd);
 +              if (IS_ERR(cgrp))
 +                      return PTR_ERR(cgrp);
 +
 +              ret = cgroup_bpf_update(cgrp, NULL, attr->attach_type, false);
 +              cgroup_put(cgrp);
 +              break;
 +
 +      default:
 +              return -EINVAL;
 +      }
 +
 +      return ret;
 +}
 +#endif /* CONFIG_CGROUP_BPF */
 +
  SYSCALL_DEFINE3(bpf, int, cmd, union bpf_attr __user *, uattr, unsigned int, size)
  {
-       union bpf_attr attr = {};
+       union bpf_attr attr;
        int err;
  
        if (sysctl_unprivileged_bpf_disabled && !capable(CAP_SYS_ADMIN))
diff --cc mm/slub.c
Simple merge
diff --cc mm/vmalloc.c
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge