09 Dec, 2019

6 commits

  • Since commit fcbb8461fd23 ("kbuild: remove header compile test"),
    'make clean' with O= option in the pristine source tree emits
    'No such file or directory' warning.

    $ git clean -d -f -x
    $ make O=foo clean
    make[1]: Entering directory '/home/masahiro/linux/foo'
    find: ‘usr/include’: No such file or directory
    make[1]: Leaving directory '/home/masahiro/linux/foo'

    Fixes: fcbb8461fd23 ("kbuild: remove header compile test")
    Reported-by: kbuild test robot
    Signed-off-by: Masahiro Yamada

    Masahiro Yamada
     
  • Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) More jumbo frame fixes in r8169, from Heiner Kallweit.

    2) Fix bpf build in minimal configuration, from Alexei Starovoitov.

    3) Use after free in slcan driver, from Jouni Hogander.

    4) Flower classifier port ranges don't work properly in the HW offload
    case, from Yoshiki Komachi.

    5) Use after free in hns3_nic_maybe_stop_tx(), from Yunsheng Lin.

    6) Out of bounds access in mqprio_dump(), from Vladyslav Tarasiuk.

    7) Fix flow dissection in dsa TX path, from Alexander Lobakin.

    8) Stale syncookie timestampe fixes from Guillaume Nault.

    [ Did an evil merge to silence a warning introduced by this pull - Linus ]

    * git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net: (84 commits)
    r8169: fix rtl_hw_jumbo_disable for RTL8168evl
    net_sched: validate TCA_KIND attribute in tc_chain_tmplt_add()
    r8169: add missing RX enabling for WoL on RTL8125
    vhost/vsock: accept only packets with the right dst_cid
    net: phy: dp83867: fix hfs boot in rgmii mode
    net: ethernet: ti: cpsw: fix extra rx interrupt
    inet: protect against too small mtu values.
    gre: refetch erspan header from skb->data after pskb_may_pull()
    pppoe: remove redundant BUG_ON() check in pppoe_pernet
    tcp: Protect accesses to .ts_recent_stamp with {READ,WRITE}_ONCE()
    tcp: tighten acceptance of ACKs not matching a child socket
    tcp: fix rejected syncookies due to stale timestamps
    lpc_eth: kernel BUG on remove
    tcp: md5: fix potential overestimation of TCP option space
    net: sched: allow indirect blocks to bind to clsact in TC
    net: core: rename indirect block ingress cb function
    net-sysfs: Call dev_hold always in netdev_queue_add_kobject
    net: dsa: fix flow dissection on Tx path
    net/tls: Fix return values to avoid ENOTSUPP
    net: avoid an indirect call in ____sys_recvmsg()
    ...

    Linus Torvalds
     
  • Pull more SCSI updates from James Bottomley:
    "Eleven patches, all in drivers (no core changes) that are either minor
    cleanups or small fixes.

    They were late arriving, but still safe for -rc1"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: MAINTAINERS: Add the linux-scsi mailing list to the ISCSI entry
    scsi: megaraid_sas: Make poll_aen_lock static
    scsi: sd_zbc: Improve report zones error printout
    scsi: qla2xxx: Fix qla2x00_request_irqs() for MSI
    scsi: qla2xxx: unregister ports after GPN_FT failure
    scsi: qla2xxx: fix rports not being mark as lost in sync fabric scan
    scsi: pm80xx: Remove unused include of linux/version.h
    scsi: pm80xx: fix logic to break out of loop when register value is 2 or 3
    scsi: scsi_transport_sas: Fix memory leak when removing devices
    scsi: lpfc: size cpu map by last cpu id set
    scsi: ibmvscsi_tgt: Remove unneeded variable rc

    Linus Torvalds
     
  • Pull cifs fixes from Steve French:
    "Nine cifs/smb3 fixes:

    - one fix for stable (oops during oplock break)

    - two timestamp fixes including important one for updating mtime at
    close to avoid stale metadata caching issue on dirty files (also
    improves perf by using SMB2_CLOSE_FLAG_POSTQUERY_ATTRIB over the
    wire)

    - two fixes for "modefromsid" mount option for file create (now
    allows mode bits to be set more atomically and accurately on create
    by adding "sd_context" on create when modefromsid specified on
    mount)

    - two fixes for multichannel found in testing this week against
    different servers

    - two small cleanup patches"

    * tag '5.5-rc-smb3-fixes-part2' of git://git.samba.org/sfrench/cifs-2.6:
    smb3: improve check for when we send the security descriptor context on create
    smb3: fix mode passed in on create for modetosid mount option
    cifs: fix possible uninitialized access and race on iface_list
    cifs: Fix lookup of SMB connections on multichannel
    smb3: query attributes on file close
    smb3: remove unused flag passed into close functions
    cifs: remove redundant assignment to pointer pneg_ctxt
    fs: cifs: Fix atime update check vs mtime
    CIFS: Fix NULL-pointer dereference in smb2_push_mandatory_locks

    Linus Torvalds
     
  • Pull misc vfs cleanups from Al Viro:
    "No common topic, just three cleanups".

    * 'work.misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
    make __d_alloc() static
    fs/namespace: add __user to open_tree and move_mount syscalls
    fs/fnctl: fix missing __user in fcntl_rw_hint()

    Linus Torvalds
     

