Skip to content
Permalink
Arseny-Krasnov…
Switch branches/tags

Commits on Apr 13, 2021

  1. af_vsock: serialize writes to shared socket

    This add logic, that serializes write access to single socket
    by multiple threads. It is implemented be adding field with TID
    of current writer. When writer tries to send something, it checks
    that field is -1(free), else it sleep in the same way as waiting
    for free space at peers' side.
    
    This implementation is PoC and not related to SEQPACKET close, so
    i've placed it after whole patchset.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  2. virtio/vsock: update trace event for SEQPACKET

    This adds SEQPACKET socket's type for trace event of virtio vsock.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  3. vsock_test: add SOCK_SEQPACKET tests

    This adds test of SOCK_SEQPACKET socket: it transfer data and
    then tests MSG_TRUNC flag. Cases for connect(), bind(), etc. are
    not tested, because it is same as for stream socket.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  4. vsock/loopback: enable SEQPACKET for transport

    This adds SEQPACKET ops for loopback transport and 'seqpacket_allow()'
    callback.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  5. vhost/vsock: enable SEQPACKET for transport

    This removes:
    1) Ignore of non-stream type of packets.
    This adds:
    1) Handling of SEQPACKET bit: if guest sets features with this bit cleared,
       then SOCK_SEQPACKET support will be disabled.
    2) 'seqpacket_allow()' callback.
    3) Handling of SEQ_EOR bit: when vhost places data in buffers of guest's
       rx queue, keep this bit set only when last piece of data is copied.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  6. virtio/vsock: enable SEQPACKET for transport

    This adds
    1) SEQPACKET ops for virtio transport and 'seqpacket_allow()' callback.
    2) Handling of SEQPACKET bit: guest tries to negotiate it with vhost.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  7. virtio/vsock: rest of SOCK_SEQPACKET support

    This adds rest of logic for SEQPACKET:
    1) Send SHUTDOWN on socket close for SEQPACKET type.
    2) Set SEQPACKET packet type during send.
    3) 'seqpacket_allow' flag to virtio transport.
    4) Set 'VIRTIO_VSOCK_SEQ_EOR' bit in flags for last
       packet of message.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  8. virtio/vsock: add SEQPACKET receive logic

    This modifies current receive logic for SEQPACKET support:
    1) Inserts 'RW' packet to socket's rx queue, but without merging with
       buffer of last packet in queue.
    2) Performs check for packet and socket types on receive(if mismatch,
       then reset connection).
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  9. virtio/vsock: dequeue callback for SOCK_SEQPACKET

    This adds transport callback and it's logic for SEQPACKET dequeue.
    Callback fetches RW packets from rx queue of socket until whole record
    is copied(if user's buffer is full, user is not woken up). This is done
    to not stall sender, because if we wake up user and it leaves syscall,
    nobody will send credit update for rest of record, and sender will wait
    for next enter of read syscall at receiver's side. So if user buffer is
    full, we just send credit update and drop data.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  10. virtio/vsock: defines and constants for SEQPACKET

    This adds set of defines and constants for SOCK_SEQPACKET
    support in vsock.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  11. virtio/vsock: simplify credit update function API

    This function is static and 'hdr' arg was always NULL.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  12. virtio/vsock: set packet's type in virtio_transport_send_pkt_info()

    This moves passing type of packet from 'info' structure to  'virtio_
    transport_send_pkt_info()' function. There is no need to set type of
    packet which differs from type of socket. Since at current time only
    stream type is supported, set it directly in 'virtio_transport_send_
    pkt_info()', so callers don't need to set it.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  13. af_vsock: update comments for stream sockets

    This replaces 'stream' to 'connection oriented' in comments as
    SEQPACKET is also connection oriented.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  14. af_vsock: rest of SEQPACKET support

    This does rest of SOCK_SEQPACKET support:
    1) Adds socket ops for SEQPACKET type.
    2) Allows to create socket with SEQPACKET type.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  15. af_vsock: implement send logic for SEQPACKET

    This adds some logic to current stream enqueue function for SEQPACKET
    support:
    1) Use transport's seqpacket enqueue callback.
    2) Return value from enqueue function is whole record length or error
       for SOCK_SEQPACKET.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  16. af_vsock: implement SEQPACKET receive loop

    This adds receive loop for SEQPACKET. It looks like receive loop for
    STREAM, but there is a little bit difference:
    1) It doesn't call notify callbacks.
    2) It doesn't care about 'SO_SNDLOWAT' and 'SO_RCVLOWAT' values, because
       there is no sense for these values in SEQPACKET case.
    3) It waits until whole record is received or error is found during
       receiving.
    4) It processes and sets 'MSG_TRUNC' flag.
    
    So to avoid extra conditions for two types of socket inside one loop, two
    independent functions were created.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  17. af_vsock: separate receive data loop

    Move STREAM specific data receive logic to '__vsock_stream_recvmsg()'
    dedicated function, while checks, that will be same for both STREAM
    and SEQPACKET sockets, stays in 'vsock_connectible_recvmsg()' shared
    functions.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  18. af_vsock: separate wait data loop

    This moves wait loop for data to dedicated function, because later it
    will be used by SEQPACKET data receive loop. While moving the code
    around, let's update an old comment.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021
  19. af_vsock: update functions for connectible socket

    This prepares af_vsock.c for SEQPACKET support: some functions such
    as setsockopt(), getsockopt(), connect(), recvmsg(), sendmsg() are
    shared between both types of sockets, so rename them in general
    manner.
    
    Signed-off-by: Arseny Krasnov <arseny.krasnov@kaspersky.com>
    Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
    Arseny Krasnov authored and intel-lab-lkp committed Apr 13, 2021

