Skip to content
Snippets Groups Projects
Select Git revision
  • ae1df23caaf97a0a70b718ca56bf19da94c2e3b9
  • master default protected
  • 3.0
  • develop
  • revert-2069-tripleVersion
  • 3.1
  • rest-protocol
  • feat/remoting_rocketmq
  • dapr-support
  • 1.5
  • 1.4
  • 1.3
  • 1.2
  • 1.1
  • v3.0.3-rc2
  • v3.0.3-rc1
  • v3.0.2
  • v1.5.8
  • v1.5.9-rc1
  • v3.0.1
  • v1.5.8-rc1
  • v3.0.0
  • v3.0.0-rc4-1
  • v3.0.0-rc4
  • v3.0.0-rc3
  • v1.5.7
  • v1.5.7-rc2
  • v3.0.0-rc2
  • remove
  • v1.5.7-rc1
  • v3.0.0-rc1
  • v1.5.7-rc1-tmp
  • 1.5.6
  • v1.5.6
34 results

zookeeper

  • Clone with SSH
  • Clone with HTTPS
  • user avatar
    Pavel Shilovsky authored and Yongqiang Liu committed
    mainline inclusion
    from mainline-v5.4-rc5
    commit abe57073
    category: bugfix
    bugzilla: 24367, https://gitee.com/openeuler/kernel/issues/I5OE1W
    
    
    CVE: NA
    
    --------------------------------
    
    When the client hits reconnect it iterates over the mid
    pending queue marking entries for retry and moving them
    to a temporary list to issue callbacks later without holding
    GlobalMid_Lock. In the same time there is no guarantee that
    mids can't be removed from the temporary list or even
    freed completely by another thread. It may cause a temporary
    list corruption:
    
    [  430.454897] list_del corruption. prev->next should be ffff98d3a8f316c0, but was 2e885cb266355469
    [  430.464668] ------------[ cut here ]------------
    [  430.466569] kernel BUG at lib/list_debug.c:51!
    [  430.468476] invalid opcode: 0000 [#1] SMP PTI
    [  430.470286] CPU: 0 PID: 13267 Comm: cifsd Kdump: loaded Not tainted 5.4.0-rc3+ #19
    [  430.473472] Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
    [  430.475872] RIP: 0010:__list_del_entry_valid.cold+0x31/0x55
    ...
    [  430.510426] Call Trace:
    [  430.511500]  cifs_reconnect+0x25e/0x610 [cifs]
    [  430.513350]  cifs_readv_from_socket+0x220/0x250 [cifs]
    [  430.515464]  cifs_read_from_socket+0x4a/0x70 [cifs]
    [  430.517452]  ? try_to_wake_up+0x212/0x650
    [  430.519122]  ? cifs_small_buf_get+0x16/0x30 [cifs]
    [  430.521086]  ? allocate_buffers+0x66/0x120 [cifs]
    [  430.523019]  cifs_demultiplex_thread+0xdc/0xc30 [cifs]
    [  430.525116]  kthread+0xfb/0x130
    [  430.526421]  ? cifs_handle_standard+0x190/0x190 [cifs]
    [  430.528514]  ? kthread_park+0x90/0x90
    [  430.530019]  ret_from_fork+0x35/0x40
    
    Fix this by obtaining extra references for mids being retried
    and marking them as MID_DELETED which indicates that such a mid
    has been dequeued from the pending list.
    
    Also move mid cleanup logic from DeleteMidQEntry to
    _cifs_mid_q_entry_release which is called when the last reference
    to a particular mid is put. This allows to avoid any use-after-free
    of response buffers.
    
    The patch needs to be backported to stable kernels. A stable tag
    is not mentioned below because the patch doesn't apply cleanly
    to any actively maintained stable kernel.
    
    Reviewed-by: default avatarRonnie Sahlberg <lsahlber@redhat.com>
    Reviewed-and-tested-by: default avatarDavid Wysochanski <dwysocha@redhat.com>
    Signed-off-by: default avatarPavel Shilovsky <pshilov@microsoft.com>
    Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
    
    conflicts:
    	fs/cifs/connect.c
    	fs/cifs/transport.c
    
    Signed-off-by: default avatarChenXiaoSong <chenxiaosong2@huawei.com>
    Reviewed-by: default avatarZhang Yi <yi.zhang@huawei.com>
    Reviewed-by: default avatarJason Yan <yanaijie@huawei.com>
    Signed-off-by: default avatarYongqiang Liu <liuyongqiang13@huawei.com>
    28b546c6
    History
    Name Last commit Last update
    ..