28 Sep, 2019

1 commit

  • Pull 9p updates from Dominique Martinet:
    "Some of the usual small fixes and cleanup.

    Small fixes all around:
    - avoid overlayfs copy-up for PRIVATE mmaps
    - KUMSAN uninitialized warning for transport error
    - one syzbot memory leak fix in 9p cache
    - internal API cleanup for v9fs_fill_super"

    * tag '9p-for-5.4' of git://github.com/martinetd/linux:
    9p/vfs_super.c: Remove unused parameter data in v9fs_fill_super
    9p/cache.c: Fix memory leak in v9fs_cache_session_get_cookie
    9p: Transport error uninitialized
    9p: avoid attaching writeback_fid on mmap with type PRIVATE

    Linus Torvalds
     

03 Sep, 2019

1 commit

  • The p9_tag_alloc() does not initialize the transport error t_err field.
    The struct p9_req_t *req is allocated and stored in a struct p9_client
    variable. The field t_err is never initialized before p9_conn_cancel()
    checks its value.

    KUMSAN(KernelUninitializedMemorySantizer, a new error detection tool)
    reports this bug.

    ==================================================================
    BUG: KUMSAN: use of uninitialized memory in p9_conn_cancel+0x2d9/0x3b0
    Read of size 4 at addr ffff88805f9b600c by task kworker/1:2/1216

    CPU: 1 PID: 1216 Comm: kworker/1:2 Not tainted 5.2.0-rc4+ #28
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
    Workqueue: events p9_write_work
    Call Trace:
    dump_stack+0x75/0xae
    __kumsan_report+0x17c/0x3e6
    kumsan_report+0xe/0x20
    p9_conn_cancel+0x2d9/0x3b0
    p9_write_work+0x183/0x4a0
    process_one_work+0x4d1/0x8c0
    worker_thread+0x6e/0x780
    kthread+0x1ca/0x1f0
    ret_from_fork+0x35/0x40

    Allocated by task 1979:
    save_stack+0x19/0x80
    __kumsan_kmalloc.constprop.3+0xbc/0x120
    kmem_cache_alloc+0xa7/0x170
    p9_client_prepare_req.part.9+0x3b/0x380
    p9_client_rpc+0x15e/0x880
    p9_client_create+0x3d0/0xac0
    v9fs_session_init+0x192/0xc80
    v9fs_mount+0x67/0x470
    legacy_get_tree+0x70/0xd0
    vfs_get_tree+0x4a/0x1c0
    do_mount+0xba9/0xf90
    ksys_mount+0xa8/0x120
    __x64_sys_mount+0x62/0x70
    do_syscall_64+0x6d/0x1e0
    entry_SYSCALL_64_after_hwframe+0x44/0xa9

    Freed by task 0:
    (stack is not available)

    The buggy address belongs to the object at ffff88805f9b6008
    which belongs to the cache p9_req_t of size 144
    The buggy address is located 4 bytes inside of
    144-byte region [ffff88805f9b6008, ffff88805f9b6098)
    The buggy address belongs to the page:
    page:ffffea00017e6d80 refcount:1 mapcount:0 mapping:ffff888068b63740 index:0xffff88805f9b7d90 compound_mapcount: 0
    flags: 0x100000000010200(slab|head)
    raw: 0100000000010200 ffff888068b66450 ffff888068b66450 ffff888068b63740
    raw: ffff88805f9b7d90 0000000000100001 00000001ffffffff 0000000000000000
    page dumped because: kumsan: bad access detected
    ==================================================================

    Link: http://lkml.kernel.org/r/20190613070854.10434-1-shuaibinglu@126.com
    Signed-off-by: Lu Shuaibing
    [dominique.martinet@cea.fr: grouped the added init with the others]
    Signed-off-by: Dominique Martinet

    Lu Shuaibing
     

05 Aug, 2019

