Skip to content
  1. Oct 06, 2021
    • Linus Torvalds's avatar
      qnx4: avoid stringop-overread errors · 91c89fe8
      Linus Torvalds authored
      [ Upstream commit b7213ffa
      
       ]
      
      The qnx4 directory entries are 64-byte blocks that have different
      contents depending on the a status byte that is in the last byte of the
      block.
      
      In particular, a directory entry can be either a "link info" entry with
      a 48-byte name and pointers to the real inode information, or an "inode
      entry" with a smaller 16-byte name and the full inode information.
      
      But the code was written to always just treat the directory name as if
      it was part of that "inode entry", and just extend the name to the
      longer case if the status byte said it was a link entry.
      
      That work just fine and gives the right results, but now that gcc is
      tracking data structure accesses much more, the code can trigger a
      compiler error about using up to 48 bytes (the long name) in a structure
      that only has that shorter name in it:
      
         fs/qnx4/dir.c: In function ‘qnx4_readdir’:
         fs/qnx4/dir.c:51:32: error: ‘strnlen’ specified bound 48 exceeds source size 16 [-Werror=stringop-overread]
            51 |                         size = strnlen(de->di_fname, size);
               |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~
         In file included from fs/qnx4/qnx4.h:3,
                          from fs/qnx4/dir.c:16:
         include/uapi/linux/qnx4_fs.h:45:25: note: source object declared here
            45 |         char            di_fname[QNX4_SHORT_NAME_MAX];
               |                         ^~~~~~~~
      
      which is because the source code doesn't really make this whole "one of
      two different types" explicit.
      
      Fix this by introducing a very explicit union of the two types, and
      basically explaining to the compiler what is really going on.
      
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      91c89fe8
    • Linus Torvalds's avatar
      sparc: avoid stringop-overread errors · fde52298
      Linus Torvalds authored
      [ Upstream commit fc7c028d
      
       ]
      
      The sparc mdesc code does pointer games with 'struct mdesc_hdr', but
      didn't describe to the compiler how that header is then followed by the
      data that the header describes.
      
      As a result, gcc is now unhappy since it does stricter pointer range
      tracking, and doesn't understand about how these things work.  This
      results in various errors like:
      
          arch/sparc/kernel/mdesc.c: In function ‘mdesc_node_by_name’:
          arch/sparc/kernel/mdesc.c:647:22: error: ‘strcmp’ reading 1 or more bytes from a region of size 0 [-Werror=stringop-overread]
            647 |                 if (!strcmp(names + ep[ret].name_offset, name))
                |                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      
      which are easily avoided by just describing 'struct mdesc_hdr' better,
      and making the node_block() helper function look into that unsized
      data[] that follows the header.
      
      This makes the sparc64 build happy again at least for my cross-compiler
      version (gcc version 11.2.1).
      
      Link: https://lore.kernel.org/lkml/CAHk-=wi4NW3NC0xWykkw=6LnjQD6D_rtRtxY9g8gQAJXtQMi8A@mail.gmail.com/
      Cc: Guenter Roeck <linux@roeck-us.net>
      Cc: David S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      fde52298
    • Guenter Roeck's avatar
      net: i825xx: Use absolute_pointer for memcpy from fixed memory location · 8a86445a
      Guenter Roeck authored
      [ Upstream commit dff2d131
      
       ]
      
      gcc 11.x reports the following compiler warning/error.
      
        drivers/net/ethernet/i825xx/82596.c: In function 'i82596_probe':
        arch/m68k/include/asm/string.h:72:25: error:
      	'__builtin_memcpy' reading 6 bytes from a region of size 0 [-Werror=stringop-overread]
      
      Use absolute_pointer() to work around the problem.
      
      Cc: Geert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Reviewed-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      8a86445a
    • Guenter Roeck's avatar
      compiler.h: Introduce absolute_pointer macro · 255b49c6
      Guenter Roeck authored
      [ Upstream commit f6b5f1a5
      
       ]
      
      absolute_pointer() disassociates a pointer from its originating symbol
      type and context. Use it to prevent compiler warnings/errors such as
      
        drivers/net/ethernet/i825xx/82596.c: In function 'i82596_probe':
        arch/m68k/include/asm/string.h:72:25: error:
      	'__builtin_memcpy' reading 6 bytes from a region of size 0 [-Werror=stringop-overread]
      
      Such warnings may be reported by gcc 11.x for string and memory
      operations on fixed addresses.
      
      Suggested-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Reviewed-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      255b49c6
    • Guenter Roeck's avatar
      m68k: Double cast io functions to unsigned long · 134129c3
      Guenter Roeck authored
      [ Upstream commit b1a89856
      
       ]
      
      m68k builds fail widely with errors such as
      
      arch/m68k/include/asm/raw_io.h:20:19: error:
      	cast to pointer from integer of different size
      arch/m68k/include/asm/raw_io.h:30:32: error:
      	cast to pointer from integer of different size [-Werror=int-to-p
      
      On m68k, io functions are defined as macros. The problem is seen if the
      macro parameter variable size differs from the size of a pointer. Cast
      the parameter of all io macros to unsigned long before casting it to
      a pointer to fix the problem.
      
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Link: https://lore.kernel.org/r/20210907060729.2391992-1-linux@roeck-us.net
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      134129c3
    • Jesper Nilsson's avatar
      net: stmmac: allow CSR clock of 300MHz · fc03d222
      Jesper Nilsson authored
      [ Upstream commit 08dad2f4
      
       ]
      
      The Synopsys Ethernet IP uses the CSR clock as a base clock for MDC.
      The divisor used is set in the MAC_MDIO_Address register field CR
      (Clock Rate)
      
      The divisor is there to change the CSR clock into a clock that falls
      below the IEEE 802.3 specified max frequency of 2.5MHz.
      
      If the CSR clock is 300MHz, the code falls back to using the reset
      value in the MAC_MDIO_Address register, as described in the comment
      above this code.
      
      However, 300MHz is actually an allowed value and the proper divider
      can be estimated quite easily (it's just 1Hz difference!)
      
      A CSR frequency of 300MHz with the maximum clock rate value of 0x5
      (STMMAC_CSR_250_300M, a divisor of 124) gives somewhere around
      ~2.42MHz which is below the IEEE 802.3 specified maximum.
      
      For the ARTPEC-8 SoC, the CSR clock is this problematic 300MHz,
      and unfortunately, the reset-value of the MAC_MDIO_Address CR field
      is 0x0.
      
      This leads to a clock rate of zero and a divisor of 42, and gives an
      MDC frequency of ~7.14MHz.
      
      Allow CSR clock of 300MHz by making the comparison inclusive.
      
      Signed-off-by: default avatarJesper Nilsson <jesper.nilsson@axis.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      fc03d222
    • Zhihao Cheng's avatar
      blktrace: Fix uaf in blk_trace access after removing by sysfs · dacfd5e4
      Zhihao Cheng authored
      [ Upstream commit 5afedf67 ]
      
      There is an use-after-free problem triggered by following process:
      
            P1(sda)				P2(sdb)
      			echo 0 > /sys/block/sdb/trace/enable
      			  blk_trace_remove_queue
      			    synchronize_rcu
      			    blk_trace_free
      			      relay_close
      rcu_read_lock
      __blk_add_trace
        trace_note_tsk
        (Iterate running_trace_list)
      			        relay_close_buf
      				  relay_destroy_buf
      				    kfree(buf)
          trace_note(sdb's bt)
            relay_reserve
              buf->offset <- nullptr deference (use-after-free) !!!
      rcu_read_unlock
      
      [  502.714379] BUG: kernel NULL pointer dereference, address:
      0000000000000010
      [  502.715260] #PF: supervisor read access in kernel mode
      [  502.715903] #PF: error_code(0x0000) - not-present page
      [  502.716546] PGD 103984067 P4D 103984067 PUD 17592b067 PMD 0
      [  502.717252] Oops: 0000 [#1] SMP
      [  502.720308] RIP: 0010:trace_note.isra.0+0x86/0x360
      [  502.732872] Call Trace:
      [  502.733193]  __blk_add_trace.cold+0x137/0x1a3
      [  502.733734]  blk_add_trace_rq+0x7b/0xd0
      [  502.734207]  blk_add_trace_rq_issue+0x54/0xa0
      [  502.734755]  blk_mq_start_request+0xde/0x1b0
      [  502.735287]  scsi_queue_rq+0x528/0x1140
      ...
      [  502.742704]  sg_new_write.isra.0+0x16e/0x3e0
      [  502.747501]  sg_ioctl+0x466/0x1100
      
      Reproduce method:
        ioctl(/dev/sda, BLKTRACESETUP, blk_user_trace_setup[buf_size=127])
        ioctl(/dev/sda, BLKTRACESTART)
        ioctl(/dev/sdb, BLKTRACESETUP, blk_user_trace_setup[buf_size=127])
        ioctl(/dev/sdb, BLKTRACESTART)
      
        echo 0 > /sys/block/sdb/trace/enable &
        // Add delay(mdelay/msleep) before kernel enters blk_trace_free()
      
        ioctl$SG_IO(/dev/sda, SG_IO, ...)
        // Enters trace_note_tsk() after blk_trace_free() returned
        // Use mdelay in rcu region rather than msleep(which may schedule out)
      
      Remove blk_trace from running_list before calling blk_trace_free() by
      sysfs if blk_trace is at Blktrace_running state.
      
      Fixes: c71a8961
      
       ("blktrace: add ftrace plugin")
      Signed-off-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
      Link: https://lore.kernel.org/r/20210923134921.109194-1-chengzhihao1@huawei.com
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      dacfd5e4
    • Baokun Li's avatar
      scsi: iscsi: Adjust iface sysfs attr detection · ef76175a
      Baokun Li authored
      [ Upstream commit 4e285508 ]
      
      ISCSI_NET_PARAM_IFACE_ENABLE belongs to enum iscsi_net_param instead of
      iscsi_iface_param so move it to ISCSI_NET_PARAM. Otherwise, when we call
      into the driver, we might not match and return that we don't want attr
      visible in sysfs. Found in code review.
      
      Link: https://lore.kernel.org/r/20210901085336.2264295-1-libaokun1@huawei.com
      Fixes: e746f345
      
       ("scsi: iscsi: Fix iface sysfs attr detection")
      Reviewed-by: default avatarLee Duncan <lduncan@suse.com>
      Signed-off-by: default avatarBaokun Li <libaokun1@huawei.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      ef76175a
    • Aya Levin's avatar
      net/mlx4_en: Don't allow aRFS for encapsulated packets · a9364150
      Aya Levin authored
      [ Upstream commit fdbccea4 ]
      
      Driver doesn't support aRFS for encapsulated packets, return early error
      in such a case.
      
      Fixes: 1eb8c695
      
       ("net/mlx4_en: Add accelerated RFS support")
      Signed-off-by: default avatarAya Levin <ayal@nvidia.com>
      Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      a9364150
    • Johan Hovold's avatar
      net: hso: fix muxed tty registration · 77fe8795
      Johan Hovold authored
      commit e8f69b16 upstream.
      
      If resource allocation and registration fail for a muxed tty device
      (e.g. if there are no more minor numbers) the driver should not try to
      deregister the never-registered (or already-deregistered) tty.
      
      Fix up the error handling to avoid dereferencing a NULL pointer when
      attempting to remove the character device.
      
      Fixes: 72dc1c09
      
       ("HSO: add option hso driver")
      Cc: stable@vger.kernel.org	# 2.6.27
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      77fe8795
    • Pali Rohár's avatar
      serial: mvebu-uart: fix driver's tx_empty callback · 62a0c216
      Pali Rohár authored
      commit 74e1eb3b upstream.
      
      Driver's tx_empty callback should signal when the transmit shift register
      is empty. So when the last character has been sent.
      
      STAT_TX_FIFO_EMP bit signals only that HW transmit FIFO is empty, which
      happens when the last byte is loaded into transmit shift register.
      
      STAT_TX_EMP bit signals when the both HW transmit FIFO and transmit shift
      register are empty.
      
      So replace STAT_TX_FIFO_EMP check by STAT_TX_EMP in mvebu_uart_tx_empty()
      callback function.
      
      Fixes: 30530791
      
       ("serial: mvebu-uart: initial support for Armada-3700 serial port")
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarPali Rohár <pali@kernel.org>
      Link: https://lore.kernel.org/r/20210911132017.25505-1-pali@kernel.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      62a0c216
    • Dan Carpenter's avatar
      mcb: fix error handling in mcb_alloc_bus() · 8a558261
      Dan Carpenter authored
      commit 25a14332 upstream.
      
      There are two bugs:
      1) If ida_simple_get() fails then this code calls put_device(carrier)
         but we haven't yet called get_device(carrier) and probably that
         leads to a use after free.
      2) After device_initialize() then we need to use put_device() to
         release the bus.  This will free the internal resources tied to the
         device and call mcb_free_bus() which will free the rest.
      
      Fixes: 5d9e2ab9 ("mcb: Implement bus->dev.release callback")
      Fixes: 18d28819
      
       ("mcb: Correctly initialize the bus's device")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarJohannes Thumshirn <jth@kernel.org>
      Link: https://lore.kernel.org/r/32e160cf6864ce77f9d62948338e24db9fd8ead9.1630931319.git.johannes.thumshirn@wdc.com
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8a558261
    • Slark Xiao's avatar
      USB: serial: option: add device id for Foxconn T99W265 · 55a304cb
      Slark Xiao authored
      commit 9e3eed53
      
       upstream.
      
      Adding support for Foxconn device T99W265 for enumeration with
      PID 0xe0db.
      
      usb-devices output for 0xe0db
      T:  Bus=04 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 19 Spd=5000 MxCh= 0
      D:  Ver= 3.20 Cls=ef(misc ) Sub=02 Prot=01 MxPS= 9 #Cfgs=  1
      P:  Vendor=0489 ProdID=e0db Rev=05.04
      S:  Manufacturer=Microsoft
      S:  Product=Generic Mobile Broadband Adapter
      S:  SerialNumber=6c50f452
      C:  #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=896mA
      I:  If#=0x0 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
      I:  If#=0x1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
      I:  If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=option
      I:  If#=0x3 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
      I:  If#=0x4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
      
      if0/1: MBIM, if2:Diag, if3:GNSS, if4: Modem
      
      Signed-off-by: default avatarSlark Xiao <slark_xiao@163.com>
      Link: https://lore.kernel.org/r/20210917110106.9852-1-slark_xiao@163.com
      [ johan: use USB_DEVICE_INTERFACE_CLASS(), amend comment ]
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      55a304cb
    • Krzysztof Kozlowski's avatar
      USB: serial: option: remove duplicate USB device ID · a3d67476
      Krzysztof Kozlowski authored
      commit 1ca200a8
      
       upstream.
      
      The device ZTE 0x0094 is already on the list.
      
      Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
      Fixes: b9e44fe5
      
       ("USB: option: cleanup zte 3g-dongle's pid in option.c")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a3d67476
    • Carlo Lobrano's avatar
      USB: serial: option: add Telit LN920 compositions · 623b42c9
      Carlo Lobrano authored
      commit 7bb05713
      
       upstream.
      
      This patch adds the following Telit LN920 compositions:
      
      0x1060: tty, adb, rmnet, tty, tty, tty, tty
      0x1061: tty, adb, mbim, tty, tty, tty, tty
      0x1062: rndis, tty, adb, tty, tty, tty, tty
      0x1063: tty, adb, ecm, tty, tty, tty, tty
      
      Signed-off-by: default avatarCarlo Lobrano <c.lobrano@gmail.com>
      Link: https://lore.kernel.org/r/20210903123913.1086513-1-c.lobrano@gmail.com
      Reviewed-by: default avatarDaniele Palmas <dnlplm@gmail.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      623b42c9
    • Krzysztof Kozlowski's avatar
      USB: serial: mos7840: remove duplicated 0xac24 device ID · d422b510
      Krzysztof Kozlowski authored
      commit 211f3237 upstream.
      
      0xac24 device ID is already defined and used via
      BANDB_DEVICE_ID_USO9ML2_4.  Remove the duplicate from the list.
      
      Fixes: 27f1281d
      
       ("USB: serial: Extra device/vendor ID for mos7840 driver")
      Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d422b510
    • Johan Hovold's avatar
      staging: greybus: uart: fix tty use after free · 92b67aaa
      Johan Hovold authored
      commit 92dc0b1f upstream.
      
      User space can hold a tty open indefinitely and tty drivers must not
      release the underlying structures until the last user is gone.
      
      Switch to using the tty-port reference counter to manage the life time
      of the greybus tty state to avoid use after free after a disconnect.
      
      Fixes: a18e1517
      
       ("greybus: more uart work")
      Cc: stable@vger.kernel.org      # 4.9
      Reviewed-by: default avatarAlex Elder <elder@linaro.org>
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Link: https://lore.kernel.org/r/20210906124538.22358-1-johan@kernel.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      92b67aaa
    • Uwe Brandt's avatar
      USB: serial: cp210x: add ID for GW Instek GDM-834x Digital Multimeter · df8ae5e4
      Uwe Brandt authored
      commit 3bd18ba7
      
       upstream.
      
      Add the USB serial device ID for the GW Instek GDM-834x Digital Multimeter.
      
      Signed-off-by: default avatarUwe Brandt <uwe.brandt@gmail.com>
      Link: https://lore.kernel.org/r/YUxFl3YUCPGJZd8Y@hovoldconsulting.com
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      df8ae5e4
    • Ondrej Zary's avatar
      usb-storage: Add quirk for ScanLogic SL11R-IDE older than 2.6c · 6eb94b35
      Ondrej Zary authored
      commit b55d37ef
      
       upstream.
      
      ScanLogic SL11R-IDE with firmware older than 2.6c (the latest one) has
      broken tag handling, preventing the device from working at all:
      usb 1-1: new full-speed USB device number 2 using uhci_hcd
      usb 1-1: New USB device found, idVendor=04ce, idProduct=0002, bcdDevice= 2.60
      usb 1-1: New USB device strings: Mfr=1, Product=1, SerialNumber=0
      usb 1-1: Product: USB Device
      usb 1-1: Manufacturer: USB Device
      usb-storage 1-1:1.0: USB Mass Storage device detected
      scsi host2: usb-storage 1-1:1.0
      usbcore: registered new interface driver usb-storage
      usb 1-1: reset full-speed USB device number 2 using uhci_hcd
      usb 1-1: reset full-speed USB device number 2 using uhci_hcd
      usb 1-1: reset full-speed USB device number 2 using uhci_hcd
      usb 1-1: reset full-speed USB device number 2 using uhci_hcd
      
      Add US_FL_BULK_IGNORE_TAG to fix it. Also update my e-mail address.
      
      2.6c is the only firmware that claims Linux compatibility.
      The firmware can be upgraded using ezotgdbg utility:
      https://github.com/asciilifeform/ezotgdbg
      
      Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: default avatarOndrej Zary <linux@zary.sk>
      Cc: stable <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20210913210106.12717-1-linux@zary.sk
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6eb94b35
    • Jan Beulich's avatar
      xen/x86: fix PV trap handling on secondary processors · 2c3b0781
      Jan Beulich authored
      commit 0594c581 upstream.
      
      The initial observation was that in PV mode under Xen 32-bit user space
      didn't work anymore. Attempts of system calls ended in #GP(0x402). All
      of the sudden the vector 0x80 handler was not in place anymore. As it
      turns out up to 5.13 redundant initialization did occur: Once from
      cpu_initialize_context() (through its VCPUOP_initialise hypercall) and a
      2nd time while each CPU was brought fully up. This 2nd initialization is
      now gone, uncovering that the 1st one was flawed: Unlike for the
      set_trap_table hypercall, a full virtual IDT needs to be specified here;
      the "vector" fields of the individual entries are of no interest. With
      many (kernel) IDT entries still(?) (i.e. at that point at least) empty,
      the syscall vector 0x80 ended up in slot 0x20 of the virtual IDT, thus
      becoming the domain's handler for vector 0x20.
      
      Make xen_convert_trap_info() fit for either purpose, leveraging the fact
      that on the xen_copy_trap_info() path the table starts out zero-filled.
      This includes moving out the writing of the sentinel, which would also
      have lead to a buffer overrun in the xen_copy_trap_info() case if all
      (kernel) IDT entries were populated. Convert the writing of the sentinel
      to clearing of the entire table entry rather than just the address
      field.
      
      (I didn't bother trying to identify the commit which uncovered the issue
      in 5.14; the commit named below is the one which actually introduced the
      bad code.)
      
      Fixes: f87e4cac
      
       ("xen: SMP guest support")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarJan Beulich <jbeulich@suse.com>
      Reviewed-by: default avatarBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Link: https://lore.kernel.org/r/7a266932-092e-b68f-f2bb-1473b61adc6e@suse.com
      Signed-off-by: default avatarJuergen Gross <jgross@suse.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2c3b0781
    • Steve French's avatar
      cifs: fix incorrect check for null pointer in header_assemble · 7c26d7b1
      Steve French authored
      commit 9ed38fd4
      
       upstream.
      
      Although very unlikely that the tlink pointer would be null in this case,
      get_next_mid function can in theory return null (but not an error)
      so need to check for null (not for IS_ERR, which can not be returned
      here).
      
      Address warning:
      
              fs/smbfs_client/connect.c:2392 cifs_match_super()
              warn: 'tlink' isn't an ERR_PTR
      
      Pointed out by Dan Carpenter via smatch code analysis tool
      
      CC: stable@vger.kernel.org
      Reported-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Acked-by: default avatarRonnie Sahlberg <lsahlber@redhat.com>
      Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7c26d7b1
    • Dan Carpenter's avatar
      usb: musb: tusb6010: uninitialized data in tusb_fifo_write_unaligned() · 2a6992e7
      Dan Carpenter authored
      commit 517c7bf9 upstream.
      
      This is writing to the first 1 - 3 bytes of "val" and then writing all
      four bytes to musb_writel().  The last byte is always going to be
      garbage.  Zero out the last bytes instead.
      
      Fixes: 550a7375
      
       ("USB: Add MUSB and TUSB support")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Cc: stable <stable@vger.kernel.org>
      Link: https://lore.kernel.org/r/20210916135737.GI25094@kili
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2a6992e7
    • Dan Carpenter's avatar
      usb: gadget: r8a66597: fix a loop in set_feature() · b6b7cebe
      Dan Carpenter authored
      commit 17956b53 upstream.
      
      This loop is supposed to loop until if reads something other than
      CS_IDST or until it times out after 30,000 attempts.  But because of
      the || vs && bug, it will never time out and instead it will loop a
      minimum of 30,000 times.
      
      This bug is quite old but the code is only used in USB_DEVICE_TEST_MODE
      so it probably doesn't affect regular usage.
      
      Fixes: 96fe53ef
      
       ("usb: gadget: r8a66597-udc: add support for TEST_MODE")
      Cc: stable <stable@vger.kernel.org>
      Reviewed-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Acked-by: default avatarFelipe Balbi <balbi@kernel.org>
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Link: https://lore.kernel.org/r/20210906094221.GA10957@kili
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b6b7cebe
    • Wengang Wang's avatar
      ocfs2: drop acl cache for directories too · 13c06afd
      Wengang Wang authored
      commit 9c0f0a03
      
       upstream.
      
      ocfs2_data_convert_worker() is currently dropping any cached acl info
      for FILE before down-converting meta lock.  It should also drop for
      DIRECTORY.  Otherwise the second acl lookup returns the cached one (from
      VFS layer) which could be already stale.
      
      The problem we are seeing is that the acl changes on one node doesn't
      get refreshed on other nodes in the following case:
      
        Node 1                    Node 2
        --------------            ----------------
        getfacl dir1
      
                                  getfacl dir1    <-- this is OK
      
        setfacl -m u:user1:rwX dir1
        getfacl dir1   <-- see the change for user1
      
                                  getfacl dir1    <-- can't see change for user1
      
      Link: https://lkml.kernel.org/r/20210903012631.6099-1-wen.gang.wang@oracle.com
      Signed-off-by: default avatarWengang Wang <wen.gang.wang@oracle.com>
      Reviewed-by: default avatarJoseph Qi <joseph.qi@linux.alibaba.com>
      Cc: Mark Fasheh <mark@fasheh.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Junxiao Bi <junxiao.bi@oracle.com>
      Cc: Changwei Ge <gechangwei@live.cn>
      Cc: Gang He <ghe@suse.com>
      Cc: Jun Piao <piaojun@huawei.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      13c06afd
  2. Sep 26, 2021