1. 02 Sep, 2020 6 commits
    • Tetsuo Handa's avatar
      tipc: fix shutdown() of connectionless socket · 2a63866c
      Tetsuo Handa authored
      syzbot is reporting hung task at nbd_ioctl() [1], for there are two
      problems regarding TIPC's connectionless socket's shutdown() operation.
      
      ----------
      #include <fcntl.h>
      #include <sys/socket.h>
      #include <sys/ioctl.h>
      #include <linux/nbd.h>
      #include <unistd.h>
      
      int main(int argc, char *argv[])
      {
              const int fd = open("/dev/nbd0", 3);
              alarm(5);
              ioctl(fd, NBD_SET_SOCK, socket(PF_TIPC, SOCK_DGRAM, 0));
              ioctl(fd, NBD_DO_IT, 0); /* To be interrupted by SIGALRM. */
              return 0;
      }
      ----------
      
      One problem is that wait_for_completion() from flush_workqueue() from
      nbd_start_device_ioctl() from nbd_ioctl() cannot be completed when
      nbd_start_device_ioctl() received a signal at wait_event_interruptible(),
      for tipc_shutdown() from kernel_sock_shutdown(SHUT_RDWR) from
      nbd_mark_nsock_dead() from sock_shutdown() from nbd_start_device_ioctl()
      is failing to wake up a WQ thread sleeping at wait_woken() from
      tipc_wait_for_rcvmsg() from sock_recvmsg() from sock_xmit() from
      nbd_read_stat() from recv_work() scheduled by nbd_start_device() from
      nbd_start_device_ioctl(). Fix this problem by always invoking
      sk->sk_state_change() (like inet_shutdown() does) when tipc_shutdown() is
      called.
      
      The other problem is that tipc_wait_for_rcvmsg() cannot return when
      tipc_shutdown() is called, for tipc_shutdown() sets sk->sk_shutdown to
      SEND_SHUTDOWN (despite "how" is SHUT_RDWR) while tipc_wait_for_rcvmsg()
      needs sk->sk_shutdown set to RCV_SHUTDOWN or SHUTDOWN_MASK. Fix this
      problem by setting sk->sk_shutdown to SHUTDOWN_MASK (like inet_shutdown()
      does) when the socket is connectionless.
      
      [1] https://syzkaller.appspot.com/bug?id=3fe51d307c1f0a845485cf1798aa059d12bf18b2Reported-by: default avatarsyzbot <syzbot+e36f41d207137b5d12f7@syzkaller.appspotmail.com>
      Signed-off-by: default avatarTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2a63866c
    • Ido Schimmel's avatar
      ipv6: Fix sysctl max for fib_multipath_hash_policy · 05d44871
      Ido Schimmel authored
      Cited commit added the possible value of '2', but it cannot be set. Fix
      it by adjusting the maximum value to '2'. This is consistent with the
      corresponding IPv4 sysctl.
      
      Before:
      
      # sysctl -w net.ipv6.fib_multipath_hash_policy=2
      sysctl: setting key "net.ipv6.fib_multipath_hash_policy": Invalid argument
      net.ipv6.fib_multipath_hash_policy = 2
      # sysctl net.ipv6.fib_multipath_hash_policy
      net.ipv6.fib_multipath_hash_policy = 0
      
      After:
      
      # sysctl -w net.ipv6.fib_multipath_hash_policy=2
      net.ipv6.fib_multipath_hash_policy = 2
      # sysctl net.ipv6.fib_multipath_hash_policy
      net.ipv6.fib_multipath_hash_policy = 2
      
      Fixes: d8f74f09 ("ipv6: Support multipath hashing on inner IP pkts")
      Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
      Reviewed-by: default avatarStephen Suryaputra <ssuryaextr@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      05d44871
    • Xie He's avatar
      drivers/net/wan/hdlc: Change the default of hard_header_len to 0 · 2b7bcd96
      Xie He authored
      Change the default value of hard_header_len in hdlc.c from 16 to 0.
      
      Currently there are 6 HDLC protocol drivers, among them:
      
      hdlc_raw_eth, hdlc_cisco, hdlc_ppp, hdlc_x25 set hard_header_len when
      attaching the protocol, overriding the default. So this patch does not
      affect them.
      
      hdlc_raw and hdlc_fr don't set hard_header_len when attaching the
      protocol. So this patch will change the hard_header_len of the HDLC
      device for them from 16 to 0.
      
      This is the correct change because both hdlc_raw and hdlc_fr don't have
      header_ops, and the code in net/packet/af_packet.c expects the value of
      hard_header_len to be consistent with header_ops.
      
      In net/packet/af_packet.c, in the packet_snd function,
      for AF_PACKET/DGRAM sockets it would reserve a headroom of
      hard_header_len and call dev_hard_header to fill in that headroom,
      and for AF_PACKET/RAW sockets, it does not reserve the headroom and
      does not call dev_hard_header, but checks if the user has provided a
      header of length hard_header_len (in function dev_validate_header).
      
      Cc: Krzysztof Halasa <khc@pm.waw.pl>
      Cc: Martin Schiller <ms@dev.tdt.de>
      Signed-off-by: default avatarXie He <xie.he.0141@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2b7bcd96
    • Dan Carpenter's avatar
      net: gemini: Fix another missing clk_disable_unprepare() in probe · eb0f3bc4
      Dan Carpenter authored
      We recently added some calls to clk_disable_unprepare() but we missed
      the last error path if register_netdev() fails.
      
      I made a couple cleanups so we avoid mistakes like this in the future.
      First I reversed the "if (!ret)" condition and pulled the code in one
      indent level.  Also, the "port->netdev = NULL;" is not required because
      "port" isn't used again outside this function so I deleted that line.
      
      Fixes: 4d5ae32f ("net: ethernet: Add a driver for Gemini gigabit ethernet")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      eb0f3bc4
    • Denis Efremov's avatar
      net: bcmgenet: fix mask check in bcmgenet_validate_flow() · 1996cf46
      Denis Efremov authored
      VALIDATE_MASK(eth_mask->h_source) is checked twice in a row in
      bcmgenet_validate_flow(). Add VALIDATE_MASK(eth_mask->h_dest)
      instead.
      
      Fixes: 3e370952 ("net: bcmgenet: add support for ethtool rxnfc flows")
      Signed-off-by: default avatarDenis Efremov <efremov@linux.com>
      Acked-by: default avatarDoug Berger <opendmb@gmail.com>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1996cf46
    • Shyam Sundar S K's avatar
      amd-xgbe: Add support for new port mode · 7deedd9f
      Shyam Sundar S K authored
      Add support for a new port mode that is a backplane connection without
      support for auto negotiation.
      Signed-off-by: default avatarShyam Sundar S K <Shyam-sundar.S-k@amd.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7deedd9f
  2. 01 Sep, 2020 4 commits
  3. 31 Aug, 2020 6 commits
    • Grygorii Strashko's avatar
      net: ethernet: ti: am65-cpsw: fix rmii 100Mbit link mode · c2f89219
      Grygorii Strashko authored
      In RMII link mode it's required to set bit 15 IFCTL_A in MAC_SL MAC_CONTROL
      register to enable support for 100Mbit link speed.
      
      Fixes: 93a76530 ("net: ethernet: ti: introduce am65x/j721e gigabit eth subsystem driver")
      Signed-off-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c2f89219
    • Potnuri Bharat Teja's avatar
      cxgb4: fix thermal zone device registration · 6b6382a8
      Potnuri Bharat Teja authored
      When multiple adapters are present in the system, pci hot-removing second
      adapter leads to the following warning as both the adapters registered
      thermal zone device with same thermal zone name/type.
      Therefore, use unique thermal zone name during thermal zone device
      initialization. Also mark thermal zone dev NULL once unregistered.
      
      [  414.370143] ------------[ cut here ]------------
      [  414.370944] sysfs group 'power' not found for kobject 'hwmon0'
      [  414.371747] WARNING: CPU: 9 PID: 2661 at fs/sysfs/group.c:281
       sysfs_remove_group+0x76/0x80
      [  414.382550] CPU: 9 PID: 2661 Comm: bash Not tainted 5.8.0-rc6+ #33
      [  414.383593] Hardware name: Supermicro X10SRA-F/X10SRA-F, BIOS 2.0a 06/23/2016
      [  414.384669] RIP: 0010:sysfs_remove_group+0x76/0x80
      [  414.385738] Code: 48 89 df 5b 5d 41 5c e9 d8 b5 ff ff 48 89 df e8 60 b0 ff ff
       eb cb 49 8b 14 24 48 8b 75 00 48 c7 c7 90 ae 13 bb e8 6a 27 d0 ff <0f> 0b 5b 5d
       41 5c c3 0f 1f 00 0f 1f 44 00 00 48 85 f6 74 31 41 54
      [  414.388404] RSP: 0018:ffffa22bc080fcb0 EFLAGS: 00010286
      [  414.389638] RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
      [  414.390829] RDX: 0000000000000001 RSI: ffff8ee2de3e9510 RDI: ffff8ee2de3e9510
      [  414.392064] RBP: ffffffffbaef2ee0 R08: 0000000000000000 R09: 0000000000000000
      [  414.393224] R10: 0000000000000000 R11: 000000002b30006c R12: ffff8ee260720008
      [  414.394388] R13: ffff8ee25e0a40e8 R14: ffffa22bc080ff08 R15: ffff8ee2c3be5020
      [  414.395661] FS:  00007fd2a7171740(0000) GS:ffff8ee2de200000(0000)
       knlGS:0000000000000000
      [  414.396825] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  414.398011] CR2: 00007f178ffe5020 CR3: 000000084c5cc003 CR4: 00000000003606e0
      [  414.399172] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  414.400352] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [  414.401473] Call Trace:
      [  414.402685]  device_del+0x89/0x400
      [  414.403819]  device_unregister+0x16/0x60
      [  414.405024]  hwmon_device_unregister+0x44/0xa0
      [  414.406112]  thermal_remove_hwmon_sysfs+0x196/0x200
      [  414.407256]  thermal_zone_device_unregister+0x1b5/0x1f0
      [  414.408415]  cxgb4_thermal_remove+0x3c/0x4f [cxgb4]
      [  414.409668]  remove_one+0x212/0x290 [cxgb4]
      [  414.410875]  pci_device_remove+0x36/0xb0
      [  414.412004]  device_release_driver_internal+0xe2/0x1c0
      [  414.413276]  pci_stop_bus_device+0x64/0x90
      [  414.414433]  pci_stop_and_remove_bus_device_locked+0x16/0x30
      [  414.415609]  remove_store+0x75/0x90
      [  414.416790]  kernfs_fop_write+0x114/0x1b0
      [  414.417930]  vfs_write+0xcf/0x210
      [  414.419059]  ksys_write+0xa7/0xe0
      [  414.420120]  do_syscall_64+0x4c/0xa0
      [  414.421278]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [  414.422335] RIP: 0033:0x7fd2a686afd0
      [  414.423396] Code: Bad RIP value.
      [  414.424549] RSP: 002b:00007fffc1446148 EFLAGS: 00000246 ORIG_RAX:
       0000000000000001
      [  414.425638] RAX: ffffffffffffffda RBX: 0000000000000002 RCX: 00007fd2a686afd0
      [  414.426830] RDX: 0000000000000002 RSI: 00007fd2a7196000 RDI: 0000000000000001
      [  414.427927] RBP: 00007fd2a7196000 R08: 000000000000000a R09: 00007fd2a7171740
      [  414.428923] R10: 00007fd2a7171740 R11: 0000000000000246 R12: 00007fd2a6b43400
      [  414.430082] R13: 0000000000000002 R14: 0000000000000001 R15: 0000000000000000
      [  414.431027] irq event stamp: 76300
      [  414.435678] ---[ end trace 13865acb4d5ab00f ]---
      
      Fixes: b1871915 ("cxgb4: Add thermal zone support")
      Signed-off-by: default avatarPotnuri Bharat Teja <bharat@chelsio.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6b6382a8
    • Xie He's avatar
      drivers/net/wan/hdlc_cisco: Add hard_header_len · 1a545ebe
      Xie He authored
      This driver didn't set hard_header_len. This patch sets hard_header_len
      for it according to its header_ops->create function.
      
      This driver's header_ops->create function (cisco_hard_header) creates
      a header of (struct hdlc_header), so hard_header_len should be set to
      sizeof(struct hdlc_header).
      
      Cc: Martin Schiller <ms@dev.tdt.de>
      Signed-off-by: default avatarXie He <xie.he.0141@gmail.com>
      Acked-by: default avatarKrzysztof Halasa <khc@pm.waw.pl>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1a545ebe
    • Shannon Nelson's avatar
      ionic: fix txrx work accounting · 9dda5110
      Shannon Nelson authored
      Take the tx accounting out of the work_done calculation to
      prevent a possible duplicate napi_schedule call when under
      high Tx stress but low Rx traffic.
      
      Fixes: b14e4e95 ("ionic: tx separate servicing")
      Signed-off-by: default avatarShannon Nelson <snelson@pensando.io>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9dda5110
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf · e9d572d9
      David S. Miller authored
      Pablo Neira Ayuso says:
      
      ====================
      Netfilter fixes for net
      
      The following patchset contains Netfilter fixes for net:
      
      1) Do not delete clash entries on reply, let them expire instead,
         from Florian Westphal.
      
      2) Do not report EAGAIN to nfnetlink, otherwise this enters a busy loop.
         Update nfnetlink_unicast() to translate EAGAIN to ENOBUFS.
      
      3) Remove repeated words in code comments, from Randy Dunlap.
      
      4) Several patches for the flowtable selftests, from Fabian Frederick.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e9d572d9
    • Tuong Lien's avatar
      tipc: fix using smp_processor_id() in preemptible · bb8872a1
      Tuong Lien authored
      The 'this_cpu_ptr()' is used to obtain the AEAD key' TFM on the current
      CPU for encryption, however the execution can be preemptible since it's
      actually user-space context, so the 'using smp_processor_id() in
      preemptible' has been observed.
      
      We fix the issue by using the 'get/put_cpu_ptr()' API which consists of
      a 'preempt_disable()' instead.
      
      Fixes: fc1b6d6d ("tipc: introduce TIPC encryption & authentication")
      Acked-by: default avatarJon Maloy <jmaloy@redhat.com>
      Signed-off-by: default avatarTuong Lien <tuong.t.lien@dektech.com.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bb8872a1
  4. 29 Aug, 2020 1 commit
    • Florian Westphal's avatar
      netfilter: conntrack: do not auto-delete clash entries on reply · c4617214
      Florian Westphal authored
      Its possible that we have more than one packet with the same ct tuple
      simultaneously, e.g. when an application emits n packets on same UDP
      socket from multiple threads.
      
      NAT rules might be applied to those packets. With the right set of rules,
      n packets will be mapped to m destinations, where at least two packets end
      up with the same destination.
      
      When this happens, the existing clash resolution may merge the skb that
      is processed after the first has been received with the identical tuple
      already in hash table.
      
      However, its possible that this identical tuple is a NAT_CLASH tuple.
      In that case the second skb will be sent, but no reply can be received
      since the reply that is processed first removes the NAT_CLASH tuple.
      
      Do not auto-delete, this gives a 1 second window for replies to be passed
      back to originator.
      
      Packets that are coming later (udp stream case) will not be affected:
      they match the original ct entry, not a NAT_CLASH one.
      
      Also prevent NAT_CLASH entries from getting offloaded.
      
      Fixes: 6a757c07 ("netfilter: conntrack: allow insertion of clashing entries")
      Signed-off-by: default avatarFlorian Westphal <fw@strlen.de>
      Signed-off-by: default avatarPablo Neira Ayuso <pablo@netfilter.org>
      c4617214
  5. 28 Aug, 2020 13 commits
  6. 27 Aug, 2020 10 commits