1 commit

  • Send and Receive completion is handled on a single CPU selected at
    the time each Completion Queue is allocated. Typically this is when
    an initiator instantiates an RDMA transport, or when a target
    accepts an RDMA connection.

    Some ULPs cannot open a connection per CPU to spread completion
    workload across available CPUs and MSI vectors. For such ULPs,
    provide an API that allows the RDMA core to select a completion
    vector based on the device's complement of available comp_vecs.

    ULPs that invoke ib_alloc_cq() with only comp_vector 0 are converted
    to use the new API so that their completion workloads interfere less
    with each other.

    Suggested-by: Håkon Bugge
    Signed-off-by: Chuck Lever
    Reviewed-by: Leon Romanovsky
    Cc:
    Cc:
    Link: https://lore.kernel.org/r/20190729171923.13428.52555.stgit@manet.1015granger.net
    Signed-off-by: Doug Ledford

    Chuck Lever
     

13 Jul, 2019

1 commit

  • Pull 9p updates from Dominique Martinet:
    "Two small fixes to properly cleanup the 9p transports list if
    virtio/xen module initialization fail.

    9p might otherwise try to access memory from a module that failed to
    register got freed"

    * tag '9p-for-5.3' of git://github.com/martinetd/linux:
    9p/xen: Add cleanup path in p9_trans_xen_init
    9p/virtio: Add cleanup path in p9_virtio_init

    Linus Torvalds
     

31 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details you should have received a copy of the gnu general
    public license along with this program if not write to free software
    foundation 51 franklin street fifth floor boston ma 02111 1301 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 27 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Richard Fontana
    Reviewed-by: Alexios Zavras
    Reviewed-by: Steve Winslow
    Reviewed-by: Allison Randal
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190528170026.981318839@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

21 May, 2019

1 commit


15 May, 2019

