1. 03 Oct, 2015 3 commits
    • Daniel Borkmann's avatar
      ipv6: fix exthdrs offload registration in out_rt path · dd35e5b8
      Daniel Borkmann authored
      [ Upstream commit e41b0bed ]
      
      We previously register IPPROTO_ROUTING offload under inet6_add_offload(),
      but in error path, we try to unregister it with inet_del_offload(). This
      doesn't seem correct, it should actually be inet6_del_offload(), also
      ipv6_exthdrs_offload_exit() from that commit seems rather incorrect (it
      also uses rthdr_offload twice), but it got removed entirely later on.
      
      Fixes: 3336288a ("ipv6: Switch to using new offload infrastructure.")
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      dd35e5b8
    • Daniel Borkmann's avatar
      sock, diag: fix panic in sock_diag_put_filterinfo · 4230591d
      Daniel Borkmann authored
      [ Upstream commit b382c086 ]
      
      diag socket's sock_diag_put_filterinfo() dumps classic BPF programs
      upon request to user space (ss -0 -b). However, native eBPF programs
      attached to sockets (SO_ATTACH_BPF) cannot be dumped with this method:
      
      Their orig_prog is always NULL. However, sock_diag_put_filterinfo()
      unconditionally tries to access its filter length resp. wants to copy
      the filter insns from there. Internal cBPF to eBPF transformations
      attached to sockets don't have this issue, as orig_prog state is kept.
      
      It's currently only used by packet sockets. If we would want to add
      native eBPF support in the future, this needs to be done through
      a different attribute than PACKET_DIAG_FILTER to not confuse possible
      user space disassemblers that work on diag data.
      
      Fixes: 89aa0758 ("net: sock: allow eBPF programs to be attached to sockets")
      Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Acked-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
      Acked-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4230591d
    • Mark Salter's avatar
      phylib: fix device deletion order in mdiobus_unregister() · 001fc2f5
      Mark Salter authored
      [ Upstream commit b6c6aedc ]
      
      commit 8b63ec18 ("phylib: Make PHYs children of their MDIO bus, not
      the bus' parent.") uncovered a problem in mdiobus_unregister() which
      leads to this warning when I reboot an APM Mustang (arm64) platform:
      
        WARNING: CPU: 7 PID: 4239 at fs/sysfs/group.c:224 sysfs_remove_group+0xa0/0xa4()
        sysfs group fffffe0000e07a10 not found for kobject 'xgene-mii-eth0:03'
        ...
        CPU: 7 PID: 4239 Comm: reboot Tainted: G            E   4.2.0-0.18.el7.test15.aarch64 #1
        Hardware name: AppliedMicro Mustang/Mustang, BIOS 1.1.0 Aug 26 2015
        Call Trace:
        [<fffffe000009739c>] dump_backtrace+0x0/0x170
        [<fffffe000009752c>] show_stack+0x20/0x2c
        [<fffffe00007436f0>] dump_stack+0x78/0x9c
        [<fffffe00000c2cb4>] warn_slowpath_common+0xa0/0xd8
        [<fffffe00000c2d60>] warn_slowpath_fmt+0x74/0x88
        [<fffffe0000293d3c>] sysfs_remove_group+0x9c/0xa4
        [<fffffe00004a8bac>] dpm_sysfs_remove+0x5c/0x70
        [<fffffe000049b388>] device_del+0x44/0x208
        [<fffffe000049b578>] device_unregister+0x2c/0x7c
        [<fffffe000050dc68>] mdiobus_unregister+0x48/0x94
        [<fffffe000052afd0>] xgene_enet_mdio_remove+0x28/0x44
        [<fffffe000052d3f0>] xgene_enet_remove+0xd0/0xd8
        [<fffffe000052d424>] xgene_enet_shutdown+0x2c/0x3c
        [<fffffe00004a204c>] platform_drv_shutdown+0x24/0x40
        [<fffffe000049d4f4>] device_shutdown+0xf0/0x1b4
        [<fffffe00000e31ec>] kernel_restart_prepare+0x40/0x4c
        [<fffffe00000e32f8>] kernel_restart+0x1c/0x80
        [<fffffe00000e3670>] SyS_reboot+0x17c/0x250
      
      The problem is that mdiobus_unregister() deletes the bus device before
      unregistering the phy devices on the bus. This wasn't a problem before
      because the phys were not children of the bus:
      
        /sys/devices/platform/APMC0D05:00/net/eth0/xgene-mii-eth0:03
        /sys/devices/platform/APMC0D05:00/net/eth0/xgene-mii-eth0
      
      But now that they are:
      
        /sys/devices/platform/APMC0D05:00/net/eth0/xgene-mii-eth0/xgene-mii-eth0:03
      
      when mdiobus_unregister deletes the bus device, the phy subdirs are
      removed from sysfs also. So when the phys are unregistered afterward,
      we get the warning. This patch changes the order so that phys are
      unregistered before the bus device is deleted.
      
      Fixes: 8b63ec18 ("phylib: Make PHYs children of their MDIO bus, not the bus' parent.")
      Signed-off-by: default avatarMark Salter <msalter@redhat.com>
      Reviewed-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Tested-by: default avatarMark Langsdorf <mlangsdo@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      001fc2f5
  2. 29 Sep, 2015 37 commits