08 Dec, 2019

34 commits

  • Pull NTB update from Jon Mason:
    "Just a simple patch to add a new Hygon Device ID to the AMD NTB device
    driver"

    * tag 'ntb-5.5' of git://github.com/jonmason/ntb:
    NTB: Add Hygon Device ID

    Linus Torvalds
     
  • Pull more input updates from Dmitry Torokhov:

    - fixups for Synaptics RMI4 driver

    - a quirk for Goodinx touchscreen on Teclast tablet

    - a new keycode definition for activating privacy screen feature found
    on a few "enterprise" laptops

    - updates to snvs_pwrkey driver

    - polling uinput device for writing (which is always allowed) now works

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
    Input: synaptics-rmi4 - don't increment rmiaddr for SMBus transfers
    Input: synaptics-rmi4 - re-enable IRQs in f34v7_do_reflash
    Input: goodix - add upside-down quirk for Teclast X89 tablet
    Input: add privacy screen toggle keycode
    Input: uinput - fix returning EPOLLOUT from uinput_poll
    Input: snvs_pwrkey - remove gratuitous NULL initializers
    Input: snvs_pwrkey - send key events for i.MX6 S, DL and Q

    Linus Torvalds
     
  • Pull iomap fixes from Darrick Wong:
    "Fix a race condition and a use-after-free error:

    - Fix a UAF when reporting writeback errors

    - Fix a race condition when handling page uptodate on fragmented file
    with blocksize < pagesize"

    * tag 'iomap-5.5-merge-14' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
    iomap: stop using ioend after it's been freed in iomap_finish_ioend()
    iomap: fix sub-page uptodate handling

    Linus Torvalds
     
  • Pull xfs fixes from Darrick Wong:
    "Fix a couple of resource management errors and a hang:

    - fix a crash in the log setup code when log mounting fails

    - fix a hang when allocating space on the realtime device

    - fix a block leak when freeing space on the realtime device"

    * tag 'xfs-5.5-merge-17' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux:
    xfs: fix mount failure crash on invalid iclog memory access
    xfs: don't check for AG deadlock for realtime files in bunmapi
    xfs: fix realtime file data space leak

    Linus Torvalds
     
  • Pull orangefs update from Mike Marshall:
    "orangefs: posix open permission checking...

    Orangefs has no open, and orangefs checks file permissions on each
    file access. Posix requires that file permissions be checked on open
    and nowhere else. Orangefs-through-the-kernel needs to seem posix
    compliant.

    The VFS opens files, even if the filesystem provides no method. We can
    see if a file was successfully opened for read and or for write by
    looking at file->f_mode.

    When writes are flowing from the page cache, file is no longer
    available. We can trust the VFS to have checked file->f_mode before
    writing to the page cache.

    The mode of a file might change between when it is opened and IO
    commences, or it might be created with an arbitrary mode.

    We'll make sure we don't hit EACCES during the IO stage by using
    UID 0"

    [ This is "posixish", but not a great solution in the long run, since a
    proper secure network server shouldn't really trust the client like this.
    But proper and secure POSIX behavior requires an open method and a
    resulting cookie for IO of some kind, or similar. - Linus ]

    * tag 'for-linus-5.5-ofs1' of git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux:
    orangefs: posix open permission checking...

    Linus Torvalds
     
  • Pull nfsd updates from Bruce Fields:
    "This is a relatively quiet cycle for nfsd, mainly various bugfixes.

    Possibly most interesting is Trond's fixes for some callback races
    that were due to my incomplete understanding of rpc client shutdown.
    Unfortunately at the last minute I've started noticing a new
    intermittent failure to send callbacks. As the logic seems basically
    correct, I'm leaving Trond's patches in for now, and hope to find a
    fix in the next week so I don't have to revert those patches"

    * tag 'nfsd-5.5' of git://linux-nfs.org/~bfields/linux: (24 commits)
    nfsd: depend on CRYPTO_MD5 for legacy client tracking
    NFSD fixing possible null pointer derefering in copy offload
    nfsd: check for EBUSY from vfs_rmdir/vfs_unink.
    nfsd: Ensure CLONE persists data and metadata changes to the target file
    SUNRPC: Fix backchannel latency metrics
    nfsd: restore NFSv3 ACL support
    nfsd: v4 support requires CRYPTO_SHA256
    nfsd: Fix cld_net->cn_tfm initialization
    lockd: remove __KERNEL__ ifdefs
    sunrpc: remove __KERNEL__ ifdefs
    race in exportfs_decode_fh()
    nfsd: Drop LIST_HEAD where the variable it declares is never used.
    nfsd: document callback_wq serialization of callback code
    nfsd: mark cb path down on unknown errors
    nfsd: Fix races between nfsd4_cb_release() and nfsd4_shutdown_callback()
    nfsd: minor 4.1 callback cleanup
    SUNRPC: Fix svcauth_gss_proxy_init()
    SUNRPC: Trace gssproxy upcall results
    sunrpc: fix crash when cache_head become valid before update
    nfsd: remove private bin2hex implementation
    ...

    Linus Torvalds
     
  • Pull NFS client updates from Trond Myklebust:
    "Highlights include:

    Features:

    - NFSv4.2 now supports cross device offloaded copy (i.e. offloaded
    copy of a file from one source server to a different target
    server).

    - New RDMA tracepoints for debugging congestion control and Local
    Invalidate WRs.

    Bugfixes and cleanups

    - Drop the NFSv4.1 session slot if nfs4_delegreturn_prepare waits for
    layoutreturn

    - Handle bad/dead sessions correctly in nfs41_sequence_process()

    - Various bugfixes to the delegation return operation.

    - Various bugfixes pertaining to delegations that have been revoked.

    - Cleanups to the NFS timespec code to avoid unnecessary conversions
    between timespec and timespec64.

    - Fix unstable RDMA connections after a reconnect

    - Close race between waking an RDMA sender and posting a receive

    - Wake pending RDMA tasks if connection fails

    - Fix MR list corruption, and clean up MR usage

    - Fix another RPCSEC_GSS issue with MIC buffer space"

    * tag 'nfs-for-5.5-1' of git://git.linux-nfs.org/projects/trondmy/linux-nfs: (79 commits)
    SUNRPC: Capture completion of all RPC tasks
    SUNRPC: Fix another issue with MIC buffer space
    NFS4: Trace lock reclaims
    NFS4: Trace state recovery operation
    NFSv4.2 fix memory leak in nfs42_ssc_open
    NFSv4.2 fix kfree in __nfs42_copy_file_range
    NFS: remove duplicated include from nfs4file.c
    NFSv4: Make _nfs42_proc_copy_notify() static
    NFS: Fallocate should use the nfs4_fattr_bitmap
    NFS: Return -ETXTBSY when attempting to write to a swapfile
    fs: nfs: sysfs: Remove NULL check before kfree
    NFS: remove unneeded semicolon
    NFSv4: add declaration of current_stateid
    NFSv4.x: Drop the slot if nfs4_delegreturn_prepare waits for layoutreturn
    NFSv4.x: Handle bad/dead sessions correctly in nfs41_sequence_process()
    nfsv4: Move NFSPROC4_CLNT_COPY_NOTIFY to end of list
    SUNRPC: Avoid RPC delays when exiting suspend
    NFS: Add a tracepoint in nfs_fh_to_dentry()
    NFSv4: Don't retry the GETATTR on old stateid in nfs4_delegreturn_done()
    NFSv4: Handle NFS4ERR_OLD_STATEID in delegreturn
    ...

    Linus Torvalds
     
  • We had cases in the previous patch where we were sending the security
    descriptor context on SMB3 open (file create) in cases when we hadn't
    mounted with with "modefromsid" mount option.

    Add check for that mount flag before calling ad_sd_context in
    open init.

    Signed-off-by: Steve French
    Reviewed-by: Pavel Shilovsky

    Steve French
     
  • Pull VFIO updates from Alex Williamson:

    - Remove hugepage checks for reserved pfns (Ben Luo)

    - Fix irq-bypass unregister ordering (Jiang Yi)

    * tag 'vfio-v5.5-rc1' of git://github.com/awilliam/linux-vfio:
    vfio/pci: call irq_bypass_unregister_producer() before freeing irq
    vfio/type1: remove hugepage checks in is_invalid_reserved_pfn()

    Linus Torvalds
     
  • Pull more xen updates from Juergen Gross:

    - a patch to fix a build warning

    - a cleanup of no longer needed code in the Xen event handling

    - a small series for the Xen grant driver avoiding high order
    allocations and replacing an insane global limit by a per-call one

    - a small series fixing Xen frontend/backend module referencing

    * tag 'for-linus-5.5b-rc1-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip:
    xen-blkback: allow module to be cleanly unloaded
    xen/xenbus: reference count registered modules
    xen/gntdev: switch from kcalloc() to kvcalloc()
    xen/gntdev: replace global limit of mapped pages by limit per call
    xen/gntdev: remove redundant non-zero check on ret
    xen/events: remove event handling recursion detection

    Linus Torvalds
     
  • Merge misc Kconfig updates from Andrew Morton:
    "A number of changes to Kconfig files under lib/ from Changbin Du and
    Krzysztof Kozlowski"

    * emailed patches from Andrew Morton :
    lib/: fix Kconfig indentation
    kernel-hacking: move DEBUG_FS to 'Generic Kernel Debugging Instruments'
    kernel-hacking: move DEBUG_BUGVERBOSE to 'printk and dmesg options'
    kernel-hacking: create a submenu for scheduler debugging options
    kernel-hacking: move SCHED_STACK_END_CHECK after DEBUG_STACK_USAGE
    kernel-hacking: move Oops into 'Lockups and Hangs'
    kernel-hacking: move kernel testing and coverage options to same submenu
    kernel-hacking: group kernel data structures debugging together
    kernel-hacking: create submenu for arch special debugging options
    kernel-hacking: group sysrq/kgdb/ubsan into 'Generic Kernel Debugging Instruments'

    Linus Torvalds
     
  • In referenced fix we removed the RTL8168e-specific jumbo config for
    RTL8168evl in rtl_hw_jumbo_enable(). We have to do the same in
    rtl_hw_jumbo_disable().

    v2: fix referenced commit id

    Fixes: 14012c9f3bb9 ("r8169: fix jumbo configuration for RTL8168evl")
    Signed-off-by: Heiner Kallweit
    Signed-off-by: David S. Miller

    Heiner Kallweit
     
  • pipe_wait() may be simple, but since it relies on the pipe lock, it
    means that we have to do the wakeup while holding the lock. That's
    unfortunate, because the very first thing the waked entity will want to
    do is to get the pipe lock for itself.

    So get rid of the pipe_wait() usage by simply releasing the pipe lock,
    doing the wakeup (if required) and then using wait_event_interruptible()
    to wait on the right condition instead.

    wait_event_interruptible() handles races on its own by comparing the
    wakeup condition before and after adding itself to the wait queue, so
    you can use an optimistic unlocked condition for it.

    Cc: David Howells
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Signed-off-by: Jiasen Lin
    Signed-off-by: Jon Mason

    Jiasen Lin
     
  • This code is ancient, and goes back to when we only had a single page
    for the pipe buffers. The exact history is hidden in the mists of time
    (ie "before git", and in fact predates the BK repository too).

    At that long-ago point in time, it actually helped to try to merge big
    back-and-forth pipe reads and writes, and not limit pipe reads to the
    single pipe buffer in length just because that was all we had at a time.

    However, since then we've expanded the pipe buffers to multiple pages,
    and this logic really doesn't seem to make sense. And a lot of it is
    somewhat questionable (ie "hmm, the user asked for a non-blocking read,
    but we see that there's a writer pending, so let's wait anyway to get
    the extra data that the writer will have").

    But more importantly, it makes the "go to sleep" logic much less
    obvious, and considering the wakeup issues we've had, I want to make for
    less of those kinds of things.

    Cc: David Howells
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • This is the read side version of the previous commit: it simplifies the
    logic to only wake up waiting writers when necessary, and makes sure to
    use a synchronous wakeup. This time not so much for GNU make jobserver
    reasons (that pipe never fills up), but simply to get the writer going
    quickly again.

    A bit less verbose commentary this time, if only because I assume that
    the write side commentary isn't going to be ignored if you touch this
    code.

    Cc: David Howells
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • The pipe rework ends up having been extra painful, partly becaused of
    actual bugs with ordering and caching of the pipe state, but also
    because of subtle performance issues.

    In particular, the pipe rework caused the kernel build to inexplicably
    slow down.

    The reason turns out to be that the GNU make jobserver (which limits the
    parallelism of the build) uses a pipe to implement a "token" system: a
    parallel submake will read a character from the pipe to get the job
    token before starting a new job, and will write a character back to the
    pipe when it is done. The overall job limit is thus easily controlled
    by just writing the appropriate number of initial token characters into
    the pipe.

    But to work well, that really means that the old behavior of write
    wakeups being synchronous (WF_SYNC) is very important - when the pipe
    writer wakes up a reader, we want the reader to actually get scheduled
    immediately. Otherwise you lose the parallelism of the build.

    The pipe rework lost that synchronous wakeup on write, and we had
    clearly all forgotten the reasons and rules for it.

    This rewrites the pipe write wakeup logic to do the required Wsync
    wakeups, but also clarifies the logic and avoids extraneous wakeups.

    It also ends up addign a number of comments about what oit does and why,
    so that we hopefully don't end up forgetting about this next time we
    change this code.

    Cc: David Howells
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • Use the new tcf_proto_check_kind() helper to make sure user
    provided value is well formed.

    BUG: KMSAN: uninit-value in string_nocheck lib/vsprintf.c:606 [inline]
    BUG: KMSAN: uninit-value in string+0x4be/0x600 lib/vsprintf.c:668
    CPU: 0 PID: 12358 Comm: syz-executor.1 Not tainted 5.4.0-rc8-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
    __dump_stack lib/dump_stack.c:77 [inline]
    dump_stack+0x1c9/0x220 lib/dump_stack.c:118
    kmsan_report+0x128/0x220 mm/kmsan/kmsan_report.c:108
    __msan_warning+0x64/0xc0 mm/kmsan/kmsan_instr.c:245
    string_nocheck lib/vsprintf.c:606 [inline]
    string+0x4be/0x600 lib/vsprintf.c:668
    vsnprintf+0x218f/0x3210 lib/vsprintf.c:2510
    __request_module+0x2b1/0x11c0 kernel/kmod.c:143
    tcf_proto_lookup_ops+0x171/0x700 net/sched/cls_api.c:139
    tc_chain_tmplt_add net/sched/cls_api.c:2730 [inline]
    tc_ctl_chain+0x1904/0x38a0 net/sched/cls_api.c:2850
    rtnetlink_rcv_msg+0x115a/0x1580 net/core/rtnetlink.c:5224
    netlink_rcv_skb+0x431/0x620 net/netlink/af_netlink.c:2477
    rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:5242
    netlink_unicast_kernel net/netlink/af_netlink.c:1302 [inline]
    netlink_unicast+0xf3e/0x1020 net/netlink/af_netlink.c:1328
    netlink_sendmsg+0x110f/0x1330 net/netlink/af_netlink.c:1917
    sock_sendmsg_nosec net/socket.c:637 [inline]
    sock_sendmsg net/socket.c:657 [inline]
    ___sys_sendmsg+0x14ff/0x1590 net/socket.c:2311
    __sys_sendmsg net/socket.c:2356 [inline]
    __do_sys_sendmsg net/socket.c:2365 [inline]
    __se_sys_sendmsg+0x305/0x460 net/socket.c:2363
    __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2363
    do_syscall_64+0xb6/0x160 arch/x86/entry/common.c:291
    entry_SYSCALL_64_after_hwframe+0x44/0xa9
    RIP: 0033:0x45a649
    Code: ad b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 3d 01 f0 ff ff 0f 83 7b b6 fb ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007f0790795c78 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
    RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 000000000045a649
    RDX: 0000000000000000 RSI: 0000000020000300 RDI: 0000000000000006
    RBP: 000000000075bfc8 R08: 0000000000000000 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000246 R12: 00007f07907966d4
    R13: 00000000004c8db5 R14: 00000000004df630 R15: 00000000ffffffff

    Uninit was created at:
    kmsan_save_stack_with_flags mm/kmsan/kmsan.c:149 [inline]
    kmsan_internal_poison_shadow+0x5c/0x110 mm/kmsan/kmsan.c:132
    kmsan_slab_alloc+0x97/0x100 mm/kmsan/kmsan_hooks.c:86
    slab_alloc_node mm/slub.c:2773 [inline]
    __kmalloc_node_track_caller+0xe27/0x11a0 mm/slub.c:4381
    __kmalloc_reserve net/core/skbuff.c:141 [inline]
    __alloc_skb+0x306/0xa10 net/core/skbuff.c:209
    alloc_skb include/linux/skbuff.h:1049 [inline]
    netlink_alloc_large_skb net/netlink/af_netlink.c:1174 [inline]
    netlink_sendmsg+0x783/0x1330 net/netlink/af_netlink.c:1892
    sock_sendmsg_nosec net/socket.c:637 [inline]
    sock_sendmsg net/socket.c:657 [inline]
    ___sys_sendmsg+0x14ff/0x1590 net/socket.c:2311
    __sys_sendmsg net/socket.c:2356 [inline]
    __do_sys_sendmsg net/socket.c:2365 [inline]
    __se_sys_sendmsg+0x305/0x460 net/socket.c:2363
    __x64_sys_sendmsg+0x4a/0x70 net/socket.c:2363
    do_syscall_64+0xb6/0x160 arch/x86/entry/common.c:291
    entry_SYSCALL_64_after_hwframe+0x44/0xa9

    Fixes: 6f96c3c6904c ("net_sched: fix backward compatibility for TCA_KIND")
    Signed-off-by: Eric Dumazet
    Reported-by: syzbot
    Acked-by: Cong Wang
    Cc: Marcelo Ricardo Leitner
    Cc: Jamal Hadi Salim
    Cc: Jiri Pirko
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • RTL8125 also requires to enable RX for WoL.

    v2: add missing Fixes tag

    Fixes: f1bce4ad2f1c ("r8169: add support for RTL8125")
    Signed-off-by: Heiner Kallweit
    Signed-off-by: David S. Miller

    Heiner Kallweit
     
  • When we receive a new packet from the guest, we check if the
    src_cid is correct, but we forgot to check the dst_cid.

    The host should accept only packets where dst_cid is
    equal to the host CID.

    Signed-off-by: Stefano Garzarella
    Signed-off-by: David S. Miller

    Stefano Garzarella
     
  • The commit ef87f7da6b28 ("net: phy: dp83867: move dt parsing to probe")
    causes regression on TI dra71x-evm and dra72x-evm, where DP83867 PHY is
    used in "rgmii-id" mode - the networking stops working.
    Unfortunately, it's not enough to just move DT parsing code to .probe() as
    it depends on phydev->interface value, which is set to correct value abter
    the .probe() is completed and before calling .config_init(). So, RGMII
    configuration can't be loaded from DT.

    To fix and issue
    - move RGMII validation code to .config_init()
    - parse RGMII parameters in dp83867_of_init(), but consider them as
    optional.

    Fixes: ef87f7da6b28 ("net: phy: dp83867: move dt parsing to probe")
    Signed-off-by: Grygorii Strashko
    Signed-off-by: David S. Miller

    Grygorii Strashko
     
  • Now RX interrupt is triggered twice every time, because in
    cpsw_rx_interrupt() it is asked first and then disabled. So there will be
    pending interrupt always, when RX interrupt is enabled again in NAPI
    handler.

    Fix it by first disabling IRQ and then do ask.

    Fixes: 870915feabdc ("drivers: net: cpsw: remove disable_irq/enable_irq as irq can be masked from cpsw itself")
    Signed-off-by: Grygorii Strashko
    Signed-off-by: David S. Miller

    Grygorii Strashko
     
  • syzbot was once again able to crash a host by setting a very small mtu
    on loopback device.

    Let's make inetdev_valid_mtu() available in include/net/ip.h,
    and use it in ip_setup_cork(), so that we protect both ip_append_page()
    and __ip_append_data()

    Also add a READ_ONCE() when the device mtu is read.

    Pairs this lockless read with one WRITE_ONCE() in __dev_set_mtu(),
    even if other code paths might write over this field.

    Add a big comment in include/linux/netdevice.h about dev->mtu
    needing READ_ONCE()/WRITE_ONCE() annotations.

    Hopefully we will add the missing ones in followup patches.

    [1]

    refcount_t: saturated; leaking memory.
    WARNING: CPU: 0 PID: 9464 at lib/refcount.c:22 refcount_warn_saturate+0x138/0x1f0 lib/refcount.c:22
    Kernel panic - not syncing: panic_on_warn set ...
    CPU: 0 PID: 9464 Comm: syz-executor850 Not tainted 5.4.0-syzkaller #0
    Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
    Call Trace:
    __dump_stack lib/dump_stack.c:77 [inline]
    dump_stack+0x197/0x210 lib/dump_stack.c:118
    panic+0x2e3/0x75c kernel/panic.c:221
    __warn.cold+0x2f/0x3e kernel/panic.c:582
    report_bug+0x289/0x300 lib/bug.c:195
    fixup_bug arch/x86/kernel/traps.c:174 [inline]
    fixup_bug arch/x86/kernel/traps.c:169 [inline]
    do_error_trap+0x11b/0x200 arch/x86/kernel/traps.c:267
    do_invalid_op+0x37/0x50 arch/x86/kernel/traps.c:286
    invalid_op+0x23/0x30 arch/x86/entry/entry_64.S:1027
    RIP: 0010:refcount_warn_saturate+0x138/0x1f0 lib/refcount.c:22
    Code: 06 31 ff 89 de e8 c8 f5 e6 fd 84 db 0f 85 6f ff ff ff e8 7b f4 e6 fd 48 c7 c7 e0 71 4f 88 c6 05 56 a6 a4 06 01 e8 c7 a8 b7 fd 0b e9 50 ff ff ff e8 5c f4 e6 fd 0f b6 1d 3d a6 a4 06 31 ff 89
    RSP: 0018:ffff88809689f550 EFLAGS: 00010286
    RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000
    RDX: 0000000000000000 RSI: ffffffff815e4336 RDI: ffffed1012d13e9c
    RBP: ffff88809689f560 R08: ffff88809c50a3c0 R09: fffffbfff15d31b1
    R10: fffffbfff15d31b0 R11: ffffffff8ae98d87 R12: 0000000000000001
    R13: 0000000000040100 R14: ffff888099041104 R15: ffff888218d96e40
    refcount_add include/linux/refcount.h:193 [inline]
    skb_set_owner_w+0x2b6/0x410 net/core/sock.c:1999
    sock_wmalloc+0xf1/0x120 net/core/sock.c:2096
    ip_append_page+0x7ef/0x1190 net/ipv4/ip_output.c:1383
    udp_sendpage+0x1c7/0x480 net/ipv4/udp.c:1276
    inet_sendpage+0xdb/0x150 net/ipv4/af_inet.c:821
    kernel_sendpage+0x92/0xf0 net/socket.c:3794
    sock_sendpage+0x8b/0xc0 net/socket.c:936
    pipe_to_sendpage+0x2da/0x3c0 fs/splice.c:458
    splice_from_pipe_feed fs/splice.c:512 [inline]
    __splice_from_pipe+0x3ee/0x7c0 fs/splice.c:636
    splice_from_pipe+0x108/0x170 fs/splice.c:671
    generic_splice_sendpage+0x3c/0x50 fs/splice.c:842
    do_splice_from fs/splice.c:861 [inline]
    direct_splice_actor+0x123/0x190 fs/splice.c:1035
    splice_direct_to_actor+0x3b4/0xa30 fs/splice.c:990
    do_splice_direct+0x1da/0x2a0 fs/splice.c:1078
    do_sendfile+0x597/0xd00 fs/read_write.c:1464
    __do_sys_sendfile64 fs/read_write.c:1525 [inline]
    __se_sys_sendfile64 fs/read_write.c:1511 [inline]
    __x64_sys_sendfile64+0x1dd/0x220 fs/read_write.c:1511
    do_syscall_64+0xfa/0x790 arch/x86/entry/common.c:294
    entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x441409
    Code: e8 ac e8 ff ff 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 3d 01 f0 ff ff 0f 83 eb 08 fc ff c3 66 2e 0f 1f 84 00 00 00 00
    RSP: 002b:00007fffb64c4f78 EFLAGS: 00000246 ORIG_RAX: 0000000000000028
    RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 0000000000441409
    RDX: 0000000000000000 RSI: 0000000000000006 RDI: 0000000000000005
    RBP: 0000000000073b8a R08: 0000000000000010 R09: 0000000000000010
    R10: 0000000000010001 R11: 0000000000000246 R12: 0000000000402180
    R13: 0000000000402210 R14: 0000000000000000 R15: 0000000000000000
    Kernel Offset: disabled
    Rebooting in 86400 seconds..

    Fixes: 1470ddf7f8ce ("inet: Remove explicit write references to sk/inet in ip_append_data")
    Signed-off-by: Eric Dumazet
    Reported-by: syzbot
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • After pskb_may_pull() we should always refetch the header
    pointers from the skb->data in case it got reallocated.

    In gre_parse_header(), the erspan header is still fetched
    from the 'options' pointer which is fetched before
    pskb_may_pull().

    Found this during code review of a KMSAN bug report.

    Fixes: cb73ee40b1b3 ("net: ip_gre: use erspan key field for tunnel lookup")
    Cc: Lorenzo Bianconi
    Signed-off-by: Cong Wang
    Acked-by: Lorenzo Bianconi
    Acked-by: William Tu
    Reviewed-by: Simon Horman
    Signed-off-by: David S. Miller

    Cong Wang
     
  • Passing NULL to pppoe_pernet causes a crash via BUG_ON.
    Dereferencing net in net_generici() also has the same effect. This patch
    removes the redundant BUG_ON check on the same parameter.

    Signed-off-by: Aditya Pakki
    Signed-off-by: David S. Miller

    Aditya Pakki
     
  • Adjust indentation from spaces to tab (+optional two spaces) as in
    coding style with command like:
    $ sed -e 's/^ / /' -i */Kconfig

    Link: http://lkml.kernel.org/r/20191120140140.19148-1-krzk@kernel.org
    Signed-off-by: Krzysztof Kozlowski
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Kozlowski
     
  • DEBUG_FS does not belong to 'Compile-time checks and compiler options'.

    Link: http://lkml.kernel.org/r/20190909144453.3520-10-changbin.du@gmail.com
    Cc: Randy Dunlap
    Signed-off-by: Changbin Du
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Changbin Du
     
  • I think DEBUG_BUGVERBOSE is a dmesg option which gives more debug info
    to dmesg.

    Link: http://lkml.kernel.org/r/20190909144453.3520-9-changbin.du@gmail.com
    Signed-off-by: Changbin Du
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Changbin Du
     
  • Create a submenu 'Scheduler Debugging' for scheduler debugging options.

    Link: http://lkml.kernel.org/r/20190909144453.3520-8-changbin.du@gmail.com
    Signed-off-by: Changbin Du
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Changbin Du
     
  • They are both memory debug options to debug kernel stack issues.

    Link: http://lkml.kernel.org/r/20190909144453.3520-7-changbin.du@gmail.com
    Signed-off-by: Changbin Du
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Changbin Du
     
  • They are similar options so place them together.

    Link: http://lkml.kernel.org/r/20190909144453.3520-6-changbin.du@gmail.com
    Signed-off-by: Changbin Du
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Changbin Du
     
  • Move error injection, coverage, testing options to a new top level
    submenu 'Kernel Testing and Coverage'. They are all for test purpose.

    Link: http://lkml.kernel.org/r/20190909144453.3520-5-changbin.du@gmail.com
    Signed-off-by: Changbin Du
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Changbin Du
     
  • Group these similar runtime data structures verification options
    together.

    Link: http://lkml.kernel.org/r/20190909144453.3520-4-changbin.du@gmail.com
    Signed-off-by: Changbin Du
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Changbin Du
     
  • The arch special options are a little long, so create a submenu for
    them.

    Link: http://lkml.kernel.org/r/20190909144453.3520-3-changbin.du@gmail.com
    Signed-off-by: Changbin Du
    Acked-by: Randy Dunlap
    Tested-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Changbin Du