Skip to content
Snippets Groups Projects
  1. Mar 23, 2022
    • Greg Kroah-Hartman's avatar
    • Greg Kroah-Hartman's avatar
      Revert "selftests/bpf: Add test for bpf_timer overwriting crash" · 37119eda
      Greg Kroah-Hartman authored
      
      This reverts commit 4fb9be67 which is
      commit a7e75016 upstream.
      
      It is reported to break the bpf self-tests.
      
      Reported-by: default avatarGeliang Tang <geliang.tang@suse.com>
      Reported-by: default avatarTommi Rantala <tommi.t.rantala@nokia.com>
      Cc: Kumar Kartikeya Dwivedi <memxor@gmail.com>
      Cc: Alexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20220209070324.1093182-3-memxor@gmail.com
      Cc: Sasha Levin <sashal@kernel.org>
      Link: https://lore.kernel.org/r/a0a7298ca5c64b3d0ecfcc8821c2de79186fa9f7.camel@nokia.com
      Link: https://lore.kernel.org/r/HE1PR0402MB3497CB13A12C4D15D20A1FCCF8139@HE1PR0402MB3497.eurprd04.prod.outlook.com
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      37119eda
    • Steffen Klassert's avatar
      esp: Fix possible buffer overflow in ESP transformation · 9248694d
      Steffen Klassert authored
      
      commit ebe48d36 upstream.
      
      The maximum message size that can be send is bigger than
      the  maximum site that skb_page_frag_refill can allocate.
      So it is possible to write beyond the allocated buffer.
      
      Fix this by doing a fallback to COW in that case.
      
      v2:
      
      Avoid get get_order() costs as suggested by Linus Torvalds.
      
      Fixes: cac2661c ("esp4: Avoid skb_cow_data whenever possible")
      Fixes: 03e2a30f ("esp6: Avoid skb_cow_data whenever possible")
      Reported-by: default avatarvalis <sec@valis.email>
      Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: default avatarTadeusz Struk <tadeusz.struk@linaro.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9248694d
    • Fabio Estevam's avatar
      smsc95xx: Ignore -ENODEV errors when device is unplugged · 96340cdd
      Fabio Estevam authored
      
      commit c70c453a upstream.
      
      According to Documentation/driver-api/usb/URB.rst when a device
      is unplugged usb_submit_urb() returns -ENODEV.
      
      This error code propagates all the way up to usbnet_read_cmd() and
      usbnet_write_cmd() calls inside the smsc95xx.c driver during
      Ethernet cable unplug, unbind or reboot.
      
      This causes the following errors to be shown on reboot, for example:
      
      ci_hdrc ci_hdrc.1: remove, state 1
      usb usb2: USB disconnect, device number 1
      usb 2-1: USB disconnect, device number 2
      usb 2-1.1: USB disconnect, device number 3
      smsc95xx 2-1.1:1.0 eth1: unregister 'smsc95xx' usb-ci_hdrc.1-1.1, smsc95xx USB 2.0 Ethernet
      smsc95xx 2-1.1:1.0 eth1: Failed to read reg index 0x00000114: -19
      smsc95xx 2-1.1:1.0 eth1: Error reading MII_ACCESS
      smsc95xx 2-1.1:1.0 eth1: __smsc95xx_mdio_read: MII is busy
      smsc95xx 2-1.1:1.0 eth1: Failed to read reg index 0x00000114: -19
      smsc95xx 2-1.1:1.0 eth1: Error reading MII_ACCESS
      smsc95xx 2-1.1:1.0 eth1: __smsc95xx_mdio_read: MII is busy
      smsc95xx 2-1.1:1.0 eth1: hardware isn't capable of remote wakeup
      usb 2-1.4: USB disconnect, device number 4
      ci_hdrc ci_hdrc.1: USB bus 2 deregistered
      ci_hdrc ci_hdrc.0: remove, state 4
      usb usb1: USB disconnect, device number 1
      ci_hdrc ci_hdrc.0: USB bus 1 deregistered
      imx2-wdt 30280000.watchdog: Device shutdown: Expect reboot!
      reboot: Restarting system
      
      Ignore the -ENODEV errors inside __smsc95xx_mdio_read() and
      __smsc95xx_phy_wait_not_busy() and do not print error messages
      when -ENODEV is returned.
      
      Fixes: a049a30f ("net: usb: Correct PHY handling of smsc95xx")
      Signed-off-by: default avatarFabio Estevam <festevam@denx.de>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Cc: Fabio Estevam <festevam@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      96340cdd
    • Markus Reichl's avatar
      net: usb: Correct reset handling of smsc95xx · e27b51af
      Markus Reichl authored
      commit 0bf38853 upstream.
      
      On boards with LAN9514 and no preconfigured MAC address we don't get an
      ip address from DHCP after commit a049a30f ("net: usb: Correct PHY handling
      of smsc95xx") anymore. Adding an explicit reset before starting the phy
      fixes the issue.
      
      [1]
      https://lore.kernel.org/netdev/199eebbd6b97f52b9119c9fa4fd8504f8a34de18.camel@collabora.com/
      
      
      
      From: Gabriel Hojda <ghojda@yo2urs.ro>
      Fixes: a049a30f ("net: usb: Correct PHY handling of smsc95xx")
      Signed-off-by: default avatarGabriel Hojda <ghojda@yo2urs.ro>
      Signed-off-by: default avatarMarkus Reichl <m.reichl@fivetechno.de>
      Tested-by: default avatarAlexander Stein <alexander.stein@ew.tq-group.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Cc: Fabio Estevam <festevam@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e27b51af
    • Martyn Welch's avatar
      net: usb: Correct PHY handling of smsc95xx · b54daeaf
      Martyn Welch authored
      
      commit a049a30f upstream.
      
      The smsc95xx driver is dropping phy speed settings and causing a stack
      trace at device unbind:
      
      [  536.379147] smsc95xx 2-1:1.0 eth1: unregister 'smsc95xx' usb-ci_hdrc.2-1, smsc95xx USB 2.0 Ethernet
      [  536.425029] ------------[ cut here ]------------
      [  536.429650] WARNING: CPU: 0 PID: 439 at fs/kernfs/dir.c:1535 kernfs_remove_by_name_ns+0xb8/0xc0
      [  536.438416] kernfs: can not remove 'attached_dev', no directory
      [  536.444363] Modules linked in: xts dm_crypt dm_mod atmel_mxt_ts smsc95xx usbnet
      [  536.451748] CPU: 0 PID: 439 Comm: sh Tainted: G        W         5.15.0 #1
      [  536.458636] Hardware name: Freescale i.MX53 (Device Tree Support)
      [  536.464735] Backtrace: 
      [  536.467190] [<80b1c904>] (dump_backtrace) from [<80b1cb48>] (show_stack+0x20/0x24)
      [  536.474787]  r7:000005ff r6:8035b294 r5:600f0013 r4:80d8af78
      [  536.480449] [<80b1cb28>] (show_stack) from [<80b1f764>] (dump_stack_lvl+0x48/0x54)
      [  536.488035] [<80b1f71c>] (dump_stack_lvl) from [<80b1f788>] (dump_stack+0x18/0x1c)
      [  536.495620]  r5:00000009 r4:80d9b820
      [  536.499198] [<80b1f770>] (dump_stack) from [<80124fac>] (__warn+0xfc/0x114)
      [  536.506187] [<80124eb0>] (__warn) from [<80b1d21c>] (warn_slowpath_fmt+0xa8/0xdc)
      [  536.513688]  r7:000005ff r6:80d9b820 r5:80d9b8e0 r4:83744000
      [  536.519349] [<80b1d178>] (warn_slowpath_fmt) from [<8035b294>] (kernfs_remove_by_name_ns+0xb8/0xc0)
      [  536.528416]  r9:00000001 r8:00000000 r7:824926dc r6:00000000 r5:80df6c2c r4:00000000
      [  536.536162] [<8035b1dc>] (kernfs_remove_by_name_ns) from [<80b1f56c>] (sysfs_remove_link+0x4c/0x50)
      [  536.545225]  r6:7f00f02c r5:80df6c2c r4:83306400
      [  536.549845] [<80b1f520>] (sysfs_remove_link) from [<806f9c8c>] (phy_detach+0xfc/0x11c)
      [  536.557780]  r5:82492000 r4:83306400
      [  536.561359] [<806f9b90>] (phy_detach) from [<806f9cf8>] (phy_disconnect+0x4c/0x58)
      [  536.568943]  r7:824926dc r6:7f00f02c r5:82492580 r4:83306400
      [  536.574604] [<806f9cac>] (phy_disconnect) from [<7f00a310>] (smsc95xx_disconnect_phy+0x30/0x38 [smsc95xx])
      [  536.584290]  r5:82492580 r4:82492580
      [  536.587868] [<7f00a2e0>] (smsc95xx_disconnect_phy [smsc95xx]) from [<7f001570>] (usbnet_stop+0x70/0x1a0 [usbnet])
      [  536.598161]  r5:82492580 r4:82492000
      [  536.601740] [<7f001500>] (usbnet_stop [usbnet]) from [<808baa70>] (__dev_close_many+0xb4/0x12c)
      [  536.610466]  r8:83744000 r7:00000000 r6:83744000 r5:83745b74 r4:82492000
      [  536.617170] [<808ba9bc>] (__dev_close_many) from [<808bab78>] (dev_close_many+0x90/0x120)
      [  536.625365]  r7:00000001 r6:83745b74 r5:83745b8c r4:82492000
      [  536.631026] [<808baae8>] (dev_close_many) from [<808bf408>] (unregister_netdevice_many+0x15c/0x704)
      [  536.640094]  r9:00000001 r8:81130b98 r7:83745b74 r6:83745bc4 r5:83745b8c r4:82492000
      [  536.647840] [<808bf2ac>] (unregister_netdevice_many) from [<808bfa50>] (unregister_netdevice_queue+0xa0/0xe8)
      [  536.657775]  r10:8112bcc0 r9:83306c00 r8:83306c80 r7:8291e420 r6:83744000 r5:00000000
      [  536.665608]  r4:82492000
      [  536.668143] [<808bf9b0>] (unregister_netdevice_queue) from [<808bfac0>] (unregister_netdev+0x28/0x30)
      [  536.677381]  r6:7f01003c r5:82492000 r4:82492000
      [  536.682000] [<808bfa98>] (unregister_netdev) from [<7f000b40>] (usbnet_disconnect+0x64/0xdc [usbnet])
      [  536.691241]  r5:82492000 r4:82492580
      [  536.694819] [<7f000adc>] (usbnet_disconnect [usbnet]) from [<8076b958>] (usb_unbind_interface+0x80/0x248)
      [  536.704406]  r5:7f01003c r4:83306c80
      [  536.707984] [<8076b8d8>] (usb_unbind_interface) from [<8061765c>] (device_release_driver_internal+0x1c4/0x1cc)
      [  536.718005]  r10:8112bcc0 r9:80dff1dc r8:83306c80 r7:83744000 r6:7f01003c r5:00000000
      [  536.725838]  r4:8291e420
      [  536.728373] [<80617498>] (device_release_driver_internal) from [<80617684>] (device_release_driver+0x20/0x24)
      [  536.738302]  r7:83744000 r6:810d4f4c r5:8291e420 r4:8176ae30
      [  536.743963] [<80617664>] (device_release_driver) from [<806156cc>] (bus_remove_device+0xf0/0x148)
      [  536.752858] [<806155dc>] (bus_remove_device) from [<80610018>] (device_del+0x198/0x41c)
      [  536.760880]  r7:83744000 r6:8116e2e4 r5:8291e464 r4:8291e420
      [  536.766542] [<8060fe80>] (device_del) from [<80768fe8>] (usb_disable_device+0xcc/0x1e0)
      [  536.774576]  r10:8112bcc0 r9:80dff1dc r8:00000001 r7:8112bc48 r6:8291e400 r5:00000001
      [  536.782410]  r4:83306c00
      [  536.784945] [<80768f1c>] (usb_disable_device) from [<80769c30>] (usb_set_configuration+0x514/0x8dc)
      [  536.794011]  r10:00000000 r9:00000000 r8:832c3600 r7:00000004 r6:810d5688 r5:00000000
      [  536.801844]  r4:83306c00
      [  536.804379] [<8076971c>] (usb_set_configuration) from [<80775fac>] (usb_generic_driver_disconnect+0x34/0x38)
      [  536.814236]  r10:832c3610 r9:83745ef8 r8:832c3600 r7:00000004 r6:810d5688 r5:83306c00
      [  536.822069]  r4:83306c00
      [  536.824605] [<80775f78>] (usb_generic_driver_disconnect) from [<8076b850>] (usb_unbind_device+0x30/0x70)
      [  536.834100]  r5:83306c00 r4:810d5688
      [  536.837678] [<8076b820>] (usb_unbind_device) from [<8061765c>] (device_release_driver_internal+0x1c4/0x1cc)
      [  536.847432]  r5:822fb480 r4:83306c80
      [  536.851009] [<80617498>] (device_release_driver_internal) from [<806176a8>] (device_driver_detach+0x20/0x24)
      [  536.860853]  r7:00000004 r6:810d4f4c r5:810d5688 r4:83306c80
      [  536.866515] [<80617688>] (device_driver_detach) from [<80614d98>] (unbind_store+0x70/0xe4)
      [  536.874793] [<80614d28>] (unbind_store) from [<80614118>] (drv_attr_store+0x30/0x3c)
      [  536.882554]  r7:00000000 r6:00000000 r5:83739200 r4:80614d28
      [  536.888217] [<806140e8>] (drv_attr_store) from [<8035cb68>] (sysfs_kf_write+0x48/0x54)
      [  536.896154]  r5:83739200 r4:806140e8
      [  536.899732] [<8035cb20>] (sysfs_kf_write) from [<8035be84>] (kernfs_fop_write_iter+0x11c/0x1d4)
      [  536.908446]  r5:83739200 r4:00000004
      [  536.912024] [<8035bd68>] (kernfs_fop_write_iter) from [<802b87fc>] (vfs_write+0x258/0x3e4)
      [  536.920317]  r10:00000000 r9:83745f58 r8:83744000 r7:00000000 r6:00000004 r5:00000000
      [  536.928151]  r4:82adacc0
      [  536.930687] [<802b85a4>] (vfs_write) from [<802b8b0c>] (ksys_write+0x74/0xf4)
      [  536.937842]  r10:00000004 r9:007767a0 r8:83744000 r7:00000000 r6:00000000 r5:82adacc0
      [  536.945676]  r4:82adacc0
      [  536.948213] [<802b8a98>] (ksys_write) from [<802b8ba4>] (sys_write+0x18/0x1c)
      [  536.955367]  r10:00000004 r9:83744000 r8:80100244 r7:00000004 r6:76f47b58 r5:76fc0350
      [  536.963200]  r4:00000004
      [  536.965735] [<802b8b8c>] (sys_write) from [<80100060>] (ret_fast_syscall+0x0/0x48)
      [  536.973320] Exception stack(0x83745fa8 to 0x83745ff0)
      [  536.978383] 5fa0:                   00000004 76fc0350 00000001 007767a0 00000004 00000000
      [  536.986569] 5fc0: 00000004 76fc0350 76f47b58 00000004 76f47c7c 76f48114 00000000 7e87991c
      [  536.994753] 5fe0: 00000498 7e879908 76e6dce8 76eca2e8
      [  536.999922] ---[ end trace 9b835d809816b435 ]---
      
      The driver should not be connecting and disconnecting the PHY when the
      device is opened and closed, it should be stopping and starting the PHY. The
      phy should be connected as part of binding and disconnected during
      unbinding.
      
      As this results in the PHY not being reset during open, link speed, etc.
      settings set prior to the link coming up are now not being lost.
      
      It is necessary for phy_stop() to only be called when the phydev still
      exists (resolving the above stack trace). When unbinding, ".unbind" will be
      called prior to ".stop", with phy_disconnect() already having called
      phy_stop() before the phydev becomes inaccessible.
      
      Signed-off-by: default avatarMartyn Welch <martyn.welch@collabora.com>
      Cc: Steve Glendinning <steve.glendinning@shawell.net>
      Cc: UNGLinuxDriver@microchip.com
      Cc: "David S. Miller" <davem@davemloft.net>
      Cc: Jakub Kicinski <kuba@kernel.org>
      Cc: stable@kernel.org # v5.15
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Cc: Fabio Estevam <festevam@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b54daeaf
    • Michael Petlan's avatar
      perf symbols: Fix symbol size calculation condition · 204d38dc
      Michael Petlan authored
      
      commit 3cf6a32f upstream.
      
      Before this patch, the symbol end address fixup to be called, needed two
      conditions being met:
      
        if (prev->end == prev->start && prev->end != curr->start)
      
      Where
        "prev->end == prev->start" means that prev is zero-long
                                   (and thus needs a fixup)
      and
        "prev->end != curr->start" means that fixup hasn't been applied yet
      
      However, this logic is incorrect in the following situation:
      
      *curr  = {rb_node = {__rb_parent_color = 278218928,
        rb_right = 0x0, rb_left = 0x0},
        start = 0xc000000000062354,
        end = 0xc000000000062354, namelen = 40, type = 2 '\002',
        binding = 0 '\000', idle = 0 '\000', ignore = 0 '\000',
        inlined = 0 '\000', arch_sym = 0 '\000', annotate2 = false,
        name = 0x1159739e "kprobe_optinsn_page\t[__builtin__kprobes]"}
      
      *prev = {rb_node = {__rb_parent_color = 278219041,
        rb_right = 0x109548b0, rb_left = 0x109547c0},
        start = 0xc000000000062354,
        end = 0xc000000000062354, namelen = 12, type = 2 '\002',
        binding = 1 '\001', idle = 0 '\000', ignore = 0 '\000',
        inlined = 0 '\000', arch_sym = 0 '\000', annotate2 = false,
        name = 0x1095486e "optinsn_slot"}
      
      In this case, prev->start == prev->end == curr->start == curr->end,
      thus the condition above thinks that "we need a fixup due to zero
      length of prev symbol, but it has been probably done, since the
      prev->end == curr->start", which is wrong.
      
      After the patch, the execution path proceeds to arch__symbols__fixup_end
      function which fixes up the size of prev symbol by adding page_size to
      its end offset.
      
      Fixes: 3b01a413 ("perf symbols: Improve kallsyms symbol end addr calculation")
      Signed-off-by: default avatarMichael Petlan <mpetlan@redhat.com>
      Cc: Athira Jajeev <atrajeev@linux.vnet.ibm.com>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Kajol Jain <kjain@linux.ibm.com>
      Cc: Madhavan Srinivasan <maddy@linux.ibm.com>
      Link: http://lore.kernel.org/lkml/20220317135536.805-1-mpetlan@redhat.com
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      204d38dc
    • Pavel Skripkin's avatar
      Input: aiptek - properly check endpoint type · f0d43d22
      Pavel Skripkin authored
      
      commit 5600f698 upstream.
      
      Syzbot reported warning in usb_submit_urb() which is caused by wrong
      endpoint type. There was a check for the number of endpoints, but not
      for the type of endpoint.
      
      Fix it by replacing old desc.bNumEndpoints check with
      usb_find_common_endpoints() helper for finding endpoints
      
      Fail log:
      
      usb 5-1: BOGUS urb xfer, pipe 1 != type 3
      WARNING: CPU: 2 PID: 48 at drivers/usb/core/urb.c:502 usb_submit_urb+0xed2/0x18a0 drivers/usb/core/urb.c:502
      Modules linked in:
      CPU: 2 PID: 48 Comm: kworker/2:2 Not tainted 5.17.0-rc6-syzkaller-00226-g07ebd38a0da2 #0
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
      Workqueue: usb_hub_wq hub_event
      ...
      Call Trace:
       <TASK>
       aiptek_open+0xd5/0x130 drivers/input/tablet/aiptek.c:830
       input_open_device+0x1bb/0x320 drivers/input/input.c:629
       kbd_connect+0xfe/0x160 drivers/tty/vt/keyboard.c:1593
      
      Fixes: 8e20cf2b ("Input: aiptek - fix crash on detecting device without endpoints")
      Reported-and-tested-by: default avatar <syzbot+75cccf2b7da87fb6f84b@syzkaller.appspotmail.com>
      Signed-off-by: default avatarPavel Skripkin <paskripkin@gmail.com>
      Link: https://lore.kernel.org/r/20220308194328.26220-1-paskripkin@gmail.com
      
      
      Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f0d43d22
    • Matt Lupfer's avatar
      scsi: mpt3sas: Page fault in reply q processing · 98e7a654
      Matt Lupfer authored
      commit 69ad4ef8 upstream.
      
      A page fault was encountered in mpt3sas on a LUN reset error path:
      
      [  145.763216] mpt3sas_cm1: Task abort tm failed: handle(0x0002),timeout(30) tr_method(0x0) smid(3) msix_index(0)
      [  145.778932] scsi 1:0:0:0: task abort: FAILED scmd(0x0000000024ba29a2)
      [  145.817307] scsi 1:0:0:0: attempting device reset! scmd(0x0000000024ba29a2)
      [  145.827253] scsi 1:0:0:0: [sg1] tag#2 CDB: Receive Diagnostic 1c 01 01 ff fc 00
      [  145.837617] scsi target1:0:0: handle(0x0002), sas_address(0x500605b0000272b9), phy(0)
      [  145.848598] scsi target1:0:0: enclosure logical id(0x500605b0000272b8), slot(0)
      [  149.858378] mpt3sas_cm1: Poll ReplyDescriptor queues for completion of smid(0), task_type(0x05), handle(0x0002)
      [  149.875202] BUG: unable to handle page fault for address: 00000007fffc445d
      [  149.885617] #PF: supervisor read access in kernel mode
      [  149.894346] #PF: error_code(0x0000) - not-present page
      [  149.903123] PGD 0 P4D 0
      [  149.909387] Oops: 0000 [#1] PREEMPT SMP NOPTI
      [  149.917417] CPU: 24 PID: 3512 Comm: scsi_eh_1 Kdump: loaded Tainted: G S         O      5.10.89-altav-1 #1
      [  149.934327] Hardware name: DDN           200NVX2             /200NVX2-MB          , BIOS ATHG2.2.02.01 09/10/2021
      [  149.951871] RIP: 0010:_base_process_reply_queue+0x4b/0x900 [mpt3sas]
      [  149.961889] Code: 0f 84 22 02 00 00 8d 48 01 49 89 fd 48 8d 57 38 f0 0f b1 4f 38 0f 85 d8 01 00 00 49 8b 45 10 45 31 e4 41 8b 55 0c 48 8d 1c d0 <0f> b6 03 83 e0 0f 3c 0f 0f 85 a2 00 00 00 e9 e6 01 00 00 0f b7 ee
      [  149.991952] RSP: 0018:ffffc9000f1ebcb8 EFLAGS: 00010246
      [  150.000937] RAX: 0000000000000055 RBX: 00000007fffc445d RCX: 000000002548f071
      [  150.011841] RDX: 00000000ffff8881 RSI: 0000000000000001 RDI: ffff888125ed50d8
      [  150.022670] RBP: 0000000000000000 R08: 0000000000000000 R09: c0000000ffff7fff
      [  150.033445] R10: ffffc9000f1ebb68 R11: ffffc9000f1ebb60 R12: 0000000000000000
      [  150.044204] R13: ffff888125ed50d8 R14: 0000000000000080 R15: 34cdc00034cdea80
      [  150.054963] FS:  0000000000000000(0000) GS:ffff88dfaf200000(0000) knlGS:0000000000000000
      [  150.066715] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  150.076078] CR2: 00000007fffc445d CR3: 000000012448a006 CR4: 0000000000770ee0
      [  150.086887] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [  150.097670] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [  150.108323] PKRU: 55555554
      [  150.114690] Call Trace:
      [  150.120497]  ? printk+0x48/0x4a
      [  150.127049]  mpt3sas_scsih_issue_tm.cold.114+0x2e/0x2b3 [mpt3sas]
      [  150.136453]  mpt3sas_scsih_issue_locked_tm+0x86/0xb0 [mpt3sas]
      [  150.145759]  scsih_dev_reset+0xea/0x300 [mpt3sas]
      [  150.153891]  scsi_eh_ready_devs+0x541/0x9e0 [scsi_mod]
      [  150.162206]  ? __scsi_host_match+0x20/0x20 [scsi_mod]
      [  150.170406]  ? scsi_try_target_reset+0x90/0x90 [scsi_mod]
      [  150.178925]  ? blk_mq_tagset_busy_iter+0x45/0x60
      [  150.186638]  ? scsi_try_target_reset+0x90/0x90 [scsi_mod]
      [  150.195087]  scsi_error_handler+0x3a5/0x4a0 [scsi_mod]
      [  150.203206]  ? __schedule+0x1e9/0x610
      [  150.209783]  ? scsi_eh_get_sense+0x210/0x210 [scsi_mod]
      [  150.217924]  kthread+0x12e/0x150
      [  150.224041]  ? kthread_worker_fn+0x130/0x130
      [  150.231206]  ret_from_fork+0x1f/0x30
      
      This is caused by mpt3sas_base_sync_reply_irqs() using an invalid reply_q
      pointer outside of the list_for_each_entry() loop. At the end of the full
      list traversal the pointer is invalid.
      
      Move the _base_process_reply_queue() call inside of the loop.
      
      Link: https://lore.kernel.org/r/d625deae-a958-0ace-2ba3-0888dd0a415b@ddn.com
      
      
      Fixes: 711a923c ("scsi: mpt3sas: Postprocessing of target and LUN reset")
      Cc: stable@vger.kernel.org
      Acked-by: default avatarSreekanth Reddy <sreekanth.reddy@broadcom.com>
      Signed-off-by: default avatarMatt Lupfer <mlupfer@ddn.com>
      Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      98e7a654
    • Alan Stern's avatar
      usb: usbtmc: Fix bug in pipe direction for control transfers · 10a80533
      Alan Stern authored
      
      commit e9b667a8 upstream.
      
      The syzbot fuzzer reported a minor bug in the usbtmc driver:
      
      usb 5-1: BOGUS control dir, pipe 80001e80 doesn't match bRequestType 0
      WARNING: CPU: 0 PID: 3813 at drivers/usb/core/urb.c:412
      usb_submit_urb+0x13a5/0x1970 drivers/usb/core/urb.c:410
      Modules linked in:
      CPU: 0 PID: 3813 Comm: syz-executor122 Not tainted
      5.17.0-rc5-syzkaller-00306-g2293be58d6a1 #0
      ...
      Call Trace:
       <TASK>
       usb_start_wait_urb+0x113/0x530 drivers/usb/core/message.c:58
       usb_internal_control_msg drivers/usb/core/message.c:102 [inline]
       usb_control_msg+0x2a5/0x4b0 drivers/usb/core/message.c:153
       usbtmc_ioctl_request drivers/usb/class/usbtmc.c:1947 [inline]
      
      The problem is that usbtmc_ioctl_request() uses usb_rcvctrlpipe() for
      all of its transfers, whether they are in or out.  It's easy to fix.
      
      CC: <stable@vger.kernel.org>
      Reported-and-tested-by: default avatar <syzbot+a48e3d1a875240cab5de@syzkaller.appspotmail.com>
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Link: https://lore.kernel.org/r/YiEsYTPEE6lOCOA5@rowland.harvard.edu
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      10a80533
    • Alan Stern's avatar
      usb: gadget: Fix use-after-free bug by not setting udc->dev.driver · 00bdd9bf
      Alan Stern authored
      
      commit 16b1941e upstream.
      
      The syzbot fuzzer found a use-after-free bug:
      
      BUG: KASAN: use-after-free in dev_uevent+0x712/0x780 drivers/base/core.c:2320
      Read of size 8 at addr ffff88802b934098 by task udevd/3689
      
      CPU: 2 PID: 3689 Comm: udevd Not tainted 5.17.0-rc4-syzkaller-00229-g4f12b742eb2b #0
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.14.0-2 04/01/2014
      Call Trace:
       <TASK>
       __dump_stack lib/dump_stack.c:88 [inline]
       dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
       print_address_description.constprop.0.cold+0x8d/0x303 mm/kasan/report.c:255
       __kasan_report mm/kasan/report.c:442 [inline]
       kasan_report.cold+0x83/0xdf mm/kasan/report.c:459
       dev_uevent+0x712/0x780 drivers/base/core.c:2320
       uevent_show+0x1b8/0x380 drivers/base/core.c:2391
       dev_attr_show+0x4b/0x90 drivers/base/core.c:2094
      
      Although the bug manifested in the driver core, the real cause was a
      race with the gadget core.  dev_uevent() does:
      
      	if (dev->driver)
      		add_uevent_var(env, "DRIVER=%s", dev->driver->name);
      
      and between the test and the dereference of dev->driver, the gadget
      core sets dev->driver to NULL.
      
      The race wouldn't occur if the gadget core registered its devices on
      a real bus, using the standard synchronization techniques of the
      driver core.  However, it's not necessary to make such a large change
      in order to fix this bug; all we need to do is make sure that
      udc->dev.driver is always NULL.
      
      In fact, there is no reason for udc->dev.driver ever to be set to
      anything, let alone to the value it currently gets: the address of the
      gadget's driver.  After all, a gadget driver only knows how to manage
      a gadget, not how to manage a UDC.
      
      This patch simply removes the statements in the gadget core that touch
      udc->dev.driver.
      
      Fixes: 2ccea03a ("usb: gadget: introduce UDC Class")
      CC: <stable@vger.kernel.org>
      Reported-and-tested-by: default avatar <syzbot+348b571beb5eeb70a582@syzkaller.appspotmail.com>
      Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
      Link: https://lore.kernel.org/r/YiQgukfFFbBnwJ/9@rowland.harvard.edu
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      00bdd9bf
    • Dan Carpenter's avatar
      usb: gadget: rndis: prevent integer overflow in rndis_set_response() · 28bc0267
      Dan Carpenter authored
      
      commit 65f3324f upstream.
      
      If "BufOffset" is very large the "BufOffset + 8" operation can have an
      integer overflow.
      
      Cc: stable@kernel.org
      Fixes: 38ea1eac ("usb: gadget: rndis: check size of RNDIS_MSG_SET command")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Link: https://lore.kernel.org/r/20220301080424.GA17208@kili
      
      
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      28bc0267
    • Arnd Bergmann's avatar
      arm64: fix clang warning about TRAMP_VALIAS · 2c010c61
      Arnd Bergmann authored
      
      [ Upstream commit 7f34b43e ]
      
      The newly introduced TRAMP_VALIAS definition causes a build warning
      with clang-14:
      
      arch/arm64/include/asm/vectors.h:66:31: error: arithmetic on a null pointer treated as a cast from integer to pointer is a GNU extension [-Werror,-Wnull-pointer-arithmetic]
                      return (char *)TRAMP_VALIAS + SZ_2K * slot;
      
      Change the addition to something clang does not complain about.
      
      Fixes: bd09128d ("arm64: Add percpu vectors for EL1")
      Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
      Acked-by: default avatarJames Morse <james.morse@arm.com>
      Link: https://lore.kernel.org/r/20220316183833.1563139-1-arnd@kernel.org
      
      
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      2c010c61
    • Vladimir Oltean's avatar
      net: mscc: ocelot: fix backwards compatibility with single-chain tc-flower offload · 277b7f63
      Vladimir Oltean authored
      
      [ Upstream commit 8e0341ae ]
      
      ACL rules can be offloaded to VCAP IS2 either through chain 0, or, since
      the blamed commit, through a chain index whose number encodes a specific
      PAG (Policy Action Group) and lookup number.
      
      The chain number is translated through ocelot_chain_to_pag() into a PAG,
      and through ocelot_chain_to_lookup() into a lookup number.
      
      The problem with the blamed commit is that the above 2 functions don't
      have special treatment for chain 0. So ocelot_chain_to_pag(0) returns
      filter->pag = 224, which is in fact -32, but the "pag" field is an u8.
      
      So we end up programming the hardware with VCAP IS2 entries having a PAG
      of 224. But the way in which the PAG works is that it defines a subset
      of VCAP IS2 filters which should match on a packet. The default PAG is
      0, and previous VCAP IS1 rules (which we offload using 'goto') can
      modify it. So basically, we are installing filters with a PAG on which
      no packet will ever match. This is the hardware equivalent of adding
      filters to a chain which has no 'goto' to it.
      
      Restore the previous functionality by making ACL filters offloaded to
      chain 0 go to PAG 0 and lookup number 0. The choice of PAG is clearly
      correct, but the choice of lookup number isn't "as before" (which was to
      leave the lookup a "don't care"). However, lookup 0 should be fine,
      since even though there are ACL actions (policers) which have a
      requirement to be used in a specific lookup, that lookup is 0.
      
      Fixes: 226e9cd8 ("net: mscc: ocelot: only install TCAM entries into a specific lookup and PAG")
      Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
      Link: https://lore.kernel.org/r/20220316192117.2568261-1-vladimir.oltean@nxp.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      277b7f63
    • Doug Berger's avatar
      net: bcmgenet: skip invalid partial checksums · 2550afba
      Doug Berger authored
      
      [ Upstream commit 0f643c88 ]
      
      The RXCHK block will return a partial checksum of 0 if it encounters
      a problem while receiving a packet. Since a 1's complement sum can
      only produce this result if no bits are set in the received data
      stream it is fair to treat it as an invalid partial checksum and
      not pass it up the stack.
      
      Fixes: 81015539 ("net: bcmgenet: use CHECKSUM_COMPLETE for NETIF_F_RXCSUM")
      Signed-off-by: default avatarDoug Berger <opendmb@gmail.com>
      Acked-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Link: https://lore.kernel.org/r/20220317012812.1313196-1-opendmb@gmail.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      2550afba
    • Manish Chopra's avatar
      bnx2x: fix built-in kernel driver load failure · bf5b7aae
      Manish Chopra authored
      [ Upstream commit 424e7834 ]
      
      Commit b7a49f73 ("bnx2x: Utilize firmware 7.13.21.0")
      added request_firmware() logic in probe() which caused
      load failure when firmware file is not present in initrd (below),
      as access to firmware file is not feasible during probe.
      
        Direct firmware load for bnx2x/bnx2x-e2-7.13.15.0.fw failed with error -2
        Direct firmware load for bnx2x/bnx2x-e2-7.13.21.0.fw failed with error -2
      
      This patch fixes this issue by -
      
      1. Removing request_firmware() logic from the probe()
         such that .ndo_open() handle it as it used to handle
         it earlier
      
      2. Given request_firmware() is removed from probe(), so
         driver has to relax FW version comparisons a bit against
         the already loaded FW version (by some other PFs of same
         adapter) to allow different compatible/close enough FWs with which
         multiple PFs may run with (in different environments), as the
         given PF who is in probe flow has no idea now with which firmware
         file version it is going to initialize the device in ndo_open()
      
      Link: https://lore.kernel.org/all/46f2d9d9-ae7f-b332-ddeb-b59802be2bab@molgen.mpg.de/
      
      
      Reported-by: default avatarPaul Menzel <pmenzel@molgen.mpg.de>
      Tested-by: default avatarPaul Menzel <pmenzel@molgen.mpg.de>
      Fixes: b7a49f73 ("bnx2x: Utilize firmware 7.13.21.0")
      Signed-off-by: default avatarManish Chopra <manishc@marvell.com>
      Signed-off-by: default avatarAriel Elior <aelior@marvell.com>
      Link: https://lore.kernel.org/r/20220316214613.6884-1-manishc@marvell.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      bf5b7aae
    • Juerg Haefliger's avatar
      net: phy: mscc: Add MODULE_FIRMWARE macros · c07fdba1
      Juerg Haefliger authored
      
      [ Upstream commit f1858c27 ]
      
      The driver requires firmware so define MODULE_FIRMWARE so that modinfo
      provides the details.
      
      Fixes: fa164e40 ("net: phy: mscc: split the driver into separate files")
      Signed-off-by: default avatarJuerg Haefliger <juergh@canonical.com>
      Link: https://lore.kernel.org/r/20220316151835.88765-1-juergh@canonical.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      c07fdba1
    • Miaoqian Lin's avatar
      net: dsa: Add missing of_node_put() in dsa_port_parse_of · ba50073c
      Miaoqian Lin authored
      
      [ Upstream commit cb0b430b ]
      
      The device_node pointer is returned by of_parse_phandle()  with refcount
      incremented. We should use of_node_put() on it when done.
      
      Fixes: 6d4e5c57 ("net: dsa: get port type at parse time")
      Signed-off-by: default avatarMiaoqian Lin <linmq006@gmail.com>
      Link: https://lore.kernel.org/r/20220316082602.10785-1-linmq006@gmail.com
      
      
      Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      ba50073c
    • Nicolas Dichtel's avatar
      net: handle ARPHRD_PIMREG in dev_is_mac_header_xmit() · a630ad5e
      Nicolas Dichtel authored
      
      [ Upstream commit 4ee06de7 ]
      
      This kind of interface doesn't have a mac header. This patch fixes
      bpf_redirect() to a PIM interface.
      
      Fixes: 27b29f63 ("bpf: add bpf_redirect() helper")
      Signed-off-by: default avatarNicolas Dichtel <nicolas.dichtel@6wind.com>
      Link: https://lore.kernel.org/r/20220315092008.31423-1-nicolas.dichtel@6wind.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      a630ad5e
    • Marek Vasut's avatar
      drm/panel: simple: Fix Innolux G070Y2-L01 BPP settings · 336b6be6
      Marek Vasut authored
      
      [ Upstream commit fc1b6ef7 ]
      
      The Innolux G070Y2-L01 supports two modes of operation:
      1) FRC=Low/NC ... MEDIA_BUS_FMT_RGB666_1X7X3_SPWG ... BPP=6
      2) FRC=High ..... MEDIA_BUS_FMT_RGB888_1X7X4_SPWG ... BPP=8
      
      Currently the panel description mixes both, BPP from 1) and bus
      format from 2), which triggers a warning at panel-simple.c:615.
      
      Pick the later, set bpp=8, fix the warning.
      
      Fixes: a5d2ade6 ("drm/panel: simple: Add support for Innolux G070Y2-L01")
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Cc: Christoph Fritz <chf.fritz@googlemail.com>
      Cc: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
      Cc: Maxime Ripard <maxime@cerno.tech>
      Cc: Sam Ravnborg <sam@ravnborg.org>
      Cc: Thomas Zimmermann <tzimmermann@suse.de>
      Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220220040718.532866-1-marex@denx.de
      
      
      Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      336b6be6
    • Christoph Niedermaier's avatar
      drm/imx: parallel-display: Remove bus flags check in imx_pd_bridge_atomic_check() · 9d45aec0
      Christoph Niedermaier authored
      
      [ Upstream commit 6061806a ]
      
      If display timings were read from the devicetree using
      of_get_display_timing() and pixelclk-active is defined
      there, the flag DISPLAY_FLAGS_SYNC_POSEDGE/NEGEDGE is
      automatically generated. Through the function
      drm_bus_flags_from_videomode() e.g. called in the
      panel-simple driver this flag got into the bus flags,
      but then in imx_pd_bridge_atomic_check() the bus flag
      check failed and will not initialize the display. The
      original commit fe141ced does not explain why this
      check was introduced. So remove the bus flags check,
      because it stops the initialization of the display with
      valid bus flags.
      
      Fixes: fe141ced ("drm/imx: pd: Use bus format/flags provided by the bridge when available")
      Signed-off-by: default avatarChristoph Niedermaier <cniedermaier@dh-electronics.com>
      Cc: Marek Vasut <marex@denx.de>
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: Philipp Zabel <p.zabel@pengutronix.de>
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Cc: Shawn Guo <shawnguo@kernel.org>
      Cc: Sascha Hauer <s.hauer@pengutronix.de>
      Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
      Cc: Fabio Estevam <festevam@gmail.com>
      Cc: NXP Linux Team <linux-imx@nxp.com>
      Cc: linux-arm-kernel@lists.infradead.org
      To: dri-devel@lists.freedesktop.org
      Tested-by: default avatarMax Krummenacher <max.krummenacher@toradex.com>
      Acked-by: default avatarBoris Brezillon <boris.brezillon@collabora.com>
      Signed-off-by: default avatarMarek Vasut <marex@denx.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20220201113643.4638-1-cniedermaier@dh-electronics.com
      
      
      Signed-off-by: default avatarMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      9d45aec0
    • Jiasheng Jiang's avatar
      hv_netvsc: Add check for kvmalloc_array · 9b763ced
      Jiasheng Jiang authored
      
      [ Upstream commit 886e44c9 ]
      
      As the potential failure of the kvmalloc_array(),
      it should be better to check and restore the 'data'
      if fails in order to avoid the dereference of the
      NULL pointer.
      
      Fixes: 6ae74671 ("hv_netvsc: Add per-cpu ethtool stats for netvsc")
      Signed-off-by: default avatarJiasheng Jiang <jiasheng@iscas.ac.cn>
      Link: https://lore.kernel.org/r/20220314020125.2365084-1-jiasheng@iscas.ac.cn
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      9b763ced
    • Jiasheng Jiang's avatar
      atm: eni: Add check for dma_map_single · 09a7264f
      Jiasheng Jiang authored
      
      [ Upstream commit 0f74b29a ]
      
      As the potential failure of the dma_map_single(),
      it should be better to check it and return error
      if fails.
      
      Fixes: 1da177e4 ("Linux-2.6.12-rc2")
      Signed-off-by: default avatarJiasheng Jiang <jiasheng@iscas.ac.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      09a7264f
    • Eric Dumazet's avatar
      net/packet: fix slab-out-of-bounds access in packet_recvmsg() · 70b7b3c0
      Eric Dumazet authored
      
      [ Upstream commit c700525f ]
      
      syzbot found that when an AF_PACKET socket is using PACKET_COPY_THRESH
      and mmap operations, tpacket_rcv() is queueing skbs with
      garbage in skb->cb[], triggering a too big copy [1]
      
      Presumably, users of af_packet using mmap() already gets correct
      metadata from the mapped buffer, we can simply make sure
      to clear 12 bytes that might be copied to user space later.
      
      BUG: KASAN: stack-out-of-bounds in memcpy include/linux/fortify-string.h:225 [inline]
      BUG: KASAN: stack-out-of-bounds in packet_recvmsg+0x56c/0x1150 net/packet/af_packet.c:3489
      Write of size 165 at addr ffffc9000385fb78 by task syz-executor233/3631
      
      CPU: 0 PID: 3631 Comm: syz-executor233 Not tainted 5.17.0-rc7-syzkaller-02396-g0b3660695e80 #0
      Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
      Call Trace:
       <TASK>
       __dump_stack lib/dump_stack.c:88 [inline]
       dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
       print_address_description.constprop.0.cold+0xf/0x336 mm/kasan/report.c:255
       __kasan_report mm/kasan/report.c:442 [inline]
       kasan_report.cold+0x83/0xdf mm/kasan/report.c:459
       check_region_inline mm/kasan/generic.c:183 [inline]
       kasan_check_range+0x13d/0x180 mm/kasan/generic.c:189
       memcpy+0x39/0x60 mm/kasan/shadow.c:66
       memcpy include/linux/fortify-string.h:225 [inline]
       packet_recvmsg+0x56c/0x1150 net/packet/af_packet.c:3489
       sock_recvmsg_nosec net/socket.c:948 [inline]
       sock_recvmsg net/socket.c:966 [inline]
       sock_recvmsg net/socket.c:962 [inline]
       ____sys_recvmsg+0x2c4/0x600 net/socket.c:2632
       ___sys_recvmsg+0x127/0x200 net/socket.c:2674
       __sys_recvmsg+0xe2/0x1a0 net/socket.c:2704
       do_syscall_x64 arch/x86/entry/common.c:50 [inline]
       do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
       entry_SYSCALL_64_after_hwframe+0x44/0xae
      RIP: 0033:0x7fdfd5954c29
      Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 41 15 00 00 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 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 c0 ff ff ff f7 d8 64 89 01 48
      RSP: 002b:00007ffcf8e71e48 EFLAGS: 00000246 ORIG_RAX: 000000000000002f
      RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00007fdfd5954c29
      RDX: 0000000000000000 RSI: 0000000020000500 RDI: 0000000000000005
      RBP: 0000000000000000 R08: 000000000000000d R09: 000000000000000d
      R10: 0000000000000000 R11: 0000000000000246 R12: 00007ffcf8e71e60
      R13: 00000000000f4240 R14: 000000000000c1ff R15: 00007ffcf8e71e54
       </TASK>
      
      addr ffffc9000385fb78 is located in stack of task syz-executor233/3631 at offset 32 in frame:
       ____sys_recvmsg+0x0/0x600 include/linux/uio.h:246
      
      this frame has 1 object:
       [32, 160) 'addr'
      
      Memory state around the buggy address:
       ffffc9000385fa80: 00 04 f3 f3 f3 f3 f3 00 00 00 00 00 00 00 00 00
       ffffc9000385fb00: 00 00 00 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00
      >ffffc9000385fb80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f3
                                                                      ^
       ffffc9000385fc00: f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00 f1
       ffffc9000385fc80: f1 f1 f1 00 f2 f2 f2 00 f2 f2 f2 00 00 00 00 00
      ==================================================================
      
      Fixes: 0fb375fb ("[AF_PACKET]: Allow for > 8 byte hardware addresses.")
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Reported-by: default avatarsyzbot <syzkaller@googlegroups.com>
      Link: https://lore.kernel.org/r/20220312232958.3535620-1-eric.dumazet@gmail.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      70b7b3c0
    • Kurt Cancemi's avatar
      net: phy: marvell: Fix invalid comparison in the resume and suspend functions · 169add82
      Kurt Cancemi authored
      
      [ Upstream commit 837d9e49 ]
      
      This bug resulted in only the current mode being resumed and suspended when
      the PHY supported both fiber and copper modes and when the PHY only supported
      copper mode the fiber mode would incorrectly be attempted to be resumed and
      suspended.
      
      Fixes: 3758be3d ("Marvell phy: add functions to suspend and resume both interfaces: fiber and copper links.")
      Signed-off-by: default avatarKurt Cancemi <kurt@x64architecture.com>
      Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
      Link: https://lore.kernel.org/r/20220312201512.326047-1-kurt@x64architecture.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      169add82
    • Sabrina Dubroca's avatar
      esp6: fix check on ipv6_skip_exthdr's return value · 01fac1ca
      Sabrina Dubroca authored
      
      [ Upstream commit 4db4075f ]
      
      Commit 5f9c55c8 ("ipv6: check return value of ipv6_skip_exthdr")
      introduced an incorrect check, which leads to all ESP packets over
      either TCPv6 or UDPv6 encapsulation being dropped. In this particular
      case, offset is negative, since skb->data points to the ESP header in
      the following chain of headers, while skb->network_header points to
      the IPv6 header:
      
          IPv6 | ext | ... | ext | UDP | ESP | ...
      
      That doesn't seem to be a problem, especially considering that if we
      reach esp6_input_done2, we're guaranteed to have a full set of headers
      available (otherwise the packet would have been dropped earlier in the
      stack). However, it means that the return value will (intentionally)
      be negative. We can make the test more specific, as the expected
      return value of ipv6_skip_exthdr will be the (negated) size of either
      a UDP header, or a TCP header with possible options.
      
      In the future, we should probably either make ipv6_skip_exthdr
      explicitly accept negative offsets (and adjust its return value for
      error cases), or make ipv6_skip_exthdr only take non-negative
      offsets (and audit all callers).
      
      Fixes: 5f9c55c8 ("ipv6: check return value of ipv6_skip_exthdr")
      Reported-by: default avatarXiumei Mu <xmu@redhat.com>
      Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
      Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      01fac1ca
    • Jiyong Park's avatar
      vsock: each transport cycles only on its own sockets · d9fe5909
      Jiyong Park authored
      [ Upstream commit 8e6ed963 ]
      
      When iterating over sockets using vsock_for_each_connected_socket, make
      sure that a transport filters out sockets that don't belong to the
      transport.
      
      There actually was an issue caused by this; in a nested VM
      configuration, destroying the nested VM (which often involves the
      closing of /dev/vhost-vsock if there was h2g connections to the nested
      VM) kills not only the h2g connections, but also all existing g2h
      connections to the (outmost) host which are totally unrelated.
      
      Tested: Executed the following steps on Cuttlefish (Android running on a
      VM) [1]: (1) Enter into an `adb shell` session - to have a g2h
      connection inside the VM, (2) open and then close /dev/vhost-vsock by
      `exec 3< /dev/vhost-vsock && exec 3<&-`, (3) observe that the adb
      session is not reset.
      
      [1] https://android.googlesource.com/device/google/cuttlefish/
      
      
      
      Fixes: c0cfa2d8 ("vsock: add multi-transports support")
      Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
      Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
      Signed-off-by: default avatarJiyong Park <jiyong@google.com>
      Link: https://lore.kernel.org/r/20220311020017.1509316-1-jiyong@google.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      d9fe5909
    • Randy Dunlap's avatar
      efi: fix return value of __setup handlers · ac7dd609
      Randy Dunlap authored
      
      [ Upstream commit 9feaf8b3 ]
      
      When "dump_apple_properties" is used on the kernel boot command line,
      it causes an Unknown parameter message and the string is added to init's
      argument strings:
      
        Unknown kernel command line parameters "dump_apple_properties
          BOOT_IMAGE=/boot/bzImage-517rc6 efivar_ssdt=newcpu_ssdt", will be
          passed to user space.
      
       Run /sbin/init as init process
         with arguments:
           /sbin/init
           dump_apple_properties
         with environment:
           HOME=/
           TERM=linux
           BOOT_IMAGE=/boot/bzImage-517rc6
           efivar_ssdt=newcpu_ssdt
      
      Similarly when "efivar_ssdt=somestring" is used, it is added to the
      Unknown parameter message and to init's environment strings, polluting
      them (see examples above).
      
      Change the return value of the __setup functions to 1 to indicate
      that the __setup options have been handled.
      
      Fixes: 58c5475a ("x86/efi: Retrieve and assign Apple device properties")
      Fixes: 475fb4e8 ("efi / ACPI: load SSTDs from EFI variables")
      Signed-off-by: default avatarRandy Dunlap <rdunlap@infradead.org>
      Reported-by: default avatarIgor Zhbanov <i.zhbanov@omprussia.ru>
      Link: lore.kernel.org/r/64644a2f-4a20-bab3-1e15-3b2cdd0defe3@omprussia.ru
      Cc: Ard Biesheuvel <ardb@kernel.org>
      Cc: linux-efi@vger.kernel.org
      Cc: Lukas Wunner <lukas@wunner.de>
      Cc: Octavian Purdila <octavian.purdila@intel.com>
      Cc: "Rafael J. Wysocki" <rafael@kernel.org>
      Cc: Matt Fleming <matt@codeblueprint.co.uk>
      Link: https://lore.kernel.org/r/20220301041851.12459-1-rdunlap@infradead.org
      
      
      Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      ac7dd609
    • Guo Ziliang's avatar
      mm: swap: get rid of livelock in swapin readahead · fa3aa103
      Guo Ziliang authored
      commit 029c4628 upstream.
      
      In our testing, a livelock task was found.  Through sysrq printing, same
      stack was found every time, as follows:
      
        __swap_duplicate+0x58/0x1a0
        swapcache_prepare+0x24/0x30
        __read_swap_cache_async+0xac/0x220
        read_swap_cache_async+0x58/0xa0
        swapin_readahead+0x24c/0x628
        do_swap_page+0x374/0x8a0
        __handle_mm_fault+0x598/0xd60
        handle_mm_fault+0x114/0x200
        do_page_fault+0x148/0x4d0
        do_translation_fault+0xb0/0xd4
        do_mem_abort+0x50/0xb0
      
      The reason for the livelock is that swapcache_prepare() always returns
      EEXIST, indicating that SWAP_HAS_CACHE has not been cleared, so that it
      cannot jump out of the loop.  We suspect that the task that clears the
      SWAP_HAS_CACHE flag never gets a chance to run.  We try to lower the
      priority of the task stuck in a livelock so that the task that clears
      the SWAP_HAS_CACHE flag will run.  The results show that the system
      returns to normal after the priority is lowered.
      
      In our testing, multiple real-time tasks are bound to the same core, and
      the task in the livelock is the highest priority task of the core, so
      the livelocked task cannot be preempted.
      
      Although cond_resched() is used by __read_swap_cache_async, it is an
      empty function in the preemptive system and cannot achieve the purpose
      of releasing the CPU.  A high-priority task cannot release the CPU
      unless preempted by a higher-priority task.  But when this task is
      already the highest priority task on this core, other tasks will not be
      able to be scheduled.  So we think we should replace cond_resched() with
      schedule_timeout_uninterruptible(1), schedule_timeout_interruptible will
      call set_current_state first to set the task state, so the task will be
      removed from the running queue, so as to achieve the purpose of giving
      up the CPU and prevent it from running in kernel mode for too long.
      
      (akpm: ugly hack becomes uglier.  But it fixes the issue in a
      backportable-to-stable fashion while we hopefully work on something
      better)
      
      Link: https://lkml.kernel.org/r/20220221111749.1928222-1-cgel.zte@gmail.com
      
      
      Signed-off-by: default avatarGuo Ziliang <guo.ziliang@zte.com.cn>
      Reported-by: default avatarZeal Robot <zealci@zte.com.cn>
      Reviewed-by: default avatarRan Xiaokai <ran.xiaokai@zte.com.cn>
      Reviewed-by: default avatarJiang Xuexin <jiang.xuexin@zte.com.cn>
      Reviewed-by: default avatarYang Yang <yang.yang29@zte.com.cn>
      Acked-by: default avatarHugh Dickins <hughd@google.com>
      Cc: Naoya Horiguchi <naoya.horiguchi@nec.com>
      Cc: Michal Hocko <mhocko@kernel.org>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Roger Quadros <rogerq@kernel.org>
      Cc: Ziliang Guo <guo.ziliang@zte.com.cn>
      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>
      fa3aa103
    • Joseph Qi's avatar
      ocfs2: fix crash when initialize filecheck kobj fails · df3301dc
      Joseph Qi authored
      commit 7b0b1332 upstream.
      
      Once s_root is set, genric_shutdown_super() will be called if
      fill_super() fails.  That means, we will call ocfs2_dismount_volume()
      twice in such case, which can lead to kernel crash.
      
      Fix this issue by initializing filecheck kobj before setting s_root.
      
      Link: https://lkml.kernel.org/r/20220310081930.86305-1-joseph.qi@linux.alibaba.com
      
      
      Fixes: 5f483c4a ("ocfs2: add kobject for online file check")
      Signed-off-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>
      df3301dc
    • Brian Masney's avatar
      crypto: qcom-rng - ensure buffer for generate is completely filled · 0f9b7b8d
      Brian Masney authored
      commit a680b183 upstream.
      
      The generate function in struct rng_alg expects that the destination
      buffer is completely filled if the function returns 0. qcom_rng_read()
      can run into a situation where the buffer is partially filled with
      randomness and the remaining part of the buffer is zeroed since
      qcom_rng_generate() doesn't check the return value. This issue can
      be reproduced by running the following from libkcapi:
      
          kcapi-rng -b 9000000 > OUTFILE
      
      The generated OUTFILE will have three huge sections that contain all
      zeros, and this is caused by the code where the test
      'val & PRNG_STATUS_DATA_AVAIL' fails.
      
      Let's fix this issue by ensuring that qcom_rng_read() always returns
      with a full buffer if the function returns success. Let's also have
      qcom_rng_generate() return the correct value.
      
      Here's some statistics from the ent project
      (https://www.fourmilab.ch/random/
      
      ) that shows information about the
      quality of the generated numbers:
      
          $ ent -c qcom-random-before
          Value Char Occurrences Fraction
            0           606748   0.067416
            1            33104   0.003678
            2            33001   0.003667
          ...
          253   �        32883   0.003654
          254   �        33035   0.003671
          255   �        33239   0.003693
      
          Total:       9000000   1.000000
      
          Entropy = 7.811590 bits per byte.
      
          Optimum compression would reduce the size
          of this 9000000 byte file by 2 percent.
      
          Chi square distribution for 9000000 samples is 9329962.81, and
          randomly would exceed this value less than 0.01 percent of the
          times.
      
          Arithmetic mean value of data bytes is 119.3731 (127.5 = random).
          Monte Carlo value for Pi is 3.197293333 (error 1.77 percent).
          Serial correlation coefficient is 0.159130 (totally uncorrelated =
          0.0).
      
      Without this patch, the results of the chi-square test is 0.01%, and
      the numbers are certainly not random according to ent's project page.
      The results improve with this patch:
      
          $ ent -c qcom-random-after
          Value Char Occurrences Fraction
            0            35432   0.003937
            1            35127   0.003903
            2            35424   0.003936
          ...
          253   �        35201   0.003911
          254   �        34835   0.003871
          255   �        35368   0.003930
      
          Total:       9000000   1.000000
      
          Entropy = 7.999979 bits per byte.
      
          Optimum compression would reduce the size
          of this 9000000 byte file by 0 percent.
      
          Chi square distribution for 9000000 samples is 258.77, and randomly
          would exceed this value 42.24 percent of the times.
      
          Arithmetic mean value of data bytes is 127.5006 (127.5 = random).
          Monte Carlo value for Pi is 3.141277333 (error 0.01 percent).
          Serial correlation coefficient is 0.000468 (totally uncorrelated =
          0.0).
      
      This change was tested on a Nexus 5 phone (msm8974 SoC).
      
      Signed-off-by: default avatarBrian Masney <bmasney@redhat.com>
      Fixes: ceec5f5b ("crypto: qcom-rng - Add Qcom prng driver")
      Cc: stable@vger.kernel.org # 4.19+
      Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      Reviewed-by: default avatarAndrew Halaney <ahalaney@redhat.com>
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      0f9b7b8d
  2. Mar 19, 2022
Loading