Skip to content
  1. Jan 10, 2021
  2. Jan 09, 2021
    • Julian Wiedmann's avatar
      ppp: clean up endianness conversions · 09b5b5fb
      Julian Wiedmann authored
      
      
      sparse complains about some harmless endianness issues:
      
      > drivers/net/ppp/pptp.c:281:21: warning: incorrect type in assignment (different base types)
      > drivers/net/ppp/pptp.c:281:21:    expected unsigned int [usertype] ack
      > drivers/net/ppp/pptp.c:281:21:    got restricted __be32
      > drivers/net/ppp/pptp.c:283:23: warning: cast to restricted __be32
      
      Here 'ack' is assigned a value in network-order, and then also the
      byte-swapped value in host-order. Clean this up by doing the byte-swap
      as part of the assignment.
      
      > drivers/net/ppp/pptp.c:358:26: warning: cast from restricted __be16
      > drivers/net/ppp/pptp.c:358:26: warning: incorrect type in argument 1 (different base types)
      > drivers/net/ppp/pptp.c:358:26:    expected unsigned short [usertype] call_id
      > drivers/net/ppp/pptp.c:358:26:    got restricted __be16 [usertype]
      
      Here we use the wrong flavour of byte-swap. Use ntohs(), which of course
      gives the same result.
      
      Cc: Dmitry Kozlov <xeb@mail.ru>
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Link: https://lore.kernel.org/r/20210107143956.25549-1-jwi@linux.ibm.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      09b5b5fb
    • Julian Wiedmann's avatar
      net: ip_tunnel: clean up endianness conversions · fda4fde2
      Julian Wiedmann authored
      
      
      sparse complains about some harmless endianness issues:
      
      > net/ipv4/ip_tunnel_core.c:225:43: warning: cast to restricted __be16
      > net/ipv4/ip_tunnel_core.c:225:43: warning: incorrect type in initializer (different base types)
      > net/ipv4/ip_tunnel_core.c:225:43:    expected restricted __be16 [usertype] mtu
      > net/ipv4/ip_tunnel_core.c:225:43:    got unsigned short [usertype]
      
      iptunnel_pmtud_build_icmp() uses the wrong flavour of byte-order conversion
      when storing the MTU into the ICMPv4 packet. Use htons(), just like
      iptunnel_pmtud_build_icmpv6() does.
      
      > net/ipv4/ip_tunnel_core.c:248:35: warning: cast from restricted __be16
      > net/ipv4/ip_tunnel_core.c:248:35: warning: incorrect type in argument 3 (different base types)
      > net/ipv4/ip_tunnel_core.c:248:35:    expected unsigned short type
      > net/ipv4/ip_tunnel_core.c:248:35:    got restricted __be16 [usertype]
      > net/ipv4/ip_tunnel_core.c:341:35: warning: cast from restricted __be16
      > net/ipv4/ip_tunnel_core.c:341:35: warning: incorrect type in argument 3 (different base types)
      > net/ipv4/ip_tunnel_core.c:341:35:    expected unsigned short type
      > net/ipv4/ip_tunnel_core.c:341:35:    got restricted __be16 [usertype]
      
      eth_header() wants the Ethertype in host-order, use the correct flavour of
      byte-order conversion.
      
      > net/ipv4/ip_tunnel_core.c:600:45: warning: restricted __be16 degrades to integer
      > net/ipv4/ip_tunnel_core.c:609:30: warning: incorrect type in assignment (different base types)
      > net/ipv4/ip_tunnel_core.c:609:30:    expected int type
      > net/ipv4/ip_tunnel_core.c:609:30:    got restricted __be16 [usertype]
      > net/ipv4/ip_tunnel_core.c:619:30: warning: incorrect type in assignment (different base types)
      > net/ipv4/ip_tunnel_core.c:619:30:    expected int type
      > net/ipv4/ip_tunnel_core.c:619:30:    got restricted __be16 [usertype]
      > net/ipv4/ip_tunnel_core.c:629:30: warning: incorrect type in assignment (different base types)
      > net/ipv4/ip_tunnel_core.c:629:30:    expected int type
      > net/ipv4/ip_tunnel_core.c:629:30:    got restricted __be16 [usertype]
      
      The TUNNEL_* types are big-endian, so adjust the type of the local
      variable in ip_tun_parse_opts().
      
      Signed-off-by: default avatarJulian Wiedmann <jwi@linux.ibm.com>
      Link: https://lore.kernel.org/r/20210107144008.25777-1-jwi@linux.ibm.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      fda4fde2
    • Rafał Miłecki's avatar
      MAINTAINERS: add bgmac section entry · f67b4ff2
      Rafał Miłecki authored
      
      
      This driver exists for years but was missing its MAINTAINERS entry.
      
      Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Link: https://lore.kernel.org/r/20210107180051.1542-3-zajec5@gmail.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f67b4ff2
    • Rafał Miłecki's avatar
      net: broadcom: share header defining UniMAC registers · 28e303da
      Rafał Miłecki authored
      
      
      UniMAC is integrated into multiple Broadcom's Ethernet controllers so
      use a shared header file for it and avoid some code duplication.
      
      Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Acked-by: default avatarDoug Berger <opendmb@gmail.com>
      Link: https://lore.kernel.org/r/20210107180051.1542-2-zajec5@gmail.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      28e303da
    • Rafał Miłecki's avatar
      bgmac: add bgmac_umac_*() helpers for accessing UniMAC registers · 12cf8e75
      Rafał Miłecki authored
      
      
      UniMAC is a hardware block commonly used in Broadcom Ethernet controllers
      that should get its own header file. Not every controller has it mapped at
      the 0x800 offset so add bgmac access helpers. They will allow using
      shared register defines.
      
      Signed-off-by: default avatarRafał Miłecki <rafal@milecki.pl>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Link: https://lore.kernel.org/r/20210107180051.1542-1-zajec5@gmail.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      12cf8e75
    • Jakub Kicinski's avatar
      Merge branch 'update-register-bit-definitions-in-the-etheravb-driver' · 05eab1bf
      Jakub Kicinski authored
      Sergey Shtylyov says:
      
      ====================
      Update register/bit definitions in the EtherAVB driver
      
      Here are 2 patches against DaveM's 'net-next' repo.
      I'm updating the driver to match the recent R-Car gen2/3 manuals.
      ====================
      
      Link: https://lore.kernel.org/r/6aef8856-4bf5-1512-2ad4-62af05f00cc6@omprussia.ru
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      05eab1bf
    • Sergey Shtylyov's avatar
      ravb: update "undocumented" annotations · 360a7943
      Sergey Shtylyov authored
      
      
      The "undocumented" annotations in the EtherAVB driver were done against
      the R-Car gen2 manuals; most of these registers/bits were then described
      in the R-Car gen3 manuals -- reflect  this fact in the annotations (note
      that ECSIPR.LCHNGIP was documented in the recent R-Car gen2 manual)...
      
      Signed-off-by: default avatarSergey Shtylyov <s.shtylyov@omprussia.ru>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      360a7943
    • Sergey Shtylyov's avatar
      ravb: remove APSR_DM · f4d680e5
      Sergey Shtylyov authored
      
      
      According to the R-Car Series, 3rd Generation User's Manual: Hardware,
      Rev. 1.50, there's no APSR.DM field, instead there are 2 independent
      RX/TX clock internal delay bits. Follow the suit: remove #define APSR_DM
      and rename #define's APSR_DM_{R|T}DM to APSR_{R|T}DM.
      
      While at it, do several more things to the declaration of *enum* APSR_BIT:
      - remove superfluous indentation;
      - annotate APSR_MEMS as undocumented;
      - annotate APSR as R-Car Gen3 only.
      
      Signed-off-by: default avatarSergey Shtylyov <s.shtylyov@omprussia.ru>
      Reviewed-by: default avatarGeert Uytterhoeven <geert+renesas@glider.be>
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      f4d680e5
    • Jakub Kicinski's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 833d22f2
      Jakub Kicinski authored
      
      
      Trivial conflict in CAN on file rename.
      
      Conflicts:
      	drivers/net/can/m_can/tcan4x5x-core.c
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      833d22f2
    • Linus Torvalds's avatar
      Merge tag 'net-5.11-rc3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 6279d812
      Linus Torvalds authored
      Pull more networking fixes from Jakub Kicinski:
       "Slightly lighter pull request to get back into the Thursday cadence.
      
        Current release - always broken:
      
         - can: mcp251xfd: fix Tx/Rx ring buffer driver race conditions
      
         - dsa: hellcreek: fix led_classdev build errors
      
        Previous releases - regressions:
      
         - ipv6: fib: flush exceptions when purging route to avoid netdev
           reference leak
      
         - ip_tunnels: fix pmtu check in nopmtudisc mode
      
         - ip: always refragment ip defragmented packets to avoid MTU issues
           when forwarding through tunnels, correct "packet too big" message
           is prohibitively tricky to generate
      
         - s390/qeth: fix locking for discipline setup / removal and during
           recovery to prevent both deadlocks and races
      
         - mlx5: Use port_num 1 instead of 0 when delete a RoCE address
      
        Previous releases - always broken:
      
         - cdc_ncm: correct overhead calculation in delayed_ndp_size to
           prevent out of bound accesses with Huawei 909s-120 LTE module
      
         - fix stmmac dwmac-sun8i suspend/resume:
                 - PHY being left powered off
                 - MAC syscon configuration being reset
                 - reference to the reset controller being improperly dropped
      
         - qrtr: fix null-ptr-deref in qrtr_ns_remove
      
         - can: tcan4x5x: fix bittiming const, use common bittiming from m_can
           driver
      
         - mlx5e: CT: Use per flow counter when CT flow accounting is enabled
      
         - mlx5e: Fix SWP offsets when vlan inserted by driver
      
        Misc:
      
         - bpf: Fix a task_iter bug caused by a bpf -> net merge conflict
           resolution
      
        And the usual many fixes to various error paths"
      
      * tag 'net-5.11-rc3-2' of git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (69 commits)
        net: dsa: lantiq_gswip: Exclude RMII from modes that report 1 GbE
        s390/qeth: fix L2 header access in qeth_l3_osa_features_check()
        s390/qeth: fix locking for discipline setup / removal
        s390/qeth: fix deadlock during recovery
        selftests: fib_nexthops: Fix wrong mausezahn invocation
        nexthop: Bounce NHA_GATEWAY in FDB nexthop groups
        nexthop: Unlink nexthop group entry in error path
        nexthop: Fix off-by-one error in error path
        octeontx2-af: fix memory leak of lmac and lmac->name
        chtls: Fix chtls resources release sequence
        chtls: Added a check to avoid NULL pointer dereference
        chtls: Replace skb_dequeue with skb_peek
        chtls: Avoid unnecessary freeing of oreq pointer
        chtls: Fix panic when route to peer not configured
        chtls: Remove invalid set_tcb call
        chtls: Fix hardware tid leak
        net: ip: always refragment ip defragmented packets
        net: fix pmtu check in nopmtudisc mode
        selftests: netfilter: add selftest for ipip pmtu discovery with enabled connection tracking
        docs: octeontx2: tune rst markup
        ...
      6279d812
    • Linus Torvalds's avatar
      Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 · ea1c87c1
      Linus Torvalds authored
      Pull crypto fixes from Herbert Xu:
       "This fixes a functional bug in arm/chacha-neon as well as a potential
        buffer overflow in ecdh"
      
      * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
        crypto: ecdh - avoid buffer overflow in ecdh_set_secret()
        crypto: arm/chacha-neon - add missing counter increment
      ea1c87c1
    • Linus Torvalds's avatar
      poll: fix performance regression due to out-of-line __put_user() · ef0ba055
      Linus Torvalds authored
      The kernel test robot reported a -5.8% performance regression on the
      "poll2" test of will-it-scale, and bisected it to commit d55564cf
      ("x86: Make __put_user() generate an out-of-line call").
      
      I didn't expect an out-of-line __put_user() to matter, because no normal
      core code should use that non-checking legacy version of user access any
      more.  But I had overlooked the very odd poll() usage, which does a
      __put_user() to update the 'revents' values of the poll array.
      
      Now, Al Viro correctly points out that instead of updating just the
      'revents' field, it would be much simpler to just copy the _whole_
      pollfd entry, and then we could just use "copy_to_user()" on the whole
      array of entries, the same way we use "copy_from_user()" a few lines
      earlier to get the original values.
      
      But that is not what we've traditionally done, and I worry that threaded
      applications might be concurrently modifying the other fields of the
      pollfd array.  So while Al's suggestion is simpler - and perhaps worth
      trying in the future - this instead keeps the "just update revents"
      model.
      
      To fix the performance regression, use the modern "unsafe_put_user()"
      instead of __put_user(), with the proper "user_write_access_begin()"
      guarding in place. This improves code generation enormously.
      
      Link: https://lore.kernel.org/lkml/20210107134723.GA28532@xsang-OptiPlex-9020/
      
      
      Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
      Tested-by: default avatarOliver Sang <oliver.sang@intel.com>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: David Laight <David.Laight@aculab.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ef0ba055
    • Petr Mladek's avatar
      Revert "init/console: Use ttynull as a fallback when there is no console" · a91bd622
      Petr Mladek authored
      This reverts commit 757055ae.
      
      The commit caused that ttynull was used as the default console
      on several systems[1][2][3]. As a result, the console was
      blank even when a better alternative existed.
      
      It happened when there was no console configured
      on the command line and ttynull_init() was the first initcall
      calling register_console().
      
      Or it happened when /dev/ did not exist when console_on_rootfs()
      was called. It was not able to open /dev/console even though
      a console driver was registered. It tried to add ttynull console
      but it obviously did not help. But ttynull became the preferred
      console and was used by /dev/console when it was available later.
      
      The commit tried to fix a historical problem that have been there
      for ages. The primary motivation was the commit 3cffa06a
      ("printk/console: Allow to disable console output by using console=""
       or console=null"). It provided a clean solution for a workaround
       that was widely used and worked only by chance.
      
      This revert causes that the console="" or console=null command line
      options will again work only by chance. These options will cause that
      a particular console will be preferred and the default (tty) ones
      will not get enabled. There will be no console registered at
      all. As a result there won't be stdin, stdout, and stderr for
      the init process. But it worked exactly this way even before.
      
      The proper solution has to fulfill many conditions:
      
        + Register ttynull only when explicitly required or as
          the ultimate fallback.
      
        + ttynull should get associated with /dev/console but it must
          not become preferred console when used as a fallback.
          Especially, it must still be possible to replace it
          by a better console later.
      
      Such a change requires clean up of the register_console() code.
      Otherwise, it would be even harder to follow. Especially, the use
      of has_preferred_console and CON_CONSDEV flag is tricky. The clean
      up is risky. The ordering of consoles is not well defined. And
      any changes tend to break existing user settings.
      
      Do the revert at the least risky solution for now.
      
      [1] https://lore.kernel.org/linux-kselftest/20201221144302.GR4077@smile.fi.intel.com/
      [2] https://lore.kernel.org/lkml/d2a3b3c0-e548-7dd1-730f-59bc5c04e191@synopsys.com/
      [3] https://patchwork.ozlabs.org/project/linux-um/patch/20210105120128.10854-1-thomas@m3y3r.de/
      
      
      
      Reported-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Reported-by: default avatarVineet Gupta <vgupta@synopsys.com>
      Reported-by: default avatarThomas Meyer <thomas@m3y3r.de>
      Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
      Acked-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Acked-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a91bd622
  3. Jan 08, 2021