Commits on Apr 9, 2021

  1. virtio-balloon: fix a typo in comment of virtballoon_migratepage()

    Typo: compation --> compaction
    
    Signed-off-by: Liu Xiang <liu.xiang@zlingsmart.com>
    Link: https://lore.kernel.org/r/20210327031710.16151-1-liu.xiang@zlingsmart.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: David Hildenbrand <david@redhat.com>
    Liu Xiang authored and mstsirkin committed Apr 9, 2021
  2. virtio_blk: Add support for lifetime feature

    The VirtIO TC has adopted a new feature in virtio-blk enabling
    discovery of lifetime information.
    
    This commit adds support for the VIRTIO_BLK_T_LIFETIME command
    to the virtio_blk driver, and adds two new attributes to the
    sysfs entry for virtio_blk:
    * pre_eol_info
    * life_time
    
    which are defined in the same manner as the files of the same name
    for the eMMC driver, in line with the VirtIO specification.
    
    Signed-off-by: Enrico Granata <egranata@google.com>
    Link: https://lore.kernel.org/r/20210330231602.1223216-1-egranata@google.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    egranata authored and mstsirkin committed Apr 9, 2021
  3. vdpa: Follow kdoc comment style

    Follow comment style mentioned in the Writing kernel-doc document [1].
    
    Following warnings are fixed.
    
    $ scripts/kernel-doc -v -none drivers/vdpa/vdpa.c
    drivers/vdpa/vdpa.c:67: info: Scanning doc for __vdpa_alloc_device
    drivers/vdpa/vdpa.c:84: warning: No description found for return value of '__vdpa_alloc_device'
    drivers/vdpa/vdpa.c:153: info: Scanning doc for _vdpa_register_device
    drivers/vdpa/vdpa.c:163: warning: No description found for return value of '_vdpa_register_device'
    drivers/vdpa/vdpa.c:172: info: Scanning doc for vdpa_register_device
    drivers/vdpa/vdpa.c:180: warning: No description found for return value of 'vdpa_register_device'
    drivers/vdpa/vdpa.c:191: info: Scanning doc for _vdpa_unregister_device
    drivers/vdpa/vdpa.c:205: info: Scanning doc for vdpa_unregister_device
    drivers/vdpa/vdpa.c:217: info: Scanning doc for __vdpa_register_driver
    drivers/vdpa/vdpa.c:224: warning: No description found for return value of '__vdpa_register_driver'
    drivers/vdpa/vdpa.c:233: info: Scanning doc for vdpa_unregister_driver
    drivers/vdpa/vdpa.c:243: info: Scanning doc for vdpa_mgmtdev_register
    drivers/vdpa/vdpa.c:250: warning: No description found for return value of 'vdpa_mgmtdev_register'
    
    After the fix:
    
    scripts/kernel-doc -v -none drivers/vdpa/vdpa.c
    drivers/vdpa/vdpa.c:67: info: Scanning doc for __vdpa_alloc_device
    drivers/vdpa/vdpa.c:153: info: Scanning doc for _vdpa_register_device
    drivers/vdpa/vdpa.c:172: info: Scanning doc for vdpa_register_device
    drivers/vdpa/vdpa.c:191: info: Scanning doc for _vdpa_unregister_device
    drivers/vdpa/vdpa.c:205: info: Scanning doc for vdpa_unregister_device
    drivers/vdpa/vdpa.c:217: info: Scanning doc for __vdpa_register_driver
    drivers/vdpa/vdpa.c:233: info: Scanning doc for vdpa_unregister_driver
    drivers/vdpa/vdpa.c:243: info: Scanning doc for vdpa_mgmtdev_register
    
    [1] https://www.kernel.org/doc/html/latest/doc-guide/kernel-doc.html
    
    Signed-off-by: Parav Pandit <parav@nvidia.com>
    Reviewed-by: Eli Cohen <elic@nvidia.com>
    Link: https://lore.kernel.org/r/20210406170457.98481-3-parav@nvidia.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    paravmellanox authored and mstsirkin committed Apr 9, 2021
  4. vdpa: Follow kdoc comment style

    Follow comment style mentioned in the Writing kernel-doc document [1].
    
    Following warnings are fixed.
    $ scripts/kernel-doc -v -none include/linux/vdpa.h
    include/linux/vdpa.h:11: warning: missing initial short description on line:
     * vDPA callback definition.
    include/linux/vdpa.h:11: info: Scanning doc for vDPA
    include/linux/vdpa.h:15: warning: cannot understand function prototype: 'struct vdpa_callback '
    include/linux/vdpa.h:21: warning: missing initial short description on line:
     * vDPA notification area
    include/linux/vdpa.h:21: info: Scanning doc for vDPA
    include/linux/vdpa.h:25: warning: cannot understand function prototype: 'struct vdpa_notification_area '
    include/linux/vdpa.h:31: warning: missing initial short description on line:
     * vDPA vq_state definition
    include/linux/vdpa.h:31: info: Scanning doc for vDPA
    include/linux/vdpa.h:34: warning: cannot understand function prototype: 'struct vdpa_vq_state '
    include/linux/vdpa.h:41: info: Scanning doc for vDPA device
    include/linux/vdpa.h:51: warning: cannot understand function prototype: 'struct vdpa_device '
    include/linux/vdpa.h:62: info: Scanning doc for vDPA IOVA range
    include/linux/vdpa.h:66: warning: cannot understand function prototype: 'struct vdpa_iova_range '
    include/linux/vdpa.h:72: info: Scanning doc for vDPA_config_ops
    include/linux/vdpa.h:203: warning: cannot understand function prototype: 'struct vdpa_config_ops '
    include/linux/vdpa.h:270: info: Scanning doc for vdpa_driver
    include/linux/vdpa.h:275: warning: cannot understand function prototype: 'struct vdpa_driver '
    include/linux/vdpa.h:347: info: Scanning doc for vdpa_mgmtdev_ops
    include/linux/vdpa.h:360: warning: cannot understand function prototype: 'struct vdpa_mgmtdev_ops '
    
    After this fix:
    
    scripts/kernel-doc -v -none include/linux/vdpa.h
    include/linux/vdpa.h:11: info: Scanning doc for struct vdpa_calllback
    include/linux/vdpa.h:21: info: Scanning doc for struct vdpa_notification_area
    include/linux/vdpa.h:31: info: Scanning doc for struct vdpa_vq_state
    include/linux/vdpa.h:41: info: Scanning doc for struct vdpa_device
    include/linux/vdpa.h:62: info: Scanning doc for struct vdpa_iova_range
    include/linux/vdpa.h:72: info: Scanning doc for struct vdpa_config_ops
    include/linux/vdpa.h:270: info: Scanning doc for struct vdpa_driver
    include/linux/vdpa.h:347: info: Scanning doc for struct vdpa_mgmtdev_ops
    
    [1] https://www.kernel.org/doc/html/latest/doc-guide/kernel-doc.html
    
    Signed-off-by: Parav Pandit <parav@nvidia.com>
    Reviewed-by: Eli Cohen <elic@nvidia.com>
    Link: https://lore.kernel.org/r/20210406170457.98481-2-parav@nvidia.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    paravmellanox authored and mstsirkin committed Apr 9, 2021
  5. vdpa/mlx5: Enable user to add/delete vdpa device

    Allow to control vdpa device creation and destruction using the vdpa
    management tool.
    
    Examples:
    1. List the management devices
    $ vdpa mgmtdev show
    pci/0000:3b:00.1:
      supported_classes net
    
    2. Create vdpa instance
    $ vdpa dev add mgmtdev pci/0000:3b:00.1 name vdpa0
    
    3. Show vdpa devices
    $ vdpa dev show
    vdpa0: type network mgmtdev pci/0000:3b:00.1 vendor_id 5555 max_vqs 16 \
    max_vq_size 256
    
    Signed-off-by: Eli Cohen <elic@nvidia.com>
    Reviewed-by: Parav Pandit <parav@nvidia.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Link: https://lore.kernel.org/r/20210408091320.4600-1-elic@nvidia.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Eli Cohen authored and mstsirkin committed Apr 9, 2021
  6. vdpa: introduce virtio pci driver

    This patch introduce a vDPA driver for virtio-pci device. It bridges
    the virtio-pci control command to the vDPA bus. This will be used for
    features prototyping and testing.
    
    Note that get/restore virtqueue state is not supported which needs
    extension on the virtio specification.
    
    Signed-off-by: Jason Wang <jasowang@redhat.com>
    Link: https://lore.kernel.org/r/20210223061905.422659-4-jasowang@redhat.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    jasowang authored and mstsirkin committed Apr 9, 2021
  7. vdpa/mlx5: Fix suspend/resume index restoration

    When we suspend the VM, the VDPA interface will be reset. When the VM is
    resumed again, clear_virtqueues() will clear the available and used
    indices resulting in hardware virqtqueue objects becoming out of sync.
    We can avoid this function alltogether since qemu will clear them if
    required, e.g. when the VM went through a reboot.
    
    Moreover, since the hw available and used indices should always be
    identical on query and should be restored to the same value same value
    for virtqueues that complete in order, we set the single value provided
    by set_vq_state(). In get_vq_state() we return the value of hardware
    used index.
    
    Fixes: b35cceb ("vdpa/mlx5: Restore the hardware used index after change map")
    Fixes: 1a86b37 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices")
    Signed-off-by: Eli Cohen <elic@nvidia.com>
    Link: https://lore.kernel.org/r/20210408091047.4269-6-elic@nvidia.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Eli Cohen authored and mstsirkin committed Apr 9, 2021
  8. vdpa/mlx5: Fix wrong use of bit numbers

    VIRTIO_F_VERSION_1 is a bit number. Use BIT_ULL() with mask
    conditionals.
    
    Also, in mlx5_vdpa_is_little_endian() use BIT_ULL for consistency with
    the rest of the code.
    
    Fixes: 1a86b37 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices")
    Signed-off-by: Eli Cohen <elic@nvidia.com>
    Link: https://lore.kernel.org/r/20210408091047.4269-5-elic@nvidia.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Eli Cohen authored and mstsirkin committed Apr 9, 2021
  9. vdpa/mlx5: Retrieve BAR address suitable any function

    struct mlx5_core_dev has a bar_addr field that contains the correct bar
    address for the function regardless of whether it is pci function or sub
    function. Use it.
    
    Fixes: 1958fc2 ("net/mlx5: SF, Add auxiliary device driver")
    Signed-off-by: Eli Cohen <elic@nvidia.com>
    Reviewed-by: Parav Pandit <parav@nvidia.com>
    Link: https://lore.kernel.org/r/20210408091047.4269-4-elic@nvidia.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Eli Cohen authored and mstsirkin committed Apr 9, 2021
  10. vdpa/mlx5: Use the correct dma device when registering memory

    In cases where the vdpa instance uses a SF (sub function), the DMA
    device is the parent device. Use a function to retrieve the correct DMA
    device.
    
    Fixes: 1958fc2 ("net/mlx5: SF, Add auxiliary device driver")
    Signed-off-by: Eli Cohen <elic@nvidia.com>
    Reviewed-by: Parav Pandit <parav@nvidia.com>
    Link: https://lore.kernel.org/r/20210408091047.4269-3-elic@nvidia.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Eli Cohen authored and mstsirkin committed Apr 9, 2021
  11. vdpa/mlx5: should exclude header length and fcs from mtu

    When feature VIRTIO_NET_F_MTU is negotiated on mlx5_vdpa,
    22 extra bytes worth of MTU length is shown in guest.
    This is because the mlx5_query_port_max_mtu API returns
    the "hardware" MTU value, which does not just contain the
     Ethernet payload, but includes extra lengths starting
    from the Ethernet header up to the FCS altogether.
    
    Fix the MTU so packets won't get dropped silently.
    
    Fixes: 1a86b37 ("vdpa/mlx5: Add VDPA driver for supported mlx5 devices")
    Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
    Acked-by: Jason Wang <jasowang@redhat.com>
    Acked-by: Eli Cohen <elic@nvidia.com>
    Link: https://lore.kernel.org/r/20210408091047.4269-2-elic@nvidia.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    siwliu-kernel authored and mstsirkin committed Apr 9, 2021