2 commits

  • If xenbus_register_frontend() fails in p9_trans_xen_init,
    we should call v9fs_unregister_trans() to do cleanup.

    Link: http://lkml.kernel.org/r/20190430143933.19368-1-yuehaibing@huawei.com
    Cc: stable@vger.kernel.org
    Fixes: 868eb122739a ("xen/9pfs: introduce Xen 9pfs transport driver")
    Signed-off-by: YueHaibing
    Signed-off-by: Dominique Martinet

    YueHaibing
     
  • KASAN report this:

    BUG: unable to handle kernel paging request at ffffffffa0097000
    PGD 3870067 P4D 3870067 PUD 3871063 PMD 2326e2067 PTE 0
    Oops: 0000 [#1
    CPU: 0 PID: 5340 Comm: modprobe Not tainted 5.1.0-rc7+ #25
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.9.3-0-ge2fc41e-prebuilt.qemu-project.org 04/01/2014
    RIP: 0010:__list_add_valid+0x10/0x70
    Code: c3 48 8b 06 55 48 89 e5 5d 48 39 07 0f 94 c0 0f b6 c0 c3 90 90 90 90 90 90 90 55 48 89 d0 48 8b 52 08 48 89 e5 48 39 f2 75 19 8b 32 48 39 f0 75 3a

    RSP: 0018:ffffc90000e23c68 EFLAGS: 00010246
    RAX: ffffffffa00ad000 RBX: ffffffffa009d000 RCX: 0000000000000000
    RDX: ffffffffa0097000 RSI: ffffffffa0097000 RDI: ffffffffa009d000
    RBP: ffffc90000e23c68 R08: 0000000000000001 R09: 0000000000000000
    R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffa0097000
    R13: ffff888231797180 R14: 0000000000000000 R15: ffffc90000e23e78
    FS: 00007fb215285540(0000) GS:ffff888237a00000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: ffffffffa0097000 CR3: 000000022f144000 CR4: 00000000000006f0
    Call Trace:
    v9fs_register_trans+0x2f/0x60 [9pnet
    ? 0xffffffffa0087000
    p9_virtio_init+0x25/0x1000 [9pnet_virtio
    do_one_initcall+0x6c/0x3cc
    ? kmem_cache_alloc_trace+0x248/0x3b0
    do_init_module+0x5b/0x1f1
    load_module+0x1db1/0x2690
    ? m_show+0x1d0/0x1d0
    __do_sys_finit_module+0xc5/0xd0
    __x64_sys_finit_module+0x15/0x20
    do_syscall_64+0x6b/0x1d0
    entry_SYSCALL_64_after_hwframe+0x49/0xbe
    RIP: 0033:0x7fb214d8e839
    Code: 00 f3 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 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 73 01

    RSP: 002b:00007ffc96554278 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
    RAX: ffffffffffffffda RBX: 000055e67eed2aa0 RCX: 00007fb214d8e839
    RDX: 0000000000000000 RSI: 000055e67ce95c2e RDI: 0000000000000003
    RBP: 000055e67ce95c2e R08: 0000000000000000 R09: 000055e67eed2aa0
    R10: 0000000000000003 R11: 0000000000000246 R12: 0000000000000000
    R13: 000055e67eeda500 R14: 0000000000040000 R15: 000055e67eed2aa0
    Modules linked in: 9pnet_virtio(+) 9pnet gre rfkill vmw_vsock_virtio_transport_common vsock [last unloaded: 9pnet_virtio
    CR2: ffffffffa0097000
    ---[ end trace 4a52bb13ff07b761

    If register_virtio_driver() fails in p9_virtio_init,
    we should call v9fs_unregister_trans() to do cleanup.

    Link: http://lkml.kernel.org/r/20190430115942.41840-1-yuehaibing@huawei.com
    Cc: stable@vger.kernel.org
    Reported-by: Hulk Robot
    Fixes: b530cc794024 ("9p: add virtio transport")
    Signed-off-by: YueHaibing
    Signed-off-by: Dominique Martinet

    YueHaibing
     

13 Mar, 2019

1 commit

  • If msize is less than 4096, we should close and put trans, destroy
    tagpool, not just free client. This patch fixes that.

    Link: http://lkml.kernel.org/m/1552464097-142659-1-git-send-email-zhengbin13@huawei.com
    Cc: stable@vger.kernel.org
    Fixes: 574d356b7a02 ("9p/net: put a lower bound on msize")
    Reported-by: Hulk Robot
    Signed-off-by: zhengbin
    Signed-off-by: Dominique Martinet

    zhengbin
     

23 Jan, 2019

1 commit

  • In preparation to enabling -Wimplicit-fallthrough, mark switch cases
    where we are expecting to fall through.

    This patch fixes the following warning:

    net/9p/trans_xen.c:514:6: warning: this statement may fall through [-Wimplicit-fallthrough=]

    Warning level 3 was used: -Wimplicit-fallthrough=3

    This patch is part of the ongoing efforts to enabling
    -Wimplicit-fallthrough

    Link: http://lkml.kernel.org/r/20190123071632.GA8039@embeddedor
    Signed-off-by: Gustavo A. R. Silva
    Signed-off-by: Dominique Martinet

    Gustavo A. R. Silva
     

25 Dec, 2018

1 commit

  • If the requested msize is too small (either from command line argument
    or from the server version reply), we won't get any work done.
    If it's *really* too small, nothing will work, and this got caught by
    syzbot recently (on a new kmem_cache_create_usercopy() call)

    Just set a minimum msize to 4k in both code paths, until someone
    complains they have a use-case for a smaller msize.

    We need to check in both mount option and server reply individually
    because the msize for the first version request would be unchecked
    with just a global check on clnt->msize.

    Link: http://lkml.kernel.org/r/1541407968-31350-1-git-send-email-asmadeus@codewreck.org
    Reported-by: syzbot+0c1d61e4db7db94102ca@syzkaller.appspotmail.com
    Signed-off-by: Dominique Martinet
    Cc: Eric Van Hensbergen
    Cc: Latchesar Ionkov
    Cc: stable@vger.kernel.org

    Dominique Martinet
     

20 Nov, 2018

1 commit


04 Nov, 2018

1 commit


03 Nov, 2018

1 commit

  • When switching to the new iovec accessors, a negation got subtly
    dropped, leading to 9p being remarkably broken (here with kvmtool):

    [ 7.430941] VFS: Mounted root (9p filesystem) on device 0:15.
    [ 7.432080] devtmpfs: mounted
    [ 7.432717] Freeing unused kernel memory: 1344K
    [ 7.433658] Run /virt/init as init process
    Warning: unable to translate guest address 0x7e00902ff000 to host
    Warning: unable to translate guest address 0x7e00902fefc0 to host
    Warning: unable to translate guest address 0x7e00902ff000 to host
    Warning: unable to translate guest address 0x7e008febef80 to host
    Warning: unable to translate guest address 0x7e008febf000 to host
    Warning: unable to translate guest address 0x7e008febef00 to host
    Warning: unable to translate guest address 0x7e008febf000 to host
    [ 7.436376] Kernel panic - not syncing: Requested init /virt/init failed (error -8).
    [ 7.437554] CPU: 29 PID: 1 Comm: swapper/0 Not tainted 4.19.0-rc8-02267-g00e23707442a #291
    [ 7.439006] Hardware name: linux,dummy-virt (DT)
    [ 7.439902] Call trace:
    [ 7.440387] dump_backtrace+0x0/0x148
    [ 7.441104] show_stack+0x14/0x20
    [ 7.441768] dump_stack+0x90/0xb4
    [ 7.442425] panic+0x120/0x27c
    [ 7.443036] kernel_init+0xa4/0x100
    [ 7.443725] ret_from_fork+0x10/0x18
    [ 7.444444] SMP: stopping secondary CPUs
    [ 7.445391] Kernel Offset: disabled
    [ 7.446169] CPU features: 0x0,23000438
    [ 7.446974] Memory Limit: none
    [ 7.447645] ---[ end Kernel panic - not syncing: Requested init /virt/init failed (error -8). ]---

    Restoring the missing "!" brings the guest back to life.

    Fixes: 00e23707442a ("iov_iter: Use accessor function")
    Reported-by: Will Deacon
    Signed-off-by: Marc Zyngier
    Signed-off-by: Al Viro

    Marc Zyngier
     

02 Nov, 2018

1 commit

  • Pull AFS updates from Al Viro:
    "AFS series, with some iov_iter bits included"

    * 'work.afs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (26 commits)
    missing bits of "iov_iter: Separate type from direction and use accessor functions"
    afs: Probe multiple fileservers simultaneously
    afs: Fix callback handling
    afs: Eliminate the address pointer from the address list cursor
    afs: Allow dumping of server cursor on operation failure
    afs: Implement YFS support in the fs client
    afs: Expand data structure fields to support YFS
    afs: Get the target vnode in afs_rmdir() and get a callback on it
    afs: Calc callback expiry in op reply delivery
    afs: Fix FS.FetchStatus delivery from updating wrong vnode
    afs: Implement the YFS cache manager service
    afs: Remove callback details from afs_callback_break struct
    afs: Commit the status on a new file/dir/symlink
    afs: Increase to 64-bit volume ID and 96-bit vnode ID for YFS
    afs: Don't invoke the server to read data beyond EOF
    afs: Add a couple of tracepoints to log I/O errors
    afs: Handle EIO from delivery function
    afs: Fix TTL on VL server and address lists
    afs: Implement VL server rotation
    afs: Improve FS server rotation error handling
    ...

    Linus Torvalds
     

24 Oct, 2018

2 commits

  • In the iov_iter struct, separate the iterator type from the iterator
    direction and use accessor functions to access them in most places.

    Convert a bunch of places to use switch-statements to access them rather
    then chains of bitwise-AND statements. This makes it easier to add further
    iterator types. Also, this can be more efficient as to implement a switch
    of small contiguous integers, the compiler can use ~50% fewer compare
    instructions than it has to use bitwise-and instructions.

    Further, cease passing the iterator type into the iterator setup function.
    The iterator function can set that itself. Only the direction is required.

    Signed-off-by: David Howells

    David Howells
     
  • Use accessor functions to access an iterator's type and direction. This
    allows for the possibility of using some other method of determining the
    type of iterator than if-chains with bitwise-AND conditions.

    Signed-off-by: David Howells

    David Howells
     

10 Oct, 2018

3 commits

  • p9_read_work/p9_write_work might still hold references to a req after
    having been cancelled; make sure we put any of these to avoid potential
    request leak on disconnect.

    Fixes: 728356dedeff8 ("9p: Add refcount to p9_req_t")
    Link: http://lkml.kernel.org/r/1539057956-23741-2-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet
    Cc: Eric Van Hensbergen
    Cc: Latchesar Ionkov
    Reviewed-by: Tomas Bortoli

    Dominique Martinet
     
  • p9_read_work would try to handle an errored req even if it got put to
    error state by another thread between the lookup (that worked) and the
    time it had been fully read.
    The request itself is safe to use because we hold a ref to it from the
    lookup (for m->rreq, so it was safe to read into the request data buffer
    until this point), but the req_list has been deleted at the same time
    status changed, and client_cb already has been called as well, so we
    should not do either.

    Link: http://lkml.kernel.org/r/1539057956-23741-1-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet
    Reported-by: syzbot+2222c34dc40b515f30dc@syzkaller.appspotmail.com
    Cc: Eric Van Hensbergen
    Cc: Latchesar Ionkov

    Dominique Martinet
     
  • p9_tag_alloc() is supposed to return error pointers, but we accidentally
    return a NULL here. It would cause a NULL dereference in the caller.

    Link: http://lkml.kernel.org/m/20180926103934.GA14535@mwanda
    Fixes: 996d5b4db4b1 ("9p: Use a slab for allocating requests")
    Signed-off-by: Dan Carpenter
    Signed-off-by: Dominique Martinet

    Dan Carpenter
     

08 Sep, 2018

9 commits

  • strcpy to dirent->d_name could overflow the buffer, use strscpy to check
    the provided string length and error out if the size was too big.

    While we are here, make the function return an error when the pdu
    parsing failed, instead of returning the pdu offset as if it had been a
    success...

    Link: http://lkml.kernel.org/r/1536339057-21974-4-git-send-email-asmadeus@codewreck.org
    Addresses-Coverity-ID: 139133 ("Copy into fixed size buffer")
    Signed-off-by: Dominique Martinet

    Dominique Martinet
     
  • the client c is always dereferenced to get the rdma struct, so c has to
    be a valid pointer at this point.
    Gcc would optimize that away but let's make coverity happy...

    Link: http://lkml.kernel.org/r/1536339057-21974-3-git-send-email-asmadeus@codewreck.org
    Addresses-Coverity-ID: 102778 ("Dereference before null check")
    Signed-off-by: Dominique Martinet

    Dominique Martinet
     
  • v9fs_dir_readdir() could deadloop if a struct was sent with a size set
    to -2

    Link: http://lkml.kernel.org/r/1536134432-11997-1-git-send-email-asmadeus@codewreck.org
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=88021
    Signed-off-by: Gertjan Halkes
    Signed-off-by: Dominique Martinet

    Gertjan Halkes
     
  • In struct p9_conn, rename req to rreq as it is used by the read routine.

    Link: http://lkml.kernel.org/r/20180903160321.2181-1-tomasbortoli@gmail.com
    Signed-off-by: Tomas Bortoli
    Suggested-by: Jun Piao
    Signed-off-by: Dominique Martinet

    Tomas Bortoli
     
  • 9p/rdma would sometimes drop the connection and display errors in
    recv_done when the user does ^C.
    The errors were caused by recv buffers that were posted at the time
    of disconnect, and we just do not want to disconnect when
    down_interruptible is... interrupted.

    Link: http://lkml.kernel.org/r/1535625307-18019-1-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet

    Dominique Martinet
     
  • To avoid use-after-free(s), use a refcount to keep track of the
    usable references to any instantiated struct p9_req_t.

    This commit adds p9_req_put(), p9_req_get() and p9_req_try_get() as
    wrappers to kref_put(), kref_get() and kref_get_unless_zero().
    These are used by the client and the transports to keep track of
    valid requests' references.

    p9_free_req() is added back and used as callback by kref_put().

    Add SLAB_TYPESAFE_BY_RCU as it ensures that the memory freed by
    kmem_cache_free() will not be reused for another type until the rcu
    synchronisation period is over, so an address gotten under rcu read
    lock is safe to inc_ref() without corrupting random memory while
    the lock is held.

    Link: http://lkml.kernel.org/r/1535626341-20693-1-git-send-email-asmadeus@codewreck.org
    Co-developed-by: Dominique Martinet
    Signed-off-by: Tomas Bortoli
    Reported-by: syzbot+467050c1ce275af2a5b8@syzkaller.appspotmail.com
    Signed-off-by: Dominique Martinet

    Tomas Bortoli
     
  • In sight of the next patch to add a refcount in p9_req_t, rename
    the p9_free_req() function in p9_release_req().

    In the next patch the actual kfree will be moved to another function.

    Link: http://lkml.kernel.org/r/20180811144254.23665-1-tomasbortoli@gmail.com
    Signed-off-by: Tomas Bortoli
    Acked-by: Jun Piao
    Signed-off-by: Dominique Martinet

    Tomas Bortoli
     
  • Having a specific cache for the fcall allocations helps speed up
    end-to-end latency.

    The caches will automatically be merged if there are multiple caches
    of items with the same size so we do not need to try to share a cache
    between different clients of the same size.

    Since the msize is negotiated with the server, only allocate the cache
    after that negotiation has happened - previous allocations or
    allocations of different sizes (e.g. zero-copy fcall) are made with
    kmalloc directly.

    Some figures on two beefy VMs with Connect-IB (sriov) / trans=rdma,
    with ior running 32 processes in parallel doing small 32 bytes IOs:
    - no alloc (4.18-rc7 request cache): 65.4k req/s
    - non-power of two alloc, no patch: 61.6k req/s
    - power of two alloc, no patch: 62.2k req/s
    - non-power of two alloc, with patch: 64.7k req/s
    - power of two alloc, with patch: 65.1k req/s

    Link: http://lkml.kernel.org/r/1532943263-24378-2-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet
    Acked-by: Jun Piao
    Cc: Matthew Wilcox
    Cc: Greg Kurz

    Dominique Martinet
     
  • 'msize' is often a power of two, or at least page-aligned, so avoiding
    an overhead of two dozen bytes for each allocation will help the
    allocator do its work and reduce memory fragmentation.

    Link: http://lkml.kernel.org/r/1533825236-22896-1-git-send-email-asmadeus@codewreck.org
    Suggested-by: Matthew Wilcox
    Signed-off-by: Dominique Martinet
    Reviewed-by: Greg Kurz
    Acked-by: Jun Piao
    Cc: Matthew Wilcox

    Dominique Martinet
     

29 Aug, 2018

3 commits

  • There are no more users left of the p9_idpool; delete it.

    Link: http://lkml.kernel.org/r/20180711210225.19730-7-willy@infradead.org
    Signed-off-by: Matthew Wilcox
    Cc: Eric Van Hensbergen
    Cc: Ron Minnich
    Cc: Latchesar Ionkov
    Signed-off-by: Dominique Martinet

    Matthew Wilcox
     
  • Replace the custom batch allocation with a slab. Use an IDR to store
    pointers to the active requests instead of an array. We don't try to
    handle P9_NOTAG specially; the IDR will happily shrink all the way back
    once the TVERSION call has completed.

    Link: http://lkml.kernel.org/r/20180711210225.19730-6-willy@infradead.org
    Signed-off-by: Matthew Wilcox
    Cc: Eric Van Hensbergen
    Cc: Ron Minnich
    Cc: Latchesar Ionkov
    Signed-off-by: Dominique Martinet

    Matthew Wilcox
     
  • p9stat_free is more of a cleanup function than a 'free' function as it
    only frees the content of the struct; there are chances of use-after-free
    if it is improperly used (e.g. p9stat_free called twice as it used to be
    possible to)

    Clearing dangling pointers makes the function idempotent and safer to use.

    Link: http://lkml.kernel.org/r/1535410108-20650-2-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet
    Reported-by: syzbot+d4252148d198410b864f@syzkaller.appspotmail.com

    Dominique Martinet
     

27 Aug, 2018

1 commit

  • If the xen bus exists but does not expose the proper interface, it is
    possible to get a non-zero length but still some error, leading to
    strcmp failing trying to load invalid memory addresses e.g.
    fffffffffffffffe.

    There is then no need to check length when there is no error, as the
    xenbus driver guarantees that the string is nul-terminated.

    Link: http://lkml.kernel.org/r/1534236007-10170-1-git-send-email-asmadeus@codewreck.org
    Signed-off-by: Dominique Martinet
    Reviewed-by: Stefano Stabellini
    Cc: Eric Van Hensbergen
    Cc: Latchesar Ionkov

    Dominique Martinet
     

18 Aug, 2018

1 commit

  • Pull 9p updates from Dominique Martinet:
    "This contains mostly fixes (6 to be backported to stable) and a few
    changes, here is the breakdown:

    - rework how fids are attributed by replacing some custom tracking in
    a list by an idr

    - for packet-based transports (virtio/rdma) validate that the packet
    length matches what the header says

    - a few race condition fixes found by syzkaller

    - missing argument check when NULL device is passed in sys_mount

    - a few virtio fixes

    - some spelling and style fixes"

    * tag '9p-for-4.19-2' of git://github.com/martinetd/linux: (21 commits)
    net/9p/trans_virtio.c: add null terminal for mount tag
    9p/virtio: fix off-by-one error in sg list bounds check
    9p: fix whitespace issues
    9p: fix multiple NULL-pointer-dereferences
    fs/9p/xattr.c: catch the error of p9_client_clunk when setting xattr failed
    9p: validate PDU length
    net/9p/trans_fd.c: fix race by holding the lock
    net/9p/trans_fd.c: fix race-condition by flushing workqueue before the kfree()
    net/9p/virtio: Fix hard lockup in req_done
    net/9p/trans_virtio.c: fix some spell mistakes in comments
    9p/net: Fix zero-copy path in the 9p virtio transport
    9p: Embed wait_queue_head into p9_req_t
    9p: Replace the fidlist with an IDR
    9p: Change p9_fid_create calling convention
    9p: Fix comment on smp_wmb
    net/9p/client.c: version pointer uninitialized
    fs/9p/v9fs.c: fix spelling mistake "Uknown" -> "Unknown"
    net/9p: fix error path of p9_virtio_probe
    9p/net/protocol.c: return -ENOMEM when kmalloc() failed
    net/9p/client.c: add missing '\n' at the end of p9_debug()
    ...

    Linus Torvalds
     

17 Aug, 2018

2 commits

  • rdma.git merge resolution for the 4.19 merge window

    Conflicts:
    drivers/infiniband/core/rdma_core.c
    - Use the rdma code and revise with the new spelling for
    atomic_fetch_add_unless
    drivers/nvme/host/rdma.c
    - Replace max_sge with max_send_sge in new blk code
    drivers/nvme/target/rdma.c
    - Use the blk code and revise to use NULL for ib_post_recv when
    appropriate
    - Replace max_sge with max_recv_sge in new blk code
    net/rds/ib_send.c
    - Use the net code and revise to use NULL for ib_post_recv when
    appropriate

    Signed-off-by: Jason Gunthorpe

    Jason Gunthorpe
     
  • Resolve merge conflicts from the -rc cycle against the rdma.git tree:

    Conflicts:
    drivers/infiniband/core/uverbs_cmd.c
    - New ifs added to ib_uverbs_ex_create_flow in -rc and for-next
    - Merge removal of file->ucontext in for-next with new code in -rc
    drivers/infiniband/core/uverbs_main.c
    - for-next removed code from ib_uverbs_write() that was modified
    in for-rc

    Signed-off-by: Jason Gunthorpe

    Jason Gunthorpe
     

13 Aug, 2018

4 commits

  • chan->tag is Non-null terminated which will result in printing messy code
    when debugging code. So we should add '\0' for tag to make the code more
    convenient and robust. In addition, I drop char->tag_len to simplify the
    code.

    Link: http://lkml.kernel.org/r/5B641ECC.5030401@huawei.com
    Signed-off-by: Jun Piao
    Signed-off-by: Dominique Martinet

    piaojun
     
  • Because the value of limit is VIRTQUEUE_NUM, if index is equal to
    limit, it will cause sg array out of bounds, so correct the judgement
    of BUG_ON.

    Link: http://lkml.kernel.org/r/5B63D5F6.6080109@huawei.com
    Signed-off-by: Yiwen Jiang
    Reported-By: Dan Carpenter
    Acked-by: Jun Piao
    Cc: stable@vger.kernel.org
    Signed-off-by: Dominique Martinet

    jiangyiwen
     
  • Remove trailing whitespace and blank lines at EOF

    Link: http://lkml.kernel.org/m/20180724192918.31165-11-sthemmin@microsoft.com
    Signed-off-by: Stephen Hemminger
    Signed-off-by: Dominique Martinet

    Stephen Hemminger
     
  • Added checks to prevent GPFs from raising.

    Link: http://lkml.kernel.org/r/20180727110558.5479-1-tomasbortoli@gmail.com
    Signed-off-by: Tomas Bortoli
    Reported-by: syzbot+1a262da37d3bead15c39@syzkaller.appspotmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Dominique Martinet

    Tomas Bortoli