Skip to content
  1. Apr 08, 2020
    • René van Dorst's avatar
      net: ethernet: mediatek: move mt7623 settings out off the mt7530 · a5d75538
      René van Dorst authored
      Moving mt7623 logic out off mt7530, is required to make hardware setting
      consistent after we introduce phylink to mtk driver.
      
      Fixes: b8fc9f30
      
       ("net: ethernet: mediatek: Add basic PHYLINK support")
      Reviewed-by: default avatarSean Wang <sean.wang@mediatek.com>
      Tested-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarRené van Dorst <opensource@vdorst.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a5d75538
    • René van Dorst's avatar
      net: dsa: mt7530: move mt7623 settings out off the mt7530 · 84d2f7b7
      René van Dorst authored
      Moving mt7623 logic out off mt7530, is required to make hardware setting
      consistent after we introduce phylink to mtk driver.
      
      Fixes: ca366d6c
      
       ("net: dsa: mt7530: Convert to PHYLINK API")
      Reviewed-by: default avatarSean Wang <sean.wang@mediatek.com>
      Tested-by: default avatarSean Wang <sean.wang@mediatek.com>
      Signed-off-by: default avatarRené van Dorst <opensource@vdorst.com>
      Tested-by: default avatarFrank Wunderlich <frank-w@public-files.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      84d2f7b7
    • Tim Stallard's avatar
      net: ipv6: do not consider routes via gateways for anycast address check · 03e2a984
      Tim Stallard authored
      The behaviour for what is considered an anycast address changed in
      commit 45e4fd26 ("ipv6: Only create RTF_CACHE routes after
      encountering pmtu exception"). This now considers the first
      address in a subnet where there is a route via a gateway
      to be an anycast address.
      
      This breaks path MTU discovery and traceroutes when a host in a
      remote network uses the address at the start of a prefix
      (eg 2600:: advertised as 2600::/48 in the DFZ) as ICMP errors
      will not be sent to anycast addresses.
      
      This patch excludes any routes with a gateway, or via point to
      point links, like the behaviour previously from
      rt6_is_gw_or_nonexthop in net/ipv6/route.c.
      
      This can be tested with:
      ip link add v1 type veth peer name v2
      ip netns add test
      ip netns exec test ip link set lo up
      ip link set v2 netns test
      ip link set v1 up
      ip netns exec test ip link set v2 up
      ip addr add 2001:db8::1/64 dev v1 nodad
      ip addr add 2001:db8:100:: dev lo nodad
      ip netns exec test ip addr add 2001:db8::2/64 dev v2 nodad
      ip netns exec test ip route add unreachable 2001:db8:1::1
      ip netns exec test ip route add 2001:db8:100::/64 via 2001:db8::1
      ip netns exec test sysctl net.ipv6.conf.all.forwarding=1
      ip route add 2001:db8:1::1 via 2001:db8::2
      ping -I 2001:db8::1 2001:db8:1::1 -c1
      ping -I 2001:db8:100:: 2001:db8:1::1 -c1
      ip addr delete 2001:db8:100:: dev lo
      ip netns delete test
      
      Currently the first ping will get back a destination unreachable ICMP
      error, but the second will never get a response, with "icmp6_send:
      acast source" logged. After this patch, both get destination
      unreachable ICMP replies.
      
      Fixes: 45e4fd26
      
       ("ipv6: Only create RTF_CACHE routes after encountering pmtu exception")
      Signed-off-by: default avatarTim Stallard <code@timstallard.me.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      03e2a984
    • Tim Stallard's avatar
      net: icmp6: do not select saddr from iif when route has prefsrc set · b93cfb9c
      Tim Stallard authored
      Since commit fac6fce9 ("net: icmp6: provide input address for
      traceroute6") ICMPv6 errors have source addresses from the ingress
      interface. However, this overrides when source address selection is
      influenced by setting preferred source addresses on routes.
      
      This can result in ICMP errors being lost to upstream BCP38 filters
      when the wrong source addresses are used, breaking path MTU discovery
      and traceroute.
      
      This patch sets the modified source address selection to only take place
      when the route used has no prefsrc set.
      
      It can be tested with:
      
      ip link add v1 type veth peer name v2
      ip netns add test
      ip netns exec test ip link set lo up
      ip link set v2 netns test
      ip link set v1 up
      ip netns exec test ip link set v2 up
      ip addr add 2001:db8::1/64 dev v1 nodad
      ip addr add 2001:db8::3 dev v1 nodad
      ip netns exec test ip addr add 2001:db8::2/64 dev v2 nodad
      ip netns exec test ip route add unreachable 2001:db8:1::1
      ip netns exec test ip addr add 2001:db8:100::1 dev lo
      ip netns exec test ip route add 2001:db8::1 dev v2 src 2001:db8:100::1
      ip route add 2001:db8:1000::1 via 2001:db8::2
      traceroute6 -s 2001:db8::1 2001:db8:1000::1
      traceroute6 -s 2001:db8::3 2001:db8:1000::1
      ip netns delete test
      
      Output before:
      $ traceroute6 -s 2001:db8::1 2001:db8:1000::1
      traceroute to 2001:db8:1000::1 (2001:db8:1000::1), 30 hops max, 80 byte packets
       1  2001:db8::2 (2001:db8::2)  0.843 ms !N  0.396 ms !N  0.257 ms !N
      $ traceroute6 -s 2001:db8::3 2001:db8:1000::1
      traceroute to 2001:db8:1000::1 (2001:db8:1000::1), 30 hops max, 80 byte packets
       1  2001:db8::2 (2001:db8::2)  0.772 ms !N  0.257 ms !N  0.357 ms !N
      
      After:
      $ traceroute6 -s 2001:db8::1 2001:db8:1000::1
      traceroute to 2001:db8:1000::1 (2001:db8:1000::1), 30 hops max, 80 byte packets
       1  2001:db8:100::1 (2001:db8:100::1)  8.885 ms !N  0.310 ms !N  0.174 ms !N
      $ traceroute6 -s 2001:db8::3 2001:db8:1000::1
      traceroute to 2001:db8:1000::1 (2001:db8:1000::1), 30 hops max, 80 byte packets
       1  2001:db8::2 (2001:db8::2)  1.403 ms !N  0.205 ms !N  0.313 ms !N
      
      Fixes: fac6fce9
      
       ("net: icmp6: provide input address for traceroute6")
      Signed-off-by: default avatarTim Stallard <code@timstallard.me.uk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b93cfb9c
    • David S. Miller's avatar
      Merge branch 'fec-fix-wake-on-lan' · 860c2bf0
      David S. Miller authored
      
      
      Martin Fuzzey says:
      
      ====================
      Fix Wake on lan with FEC on i.MX6
      
      This series fixes WoL support with the FEC on i.MX6
      The support was already in mainline but seems to have bitrotted
      somewhat.
      
      Only tested with i.MX6DL
      
      Changes V2->V3
      	Patch 1:
      		fix non initialized variable introduced in V2 causing
      		probe to sometimes fail.
      
      	Patch 2:
      		remove /delete-property/interrupts-extended in
      		arch/arm/boot/dts/imx6qp.dtsi.
      
      	Patches 3 and 4:
      		Add received Acked-by and RB tags.
      
      Changes V1->V2
      	Move the register offset and bit number from the DT to driver code
      	Add SOB from Fugang Duan for the NXP code on which this is based
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      860c2bf0
    • Martin Fuzzey's avatar
      ARM: dts: imx6: add fec gpr property. · be8ae92f
      Martin Fuzzey authored
      
      
      This is required for wake on lan on i.MX6
      
      Signed-off-by: default avatarMartin Fuzzey <martin.fuzzey@flowbird.group>
      Reviewed-by: default avatarFugang Duan <fugang.duan@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      be8ae92f
    • Martin Fuzzey's avatar
      dt-bindings: fec: document the new gpr property. · 70f26858
      Martin Fuzzey authored
      
      
      This property allows the gpr register bit to be defined
      for wake on lan support.
      
      Signed-off-by: default avatarMartin Fuzzey <martin.fuzzey@flowbird.group>
      Reviewed-by: default avatarFugang Duan <fugang.duan@nxp.com>
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      70f26858
    • Martin Fuzzey's avatar
      ARM: dts: imx6: Use gpc for FEC interrupt controller to fix wake on LAN. · 4141f1a4
      Martin Fuzzey authored
      In order to wake from suspend by ethernet magic packets the GPC
      must be used as intc does not have wakeup functionality.
      
      But the FEC DT node currently uses interrupt-extended,
      specificying intc, thus breaking WoL.
      
      This problem is probably fallout from the stacked domain conversion
      as intc used to chain to GPC.
      
      So replace "interrupts-extended" by "interrupts" to use the default
      parent which is GPC.
      
      Fixes: b923ff6a
      
       ("ARM: imx6: convert GPC to stacked domains")
      
      Signed-off-by: default avatarMartin Fuzzey <martin.fuzzey@flowbird.group>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      4141f1a4
    • Martin Fuzzey's avatar
      net: fec: set GPR bit on suspend by DT configuration. · da722186
      Martin Fuzzey authored
      On some SoCs, such as the i.MX6, it is necessary to set a bit
      in the SoC level GPR register before suspending for wake on lan
      to work.
      
      The fec platform callback sleep_mode_enable was intended to allow this
      but the platform implementation was NAK'd back in 2015 [1]
      
      This means that, currently, wake on lan is broken on mainline for
      the i.MX6 at least.
      
      So implement the required bit setting in the fec driver by itself
      by adding a new optional DT property indicating the GPR register
      and adding the offset and bit information to the driver.
      
      [1] https://www.spinics.net/lists/netdev/msg310922.html
      
      
      
      Signed-off-by: default avatarMartin Fuzzey <martin.fuzzey@flowbird.group>
      Signed-off-by: default avatarFugang Duan <fugang.duan@nxp.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      da722186
    • Lothar Rubusch's avatar
      net: sock.h: fix skb_steal_sock() kernel-doc · 045065f0
      Lothar Rubusch authored
      
      
      Fix warnings related to kernel-doc notation, and wording in
      function description.
      
      Signed-off-by: default avatarLothar Rubusch <l.rubusch@gmail.com>
      Acked-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Tested-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      045065f0
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/pablo/nf · c2c11289
      David S. Miller authored
      
      
      Pablo Neira Ayuso says:
      
      ====================
      Netfilter fixes for net
      
      The following patchset contains Netfilter fixes for net, they are:
      
      1) Fix spurious overlap condition in the rbtree tree, from Stefano Brivio.
      
      2) Fix possible uninitialized pointer dereference in nft_lookup.
      
      3) IDLETIMER v1 target matches the Android layout, from
         Maciej Zenczykowski.
      
      4) Dangling pointer in nf_tables_set_alloc_name, from Eric Dumazet.
      
      5) Fix RCU warning splat in ipset find_set_type(), from Amol Grover.
      
      6) Report EOPNOTSUPP on unsupported set flags and object types in sets.
      
      7) Add NFT_SET_CONCAT flag to provide consistent error reporting
         when users defines set with ranges in concatenations in old kernels.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c2c11289
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 63bef48f
      Linus Torvalds authored
      Merge more updates from Andrew Morton:
      
       - a lot more of MM, quite a bit more yet to come: (memcg, pagemap,
         vmalloc, pagealloc, migration, thp, ksm, madvise, virtio,
         userfaultfd, memory-hotplug, shmem, rmap, zswap, zsmalloc, cleanups)
      
       - various other subsystems (procfs, misc, MAINTAINERS, bitops, lib,
         checkpatch, epoll, binfmt, kallsyms, reiserfs, kmod, gcov, kconfig,
         ubsan, fault-injection, ipc)
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (158 commits)
        ipc/shm.c: make compat_ksys_shmctl() static
        ipc/mqueue.c: fix a brace coding style issue
        lib/Kconfig.debug: fix a typo "capabilitiy" -> "capability"
        ubsan: include bug type in report header
        kasan: unset panic_on_warn before calling panic()
        ubsan: check panic_on_warn
        drivers/misc/lkdtm/bugs.c: add arithmetic overflow and array bounds checks
        ubsan: split "bounds" checker from other options
        ubsan: add trap instrumentation option
        init/Kconfig: clean up ANON_INODES and old IO schedulers options
        kernel/gcov/fs.c: replace zero-length array with flexible-array member
        gcov: gcc_3_4: replace zero-length array with flexible-array member
        gcov: gcc_4_7: replace zero-length array with flexible-array member
        kernel/kmod.c: fix a typo "assuems" -> "assumes"
        reiserfs: clean up several indentation issues
        kallsyms: unexport kallsyms_lookup_name() and kallsyms_on_each_symbol()
        samples/hw_breakpoint: drop use of kallsyms_lookup_name()
        samples/hw_breakpoint: drop HW_BREAKPOINT_R when reporting writes
        fs/binfmt_elf.c: don't free interpreter's ELF pheaders on common path
        fs/binfmt_elf.c: allocate less for static executable
        ...
      63bef48f
    • Linus Torvalds's avatar
      Merge tag 'nfs-for-5.7-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs · 04de788e
      Linus Torvalds authored
      Pull NFS client updates from Trond Myklebust:
       "Highlights include:
      
        Stable fixes:
         - Fix a page leak in nfs_destroy_unlinked_subrequests()
      
         - Fix use-after-free issues in nfs_pageio_add_request()
      
         - Fix new mount code constant_table array definitions
      
         - finish_automount() requires us to hold 2 refs to the mount record
      
        Features:
         - Improve the accuracy of telldir/seekdir by using 64-bit cookies
           when possible.
      
         - Allow one RDMA active connection and several zombie connections to
           prevent blocking if the remote server is unresponsive.
      
         - Limit the size of the NFS access cache by default
      
         - Reduce the number of references to credentials that are taken by
           NFS
      
         - pNFS files and flexfiles drivers now support per-layout segment
           COMMIT lists.
      
         - Enable partial-file layout segments in the pNFS/flexfiles driver.
      
         - Add support for CB_RECALL_ANY to the pNFS flexfiles layout type
      
         - pNFS/flexfiles Report NFS4ERR_DELAY and NFS4ERR_GRACE errors from
           the DS using the layouterror mechanism.
      
        Bugfixes and cleanups:
         - SUNRPC: Fix krb5p regressions
      
         - Don't specify NFS version in "UDP not supported" error
      
         - nfsroot: set tcp as the default transport protocol
      
         - pnfs: Return valid stateids in nfs_layout_find_inode_by_stateid()
      
         - alloc_nfs_open_context() must use the file cred when available
      
         - Fix locking when dereferencing the delegation cred
      
         - Fix memory leaks in O_DIRECT when nfs_get_lock_context() fails
      
         - Various clean ups of the NFS O_DIRECT commit code
      
         - Clean up RDMA connect/disconnect
      
         - Replace zero-length arrays with C99-style flexible arrays"
      
      * tag 'nfs-for-5.7-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (86 commits)
        NFS: Clean up process of marking inode stale.
        SUNRPC: Don't start a timer on an already queued rpc task
        NFS/pnfs: Reference the layout cred in pnfs_prepare_layoutreturn()
        NFS/pnfs: Fix dereference of layout cred in pnfs_layoutcommit_inode()
        NFS: Beware when dereferencing the delegation cred
        NFS: Add a module parameter to set nfs_mountpoint_expiry_timeout
        NFS: finish_automount() requires us to hold 2 refs to the mount record
        NFS: Fix a few constant_table array definitions
        NFS: Try to join page groups before an O_DIRECT retransmission
        NFS: Refactor nfs_lock_and_join_requests()
        NFS: Reverse the submission order of requests in __nfs_pageio_add_request()
        NFS: Clean up nfs_lock_and_join_requests()
        NFS: Remove the redundant function nfs_pgio_has_mirroring()
        NFS: Fix memory leaks in nfs_pageio_stop_mirroring()
        NFS: Fix a request reference leak in nfs_direct_write_clear_reqs()
        NFS: Fix use-after-free issues in nfs_pageio_add_request()
        NFS: Fix races nfs_page_group_destroy() vs nfs_destroy_unlinked_subrequests()
        NFS: Fix a page leak in nfs_destroy_unlinked_subrequests()
        NFS: Remove unused FLUSH_SYNC support in nfs_initiate_pgio()
        pNFS/flexfiles: Specify the layout segment range in LAYOUTGET
        ...
      04de788e
    • Linus Torvalds's avatar
      Merge tag 'f2fs-for-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs · f40f31ca
      Linus Torvalds authored
      Pull f2fs updates from Jaegeuk Kim:
       "In this round, we've mainly focused on fixing bugs and addressing
        issues in recently introduced compression support.
      
        Enhancement:
         - add zstd support, and set LZ4 by default
         - add ioctl() to show # of compressed blocks
         - show mount time in debugfs
         - replace rwsem with spinlock
         - avoid lock contention in DIO reads
      
        Some major bug fixes wrt compression:
         - compressed block count
         - memory access and leak
         - remove obsolete fields
         - flag controls
      
        Other bug fixes and clean ups:
         - fix overflow when handling .flags in inode_info
         - fix SPO issue during resize FS flow
         - fix compression with fsverity enabled
         - potential deadlock when writing compressed pages
         - show missing mount options"
      
      * tag 'f2fs-for-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (66 commits)
        f2fs: keep inline_data when compression conversion
        f2fs: fix to disable compression on directory
        f2fs: add missing CONFIG_F2FS_FS_COMPRESSION
        f2fs: switch discard_policy.timeout to bool type
        f2fs: fix to verify tpage before releasing in f2fs_free_dic()
        f2fs: show compression in statx
        f2fs: clean up dic->tpages assignment
        f2fs: compress: support zstd compress algorithm
        f2fs: compress: add .{init,destroy}_decompress_ctx callback
        f2fs: compress: fix to call missing destroy_compress_ctx()
        f2fs: change default compression algorithm
        f2fs: clean up {cic,dic}.ref handling
        f2fs: fix to use f2fs_readpage_limit() in f2fs_read_multi_pages()
        f2fs: xattr.h: Make stub helpers inline
        f2fs: fix to avoid double unlock
        f2fs: fix potential .flags overflow on 32bit architecture
        f2fs: fix NULL pointer dereference in f2fs_verity_work()
        f2fs: fix to clear PG_error if fsverity failed
        f2fs: don't call fscrypt_get_encryption_info() explicitly in f2fs_tmpfile()
        f2fs: don't trigger data flush in foreground operation
        ...
      f40f31ca
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs · 763dede1
      Linus Torvalds authored
      Pull UBI and UBIFS updates from Richard Weinberger:
      
       - Fix for memory leaks around UBIFS orphan handling
      
       - Fix for memory leaks around UBI fastmap
      
       - Remove zero-length array from ubi-media.h
      
       - Fix for TNC lookup in UBIFS orphan code
      
      * tag 'for-linus-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs:
        ubi: ubi-media.h: Replace zero-length array with flexible-array member
        ubifs: Fix out-of-bounds memory access caused by abnormal value of node_len
        ubi: fastmap: Only produce the initial anchor PEB when fastmap is used
        ubi: fastmap: Free unused fastmap anchor peb during detach
        ubifs: ubifs_add_orphan: Fix a memory leak bug
        ubifs: ubifs_jnl_write_inode: Fix a memory leak bug
        ubifs: Fix ubifs_tnc_lookup() usage in do_kill_orphans()
      763dede1
    • Linus Torvalds's avatar
      Merge tag 'for-linus-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml · 762a9f2f
      Linus Torvalds authored
      Pull UML updates from Richard Weinberger:
      
       - New mode for time travel, external via virtio
      
       - Fixes for ubd to make sure no requests can get lost
      
       - Fixes for vector networking
      
       - Allow CONFIG_STATIC_LINK only when possible
      
       - Minor cleanups and fixes
      
      * tag 'for-linus-5.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml:
        um: Remove some unnecessary NULL checks in vector_user.c
        um: vector: Avoid NULL ptr deference if transport is unset
        um: Make CONFIG_STATIC_LINK actually static
        um: Implement cpu_relax() as ndelay(1) for time-travel
        um: Implement ndelay/udelay in time-travel mode
        um: Implement time-travel=ext
        um: virtio: Implement VHOST_USER_PROTOCOL_F_INBAND_NOTIFICATIONS
        um: time-travel: Rewrite as an event scheduler
        um: Move timer-internal.h to non-shared
        hostfs: Use kasprintf() instead of fixed buffer formatting
        um: falloc.h needs to be directly included for older libc
        um: ubd: Retry buffer read on any kind of error
        um: ubd: Prevent buffer overrun on command completion
        um: Fix overlapping ELF segments when statically linked
        um: Delete never executed timer
        um: Don't overwrite ethtool driver version
        um: Fix len of file in create_pid_file
        um: Don't use console_drivers directly
        um: Cleanup CONFIG_IOSCHED_CFQ
      762a9f2f
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://github.com/openrisc/linux · d5d24766
      Linus Torvalds authored
      Pull OpenRISC updates from Stafford Horne:
       "A few cleanups all over the place, things of note:
      
         - Enable the clone3 syscall
      
         - Remove CONFIG_CROSS_COMPILE from Krzysztof Kozlowski
      
         - Update to use mmgrab from Julia Lawall"
      
      * tag 'for-linus' of git://github.com/openrisc/linux:
        openrisc: Remove obsolete show_trace_task function
        openrisc: Cleanup copy_thread_tls docs and comments
        openrisc: Enable the clone3 syscall
        openrisc: Convert copy_thread to copy_thread_tls
        openrisc: use mmgrab
        openrisc: configs: Cleanup CONFIG_CROSS_COMPILE
      d5d24766
    • Linus Torvalds's avatar
      Merge branch 'parisc-5.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux · f9db97d7
      Linus Torvalds authored
      Pull parisc updates from Helge Deller:
       "Some cleanups in arch_rw locking functions, improved interrupt
        handling in arch spinlocks, coversions to request_irq() and syscall
        table generation cleanups"
      
      * 'parisc-5.7-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
        parisc: remove nargs from __SYSCALL
        parisc: Refactor alternative code to accept multiple conditions
        parisc: Rework arch_rw locking functions
        parisc: Improve interrupt handling in arch_spin_lock_flags()
        parisc: Replace setup_irq() by request_irq()
      f9db97d7
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 12782fbe
      Linus Torvalds authored
      Pull sparc update from David Miller:
       "A per-device DMA ops conversion for sparc32 by Chrstioph Hellwig"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc32: use per-device dma_ops
      12782fbe
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide · 498ff42d
      Linus Torvalds authored
      Pull IDE update from David Miller:
       "As usual, very quiet in this subsystem.
      
        Just a list_for_each_entry_safe() conversion"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide:
        drivers/ide: Fix build regression.
        drivers/ide: convert to list_for_each_entry_safe()
      498ff42d
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net · 479a72c0
      Linus Torvalds authored
      Pull networking fixes from David Miller:
      
       1) Slave bond and team devices should not be assigned ipv6 link local
          addresses, from Jarod Wilson.
      
       2) Fix clock sink config on some at803x PHY devices, from Oleksij
          Rempel.
      
       3) Uninitialized stack space transmitted in slcan frames, fix from
          Richard Palethorpe.
      
       4) Guard HW VLAN ops properly in stmmac driver, from Jose Abreu.
      
       5) "=" --> "|=" fix in aquantia driver, from Colin Ian King.
      
       6) Fix TCP fallback in mptcp, from Florian Westphal. (accessing a plain
          tcp_sk as if it were an mptcp socket).
      
       7) Fix cavium driver in some configurations wrt. PTP, from Yue Haibing.
      
       8) Make ipv6 and ipv4 consistent in the lower bound allowed for
          neighbour entry retrans_time, from Hangbin Liu.
      
       9) Don't use private workqueue in pegasus usb driver, from Petko
          Manolov.
      
      10) Fix integer overflow in mlxsw, from Colin Ian King.
      
      11) Missing refcnt init in cls_tcindex, from Cong Wang.
      
      12) One too many loop iterations when processing cmpri entries in ipv6
          rpl code, from Alexander Aring.
      
      13) Disable SG and TSO by default in r8169, from Heiner Kallweit.
      
      14) NULL deref in macsec, from Davide Caratti.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (42 commits)
        macsec: fix NULL dereference in macsec_upd_offload()
        skbuff.h: Improve the checksum related comments
        net: dsa: bcm_sf2: Ensure correct sub-node is parsed
        qed: remove redundant assignment to variable 'rc'
        wimax: remove some redundant assignments to variable result
        mlxsw: spectrum_flower: Do not stop at FLOW_ACTION_VLAN_MANGLE
        mlxsw: spectrum_flower: Do not stop at FLOW_ACTION_PRIORITY
        r8169: change back SG and TSO to be disabled by default
        net: dsa: bcm_sf2: Do not register slave MDIO bus with OF
        ipv6: rpl: fix loop iteration
        tun: Don't put_page() for all negative return values from XDP program
        net: dsa: mt7530: fix null pointer dereferencing in port5 setup
        mptcp: add some missing pr_fmt defines
        net: phy: micrel: kszphy_resume(): add delay after genphy_resume() before accessing PHY registers
        net_sched: fix a missing refcnt in tcindex_init()
        net: stmmac: dwmac1000: fix out-of-bounds mac address reg setting
        mlxsw: spectrum_trap: fix unintention integer overflow on left shift
        pegasus: Remove pegasus' own workqueue
        neigh: support smaller retrans_time settting
        net: openvswitch: use hlist_for_each_entry_rcu instead of hlist_for_each_entry
        ...
      479a72c0
    • Linus Torvalds's avatar
      Merge branch 'pcmcia-next' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux · 07d6f6dc
      Linus Torvalds authored
      Pull pcmcia updates from Dominik Brodowski:
       "A few PCMCIA odd fixes: removing a few spaces and useless casts,
        replacing snprintf() with scnprintf(), and replacing zero-length
        arrays with a flexible-array member"
      
      * 'pcmcia-next' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/linux:
        pcmcia: remove some unused space characters
        pcmcia: soc_common.h: Replace zero-length array with flexible-array member
        pcmcia: cs_internal.h: Replace zero-length array with flexible-array member
        pcmcia: Use scnprintf() for avoiding potential buffer overflow
        pcmcia: omap: remove useless cast for driver.name
      07d6f6dc
    • Jason Yan's avatar
      ipc/shm.c: make compat_ksys_shmctl() static · 1cd377ba
      Jason Yan authored
      
      
      Fix the following sparse warning:
      
      ipc/shm.c:1335:6: warning: symbol 'compat_ksys_shmctl' was not declared.
      Should it be static?
      
      Reported-by: default avatarHulk Robot <hulkci@huawei.com>
      Signed-off-by: default avatarJason Yan <yanaijie@huawei.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20200403063933.24785-1-yanaijie@huawei.com
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1cd377ba
    • Somala Swaraj's avatar
    • Qiujun Huang's avatar
    • Kees Cook's avatar
      ubsan: include bug type in report header · ef065653
      Kees Cook authored
      
      
      When syzbot tries to figure out how to deduplicate bug reports, it prefers
      seeing a hint about a specific bug type (we can do better than just
      "UBSAN").  This lifts the handler reason into the UBSAN report line that
      includes the file path that tripped a check.  Unfortunately, UBSAN does
      not provide function names.
      
      Suggested-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Konovalov <andreyknvl@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: Elena Petrova <lenaptr@google.com>
      Cc: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
      Link: http://lkml.kernel.org/r/20200227193516.32566-7-keescook@chromium.org
      Link: https://lore.kernel.org/lkml/CACT4Y+bsLJ-wFx_TaXqax3JByUOWB3uk787LsyMVcfW6JzzGvg@mail.gmail.com
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ef065653
    • Kees Cook's avatar
      kasan: unset panic_on_warn before calling panic() · 1d2252fa
      Kees Cook authored
      
      
      As done in the full WARN() handler, panic_on_warn needs to be cleared
      before calling panic() to avoid recursive panics.
      
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Acked-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Konovalov <andreyknvl@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: Elena Petrova <lenaptr@google.com>
      Cc: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
      Link: http://lkml.kernel.org/r/20200227193516.32566-6-keescook@chromium.org
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1d2252fa
    • Kees Cook's avatar
      ubsan: check panic_on_warn · 1d28c8d6
      Kees Cook authored
      
      
      Syzkaller expects kernel warnings to panic when the panic_on_warn sysctl
      is set.  More work is needed here to have UBSan reuse the WARN
      infrastructure, but for now, just check the flag manually.
      
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Konovalov <andreyknvl@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: Dmitry Vyukov <dvyukov@google.com>
      Cc: Elena Petrova <lenaptr@google.com>
      Cc: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
      Link: https://lore.kernel.org/lkml/CACT4Y+bsLJ-wFx_TaXqax3JByUOWB3uk787LsyMVcfW6JzzGvg@mail.gmail.com
      Link: http://lkml.kernel.org/r/20200227193516.32566-5-keescook@chromium.org
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1d28c8d6
    • Kees Cook's avatar
      drivers/misc/lkdtm/bugs.c: add arithmetic overflow and array bounds checks · ae2e1aad
      Kees Cook authored
      
      
      Adds LKDTM tests for arithmetic overflow (both signed and unsigned), as
      well as array bounds checking.
      
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Acked-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Konovalov <andreyknvl@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: Elena Petrova <lenaptr@google.com>
      Cc: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
      Link: http://lkml.kernel.org/r/20200227193516.32566-4-keescook@chromium.org
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ae2e1aad
    • Kees Cook's avatar
      ubsan: split "bounds" checker from other options · 277a1085
      Kees Cook authored
      In order to do kernel builds with the bounds checker individually
      available, introduce CONFIG_UBSAN_BOUNDS, with the remaining options under
      CONFIG_UBSAN_MISC.
      
      For example, using this, we can start to expand the coverage syzkaller is
      providing.  Right now, all of UBSan is disabled for syzbot builds because
      taken as a whole, it is too noisy.  This will let us focus on one feature
      at a time.
      
      For the bounds checker specifically, this provides a mechanism to
      eliminate an entire class of array overflows with close to zero
      performance overhead (I cannot measure a difference).  In my (mostly)
      defconfig, enabling bounds checking adds ~4200 checks to the kernel.
      Performance changes are in the noise, likely due to the branch predictors
      optimizing for the non-fail path.
      
      Some notes on the bounds checker:
      
      - it does not instrument {mem,str}*()-family functions, it only
        instruments direct indexed accesses (e.g. "foo[i]"). Dealing with
        the {mem,str}*()-family functions is a work-in-progress around
        CONFIG_FORTIFY_SOURCE[1].
      
      - it ignores flexible array members, including the very old single
        byte (e.g. "int foo[1];") declarations. (Note that GCC's
        implementation appears to ignore _all_ trailing arrays, but Clang only
        ignores empty, 0, and 1 byte arrays[2].)
      
      [1] https://github.com/KSPP/linux/issues/6
      [2] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92589
      
      
      
      Suggested-by: default avatarElena Petrova <lenaptr@google.com>
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarAndrey Ryabinin <aryabinin@virtuozzo.com>
      Acked-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Andrey Konovalov <andreyknvl@google.com>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
      Link: http://lkml.kernel.org/r/20200227193516.32566-3-keescook@chromium.org
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      277a1085
    • Kees Cook's avatar
      ubsan: add trap instrumentation option · 0887a7eb
      Kees Cook authored
      
      
      Patch series "ubsan: Split out bounds checker", v5.
      
      This splits out the bounds checker so it can be individually used.  This
      is enabled in Android and hopefully for syzbot.  Includes LKDTM tests for
      behavioral corner-cases (beyond just the bounds checker), and adjusts
      ubsan and kasan slightly for correct panic handling.
      
      This patch (of 6):
      
      The Undefined Behavior Sanitizer can operate in two modes: warning
      reporting mode via lib/ubsan.c handler calls, or trap mode, which uses
      __builtin_trap() as the handler.  Using lib/ubsan.c means the kernel image
      is about 5% larger (due to all the debugging text and reporting structures
      to capture details about the warning conditions).  Using the trap mode,
      the image size changes are much smaller, though at the loss of the
      "warning only" mode.
      
      In order to give greater flexibility to system builders that want minimal
      changes to image size and are prepared to deal with kernel code being
      aborted and potentially destabilizing the system, this introduces
      CONFIG_UBSAN_TRAP.  The resulting image sizes comparison:
      
         text    data     bss       dec       hex     filename
      19533663   6183037  18554956  44271656  2a38828 vmlinux.stock
      19991849   7618513  18874448  46484810  2c54d4a vmlinux.ubsan
      19712181   6284181  18366540  44362902  2a4ec96 vmlinux.ubsan-trap
      
      CONFIG_UBSAN=y:      image +4.8% (text +2.3%, data +18.9%)
      CONFIG_UBSAN_TRAP=y: image +0.2% (text +0.9%, data +1.6%)
      
      Additionally adjusts the CONFIG_UBSAN Kconfig help for clarity and removes
      the mention of non-existing boot param "ubsan_handle".
      
      Suggested-by: default avatarElena Petrova <lenaptr@google.com>
      Signed-off-by: default avatarKees Cook <keescook@chromium.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Acked-by: default avatarDmitry Vyukov <dvyukov@google.com>
      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
      Cc: Andrey Konovalov <andreyknvl@google.com>
      Cc: Alexander Potapenko <glider@google.com>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
      Cc: Arnd Bergmann <arnd@arndb.de>
      Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
      Link: http://lkml.kernel.org/r/20200227193516.32566-2-keescook@chromium.org
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0887a7eb
    • Krzysztof Kozlowski's avatar
      init/Kconfig: clean up ANON_INODES and old IO schedulers options · 7baf2199
      Krzysztof Kozlowski authored
      CONFIG_ANON_INODES is gone since commit 5dd50aae ("Make anon_inodes
      unconditional").
      
      CONFIG_CFQ_GROUP_IOSCHED was replaced with CONFIG_BFQ_GROUP_IOSCHED in
      commit f382fb0b
      
       ("block: remove legacy IO schedulers").
      
      Signed-off-by: default avatarKrzysztof Kozlowski <krzk@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Link: http://lkml.kernel.org/r/20200130192419.3026-1-krzk@kernel.org
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7baf2199
    • Gustavo A. R. Silva's avatar
      kernel/gcov/fs.c: replace zero-length array with flexible-array member · 6524d794
      Gustavo A. R. Silva authored
      The current codebase makes use of the zero-length array language extension
      to the C90 standard, but the preferred mechanism to declare
      variable-length types such as these ones is a flexible array member[1][2],
      introduced in C99:
      
      struct foo {
              int stuff;
              struct boo array[];
      };
      
      By making use of the mechanism above, we will get a compiler warning in
      case the flexible array does not occur last in the structure, which will
      help us prevent some kind of undefined behavior bugs from being
      inadvertently introduced[3] to the codebase from now on.
      
      Also, notice that, dynamic memory allocations won't be affected by this
      change:
      
      "Flexible array members have incomplete type, and so the sizeof operator
      may not be applied.  As a quirk of the original implementation of
      zero-length arrays, sizeof evaluates to zero."[1]
      
      This issue was found with the help of Coccinelle.
      
      [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
      [2] https://github.com/KSPP/linux/issues/21
      [3] commit 76497732
      
       ("cxgb3/l2t: Fix undefined behaviour")
      
      Signed-off-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Peter Oberparleiter <oberpar@linux.ibm.com>
      Link: http://lkml.kernel.org/r/20200302224851.GA26467@embeddedor
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6524d794
    • Gustavo A. R. Silva's avatar
      gcov: gcc_3_4: replace zero-length array with flexible-array member · 7ff87182
      Gustavo A. R. Silva authored
      The current codebase makes use of the zero-length array language extension
      to the C90 standard, but the preferred mechanism to declare
      variable-length types such as these ones is a flexible array member[1][2],
      introduced in C99:
      
      struct foo {
              int stuff;
              struct boo array[];
      };
      
      By making use of the mechanism above, we will get a compiler warning in
      case the flexible array does not occur last in the structure, which will
      help us prevent some kind of undefined behavior bugs from being
      inadvertently introduced[3] to the codebase from now on.
      
      Also, notice that, dynamic memory allocations won't be affected by this
      change:
      
      "Flexible array members have incomplete type, and so the sizeof operator
      may not be applied.  As a quirk of the original implementation of
      zero-length arrays, sizeof evaluates to zero."[1]
      
      This issue was found with the help of Coccinelle.
      
      [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
      [2] https://github.com/KSPP/linux/issues/21
      [3] commit 76497732
      
       ("cxgb3/l2t: Fix undefined behaviour")
      
      Signed-off-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Cc: Peter Oberparleiter <oberpar@linux.ibm.com>
      Link: http://lkml.kernel.org/r/20200302224501.GA14175@embeddedor
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      7ff87182
    • Gustavo A. R. Silva's avatar
      gcov: gcc_4_7: replace zero-length array with flexible-array member · fba4168e
      Gustavo A. R. Silva authored
      The current codebase makes use of the zero-length array language extension
      to the C90 standard, but the preferred mechanism to declare
      variable-length types such as these ones is a flexible array member[1][2],
      introduced in C99:
      
      struct foo {
              int stuff;
              struct boo array[];
      };
      
      By making use of the mechanism above, we will get a compiler warning in
      case the flexible array does not occur last in the structure, which will
      help us prevent some kind of undefined behavior bugs from being
      inadvertently introduced[3] to the codebase from now on.
      
      Also, notice that, dynamic memory allocations won't be affected by this
      change:
      
      "Flexible array members have incomplete type, and so the sizeof operator
      may not be applied.  As a quirk of the original implementation of
      zero-length arrays, sizeof evaluates to zero."[1]
      
      This issue was found with the help of Coccinelle.
      
      [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
      [2] https://github.com/KSPP/linux/issues/21
      [3] commit 76497732
      
       ("cxgb3/l2t: Fix undefined behaviour")
      
      Signed-off-by: default avatarGustavo A. R. Silva <gustavo@embeddedor.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Acked-by: default avatarPeter Oberparleiter <oberpar@linux.ibm.com>
      Link: http://lkml.kernel.org/r/20200213152241.GA877@embeddedor
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      fba4168e
    • Qiujun Huang's avatar
    • Colin Ian King's avatar
      reiserfs: clean up several indentation issues · 5404e7e0
      Colin Ian King authored
      
      
      There are several places where code is indented incorrectly. Fix these.
      
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Link: http://lkml.kernel.org/r/20200325135018.113431-1-colin.king@canonical.com
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5404e7e0
    • Will Deacon's avatar
      kallsyms: unexport kallsyms_lookup_name() and kallsyms_on_each_symbol() · 0bd476e6
      Will Deacon authored
      
      
      kallsyms_lookup_name() and kallsyms_on_each_symbol() are exported to
      modules despite having no in-tree users and being wide open to abuse by
      out-of-tree modules that can use them as a method to invoke arbitrary
      non-exported kernel functions.
      
      Unexport kallsyms_lookup_name() and kallsyms_on_each_symbol().
      
      Signed-off-by: default avatarWill Deacon <will@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Reviewed-by: default avatarQuentin Perret <qperret@google.com>
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Frederic Weisbecker <frederic@kernel.org>
      Cc: K.Prasad <prasad@linux.vnet.ibm.com>
      Cc: Miroslav Benes <mbenes@suse.cz>
      Cc: Petr Mladek <pmladek@suse.com>
      Cc: Joe Lawrence <joe.lawrence@redhat.com>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@effi...
      0bd476e6
    • Will Deacon's avatar
      samples/hw_breakpoint: drop use of kallsyms_lookup_name() · d8a84d33
      Will Deacon authored
      The 'data_breakpoint' test code is the only modular user of
      kallsyms_lookup_name(), which was exported as part of fixing the test in
      f60d24d2
      
       ("hw-breakpoints: Fix broken hw-breakpoint sample module").
      
      In preparation for un-exporting this symbol, switch the test over to using
      __symbol_get(), which can be used to place breakpoints on exported
      symbols.
      
      Signed-off-by: default avatarWill Deacon <will@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Reviewed-by: default avatarQuentin Perret <qperret@google.com>
      Cc: K.Prasad <prasad@linux.vnet.ibm.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Frederic Weisbecker <frederic@kernel.org>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Miroslav Benes <mbenes@suse.cz>
      Cc: Petr Mladek <pmladek@suse.com>
      Cc: Joe Lawrence <joe.lawrence@redhat.com>
      Link: http://lkml.kern...
      d8a84d33
    • Will Deacon's avatar
      samples/hw_breakpoint: drop HW_BREAKPOINT_R when reporting writes · 4800314e
      Will Deacon authored
      
      
      Patch series "Unexport kallsyms_lookup_name() and kallsyms_on_each_symbol()".
      
      Despite having just a single modular in-tree user that I could spot,
      kallsyms_lookup_name() is exported to modules and provides a mechanism
      for out-of-tree modules to access and invoke arbitrary, non-exported
      kernel symbols when kallsyms is enabled.
      
      This patch series fixes up that one user and unexports the symbol along
      with kallsyms_on_each_symbol(), since that could also be abused in a
      similar manner.
      
      I would like to avoid out-of-tree modules being easily able to call
      functions that are not exported.  kallsyms_lookup_name() makes this
      trivial to the point that there is very little incentive to rework these
      modules to either use upstream interfaces correctly or propose
      functionality which may be otherwise missing upstream.  Both of these
      latter solutions would be pre-requisites to upstreaming these modules, and
      the current state of things actively discourages that approach.
      
      The background here is that we are aiming for Android devices to be able
      to use a generic binary kernel image closely following upstream, with any
      vendor extensions coming in as kernel modules.  In this case, we (Google)
      end up maintaining the binary module ABI within the scope of a single LTS
      kernel.  Monitoring and managing the ABI surface is not feasible if it
      effectively includes all data and functions via kallsyms_lookup_name().
      Of course, we could just carry this patch in the Android kernel tree, but
      we're aiming to carry as little as possible (ideally nothing) and I think
      it's a sensible change in its own right.  I'm surprised you object to it,
      in all honesty.
      
      Now, you could turn around and say "that's not upstream's problem", but it
      still seems highly undesirable to me to have an upstream bypass for
      exported symbols that isn't even used by upstream modules.  It's ripe for
      abuse and encourages people to work outside of the upstream tree.  The
      usual rule is that we don't export symbols without a user in the tree and
      that seems especially relevant in this case.
      
      Joe Lawrence said:
      
      : FWIW, kallsyms was historically used by the out-of-tree kpatch support
      : module to resolve external symbols as well as call set_memory_r{w,o}()
      : API.  All of that support code has been merged upstream, so modern kpatch
      : modules* no longer leverage kallsyms by default.
      :
      : That said, there are still some users who still use the deprecated support
      : module with newer kernels, but that is not officially supported by the
      : project.
      
      This patch (of 3):
      
      Given the name of a kernel symbol, the 'data_breakpoint' test claims to
      "report any write operations on the kernel symbol".  However, it creates
      the breakpoint using both HW_BREAKPOINT_W and HW_BREAKPOINT_R, which menas
      it also fires for read access.
      
      Drop HW_BREAKPOINT_R from the breakpoint attributes.
      
      Signed-off-by: default avatarWill Deacon <will@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
      Reviewed-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
      Reviewed-by: default avatarQuentin Perret <qperret@google.com>
      Cc: K.Prasad <prasad@linux.vnet.ibm.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Frederic Weisbecker <frederic@kernel.org>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Cc: Miroslav Benes <mbenes@suse.cz>
      Cc: Petr Mladek <pmladek@suse.com>
      Cc: Joe Lawrence <joe.lawrence@redhat.com>
      Link: http://lkml.kernel.org/r/20200221114404.14641-2-will@kernel.org
      
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4800314e