Commits on Apr 4, 2021

  1. Linux 5.12-rc6

    torvalds committed Apr 4, 2021
  2. firewire: nosy: Fix a use-after-free bug in nosy_ioctl()

    For each device, the nosy driver allocates a pcilynx structure.
    A use-after-free might happen in the following scenario:
    
     1. Open nosy device for the first time and call ioctl with command
        NOSY_IOC_START, then a new client A will be malloced and added to
        doubly linked list.
     2. Open nosy device for the second time and call ioctl with command
        NOSY_IOC_START, then a new client B will be malloced and added to
        doubly linked list.
     3. Call ioctl with command NOSY_IOC_START for client A, then client A
        will be readded to the doubly linked list. Now the doubly linked
        list is messed up.
     4. Close the first nosy device and nosy_release will be called. In
        nosy_release, client A will be unlinked and freed.
     5. Close the second nosy device, and client A will be referenced,
        resulting in UAF.
    
    The root cause of this bug is that the element in the doubly linked list
    is reentered into the list.
    
    Fix this bug by adding a check before inserting a client.  If a client
    is already in the linked list, don't insert it.
    
    The following KASAN report reveals it:
    
       BUG: KASAN: use-after-free in nosy_release+0x1ea/0x210
       Write of size 8 at addr ffff888102ad7360 by task poc
       CPU: 3 PID: 337 Comm: poc Not tainted 5.12.0-rc5+ torvalds#6
       Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.12.0-59-gc9ba5276e321-prebuilt.qemu.org 04/01/2014
       Call Trace:
         nosy_release+0x1ea/0x210
         __fput+0x1e2/0x840
         task_work_run+0xe8/0x180
         exit_to_user_mode_prepare+0x114/0x120
         syscall_exit_to_user_mode+0x1d/0x40
         entry_SYSCALL_64_after_hwframe+0x44/0xae
    
       Allocated by task 337:
         nosy_open+0x154/0x4d0
         misc_open+0x2ec/0x410
         chrdev_open+0x20d/0x5a0
         do_dentry_open+0x40f/0xe80
         path_openat+0x1cf9/0x37b0
         do_filp_open+0x16d/0x390
         do_sys_openat2+0x11d/0x360
         __x64_sys_open+0xfd/0x1a0
         do_syscall_64+0x33/0x40
         entry_SYSCALL_64_after_hwframe+0x44/0xae
    
       Freed by task 337:
         kfree+0x8f/0x210
         nosy_release+0x158/0x210
         __fput+0x1e2/0x840
         task_work_run+0xe8/0x180
         exit_to_user_mode_prepare+0x114/0x120
         syscall_exit_to_user_mode+0x1d/0x40
         entry_SYSCALL_64_after_hwframe+0x44/0xae
    
       The buggy address belongs to the object at ffff888102ad7300 which belongs to the cache kmalloc-128 of size 128
       The buggy address is located 96 bytes inside of 128-byte region [ffff888102ad7300, ffff888102ad7380)
    
    [ Modified to use 'list_empty()' inside proper lock  - Linus ]
    
    Link: https://lore.kernel.org/lkml/1617433116-5930-1-git-send-email-zheyuma97@gmail.com/
    Reported-and-tested-by: 马哲宇 (Zheyu Ma) <zheyuma97@gmail.com>
    Signed-off-by: Zheyu Ma <zheyuma97@gmail.com>
    Cc: Greg Kroah-Hartman <greg@kroah.com>
    Cc: Stefan Richter <stefanr@s5r6.in-berlin.de>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    ZheyuMa authored and torvalds committed Apr 4, 2021

Commits on Apr 3, 2021

  1. Merge tag 'for-linus' of git://github.com/openrisc/linux

    Pull OpenRISC fix from Stafford Horne:
     "Fix duplicate header include in Litex SOC driver"
    
    * tag 'for-linus' of git://github.com/openrisc/linux:
      soc: litex: Remove duplicated header file inclusion
    torvalds committed Apr 3, 2021
  2. Merge tag 'io_uring-5.12-2021-04-03' of git://git.kernel.dk/linux-block

    POull io_uring fix from Jens Axboe:
     "Just fixing a silly braino in a previous patch, where we'd end up
      failing to compile if CONFIG_BLOCK isn't enabled.
    
      Not that a lot of people do that, but kernel bot spotted it and it's
      probably prudent to just flush this out now before -rc6.
    
      Sorry about that, none of my test compile configs have !CONFIG_BLOCK"
    
    * tag 'io_uring-5.12-2021-04-03' of git://git.kernel.dk/linux-block:
      io_uring: fix !CONFIG_BLOCK compilation failure
    torvalds committed Apr 3, 2021
  3. soc: litex: Remove duplicated header file inclusion

    The header file <linux/errno.h> is already included above and can be
    removed here.
    
    Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com>
    Signed-off-by: Mateusz Holenko <mholenko@antmicro.com>
    Signed-off-by: Stafford Horne <shorne@gmail.com>
    Zhen Lei authored and stffrdhrn committed Apr 3, 2021
Older