Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update 5.10-2.1.x-imx up to v5.10.83 #508

Merged
merged 301 commits into from
Dec 7, 2021
This pull request is big! We’re only showing the most recent 250 commits.

Commits on Nov 26, 2021

  1. usb: host: ohci-tmio: check return value after calling platform_get_r…

    …esource()
    
    [ Upstream commit 9eff2b2 ]
    
    It will cause null-ptr-deref if platform_get_resource() returns NULL,
    we need check the return value.
    
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
    Link: https://lore.kernel.org/r/20211011134920.118477-1-yangyingliang@huawei.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Yang Yingliang authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    2474eb7 View commit details
    Browse the repository at this point in the history
  2. ARM: dts: ls1021a: move thermal-zones node out of soc/

    [ Upstream commit 1ee1500 ]
    
    This fixes dtbs-check error from simple-bus schema:
    soc: thermal-zones: {'type': 'object'} is not allowed for {'cpu-thermal': ..... }
            From schema: /home/leo/.local/lib/python3.8/site-packages/dtschema/schemas/simple-bus.yaml
    
    Signed-off-by: Li Yang <leoyang.li@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Li Yang authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    cbba09f View commit details
    Browse the repository at this point in the history
  3. ARM: dts: ls1021a-tsn: use generic "jedec,spi-nor" compatible for flash

    [ Upstream commit 05e63b4 ]
    
    We cannot list all the possible chips used in different board revisions,
    just use the generic "jedec,spi-nor" compatible instead.  This also
    fixes dtbs_check error:
    ['jedec,spi-nor', 's25fl256s1', 's25fl512s'] is too long
    
    Signed-off-by: Li Yang <leoyang.li@nxp.com>
    Reviewed-by: Kuldeep Singh <kuldeep.singh@nxp.com>
    Signed-off-by: Shawn Guo <shawnguo@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Li Yang authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    c788ac4 View commit details
    Browse the repository at this point in the history
  4. ALSA: ISA: not for M68K

    [ Upstream commit 3c05f14 ]
    
    On m68k, compiling drivers under SND_ISA causes build errors:
    
    ../sound/core/isadma.c: In function 'snd_dma_program':
    ../sound/core/isadma.c:33:17: error: implicit declaration of function 'claim_dma_lock' [-Werror=implicit-function-declaration]
       33 |         flags = claim_dma_lock();
          |                 ^~~~~~~~~~~~~~
    ../sound/core/isadma.c:41:9: error: implicit declaration of function 'release_dma_lock' [-Werror=implicit-function-declaration]
       41 |         release_dma_lock(flags);
          |         ^~~~~~~~~~~~~~~~
    
    ../sound/isa/sb/sb16_main.c: In function 'snd_sb16_playback_prepare':
    ../sound/isa/sb/sb16_main.c:253:72: error: 'DMA_AUTOINIT' undeclared (first use in this function)
      253 |         snd_dma_program(dma, runtime->dma_addr, size, DMA_MODE_WRITE | DMA_AUTOINIT);
          |                                                                        ^~~~~~~~~~~~
    ../sound/isa/sb/sb16_main.c:253:72: note: each undeclared identifier is reported only once for each function it appears in
    ../sound/isa/sb/sb16_main.c: In function 'snd_sb16_capture_prepare':
    ../sound/isa/sb/sb16_main.c:322:71: error: 'DMA_AUTOINIT' undeclared (first use in this function)
      322 |         snd_dma_program(dma, runtime->dma_addr, size, DMA_MODE_READ | DMA_AUTOINIT);
          |                                                                       ^~~~~~~~~~~~
    
    and more...
    
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Jaroslav Kysela <perex@perex.cz>
    Cc: Takashi Iwai <tiwai@suse.com>
    Cc: alsa-devel@alsa-project.org
    Cc: linux-m68k@lists.linux-m68k.org
    Cc: Geert Uytterhoeven <geert@linux-m68k.org>
    Link: https://lore.kernel.org/r/20211016062602.3588-1-rdunlap@infradead.org
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    rddunlap authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    da82a20 View commit details
    Browse the repository at this point in the history
  5. tty: tty_buffer: Fix the softlockup issue in flush_to_ldisc

    [ Upstream commit 3968ddc ]
    
    When running ltp testcase(ltp/testcases/kernel/pty/pty04.c) with arm64, there is a soft lockup,
    which look like this one:
    
      Workqueue: events_unbound flush_to_ldisc
      Call trace:
       dump_backtrace+0x0/0x1ec
       show_stack+0x24/0x30
       dump_stack+0xd0/0x128
       panic+0x15c/0x374
       watchdog_timer_fn+0x2b8/0x304
       __run_hrtimer+0x88/0x2c0
       __hrtimer_run_queues+0xa4/0x120
       hrtimer_interrupt+0xfc/0x270
       arch_timer_handler_phys+0x40/0x50
       handle_percpu_devid_irq+0x94/0x220
       __handle_domain_irq+0x88/0xf0
       gic_handle_irq+0x84/0xfc
       el1_irq+0xc8/0x180
       slip_unesc+0x80/0x214 [slip]
       tty_ldisc_receive_buf+0x64/0x80
       tty_port_default_receive_buf+0x50/0x90
       flush_to_ldisc+0xbc/0x110
       process_one_work+0x1d4/0x4b0
       worker_thread+0x180/0x430
       kthread+0x11c/0x120
    
    In the testcase pty04, The first process call the write syscall to send
    data to the pty master. At the same time, the workqueue will do the
    flush_to_ldisc to pop data in a loop until there is no more data left.
    When the sender and workqueue running in different core, the sender sends
    data fastly in full time which will result in workqueue doing work in loop
    for a long time and occuring softlockup in flush_to_ldisc with kernel
    configured without preempt. So I add need_resched check and cond_resched
    in the flush_to_ldisc loop to avoid it.
    
    Signed-off-by: Guanghui Feng <guanghuifeng@linux.alibaba.com>
    Link: https://lore.kernel.org/r/1633961304-24759-1-git-send-email-guanghuifeng@linux.alibaba.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Guanghui Feng authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    77e9fed View commit details
    Browse the repository at this point in the history
  6. MIPS: sni: Fix the build

    [ Upstream commit c91cf42 ]
    
    This patch fixes the following gcc 10 build error:
    
    arch/mips/sni/time.c: In function ‘a20r_set_periodic’:
    arch/mips/sni/time.c:15:26: error: unsigned conversion from ‘int’ to ‘u8’ {aka ‘volatile unsigned char’} changes value from ‘576’ to ‘64’ [-Werror=overflow]
       15 | #define SNI_COUNTER0_DIV ((SNI_CLOCK_TICK_RATE / SNI_COUNTER2_DIV) / HZ)
          |                          ^
    arch/mips/sni/time.c:21:45: note: in expansion of macro ‘SNI_COUNTER0_DIV’
       21 |  *(volatile u8 *)(A20R_PT_CLOCK_BASE + 0) = SNI_COUNTER0_DIV;
          |                                             ^~~~~~~~~~~~~~~~
    
    Cc: linux-mips@vger.kernel.org
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    bvanassche authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    9635581 View commit details
    Browse the repository at this point in the history
  7. scsi: scsi_debug: Fix out-of-bound read in resp_readcap16()

    [ Upstream commit 4e3ace0 ]
    
    The following warning was observed running syzkaller:
    
    [ 3813.830724] sg_write: data in/out 65466/242 bytes for SCSI command 0x9e-- guessing data in;
    [ 3813.830724]    program syz-executor not setting count and/or reply_len properly
    [ 3813.836956] ==================================================================
    [ 3813.839465] BUG: KASAN: stack-out-of-bounds in sg_copy_buffer+0x157/0x1e0
    [ 3813.841773] Read of size 4096 at addr ffff8883cf80f540 by task syz-executor/1549
    [ 3813.846612] Call Trace:
    [ 3813.846995]  dump_stack+0x108/0x15f
    [ 3813.847524]  print_address_description+0xa5/0x372
    [ 3813.848243]  kasan_report.cold+0x236/0x2a8
    [ 3813.849439]  check_memory_region+0x240/0x270
    [ 3813.850094]  memcpy+0x30/0x80
    [ 3813.850553]  sg_copy_buffer+0x157/0x1e0
    [ 3813.853032]  sg_copy_from_buffer+0x13/0x20
    [ 3813.853660]  fill_from_dev_buffer+0x135/0x370
    [ 3813.854329]  resp_readcap16+0x1ac/0x280
    [ 3813.856917]  schedule_resp+0x41f/0x1630
    [ 3813.858203]  scsi_debug_queuecommand+0xb32/0x17e0
    [ 3813.862699]  scsi_dispatch_cmd+0x330/0x950
    [ 3813.863329]  scsi_request_fn+0xd8e/0x1710
    [ 3813.863946]  __blk_run_queue+0x10b/0x230
    [ 3813.864544]  blk_execute_rq_nowait+0x1d8/0x400
    [ 3813.865220]  sg_common_write.isra.0+0xe61/0x2420
    [ 3813.871637]  sg_write+0x6c8/0xef0
    [ 3813.878853]  __vfs_write+0xe4/0x800
    [ 3813.883487]  vfs_write+0x17b/0x530
    [ 3813.884008]  ksys_write+0x103/0x270
    [ 3813.886268]  __x64_sys_write+0x77/0xc0
    [ 3813.886841]  do_syscall_64+0x106/0x360
    [ 3813.887415]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    This issue can be reproduced with the following syzkaller log:
    
    r0 = openat(0xffffffffffffff9c, &(0x7f0000000040)='./file0\x00', 0x26e1, 0x0)
    r1 = syz_open_procfs(0xffffffffffffffff, &(0x7f0000000000)='fd/3\x00')
    open_by_handle_at(r1, &(0x7f00000003c0)=ANY=[@ANYRESHEX], 0x602000)
    r2 = syz_open_dev$sg(&(0x7f0000000000), 0x0, 0x40782)
    write$binfmt_aout(r2, &(0x7f0000000340)=ANY=[@ANYBLOB="00000000deff000000000000000000000000000000000000000000000000000047f007af9e107a41ec395f1bded7be24277a1501ff6196a83366f4e6362bc0ff2b247f68a972989b094b2da4fb3607fcf611a22dd04310d28c75039d"], 0x126)
    
    In resp_readcap16() we get "int alloc_len" value -1104926854, and then pass
    the huge arr_len to fill_from_dev_buffer(), but arr is only 32 bytes. This
    leads to OOB in sg_copy_buffer().
    
    To solve this issue, define alloc_len as u32.
    
    Link: https://lore.kernel.org/r/20211013033913.2551004-2-yebin10@huawei.com
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Ye Bin authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    3e20cb0 View commit details
    Browse the repository at this point in the history
  8. scsi: scsi_debug: Fix out-of-bound read in resp_report_tgtpgs()

    [ Upstream commit f347c26 ]
    
    The following issue was observed running syzkaller:
    
    BUG: KASAN: slab-out-of-bounds in memcpy include/linux/string.h:377 [inline]
    BUG: KASAN: slab-out-of-bounds in sg_copy_buffer+0x150/0x1c0 lib/scatterlist.c:831
    Read of size 2132 at addr ffff8880aea95dc8 by task syz-executor.0/9815
    
    CPU: 0 PID: 9815 Comm: syz-executor.0 Not tainted 4.19.202-00874-gfc0fe04215a9 Freescale#2
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
    Call Trace:
     __dump_stack lib/dump_stack.c:77 [inline]
     dump_stack+0xe4/0x14a lib/dump_stack.c:118
     print_address_description+0x73/0x280 mm/kasan/report.c:253
     kasan_report_error mm/kasan/report.c:352 [inline]
     kasan_report+0x272/0x370 mm/kasan/report.c:410
     memcpy+0x1f/0x50 mm/kasan/kasan.c:302
     memcpy include/linux/string.h:377 [inline]
     sg_copy_buffer+0x150/0x1c0 lib/scatterlist.c:831
     fill_from_dev_buffer+0x14f/0x340 drivers/scsi/scsi_debug.c:1021
     resp_report_tgtpgs+0x5aa/0x770 drivers/scsi/scsi_debug.c:1772
     schedule_resp+0x464/0x12f0 drivers/scsi/scsi_debug.c:4429
     scsi_debug_queuecommand+0x467/0x1390 drivers/scsi/scsi_debug.c:5835
     scsi_dispatch_cmd+0x3fc/0x9b0 drivers/scsi/scsi_lib.c:1896
     scsi_request_fn+0x1042/0x1810 drivers/scsi/scsi_lib.c:2034
     __blk_run_queue_uncond block/blk-core.c:464 [inline]
     __blk_run_queue+0x1a4/0x380 block/blk-core.c:484
     blk_execute_rq_nowait+0x1c2/0x2d0 block/blk-exec.c:78
     sg_common_write.isra.19+0xd74/0x1dc0 drivers/scsi/sg.c:847
     sg_write.part.23+0x6e0/0xd00 drivers/scsi/sg.c:716
     sg_write+0x64/0xa0 drivers/scsi/sg.c:622
     __vfs_write+0xed/0x690 fs/read_write.c:485
    kill_bdev:block_device:00000000e138492c
     vfs_write+0x184/0x4c0 fs/read_write.c:549
     ksys_write+0x107/0x240 fs/read_write.c:599
     do_syscall_64+0xc2/0x560 arch/x86/entry/common.c:293
     entry_SYSCALL_64_after_hwframe+0x49/0xbe
    
    We get 'alen' from command its type is int. If userspace passes a large
    length we will get a negative 'alen'.
    
    Switch n, alen, and rlen to u32.
    
    Link: https://lore.kernel.org/r/20211013033913.2551004-3-yebin10@huawei.com
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Ye Bin <yebin10@huawei.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Ye Bin authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    8440377 View commit details
    Browse the repository at this point in the history
  9. scsi: target: Fix ordered tag handling

    [ Upstream commit ed1227e ]
    
    This patch fixes the following bugs:
    
    1. If there are multiple ordered cmds queued and multiple simple cmds
       completing, target_restart_delayed_cmds() could be called on different
       CPUs and each instance could start a ordered cmd. They could then run in
       different orders than they were queued.
    
    2. target_restart_delayed_cmds() and target_handle_task_attr() can race
       where:
    
       1. target_handle_task_attr() has passed the simple_cmds == 0 check.
    
       2. transport_complete_task_attr() then decrements simple_cmds to 0.
    
       3. transport_complete_task_attr() runs target_restart_delayed_cmds() and
          it does not see any cmds on the delayed_cmd_list.
    
       4. target_handle_task_attr() adds the cmd to the delayed_cmd_list.
    
       The cmd will then end up timing out.
    
    3. If we are sent > 1 ordered cmds and simple_cmds == 0, we can execute
       them out of order, because target_handle_task_attr() will hit that
       simple_cmds check first and return false for all ordered cmds sent.
    
    4. We run target_restart_delayed_cmds() after every cmd completion, so if
       there is more than 1 simple cmd running, we start executing ordered cmds
       after that first cmd instead of waiting for all of them to complete.
    
    5. Ordered cmds are not supposed to start until HEAD OF QUEUE and all older
       cmds have completed, and not just simple.
    
    6. It's not a bug but it doesn't make sense to take the delayed_cmd_lock
       for every cmd completion when ordered cmds are almost never used. Just
       replacing that lock with an atomic increases IOPs by up to 10% when
       completions are spread over multiple CPUs and there are multiple
       sessions/ mqs/thread accessing the same device.
    
    This patch moves the queued delayed handling to a per device work to
    serialze the cmd executions for each device and adds a new counter to track
    HEAD_OF_QUEUE and SIMPLE cmds. We can then check the new counter to
    determine when to run the work on the completion path.
    
    Link: https://lore.kernel.org/r/20210930020422.92578-3-michael.christie@oracle.com
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mikechristie authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    8176441 View commit details
    Browse the repository at this point in the history
  10. scsi: target: Fix alua_tg_pt_gps_count tracking

    [ Upstream commit 1283c0d ]
    
    We can't free the tg_pt_gp in core_alua_set_tg_pt_gp_id() because it's
    still accessed via configfs. Its release must go through the normal
    configfs/refcount process.
    
    The max alua_tg_pt_gps_count check should probably have been done in
    core_alua_allocate_tg_pt_gp(), but with the current code userspace could
    have created 0x0000ffff + 1 groups, but only set the id for 0x0000ffff.
    Then it could have deleted a group with an ID set, and then set the ID for
    that extra group and it would work ok.
    
    It's unlikely, but just in case this patch continues to allow that type of
    behavior, and just fixes the kfree() while in use bug.
    
    Link: https://lore.kernel.org/r/20210930020422.92578-4-michael.christie@oracle.com
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mikechristie authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    e0fef1c View commit details
    Browse the repository at this point in the history
  11. iio: imu: st_lsm6dsx: Avoid potential array overflow in st_lsm6dsx_se…

    …t_odr()
    
    [ Upstream commit 94be878 ]
    
    The length of hw->settings->odr_table is 2 and ref_sensor->id is an enum
    variable whose value is between 0 and 5.
    However, the value ST_LSM6DSX_ID_MAX (i.e. 5) is not caught properly in
     switch (sensor->id) {
    
    If ref_sensor->id is ST_LSM6DSX_ID_MAX, an array overflow will ocurrs in
    function st_lsm6dsx_check_odr():
      odr_table = &sensor->hw->settings->odr_table[sensor->id];
    
    and in function st_lsm6dsx_set_odr():
      reg = &hw->settings->odr_table[ref_sensor->id].reg;
    
    To avoid this array overflow, handle ST_LSM6DSX_ID_GYRO explicitly and
    return -EINVAL for the default case.
    
    The enum value ST_LSM6DSX_ID_MAX is only present as an easy way to check
    the limit and as such is never used, however this is not locally obvious.
    
    Reported-by: TOTE Robot <oslab@tsinghua.edu.cn>
    Signed-off-by: Teng Qi <starmiku1207184332@gmail.com>
    Acked-by: Lorenzo Bianconi <lorenzo@kernel.org>
    Link: https://lore.kernel.org/r/20211011114003.976221-1-starmiku1207184332@gmail.com
    Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Teng Qi authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    833ad27 View commit details
    Browse the repository at this point in the history
  12. powerpc/5200: dts: fix memory node unit name

    [ Upstream commit aed2886 ]
    
    Fixes build warnings:
    Warning (unit_address_vs_reg): /memory: node has a reg or ranges property, but no unit name
    
    Signed-off-by: Anatolij Gustschin <agust@denx.de>
    Reviewed-by: Rob Herring <robh@kernel.org>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211013220532.24759-4-agust@denx.de
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    vdsao authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    8c4d976 View commit details
    Browse the repository at this point in the history
  13. ARM: dts: qcom: fix memory and mdio nodes naming for RB3011

    [ Upstream commit 14a1f6c ]
    
    Fixes warnings regarding to memory and mdio nodes and
    apply new naming following dt-schema.
    
    Signed-off-by: David Heidelberg <david@ixit.cz>
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Link: https://lore.kernel.org/r/20211020214741.261509-1-david@ixit.cz
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    okias authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    850416b View commit details
    Browse the repository at this point in the history
  14. ALSA: gus: fix null pointer dereference on pointer block

    [ Upstream commit a0d21bb ]
    
    The pointer block return from snd_gf1_dma_next_block could be
    null, so there is a potential null pointer dereference issue.
    Fix this by adding a null check before dereference.
    
    Signed-off-by: Chengfeng Ye <cyeaa@connect.ust.hk>
    Link: https://lore.kernel.org/r/20211024104611.9919-1-cyeaa@connect.ust.hk
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Ychame authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    1ac6cd8 View commit details
    Browse the repository at this point in the history
  15. powerpc/dcr: Use cmplwi instead of 3-argument cmpli

    [ Upstream commit fef071b ]
    
    In dcr-low.S we use cmpli with three arguments, instead of four
    arguments as defined in the ISA:
    
    	cmpli	cr0,r3,1024
    
    This appears to be a PPC440-ism, looking at the "PPC440x5 CPU Core
    User’s Manual" it shows cmpli having no L field, but implied to be 0 due
    to the core being 32-bit. It mentions that the ISA defines four
    arguments and recommends using cmplwi.
    
    It also corresponds to the old POWER instruction set, which had no L
    field there, a reserved bit instead.
    
    dcr-low.S is only built 32-bit, because it is only built when
    DCR_NATIVE=y, which is only selected by 40x and 44x. Looking at the
    generated code (with gcc/gas) we see cmplwi as expected.
    
    Although gas is happy with the 3-argument version when building for
    32-bit, the LLVM assembler is not and errors out with:
    
      arch/powerpc/sysdev/dcr-low.S:27:10: error: invalid operand for instruction
       cmpli 0,%r3,1024; ...
               ^
    
    Switch to the cmplwi extended opcode, which avoids any confusion when
    reading the ISA, fixes the issue with the LLVM assembler, and also means
    the code could be built 64-bit in future (though that's very unlikely).
    
    Reported-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    BugLink: ClangBuiltLinux#1419
    Link: https://lore.kernel.org/r/20211014024424.528848-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mpe authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    bc4bc07 View commit details
    Browse the repository at this point in the history
  16. powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST

    [ Upstream commit c12ab8d ]
    
    Until now, all tests involving CONFIG_STRICT_KERNEL_RWX were done with
    DEBUG_RODATA_TEST to check the result. But now that
    CONFIG_STRICT_KERNEL_RWX is selected by default, it came without
    CONFIG_DEBUG_RODATA_TEST and led to the following Oops
    
    [    6.830908] Freeing unused kernel image (initmem) memory: 352K
    [    6.840077] BUG: Unable to handle kernel data access on write at 0xc1285200
    [    6.846836] Faulting instruction address: 0xc0004b6c
    [    6.851745] Oops: Kernel access of bad area, sig: 11 [Freescale#1]
    [    6.857075] BE PAGE_SIZE=16K PREEMPT CMPC885
    [    6.861348] SAF3000 DIE NOTIFICATION
    [    6.864830] CPU: 0 PID: 1 Comm: swapper Not tainted 5.15.0-rc5-s3k-dev-02255-g2747d7b7916f Freescale#451
    [    6.873429] NIP:  c0004b6c LR: c0004b60 CTR: 00000000
    [    6.878419] REGS: c902be60 TRAP: 0300   Not tainted  (5.15.0-rc5-s3k-dev-02255-g2747d7b7916f)
    [    6.886852] MSR:  00009032 <EE,ME,IR,DR,RI>  CR: 53000335  XER: 8000ff40
    [    6.893564] DAR: c1285200 DSISR: 82000000
    [    6.893564] GPR00: 0c000000 c902bf20 c20f4000 08000000 00000001 04001f00 c1800000 00000035
    [    6.893564] GPR08: ff0001ff c1280000 00000002 c0004b60 00001000 00000000 c0004b1c 00000000
    [    6.893564] GPR16: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
    [    6.893564] GPR24: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 c1060000
    [    6.932034] NIP [c0004b6c] kernel_init+0x50/0x138
    [    6.936682] LR [c0004b60] kernel_init+0x44/0x138
    [    6.941245] Call Trace:
    [    6.943653] [c902bf20] [c0004b60] kernel_init+0x44/0x138 (unreliable)
    [    6.950022] [c902bf30] [c001122c] ret_from_kernel_thread+0x5c/0x64
    [    6.956135] Instruction dump:
    [    6.959060] 48ffc521 48045469 4800d8cd 3d20c086 89295fa0 2c090000 41820058 480796c9
    [    6.966890] 4800e48d 3d20c128 39400002 3fe0c106 <91495200> 3bff8000 4806fa1d 481f7d75
    [    6.974902] ---[ end trace 1e397bacba4aa610 ]---
    
    0xc1285200 corresponds to 'system_state' global var that the kernel is trying to set to
    SYSTEM_RUNNING. This var is above the RO/RW limit so it shouldn't Oops.
    
    It oopses because the dirty bit is missing.
    
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/3d5800b0bbcd7b19761b98f50421358667b45331.1635520232.git.christophe.leroy@csgroup.eu
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    chleroy authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    29b7426 View commit details
    Browse the repository at this point in the history
  17. sh: check return code of request_irq

    [ Upstream commit 0e38225 ]
    
    request_irq is marked __must_check, but the call in shx3_prepare_cpus
    has a void return type, so it can't propagate failure to the caller.
    Follow cues from hexagon and just print an error.
    
    Fixes: c7936b9 ("sh: smp: Hook in to the generic IPI handler for SH-X3 SMP.")
    Cc: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
    Cc: Paul Mundt <lethal@linux-sh.org>
    Reported-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    nickdesaulniers authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    8748f08 View commit details
    Browse the repository at this point in the history
  18. maple: fix wrong return value of maple_bus_init().

    [ Upstream commit bde82ee ]
    
    If KMEM_CACHE or maple_alloc_dev failed, the maple_bus_init() will return 0
    rather than error, because the retval is not changed after KMEM_CACHE or
    maple_alloc_dev failed.
    
    Fixes: 17be2d2 ("sh: Add maple bus support for the SEGA Dreamcast.")
    Reported-by: Hulk Robot <hulkci@huawei.com>
    Signed-off-by: Lu Wei <luwei32@huawei.com>
    Acked-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Lu Wei authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    5d5bf89 View commit details
    Browse the repository at this point in the history
  19. f2fs: fix up f2fs_lookup tracepoints

    [ Upstream commit 70a9ac3 ]
    
    Fix up a misuse that the filename pointer isn't always valid in
    the ring buffer, and we should copy the content instead.
    
    Fixes: 0c5e36d ("f2fs: trace f2fs_lookup")
    Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    hsiangkao authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    e8bd5e3 View commit details
    Browse the repository at this point in the history
  20. f2fs: fix to use WHINT_MODE

    [ Upstream commit 011e086 ]
    
    Since active_logs can be set to 2 or 4 or NR_CURSEG_PERSIST_TYPE(6),
    it cannot be set to NR_CURSEG_TYPE(8).
    That is, whint_mode is always off.
    
    Therefore, the condition is changed from NR_CURSEG_TYPE to NR_CURSEG_PERSIST_TYPE.
    
    Cc: Chao Yu <chao@kernel.org>
    Fixes: d0b9e42 (f2fs: introduce inmem curseg)
    Reported-by: tanghuan <tanghuan@vivo.com>
    Signed-off-by: Keoseong Park <keosung.park@samsung.com>
    Signed-off-by: Fengnan Chang <changfengnan@vivo.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Keoseong Park authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    3d7c5d0 View commit details
    Browse the repository at this point in the history
  21. sh: fix kconfig unmet dependency warning for FRAME_POINTER

    [ Upstream commit fda1bc5 ]
    
    FRAME_POINTER depends on DEBUG_KERNEL so DWARF_UNWINDER should
    depend on DEBUG_KERNEL before selecting FRAME_POINTER.
    
    WARNING: unmet direct dependencies detected for FRAME_POINTER
      Depends on [n]: DEBUG_KERNEL [=n] && (M68K || UML || SUPERH [=y]) || ARCH_WANT_FRAME_POINTERS [=n]
      Selected by [y]:
      - DWARF_UNWINDER [=y]
    
    Fixes: bd35386 ("sh: dwarf unwinder support.")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Matt Fleming <matt@console-pimps.org>
    Cc: Matt Fleming <matt@codeblueprint.co.uk>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Cc: Geert Uytterhoeven <geert+renesas@glider.be>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    rddunlap authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    f44defd View commit details
    Browse the repository at this point in the history
  22. sh: math-emu: drop unused functions

    [ Upstream commit e25c252 ]
    
    Delete ieee_fpe_handler() since it is not used. After that is done,
    delete denormal_to_double() since it is not used:
    
    .../arch/sh/math-emu/math.c:505:12: error: 'ieee_fpe_handler' defined but not used [-Werror=unused-function]
      505 | static int ieee_fpe_handler(struct pt_regs *regs)
    
    .../arch/sh/math-emu/math.c:477:13: error: 'denormal_to_double' defined but not used [-Werror=unused-function]
      477 | static void denormal_to_double(struct sh_fpu_soft_struct *fpu, int n)
    
    Fixes: 7caf62d ("sh: remove unused do_fpu_error")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Takashi YOSHII <takasi-y@ops.dti.ne.jp>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    rddunlap authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    73383f6 View commit details
    Browse the repository at this point in the history
  23. sh: define __BIG_ENDIAN for math-emu

    [ Upstream commit b929926 ]
    
    Fix this by defining both ENDIAN macros in
    <asm/sfp-machine.h> so that they can be utilized in
    <math-emu/soft-fp.h> according to the latter's comment:
    /* Allow sfp-machine to have its own byte order definitions. */
    
    (This is what is done in arch/nds32/include/asm/sfp-machine.h.)
    
    This placates these build warnings:
    
    In file included from ../arch/sh/math-emu/math.c:23:
    .../include/math-emu/single.h:50:21: warning: "__BIG_ENDIAN" is not defined, evaluates to 0 [-Wundef]
       50 | #if __BYTE_ORDER == __BIG_ENDIAN
    In file included from ../arch/sh/math-emu/math.c:24:
    .../include/math-emu/double.h:59:21: warning: "__BIG_ENDIAN" is not defined, evaluates to 0 [-Wundef]
       59 | #if __BYTE_ORDER == __BIG_ENDIAN
    
    Fixes: 4b56568 ("sh: math-emu support")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
    Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Signed-off-by: Rich Felker <dalias@libc.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    rddunlap authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    4ce685c View commit details
    Browse the repository at this point in the history
  24. f2fs: compress: disallow disabling compress on non-empty compressed file

    [ Upstream commit 02d58cd ]
    
    Compresse file and normal file has differ in i_addr addressing,
    specifically addrs per inode/block. So, we will face data loss, if we
    disable the compression flag on non-empty files. Therefore we should
    disallow not only enabling but disabling the compression flag on
    non-empty files.
    
    Fixes: 4c8ff70 ("f2fs: support data compression")
    Signed-off-by: Sungjong Seo <sj1557.seo@samsung.com>
    Signed-off-by: Hyeong-Jun Kim <hj514.kim@samsung.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Hyeong-Jun Kim authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    0a17fff View commit details
    Browse the repository at this point in the history
  25. f2fs: fix incorrect return value in f2fs_sanity_check_ckpt()

    [ Upstream commit ca98d72 ]
    
    As Pavel Machek reported in [1]
    
    This code looks quite confused: part of function returns 1 on
    corruption, part returns -errno. The problem is not stable-specific.
    
    [1] https://lkml.org/lkml/2021/9/19/207
    
    Let's fix to make 'insane cp_payload case' to return 1 rater than
    EFSCORRUPTED, so that return value can be kept consistent for all
    error cases, it can avoid confusion of code logic.
    
    Fixes: 65ddf65 ("f2fs: fix to do sanity check for sb/cp fields correctly")
    Reported-by: Pavel Machek <pavel@denx.de>
    Reviewed-by: Pavel Machek <pavel@denx.de>
    Signed-off-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    chaseyu authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    7a54394 View commit details
    Browse the repository at this point in the history
  26. clk: ingenic: Fix bugs with divided dividers

    [ Upstream commit ed84ef1 ]
    
    Two fixes in one:
    
    - In the "impose hardware constraints" block, the "logical" divider
      value (aka. not translated to the hardware) was clamped to fit in the
      register area, but this totally ignored the fact that the divider
      value can itself have a fixed divider.
    
    - The code that made sure that the divider value returned by the
      function was a multiple of its own fixed divider could result in a
      wrong value being calculated, because it was rounded down instead of
      rounded up.
    
    Fixes: 4afe2d1 ("clk: ingenic: Allow divider value to be divided")
    Co-developed-by: Artur Rojek <contact@artur-rojek.eu>
    Signed-off-by: Artur Rojek <contact@artur-rojek.eu>
    Signed-off-by: Paul Cercueil <paul@crapouillou.net>
    Link: https://lore.kernel.org/r/20211001172033.122329-1-paul@crapouillou.net
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    pcercuei authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    03bc8ea View commit details
    Browse the repository at this point in the history
  27. clk/ast2600: Fix soc revision for AHB

    [ Upstream commit f45c5b1 ]
    
    Move the soc revision parsing to the initial probe, saving the driver
    from parsing the register multiple times.
    
    Use this variable to select the correct divisor table for the AHB clock.
    Before this fix the A2 would have used the A0 table.
    
    Fixes: 2d49106 ("clk: ast2600: Fix AHB clock divider for A1")
    Signed-off-by: Joel Stanley <joel@jms.id.au>
    Link: https://lore.kernel.org/r/20210922235449.213631-1-joel@jms.id.au
    Reviewed-by: Andrew Jeffery <andrew@aj.id.au>
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    shenki authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    9b3d3b7 View commit details
    Browse the repository at this point in the history
  28. clk: qcom: gcc-msm8996: Drop (again) gcc_aggre1_pnoc_ahb_clk

    [ Upstream commit 05cf3ec ]
    
    The gcc_aggre1_pnoc_ahb_clk is crucial for the proper MSM8996/APQ8096
    functioning. If it gets disabled, several subsytems will stop working
    (including eMMC/SDCC and USB). There are no in-kernel users of this
    clock, so it is much simpler to remove from the kernel.
    
    The clock was first removed in the commit 9e60de1 ("clk: qcom:
    Remove gcc_aggre1_pnoc_ahb_clk from msm8996") by Stephen Boyd, but got
    added back in the commit b567752 ("clk: qcom: Add some missing gcc
    clks for msm8996") by Rajendra Nayak.
    
    Let's remove it again in hope that nobody adds it back.
    
    Reported-by: Vladimir Zapolskiy <vladimir.zapolskiy@linaro.org>
    Cc: Rajendra Nayak <rnayak@codeaurora.org>
    Cc: Konrad Dybcio <konrad.dybcio@somainline.org>
    Fixes: b567752 ("clk: qcom: Add some missing gcc clks for msm8996")
    Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
    Link: https://lore.kernel.org/r/20211104011155.2209654-1-dmitry.baryshkov@linaro.org
    Signed-off-by: Stephen Boyd <sboyd@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    lumag authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    fbe27d0 View commit details
    Browse the repository at this point in the history
  29. mips: BCM63XX: ensure that CPU_SUPPORTS_32BIT_KERNEL is set

    [ Upstream commit 5eeaafc ]
    
    Several header files need info on CONFIG_32BIT or CONFIG_64BIT,
    but kconfig symbol BCM63XX does not provide that info. This leads
    to many build errors, e.g.:
    
       arch/mips/include/asm/page.h:196:13: error: use of undeclared identifier 'CAC_BASE'
               return x - PAGE_OFFSET + PHYS_OFFSET;
       arch/mips/include/asm/mach-generic/spaces.h:91:23: note: expanded from macro 'PAGE_OFFSET'
       #define PAGE_OFFSET             (CAC_BASE + PHYS_OFFSET)
       arch/mips/include/asm/io.h:134:28: error: use of undeclared identifier 'CAC_BASE'
               return (void *)(address + PAGE_OFFSET - PHYS_OFFSET);
       arch/mips/include/asm/mach-generic/spaces.h:91:23: note: expanded from macro 'PAGE_OFFSET'
       #define PAGE_OFFSET             (CAC_BASE + PHYS_OFFSET)
    
    arch/mips/include/asm/uaccess.h:82:10: error: use of undeclared identifier '__UA_LIMIT'
               return (__UA_LIMIT & (addr | (addr + size) | __ua_size(size))) == 0;
    
    Selecting the SYS_HAS_CPU_BMIPS* symbols causes SYS_HAS_CPU_BMIPS to be
    set, which then selects CPU_SUPPORT_32BIT_KERNEL, which causes
    CONFIG_32BIT to be set. (a bit more indirect than v1 [RFC].)
    
    Fixes: e7300d0 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: linux-mips@vger.kernel.org
    Cc: Paul Burton <paulburton@kernel.org>
    Cc: Maxime Bizon <mbizon@freebox.fr>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Suggested-by: Florian Fainelli <f.fainelli@gmail.com>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    rddunlap authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    91191d4 View commit details
    Browse the repository at this point in the history
  30. sched/core: Mitigate race cpus_share_cache()/update_top_cache_domain()

    [ Upstream commit 42dc938 ]
    
    Nothing protects the access to the per_cpu variable sd_llc_id. When testing
    the same CPU (i.e. this_cpu == that_cpu), a race condition exists with
    update_top_cache_domain(). One scenario being:
    
                  CPU1                            CPU2
      ==================================================================
    
      per_cpu(sd_llc_id, CPUX) => 0
                                        partition_sched_domains_locked()
          				      detach_destroy_domains()
      cpus_share_cache(CPUX, CPUX)          update_top_cache_domain(CPUX)
        per_cpu(sd_llc_id, CPUX) => 0
                                              per_cpu(sd_llc_id, CPUX) = CPUX
        per_cpu(sd_llc_id, CPUX) => CPUX
        return false
    
    ttwu_queue_cond() wouldn't catch smp_processor_id() == cpu and the result
    is a warning triggered from ttwu_queue_wakelist().
    
    Avoid a such race in cpus_share_cache() by always returning true when
    this_cpu == that_cpu.
    
    Fixes: 518cd62 ("sched: Only queue remote wakeups when crossing cache boundaries")
    Reported-by: Jing-Ting Wu <jing-ting.wu@mediatek.com>
    Signed-off-by: Vincent Donnefort <vincent.donnefort@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
    Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
    Link: https://lore.kernel.org/r/20211104175120.857087-1-vincent.donnefort@arm.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Vincent Donnefort authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    68fcb52 View commit details
    Browse the repository at this point in the history
  31. perf/x86/vlbr: Add c->flags to vlbr event constraints

    [ Upstream commit 5863702 ]
    
    Just like what we do in the x86_get_event_constraints(), the
    PERF_X86_EVENT_LBR_SELECT flag should also be propagated
    to event->hw.flags so that the host lbr driver can save/restore
    MSR_LBR_SELECT for the special vlbr event created by KVM or BPF.
    
    Fixes: 097e431 ("perf/x86: Add constraint to create guest LBR event without hw counter")
    Reported-by: Wanpeng Li <wanpengli@tencent.com>
    Signed-off-by: Like Xu <likexu@tencent.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Tested-by: Wanpeng Li <wanpengli@tencent.com>
    Link: https://lore.kernel.org/r/20211103091716.59906-1-likexu@tencent.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Like Xu authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    dadcc93 View commit details
    Browse the repository at this point in the history
  32. blkcg: Remove extra blkcg_bio_issue_init

    [ Upstream commit b781d8d ]
    
    KASAN reports a use-after-free report when doing block test:
    
    ==================================================================
    [10050.967049] BUG: KASAN: use-after-free in
    submit_bio_checks+0x1539/0x1550
    
    [10050.977638] Call Trace:
    [10050.978190]  dump_stack+0x9b/0xce
    [10050.979674]  print_address_description.constprop.6+0x3e/0x60
    [10050.983510]  kasan_report.cold.9+0x22/0x3a
    [10050.986089]  submit_bio_checks+0x1539/0x1550
    [10050.989576]  submit_bio_noacct+0x83/0xc80
    [10050.993714]  submit_bio+0xa7/0x330
    [10050.994435]  mpage_readahead+0x380/0x500
    [10050.998009]  read_pages+0x1c1/0xbf0
    [10051.002057]  page_cache_ra_unbounded+0x4c2/0x6f0
    [10051.007413]  do_page_cache_ra+0xda/0x110
    [10051.008207]  force_page_cache_ra+0x23d/0x3d0
    [10051.009087]  page_cache_sync_ra+0xca/0x300
    [10051.009970]  generic_file_buffered_read+0xbea/0x2130
    [10051.012685]  generic_file_read_iter+0x315/0x490
    [10051.014472]  blkdev_read_iter+0x113/0x1b0
    [10051.015300]  aio_read+0x2ad/0x450
    [10051.023786]  io_submit_one+0xc8e/0x1d60
    [10051.029855]  __se_sys_io_submit+0x125/0x350
    [10051.033442]  do_syscall_64+0x2d/0x40
    [10051.034156]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    [10051.048733] Allocated by task 18598:
    [10051.049482]  kasan_save_stack+0x19/0x40
    [10051.050263]  __kasan_kmalloc.constprop.1+0xc1/0xd0
    [10051.051230]  kmem_cache_alloc+0x146/0x440
    [10051.052060]  mempool_alloc+0x125/0x2f0
    [10051.052818]  bio_alloc_bioset+0x353/0x590
    [10051.053658]  mpage_alloc+0x3b/0x240
    [10051.054382]  do_mpage_readpage+0xddf/0x1ef0
    [10051.055250]  mpage_readahead+0x264/0x500
    [10051.056060]  read_pages+0x1c1/0xbf0
    [10051.056758]  page_cache_ra_unbounded+0x4c2/0x6f0
    [10051.057702]  do_page_cache_ra+0xda/0x110
    [10051.058511]  force_page_cache_ra+0x23d/0x3d0
    [10051.059373]  page_cache_sync_ra+0xca/0x300
    [10051.060198]  generic_file_buffered_read+0xbea/0x2130
    [10051.061195]  generic_file_read_iter+0x315/0x490
    [10051.062189]  blkdev_read_iter+0x113/0x1b0
    [10051.063015]  aio_read+0x2ad/0x450
    [10051.063686]  io_submit_one+0xc8e/0x1d60
    [10051.064467]  __se_sys_io_submit+0x125/0x350
    [10051.065318]  do_syscall_64+0x2d/0x40
    [10051.066082]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
    
    [10051.067455] Freed by task 13307:
    [10051.068136]  kasan_save_stack+0x19/0x40
    [10051.068931]  kasan_set_track+0x1c/0x30
    [10051.069726]  kasan_set_free_info+0x1b/0x30
    [10051.070621]  __kasan_slab_free+0x111/0x160
    [10051.071480]  kmem_cache_free+0x94/0x460
    [10051.072256]  mempool_free+0xd6/0x320
    [10051.072985]  bio_free+0xe0/0x130
    [10051.073630]  bio_put+0xab/0xe0
    [10051.074252]  bio_endio+0x3a6/0x5d0
    [10051.074984]  blk_update_request+0x590/0x1370
    [10051.075870]  scsi_end_request+0x7d/0x400
    [10051.076667]  scsi_io_completion+0x1aa/0xe50
    [10051.077503]  scsi_softirq_done+0x11b/0x240
    [10051.078344]  blk_mq_complete_request+0xd4/0x120
    [10051.079275]  scsi_mq_done+0xf0/0x200
    [10051.080036]  virtscsi_vq_done+0xbc/0x150
    [10051.080850]  vring_interrupt+0x179/0x390
    [10051.081650]  __handle_irq_event_percpu+0xf7/0x490
    [10051.082626]  handle_irq_event_percpu+0x7b/0x160
    [10051.083527]  handle_irq_event+0xcc/0x170
    [10051.084297]  handle_edge_irq+0x215/0xb20
    [10051.085122]  asm_call_irq_on_stack+0xf/0x20
    [10051.085986]  common_interrupt+0xae/0x120
    [10051.086830]  asm_common_interrupt+0x1e/0x40
    
    ==================================================================
    
    Bio will be checked at beginning of submit_bio_noacct(). If bio needs
    to be throttled, it will start the timer and stop submit bio directly.
    Bio will submit in blk_throtl_dispatch_work_fn() when the timer expires.
    But in the current process, if bio is throttled, it will still set bio
    issue->value by blkcg_bio_issue_init(). This is redundant and may cause
    the above use-after-free.
    
    CPU0                                   CPU1
    submit_bio
    submit_bio_noacct
      submit_bio_checks
        blk_throtl_bio()
          <=mod_timer(&sq->pending_timer
                                          blk_throtl_dispatch_work_fn
                                            submit_bio_noacct() <= bio have
                                            throttle tag, will throw directly
                                            and bio issue->value will be set
                                            here
    
                                          bio_endio()
                                          bio_put()
                                          bio_free() <= free this bio
    
        blkcg_bio_issue_init(bio)
          <= bio has been freed and
          will lead to UAF
      return BLK_QC_T_NONE
    
    Fix this by remove extra blkcg_bio_issue_init.
    
    Fixes: e439bed (blkcg: consolidate bio_issue_init() to be a part of core)
    Signed-off-by: Laibin Qiu <qiulaibin@huawei.com>
    Link: https://lore.kernel.org/r/20211112093354.3581504-1-qiulaibin@huawei.com
    Reviewed-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Laibin Qiu authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    1d61255 View commit details
    Browse the repository at this point in the history
  33. tracing/histogram: Do not copy the fixed-size char array field over t…

    …he field size
    
    [ Upstream commit 63f84ae ]
    
    Do not copy the fixed-size char array field of the events over
    the field size. The histogram treats char array as a string and
    there are 2 types of char array in the event, fixed-size and
    dynamic string. The dynamic string (__data_loc) field must be
    null terminated, but the fixed-size char array field may not
    be null terminated (not a string, but just a data).
    In that case, histogram can copy the data after the field.
    This uses the original field size for fixed-size char array
    field to restrict the histogram not to access over the original
    field size.
    
    Link: https://lkml.kernel.org/r/163673292822.195747.3696966210526410250.stgit@devnote2
    
    Fixes: 02205a6 (tracing: Add support for 'field variables')
    Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mhiramat authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    5b2f2cb View commit details
    Browse the repository at this point in the history
  34. perf bpf: Avoid memory leak from perf_env__insert_btf()

    [ Upstream commit 4924b1f ]
    
    perf_env__insert_btf() doesn't insert if a duplicate BTF id is
    encountered and this causes a memory leak. Modify the function to return
    a success/error value and then free the memory if insertion didn't
    happen.
    
    v2. Adds a return -1 when the insertion error occurs in
        perf_env__fetch_btf. This doesn't affect anything as the result is
        never checked.
    
    Fixes: 3792cb2 ("perf bpf: Save BTF in a rbtree in perf_env")
    Signed-off-by: Ian Rogers <irogers@google.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: Daniel Borkmann <daniel@iogearbox.net>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: KP Singh <kpsingh@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
    Cc: Yonghong Song <yhs@fb.com>
    Cc: bpf@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Link: http://lore.kernel.org/lkml/20211112074525.121633-1-irogers@google.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    captain5050 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    11589d3 View commit details
    Browse the repository at this point in the history
  35. perf bench futex: Fix memory leak of perf_cpu_map__new()

    [ Upstream commit 88e4823 ]
    
    ASan reports memory leaks while running:
    
      $ sudo ./perf bench futex all
    
    The leaks are caused by perf_cpu_map__new not being freed.
    This patch adds the missing perf_cpu_map__put since it calls
    cpu_map_delete implicitly.
    
    Fixes: 9c3516d ("libperf: Add perf_cpu_map__new()/perf_cpu_map__read() functions")
    Signed-off-by: Sohaib Mohamed <sohaib.amhmd@gmail.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: André Almeida <andrealmeid@collabora.com>
    Cc: Darren Hart <dvhart@infradead.org>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sohaib Mohamed <sohaib.amhmd@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lore.kernel.org/lkml/20211112201134.77892-1-sohaib.amhmd@gmail.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    smalinux authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    2ada5c0 View commit details
    Browse the repository at this point in the history
  36. perf tests: Remove bash construct from record+zstd_comp_decomp.sh

    [ Upstream commit a9cdc1c ]
    
    Commit 463538a ("perf tests: Fix test 68 zstd compression for
    s390") inadvertently removed the -g flag from all platforms rather than
    just s390, because the [[ ]] construct fails in sh. Changing to single
    brackets restores testing of call graphs and removes the following error
    from the output:
    
      $ ./perf test -v 85
      85: Zstd perf.data compression/decompression                        :
      --- start ---
      test child forked, pid 50643
      Collecting compressed record file:
      ./tests/shell/record+zstd_comp_decomp.sh: 15: [[: not found
    
    Fixes: 463538a ("perf tests: Fix test 68 zstd compression for s390")
    Signed-off-by: James Clark <james.clark@arm.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: John Fastabend <john.fastabend@gmail.com>
    Cc: KP Singh <kpsingh@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Martin KaFai Lau <kafai@fb.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Song Liu <songliubraving@fb.com>
    Cc: Sumanth Korikkar <sumanthk@linux.ibm.com>
    Cc: Thomas Richter <tmricht@linux.ibm.com>
    Cc: Yonghong Song <yhs@fb.com>
    Cc: bpf@vger.kernel.org
    Cc: netdev@vger.kernel.org
    Link: https://lore.kernel.org/r/20211028134828.65774-3-james.clark@arm.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    James-A-Clark authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    aa31e3f View commit details
    Browse the repository at this point in the history
  37. drm/nouveau: hdmigv100.c: fix corrupted HDMI Vendor InfoFrame

    [ Upstream commit 3cc1ae1 ]
    
    gv100_hdmi_ctrl() writes vendor_infoframe.subpack0_high to 0x6f0110, and
    then overwrites it with 0. Just drop the overwrite with 0, that's clearly
    a mistake.
    
    Because of this issue the HDMI VIC is 0 instead of 1 in the HDMI Vendor
    InfoFrame when transmitting 4kp30.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: 290ffea ("drm/nouveau/disp/gv100: initial support")
    Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/3d3bd0f7-c150-2479-9350-35d394ee772d@xs4all.nl
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Hans Verkuil authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    8da80ec View commit details
    Browse the repository at this point in the history
  38. net-zerocopy: Copy straggler unaligned data for TCP Rx. zerocopy.

    [ Upstream commit 18fb76e ]
    
    When TCP receive zerocopy does not successfully map the entire
    requested space, it outputs a 'hint' that the caller should recvmsg().
    
    Augment zerocopy to accept a user buffer that it tries to copy this
    hint into - if it is possible to copy the entire hint, it will do so.
    This elides a recvmsg() call for received traffic that isn't exactly
    page-aligned in size.
    
    This was tested with RPC-style traffic of arbitrary sizes. Normally,
    each received message required at least one getsockopt() call, and one
    recvmsg() call for the remaining unaligned data.
    
    With this change, almost all of the recvmsg() calls are eliminated,
    leading to a savings of about 25%-50% in number of system calls
    for RPC-style workloads.
    
    Signed-off-by: Arjun Roy <arjunroy@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    arjunroy authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    5f7aadf View commit details
    Browse the repository at this point in the history
  39. net-zerocopy: Refactor skb frag fast-forward op.

    [ Upstream commit 7fba530 ]
    
    Refactor skb frag fast-forwarding for tcp receive zerocopy. This is
    part of a patch set that introduces short-circuited hybrid copies
    for small receive operations, which results in roughly 33% fewer
    syscalls for small RPC scenarios.
    
    skb_advance_to_frag(), given a skb and an offset into the skb,
    iterates from the first frag for the skb until we're at the frag
    specified by the offset. Assuming the offset provided refers to how
    many bytes in the skb are already read, the returned frag points to
    the next frag we may read from, while offset_frag is set to the number
    of bytes from this frag that we have already read.
    
    If frag is not null and offset_frag is equal to 0, then we may be able
    to map this frag's page into the process address space with
    vm_insert_page(). However, if offset_frag is not equal to 0, then we
    cannot do so.
    
    Signed-off-by: Arjun Roy <arjunroy@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    arjunroy authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    d1a6150 View commit details
    Browse the repository at this point in the history
  40. tcp: Fix uninitialized access in skb frags array for Rx 0cp.

    [ Upstream commit 70701b8 ]
    
    TCP Receive zerocopy iterates through the SKB queue via
    tcp_recv_skb(), acquiring a pointer to an SKB and an offset within
    that SKB to read from. From there, it iterates the SKB frags array to
    determine which offset to start remapping pages from.
    
    However, this is built on the assumption that the offset read so far
    within the SKB is smaller than the SKB length. If this assumption is
    violated, we can attempt to read an invalid frags array element, which
    would cause a fault.
    
    tcp_recv_skb() can cause such an SKB to be returned when the TCP FIN
    flag is set. Therefore, we must guard against this occurrence inside
    skb_advance_frag().
    
    One way that we can reproduce this error follows:
    1) In a receiver program, call getsockopt(TCP_ZEROCOPY_RECEIVE) with:
    char some_array[32 * 1024];
    struct tcp_zerocopy_receive zc = {
      .copybuf_address  = (__u64) &some_array[0],
      .copybuf_len = 32 * 1024,
    };
    
    2) In a sender program, after a TCP handshake, send the following
    sequence of packets:
      i) Seq = [X, X+4000]
      ii) Seq = [X+4000, X+5000]
      iii) Seq = [X+4000, X+5000], Flags = FIN | URG, urgptr=1000
    
    (This can happen without URG, if we have a signal pending, but URG is
    a convenient way to reproduce the behaviour).
    
    In this case, the following event sequence will occur on the receiver:
    
    tcp_zerocopy_receive():
    -> receive_fallback_to_copy() // copybuf_len >= inq
    -> tcp_recvmsg_locked() // reads 5000 bytes, then breaks due to URG
    -> tcp_recv_skb() // yields skb with skb->len == offset
    -> tcp_zerocopy_set_hint_for_skb()
    -> skb_advance_to_frag() // will returns a frags ptr. >= nr_frags
    -> find_next_mappable_frag() // will dereference this bad frags ptr.
    
    With this patch, skb_advance_to_frag() will no longer return an
    invalid frags pointer, and will return NULL instead, fixing the issue.
    
    Signed-off-by: Arjun Roy <arjunroy@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Fixes: 05255b8 ("tcp: add TCP_ZEROCOPY_RECEIVE support for zerocopy receive")
    Link: https://lore.kernel.org/r/20211111235215.2605384-1-arjunroy.kdev@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    arjunroy authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    900ea2f View commit details
    Browse the repository at this point in the history
  41. tracing: Add length protection to histogram string copies

    [ Upstream commit 938aa33 ]
    
    The string copies to the histogram storage has a max size of 256 bytes
    (defined by MAX_FILTER_STR_VAL). Only the string size of the event field
    needs to be copied to the event storage, but no more than what is in the
    event storage. Although nothing should be bigger than 256 bytes, there's
    no protection against overwriting of the storage if one day there is.
    
    Copy no more than the destination size, and enforce it.
    
    Also had to turn MAX_FILTER_STR_VAL into an unsigned int, to keep the
    min() comparison of the string sizes of comparable types.
    
    Link: https://lore.kernel.org/all/CAHk-=wjREUihCGrtRBwfX47y_KrLCGjiq3t6QtoNJpmVrAEb1w@mail.gmail.com/
    Link: https://lkml.kernel.org/r/20211114132834.183429a4@rorschach.local.home
    
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Tom Zanussi <zanussi@kernel.org>
    Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
    Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org>
    Fixes: 63f84ae ("tracing/histogram: Do not copy the fixed-size char array field over the field size")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    rostedt authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    3984876 View commit details
    Browse the repository at this point in the history
  42. net: ipa: disable HOLB drop when updating timer

    [ Upstream commit 816316c ]
    
    The head-of-line blocking timer should only be modified when
    head-of-line drop is disabled.
    
    One of the steps in recovering from a modem crash is to enable
    dropping of packets with timeout of 0 (immediate).  We don't know
    how the modem configured its endpoints, so before we program the
    timer, we need to ensure HOL_BLOCK is disabled.
    
    Fixes: 84f9bd1 ("soc: qcom: ipa: IPA endpoints")
    Signed-off-by: Alex Elder <elder@linaro.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Alex Elder authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    3ae75cc View commit details
    Browse the repository at this point in the history
  43. net: bnx2x: fix variable dereferenced before check

    [ Upstream commit f8885ac ]
    
    Smatch says:
    	bnx2x_init_ops.h:640 bnx2x_ilt_client_mem_op()
    	warn: variable dereferenced before check 'ilt' (see line 638)
    
    Move ilt_cli variable initialization _after_ ilt validation, because
    it's unsafe to deref the pointer before validation check.
    
    Fixes: 523224a ("bnx2x, cnic, bnx2i: use new FW/HSI")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    pskrgag authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    4fc060a View commit details
    Browse the repository at this point in the history
  44. bnxt_en: reject indirect blk offload when hw-tc-offload is off

    [ Upstream commit b075749 ]
    
    The driver does not check if hw-tc-offload is enabled for the device
    before offloading a flow in the context of indirect block callback.
    Fix this by checking NETIF_F_HW_TC in the features flag and rejecting
    the offload request.  This will avoid unnecessary dmesg error logs when
    hw-tc-offload is disabled, such as these:
    
    bnxt_en 0000:19:00.1 eno2np1: dev(ifindex=294) not on same switch
    bnxt_en 0000:19:00.1 eno2np1: Error: bnxt_tc_add_flow: cookie=0xffff8dace1c88000 error=-22
    bnxt_en 0000:19:00.0 eno1np0: dev(ifindex=294) not on same switch
    bnxt_en 0000:19:00.0 eno1np0: Error: bnxt_tc_add_flow: cookie=0xffff8dace1c88000 error=-22
    
    Reported-by: Marcelo Ricardo Leitner <mleitner@redhat.com>
    Fixes: 627c89d ("bnxt_en: flow_offload: offload tunnel decap rules via indirect callbacks")
    Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
    Signed-off-by: Michael Chan <michael.chan@broadcom.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    sbasavapatna authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    3d59416 View commit details
    Browse the repository at this point in the history
  45. tipc: only accept encrypted MSG_CRYPTO msgs

    [ Upstream commit 271351d ]
    
    The MSG_CRYPTO msgs are always encrypted and sent to other nodes
    for keys' deployment. But when receiving in peers, if those nodes
    do not validate it and make sure it's encrypted, one could craft
    a malicious MSG_CRYPTO msg to deploy its key with no need to know
    other nodes' keys.
    
    This patch is to do that by checking TIPC_SKB_CB(skb)->decrypted
    and discard it if this packet never got decrypted.
    
    Note that this is also a supplementary fix to CVE-2021-43267 that
    can be triggered by an unencrypted malicious MSG_CRYPTO msg.
    
    Fixes: 1ef6f7c ("tipc: add automatic session key exchange")
    Acked-by: Ying Xue <ying.xue@windriver.com>
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    lxin authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    9c3c2ef View commit details
    Browse the repository at this point in the history
  46. net: reduce indentation level in sk_clone_lock()

    [ Upstream commit bbc20b7 ]
    
    Rework initial test to jump over init code
    if memory allocation has failed.
    
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Link: https://lore.kernel.org/r/20210127152731.748663-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Eric Dumazet authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    4da14dd View commit details
    Browse the repository at this point in the history
  47. sock: fix /proc/net/sockstat underflow in sk_clone_lock()

    [ Upstream commit 938cca9 ]
    
    sk_clone_lock() needs to call sock_inuse_add(1) before entering the
    sk_free_unlock_clone() error path, for __sk_free() from sk_free() from
    sk_free_unlock_clone() calls sock_inuse_add(-1).
    
    Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Fixes: 648845a ("sock: Move the socket inuse to namespace.")
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Tetsuo Handa authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    437e21e View commit details
    Browse the repository at this point in the history
  48. net/smc: Make sure the link_id is unique

    [ Upstream commit cf4f553 ]
    
    The link_id is supposed to be unique, but smcr_next_link_id() doesn't
    skip the used link_id as expected. So the patch fixes this.
    
    Fixes: 026c381 ("net/smc: introduce link_idx for link group array")
    Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
    Reviewed-by: Tony Lu <tonylu@linux.alibaba.com>
    Acked-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Wen Gu authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    09decd0 View commit details
    Browse the repository at this point in the history
  49. iavf: Fix return of set the new channel count

    [ Upstream commit 4e5e6b5 ]
    
    Fixed return correct code from set the new channel count.
    Implemented by check if reset is done in appropriate time.
    This solution give a extra time to pf for reset vf in case
    when user want set new channel count for all vfs.
    Without this patch it is possible to return misleading output
    code to user and vf reset not to be correctly performed by pf.
    
    Fixes: 5520deb ("iavf: Enable support for up to 16 queues")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mpalczew96 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    1555d83 View commit details
    Browse the repository at this point in the history
  50. iavf: check for null in iavf_fix_features

    [ Upstream commit 8a4a126 ]
    
    If the driver has lost contact with the PF then it enters a disabled state
    and frees adapter->vf_res. However, ndo_fix_features can still be called on
    the interface, so we need to check for this condition first. Since we have
    no information on the features at this time simply leave them unmodified
    and return.
    
    Fixes: c4445ae ("i40evf: Fix VLAN features")
    Signed-off-by: Nicholas Nunley <nicholas.d.nunley@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ndnunley authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    84a13bf View commit details
    Browse the repository at this point in the history
  51. iavf: free q_vectors before queues in iavf_disable_vf

    [ Upstream commit 89f22f1 ]
    
    iavf_free_queues() clears adapter->num_active_queues, which
    iavf_free_q_vectors() relies on, so swap the order of these two function
    calls in iavf_disable_vf(). This resolves a panic encountered when the
    interface is disabled and then later brought up again after PF
    communication is restored.
    
    Fixes: 65c7006 ("i40evf: assign num_active_queues inside i40evf_alloc_queues")
    Signed-off-by: Nicholas Nunley <nicholas.d.nunley@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ndnunley authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    78638b4 View commit details
    Browse the repository at this point in the history
  52. iavf: Fix failure to exit out from last all-multicast mode

    [ Upstream commit 8905072 ]
    
    The driver could only quit allmulti when allmulti and promisc modes are
    turn on at the same time. If promisc had been off there was no way to turn
    off allmulti mode.
    The patch corrects this behavior. Switching allmulti does not depends on
    promisc state mode anymore
    
    Fixes: f42a5c7 ("i40e: Add allmulti support for the VF")
    Signed-off-by: Piotr Marczak <piotr.marczak@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Piotr Marczak authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    a420b26 View commit details
    Browse the repository at this point in the history
  53. iavf: prevent accidental free of filter structure

    [ Upstream commit 4f04008 ]
    
    In iavf_config_clsflower, the filter structure could be accidentally
    released at the end, if iavf_parse_cls_flower or iavf_handle_tclass ever
    return a non-zero but positive value.
    
    In this case, the function continues through to the end, and will call
    kfree() on the filter structure even though it has been added to the
    linked list.
    
    This can actually happen because iavf_parse_cls_flower will return
    a positive IAVF_ERR_CONFIG value instead of the traditional negative
    error codes.
    
    Fix this by ensuring that the kfree() check and error checks are
    similar. Use the more idiomatic "if (err)" to catch all non-zero error
    codes.
    
    Fixes: 0075fa0 ("i40evf: Add support to apply cloud filters")
    Signed-off-by: Jacob Keller <jacob.e.keller@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jacob-keller authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    ddcc185 View commit details
    Browse the repository at this point in the history
  54. iavf: validate pointers

    [ Upstream commit 131b0ed ]
    
    In some cases, the ethtool get_rxfh handler may be called with a null
    key or indir parameter. So check these pointers, or you will have a very
    bad day.
    
    Fixes: 43a3d9b ("i40evf: Allow PF driver to configure RSS")
    Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mawilli1 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    77f5ae5 View commit details
    Browse the repository at this point in the history
  55. iavf: Fix for the false positive ASQ/ARQ errors while issuing VF reset

    [ Upstream commit 321421b ]
    
    While issuing VF Reset from the guest OS, the VF driver prints
    logs about critical / Overflow error detection. This is not an
    actual error since the VF_MBX_ARQLEN register is set to all FF's
    for a short period of time and the VF would catch the bits set if
    it was reading the register during that spike of time.
    This patch introduces an additional check to ignore this condition
    since the VF is in reset.
    
    Fixes: 19b73d8 ("i40evf: Add additional check for reset")
    Signed-off-by: Surabhi Boob <surabhi.boob@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    sboob93 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    a8a1e60 View commit details
    Browse the repository at this point in the history
  56. iavf: Fix for setting queues to 0

    [ Upstream commit 9a6e9e4 ]
    
    Now setting combine to 0 will be rejected with the
    appropriate error code.
    This has been implemented by adding a condition that checks
    the value of combine equal to zero.
    Without this patch, when the user requested it, no error was
    returned and combine was set to the default value for VF.
    
    Fixes: 5520deb ("iavf: Enable support for up to 16 queues")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    gszczurx authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    a61f90b View commit details
    Browse the repository at this point in the history
  57. MIPS: generic/yamon-dt: fix uninitialized variable error

    [ Upstream commit 255e51d ]
    
    In the case where fw_getenv returns an error when fetching values
    for ememsizea and memsize then variable phys_memsize is not assigned
    a variable and will be uninitialized on a zero check of phys_memsize.
    Fix this by initializing phys_memsize to zero.
    
    Cleans up cppcheck error:
    arch/mips/generic/yamon-dt.c:100:7: error: Uninitialized variable: phys_memsize [uninitvar]
    
    Fixes: f41d243 ("MIPS: generic/yamon-dt: Support > 256MB of RAM")
    Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Colin Ian King authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    34284b3 View commit details
    Browse the repository at this point in the history
  58. mips: bcm63xx: add support for clk_get_parent()

    [ Upstream commit e8f6748 ]
    
    BCM63XX selects HAVE_LEGACY_CLK but does not provide/support
    clk_get_parent(), so add a simple implementation of that
    function so that callers of it will build without errors.
    
    Fixes these build errors:
    
    mips-linux-ld: drivers/iio/adc/ingenic-adc.o: in function `jz4770_adc_init_clk_div':
    ingenic-adc.c:(.text+0xe4): undefined reference to `clk_get_parent'
    mips-linux-ld: drivers/iio/adc/ingenic-adc.o: in function `jz4725b_adc_init_clk_div':
    ingenic-adc.c:(.text+0x1b8): undefined reference to `clk_get_parent'
    
    Fixes: e7300d0 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs." )
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Reported-by: kernel test robot <lkp@intel.com>
    Suggested-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Cc: Artur Rojek <contact@artur-rojek.eu>
    Cc: Paul Cercueil <paul@crapouillou.net>
    Cc: linux-mips@vger.kernel.org
    Cc: Jonathan Cameron <jic23@kernel.org>
    Cc: Lars-Peter Clausen <lars@metafoo.de>
    Cc: linux-iio@vger.kernel.org
    Cc: Florian Fainelli <f.fainelli@gmail.com>
    Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: bcm-kernel-feedback-list@broadcom.com
    Cc: Jonas Gorski <jonas.gorski@gmail.com>
    Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
    Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Acked-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Acked-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    rddunlap authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    17dfbe1 View commit details
    Browse the repository at this point in the history
  59. mips: lantiq: add support for clk_get_parent()

    [ Upstream commit fc1aabb ]
    
    Provide a simple implementation of clk_get_parent() in the
    lantiq subarch so that callers of it will build without errors.
    
    Fixes this build error:
    ERROR: modpost: "clk_get_parent" [drivers/iio/adc/ingenic-adc.ko] undefined!
    
    Fixes: 171bb2f ("MIPS: Lantiq: Add initial support for Lantiq SoCs")
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Suggested-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Cc: linux-mips@vger.kernel.org
    Cc: John Crispin <john@phrozen.org>
    Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Cc: Jonathan Cameron <jic23@kernel.org>
    Cc: linux-iio@vger.kernel.org
    Cc: Russell King <linux@armlinux.org.uk>
    Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
    Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
    Acked-by: John Crispin <john@phrozen.org>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    rddunlap authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    da16f90 View commit details
    Browse the repository at this point in the history
  60. platform/x86: hp_accel: Fix an error handling path in 'lis3lv02d_prob…

    …e()'
    
    [ Upstream commit c961a7d ]
    
    If 'led_classdev_register()' fails, some additional resources should be
    released.
    
    Add the missing 'i8042_remove_filter()' and 'lis3lv02d_remove_fs()' calls
    that are already in the remove function but are missing here.
    
    Fixes: a4c724d ("platform: hp_accel: add a i8042 filter to remove HPQ6000 data from kb bus stream")
    Fixes: 9e0c797 ("lis3lv02d: merge with leds hp disk")
    Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
    Link: https://lore.kernel.org/r/5a4f218f8f16d2e3a7906b7ca3654ffa946895f8.1636314074.git.christophe.jaillet@wanadoo.fr
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    tititiou36 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    d1f8f1e View commit details
    Browse the repository at this point in the history
  61. net/mlx5e: nullify cq->dbg pointer in mlx5_debug_cq_remove()

    [ Upstream commit 76ded29 ]
    
    Prior to this patch in case mlx5_core_destroy_cq() failed it proceeds
    to rest of destroy operations. mlx5_core_destroy_cq() could be called again
    by user and cause additional call of mlx5_debug_cq_remove().
    cq->dbg was not nullify in previous call and cause the crash.
    
    Fix it by nullify cq->dbg pointer after removal.
    
    Also proceed to destroy operations only if FW return 0
    for MLX5_CMD_OP_DESTROY_CQ command.
    
    general protection fault, probably for non-canonical address 0x2000300004058: 0000 [Freescale#1] SMP PTI
    CPU: 5 PID: 1228 Comm: python Not tainted 5.15.0-rc5_for_upstream_min_debug_2021_10_14_11_06 Freescale#1
    Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.13.0-0-gf21b5a4aeb02-prebuilt.qemu.org 04/01/2014
    RIP: 0010:lockref_get+0x1/0x60
    Code: 5d e9 53 ff ff ff 48 8d 7f 70 e8 0a 2e 48 00 c7 85 d0 00 00 00 02
    00 00 00 c6 45 70 00 fb 5d c3 c3 cc cc cc cc cc cc cc cc 53 <48> 8b 17
    48 89 fb 85 d2 75 3d 48 89 d0 bf 64 00 00 00 48 89 c1 48
    RSP: 0018:ffff888137dd7a38 EFLAGS: 00010206
    RAX: 0000000000000000 RBX: ffff888107d5f458 RCX: 00000000fffffffe
    RDX: 000000000002c2b0 RSI: ffffffff8155e2e0 RDI: 0002000300004058
    RBP: ffff888137dd7a88 R08: 0002000300004058 R09: ffff8881144a9f88
    R10: 0000000000000000 R11: 0000000000000000 R12: ffff8881141d4000
    R13: ffff888137dd7c68 R14: ffff888137dd7d58 R15: ffff888137dd7cc0
    FS:  00007f4644f2a4c0(0000) GS:ffff8887a2d40000(0000)
    knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 000055b4500f4380 CR3: 0000000114f7a003 CR4: 0000000000170ea0
    Call Trace:
      simple_recursive_removal+0x33/0x2e0
      ? debugfs_remove+0x60/0x60
      debugfs_remove+0x40/0x60
      mlx5_debug_cq_remove+0x32/0x70 [mlx5_core]
      mlx5_core_destroy_cq+0x41/0x1d0 [mlx5_core]
      devx_obj_cleanup+0x151/0x330 [mlx5_ib]
      ? __pollwait+0xd0/0xd0
      ? xas_load+0x5/0x70
      ? xa_load+0x62/0xa0
      destroy_hw_idr_uobject+0x20/0x80 [ib_uverbs]
      uverbs_destroy_uobject+0x3b/0x360 [ib_uverbs]
      uobj_destroy+0x54/0xa0 [ib_uverbs]
      ib_uverbs_cmd_verbs+0xaf2/0x1160 [ib_uverbs]
      ? uverbs_finalize_object+0xd0/0xd0 [ib_uverbs]
      ib_uverbs_ioctl+0xc4/0x1b0 [ib_uverbs]
      __x64_sys_ioctl+0x3e4/0x8e0
    
    Fixes: 94b960b ("net/mlx5e: Fix memory leak in mlx5_core_destroy_cq() error path")
    Signed-off-by: Valentine Fatiev <valentinef@nvidia.com>
    Reviewed-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Valentine Fatiev authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    471c492 View commit details
    Browse the repository at this point in the history
  62. net/mlx5: Lag, update tracker when state change event received

    [ Upstream commit ae396d8 ]
    
    Currently, In NETDEV_CHANGELOWERSTATE/NETDEV_CHANGEUPPERSTATE events
    handling, tracking is not fully completed if the LAG device is not ready
    at the time the events occur. But, we must keep track of the upper and
    lower states after receiving the events because RoCE needs this info in
    mlx5_lag_get_roce_netdev() - in order to return the corresponding port
    that its running on. Returning the wrong (not most recent) port will lead
    to gids table being incorrect.
    
    For example: If during the attachment of a slave to the bond, the other
    non-attached port performs pci_reload, then the LAG device is not ready,
    but that should not result in dismissing attached slave tracker update
    automatically (which is performed in mlx5_handle_changelowerstate()), Since
    these events might not come later, which can lead to both bond ports
    having tx_enabled=0 - which is not a valid state of LAG bond.
    
    Fixes: 9b412cc ("net/mlx5e: Add LAG warning if bond slave is not lag master")
    Signed-off-by: Maher Sanalla <msanalla@nvidia.com>
    Reviewed-by: Mark Bloch <mbloch@nvidia.com>
    Reviewed-by: Jianbo Liu <jianbol@nvidia.com>
    Reviewed-by: Roi Dayan <roid@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    msanalla authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    6190e1a View commit details
    Browse the repository at this point in the history
  63. net/mlx5: E-Switch, Change mode lock from mutex to rw semaphore

    [ Upstream commit c55479d ]
    
    E-Switch mode change routine will take the write lock to prevent any
    consumer to access the E-Switch resources while E-Switch is going
    through a mode change.
    
    In the next patch
    E-Switch consumers (e.g vport representors) will take read_lock prior to
    accessing E-Switch resources to prevent E-Switch mode changing in the
    middle of the operation.
    
    Signed-off-by: Roi Dayan <roid@nvidia.com>
    Reviewed-by: Parav Pandit <parav@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    roidayan authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    68748ea View commit details
    Browse the repository at this point in the history
  64. net/mlx5: E-Switch, return error if encap isn't supported

    [ Upstream commit c4c3176 ]
    
    On regular ConnectX HCAs getting encap mode isn't supported when the
    E-Switch is in NONE mode. Current code would return no error code when
    trying to get encap mode in such case which is wrong.
    
    Fix by returning error value to indicate failure to caller in such case.
    
    Fixes: 8e0aa4b ("net/mlx5: E-switch, Protect eswitch mode changes")
    Signed-off-by: Raed Salem <raeds@nvidia.com>
    Reviewed-by: Mark Bloch <mbloch@nvidia.com>
    Reviewed-by: Maor Dickman <maord@nvidia.com>
    Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    raed-salem authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    4b4302a View commit details
    Browse the repository at this point in the history
  65. scsi: core: sysfs: Fix hang when device state is set via sysfs

    [ Upstream commit 4edd8cd ]
    
    This fixes a regression added with:
    
    commit f0f82e2 ("scsi: core: Fix capacity set to zero after
    offlinining device")
    
    The problem is that after iSCSI recovery, iscsid will call into the kernel
    to set the dev's state to running, and with that patch we now call
    scsi_rescan_device() with the state_mutex held. If the SCSI error handler
    thread is just starting to test the device in scsi_send_eh_cmnd() then it's
    going to try to grab the state_mutex.
    
    We are then stuck, because when scsi_rescan_device() tries to send its I/O
    scsi_queue_rq() calls -> scsi_host_queue_ready() -> scsi_host_in_recovery()
    which will return true (the host state is still in recovery) and I/O will
    just be requeued. scsi_send_eh_cmnd() will then never be able to grab the
    state_mutex to finish error handling.
    
    To prevent the deadlock move the rescan-related code to after we drop the
    state_mutex.
    
    This also adds a check for if we are already in the running state. This
    prevents extra scans and helps the iscsid case where if the transport class
    has already onlined the device during its recovery process then we don't
    need userspace to do it again plus possibly block that daemon.
    
    Link: https://lore.kernel.org/r/20211105221048.6541-3-michael.christie@oracle.com
    Fixes: f0f82e2 ("scsi: core: Fix capacity set to zero after offlinining device")
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: lijinlin <lijinlin3@huawei.com>
    Cc: Wu Bo <wubo40@huawei.com>
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Reviewed-by: Wu Bo <wubo40@huawei.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mikechristie authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    a792e01 View commit details
    Browse the repository at this point in the history
  66. net: sched: act_mirred: drop dst for the direction from egress to ing…

    …ress
    
    [ Upstream commit f799ada ]
    
    Without dropping dst, the packets sent from local mirred/redirected
    to ingress will may still use the old dst. ip_rcv() will drop it as
    the old dst is for output and its .input is dst_discard.
    
    This patch is to fix by also dropping dst for those packets that are
    mirred or redirected from egress to ingress in act_mirred.
    
    Note that we don't drop it for the direction change from ingress to
    egress, as on which there might be a user case attaching a metadata
    dst by act_tunnel_key that would be used later.
    
    Fixes: b57dc7c ("net/sched: Introduce action ct")
    Signed-off-by: Xin Long <lucien.xin@gmail.com>
    Acked-by: Cong Wang <cong.wang@bytedance.com>
    Reviewed-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    lxin authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    381a30f View commit details
    Browse the repository at this point in the history
  67. net: dpaa2-eth: fix use-after-free in dpaa2_eth_remove

    [ Upstream commit 9b5a333 ]
    
    Access to netdev after free_netdev() will cause use-after-free bug.
    Move debug log before free_netdev() call to avoid it.
    
    Fixes: 7472dd9 ("staging: fsl-dpaa2/eth: Move print message")
    Signed-off-by: Pavel Skripkin <paskripkin@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    pskrgag authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    1c4099d View commit details
    Browse the repository at this point in the history
  68. net: virtio_net_hdr_to_skb: count transport header in UFO

    [ Upstream commit cf9acc9 ]
    
    virtio_net_hdr_to_skb does not set the skb's gso_size and gso_type
    correctly for UFO packets received via virtio-net that are a little over
    the GSO size. This can lead to problems elsewhere in the networking
    stack, e.g. ovs_vport_send dropping over-sized packets if gso_size is
    not set.
    
    This is due to the comparison
    
      if (skb->len - p_off > gso_size)
    
    not properly accounting for the transport layer header.
    
    p_off includes the size of the transport layer header (thlen), so
    skb->len - p_off is the size of the TCP/UDP payload.
    
    gso_size is read from the virtio-net header. For UFO, fragmentation
    happens at the IP level so does not need to include the UDP header.
    
    Hence the calculation could be comparing a TCP/UDP payload length with
    an IP payload length, causing legitimate virtio-net packets to have
    lack gso_type/gso_size information.
    
    Example: a UDP packet with payload size 1473 has IP payload size 1481.
    If the guest used UFO, it is not fragmented and the virtio-net header's
    flags indicate that it is a GSO frame (VIRTIO_NET_HDR_GSO_UDP), with
    gso_size = 1480 for an MTU of 1500.  skb->len will be 1515 and p_off
    will be 42, so skb->len - p_off = 1473.  Hence the comparison fails, and
    shinfo->gso_size and gso_type are not set as they should be.
    
    Instead, add the UDP header length before comparing to gso_size when
    using UFO. In this way, it is the size of the IP payload that is
    compared to gso_size.
    
    Fixes: 6dd912f ("net: check untrusted gso_size at kernel entry")
    Signed-off-by: Jonathan Davies <jonathan.davies@nutanix.com>
    Reviewed-by: Willem de Bruijn <willemb@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jjd27 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    8e6bae9 View commit details
    Browse the repository at this point in the history
  69. i40e: Fix correct max_pkt_size on VF RX queue

    [ Upstream commit 6afbd7b ]
    
    Setting VLAN port increasing RX queue max_pkt_size
    by 4 bytes to take VLAN tag into account.
    Trigger the VF reset when setting port VLAN for
    VF to renegotiate its capabilities and reinitialize.
    
    Fixes: ba4e003 ("i40e: don't hold spinlock while resetting VF")
    Signed-off-by: Sylwester Dziedziuch <sylwesterx.dziedziuch@intel.com>
    Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Signed-off-by: Eryk Rybak <eryk.roch.rybak@intel.com>
    Tested-by: Konrad Jankowski <konrad0.jankowski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    eryk-roch authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    0719488 View commit details
    Browse the repository at this point in the history
  70. i40e: Fix NULL ptr dereference on VSI filter sync

    [ Upstream commit 37d9e30 ]
    
    Remove the reason of null pointer dereference in sync VSI filters.
    Added new I40E_VSI_RELEASING flag to signalize deleting and releasing
    of VSI resources to sync this thread with sync filters subtask.
    Without this patch it is possible to start update the VSI filter list
    after VSI is removed, that's causing a kernel oops.
    
    Fixes: 41c445f ("i40e: main driver core")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Michal Maloszewski <michal.maloszewski@intel.com>
    Reviewed-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
    Reviewed-by: Witold Fijalkowski <witoldx.fijalkowski@intel.com>
    Reviewed-by: Jaroslaw Gawin <jaroslawx.gawin@intel.com>
    Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mmalosze authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    f866513 View commit details
    Browse the repository at this point in the history
  71. i40e: Fix changing previously set num_queue_pairs for PFs

    [ Upstream commit d2a69fe ]
    
    Currently, the i40e_vsi_setup_queue_map is basing the count of queues in
    TCs on a VSI's alloc_queue_pairs member which is not changed throughout
    any user's action (for example via ethtool's set_channels callback).
    
    This implies that vsi->tc_config.tc_info[n].qcount value that is given
    to the kernel via netdev_set_tc_queue() that notifies about the count of
    queues per particular traffic class is constant even if user has changed
    the total count of queues.
    
    This in turn caused the kernel warning after setting the queue count to
    the lower value than the initial one:
    
    $ ethtool -l ens801f0
    Channel parameters for ens801f0:
    Pre-set maximums:
    RX:             0
    TX:             0
    Other:          1
    Combined:       64
    Current hardware settings:
    RX:             0
    TX:             0
    Other:          1
    Combined:       64
    
    $ ethtool -L ens801f0 combined 40
    
    [dmesg]
    Number of in use tx queues changed invalidating tc mappings. Priority
    traffic classification disabled!
    
    Reason was that vsi->alloc_queue_pairs stayed at 64 value which was used
    to set the qcount on TC0 (by default only TC0 exists so all of the
    existing queues are assigned to TC0). we update the offset/qcount via
    netdev_set_tc_queue() back to the old value but then the
    netif_set_real_num_tx_queues() is using the vsi->num_queue_pairs as a
    value which got set to 40.
    
    Fix it by using vsi->req_queue_pairs as a queue count that will be
    distributed across TCs. Do it only for non-zero values, which implies
    that user actually requested the new count of queues.
    
    For VSIs other than main, stay with the vsi->alloc_queue_pairs as we
    only allow manipulating the queue count on main VSI.
    
    Fixes: bc6d33c ("i40e: Fix the number of queues available to be mapped for use")
    Co-developed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Co-developed-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
    Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
    Signed-off-by: Eryk Rybak <eryk.roch.rybak@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    eryk-roch authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    6d64743 View commit details
    Browse the repository at this point in the history
  72. i40e: Fix ping is lost after configuring ADq on VF

    [ Upstream commit 9e0a603 ]
    
    Properly reconfigure VF VSIs after VF request ADQ.
    Created new function to update queue mapping and queue pairs per TC
    with AQ update VSI. This sets proper RSS size on NIC.
    VFs num_queue_pairs should not be changed during setup of queue maps.
    Previously, VF main VSI in ADQ had configured too many queues and had
    wrong RSS size, which lead to packets not being consumed and drops in
    connectivity.
    
    Fixes: bc6d33c ("i40e: Fix the number of queues available to be mapped for use")
    Co-developed-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
    Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
    Signed-off-by: Eryk Rybak <eryk.roch.rybak@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    eryk-roch authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    2064548 View commit details
    Browse the repository at this point in the history
  73. i40e: Fix warning message and call stack during rmmod i40e driver

    [ Upstream commit 3a3b311 ]
    
    Restore part of reset functionality used when reset is called
    from the VF to reset itself. Without this fix warning message
    is displayed when VF is being removed via sysfs.
    
    Fix the crash of the VF during reset by ensuring
    that the PF receives the reset message successfully.
    Refactor code to use one function instead of two.
    
    Fixes: 5c3c48a ("i40e: implement virtual device interface")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Karen Sornek <karen.sornek@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ksornek authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    69868d7 View commit details
    Browse the repository at this point in the history
  74. i40e: Fix creation of first queue by omitting it if is not power of two

    [ Upstream commit 2e6d218 ]
    
    Reject TCs creation with proper message if the first queue
    assignment is not equal to the power of two.
    The first queue number was checked too late in the second queue
    iteration, if second queue was configured at all. Now if first queue value
    is not a power of two, then trying to create qdisc will be rejected.
    
    Fixes: 8f88b30 ("i40e: Add infrastructure for queue channel support")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
    Tested-by: Tony Brelinski <tony.brelinski@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jjagielsk authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    028ea7b View commit details
    Browse the repository at this point in the history
  75. i40e: Fix display error code in dmesg

    [ Upstream commit 5aff430 ]
    
    Fix misleading display error in dmesg if tc filter return fail.
    Only i40e status error code should be converted to string, not linux
    error code. Otherwise, we return false information about the error.
    
    Fixes: 2f4b411 ("i40e: Enable cloud filters via tc-flower")
    Signed-off-by: Grzegorz Szczurek <grzegorzx.szczurek@intel.com>
    Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
    Tested-by: Dave Switzer <david.switzer@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    gszczurx authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    41dc8dc View commit details
    Browse the repository at this point in the history
  76. NFC: reorganize the functions in nci_request

    [ Upstream commit 86cdf8e ]
    
    There is a possible data race as shown below:
    
    thread-A in nci_request()       | thread-B in nci_close_device()
                                    | mutex_lock(&ndev->req_lock);
    test_bit(NCI_UP, &ndev->flags); |
    ...                             | test_and_clear_bit(NCI_UP, &ndev->flags)
    mutex_lock(&ndev->req_lock);    |
                                    |
    
    This race will allow __nci_request() to be awaked while the device is
    getting removed.
    
    Similar to commit e2cb6b8 ("bluetooth: eliminate the potential race
    condition when removing the HCI controller"). this patch alters the
    function sequence in nci_request() to prevent the data races between the
    nci_close_device().
    
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Fixes: 6a2968a ("NFC: basic NCI protocol implementation")
    Link: https://lore.kernel.org/r/20211115145600.8320-1-linma@zju.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    f0rm2l1n authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    cb14b19 View commit details
    Browse the repository at this point in the history
  77. NFC: reorder the logic in nfc_{un,}register_device

    [ Upstream commit 3e3b5df ]
    
    There is a potential UAF between the unregistration routine and the NFC
    netlink operations.
    
    The race that cause that UAF can be shown as below:
    
     (FREE)                      |  (USE)
    nfcmrvl_nci_unregister_dev   |  nfc_genl_dev_up
      nci_close_device           |
      nci_unregister_device      |    nfc_get_device
        nfc_unregister_device    |    nfc_dev_up
          rfkill_destory         |
          device_del             |      rfkill_blocked
      ...                        |    ...
    
    The root cause for this race is concluded below:
    1. The rfkill_blocked (USE) in nfc_dev_up is supposed to be placed after
    the device_is_registered check.
    2. Since the netlink operations are possible just after the device_add
    in nfc_register_device, the nfc_dev_up() can happen anywhere during the
    rfkill creation process, which leads to data race.
    
    This patch reorder these actions to permit
    1. Once device_del is finished, the nfc_dev_up cannot dereference the
    rfkill object.
    2. The rfkill_register need to be placed after the device_add of nfc_dev
    because the parent device need to be created first. So this patch keeps
    the order but inject device_lock to prevent the data race.
    
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Fixes: be055b2 ("NFC: RFKILL support")
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20211116152652.19217-1-linma@zju.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    f0rm2l1n authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    73a0d12 View commit details
    Browse the repository at this point in the history
  78. net: nfc: nci: Change the NCI close sequence

    [ Upstream commit f011539 ]
    
    If there is a NCI command in work queue after closing the NCI device at
    nci_unregister_device, The NCI command timer starts at flush_workqueue
    function and then NCI command timeout handler would be called 5 second
    after flushing the NCI command work queue and destroying the queue.
    At that time, the timeout handler would try to use NCI command work queue
    that is destroyed already. it will causes the problem. To avoid this
    abnormal situation, change the sequence to prevent the NCI command timeout
    handler from being called after destroying the NCI command work queue.
    
    Signed-off-by: Bongsu Jeon <bongsu.jeon@samsung.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Bongsu Jeon authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    b2a60b4 View commit details
    Browse the repository at this point in the history
  79. NFC: add NCI_UNREG flag to eliminate the race

    [ Upstream commit 48b71a9 ]
    
    There are two sites that calls queue_work() after the
    destroy_workqueue() and lead to possible UAF.
    
    The first site is nci_send_cmd(), which can happen after the
    nci_close_device as below
    
    nfcmrvl_nci_unregister_dev   |  nfc_genl_dev_up
      nci_close_device           |
        flush_workqueue          |
        del_timer_sync           |
      nci_unregister_device      |    nfc_get_device
        destroy_workqueue        |    nfc_dev_up
        nfc_unregister_device    |      nci_dev_up
          device_del             |        nci_open_device
                                 |          __nci_request
                                 |            nci_send_cmd
                                 |              queue_work !!!
    
    Another site is nci_cmd_timer, awaked by the nci_cmd_work from the
    nci_send_cmd.
    
      ...                        |  ...
      nci_unregister_device      |  queue_work
        destroy_workqueue        |
        nfc_unregister_device    |  ...
          device_del             |  nci_cmd_work
                                 |  mod_timer
                                 |  ...
                                 |  nci_cmd_timer
                                 |    queue_work !!!
    
    For the above two UAF, the root cause is that the nfc_dev_up can race
    between the nci_unregister_device routine. Therefore, this patch
    introduce NCI_UNREG flag to easily eliminate the possible race. In
    addition, the mutex_lock in nci_close_device can act as a barrier.
    
    Signed-off-by: Lin Ma <linma@zju.edu.cn>
    Fixes: 6a2968a ("NFC: basic NCI protocol implementation")
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Link: https://lore.kernel.org/r/20211116152732.19238-1-linma@zju.edu.cn
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    f0rm2l1n authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    34e5470 View commit details
    Browse the repository at this point in the history
  80. e100: fix device suspend/resume

    [ Upstream commit 5d2ca2e ]
    
    As reported in [1], e100 was no longer working for suspend/resume
    cycles. The previous commit mentioned in the fixes appears to have
    broken things and this attempts to practice best known methods for
    device power management and keep wake-up working while allowing
    suspend/resume to work. To do this, I reorder a little bit of code
    and fix the resume path to make sure the device is enabled.
    
    [1] https://bugzilla.kernel.org/show_bug.cgi?id=214933
    
    Fixes: 69a74ae ("e100: use generic power management")
    Cc: Vaibhav Gupta <vaibhavgupta40@gmail.com>
    Reported-by: Alexey Kuznetsov <axet@me.com>
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Alexey Kuznetsov <axet@me.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jbrandeb authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    4e6cce2 View commit details
    Browse the repository at this point in the history
  81. KVM: PPC: Book3S HV: Use GLOBAL_TOC for kvmppc_h_set_dabr/xdabr()

    [ Upstream commit dae5818 ]
    
    kvmppc_h_set_dabr(), and kvmppc_h_set_xdabr() which jumps into
    it, need to use _GLOBAL_TOC to setup the kernel TOC pointer, because
    kvmppc_h_set_dabr() uses LOAD_REG_ADDR() to load dawr_force_enable.
    
    When called from hcall_try_real_mode() we have the kernel TOC in r2,
    established near the start of kvmppc_interrupt_hv(), so there is no
    issue.
    
    But they can also be called from kvmppc_pseries_do_hcall() which is
    module code, so the access ends up happening with the kvm-hv module's
    r2, which will not point at dawr_force_enable and could even cause a
    fault.
    
    With the current code layout and compilers we haven't observed a fault
    in practice, the load hits somewhere in kvm-hv.ko and silently returns
    some bogus value.
    
    Note that we we expect p8/p9 guests to use the DAWR, but SLOF uses
    h_set_dabr() to test if sc1 works correctly, see SLOF's
    lib/libhvcall/brokensc1.c.
    
    Fixes: c1fe190 ("powerpc: Add force enable of DAWR on P9 option")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Reviewed-by: Daniel Axtens <dja@axtens.net>
    Link: https://lore.kernel.org/r/20210923151031.72408-1-mpe@ellerman.id.au
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mpe authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    a8230fb View commit details
    Browse the repository at this point in the history
  82. pinctrl: qcom: sdm845: Enable dual edge errata

    [ Upstream commit 3a3a100 ]
    
    It has been observed that dual edge triggered wakeirq GPIOs on SDM845
    doesn't trigger interrupts on the falling edge.
    
    Enabling wakeirq_dual_edge_errata for SDM845 indicates that the PDC in
    SDM845 suffers from the same problem described, and worked around, by
    Doug in 'c3c0c2e18d94 ("pinctrl: qcom: Handle broken/missing PDC dual
    edge IRQs on sc7180")', so enable the workaround for SDM845 as well.
    
    The specific problem seen without this is that gpio-keys does not detect
    the falling edge of the LID gpio on the Lenovo Yoga C630 and as such
    consistently reports the LID as closed.
    
    Fixes: e35a6ae ("pinctrl/msm: Setup GPIO chip in hierarchy")
    Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
    Tested-By: Steev Klimaszewski <steev@kali.org>
    Reviewed-by: Douglas Anderson <dianders@chromium.org>
    Reviewed-by: Stephen Boyd <swboyd@chromium.org>
    Link: https://lore.kernel.org/r/20211102034115.1946036-1-bjorn.andersson@linaro.org
    Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    andersson authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    84f64c7 View commit details
    Browse the repository at this point in the history
  83. perf/x86/intel/uncore: Fix filter_tid mask for CHA events on Skylake …

    …Server
    
    [ Upstream commit e324234 ]
    
    According Uncore Reference Manual: any of the CHA events may be filtered
    by Thread/Core-ID by using tid modifier in CHA Filter 0 Register.
    Update skx_cha_hw_config() to follow Uncore Guide.
    
    Fixes: cd34cd9 ("perf/x86/intel/uncore: Add Skylake server uncore support")
    Signed-off-by: Alexander Antonov <alexander.antonov@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Link: https://lore.kernel.org/r/20211115090334.3789-2-alexander.antonov@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Alexander Antonov authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    175135a View commit details
    Browse the repository at this point in the history
  84. perf/x86/intel/uncore: Fix IIO event constraints for Skylake Server

    [ Upstream commit 3866ae3 ]
    
    According to the latest uncore document, COMP_BUF_OCCUPANCY (0xd5) event
    can be collected on 2-3 counters. Update uncore IIO event constraints for
    Skylake Server.
    
    Fixes: cd34cd9 ("perf/x86/intel/uncore: Add Skylake server uncore support")
    Signed-off-by: Alexander Antonov <alexander.antonov@linux.intel.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Kan Liang <kan.liang@linux.intel.com>
    Link: https://lore.kernel.org/r/20211115090334.3789-3-alexander.antonov@linux.intel.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Alexander Antonov authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    d4fb80a View commit details
    Browse the repository at this point in the history
  85. s390/kexec: fix return code handling

    [ Upstream commit 20c76e2 ]
    
    kexec_file_add_ipl_report ignores that ipl_report_finish may fail and
    can return an error pointer instead of a valid pointer.
    Fix this and simplify by returning NULL in case of an error and let
    the only caller handle this case.
    
    Fixes: 99feaa7 ("s390/kexec_file: Create ipl report and pass to next kernel")
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    hcahca authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    4cebe23 View commit details
    Browse the repository at this point in the history
  86. net: stmmac: dwmac-rk: Fix ethernet on rk3399 based devices

    commit aec3f41 upstream.
    
    Commit 2d26f6e ("net: stmmac: dwmac-rk: fix unbalanced pm_runtime_enable warnings")
    while getting rid of a runtime PM warning ended up breaking ethernet
    on rk3399 based devices. By dropping an extra reference to the device,
    the commit ends up enabling suspend / resume of the ethernet device -
    which appears to be broken.
    
    While the issue with runtime pm is being investigated, partially
    revert commit 2d26f6e to restore the network on rk3399.
    
    Fixes: 2d26f6e ("net: stmmac: dwmac-rk: fix unbalanced pm_runtime_enable warnings")
    Suggested-by: Heiko Stuebner <heiko@sntech.de>
    Signed-off-by: Punit Agrawal <punitagrawal@gmail.com>
    Cc: Michael Riesch <michael.riesch@wolfvision.net>
    Tested-by: Heiko Stuebner <heiko@sntech.de>
    Link: https://lore.kernel.org/r/20210929135049.3426058-1-punitagrawal@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    punitagrawal authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    97653ba View commit details
    Browse the repository at this point in the history
  87. arm64: vdso32: suppress error message for 'make mrproper'

    commit 14831fa upstream.
    
    When running the following command without arm-linux-gnueabi-gcc in
    one's $PATH, the following warning is observed:
    
    $ ARCH=arm64 CROSS_COMPILE_COMPAT=arm-linux-gnueabi- make -j72 LLVM=1 mrproper
    make[1]: arm-linux-gnueabi-gcc: No such file or directory
    
    This is because KCONFIG is not run for mrproper, so CONFIG_CC_IS_CLANG
    is not set, and we end up eagerly evaluating various variables that try
    to invoke CC_COMPAT.
    
    This is a similar problem to what was observed in
    commit dc960bf ("h8300: suppress error messages for 'make clean'")
    
    Reported-by: Lucas Henneman <henneman@google.com>
    Suggested-by: Masahiro Yamada <masahiroy@kernel.org>
    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
    Reviewed-by: Nathan Chancellor <nathan@kernel.org>
    Tested-by: Nathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/r/20211019223646.1146945-4-ndesaulniers@google.com
    Signed-off-by: Will Deacon <will@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    nickdesaulniers authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    af1d3c4 View commit details
    Browse the repository at this point in the history
  88. tun: fix bonding active backup with arp monitoring

    commit a31d27f upstream.
    
    As stated in the bonding doc, trans_start must be set manually for drivers
    using NETIF_F_LLTX:
     Drivers that use NETIF_F_LLTX flag must also update
     netdev_queue->trans_start. If they do not, then the ARP monitor will
     immediately fail any slaves using that driver, and those slaves will stay
     down.
    
    Link: https://www.kernel.org/doc/html/v5.15/networking/bonding.html#arp-monitor-operation
    Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    NicolasDichtel authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    528971a View commit details
    Browse the repository at this point in the history
  89. hexagon: export raw I/O routines for modules

    commit ffb92ce upstream.
    
    Patch series "Fixes for ARCH=hexagon allmodconfig", v2.
    
    This series fixes some issues noticed with ARCH=hexagon allmodconfig.
    
    This patch (of 3):
    
    When building ARCH=hexagon allmodconfig, the following errors occur:
    
      ERROR: modpost: "__raw_readsl" [drivers/i3c/master/svc-i3c-master.ko] undefined!
      ERROR: modpost: "__raw_writesl" [drivers/i3c/master/dw-i3c-master.ko] undefined!
      ERROR: modpost: "__raw_readsl" [drivers/i3c/master/dw-i3c-master.ko] undefined!
      ERROR: modpost: "__raw_writesl" [drivers/i3c/master/i3c-master-cdns.ko] undefined!
      ERROR: modpost: "__raw_readsl" [drivers/i3c/master/i3c-master-cdns.ko] undefined!
    
    Export these symbols so that modules can use them without any errors.
    
    Link: https://lkml.kernel.org/r/20211115174250.1994179-1-nathan@kernel.org
    Link: https://lkml.kernel.org/r/20211115174250.1994179-2-nathan@kernel.org
    Fixes: 013bf24 ("Hexagon: Provide basic implementation and/or stubs for I/O routines.")
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Acked-by: Brian Cain <bcain@codeaurora.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    nathanchance authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    0854c9f View commit details
    Browse the repository at this point in the history
  90. hexagon: clean up timer-regs.h

    commit 51f2ec5 upstream.
    
    When building allmodconfig, there is a warning about TIMER_ENABLE being
    redefined:
    
      drivers/clocksource/timer-oxnas-rps.c:39:9: error: 'TIMER_ENABLE' macro redefined [-Werror,-Wmacro-redefined]
      #define TIMER_ENABLE            BIT(7)
              ^
      arch/hexagon/include/asm/timer-regs.h:13:9: note: previous definition is here
      #define TIMER_ENABLE            0
               ^
      1 error generated.
    
    The values in this header are only used in one file each, if they are
    used at all.  Remove the header and sink all of the constants into their
    respective files.
    
    TCX0_CLK_RATE is only used in arch/hexagon/include/asm/timex.h
    
    TIMER_ENABLE, RTOS_TIMER_INT, RTOS_TIMER_REGS_ADDR are only used in
    arch/hexagon/kernel/time.c.
    
    SLEEP_CLK_RATE and TIMER_CLR_ON_MATCH have both been unused since the
    file's introduction in commit 71e4a47 ("Hexagon: Add time and timer
    functions").
    
    TIMER_ENABLE is redefined as BIT(0) so the shift is moved into the
    definition, rather than its use.
    
    Link: https://lkml.kernel.org/r/20211115174250.1994179-3-nathan@kernel.org
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Acked-by: Brian Cain <bcain@codeaurora.org>
    Cc: Nick Desaulniers <ndesaulniers@google.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    nathanchance authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    f5995fc View commit details
    Browse the repository at this point in the history
  91. tipc: check for null after calling kmemdup

    commit 3e6db07 upstream.
    
    kmemdup can return a null pointer so need to check for it, otherwise
    the null key will be dereferenced later in tipc_crypto_key_xmit as
    can be seen in the trace [1].
    
    Cc: tipc-discussion@lists.sourceforge.net
    Cc: stable@vger.kernel.org # 5.15, 5.14, 5.10
    
    [1] https://syzkaller.appspot.com/bug?id=bca180abb29567b189efdbdb34cbf7ba851c2a58
    
    Reported-by: Dmitry Vyukov <dvyukov@google.com>
    Signed-off-by: Tadeusz Struk <tadeusz.struk@linaro.org>
    Acked-by: Ying Xue <ying.xue@windriver.com>
    Acked-by: Jon Maloy <jmaloy@redhat.com>
    Link: https://lore.kernel.org/r/20211115160143.5099-1-tadeusz.struk@linaro.org
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tstruk authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    a7d9162 View commit details
    Browse the repository at this point in the history
  92. ipc: WARN if trying to remove ipc object which is absent

    commit 126e8be upstream.
    
    Patch series "shm: shm_rmid_forced feature fixes".
    
    Some time ago I met kernel crash after CRIU restore procedure,
    fortunately, it was CRIU restore, so, I had dump files and could do
    restore many times and crash reproduced easily.  After some
    investigation I've constructed the minimal reproducer.  It was found
    that it's use-after-free and it happens only if sysctl
    kernel.shm_rmid_forced = 1.
    
    The key of the problem is that the exit_shm() function not handles shp's
    object destroy when task->sysvshm.shm_clist contains items from
    different IPC namespaces.  In most cases this list will contain only
    items from one IPC namespace.
    
    How can this list contain object from different namespaces? The
    exit_shm() function is designed to clean up this list always when
    process leaves IPC namespace.  But we made a mistake a long time ago and
    did not add a exit_shm() call into the setns() syscall procedures.
    
    The first idea was just to add this call to setns() syscall but it
    obviously changes semantics of setns() syscall and that's
    userspace-visible change.  So, I gave up on this idea.
    
    The first real attempt to address the issue was just to omit forced
    destroy if we meet shp object not from current task IPC namespace [1].
    But that was not the best idea because task->sysvshm.shm_clist was
    protected by rwsem which belongs to current task IPC namespace.  It
    means that list corruption may occur.
    
    Second approach is just extend exit_shm() to properly handle shp's from
    different IPC namespaces [2].  This is really non-trivial thing, I've
    put a lot of effort into that but not believed that it's possible to
    make it fully safe, clean and clear.
    
    Thanks to the efforts of Manfred Spraul working an elegant solution was
    designed.  Thanks a lot, Manfred!
    
    Eric also suggested the way to address the issue in ("[RFC][PATCH] shm:
    In shm_exit destroy all created and never attached segments") Eric's
    idea was to maintain a list of shm_clists one per IPC namespace, use
    lock-less lists.  But there is some extra memory consumption-related
    concerns.
    
    An alternative solution which was suggested by me was implemented in
    ("shm: reset shm_clist on setns but omit forced shm destroy").  The idea
    is pretty simple, we add exit_shm() syscall to setns() but DO NOT
    destroy shm segments even if sysctl kernel.shm_rmid_forced = 1, we just
    clean up the task->sysvshm.shm_clist list.
    
    This chages semantics of setns() syscall a little bit but in comparision
    to the "naive" solution when we just add exit_shm() without any special
    exclusions this looks like a safer option.
    
    [1] https://lkml.org/lkml/2021/7/6/1108
    [2] https://lkml.org/lkml/2021/7/14/736
    
    This patch (of 2):
    
    Let's produce a warning if we trying to remove non-existing IPC object
    from IPC namespace kht/idr structures.
    
    This allows us to catch possible bugs when the ipc_rmid() function was
    called with inconsistent struct ipc_ids*, struct kern_ipc_perm*
    arguments.
    
    Link: https://lkml.kernel.org/r/20211027224348.611025-1-alexander.mikhalitsyn@virtuozzo.com
    Link: https://lkml.kernel.org/r/20211027224348.611025-2-alexander.mikhalitsyn@virtuozzo.com
    Co-developed-by: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Andrei Vagin <avagin@gmail.com>
    Cc: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
    Cc: Vasily Averin <vvs@virtuozzo.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mihalicyn authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    99032ad View commit details
    Browse the repository at this point in the history
  93. mm: kmemleak: slob: respect SLAB_NOLEAKTRACE flag

    commit 34dbc3a upstream.
    
    When kmemleak is enabled for SLOB, system does not boot and does not
    print anything to the console.  At the very early stage in the boot
    process we hit infinite recursion from kmemleak_init() and eventually
    kernel crashes.
    
    kmemleak_init() specifies SLAB_NOLEAKTRACE for KMEM_CACHE(), but
    kmem_cache_create_usercopy() removes it because CACHE_CREATE_MASK is not
    valid for SLOB.
    
    Let's fix CACHE_CREATE_MASK and make kmemleak work with SLOB
    
    Link: https://lkml.kernel.org/r/20211115020850.3154366-1-rkovhaev@gmail.com
    Fixes: d884392 ("slab: Ignore internal flags in cache creation")
    Signed-off-by: Rustam Kovhaev <rkovhaev@gmail.com>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    Reviewed-by: Muchun Song <songmuchun@bytedance.com>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Glauber Costa <glommer@parallels.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rustylife authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    b2e2fb6 View commit details
    Browse the repository at this point in the history
  94. x86/hyperv: Fix NULL deref in set_hv_tscchange_cb() if Hyper-V setup …

    …fails
    
    commit daf9721 upstream.
    
    Check for a valid hv_vp_index array prior to derefencing hv_vp_index when
    setting Hyper-V's TSC change callback.  If Hyper-V setup failed in
    hyperv_init(), the kernel will still report that it's running under
    Hyper-V, but will have silently disabled nearly all functionality.
    
      BUG: kernel NULL pointer dereference, address: 0000000000000010
      #PF: supervisor read access in kernel mode
      #PF: error_code(0x0000) - not-present page
      PGD 0 P4D 0
      Oops: 0000 [Freescale#1] SMP
      CPU: 4 PID: 1 Comm: swapper/0 Not tainted 5.15.0-rc2+ Freescale#75
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
      RIP: 0010:set_hv_tscchange_cb+0x15/0xa0
      Code: <8b> 04 82 8b 15 12 17 85 01 48 c1 e0 20 48 0d ee 00 01 00 f6 c6 08
      ...
      Call Trace:
       kvm_arch_init+0x17c/0x280
       kvm_init+0x31/0x330
       vmx_init+0xba/0x13a
       do_one_initcall+0x41/0x1c0
       kernel_init_freeable+0x1f2/0x23b
       kernel_init+0x16/0x120
       ret_from_fork+0x22/0x30
    
    Fixes: 9328626 ("x86/hyperv: Reenlightenment notifications support")
    Cc: stable@vger.kernel.org
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    Link: https://lore.kernel.org/r/20211104182239.1302956-2-seanjc@google.com
    Signed-off-by: Wei Liu <wei.liu@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    sean-jc authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    9c177ee View commit details
    Browse the repository at this point in the history
  95. powerpc/8xx: Fix pinned TLBs with CONFIG_STRICT_KERNEL_RWX

    commit 1e35eba upstream.
    
    As spotted and explained in commit c12ab8d ("powerpc/8xx: Fix
    Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST"), the selection
    of STRICT_KERNEL_RWX without selecting DEBUG_RODATA_TEST has spotted
    the lack of the DIRTY bit in the pinned kernel data TLBs.
    
    This problem should have been detected a lot earlier if things had
    been working as expected. But due to an incredible level of chance or
    mishap, this went undetected because of a set of bugs: In fact the
    DTLBs were not pinned, because instead of setting the reserve bit
    in MD_CTR, it was set in MI_CTR that is the register for ITLBs.
    
    But then, another huge bug was there: the physical address was
    reset to 0 at the boundary between RO and RW areas, leading to the
    same physical space being mapped at both 0xc0000000 and 0xc8000000.
    This had by miracle no consequence until now because the entry was
    not really pinned so it was overwritten soon enough to go undetected.
    
    Of course, now that we really pin the DTLBs, it must be fixed as well.
    
    Fixes: f76c8f6 ("powerpc/8xx: Add function to set pinned TLBs")
    Cc: stable@vger.kernel.org # v5.8+
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Depends-on: c12ab8d ("powerpc/8xx: Fix Oops with STRICT_KERNEL_RWX without DEBUG_RODATA_TEST")
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/a21e9a057fe2d247a535aff0d157a54eefee017a.1636963688.git.christophe.leroy@csgroup.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    chleroy authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    08fd6df View commit details
    Browse the repository at this point in the history
  96. scsi: qla2xxx: Fix mailbox direction flags in qla2xxx_get_adapter_id()

    commit 3920068 upstream.
    
    The SCM changes set the flags in mcp->out_mb instead of mcp->in_mb so the
    data was not actually being read into the mcp->mb[] array from the adapter.
    
    Link: https://lore.kernel.org/r/20211108183012.13895-1-emilne@redhat.com
    Fixes: 9f2475f ("scsi: qla2xxx: SAN congestion management implementation")
    Cc: stable@vger.kernel.org
    Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
    Reviewed-by: Arun Easi <aeasi@marvell.com>
    Signed-off-by: Ewan D. Milne <emilne@redhat.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Ewan D. Milne authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    b1cf0d2 View commit details
    Browse the repository at this point in the history
  97. s390/kexec: fix memory leak of ipl report buffer

    commit 4aa9340 upstream.
    
    unreferenced object 0x38000195000 (size 4096):
      comm "kexec", pid 8548, jiffies 4294953647 (age 32443.270s)
      hex dump (first 32 bytes):
        00 00 00 c8 20 00 00 00 00 00 00 c0 02 80 00 00  .... ...........
        40 40 40 40 40 40 40 40 00 00 00 00 00 00 00 00  @@@@@@@@........
      backtrace:
        [<0000000011a2f199>] __vmalloc_node_range+0xc0/0x140
        [<0000000081fa2752>] vzalloc+0x5a/0x70
        [<0000000063a4c92d>] ipl_report_finish+0x2c/0x180
        [<00000000553304da>] kexec_file_add_ipl_report+0xf4/0x150
        [<00000000862d033f>] kexec_file_add_components+0x124/0x160
        [<000000000d2717bb>] arch_kexec_kernel_image_load+0x62/0x90
        [<000000002e0373b6>] kimage_file_alloc_init+0x1aa/0x2e0
        [<0000000060f2d14f>] __do_sys_kexec_file_load+0x17c/0x2c0
        [<000000008c86fe5a>] __s390x_sys_kexec_file_load+0x40/0x50
        [<000000001fdb9dac>] __do_syscall+0x1bc/0x1f0
        [<000000003ee4258d>] system_call+0x78/0xa0
    
    Signed-off-by: Baoquan He <bhe@redhat.com>
    Reviewed-by: Philipp Rudo <prudo@redhat.com>
    Fixes: 99feaa7 ("s390/kexec_file: Create ipl report and pass to next kernel")
    Cc: <stable@vger.kernel.org> # v5.2: 20c76e2: s390/kexec: fix return code handling
    Cc: <stable@vger.kernel.org> # v5.2
    Link: https://lore.kernel.org/r/20211116033101.GD21646@MiWiFi-R3L-srv
    Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Baoquan He authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    63e2f34 View commit details
    Browse the repository at this point in the history
  98. block: Check ADMIN before NICE for IOPRIO_CLASS_RT

    commit 94c4b4f upstream.
    
    Booting to Android userspace on 5.14 or newer triggers the following
    SELinux denial:
    
    avc: denied { sys_nice } for comm="init" capability=23
         scontext=u:r:init:s0 tcontext=u:r:init:s0 tclass=capability
         permissive=0
    
    Init is PID 0 running as root, so it already has CAP_SYS_ADMIN. For
    better compatibility with older SEPolicy, check ADMIN before NICE.
    
    Fixes: 9d3a39a ("block: grant IOPRIO_CLASS_RT to CAP_SYS_NICE")
    Signed-off-by: Alistair Delva <adelva@google.com>
    Cc: Khazhismel Kumykov <khazhy@google.com>
    Cc: Bart Van Assche <bvanassche@acm.org>
    Cc: Serge Hallyn <serge@hallyn.com>
    Cc: Jens Axboe <axboe@kernel.dk>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Paul Moore <paul@paul-moore.com>
    Cc: selinux@vger.kernel.org
    Cc: linux-security-module@vger.kernel.org
    Cc: kernel-team@android.com
    Cc: stable@vger.kernel.org # v5.14+
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Acked-by: Serge Hallyn <serge@hallyn.com>
    Link: https://lore.kernel.org/r/20211115181655.3608659-1-adelva@google.com
    Signed-off-by: Jens Axboe <axboe@kernel.dk>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    adelva1984 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    cc73242 View commit details
    Browse the repository at this point in the history
  99. KVM: nVMX: don't use vcpu->arch.efer when checking host state on nest…

    …ed state load
    
    commit af957ee upstream.
    
    When loading nested state, don't use check vcpu->arch.efer to get the
    L1 host's 64-bit vs. 32-bit state and don't check it for consistency
    with respect to VM_EXIT_HOST_ADDR_SPACE_SIZE, as register state in vCPU
    may be stale when KVM_SET_NESTED_STATE is called---and architecturally
    does not exist.  When restoring L2 state in KVM, the CPU is placed in
    non-root where nested VMX code has no snapshot of L1 host state: VMX
    (conditionally) loads host state fields loaded on VM-exit, but they need
    not correspond to the state before entry.  A simple case occurs in KVM
    itself, where the host RIP field points to vmx_vmexit rather than the
    instruction following vmlaunch/vmresume.
    
    However, for the particular case of L1 being in 32- or 64-bit mode
    on entry, the exit controls can be treated instead as the source of
    truth regarding the state of L1 on entry, and can be used to check
    that vmcs12.VM_EXIT_HOST_ADDR_SPACE_SIZE matches vmcs12.HOST_EFER if
    vmcs12.VM_EXIT_LOAD_IA32_EFER is set.  The consistency check on CPU
    EFER vs. vmcs12.VM_EXIT_HOST_ADDR_SPACE_SIZE, instead, happens only
    on VM-Enter.  That's because, again, there's conceptually no "current"
    L1 EFER to check on KVM_SET_NESTED_STATE.
    
    Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
    Message-Id: <20211115131837.195527-2-mlevitsk@redhat.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Maxim Levitsky authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    6b43cf1 View commit details
    Browse the repository at this point in the history
  100. udf: Fix crash after seekdir

    commit a48fc69 upstream.
    
    udf_readdir() didn't validate the directory position it should start
    reading from. Thus when user uses lseek(2) on directory file descriptor
    it can trick udf_readdir() into reading from a position in the middle of
    directory entry which then upsets directory parsing code resulting in
    errors or even possible kernel crashes. Similarly when the directory is
    modified between two readdir calls, the directory position need not be
    valid anymore.
    
    Add code to validate current offset in the directory. This is actually
    rather expensive for UDF as we need to read from the beginning of the
    directory and parse all directory entries. This is because in UDF a
    directory is just a stream of data containing directory entries and
    since file names are fully under user's control we cannot depend on
    detecting magic numbers and checksums in the header of directory entry
    as a malicious attacker could fake them. We skip this step if we detect
    that nothing changed since the last readdir call.
    
    Reported-by: Nathan Wilson <nate@chickenbrittle.com>
    CC: stable@vger.kernel.org
    Signed-off-by: Jan Kara <jack@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jankara authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    5875f87 View commit details
    Browse the repository at this point in the history
  101. net: stmmac: socfpga: add runtime suspend/resume callback for stratix…

    …10 platform
    
    commit 9119570 upstream.
    
    According to upstream commit 5ec5582("net: stmmac:
    add clocks management for gmac driver"), it improve clocks
    management for stmmac driver. So, it is necessary to implement
    the runtime callback in dwmac-socfpga driver because it doesn't
    use the common stmmac_pltfr_pm_ops instance. Otherwise, clocks
    are not disabled when system enters suspend status.
    
    Fixes: 5ec5582 ("net: stmmac: add clocks management for gmac driver")
    Cc: stable@vger.kernel.org
    Signed-off-by: Meng Li <Meng.Li@windriver.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    limeng-linux authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    6289b49 View commit details
    Browse the repository at this point in the history
  102. btrfs: fix memory ordering between normal and ordered work functions

    commit 45da9c1 upstream.
    
    Ordered work functions aren't guaranteed to be handled by the same thread
    which executed the normal work functions. The only way execution between
    normal/ordered functions is synchronized is via the WORK_DONE_BIT,
    unfortunately the used bitops don't guarantee any ordering whatsoever.
    
    This manifested as seemingly inexplicable crashes on ARM64, where
    async_chunk::inode is seen as non-null in async_cow_submit which causes
    submit_compressed_extents to be called and crash occurs because
    async_chunk::inode suddenly became NULL. The call trace was similar to:
    
        pc : submit_compressed_extents+0x38/0x3d0
        lr : async_cow_submit+0x50/0xd0
        sp : ffff800015d4bc20
    
        <registers omitted for brevity>
    
        Call trace:
         submit_compressed_extents+0x38/0x3d0
         async_cow_submit+0x50/0xd0
         run_ordered_work+0xc8/0x280
         btrfs_work_helper+0x98/0x250
         process_one_work+0x1f0/0x4ac
         worker_thread+0x188/0x504
         kthread+0x110/0x114
         ret_from_fork+0x10/0x18
    
    Fix this by adding respective barrier calls which ensure that all
    accesses preceding setting of WORK_DONE_BIT are strictly ordered before
    setting the flag. At the same time add a read barrier after reading of
    WORK_DONE_BIT in run_ordered_work which ensures all subsequent loads
    would be strictly ordered after reading the bit. This in turn ensures
    are all accesses before WORK_DONE_BIT are going to be strictly ordered
    before any access that can occur in ordered_func.
    
    Reported-by: Chris Murphy <lists@colorremedies.com>
    Fixes: 08a9ff3 ("btrfs: Added btrfs_workqueue_struct implemented ordered execution based on kernel workqueue")
    CC: stable@vger.kernel.org # 4.4+
    Link: https://bugzilla.redhat.com/show_bug.cgi?id=2011928
    Reviewed-by: Josef Bacik <josef@toxicpanda.com>
    Tested-by: Chris Murphy <chris@colorremedies.com>
    Signed-off-by: Nikolay Borisov <nborisov@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    lorddoskias authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    6adbc07 View commit details
    Browse the repository at this point in the history
  103. parisc/sticon: fix reverse colors

    commit bec05f3 upstream.
    
    sticon_build_attr() checked the reverse argument and flipped
    background and foreground color, but returned the non-reverse
    value afterwards. Fix this and also add two local variables
    for foreground and background color to make the code easier
    to read.
    
    Signed-off-by: Sven Schnelle <svens@stackframe.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Helge Deller <deller@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    svenschnelle authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    1ab2978 View commit details
    Browse the repository at this point in the history
  104. cfg80211: call cfg80211_stop_ap when switch from P2P_GO type

    commit 563fbef upstream.
    
    If the userspace tools switch from NL80211_IFTYPE_P2P_GO to
    NL80211_IFTYPE_ADHOC via send_msg(NL80211_CMD_SET_INTERFACE), it
    does not call the cleanup cfg80211_stop_ap(), this leads to the
    initialization of in-use data. For example, this path re-init the
    sdata->assigned_chanctx_list while it is still an element of
    assigned_vifs list, and makes that linked list corrupt.
    
    Signed-off-by: Nguyen Dinh Phi <phind.uet@gmail.com>
    Reported-by: syzbot+bbf402b783eeb6d908db@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20211027173722.777287-1-phind.uet@gmail.com
    Cc: stable@vger.kernel.org
    Fixes: ac80014 ("cfg80211: .stop_ap when interface is going down")
    Signed-off-by: Johannes Berg <johannes.berg@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ita93 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    7b97b57 View commit details
    Browse the repository at this point in the history
  105. drm/amd/display: Update swizzle mode enums

    commit 58065a1 upstream.
    
    [Why]
    Swizzle mode enum for DC_SW_VAR_R_X was existing,
    but not mapped correctly.
    
    [How]
    Update mapping and conversion for DC_SW_VAR_R_X.
    
    Reviewed-by: XiangBing Foo <XiangBing.Foo@amd.com>
    Reviewed-by: Martin Leung <Martin.Leung@amd.com>
    Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
    Signed-off-by: Alvin Lee <Alvin.Lee2@amd.com>
    Cc: stable@vger.kernel.org
    Tested-by: Daniel Wheeler <Daniel.Wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Alvin Lee authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    3d68d6e View commit details
    Browse the repository at this point in the history
  106. drm/udl: fix control-message timeout

    commit 5591c8f upstream.
    
    USB control-message timeouts are specified in milliseconds and should
    specifically not vary with CONFIG_HZ.
    
    Fixes: 5320918 ("drm/udl: initial UDL driver (v4)")
    Cc: stable@vger.kernel.org      # 3.4
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211025115353.5089-1-johan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jhovold authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    6551797 View commit details
    Browse the repository at this point in the history
  107. drm/nouveau: Add a dedicated mutex for the clients list

    commit abae916 upstream.
    
    Rather than protecting the nouveau_drm clients list with the lock within
    the "client" nouveau_cli, add a dedicated lock to serialize access to
    the list. This is both clearer and necessary to avoid lockdep being
    upset with us when we need to iterate through all the clients in the
    list and potentially lock their mutex, which is the same class as the
    lock protecting the entire list.
    
    Cc: stable@vger.kernel.org # 5.4+
    Signed-off-by: Jeremy Cline <jcline@redhat.com>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
    Tested-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201125202648.5220-3-jcline@redhat.com
    Link: https://gitlab.freedesktop.org/drm/nouveau/-/merge_requests/14
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jeremycline authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    9221aff View commit details
    Browse the repository at this point in the history
  108. drm/nouveau: use drm_dev_unplug() during device removal

    commit aff2299 upstream.
    
    Nouveau does not currently support hot-unplugging, but it still makes
    sense to switch from drm_dev_unregister() to drm_dev_unplug().
    drm_dev_unplug() calls drm_dev_unregister() after marking the device as
    unplugged, but only after any device critical sections are finished.
    
    Since nouveau isn't using drm_dev_enter() and drm_dev_exit(), there are
    no critical sections so this is nearly functionally equivalent. However,
    the DRM layer does check to see if the device is unplugged, and if it is
    returns appropriate error codes.
    
    In the future nouveau can add critical sections in order to truly
    support hot-unplugging.
    
    Cc: stable@vger.kernel.org # 5.4+
    Signed-off-by: Jeremy Cline <jcline@redhat.com>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
    Tested-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201125202648.5220-2-jcline@redhat.com
    Link: https://gitlab.freedesktop.org/drm/nouveau/-/merge_requests/14
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jeremycline authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    c81c90f View commit details
    Browse the repository at this point in the history
  109. drm/nouveau: clean up all clients on device removal

    commit f55aaf6 upstream.
    
    The postclose handler can run after the device has been removed (or the
    driver has been unbound) since userspace clients are free to hold the
    file open as long as they want. Because the device removal callback
    frees the entire nouveau_drm structure, any reference to it in the
    postclose handler will result in a use-after-free.
    
    To reproduce this, one must simply open the device file, unbind the
    driver (or physically remove the device), and then close the device
    file. This was found and can be reproduced easily with the IGT
    core_hotunplug tests.
    
    To avoid this, all clients are cleaned up in the device finalization
    rather than deferring it to the postclose handler, and the postclose
    handler is protected by a critical section which ensures the
    drm_dev_unplug() and the postclose handler won't race.
    
    This is not an ideal fix, since as I understand the proposed plan for
    the kernel<->userspace interface for hotplug support, destroying the
    client before the file is closed will cause problems. However, I believe
    to properly fix this issue, the lifetime of the nouveau_drm structure
    needs to be extended to match the drm_device, and this proved to be a
    rather invasive change. Thus, I've broken this out so the fix can be
    easily backported.
    
    This fixes with the two previous commits CVE-2020-27820 (Karol).
    
    Cc: stable@vger.kernel.org # 5.4+
    Signed-off-by: Jeremy Cline <jcline@redhat.com>
    Reviewed-by: Lyude Paul <lyude@redhat.com>
    Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
    Tested-by: Karol Herbst <kherbst@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20201125202648.5220-4-jcline@redhat.com
    Link: https://gitlab.freedesktop.org/drm/nouveau/-/merge_requests/14
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jeremycline authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    82de15c View commit details
    Browse the repository at this point in the history
  110. drm/i915/dp: Ensure sink rate values are always valid

    commit 6c34bd4 upstream.
    
    Atm, there are no sink rate values set for DP (vs. eDP) sinks until the
    DPCD capabilities are successfully read from the sink. During this time
    intel_dp->num_common_rates is 0 which can lead to a
    
    intel_dp->common_rates[-1]    (*)
    
    access, which is an undefined behaviour, in the following cases:
    
    - In intel_dp_sync_state(), if the encoder is enabled without a sink
      connected to the encoder's connector (BIOS enabled a monitor, but the
      user unplugged the monitor until the driver loaded).
    - In intel_dp_sync_state() if the encoder is enabled with a sink
      connected, but for some reason the DPCD read has failed.
    - In intel_dp_compute_link_config() if modesetting a connector without
      a sink connected on it.
    - In intel_dp_compute_link_config() if modesetting a connector with a
      a sink connected on it, but before probing the connector first.
    
    To avoid the (*) access in all the above cases, make sure that the sink
    rate table - and hence the common rate table - is always valid, by
    setting a default minimum sink rate when registering the connector
    before anything could use it.
    
    I also considered setting all the DP link rates by default, so that
    modesetting with higher resolution modes also succeeds in the last two
    cases above. However in case a sink is not connected that would stop
    working after the first modeset, due to the LT fallback logic. So this
    would need more work, beyond the scope of this fix.
    
    As I mentioned in the previous patch, I don't think the issue this patch
    fixes is user visible, however it is an undefined behaviour by
    definition and triggers a BUG() in CONFIG_UBSAN builds, hence CC:stable.
    
    v2: Clear the default sink rates, before initializing these for eDP.
    
    Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/4297
    References: https://gitlab.freedesktop.org/drm/intel/-/issues/4298
    Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Imre Deak <imre.deak@intel.com>
    Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Acked-by: Jani Nikula <jani.nikula@intel.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211018143417.1452632-1-imre.deak@intel.com
    (cherry picked from commit 3f61ef9)
    Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ideak authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    47901b7 View commit details
    Browse the repository at this point in the history
  111. drm/amdgpu: fix set scaling mode Full/Full aspect/Center not works on…

    … vga and dvi connectors
    
    commit bf55208 upstream.
    
    amdgpu_connector_vga_get_modes missed function amdgpu_get_native_mode
    which assign amdgpu_encoder->native_mode with *preferred_mode result in
    amdgpu_encoder->native_mode.clock always be 0. That will cause
    amdgpu_connector_set_property returned early on:
    if ((rmx_type != DRM_MODE_SCALE_NONE) &&
    	(amdgpu_encoder->native_mode.clock == 0))
    when we try to set scaling mode Full/Full aspect/Center.
    Add the missing function to amdgpu_connector_vga_get_mode can fix this.
    It also works on dvi connectors because
    amdgpu_connector_dvi_helper_funcs.get_mode use the same method.
    
    Signed-off-by: hongao <hongao@uniontech.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    hongaoo authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    04c586a View commit details
    Browse the repository at this point in the history
  112. scsi: ufs: core: Fix task management completion

    commit f5ef336 upstream.
    
    The UFS driver uses blk_mq_tagset_busy_iter() when identifying task
    management requests to complete, however blk_mq_tagset_busy_iter() doesn't
    work.
    
    blk_mq_tagset_busy_iter() only iterates requests dispatched by the block
    layer. That appears as if it might have started since commit 37f4a24
    ("blk-mq: centralise related handling into blk_mq_get_driver_tag") which
    removed 'data->hctx->tags->rqs[rq->tag] = rq' from blk_mq_rq_ctx_init()
    which gets called:
    
    	blk_get_request
    		blk_mq_alloc_request
    			__blk_mq_alloc_request
    				blk_mq_rq_ctx_init
    
    Since UFS task management requests are not dispatched by the block layer,
    hctx->tags->rqs[rq->tag] remains NULL, and since blk_mq_tagset_busy_iter()
    relies on finding requests using hctx->tags->rqs[rq->tag], UFS task
    management requests are never found by blk_mq_tagset_busy_iter().
    
    By using blk_mq_tagset_busy_iter(), the UFS driver was relying on internal
    details of the block layer, which was fragile and subsequently got
    broken. Fix by removing the use of blk_mq_tagset_busy_iter() and having the
    driver keep track of task management requests.
    
    Link: https://lore.kernel.org/r/20210922091059.4040-1-adrian.hunter@intel.com
    Fixes: 1235fc5 ("scsi: ufs: core: Fix task management request completion timeout")
    Fixes: 69a6c26 ("scsi: ufs: Use blk_{get,put}_request() to allocate and free TMFs")
    Cc: stable@vger.kernel.org
    Tested-by: Bart Van Assche <bvanassche@acm.org>
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [Adrian: Backport to v5.10]
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ahunter6 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    ddd4e46 View commit details
    Browse the repository at this point in the history
  113. scsi: ufs: core: Fix task management completion timeout race

    commit 886fe29 upstream.
    
    __ufshcd_issue_tm_cmd() clears req->end_io_data after timing out, which
    races with the completion function ufshcd_tmc_handler() which expects
    req->end_io_data to have a value.
    
    Note __ufshcd_issue_tm_cmd() and ufshcd_tmc_handler() are already
    synchronized using hba->tmf_rqs and hba->outstanding_tasks under the
    host_lock spinlock.
    
    It is also not necessary (nor typical) to clear req->end_io_data because
    the block layer does it before allocating out requests e.g. via
    blk_get_request().
    
    So fix by not clearing it.
    
    Link: https://lore.kernel.org/r/20211108064815.569494-2-adrian.hunter@intel.com
    Fixes: f5ef336 ("scsi: ufs: core: Fix task management completion")
    Reviewed-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    [Adrian: Backport to v5.10]
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ahunter6 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    86ab0f8 View commit details
    Browse the repository at this point in the history
  114. hugetlbfs: flush TLBs correctly after huge_pmd_unshare

    commit a4a118f upstream.
    
    When __unmap_hugepage_range() calls to huge_pmd_unshare() succeed, a TLB
    flush is missing.  This TLB flush must be performed before releasing the
    i_mmap_rwsem, in order to prevent an unshared PMDs page from being
    released and reused before the TLB flush took place.
    
    Arguably, a comprehensive solution would use mmu_gather interface to
    batch the TLB flushes and the PMDs page release, however it is not an
    easy solution: (1) try_to_unmap_one() and try_to_migrate_one() also call
    huge_pmd_unshare() and they cannot use the mmu_gather interface; and (2)
    deferring the release of the page reference for the PMDs page until
    after i_mmap_rwsem is dropeed can confuse huge_pmd_unshare() into
    thinking PMDs are shared when they are not.
    
    Fix __unmap_hugepage_range() by adding the missing TLB flush, and
    forcing a flush when unshare is successful.
    
    Fixes: 24669e5 ("hugetlb: use mmu_gather instead of a temporary linked list for accumulating pages)" # 3.6
    Signed-off-by: Nadav Amit <namit@vmware.com>
    Reviewed-by: Mike Kravetz <mike.kravetz@oracle.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.vnet.ibm.com>
    Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    anadav authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    40bc831 View commit details
    Browse the repository at this point in the history
  115. RDMA/netlink: Add __maybe_unused to static inline in C file

    commit 83dde74 upstream.
    
    Like other commits in the tree add __maybe_unused to a static inline in a
    C file because some clang compilers will complain about unused code:
    
    >> drivers/infiniband/core/nldev.c:2543:1: warning: unused function '__chk_RDMA_NL_NLDEV'
       MODULE_ALIAS_RDMA_NETLINK(RDMA_NL_NLDEV, 5);
       ^
    
    Fixes: e3bf14b ("rdma: Autoload netlink client modules")
    Link: https://lore.kernel.org/r/4a8101919b765e01d7fde6f27fd572c958deeb4a.1636267207.git.leonro@nvidia.com
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rleon authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    1ae0d59 View commit details
    Browse the repository at this point in the history
  116. selinux: fix NULL-pointer dereference when hashtab allocation fails

    commit dc27f3c upstream.
    
    When the hash table slot array allocation fails in hashtab_init(),
    h->size is left initialized with a non-zero value, but the h->htable
    pointer is NULL. This may then cause a NULL pointer dereference, since
    the policydb code relies on the assumption that even after a failed
    hashtab_init(), hashtab_map() and hashtab_destroy() can be safely called
    on it. Yet, these detect an empty hashtab only by looking at the size.
    
    Fix this by making sure that hashtab_init() always leaves behind a valid
    empty hashtab when the allocation fails.
    
    Cc: stable@vger.kernel.org
    Fixes: 03414a4 ("selinux: do not allocate hashtabs dynamically")
    Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com>
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    WOnder93 authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    b17dd53 View commit details
    Browse the repository at this point in the history
  117. ASoC: DAPM: Cover regression by kctl change notification fix

    commit 827b091 upstream.
    
    The recent fix for DAPM to correct the kctl change notification by the
    commit 5af82c8 ("ASoC: DAPM: Fix missing kctl change
    notifications") caused other regressions since it changed the behavior
    of snd_soc_dapm_set_pin() that is called from several API functions.
    Formerly it returned always 0 for success, but now it returns 0 or 1.
    
    This patch addresses it, restoring the old behavior of
    snd_soc_dapm_set_pin() while keeping the fix in
    snd_soc_dapm_put_pin_switch().
    
    Fixes: 5af82c8 ("ASoC: DAPM: Fix missing kctl change notifications")
    Reported-by: Yu-Hsuan Hsu <yuhsuan@chromium.org>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20211105090925.20575-1-tiwai@suse.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tiwai authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    6186c7b View commit details
    Browse the repository at this point in the history
  118. usb: max-3421: Use driver data instead of maintaining a list of bound…

    … devices
    
    commit fc153ab upstream.
    
    Instead of maintaining a single-linked list of devices that must be
    searched linearly in .remove() just use spi_set_drvdata() to remember the
    link between the spi device and the driver struct. Then the global list
    and the next member can be dropped.
    
    This simplifies the driver, reduces the memory footprint and the time to
    search the list. Also it makes obvious that there is always a corresponding
    driver struct for a given device in .remove(), so the error path for
    !max3421_hcd can be dropped, too.
    
    As a side effect this fixes a data inconsistency when .probe() races with
    itself for a second max3421 device in manipulating max3421_hcd_list. A
    similar race is fixed in .remove(), too.
    
    Fixes: 2d53139 ("Add support for using a MAX3421E chip as a host driver.")
    Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
    Link: https://lore.kernel.org/r/20211018204028.2914597-1-u.kleine-koenig@pengutronix.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Uwe Kleine-König authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    fe65cec View commit details
    Browse the repository at this point in the history
  119. ice: Delete always true check of PF pointer

    commit 2ff0428 upstream.
    
    PF pointer is always valid when PCI core calls its .shutdown() and
    .remove() callbacks. There is no need to check it again.
    
    Fixes: 837f08f ("ice: Add basic driver framework for Intel(R) E800 Series")
    Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rleon authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    cade5d7 View commit details
    Browse the repository at this point in the history
  120. fs: export an inode_update_time helper

    commit e60feb4 upstream.
    
    If you already have an inode and need to update the time on the inode
    there is no way to do this properly.  Export this helper to allow file
    systems to update time on the inode so the appropriate handler is
    called, either ->update_time or generic_update_time.
    
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Reviewed-by: David Sterba <dsterba@suse.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    josefbacik authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    9febc9d View commit details
    Browse the repository at this point in the history
  121. btrfs: update device path inode time instead of bd_inode

    commit 54fde91 upstream.
    
    Christoph pointed out that I'm updating bdev->bd_inode for the device
    time when we remove block devices from a btrfs file system, however this
    isn't actually exposed to anything.  The inode we want to update is the
    one that's associated with the path to the device, usually on devtmpfs,
    so that blkid notices the difference.
    
    We still don't want to do the blkdev_open, so use kern_path() to get the
    path to the given device and do the update time on that inode.
    
    Fixes: 8f96a5b ("btrfs: update the bdev time directly when closing")
    Reported-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Josef Bacik <josef@toxicpanda.com>
    Signed-off-by: David Sterba <dsterba@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    josefbacik authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    2ec78af View commit details
    Browse the repository at this point in the history
  122. x86/Kconfig: Fix an unused variable error in dell-smm-hwmon

    commit ef775a0 upstream.
    
    When CONFIG_PROC_FS is not set, there is a build warning (turned
    into an error):
    
      ../drivers/hwmon/dell-smm-hwmon.c: In function 'i8k_init_procfs':
      ../drivers/hwmon/dell-smm-hwmon.c:624:24: error: unused variable 'data' [-Werror=unused-variable]
        struct dell_smm_data *data = dev_get_drvdata(dev);
    
    Make I8K depend on PROC_FS and HWMON (instead of selecting HWMON -- it
    is strongly preferred to not select entire subsystems).
    
    Build tested in all possible combinations of SENSORS_DELL_SMM, I8K, and
    PROC_FS.
    
    Fixes: 039ae58 ("hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k")
    Reported-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
    Signed-off-by: Borislav Petkov <bp@suse.de>
    Reviewed-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Guenter Roeck <linux@roeck-us.net>
    Acked-by: Pali Rohár <pali@kernel.org>
    Link: https://lkml.kernel.org/r/20210910071921.16777-1-rdunlap@infradead.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rddunlap authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    b3ef505 View commit details
    Browse the repository at this point in the history
  123. ALSA: hda: hdac_ext_stream: fix potential locking issues

    commit 868ddfc upstream.
    
    The code for hdac_ext_stream seems inherited from hdac_stream, and
    similar locking issues are present: the use of the bus->reg_lock
    spinlock is inconsistent, with only writes to specific fields being
    protected.
    
    Apply similar fix as in hdac_stream by protecting all accesses to
    'link_locked' and 'decoupled' fields, with a new helper
    snd_hdac_ext_stream_decouple_locked() added to simplify code
    changes.
    
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20210924192417.169243-4-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    plbossart authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    f751fb5 View commit details
    Browse the repository at this point in the history
  124. ALSA: hda: hdac_stream: fix potential locking issue in snd_hdac_strea…

    …m_assign()
    
    commit 1465d06 upstream.
    
    The fields 'opened', 'running', 'assigned_key' are all protected by a
    spinlock, but the spinlock is not taken when looking for a
    stream. This can result in a possible race between assign() and
    release().
    
    Fix by taking the spinlock before walking through the bus stream list.
    
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Link: https://lore.kernel.org/r/20210924192417.169243-2-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Cc: Scott Bruce <smbruce@gmail.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    plbossart authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    6718f79 View commit details
    Browse the repository at this point in the history
  125. Revert "perf: Rework perf_event_exit_event()"

    This reverts commit 94902ee which is
    upstream commit ef54c1a.
    
    Reverting for now due to issues that need to get fixed upstream.
    
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Sasha Levin authored and gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    d35250e View commit details
    Browse the repository at this point in the history
  126. Linux 5.10.82

    Link: https://lore.kernel.org/r/20211124115702.361983534@linuxfoundation.org
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Link: https://lore.kernel.org/r/20211125092029.973858485@linuxfoundation.org
    Tested-by: Salvatore Bonaccorso <carnil@debian.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gregkh committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    d5259a9 View commit details
    Browse the repository at this point in the history
  127. Merge tag 'v5.10.82' into 5.10-2.1.x-imx

    This is the 5.10.82 stable release
    
    Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
    zandrey committed Nov 26, 2021
    Configuration menu
    Copy the full SHA
    083633e View commit details
    Browse the repository at this point in the history

Commits on Dec 1, 2021

  1. bpf: Fix toctou on read-only map's constant scalar tracking

    commit 353050b upstream.
    
    Commit a23740e ("bpf: Track contents of read-only maps as scalars") is
    checking whether maps are read-only both from BPF program side and user space
    side, and then, given their content is constant, reading out their data via
    map->ops->map_direct_value_addr() which is then subsequently used as known
    scalar value for the register, that is, it is marked as __mark_reg_known()
    with the read value at verification time. Before a23740e, the register
    content was marked as an unknown scalar so the verifier could not make any
    assumptions about the map content.
    
    The current implementation however is prone to a TOCTOU race, meaning, the
    value read as known scalar for the register is not guaranteed to be exactly
    the same at a later point when the program is executed, and as such, the
    prior made assumptions of the verifier with regards to the program will be
    invalid which can cause issues such as OOB access, etc.
    
    While the BPF_F_RDONLY_PROG map flag is always fixed and required to be
    specified at map creation time, the map->frozen property is initially set to
    false for the map given the map value needs to be populated, e.g. for global
    data sections. Once complete, the loader "freezes" the map from user space
    such that no subsequent updates/deletes are possible anymore. For the rest
    of the lifetime of the map, this freeze one-time trigger cannot be undone
    anymore after a successful BPF_MAP_FREEZE cmd return. Meaning, any new BPF_*
    cmd calls which would update/delete map entries will be rejected with -EPERM
    since map_get_sys_perms() removes the FMODE_CAN_WRITE permission. This also
    means that pending update/delete map entries must still complete before this
    guarantee is given. This corner case is not an issue for loaders since they
    create and prepare such program private map in successive steps.
    
    However, a malicious user is able to trigger this TOCTOU race in two different
    ways: i) via userfaultfd, and ii) via batched updates. For i) userfaultfd is
    used to expand the competition interval, so that map_update_elem() can modify
    the contents of the map after map_freeze() and bpf_prog_load() were executed.
    This works, because userfaultfd halts the parallel thread which triggered a
    map_update_elem() at the time where we copy key/value from the user buffer and
    this already passed the FMODE_CAN_WRITE capability test given at that time the
    map was not "frozen". Then, the main thread performs the map_freeze() and
    bpf_prog_load(), and once that had completed successfully, the other thread
    is woken up to complete the pending map_update_elem() which then changes the
    map content. For ii) the idea of the batched update is similar, meaning, when
    there are a large number of updates to be processed, it can increase the
    competition interval between the two. It is therefore possible in practice to
    modify the contents of the map after executing map_freeze() and bpf_prog_load().
    
    One way to fix both i) and ii) at the same time is to expand the use of the
    map's map->writecnt. The latter was introduced in fc97022 ("bpf: Add mmap()
    support for BPF_MAP_TYPE_ARRAY") and further refined in 1f6cb19 ("bpf:
    Prevent re-mmap()'ing BPF map as writable for initially r/o mapping") with
    the rationale to make a writable mmap()'ing of a map mutually exclusive with
    read-only freezing. The counter indicates writable mmap() mappings and then
    prevents/fails the freeze operation. Its semantics can be expanded beyond
    just mmap() by generally indicating ongoing write phases. This would essentially
    span any parallel regular and batched flavor of update/delete operation and
    then also have map_freeze() fail with -EBUSY. For the check_mem_access() in
    the verifier we expand upon the bpf_map_is_rdonly() check ensuring that all
    last pending writes have completed via bpf_map_write_active() test. Once the
    map->frozen is set and bpf_map_write_active() indicates a map->writecnt of 0
    only then we are really guaranteed to use the map's data as known constants.
    For map->frozen being set and pending writes in process of still being completed
    we fall back to marking that register as unknown scalar so we don't end up
    making assumptions about it. With this, both TOCTOU reproducers from i) and
    ii) are fixed.
    
    Note that the map->writecnt has been converted into a atomic64 in the fix in
    order to avoid a double freeze_mutex mutex_{un,}lock() pair when updating
    map->writecnt in the various map update/delete BPF_* cmd flavors. Spanning
    the freeze_mutex over entire map update/delete operations in syscall side
    would not be possible due to then causing everything to be serialized.
    Similarly, something like synchronize_rcu() after setting map->frozen to wait
    for update/deletes to complete is not possible either since it would also
    have to span the user copy which can sleep. On the libbpf side, this won't
    break d66562f ("libbpf: Add BPF object skeleton support") as the
    anonymous mmap()-ed "map initialization image" is remapped as a BPF map-backed
    mmap()-ed memory where for .rodata it's non-writable.
    
    Fixes: a23740e ("bpf: Track contents of read-only maps as scalars")
    Reported-by: w1tcher.bupt@gmail.com
    Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
    Acked-by: Andrii Nakryiko <andrii@kernel.org>
    Signed-off-by: Alexei Starovoitov <ast@kernel.org>
    [fix conflict to call bpf_map_write_active_dec() in err_put block.
    fix conflict to insert new functions after find_and_alloc_map().]
    Reference: CVE-2021-4001
    Signed-off-by: Masami Ichikawa(CIP) <masami.ichikawa@cybertrust.co.jp>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    borkmann authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    33fe044 View commit details
    Browse the repository at this point in the history
  2. ACPI: Get acpi_device's parent from the parent field

    commit 9054fc6 upstream.
    
    Printk modifier %pfw is used to print the full path of the device name.
    This is obtained device by device until a device no longer has a parent.
    
    On ACPI getting the parent fwnode is done by calling acpi_get_parent()
    which tries to down() a semaphore. But local IRQs are now disabled in
    vprintk_store() before the mutex is acquired. This is obviously a problem.
    
    Luckily struct device, embedded in struct acpi_device, has a parent field
    already. Use that field to get the parent instead of relying on
    acpi_get_parent().
    
    Fixes: 3bd32d6 ("lib/vsprintf: Add %pfw conversion specifier for printing fwnode names")
    Cc: 5.5+ <stable@vger.kernel.org> # 5.5+
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Sakari Ailus authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    854c14b View commit details
    Browse the repository at this point in the history
  3. USB: serial: option: add Telit LE910S1 0x9200 composition

    commit e353f3e upstream.
    
    Add the following Telit LE910S1 composition:
    
    0x9200: tty
    
    Signed-off-by: Daniele Palmas <dnlplm@gmail.com>
    Link: https://lore.kernel.org/r/20211119140319.10448-1-dnlplm@gmail.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    dnlplm authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    ff72128 View commit details
    Browse the repository at this point in the history
  4. USB: serial: option: add Fibocom FM101-GL variants

    commit 88459e3 upstream.
    
    Update the USB serial option driver support for the Fibocom
    FM101-GL Cat.6
    LTE modules as there are actually several different variants.
    - VID:PID 2cb7:01a2, FM101-GL are laptop M.2 cards (with
      MBIM interfaces for /Linux/Chrome OS)
    - VID:PID 2cb7:01a4, FM101-GL for laptop debug M.2 cards(with adb
      interface for /Linux/Chrome OS)
    
    0x01a2: mbim, tty, tty, diag, gnss
    0x01a4: mbim, diag, tty, adb, gnss, gnss
    
    Here are the outputs of lsusb -v and usb-devices:
    
    T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 86 Spd=5000 MxCh= 0
    D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=01a2 Rev= 5.04
    S:  Manufacturer=Fibocom Wireless Inc.
    S:  Product=Fibocom FM101-GL Module
    S:  SerialNumber=673326ce
    C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=896mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)
    I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
    
    Bus 002 Device 084: ID 2cb7:01a2 Fibocom Wireless Inc. Fibocom FM101-GL Module
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               3.20
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         9
      idVendor           0x2cb7
      idProduct          0x01a2
      bcdDevice            5.04
      iManufacturer           1 Fibocom Wireless Inc.
      iProduct                2 Fibocom FM101-GL Module
      iSerial                 3 673326ce
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x015d
        bNumInterfaces          6
        bConfigurationValue     1
        iConfiguration          4 MBIM_DUN_DUN_DIAG_NMEA
        bmAttributes         0xa0
          (Bus Powered)
          Remote Wakeup
        MaxPower              896mA
        Interface Association:
          bLength                 8
          bDescriptorType        11
          bFirstInterface         0
          bInterfaceCount         2
          bFunctionClass          2 Communications
          bFunctionSubClass      14
          bFunctionProtocol       0
          iFunction               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         2 Communications
          bInterfaceSubClass     14
          bInterfaceProtocol      0
          iInterface              5 Fibocom FM101-GL LTE Modem
          CDC Header:
            bcdCDC               1.10
          CDC Union:
            bMasterInterface        0
            bSlaveInterface         1
          CDC MBIM:
            bcdMBIMVersion       1.00
            wMaxControlMessage   4096
            bNumberFilters       32
            bMaxFilterSize       128
            wMaxSegmentSize      2048
            bmNetworkCapabilities 0x20
              8-byte ntb input size
          CDC MBIM Extended:
            bcdMBIMExtendedVersion           1.00
            bMaxOutstandingCommandMessages     64
            wMTU                             1500
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               9
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0
          bInterfaceProtocol      2
          iInterface              0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       1
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0
          bInterfaceProtocol      2
          iInterface              6 MBIM Data
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x8e  EP 14 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               6
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x0f  EP 15 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               2
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        3
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        4
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     48
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x03  EP 3 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x86  EP 6 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        5
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x88  EP 8 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x87  EP 7 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x04  EP 4 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
    
    T:  Bus=02 Lev=01 Prnt=01 Port=03 Cnt=01 Dev#= 85 Spd=5000 MxCh= 0
    D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
    P:  Vendor=2cb7 ProdID=01a4 Rev= 5.04
    S:  Manufacturer=Fibocom Wireless Inc.
    S:  Product=Fibocom FM101-GL Module
    S:  SerialNumber=673326ce
    C:* #Ifs= 7 Cfg#= 1 Atr=a0 MxPwr=896mA
    A:  FirstIf#= 0 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
    I:* If#= 0 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
    I:  If#= 1 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 1 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
    I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=(none)
    I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=40 Driver=(none)
    I:* If#= 4 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
    I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
    I:* If#= 6 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
    
    Bus 002 Device 085: ID 2cb7:01a4 Fibocom Wireless Inc. Fibocom FM101-GL Module
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               3.20
      bDeviceClass            0
      bDeviceSubClass         0
      bDeviceProtocol         0
      bMaxPacketSize0         9
      idVendor           0x2cb7
      idProduct          0x01a4
      bcdDevice            5.04
      iManufacturer           1 Fibocom Wireless Inc.
      iProduct                2 Fibocom FM101-GL Module
      iSerial                 3 673326ce
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0180
        bNumInterfaces          7
        bConfigurationValue     1
        iConfiguration          4 MBIM_DIAG_DUN_ADB_GNSS_GNSS
        bmAttributes         0xa0
          (Bus Powered)
          Remote Wakeup
        MaxPower              896mA
        Interface Association:
          bLength                 8
          bDescriptorType        11
          bFirstInterface         0
          bInterfaceCount         2
          bFunctionClass          2 Communications
          bFunctionSubClass      14
          bFunctionProtocol       0
          iFunction               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         2 Communications
          bInterfaceSubClass     14
          bInterfaceProtocol      0
          iInterface              5 Fibocom FM101-GL LTE Modem
          CDC Header:
            bcdCDC               1.10
          CDC Union:
            bMasterInterface        0
            bSlaveInterface         1
          CDC MBIM:
            bcdMBIMVersion       1.00
            wMaxControlMessage   4096
            bNumberFilters       32
            bMaxFilterSize       128
            wMaxSegmentSize      2048
            bmNetworkCapabilities 0x20
              8-byte ntb input size
          CDC MBIM Extended:
            bcdMBIMExtendedVersion           1.00
            bMaxOutstandingCommandMessages     64
            wMTU                             1500
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               9
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       0
          bNumEndpoints           0
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0
          bInterfaceProtocol      2
          iInterface              0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        1
          bAlternateSetting       1
          bNumEndpoints           2
          bInterfaceClass        10 CDC Data
          bInterfaceSubClass      0
          bInterfaceProtocol      2
          iInterface              6 MBIM Data
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x8e  EP 14 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               6
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x0f  EP 15 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               2
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        2
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     48
          iInterface              0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x01  EP 1 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x82  EP 2 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        3
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass    255 Vendor Specific Subclass
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x84  EP 4 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x83  EP 3 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        4
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass     66
          bInterfaceProtocol      1
          iInterface              8 ADB Interface
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x03  EP 3 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x85  EP 5 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        5
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x87  EP 7 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x86  EP 6 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x04  EP 4 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        6
          bAlternateSetting       0
          bNumEndpoints           3
          bInterfaceClass       255 Vendor Specific Class
          bInterfaceSubClass      0
          bInterfaceProtocol     64
          iInterface              0
          ** UNRECOGNIZED:  05 24 00 10 01
          ** UNRECOGNIZED:  05 24 01 00 00
          ** UNRECOGNIZED:  04 24 02 02
          ** UNRECOGNIZED:  05 24 06 00 00
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x89  EP 9 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x000a  1x 10 bytes
            bInterval               9
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x88  EP 8 IN
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x05  EP 5 OUT
            bmAttributes            2
              Transfer Type            Bulk
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0400  1x 1024 bytes
            bInterval               0
            bMaxBurst               0
    
    Signed-off-by: Mingjie Zhang <superzmj@fibocom.com>
    Link: https://lore.kernel.org/r/20211123133757.37475-1-superzmj@fibocom.com
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold <johan@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Mingjie Zhang authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    16f1cac View commit details
    Browse the repository at this point in the history
  5. usb: dwc2: gadget: Fix ISOC flow for elapsed frames

    commit 7ad4a0b upstream.
    
    Added updating of request frame number for elapsed frames,
    otherwise frame number will remain as previous use of request.
    This will allow function driver to correctly track frames in
    case of Missed ISOC occurs.
    
    Added setting request actual length to 0 for elapsed frames.
    In Slave mode when pushing data to RxFIFO by dwords, request
    actual length incrementing accordingly. But before whole packet
    will be pushed into RxFIFO and send to host can occurs Missed
    ISOC and data will not send to host. So, in this case request
    actual length should be reset to 0.
    
    Fixes: 91bb163 ("usb: dwc2: gadget: Fix ISOC flow for BDMA and Slave")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: John Keeping <john@metanate.com>
    Signed-off-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
    Link: https://lore.kernel.org/r/c356baade6e9716d312d43df08d53ae557cb8037.1636011277.git.Minas.Harutyunyan@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Minas Harutyunyan authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    4b18cca View commit details
    Browse the repository at this point in the history
  6. usb: dwc2: hcd_queue: Fix use of floating point literal

    commit 310780e upstream.
    
    A new commit in LLVM causes an error on the use of 'long double' when
    '-mno-x87' is used, which the kernel does through an alias,
    '-mno-80387' (see the LLVM commit below for more details around why it
    does this).
    
     drivers/usb/dwc2/hcd_queue.c:1744:25: error: expression requires  'long double' type support, but target 'x86_64-unknown-linux-gnu' does not support it
                             delay = ktime_set(0, DWC2_RETRY_WAIT_DELAY);
                                                 ^
     drivers/usb/dwc2/hcd_queue.c:62:34: note: expanded from macro 'DWC2_RETRY_WAIT_DELAY'
     #define DWC2_RETRY_WAIT_DELAY (1 * 1E6L)
                                     ^
     1 error generated.
    
    This happens due to the use of a 'long double' literal. The 'E6' part of
    '1E6L' causes the literal to be a 'double' then the 'L' suffix promotes
    it to 'long double'.
    
    There is no visible reason for a floating point value in this driver, as
    the value is only used as a parameter to a function that expects an
    integer type. Use NSEC_PER_MSEC, which is the same integer value as
    '1E6L', to avoid changing functionality but fix the error.
    
    Link: ClangBuiltLinux#1497
    Link: llvm/llvm-project@a8083d4
    Fixes: 6ed30a7 ("usb: dwc2: host: use hrtimer for NAK retries")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
    Reviewed-by: John Keeping <john@metanate.com>
    Acked-by: Minas Harutyunyan <Minas.Harutyunyan@synopsys.com>
    Signed-off-by: Nathan Chancellor <nathan@kernel.org>
    Link: https://lore.kernel.org/r/20211105145802.2520658-1-nathan@kernel.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    nathanchance authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    2b7ab82 View commit details
    Browse the repository at this point in the history
  7. usb: dwc3: gadget: Ignore NoStream after End Transfer

    commit d74dc3e upstream.
    
    The End Transfer command from a stream endpoint will generate a NoStream
    event, and we should ignore it. Currently we set the flag
    DWC3_EP_IGNORE_NEXT_NOSTREAM to track this prior to sending the command,
    and it will be cleared on the next stream event. However, a stream event
    may be generated before the End Transfer command completion and
    prematurely clear the flag. Fix this by setting the flag on End Transfer
    completion instead.
    
    Fixes: 140ca4c ("usb: dwc3: gadget: Handle stream transfers")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/cee1253af4c3600edb878d11c9c08b040817ae23.1635203975.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Thinh Nguyen authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    3abf746 View commit details
    Browse the repository at this point in the history
  8. usb: dwc3: gadget: Check for L1/L2/U3 for Start Transfer

    commit 63c4c32 upstream.
    
    The programming guide noted that the driver needs to verify if the link
    state is in U0 before executing the Start Transfer command. If it's not
    in U0, the driver needs to perform remote wakeup. This is not accurate.
    If the link state is in U1/U2, then the controller will not respond to
    link recovery request from DCTL.ULSTCHNGREQ. The Start Transfer command
    will trigger a link recovery if it is in U1/U2. A clarification will be
    added to the programming guide for all controller versions.
    
    The current implementation shouldn't cause any functional issue. It may
    occasionally report an invalid time out warning from failed link
    recovery request. The driver will still go ahead with the Start Transfer
    command if the remote wakeup fails. The new change only initiates remote
    wakeup where it is needed, which is when the link state is in L1/L2/U3.
    
    Fixes: c36d8e9 ("usb: dwc3: gadget: put link to U0 before Start Transfer")
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
    Link: https://lore.kernel.org/r/05b4a5fbfbd0863fc9b1d7af934a366219e3d0b4.1635204761.git.Thinh.Nguyen@synopsys.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Thinh Nguyen authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    140e2df View commit details
    Browse the repository at this point in the history
  9. usb: dwc3: gadget: Fix null pointer exception

    commit 2628844 upstream.
    
    In the endpoint interrupt functions
    dwc3_gadget_endpoint_transfer_in_progress() and
    dwc3_gadget_endpoint_trbs_complete() will dereference the endpoint
    descriptor. But it could be cleared in __dwc3_gadget_ep_disable()
    when accessory disconnected. So we need to check whether it is null
    or not before dereferencing it.
    
    Fixes: f09ddcf ("usb: dwc3: gadget: Prevent EP queuing while stopping transfers")
    Cc: stable <stable@vger.kernel.org>
    Reviewed-by: Jack Pham <quic_jackp@quicinc.com>
    Signed-off-by: Albert Wang <albertccwang@google.com>
    Link: https://lore.kernel.org/r/20211109092642.3507692-1-albertccwang@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Albert Wang authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    0755f3f View commit details
    Browse the repository at this point in the history
  10. net: nexthop: fix null pointer dereference when IPv6 is not enabled

    commit 1c74312 upstream.
    
    When we try to add an IPv6 nexthop and IPv6 is not enabled
    (!CONFIG_IPV6) we'll hit a NULL pointer dereference[1] in the error path
    of nh_create_ipv6() due to calling ipv6_stub->fib6_nh_release. The bug
    has been present since the beginning of IPv6 nexthop gateway support.
    Commit 1aefd3d ("ipv6: Add fib6_nh_init and release to stubs") tells
    us that only fib6_nh_init has a dummy stub because fib6_nh_release should
    not be called if fib6_nh_init returns an error, but the commit below added
    a call to ipv6_stub->fib6_nh_release in its error path. To fix it return
    the dummy stub's -EAFNOSUPPORT error directly without calling
    ipv6_stub->fib6_nh_release in nh_create_ipv6()'s error path.
    
    [1]
     Output is a bit truncated, but it clearly shows the error.
     BUG: kernel NULL pointer dereference, address: 000000000000000000
     #PF: supervisor instruction fetch in kernel modede
     #PF: error_code(0x0010) - not-present pagege
     PGD 0 P4D 0
     Oops: 0010 [Freescale#1] PREEMPT SMP NOPTI
     CPU: 4 PID: 638 Comm: ip Kdump: loaded Not tainted 5.16.0-rc1+ Freescale#446
     Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-4.fc34 04/01/2014
     RIP: 0010:0x0
     Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6.
     RSP: 0018:ffff888109f5b8f0 EFLAGS: 00010286^Ac
     RAX: 0000000000000000 RBX: ffff888109f5ba28 RCX: 0000000000000000
     RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffff8881008a2860
     RBP: ffff888109f5b9d8 R08: 0000000000000000 R09: 0000000000000000
     R10: ffff888109f5b978 R11: ffff888109f5b948 R12: 00000000ffffff9f
     R13: ffff8881008a2a80 R14: ffff8881008a2860 R15: ffff8881008a2840
     FS:  00007f98de70f100(0000) GS:ffff88822bf00000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: ffffffffffffffd6 CR3: 0000000100efc000 CR4: 00000000000006e0
     Call Trace:
      <TASK>
      nh_create_ipv6+0xed/0x10c
      rtm_new_nexthop+0x6d7/0x13f3
      ? check_preemption_disabled+0x3d/0xf2
      ? lock_is_held_type+0xbe/0xfd
      rtnetlink_rcv_msg+0x23f/0x26a
      ? check_preemption_disabled+0x3d/0xf2
      ? rtnl_calcit.isra.0+0x147/0x147
      netlink_rcv_skb+0x61/0xb2
      netlink_unicast+0x100/0x187
      netlink_sendmsg+0x37f/0x3a0
      ? netlink_unicast+0x187/0x187
      sock_sendmsg_nosec+0x67/0x9b
      ____sys_sendmsg+0x19d/0x1f9
      ? copy_msghdr_from_user+0x4c/0x5e
      ? rcu_read_lock_any_held+0x2a/0x78
      ___sys_sendmsg+0x6c/0x8c
      ? asm_sysvec_apic_timer_interrupt+0x12/0x20
      ? lockdep_hardirqs_on+0xd9/0x102
      ? sockfd_lookup_light+0x69/0x99
      __sys_sendmsg+0x50/0x6e
      do_syscall_64+0xcb/0xf2
      entry_SYSCALL_64_after_hwframe+0x44/0xae
     RIP: 0033:0x7f98dea28914
     Code: 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb b5 0f 1f 80 00 00 00 00 48 8d 05 e9 5d 0c 00 8b 00 85 c0 75 13 b8 2e 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 54 c3 0f 1f 00 41 54 41 89 d4 55 48 89 f5 53
     RSP: 002b:00007fff859f5e68 EFLAGS: 00000246 ORIG_RAX: 000000000000002e2e
     RAX: ffffffffffffffda RBX: 00000000619cb810 RCX: 00007f98dea28914
     RDX: 0000000000000000 RSI: 00007fff859f5ed0 RDI: 0000000000000003
     RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000008
     R10: fffffffffffffce6 R11: 0000000000000246 R12: 0000000000000001
     R13: 000055c0097ae520 R14: 000055c0097957fd R15: 00007fff859f63a0
     </TASK>
     Modules linked in: bridge stp llc bonding virtio_net
    
    Cc: stable@vger.kernel.org
    Fixes: 53010f9 ("nexthop: Add support for IPv6 gateways")
    Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Nikolay Aleksandrov authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    b70ff39 View commit details
    Browse the repository at this point in the history
  11. usb: chipidea: ci_hdrc_imx: fix potential error pointer dereference i…

    …n probe
    
    commit d4d2e53 upstream.
    
    If the first call to devm_usb_get_phy_by_phandle(dev, "fsl,usbphy", 0)
    fails with something other than -ENODEV then it leads to an error
    pointer dereference.  For those errors we should just jump directly to
    the error handling.
    
    Fixes: 8253a34 ("usb: chipidea: ci_hdrc_imx: Also search for 'phys' phandle")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20211117074923.GF5237@kili
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Dan Carpenter authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    56fbab4 View commit details
    Browse the repository at this point in the history
  12. usb: typec: fusb302: Fix masking of comparator and bc_lvl interrupts

    commit 3624688 upstream.
    
    The code that enables either BC_LVL or COMP_CHNG interrupt in tcpm_set_cc
    wrongly assumes that the interrupt is unmasked by writing 1 to the apropriate
    bit in the mask register. In fact, interrupts are enabled when the mask
    is 0, so the tcpm_set_cc enables interrupt for COMP_CHNG when it expects
    BC_LVL interrupt to be enabled.
    
    This causes inability of the driver to recognize cable unplug events
    in host mode (unplug is recognized only via a COMP_CHNG interrupt).
    
    In device mode this bug was masked by simultaneous triggering of the VBUS
    change interrupt, because of loss of VBUS when the port peer is providing
    power.
    
    Fixes: 48242e3 ("usb: typec: fusb302: Revert "Resolve fixed power role contract setup"")
    Cc: stable <stable@vger.kernel.org>
    Cc: Hans de Goede <hdegoede@redhat.com>
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
    Signed-off-by: Ondrej Jirman <megous@megous.com>
    Link: https://lore.kernel.org/r/20211108102833.2793803-1-megous@megous.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Ondrej Jirman authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    00f1038 View commit details
    Browse the repository at this point in the history
  13. usb: hub: Fix usb enumeration issue due to address0 race

    commit 6ae6dc2 upstream.
    
    xHC hardware can only have one slot in default state with address 0
    waiting for a unique address at a time, otherwise "undefined behavior
    may occur" according to xhci spec 5.4.3.4
    
    The address0_mutex exists to prevent this across both xhci roothubs.
    
    If hub_port_init() fails, it may unlock the mutex and exit with a xhci
    slot in default state. If the other xhci roothub calls hub_port_init()
    at this point we end up with two slots in default state.
    
    Make sure the address0_mutex protects the slot default state across
    hub_port_init() retries, until slot is addressed or disabled.
    
    Note, one known minor case is not fixed by this patch.
    If device needs to be reset during resume, but fails all hub_port_init()
    retries in usb_reset_and_verify_device(), then it's possible the slot is
    still left in default state when address0_mutex is unlocked.
    
    Cc: <stable@vger.kernel.org>
    Fixes: 638139e ("usb: hub: allow to process more usb hub events in parallel")
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20211115221630.871204-1-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    matnyman authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    5bf3a0c View commit details
    Browse the repository at this point in the history
  14. usb: hub: Fix locking issues with address0_mutex

    commit 6cca13d upstream.
    
    Fix the circular lock dependency and unbalanced unlock of addess0_mutex
    introduced when fixing an address0_mutex enumeration retry race in commit
    ae6dc22d2d1 ("usb: hub: Fix usb enumeration issue due to address0 race")
    
    Make sure locking order between port_dev->status_lock and address0_mutex
    is correct, and that address0_mutex is not unlocked in hub_port_connect
    "done:" codepath which may be reached without locking address0_mutex
    
    Fixes: 6ae6dc2 ("usb: hub: Fix usb enumeration issue due to address0 race")
    Cc: <stable@vger.kernel.org>
    Reported-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Tested-by: Hans de Goede <hdegoede@redhat.com>
    Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
    Acked-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
    Link: https://lore.kernel.org/r/20211123101656.1113518-1-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    matnyman authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    aea184a View commit details
    Browse the repository at this point in the history
  15. binder: fix test regression due to sender_euid change

    commit c21a80c upstream.
    
    This is a partial revert of commit
    29bc22a ("binder: use euid from cred instead of using task").
    Setting sender_euid using proc->cred caused some Android system test
    regressions that need further investigation. It is a partial
    reversion because subsequent patches rely on proc->cred.
    
    Fixes: 29bc22a ("binder: use euid from cred instead of using task")
    Cc: stable@vger.kernel.org # 4.4+
    Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
    Signed-off-by: Todd Kjos <tkjos@google.com>
    Change-Id: I9b1769a3510fed250bb21859ef8beebabe034c66
    Link: https://lore.kernel.org/r/20211112180720.2858135-1-tkjos@google.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    toddkjos authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    4402cf0 View commit details
    Browse the repository at this point in the history
  16. ALSA: ctxfi: Fix out-of-range access

    commit 76c4718 upstream.
    
    The master and next_conj of rcs_ops are used for iterating the
    resource list entries, and currently those are supposed to return the
    current value.  The problem is that next_conf may go over the last
    entry before the loop abort condition is evaluated, and it may return
    the "current" value that is beyond the array size.  It was caught
    recently as a GPF, for example.
    
    Those return values are, however, never actually evaluated, hence
    basically we don't have to consider the current value as the return at
    all.  By dropping those return values, the potential out-of-range
    access above is also fixed automatically.
    
    This patch changes the return type of master and next_conj callbacks
    to void and drop the superfluous code accordingly.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=214985
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211118215729.26257-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tiwai authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    172167b View commit details
    Browse the repository at this point in the history
  17. ALSA: hda/realtek: Add quirk for ASRock NUC Box 1100

    commit 174a7fb upstream.
    
    This applies a SND_PCI_QUIRK(...) to the ASRock NUC Box 1100 series. This
    fixes the issue of the headphone jack not being detected unless warm
    rebooted from a certain other OS.
    
    When booting a certain other OS some coeff settings are changed that enable
    the audio jack. These settings are preserved on a warm reboot and can be
    easily dumped.
    
    The relevant indexes and values where gathered by naively diff-ing and
    reading a working and a non-working coeff dump.
    
    Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211112110704.1022501-1-wse@tuxedocomputers.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tuxedo-wse authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    60274e2 View commit details
    Browse the repository at this point in the history
  18. ALSA: hda/realtek: Fix LED on HP ProBook 435 G7

    commit 05ec716 upstream.
    
    HP ProBook 435 G7 (SSID 103c:8735) needs the similar quirk as another
    HP ProBook for enabling the mute and the mic-mute LEDs.
    
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215021
    Cc: <stable@vger.kernel.org>
    Link: https://lore.kernel.org/r/20211118071636.14738-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tiwai authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    3798218 View commit details
    Browse the repository at this point in the history
  19. media: cec: copy sequence field for the reply

    commit 13cbaa4 upstream.
    
    When the reply for a non-blocking transmit arrives, the sequence
    field for that reply was never filled in, so userspace would have no
    way of associating the reply to the original transmit.
    
    Copy the sequence field to ensure that this is now possible.
    
    Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
    Fixes: 0dbaceb ([media] cec: move the CEC framework out of staging and to media)
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Hans Verkuil authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    3a4aeb3 View commit details
    Browse the repository at this point in the history
  20. Revert "parisc: Fix backtrace to always include init funtion names"

    commit 98400ad upstream.
    
    This reverts commit 279917e.
    
    With the CONFIG_HARDENED_USERCOPY option enabled, this patch triggers
    kernel bugs at runtime:
    
      usercopy: Kernel memory overwrite attempt detected to kernel text (offset 2084839, size 6)!
      kernel BUG at mm/usercopy.c:99!
     Backtrace:
      IAOQ[0]: usercopy_abort+0xc4/0xe8
      [<00000000406ed1c8>] __check_object_size+0x174/0x238
      [<00000000407086d4>] copy_strings.isra.0+0x3e8/0x708
      [<0000000040709a20>] do_execveat_common.isra.0+0x1bc/0x328
      [<000000004070b760>] compat_sys_execve+0x7c/0xb8
      [<0000000040303eb8>] syscall_exit+0x0/0x14
    
    The problem is, that we have an init section of at least 2MB size which
    starts at _stext and is freed after bootup.
    
    If then later some kernel data is (temporarily) stored in this free
    memory, check_kernel_text_object() will trigger a bug since the data
    appears to be inside the kernel text (>=_stext) area:
            if (overlaps(ptr, len, _stext, _etext))
                    usercopy_abort("kernel text");
    
    Signed-off-by: Helge Deller <deller@gmx.de>
    Cc: stable@kernel.org # 5.4+
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    hdeller authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    6ca32e2 View commit details
    Browse the repository at this point in the history
  21. HID: wacom: Use "Confidence" flag to prevent reporting invalid contacts

    commit 7fb0413 upstream.
    
    The HID descriptor of many of Wacom's touch input devices include a
    "Confidence" usage that signals if a particular touch collection contains
    useful data. The driver does not look at this flag, however, which causes
    even invalid contacts to be reported to userspace. A lucky combination of
    kernel event filtering and device behavior (specifically: contact ID 0 ==
    invalid, contact ID >0 == valid; and order all data so that all valid
    contacts are reported before any invalid contacts) spare most devices from
    any visibly-bad behavior.
    
    The DTH-2452 is one example of an unlucky device that misbehaves. It uses
    ID 0 for both the first valid contact and all invalid contacts. Because
    we report both the valid and invalid contacts, the kernel reports that
    contact 0 first goes down (valid) and then goes up (invalid) in every
    report. This causes ~100 clicks per second simply by touching the screen.
    
    This patch inroduces new `confidence` flag in our `hid_data` structure.
    The value is initially set to `true` at the start of a report and can be
    set to `false` if an invalid touch usage is seen.
    
    Link: linuxwacom/input-wacom#270
    Fixes: f8b6a74 ("HID: wacom: generic: Support multiple tools per report")
    Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
    Tested-by: Joshua Dickens <joshua.dickens@wacom.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Jiri Kosina <jkosina@suse.cz>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jigpu authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    8fc5e3c View commit details
    Browse the repository at this point in the history
  22. staging/fbtft: Fix backlight

    commit 7865dd2 upstream.
    
    Commit b4a1ed0 ("fbdev: make FB_BACKLIGHT a tristate") forgot to
    update fbtft breaking its backlight support when FB_BACKLIGHT is a module.
    
    Since FB_TFT selects FB_BACKLIGHT there's no need for this conditional
    so just remove it and we're good.
    
    Fixes: b4a1ed0 ("fbdev: make FB_BACKLIGHT a tristate")
    Cc: <stable@vger.kernel.org>
    Acked-by: Sam Ravnborg <sam@ravnborg.org>
    Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
    Link: https://lore.kernel.org/r/20211105204358.2991-1-noralf@tronnes.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    notro authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    146283f View commit details
    Browse the repository at this point in the history
  23. staging: greybus: Add missing rwsem around snd_ctl_remove() calls

    commit ffcf7ae upstream.
    
    snd_ctl_remove() has to be called with card->controls_rwsem held (when
    called after the card instantiation).  This patch adds the missing
    rwsem calls around it.
    
    Fixes: 510e340 ("staging: greybus: audio: Add helper APIs for dynamic audio modules")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20211116072027.18466-1-tiwai@suse.de
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    tiwai authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    0bfed81 View commit details
    Browse the repository at this point in the history
  24. staging: rtl8192e: Fix use after free in _rtl92e_pci_disconnect()

    commit b535917 upstream.
    
    The free_rtllib() function frees the "dev" pointer so there is use
    after free on the next line.  Re-arrange things to avoid that.
    
    Fixes: 6689817 ("staging: rtl8192e: Fix unload/reload problem")
    Cc: stable <stable@vger.kernel.org>
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Link: https://lore.kernel.org/r/20211117072016.GA5237@kili
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Dan Carpenter authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    8d0163c View commit details
    Browse the repository at this point in the history
  25. fuse: release pipe buf after last use

    commit 4734417 upstream.
    
    Checking buf->flags should be done before the pipe_buf_release() is called
    on the pipe buffer, since releasing the buffer might modify the flags.
    
    This is exactly what page_cache_pipe_buf_release() does, and which results
    in the same VM_BUG_ON_PAGE(PageLRU(page)) that the original patch was
    trying to fix.
    
    Reported-by: Justin Forbes <jmforbes@linuxtx.org>
    Fixes: 712a951 ("fuse: fix page stealing")
    Cc: <stable@vger.kernel.org> # v2.6.35
    Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Miklos Szeredi authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    8f4d071 View commit details
    Browse the repository at this point in the history
  26. xen: don't continue xenstore initialization in case of errors

    commit 08f6c2b upstream.
    
    In case of errors in xenbus_init (e.g. missing xen_store_gfn parameter),
    we goto out_error but we forget to reset xen_store_domain_type to
    XS_UNKNOWN. As a consequence xenbus_probe_initcall and other initcalls
    will still try to initialize xenstore resulting into a crash at boot.
    
    [    2.479830] Call trace:
    [    2.482314]  xb_init_comms+0x18/0x150
    [    2.486354]  xs_init+0x34/0x138
    [    2.489786]  xenbus_probe+0x4c/0x70
    [    2.498432]  xenbus_probe_initcall+0x2c/0x7c
    [    2.503944]  do_one_initcall+0x54/0x1b8
    [    2.507358]  kernel_init_freeable+0x1ac/0x210
    [    2.511617]  kernel_init+0x28/0x130
    [    2.516112]  ret_from_fork+0x10/0x20
    
    Cc: <Stable@vger.kernel.org>
    Cc: jbeulich@suse.com
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Link: https://lore.kernel.org/r/20211115222719.2558207-1-sstabellini@kernel.org
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stefano Stabellini authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    e1d492c View commit details
    Browse the repository at this point in the history
  27. xen: detect uninitialized xenbus in xenbus_init

    commit 36e8f60 upstream.
    
    If the xenstore page hasn't been allocated properly, reading the value
    of the related hvm_param (HVM_PARAM_STORE_PFN) won't actually return
    error. Instead, it will succeed and return zero. Instead of attempting
    to xen_remap a bad guest physical address, detect this condition and
    return early.
    
    Note that although a guest physical address of zero for
    HVM_PARAM_STORE_PFN is theoretically possible, it is not a good choice
    and zero has never been validly used in that capacity.
    
    Also recognize all bits set as an invalid value.
    
    For 32-bit Linux, any pfn above ULONG_MAX would get truncated. Pfns
    above ULONG_MAX should never be passed by the Xen tools to HVM guests
    anyway, so check for this condition and return early.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
    Reviewed-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Link: https://lore.kernel.org/r/20211123210748.1910236-1-sstabellini@kernel.org
    Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Stefano Stabellini authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    bfed9c2 View commit details
    Browse the repository at this point in the history
  28. KVM: PPC: Book3S HV: Prevent POWER7/8 TLB flush flushing SLB

    commit cf0b0e3 upstream.
    
    The POWER9 ERAT flush instruction is a SLBIA with IH=7, which is a
    reserved value on POWER7/8. On POWER8 this invalidates the SLB entries
    above index 0, similarly to SLBIA IH=0.
    
    If the SLB entries are invalidated, and then the guest is bypassed, the
    host SLB does not get re-loaded, so the bolted entries above 0 will be
    lost. This can result in kernel stack access causing a SLB fault.
    
    Kernel stack access causing a SLB fault was responsible for the infamous
    mega bug (search "Fix SLB reload bug"). Although since commit
    48e7b76 ("powerpc/64s/hash: Convert SLB miss handlers to C") that
    starts using the kernel stack in the SLB miss handler, it might only
    result in an infinite loop of SLB faults. In any case it's a bug.
    
    Fix this by only executing the instruction on >= POWER9 where IH=7 is
    defined not to invalidate the SLB. POWER7/8 don't require this ERAT
    flush.
    
    Fixes: 5008711 ("KVM: PPC: Book3S HV: Invalidate ERAT when flushing guest TLB entries")
    Cc: stable@vger.kernel.org # v5.2+
    Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
    Reviewed-by: Fabiano Rosas <farosas@linux.ibm.com>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20211119031627.577853-1-npiggin@gmail.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    npiggin authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    b777c86 View commit details
    Browse the repository at this point in the history
  29. tracing/uprobe: Fix uprobe_perf_open probes iteration

    commit 1880ed7 upstream.
    
    Add missing 'tu' variable initialization in the probes loop,
    otherwise the head 'tu' is used instead of added probes.
    
    Link: https://lkml.kernel.org/r/20211123142801.182530-1-jolsa@kernel.org
    
    Cc: stable@vger.kernel.org
    Fixes: 99c9a92 ("tracing/uprobe: Fix double perf_event linking on multiprobe uprobe")
    Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Jiri Olsa authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    68fa6bf View commit details
    Browse the repository at this point in the history
  30. tracing: Fix pid filtering when triggers are attached

    commit a55f224 upstream.
    
    If a event is filtered by pid and a trigger that requires processing of
    the event to happen is a attached to the event, the discard portion does
    not take the pid filtering into account, and the event will then be
    recorded when it should not have been.
    
    Cc: stable@vger.kernel.org
    Fixes: 3fdaf80 ("tracing: Implement event pid filtering")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rostedt authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    092a58f View commit details
    Browse the repository at this point in the history
  31. mmc: sdhci-esdhc-imx: disable CMDQ support

    commit adab993 upstream.
    
    On IMX SoC's which support CMDQ the following can occur during high a
    high cpu load:
    
    mmc2: cqhci: ============ CQHCI REGISTER DUMP ===========
    mmc2: cqhci: Caps:      0x0000310a | Version:  0x00000510
    mmc2: cqhci: Config:    0x00001001 | Control:  0x00000000
    mmc2: cqhci: Int stat:  0x00000000 | Int enab: 0x00000006
    mmc2: cqhci: Int sig:   0x00000006 | Int Coal: 0x00000000
    mmc2: cqhci: TDL base:  0x8003f000 | TDL up32: 0x00000000
    mmc2: cqhci: Doorbell:  0xbf01dfff | TCN:      0x00000000
    mmc2: cqhci: Dev queue: 0x00000000 | Dev Pend: 0x08000000
    mmc2: cqhci: Task clr:  0x00000000 | SSC1:     0x00011000
    mmc2: cqhci: SSC2:      0x00000001 | DCMD rsp: 0x00000800
    mmc2: cqhci: RED mask:  0xfdf9a080 | TERRI:    0x00000000
    mmc2: cqhci: Resp idx:  0x0000000d | Resp arg: 0x00000000
    mmc2: sdhci: ============ SDHCI REGISTER DUMP ===========
    mmc2: sdhci: Sys addr:  0x7c722000 | Version:  0x00000002
    mmc2: sdhci: Blk size:  0x00000200 | Blk cnt:  0x00000020
    mmc2: sdhci: Argument:  0x00018000 | Trn mode: 0x00000023
    mmc2: sdhci: Present:   0x01f88008 | Host ctl: 0x00000030
    mmc2: sdhci: Power:     0x00000002 | Blk gap:  0x00000080
    mmc2: sdhci: Wake-up:   0x00000008 | Clock:    0x0000000f
    mmc2: sdhci: Timeout:   0x0000008f | Int stat: 0x00000000
    mmc2: sdhci: Int enab:  0x107f4000 | Sig enab: 0x107f4000
    mmc2: sdhci: ACmd stat: 0x00000000 | Slot int: 0x00000502
    mmc2: sdhci: Caps:      0x07eb0000 | Caps_1:   0x8000b407
    mmc2: sdhci: Cmd:       0x00000d1a | Max curr: 0x00ffffff
    mmc2: sdhci: Resp[0]:   0x00000000 | Resp[1]:  0xffc003ff
    mmc2: sdhci: Resp[2]:   0x328f5903 | Resp[3]:  0x00d07f01
    mmc2: sdhci: Host ctl2: 0x00000088
    mmc2: sdhci: ADMA Err:  0x00000000 | ADMA Ptr: 0xfe179020
    mmc2: sdhci-esdhc-imx: ========= ESDHC IMX DEBUG STATUS DUMP ====
    mmc2: sdhci-esdhc-imx: cmd debug status:  0x2120
    mmc2: sdhci-esdhc-imx: data debug status:  0x2200
    mmc2: sdhci-esdhc-imx: trans debug status:  0x2300
    mmc2: sdhci-esdhc-imx: dma debug status:  0x2400
    mmc2: sdhci-esdhc-imx: adma debug status:  0x2510
    mmc2: sdhci-esdhc-imx: fifo debug status:  0x2680
    mmc2: sdhci-esdhc-imx: async fifo debug status:  0x2750
    mmc2: sdhci: ============================================
    
    For now, disable CMDQ support on the imx8qm/imx8qxp/imx8mm until the
    issue is found and resolved.
    
    Fixes: bb6e358 ("mmc: sdhci-esdhc-imx: add CMDQ support")
    Fixes: cde5e8e ("mmc: sdhci-esdhc-imx: Add an new esdhc_soc_data for i.MX8MM")
    Cc: stable@vger.kernel.org
    Signed-off-by: Tim Harvey <tharvey@gateworks.com>
    Reviewed-by: Haibo Chen <haibo.chen@nxp.com>
    Acked-by: Adrian Hunter <adrian.hunter@intel.com>
    Link: https://lore.kernel.org/r/20211103165415.2016-1-tharvey@gateworks.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Gateworks authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    6319570 View commit details
    Browse the repository at this point in the history
  32. mmc: sdhci: Fix ADMA for PAGE_SIZE >= 64KiB

    commit 3d7c194 upstream.
    
    The block layer forces a minimum segment size of PAGE_SIZE, so a segment
    can be too big for the ADMA table, if PAGE_SIZE >= 64KiB. Fix by writing
    multiple descriptors, noting that the ADMA table is sized for 4KiB chunks
    anyway, so it will be big enough.
    
    Reported-and-tested-by: Bough Chen <haibo.chen@nxp.com>
    Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20211115082345.802238-1-adrian.hunter@intel.com
    Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ahunter6 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    14c3ce3 View commit details
    Browse the repository at this point in the history
  33. mdio: aspeed: Fix "Link is Down" issue

    commit 9dbe33c upstream.
    
    The issue happened randomly in runtime.  The message "Link is Down" is
    popped but soon it recovered to "Link is Up".
    
    The "Link is Down" results from the incorrect read data for reading the
    PHY register via MDIO bus.  The correct sequence for reading the data
    shall be:
    1. fire the command
    2. wait for command done (this step was missing)
    3. wait for data idle
    4. read data from data register
    
    Cc: stable@vger.kernel.org
    Fixes: f160e99 ("net: phy: Add mdio-aspeed")
    Reviewed-by: Joel Stanley <joel@jms.id.au>
    Signed-off-by: Dylan Hung <dylan_hung@aspeedtech.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Link: https://lore.kernel.org/r/20211125024432.15809-1-dylan_hung@aspeedtech.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    aspeeddylan authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    bf00edd View commit details
    Browse the repository at this point in the history
  34. powerpc/32: Fix hardlockup on vmap stack overflow

    commit 5bb60ea upstream.
    
    Since the commit c118c73 ("powerpc/32: Fix vmap stack - Do not
    activate MMU before reading task struct") a vmap stack overflow
    results in a hard lockup. This is because emergency_ctx is still
    addressed with its virtual address allthough data MMU is not active
    anymore at that time.
    
    Fix it by using a physical address instead.
    
    Fixes: c118c73 ("powerpc/32: Fix vmap stack - Do not activate MMU before reading task struct")
    Cc: stable@vger.kernel.org # v5.10+
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/ce30364fb7ccda489272af4a1612b6aa147e1d23.1637227521.git.christophe.leroy@csgroup.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    chleroy authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    dfe906d View commit details
    Browse the repository at this point in the history
  35. PCI: aardvark: Deduplicate code in advk_pcie_rd_conf()

    commit 67cb2a4 upstream.
    
    Avoid code repetition in advk_pcie_rd_conf() by handling errors with
    goto jump, as is customary in kernel.
    
    Link: https://lore.kernel.org/r/20211005180952.6812-9-kabel@kernel.org
    Fixes: 43f5c77 ("PCI: aardvark: Fix reporting CRS value")
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    elkablo authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    2b7bc1c View commit details
    Browse the repository at this point in the history
  36. PCI: aardvark: Update comment about disabling link training

    commit 1d1cd16 upstream.
    
    According to PCI Express Base Specifications (rev 4.0, 6.6.1
    "Conventional reset"), after fundamental reset a 100ms delay is needed
    prior to enabling link training.
    
    Update comment in code to reflect this requirement.
    
    Link: https://lore.kernel.org/r/20201202184659.3795-1-pali@kernel.org
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    pali authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    e7f2e2c View commit details
    Browse the repository at this point in the history
  37. PCI: aardvark: Implement re-issuing config requests on CRS response

    commit 223dec1 upstream.
    
    Commit 43f5c77 ("PCI: aardvark: Fix reporting CRS value") fixed
    handling of CRS response and when CRSSVE flag was not enabled it marked CRS
    response as failed transaction (due to simplicity).
    
    But pci-aardvark.c driver is already waiting up to the PIO_RETRY_CNT count
    for PIO config response and so we can with a small change implement
    re-issuing of config requests as described in PCIe base specification.
    
    This change implements re-issuing of config requests when response is CRS.
    Set upper bound of wait cycles to around PIO_RETRY_CNT, afterwards the
    transaction is marked as failed and an all-ones value is returned as
    before.
    
    We do this by returning appropriate error codes from function
    advk_pcie_check_pio_status(). On CRS we return -EAGAIN and caller then
    reissues transaction.
    
    Link: https://lore.kernel.org/r/20211005180952.6812-10-kabel@kernel.org
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    pali authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    df57480 View commit details
    Browse the repository at this point in the history
  38. PCI: aardvark: Simplify initialization of rootcap on virtual bridge

    commit 454c532 upstream.
    
    PCIe config space can be initialized also before pci_bridge_emul_init()
    call, so move rootcap initialization after PCI config space initialization.
    
    This simplifies the function a little since it removes one if (ret < 0)
    check.
    
    Link: https://lore.kernel.org/r/20211005180952.6812-11-kabel@kernel.org
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    pali authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    aec0751 View commit details
    Browse the repository at this point in the history
  39. PCI: aardvark: Fix link training

    commit f76b36d upstream.
    
    Fix multiple link training issues in aardvark driver. The main reason of
    these issues was misunderstanding of what certain registers do, since their
    names and comments were misleading: before commit 96be36d ("PCI:
    aardvark: Replace custom macros by standard linux/pci_regs.h macros"), the
    pci-aardvark.c driver used custom macros for accessing standard PCIe Root
    Bridge registers, and misleading comments did not help to understand what
    the code was really doing.
    
    After doing more tests and experiments I've come to the conclusion that the
    SPEED_GEN register in aardvark sets the PCIe revision / generation
    compliance and forces maximal link speed. Both GEN3 and GEN2 values set the
    read-only PCI_EXP_FLAGS_VERS bits (PCIe capabilities version of Root
    Bridge) to value 2, while GEN1 value sets PCI_EXP_FLAGS_VERS to 1, which
    matches with PCI Express specifications revisions 3, 2 and 1 respectively.
    Changing SPEED_GEN also sets the read-only bits PCI_EXP_LNKCAP_SLS and
    PCI_EXP_LNKCAP2_SLS to corresponding speed.
    
    (Note that PCI Express rev 1 specification does not define PCI_EXP_LNKCAP2
     and PCI_EXP_LNKCTL2 registers and when SPEED_GEN is set to GEN1 (which
     also sets PCI_EXP_FLAGS_VERS set to 1), lspci cannot access
     PCI_EXP_LNKCAP2 and PCI_EXP_LNKCTL2 registers.)
    
    Changing PCIe link speed can be done via PCI_EXP_LNKCTL2_TLS bits of
    PCI_EXP_LNKCTL2 register. Armada 3700 Functional Specifications says that
    the default value of PCI_EXP_LNKCTL2_TLS is based on SPEED_GEN value, but
    tests showed that the default value is always 8.0 GT/s, independently of
    speed set by SPEED_GEN. So after setting SPEED_GEN, we must also set value
    in PCI_EXP_LNKCTL2 register via PCI_EXP_LNKCTL2_TLS bits.
    
    Triggering PCI_EXP_LNKCTL_RL bit immediately after setting LINK_TRAINING_EN
    bit actually doesn't do anything. Tests have shown that a delay is needed
    after enabling LINK_TRAINING_EN bit. As triggering PCI_EXP_LNKCTL_RL
    currently does nothing, remove it.
    
    Commit 43fc679 ("PCI: aardvark: Improve link training") introduced
    code which sets SPEED_GEN register based on negotiated link speed from
    PCI_EXP_LNKSTA_CLS bits of PCI_EXP_LNKSTA register. This code was added to
    fix detection of Compex WLE900VX (Atheros QCA9880) WiFi GEN1 PCIe cards, as
    otherwise these cards were "invisible" on PCIe bus (probably because they
    crashed). But apparently more people reported the same issues with these
    cards also with other PCIe controllers [1] and I was able to reproduce this
    issue also with other "noname" WiFi cards based on Atheros QCA9890 chip
    (with the same PCI vendor/device ids as Atheros QCA9880). So this is not an
    issue in aardvark but rather an issue in Atheros QCA98xx chips. Also, this
    issue only exists if the kernel is compiled with PCIe ASPM support, and a
    generic workaround for this is to change PCIe Bridge to 2.5 GT/s link speed
    via PCI_EXP_LNKCTL2_TLS_2_5GT bits in PCI_EXP_LNKCTL2 register [2], before
    triggering PCI_EXP_LNKCTL_RL bit. This workaround also works when SPEED_GEN
    is set to value GEN2 (5 GT/s). So remove this hack completely in the
    aardvark driver and always set SPEED_GEN to value from 'max-link-speed' DT
    property. Fix for Atheros QCA98xx chips is handled separately by patch [2].
    
    These two things (code for triggering PCI_EXP_LNKCTL_RL bit and changing
    SPEED_GEN value) also explain why commit 6964494 ("PCI: aardvark:
    Train link immediately after enabling training") somehow fixed detection of
    those problematic Compex cards with Atheros chips: if triggering link
    retraining (via PCI_EXP_LNKCTL_RL bit) was done immediately after enabling
    link training (via LINK_TRAINING_EN), it did nothing. If there was a
    specific delay, aardvark HW already initialized PCIe link and therefore
    triggering link retraining caused the above issue. Compex cards triggered
    link down event and disappeared from the PCIe bus.
    
    Commit f4c7d05 ("PCI: aardvark: Wait for endpoint to be ready before
    training link") added 100ms sleep before calling 'Start link training'
    command and explained that it is a requirement of PCI Express
    specification. But the code after this 100ms sleep was not doing 'Start
    link training', rather it triggered PCI_EXP_LNKCTL_RL bit via PCIe Root
    Bridge to put link into Recovery state.
    
    The required delay after fundamental reset is already done in function
    advk_pcie_wait_for_link() which also checks whether PCIe link is up.
    So after removing the code which triggers PCI_EXP_LNKCTL_RL bit on PCIe
    Root Bridge, there is no need to wait 100ms again. Remove the extra
    msleep() call and update comment about the delay required by the PCI
    Express specification.
    
    According to Marvell Armada 3700 Functional Specifications, Link training
    should be enabled via aardvark register LINK_TRAINING_EN after selecting
    PCIe generation and x1 lane. There is no need to disable it prior resetting
    card via PERST# signal. This disabling code was introduced in commit
    5169a98 ("PCI: aardvark: Issue PERST via GPIO") as a workaround for
    some Atheros cards. It turns out that this also is Atheros specific issue
    and affects any PCIe controller, not only aardvark. Moreover this Atheros
    issue was triggered by juggling with PCI_EXP_LNKCTL_RL, LINK_TRAINING_EN
    and SPEED_GEN bits interleaved with sleeps. Now, after removing triggering
    PCI_EXP_LNKCTL_RL, there is no need to explicitly disable LINK_TRAINING_EN
    bit. So remove this code too. The problematic Compex cards described in
    previous git commits are correctly detected in advk_pcie_train_link()
    function even after applying all these changes.
    
    Note that with this patch, and also prior this patch, some NVMe disks which
    support PCIe GEN3 with 8 GT/s speed are negotiated only at the lowest link
    speed 2.5 GT/s, independently of SPEED_GEN value. After manually triggering
    PCI_EXP_LNKCTL_RL bit (e.g. from userspace via setpci), these NVMe disks
    change link speed to 5 GT/s when SPEED_GEN was configured to GEN2. This
    issue first needs to be properly investigated. I will send a fix in the
    future.
    
    On the other hand, some other GEN2 PCIe cards with 5 GT/s speed are
    autonomously by HW autonegotiated at full 5 GT/s speed without need of any
    software interaction.
    
    Armada 3700 Functional Specifications describes the following steps for
    link training: set SPEED_GEN to GEN2, enable LINK_TRAINING_EN, poll until
    link training is complete, trigger PCI_EXP_LNKCTL_RL, poll until signal
    rate is 5 GT/s, poll until link training is complete, enable ASPM L0s.
    
    The requirement for triggering PCI_EXP_LNKCTL_RL can be explained by the
    need to achieve 5 GT/s speed (as changing link speed is done by throw to
    recovery state entered by PCI_EXP_LNKCTL_RL) or maybe as a part of enabling
    ASPM L0s (but in this case ASPM L0s should have been enabled prior
    PCI_EXP_LNKCTL_RL).
    
    It is unknown why the original pci-aardvark.c driver was triggering
    PCI_EXP_LNKCTL_RL bit before waiting for the link to be up. This does not
    align with neither PCIe base specifications nor with Armada 3700 Functional
    Specification. (Note that in older versions of aardvark, this bit was
    called incorrectly PCIE_CORE_LINK_TRAINING, so this may be the reason.)
    
    It is also unknown why Armada 3700 Functional Specification says that it is
    needed to trigger PCI_EXP_LNKCTL_RL for GEN2 mode, as according to PCIe
    base specification 5 GT/s speed negotiation is supposed to be entirely
    autonomous, even if initial speed is 2.5 GT/s.
    
    [1] - https://lore.kernel.org/linux-pci/87h7l8axqp.fsf@toke.dk/
    [2] - https://lore.kernel.org/linux-pci/20210326124326.21163-1-pali@kernel.org/
    
    Link: https://lore.kernel.org/r/20211005180952.6812-12-kabel@kernel.org
    Signed-off-by: Pali Rohár <pali@kernel.org>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    Reviewed-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    pali authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    1f520a0 View commit details
    Browse the repository at this point in the history
  40. proc/vmcore: fix clearing user buffer by properly using clear_user()

    commit c1e6311 upstream.
    
    To clear a user buffer we cannot simply use memset, we have to use
    clear_user().  With a virtio-mem device that registers a vmcore_cb and
    has some logically unplugged memory inside an added Linux memory block,
    I can easily trigger a BUG by copying the vmcore via "cp":
    
      systemd[1]: Starting Kdump Vmcore Save Service...
      kdump[420]: Kdump is using the default log level(3).
      kdump[453]: saving to /sysroot/var/crash/127.0.0.1-2021-11-11-14:59:22/
      kdump[458]: saving vmcore-dmesg.txt to /sysroot/var/crash/127.0.0.1-2021-11-11-14:59:22/
      kdump[465]: saving vmcore-dmesg.txt complete
      kdump[467]: saving vmcore
      BUG: unable to handle page fault for address: 00007f2374e01000
      #PF: supervisor write access in kernel mode
      #PF: error_code(0x0003) - permissions violation
      PGD 7a523067 P4D 7a523067 PUD 7a528067 PMD 7a525067 PTE 800000007048f867
      Oops: 0003 [Freescale#1] PREEMPT SMP NOPTI
      CPU: 0 PID: 468 Comm: cp Not tainted 5.15.0+ Freescale#6
      Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.14.0-27-g64f37cc530f1-prebuilt.qemu.org 04/01/2014
      RIP: 0010:read_from_oldmem.part.0.cold+0x1d/0x86
      Code: ff ff ff e8 05 ff fe ff e9 b9 e9 7f ff 48 89 de 48 c7 c7 38 3b 60 82 e8 f1 fe fe ff 83 fd 08 72 3c 49 8d 7d 08 4c 89 e9 89 e8 <49> c7 45 00 00 00 00 00 49 c7 44 05 f8 00 00 00 00 48 83 e7 f81
      RSP: 0018:ffffc9000073be08 EFLAGS: 00010212
      RAX: 0000000000001000 RBX: 00000000002fd000 RCX: 00007f2374e01000
      RDX: 0000000000000001 RSI: 00000000ffffdfff RDI: 00007f2374e01008
      RBP: 0000000000001000 R08: 0000000000000000 R09: ffffc9000073bc50
      R10: ffffc9000073bc48 R11: ffffffff829461a8 R12: 000000000000f000
      R13: 00007f2374e01000 R14: 0000000000000000 R15: ffff88807bd421e8
      FS:  00007f2374e12140(0000) GS:ffff88807f000000(0000) knlGS:0000000000000000
      CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      CR2: 00007f2374e01000 CR3: 000000007a4aa000 CR4: 0000000000350eb0
      Call Trace:
       read_vmcore+0x236/0x2c0
       proc_reg_read+0x55/0xa0
       vfs_read+0x95/0x190
       ksys_read+0x4f/0xc0
       do_syscall_64+0x3b/0x90
       entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Some x86-64 CPUs have a CPU feature called "Supervisor Mode Access
    Prevention (SMAP)", which is used to detect wrong access from the kernel
    to user buffers like this: SMAP triggers a permissions violation on
    wrong access.  In the x86-64 variant of clear_user(), SMAP is properly
    handled via clac()+stac().
    
    To fix, properly use clear_user() when we're dealing with a user buffer.
    
    Link: https://lkml.kernel.org/r/20211112092750.6921-1-david@redhat.com
    Fixes: 997c136 ("fs/proc/vmcore.c: add hook to read_from_oldmem() to check for non-ram pages")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Acked-by: Baoquan He <bhe@redhat.com>
    Cc: Dave Young <dyoung@redhat.com>
    Cc: Baoquan He <bhe@redhat.com>
    Cc: Vivek Goyal <vgoyal@redhat.com>
    Cc: Philipp Rudo <prudo@redhat.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    davidhildenbrand authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    a8a9170 View commit details
    Browse the repository at this point in the history
  41. netfilter: ctnetlink: fix filtering with CTA_TUPLE_REPLY

    [ Upstream commit ad81d4d ]
    
    filter->orig_flags was used for a reply context.
    
    Fixes: cb8aa9a ("netfilter: ctnetlink: add kernel side filtering for dump")
    Signed-off-by: Florent Fourcot <florent.fourcot@wifirst.fr>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ffourcot authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    a3d829e View commit details
    Browse the repository at this point in the history
  42. netfilter: ctnetlink: do not erase error code with EINVAL

    [ Upstream commit 77522ff ]
    
    And be consistent in error management for both orig/reply filtering
    
    Fixes: cb8aa9a ("netfilter: ctnetlink: add kernel side filtering for dump")
    Signed-off-by: Florent Fourcot <florent.fourcot@wifirst.fr>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ffourcot authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    994065f View commit details
    Browse the repository at this point in the history
  43. netfilter: ipvs: Fix reuse connection if RS weight is 0

    [ Upstream commit c95c078 ]
    
    We are changing expire_nodest_conn to work even for reused connections when
    conn_reuse_mode=0, just as what was done with commit dc7b3eb ("ipvs:
    Fix reuse connection if real server is dead").
    
    For controlled and persistent connections, the new connection will get the
    needed real server depending on the rules in ip_vs_check_template().
    
    Fixes: d752c36 ("ipvs: allow rescheduling of new connections when port reuse is detected")
    Co-developed-by: Chuanqi Liu <legend050709@qq.com>
    Signed-off-by: Chuanqi Liu <legend050709@qq.com>
    Signed-off-by: yangxingwu <xingwu.yang@gmail.com>
    Acked-by: Simon Horman <horms@verge.net.au>
    Acked-by: Julian Anastasov <ja@ssi.bg>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    yangxingwu authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    d689176 View commit details
    Browse the repository at this point in the history
  44. netfilter: flowtable: fix IPv6 tunnel addr match

    [ Upstream commit 39f6eed ]
    
    Previously the IPv6 addresses in the key were clobbered and the mask was
    left unset.
    
    I haven't tested this; I noticed it while skimming the code to
    understand an unrelated issue.
    
    Fixes: cfab6db ("netfilter: flowtable: add tunnel match offload support")
    Cc: wenxu <wenxu@ucloud.cn>
    Signed-off-by: Will Mortensen <willmo@gmail.com>
    Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    willmo authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    b7ef25e View commit details
    Browse the repository at this point in the history
  45. ARM: dts: BCM5301X: Fix I2C controller interrupt

    [ Upstream commit 754c405 ]
    
    The I2C interrupt controller line is off by 32 because the datasheet
    describes interrupt inputs into the GIC which are for Shared Peripheral
    Interrupts and are starting at offset 32. The ARM GIC binding expects
    the SPI interrupts to be numbered from 0 relative to the SPI base.
    
    Fixes: bb097e3 ("ARM: dts: BCM5301X: Add I2C support to the DT")
    Tested-by: Christian Lamparter <chunkeey@gmail.com>
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ffainelli authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    b2cd6fd View commit details
    Browse the repository at this point in the history
  46. ARM: dts: BCM5301X: Add interrupt properties to GPIO node

    [ Upstream commit 40f7342 ]
    
    The GPIO controller is also an interrupt controller provider and is
    currently missing the appropriate 'interrupt-controller' and
    '#interrupt-cells' properties to denote that.
    
    Fixes: fb026d3 ("ARM: BCM5301X: Add Broadcom's bus-axi to the DTS file")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ffainelli authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    9db1d4a View commit details
    Browse the repository at this point in the history
  47. ARM: dts: bcm2711: Fix PCIe interrupts

    [ Upstream commit 98481f3 ]
    
    The PCIe host bridge has two interrupt lines, one that goes towards it
    PCIE_INTR2 second level interrupt controller and one for its MSI second
    level interrupt controller. The first interrupt line is not currently
    managed by the driver, which is why it was not a functional problem.
    
    The interrupt-map property was also only listing the PCI_INTA interrupts
    when there are also the INTB, C and D.
    
    Reported-by: Jim Quinlan <jim2101024@gmail.com>
    Fixes: d5c8dc0 ("ARM: dts: bcm2711: Enable PCIe controller")
    Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ffainelli authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    2be17ec View commit details
    Browse the repository at this point in the history
  48. ASoC: qdsp6: q6routing: Conditionally reset FrontEnd Mixer

    [ Upstream commit 861afea ]
    
    Stream IDs are reused across multiple BackEnd mixers, do not reset the
    stream mixers if they are not already set for that particular FrontEnd.
    
    Ex:
    amixer cset iface=MIXER,name='SLIMBUS_0_RX Audio Mixer MultiMedia1' 1
    
    would set the MultiMedia1 steam for SLIMBUS_0_RX, however doing below
    command will reset previously setup MultiMedia1 stream, because both of them
    are using MultiMedia1 PCM stream.
    
    amixer cset iface=MIXER,name='SLIMBUS_2_RX Audio Mixer MultiMedia1' 0
    
    reset the FrontEnd Mixers conditionally to fix this issue.
    
    This is more noticeable in desktop setup, where in alsactl tries to restore
    the alsa state and overwriting the previous mixer settings.
    
    Fixes: e3a3367 ("ASoC: qdsp6: q6routing: Add q6routing driver")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20211116114721.12517-3-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Srinivas-Kandagatla authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    9196a68 View commit details
    Browse the repository at this point in the history
  49. ASoC: qdsp6: q6asm: fix q6asm_dai_prepare error handling

    [ Upstream commit 721a94b ]
    
    Error handling in q6asm_dai_prepare() seems to be completely broken,
    Fix this by handling it properly.
    
    Fixes: 2a9e92d ("ASoC: qdsp6: q6asm: Add q6asm dai driver")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20211116114721.12517-4-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Srinivas-Kandagatla authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    4a4f900 View commit details
    Browse the repository at this point in the history
  50. ASoC: topology: Add missing rwsem around snd_ctl_remove() calls

    [ Upstream commit 7e567b5 ]
    
    snd_ctl_remove() has to be called with card->controls_rwsem held (when
    called after the card instantiation).  This patch add the missing
    rwsem calls around it.
    
    Fixes: 8a97823 ("ASoC: topology: Add topology core")
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Link: https://lore.kernel.org/r/20211116071812.18109-1-tiwai@suse.de
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    tiwai authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    3a25def View commit details
    Browse the repository at this point in the history
  51. ASoC: codecs: wcd934x: return error code correctly from hw_params

    [ Upstream commit 006ea27 ]
    
    Error returned from wcd934x_slim_set_hw_params() are not passed to upper layer,
    this could be misleading to the user which can start sending stream leading
    to unnecessary errors.
    
    Fix this by properly returning the errors.
    
    Fixes: a61f3b4 ("ASoC: wcd934x: add support to wcd9340/wcd9341 codec")
    Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
    Link: https://lore.kernel.org/r/20211116114623.11891-3-srinivas.kandagatla@linaro.org
    Signed-off-by: Mark Brown <broonie@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Srinivas-Kandagatla authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    2925aad View commit details
    Browse the repository at this point in the history
  52. net: ieee802154: handle iftypes as u32

    [ Upstream commit 451dc48 ]
    
    This patch fixes an issue that an u32 netlink value is handled as a
    signed enum value which doesn't fit into the range of u32 netlink type.
    If it's handled as -1 value some BIT() evaluation ends in a
    shift-out-of-bounds issue. To solve the issue we set the to u32 max which
    is s32 "-1" value to keep backwards compatibility and let the followed enum
    values start counting at 0. This brings the compiler to never handle the
    enum as signed and a check if the value is above NL802154_IFTYPE_MAX should
    filter -1 out.
    
    Fixes: f3ea5e4 ("ieee802154: add new interface command")
    Signed-off-by: Alexander Aring <aahringo@redhat.com>
    Link: https://lore.kernel.org/r/20211112030916.685793-1-aahringo@redhat.com
    Signed-off-by: Stefan Schmidt <stefan@datenfreihafen.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Alexander Aring authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    8730a67 View commit details
    Browse the repository at this point in the history
  53. firmware: arm_scmi: pm: Propagate return value to caller

    [ Upstream commit 1446fc6 ]
    
    of_genpd_add_provider_onecell may return error, so let's propagate
    its return value to caller
    
    Link: https://lore.kernel.org/r/20211116064227.20571-1-peng.fan@oss.nxp.com
    Fixes: 898216c ("firmware: arm_scmi: add device power domain support using genpd")
    Signed-off-by: Peng Fan <peng.fan@nxp.com>
    Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    MrVan authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    c9ba786 View commit details
    Browse the repository at this point in the history
  54. NFSv42: Don't fail clone() unless the OP_CLONE operation failed

    [ Upstream commit d3c4582 ]
    
    The failure to retrieve post-op attributes has no bearing on whether or
    not the clone operation itself was successful. We must therefore ignore
    the return value of decode_getfattr() when looking at the success or
    failure of nfs4_xdr_dec_clone().
    
    Fixes: 3602277 ("nfs42: add CLONE xdr functions")
    Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Trond Myklebust authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    86c5adc View commit details
    Browse the repository at this point in the history
  55. ARM: socfpga: Fix crash with CONFIG_FORTIRY_SOURCE

    [ Upstream commit 187bea4 ]
    
    When CONFIG_FORTIFY_SOURCE is set, memcpy() checks the potential
    buffer overflow and panics.  The code in sofcpga bootstrapping
    contains the memcpy() calls are mistakenly translated as the shorter
    size, hence it triggers a panic as if it were overflowing.
    
    This patch changes the secondary_trampoline and *_end definitions
    to arrays for avoiding the false-positive crash above.
    
    Fixes: 9c4566a ("ARM: socfpga: Enable SMP for socfpga")
    Suggested-by: Kees Cook <keescook@chromium.org>
    Buglink: https://bugzilla.suse.com/show_bug.cgi?id=1192473
    Link: https://lore.kernel.org/r/20211117193244.31162-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Dinh Nguyen <dinguyen@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    tiwai authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    0effb7f View commit details
    Browse the repository at this point in the history
  56. drm/nouveau/acr: fix a couple NULL vs IS_ERR() checks

    [ Upstream commit b371fd1 ]
    
    The nvkm_acr_lsfw_add() function never returns NULL.  It returns error
    pointers on error.
    
    Fixes: 22dcda4 ("drm/nouveau/acr: implement new subdev to replace "secure boot"")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Reviewed-by: Ben Skeggs <bskeggs@redhat.com>
    Signed-off-by: Karol Herbst <kherbst@redhat.com>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211118111314.GB1147@kili
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Dan Carpenter authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    29ecb4c View commit details
    Browse the repository at this point in the history
  57. scsi: mpt3sas: Fix kernel panic during drive powercycle test

    [ Upstream commit 0ee4ba1 ]
    
    While looping over shost's sdev list it is possible that one
    of the drives is getting removed and its sas_target object is
    freed but its sdev object remains intact.
    
    Consequently, a kernel panic can occur while the driver is trying to access
    the sas_address field of sas_target object without also checking the
    sas_target object for NULL.
    
    Link: https://lore.kernel.org/r/20211117104909.2069-1-sreekanth.reddy@broadcom.com
    Fixes: f92363d ("[SCSI] mpt3sas: add new driver supporting 12GB SAS")
    Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    sreekanthbrcm authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    2bf9c5a View commit details
    Browse the repository at this point in the history
  58. drm/vc4: fix error code in vc4_create_object()

    [ Upstream commit 96c5f82 ]
    
    The ->gem_create_object() functions are supposed to return NULL if there
    is an error.  None of the callers expect error pointers so returing one
    will lead to an Oops.  See drm_gem_vram_create(), for example.
    
    Fixes: c826a6e ("drm/vc4: Add a BO cache.")
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Maxime Ripard <maxime@cerno.tech>
    Link: https://patchwork.freedesktop.org/patch/msgid/20211118111416.GC1147@kili
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Dan Carpenter authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    b33c5c8 View commit details
    Browse the repository at this point in the history
  59. net: marvell: prestera: fix double free issue on err path

    [ Upstream commit e8d0325 ]
    
    fix error path handling in prestera_bridge_port_join() that
    cases prestera driver to crash (see below).
    
     Trace:
       Internal error: Oops: 96000044 [Freescale#1] SMP
       Modules linked in: prestera_pci prestera uio_pdrv_genirq
       CPU: 1 PID: 881 Comm: ip Not tainted 5.15.0 Freescale#1
       pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
       pc : prestera_bridge_destroy+0x2c/0xb0 [prestera]
       lr : prestera_bridge_port_join+0x2cc/0x350 [prestera]
       sp : ffff800011a1b0f0
       ...
       x2 : ffff000109ca6c80 x1 : dead000000000100 x0 : dead000000000122
        Call trace:
       prestera_bridge_destroy+0x2c/0xb0 [prestera]
       prestera_bridge_port_join+0x2cc/0x350 [prestera]
       prestera_netdev_port_event.constprop.0+0x3c4/0x450 [prestera]
       prestera_netdev_event_handler+0xf4/0x110 [prestera]
       raw_notifier_call_chain+0x54/0x80
       call_netdevice_notifiers_info+0x54/0xa0
       __netdev_upper_dev_link+0x19c/0x380
    
    Fixes: e1189d9 ("net: marvell: prestera: Add Switchdev driver implementation")
    Signed-off-by: Volodymyr Mytnyk <vmytnyk@marvell.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Volodymyr Mytnyk authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    5dca8ef View commit details
    Browse the repository at this point in the history
  60. iavf: Prevent changing static ITR values if adaptive moderation is on

    [ Upstream commit e792779 ]
    
    Resolve being able to change static values on VF when adaptive interrupt
    moderation is enabled.
    
    This problem is fixed by checking the interrupt settings is not
    a combination of change of static value while adaptive interrupt
    moderation is turned on.
    
    Without this fix, the user would be able to change static values
    on VF with adaptive moderation enabled.
    
    Fixes: 65e87c0 ("i40evf: support queue-specific settings for interrupt moderation")
    Signed-off-by: Nitesh B Venkatesh <nitesh.b.venkatesh@intel.com>
    Tested-by: George Kuruvinakunnel <george.kuruvinakunnel@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    niteshbvenkatesh authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    f5af2de View commit details
    Browse the repository at this point in the history
  61. ALSA: intel-dsp-config: add quirk for JSL devices based on ES8336 codec

    [ Upstream commit fa9730b ]
    
    These devices are based on an I2C/I2S device, we need to force the use
    of the SOF driver otherwise the legacy HDaudio driver will be loaded -
    only HDMI will be supported.
    
    We previously added support for other Intel platforms but missed
    JasperLake.
    
    BugLink: thesofproject#3210
    Fixes: 9d36cea ('ALSA: intel-dsp-config: add quirk for APL/GLK/TGL devices based on ES8336 codec')
    Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
    Reviewed-by: Kai Vehmanen <kai.vehmanen@intel.com>
    Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
    Link: https://lore.kernel.org/r/20211027023254.24955-1-yung-chuan.liao@linux.intel.com
    Signed-off-by: Takashi Iwai <tiwai@suse.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    plbossart authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    0615428 View commit details
    Browse the repository at this point in the history
  62. mptcp: fix delack timer

    [ Upstream commit ee50e67 ]
    
    To compute the rtx timeout schedule_3rdack_retransmission() does multiple
    things in the wrong way: srtt_us is measured in usec/8 and the timeout
    itself is an absolute value.
    
    Fixes: ec3edaa ("mptcp: Add handling of outgoing MP_JOIN requests")
    Acked-by: Paolo Abeni <pabeni@redhat.com>
    Reviewed-by: Mat Martineau <mathew.j.martineau>@linux.intel.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Eric Dumazet authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    bbd1683 View commit details
    Browse the repository at this point in the history
  63. firmware: smccc: Fix check for ARCH_SOC_ID not implemented

    [ Upstream commit e95d8ea ]
    
    The ARCH_FEATURES function ID is a 32-bit SMC call, which returns
    a 32-bit result per the SMCCC spec.  Current code is doing a 64-bit
    comparison against -1 (SMCCC_RET_NOT_SUPPORTED) to detect that the
    feature is unimplemented.  That check doesn't work in a Hyper-V VM,
    where the upper 32-bits are zero as allowed by the spec.
    
    Cast the result as an 'int' so the comparison works. The change also
    makes the code consistent with other similar checks in this file.
    
    Fixes: 821b67f ("firmware: smccc: Add ARCH_SOC_ID support")
    Signed-off-by: Michael Kelley <mikelley@microsoft.com>
    Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    kelleymh authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    6d9e8da View commit details
    Browse the repository at this point in the history
  64. ipv6: fix typos in __ip6_finish_output()

    [ Upstream commit 19d36c5 ]
    
    We deal with IPv6 packets, so we need to use IP6CB(skb)->flags and
    IP6SKB_REROUTED, instead of IPCB(skb)->flags and IPSKB_REROUTED
    
    Found by code inspection, please double check that fixing this bug
    does not surface other bugs.
    
    Fixes: 09ee9db ("ipv6: Reinject IPv6 packets if IPsec policy matches after SNAT")
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Tobias Brunner <tobias@strongswan.org>
    Cc: Steffen Klassert <steffen.klassert@secunet.com>
    Cc: David Ahern <dsahern@kernel.org>
    Reviewed-by: David Ahern <dsahern@kernel.org>
    Tested-by: Tobias Brunner <tobias@strongswan.org>
    Acked-by: Tobias Brunner <tobias@strongswan.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Eric Dumazet authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    9b44cb6 View commit details
    Browse the repository at this point in the history
  65. nfp: checking parameter process for rx-usecs/tx-usecs is invalid

    [ Upstream commit 3bd6b2a ]
    
    Use nn->tlv_caps.me_freq_mhz instead of nn->me_freq_mhz to check whether
    rx-usecs/tx-usecs is valid.
    
    This is because nn->tlv_caps.me_freq_mhz represents the clock_freq (MHz) of
    the flow processing cores (FPC) on the NIC. While nn->me_freq_mhz is not
    be set.
    
    Fixes: ce991ab ("nfp: read ME frequency from vNIC ctrl memory")
    Signed-off-by: Diana Wang <na.wang@corigine.com>
    Signed-off-by: Simon Horman <simon.horman@corigine.com>
    Reviewed-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    diana5nana authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    cc301ad View commit details
    Browse the repository at this point in the history
  66. net: stmmac: fix system hang caused by eee_ctrl_timer during suspend/…

    …resume
    
    [ Upstream commit 276aae3 ]
    
    commit 5f58591 ("net: stmmac: delete the eee_ctrl_timer after
    napi disabled"), this patch tries to fix system hang caused by eee_ctrl_timer,
    unfortunately, it only can resolve it for system reboot stress test. System
    hang also can be reproduced easily during system suspend/resume stess test
    when mount NFS on i.MX8MP EVK board.
    
    In stmmac driver, eee feature is combined to phylink framework. When do
    system suspend, phylink_stop() would queue delayed work, it invokes
    stmmac_mac_link_down(), where to deactivate eee_ctrl_timer synchronizly.
    In above commit, try to fix issue by deactivating eee_ctrl_timer obviously,
    but it is not enough. Looking into eee_ctrl_timer expire callback
    stmmac_eee_ctrl_timer(), it could enable hareware eee mode again. What is
    unexpected is that LPI interrupt (MAC_Interrupt_Enable.LPIEN bit) is always
    asserted. This interrupt has chance to be issued when LPI state entry/exit
    from the MAC, and at that time, clock could have been already disabled.
    The result is that system hang when driver try to touch register from
    interrupt handler.
    
    The reason why above commit can fix system hang issue in stmmac_release()
    is that, deactivate eee_ctrl_timer not just after napi disabled, further
    after irq freed.
    
    In conclusion, hardware would generate LPI interrupt when clock has been
    disabled during suspend or resume, since hardware is in eee mode and LPI
    interrupt enabled.
    
    Interrupts from MAC, MTL and DMA level are enabled and never been disabled
    when system suspend, so postpone clocks management from suspend stage to
    noirq suspend stage should be more safe.
    
    Fixes: 5f58591 ("net: stmmac: delete the eee_ctrl_timer after napi disabled")
    Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Joakim Zhang authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    79068e6 View commit details
    Browse the repository at this point in the history
  67. net: stmmac: retain PTP clock time during SIOCSHWTSTAMP ioctls

    [ Upstream commit a6da2bb ]
    
    Currently, when user space emits SIOCSHWTSTAMP ioctl calls such as
    enabling/disabling timestamping or changing filter settings, the driver
    reads the current CLOCK_REALTIME value and programming this into the
    NIC's hardware clock. This might be necessary during system
    initialization, but at runtime, when the PTP clock has already been
    synchronized to a grandmaster, a reset of the timestamp settings might
    result in a clock jump. Furthermore, if the clock is also controlled by
    phc2sys in automatic mode (where the UTC offset is queried from ptp4l),
    that UTC-to-TAI offset (currently 37 seconds in 2021) would be
    temporarily reset to 0, and it would take a long time for phc2sys to
    readjust so that CLOCK_REALTIME and the PHC are apart by 37 seconds
    again.
    
    To address the issue, we introduce a new function called
    stmmac_init_tstamp_counter(), which gets called during ndo_open().
    It contains the code snippet moved from stmmac_hwtstamp_set() that
    manages the time synchronization. Besides, the sub second increment
    configuration is also moved here since the related values are hardware
    dependent and runtime invariant.
    
    Furthermore, the hardware clock must be kept running even when no time
    stamping mode is selected in order to retain the synchronized time base.
    That way, timestamping can be enabled again at any time only with the
    need to compensate the clock's natural drifting.
    
    As a side effect, this patch fixes the issue that ptp_clock_info::enable
    can be called before SIOCSHWTSTAMP and the driver (which looks at
    priv->systime_flags) was not prepared to handle that ordering.
    
    Fixes: 92ba688 ("stmmac: add the support for PTP hw clock driver")
    Reported-by: Michael Olbrich <m.olbrich@pengutronix.de>
    Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
    Signed-off-by: Holger Assmann <h.assmann@pengutronix.de>
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    h-assmann authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    dc2f7e9 View commit details
    Browse the repository at this point in the history
  68. net: ipv6: add fib6_nh_release_dsts stub

    [ Upstream commit 8837cbb ]
    
    We need a way to release a fib6_nh's per-cpu dsts when replacing
    nexthops otherwise we can end up with stale per-cpu dsts which hold net
    device references, so add a new IPv6 stub called fib6_nh_release_dsts.
    It must be used after an RCU grace period, so no new dsts can be created
    through a group's nexthop entry.
    Similar to fib6_nh_release it shouldn't be used if fib6_nh_init has failed
    so it doesn't need a dummy stub when IPv6 is not enabled.
    
    Fixes: 7bf4796 ("nexthops: add support for replace")
    Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Nikolay Aleksandrov authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    3c40584 View commit details
    Browse the repository at this point in the history
  69. net: nexthop: release IPv6 per-cpu dsts when replacing a nexthop group

    [ Upstream commit 1005f19 ]
    
    When replacing a nexthop group, we must release the IPv6 per-cpu dsts of
    the removed nexthop entries after an RCU grace period because they
    contain references to the nexthop's net device and to the fib6 info.
    With specific series of events[1] we can reach net device refcount
    imbalance which is unrecoverable. IPv4 is not affected because dsts
    don't take a refcount on the route.
    
    [1]
     $ ip nexthop list
      id 200 via 2002:db8::2 dev bridge.10 scope link onlink
      id 201 via 2002:db8::3 dev bridge scope link onlink
      id 203 group 201/200
     $ ip -6 route
      2001:db8::10 nhid 203 metric 1024 pref medium
         nexthop via 2002:db8::3 dev bridge weight 1 onlink
         nexthop via 2002:db8::2 dev bridge.10 weight 1 onlink
    
    Create rt6_info through one of the multipath legs, e.g.:
     $ taskset -a -c 1  ./pkt_inj 24 bridge.10 2001:db8::10
     (pkt_inj is just a custom packet generator, nothing special)
    
    Then remove that leg from the group by replace (let's assume it is id
    200 in this case):
     $ ip nexthop replace id 203 group 201
    
    Now remove the IPv6 route:
     $ ip -6 route del 2001:db8::10/128
    
    The route won't be really deleted due to the stale rt6_info holding 1
    refcnt in nexthop id 200.
    At this point we have the following reference count dependency:
     (deleted) IPv6 route holds 1 reference over nhid 203
     nh 203 holds 1 ref over id 201
     nh 200 holds 1 ref over the net device and the route due to the stale
     rt6_info
    
    Now to create circular dependency between nh 200 and the IPv6 route, and
    also to get a reference over nh 200, restore nhid 200 in the group:
     $ ip nexthop replace id 203 group 201/200
    
    And now we have a permanent circular dependncy because nhid 203 holds a
    reference over nh 200 and 201, but the route holds a ref over nh 203 and
    is deleted.
    
    To trigger the bug just delete the group (nhid 203):
     $ ip nexthop del id 203
    
    It won't really be deleted due to the IPv6 route dependency, and now we
    have 2 unlinked and deleted objects that reference each other: the group
    and the IPv6 route. Since the group drops the reference it holds over its
    entries at free time (i.e. its own refcount needs to drop to 0) that will
    never happen and we get a permanent ref on them, since one of the entries
    holds a reference over the IPv6 route it will also never be released.
    
    At this point the dependencies are:
     (deleted, only unlinked) IPv6 route holds reference over group nh 203
     (deleted, only unlinked) group nh 203 holds reference over nh 201 and 200
     nh 200 holds 1 ref over the net device and the route due to the stale
     rt6_info
    
    This is the last point where it can be fixed by running traffic through
    nh 200, and specifically through the same CPU so the rt6_info (dst) will
    get released due to the IPv6 genid, that in turn will free the IPv6
    route, which in turn will free the ref count over the group nh 203.
    
    If nh 200 is deleted at this point, it will never be released due to the
    ref from the unlinked group 203, it will only be unlinked:
     $ ip nexthop del id 200
     $ ip nexthop
     $
    
    Now we can never release that stale rt6_info, we have IPv6 route with ref
    over group nh 203, group nh 203 with ref over nh 200 and 201, nh 200 with
    rt6_info (dst) with ref over the net device and the IPv6 route. All of
    these objects are only unlinked, and cannot be released, thus they can't
    release their ref counts.
    
     Message from syslogd@dev at Nov 19 14:04:10 ...
      kernel:[73501.828730] unregister_netdevice: waiting for bridge.10 to become free. Usage count = 3
     Message from syslogd@dev at Nov 19 14:04:20 ...
      kernel:[73512.068811] unregister_netdevice: waiting for bridge.10 to become free. Usage count = 3
    
    Fixes: 7bf4796 ("nexthops: add support for replace")
    Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Nikolay Aleksandrov authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    26ed13d View commit details
    Browse the repository at this point in the history
  70. ice: fix vsi->txq_map sizing

    [ Upstream commit 792b208 ]
    
    The approach of having XDP queue per CPU regardless of user's setting
    exposed a hidden bug that could occur in case when Rx queue count differ
    from Tx queue count. Currently vsi->txq_map's size is equal to the
    doubled vsi->alloc_txq, which is not correct due to the fact that XDP
    rings were previously based on the Rx queue count. Below splat can be
    seen when ethtool -L is used and XDP rings are configured:
    
    [  682.875339] BUG: kernel NULL pointer dereference, address: 000000000000000f
    [  682.883403] #PF: supervisor read access in kernel mode
    [  682.889345] #PF: error_code(0x0000) - not-present page
    [  682.895289] PGD 0 P4D 0
    [  682.898218] Oops: 0000 [Freescale#1] PREEMPT SMP PTI
    [  682.903055] CPU: 42 PID: 2878 Comm: ethtool Tainted: G           OE     5.15.0-rc5+ Freescale#1
    [  682.912214] Hardware name: Intel Corp. GRANTLEY/GRANTLEY, BIOS GRRFCRB1.86B.0276.D07.1605190235 05/19/2016
    [  682.923380] RIP: 0010:devres_remove+0x44/0x130
    [  682.928527] Code: 49 89 f4 55 48 89 fd 4c 89 ff 53 48 83 ec 10 e8 92 b9 49 00 48 8b 9d a8 02 00 00 48 8d 8d a0 02 00 00 49 89 c2 48 39 cb 74 0f <4c> 3b 63 10 74 25 48 8b 5b 08 48 39 cb 75 f1 4c 89 ff 4c 89 d6 e8
    [  682.950237] RSP: 0018:ffffc90006a679f0 EFLAGS: 00010002
    [  682.956285] RAX: 0000000000000286 RBX: ffffffffffffffff RCX: ffff88908343a370
    [  682.964538] RDX: 0000000000000001 RSI: ffffffff81690d60 RDI: 0000000000000000
    [  682.972789] RBP: ffff88908343a0d0 R08: 0000000000000000 R09: 0000000000000000
    [  682.981040] R10: 0000000000000286 R11: 3fffffffffffffff R12: ffffffff81690d60
    [  682.989282] R13: ffffffff81690a00 R14: ffff8890819807a8 R15: ffff88908343a36c
    [  682.997535] FS:  00007f08c7bfa740(0000) GS:ffff88a03fd00000(0000) knlGS:0000000000000000
    [  683.006910] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  683.013557] CR2: 000000000000000f CR3: 0000001080a66003 CR4: 00000000003706e0
    [  683.021819] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  683.030075] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  683.038336] Call Trace:
    [  683.041167]  devm_kfree+0x33/0x50
    [  683.045004]  ice_vsi_free_arrays+0x5e/0xc0 [ice]
    [  683.050380]  ice_vsi_rebuild+0x4c8/0x750 [ice]
    [  683.055543]  ice_vsi_recfg_qs+0x9a/0x110 [ice]
    [  683.060697]  ice_set_channels+0x14f/0x290 [ice]
    [  683.065962]  ethnl_set_channels+0x333/0x3f0
    [  683.070807]  genl_family_rcv_msg_doit+0xea/0x150
    [  683.076152]  genl_rcv_msg+0xde/0x1d0
    [  683.080289]  ? channels_prepare_data+0x60/0x60
    [  683.085432]  ? genl_get_cmd+0xd0/0xd0
    [  683.089667]  netlink_rcv_skb+0x50/0xf0
    [  683.094006]  genl_rcv+0x24/0x40
    [  683.097638]  netlink_unicast+0x239/0x340
    [  683.102177]  netlink_sendmsg+0x22e/0x470
    [  683.106717]  sock_sendmsg+0x5e/0x60
    [  683.110756]  __sys_sendto+0xee/0x150
    [  683.114894]  ? handle_mm_fault+0xd0/0x2a0
    [  683.119535]  ? do_user_addr_fault+0x1f3/0x690
    [  683.134173]  __x64_sys_sendto+0x25/0x30
    [  683.148231]  do_syscall_64+0x3b/0xc0
    [  683.161992]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    
    Fix this by taking into account the value that num_possible_cpus()
    yields in addition to vsi->alloc_txq instead of doubling the latter.
    
    Fixes: efc2214 ("ice: Add support for XDP")
    Fixes: 22bf877 ("ice: introduce XDP_TX fallback path")
    Reviewed-by: Alexander Lobakin <alexandr.lobakin@intel.com>
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Kiran Bhandare <kiranx.bhandare@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mfijalko authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    1eb5395 View commit details
    Browse the repository at this point in the history
  71. ice: avoid bpf_prog refcount underflow

    [ Upstream commit f65ee53 ]
    
    Ice driver has the routines for managing XDP resources that are shared
    between ndo_bpf op and VSI rebuild flow. The latter takes place for
    example when user changes queue count on an interface via ethtool's
    set_channels().
    
    There is an issue around the bpf_prog refcounting when VSI is being
    rebuilt - since ice_prepare_xdp_rings() is called with vsi->xdp_prog as
    an argument that is used later on by ice_vsi_assign_bpf_prog(), same
    bpf_prog pointers are swapped with each other. Then it is also
    interpreted as an 'old_prog' which in turn causes us to call
    bpf_prog_put on it that will decrement its refcount.
    
    Below splat can be interpreted in a way that due to zero refcount of a
    bpf_prog it is wiped out from the system while kernel still tries to
    refer to it:
    
    [  481.069429] BUG: unable to handle page fault for address: ffffc9000640f038
    [  481.077390] #PF: supervisor read access in kernel mode
    [  481.083335] #PF: error_code(0x0000) - not-present page
    [  481.089276] PGD 100000067 P4D 100000067 PUD 1001cb067 PMD 106d2b067 PTE 0
    [  481.097141] Oops: 0000 [Freescale#1] PREEMPT SMP PTI
    [  481.101980] CPU: 12 PID: 3339 Comm: sudo Tainted: G           OE     5.15.0-rc5+ Freescale#1
    [  481.110840] Hardware name: Intel Corp. GRANTLEY/GRANTLEY, BIOS GRRFCRB1.86B.0276.D07.1605190235 05/19/2016
    [  481.122021] RIP: 0010:dev_xdp_prog_id+0x25/0x40
    [  481.127265] Code: 80 00 00 00 00 0f 1f 44 00 00 89 f6 48 c1 e6 04 48 01 fe 48 8b 86 98 08 00 00 48 85 c0 74 13 48 8b 50 18 31 c0 48 85 d2 74 07 <48> 8b 42 38 8b 40 20 c3 48 8b 96 90 08 00 00 eb e8 66 2e 0f 1f 84
    [  481.148991] RSP: 0018:ffffc90007b63868 EFLAGS: 00010286
    [  481.155034] RAX: 0000000000000000 RBX: ffff889080824000 RCX: 0000000000000000
    [  481.163278] RDX: ffffc9000640f000 RSI: ffff889080824010 RDI: ffff889080824000
    [  481.171527] RBP: ffff888107af7d00 R08: 0000000000000000 R09: ffff88810db5f6e0
    [  481.179776] R10: 0000000000000000 R11: ffff8890885b9988 R12: ffff88810db5f4bc
    [  481.188026] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
    [  481.196276] FS:  00007f5466d5bec0(0000) GS:ffff88903fb00000(0000) knlGS:0000000000000000
    [  481.205633] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [  481.212279] CR2: ffffc9000640f038 CR3: 000000014429c006 CR4: 00000000003706e0
    [  481.220530] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
    [  481.228771] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
    [  481.237029] Call Trace:
    [  481.239856]  rtnl_fill_ifinfo+0x768/0x12e0
    [  481.244602]  rtnl_dump_ifinfo+0x525/0x650
    [  481.249246]  ? __alloc_skb+0xa5/0x280
    [  481.253484]  netlink_dump+0x168/0x3c0
    [  481.257725]  netlink_recvmsg+0x21e/0x3e0
    [  481.262263]  ____sys_recvmsg+0x87/0x170
    [  481.266707]  ? __might_fault+0x20/0x30
    [  481.271046]  ? _copy_from_user+0x66/0xa0
    [  481.275591]  ? iovec_from_user+0xf6/0x1c0
    [  481.280226]  ___sys_recvmsg+0x82/0x100
    [  481.284566]  ? sock_sendmsg+0x5e/0x60
    [  481.288791]  ? __sys_sendto+0xee/0x150
    [  481.293129]  __sys_recvmsg+0x56/0xa0
    [  481.297267]  do_syscall_64+0x3b/0xc0
    [  481.301395]  entry_SYSCALL_64_after_hwframe+0x44/0xae
    [  481.307238] RIP: 0033:0x7f5466f39617
    [  481.311373] Code: 0c 00 f7 d8 64 89 02 48 c7 c0 ff ff ff ff eb bd 0f 1f 00 f3 0f 1e fa 64 8b 04 25 18 00 00 00 85 c0 75 10 b8 2f 00 00 00 0f 05 <48> 3d 00 f0 ff ff 77 51 c3 48 83 ec 28 89 54 24 1c 48 89 74 24 10
    [  481.342944] RSP: 002b:00007ffedc7f4308 EFLAGS: 00000246 ORIG_RAX: 000000000000002f
    [  481.361783] RAX: ffffffffffffffda RBX: 00007ffedc7f5460 RCX: 00007f5466f39617
    [  481.380278] RDX: 0000000000000000 RSI: 00007ffedc7f5360 RDI: 0000000000000003
    [  481.398500] RBP: 00007ffedc7f53f0 R08: 0000000000000000 R09: 000055d556f04d50
    [  481.416463] R10: 0000000000000077 R11: 0000000000000246 R12: 00007ffedc7f5360
    [  481.434131] R13: 00007ffedc7f5350 R14: 00007ffedc7f5344 R15: 0000000000000e98
    [  481.451520] Modules linked in: ice(OE) af_packet binfmt_misc nls_iso8859_1 ipmi_ssif intel_rapl_msr intel_rapl_common x86_pkg_temp_thermal intel_powerclamp mxm_wmi mei_me coretemp mei ipmi_si ipmi_msghandler wmi acpi_pad acpi_power_meter ip_tables x_tables autofs4 crct10dif_pclmul crc32_pclmul ghash_clmulni_intel aesni_intel ahci crypto_simd cryptd libahci lpc_ich [last unloaded: ice]
    [  481.528558] CR2: ffffc9000640f038
    [  481.542041] ---[ end trace d1f24c9ecf5b61c1 ]---
    
    Fix this by only calling ice_vsi_assign_bpf_prog() inside
    ice_prepare_xdp_rings() when current vsi->xdp_prog pointer is NULL.
    This way set_channels() flow will not attempt to swap the vsi->xdp_prog
    pointers with itself.
    
    Also, sprinkle around some comments that provide a reasoning about
    correlation between driver and kernel in terms of bpf_prog refcount.
    
    Fixes: efc2214 ("ice: Add support for XDP")
    Reviewed-by: Alexander Lobakin <alexandr.lobakin@intel.com>
    Signed-off-by: Marta Plantykow <marta.a.plantykow@intel.com>
    Co-developed-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
    Tested-by: Kiran Bhandare <kiranx.bhandare@intel.com>
    Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    maplantykow authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    e65a870 View commit details
    Browse the repository at this point in the history
  72. scsi: core: sysfs: Fix setting device state to SDEV_RUNNING

    [ Upstream commit eb97545 ]
    
    This fixes an issue added in commit 4edd8cd ("scsi: core: sysfs: Fix
    hang when device state is set via sysfs") where if userspace is requesting
    to set the device state to SDEV_RUNNING when the state is already
    SDEV_RUNNING, we return -EINVAL instead of count. The commmit above set ret
    to count for this case, when it should have set it to 0.
    
    Link: https://lore.kernel.org/r/20211120164917.4924-1-michael.christie@oracle.com
    Fixes: 4edd8cd ("scsi: core: sysfs: Fix hang when device state is set via sysfs")
    Reviewed-by: Lee Duncan <lduncan@suse.com>
    Signed-off-by: Mike Christie <michael.christie@oracle.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mikechristie authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    725ba12 View commit details
    Browse the repository at this point in the history
  73. scsi: scsi_debug: Zero clear zones at reset write pointer

    [ Upstream commit 2d62253 ]
    
    When a reset is requested the position of the write pointer is updated but
    the data in the corresponding zone is not cleared. Instead scsi_debug
    returns any data written before the write pointer was reset. This is an
    error and prevents using scsi_debug for stale page cache testing of the
    BLKRESETZONE ioctl.
    
    Zero written data in the zone when resetting the write pointer.
    
    Link: https://lore.kernel.org/r/20211122061223.298890-1-shinichiro.kawasaki@wdc.com
    Fixes: f0d1cf9 ("scsi: scsi_debug: Add ZBC zone commands")
    Reviewed-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
    Acked-by: Douglas Gilbert <dgilbert@interlog.com>
    Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    kawasaki authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    9f540c7 View commit details
    Browse the repository at this point in the history
  74. erofs: fix deadlock when shrink erofs slab

    [ Upstream commit 57bbeac ]
    
    We observed the following deadlock in the stress test under low
    memory scenario:
    
    Thread A                               Thread B
    - erofs_shrink_scan
     - erofs_try_to_release_workgroup
      - erofs_workgroup_try_to_freeze -- A
                                           - z_erofs_do_read_page
                                            - z_erofs_collection_begin
                                             - z_erofs_register_collection
                                              - erofs_insert_workgroup
                                               - xa_lock(&sbi->managed_pslots) -- B
                                               - erofs_workgroup_get
                                                - erofs_wait_on_workgroup_freezed -- A
      - xa_erase
       - xa_lock(&sbi->managed_pslots) -- B
    
    To fix this, it needs to hold xa_lock before freezing the workgroup
    since xarray will be touched then. So let's hold the lock before
    accessing each workgroup, just like what we did with the radix tree
    before.
    
    [ Gao Xiang: Jianhua Hao also reports this issue at
      https://lore.kernel.org/r/b10b85df30694bac8aadfe43537c897a@xiaomi.com ]
    
    Link: https://lore.kernel.org/r/20211118135844.3559-1-huangjianan@oppo.com
    Fixes: 64094a0 ("erofs: convert workstn to XArray")
    Reviewed-by: Chao Yu <chao@kernel.org>
    Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
    Signed-off-by: Huang Jianan <huangjianan@oppo.com>
    Reported-by: Jianhua Hao <haojianhua1@xiaomi.com>
    Signed-off-by: Gao Xiang <xiang@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    hjn-1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    77d9c2e View commit details
    Browse the repository at this point in the history
  75. net/smc: Ensure the active closing peer first closes clcsock

    [ Upstream commit 606a63c ]
    
    The side that actively closed socket, it's clcsock doesn't enter
    TIME_WAIT state, but the passive side does it. It should show the same
    behavior as TCP sockets.
    
    Consider this, when client actively closes the socket, the clcsock in
    server enters TIME_WAIT state, which means the address is occupied and
    won't be reused before TIME_WAIT dismissing. If we restarted server, the
    service would be unavailable for a long time.
    
    To solve this issue, shutdown the clcsock in [A], perform the TCP active
    close progress first, before the passive closed side closing it. So that
    the actively closed side enters TIME_WAIT, not the passive one.
    
    Client                                            |  Server
    close() // client actively close                  |
      smc_release()                                   |
          smc_close_active() // PEERCLOSEWAIT1        |
              smc_close_final() // abort or closed = 1|
                  smc_cdc_get_slot_and_msg_send()     |
              [A]                                     |
                                                      |smc_cdc_msg_recv_action() // ACTIVE
                                                      |  queue_work(smc_close_wq, &conn->close_work)
                                                      |    smc_close_passive_work() // PROCESSABORT or APPCLOSEWAIT1
                                                      |      smc_close_passive_abort_received() // only in abort
                                                      |
                                                      |close() // server recv zero, close
                                                      |  smc_release() // PROCESSABORT or APPCLOSEWAIT1
                                                      |    smc_close_active()
                                                      |      smc_close_abort() or smc_close_final() // CLOSED
                                                      |        smc_cdc_get_slot_and_msg_send() // abort or closed = 1
    smc_cdc_msg_recv_action()                         |    smc_clcsock_release()
      queue_work(smc_close_wq, &conn->close_work)     |      sock_release(tcp) // actively close clc, enter TIME_WAIT
        smc_close_passive_work() // PEERCLOSEWAIT1    |    smc_conn_free()
          smc_close_passive_abort_received() // CLOSED|
          smc_conn_free()                             |
          smc_clcsock_release()                       |
            sock_release(tcp) // passive close clc    |
    
    Link: https://www.spinics.net/lists/netdev/msg780407.html
    Fixes: b38d732 ("smc: socket closing and linkgroup cleanup")
    Signed-off-by: Tony Lu <tonylu@linux.alibaba.com>
    Reviewed-by: Wen Gu <guwen@linux.alibaba.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Tony Lu authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    29e1b57 View commit details
    Browse the repository at this point in the history
  76. mlxsw: Verify the accessed index doesn't exceed the array length

    [ Upstream commit 837ec05 ]
    
    There are few cases in which an array index queried from a fw register,
    is accessed without any validation that it doesn't exceed the array
    length.
    
    Add a proper length validation, so accessing memory past the end of an
    array will be forbidden.
    
    Signed-off-by: Danielle Ratson <danieller@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    daniellerts authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    33d8912 View commit details
    Browse the repository at this point in the history
  77. mlxsw: spectrum: Protect driver from buggy firmware

    [ Upstream commit 63b08b1 ]
    
    When processing port up/down events generated by the device's firmware,
    the driver protects itself from events reported for non-existent local
    ports, but not the CPU port (local port 0), which exists, but lacks a
    netdev.
    
    This can result in a NULL pointer dereference when calling
    netif_carrier_{on,off}().
    
    Fix this by bailing early when processing an event reported for the CPU
    port. Problem was only observed when running on top of a buggy emulator.
    
    Fixes: 28b1987 ("mlxsw: spectrum: Register CPU port with devlink")
    Signed-off-by: Amit Cohen <amcohen@nvidia.com>
    Signed-off-by: Ido Schimmel <idosch@nvidia.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Amit Cohen authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    90d0736 View commit details
    Browse the repository at this point in the history
  78. net: marvell: mvpp2: increase MTU limit when XDP enabled

    [ Upstream commit 7b1b62b ]
    
    Currently mvpp2_xdp_setup won't allow attaching XDP program if
      mtu > ETH_DATA_LEN (1500).
    
    The mvpp2_change_mtu on the other hand checks whether
      MVPP2_RX_PKT_SIZE(mtu) > MVPP2_BM_LONG_PKT_SIZE.
    
    These two checks are semantically different.
    
    Moreover this limit can be increased to MVPP2_MAX_RX_BUF_SIZE, since in
    mvpp2_rx we have
      xdp.data = data + MVPP2_MH_SIZE + MVPP2_SKB_HEADROOM;
      xdp.frame_sz = PAGE_SIZE;
    
    Change the checks to check whether
      mtu > MVPP2_MAX_RX_BUF_SIZE
    
    Fixes: 07dd0a7 ("mvpp2: add basic XDP support")
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    elkablo authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    8889ff8 View commit details
    Browse the repository at this point in the history
  79. nvmet-tcp: fix incomplete data digest send

    [ Upstream commit 102110e ]
    
    Current nvmet_try_send_ddgst() code does not check whether
    all data digest bytes are transmitted, fix this by returning
    -EAGAIN if all data digest bytes are not transmitted.
    
    Fixes: 872d26a ("nvmet-tcp: add NVMe over TCP target driver")
    Signed-off-by: Varun Prakash <varun@chelsio.com>
    Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Varun Prakash authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    ac88cb3 View commit details
    Browse the repository at this point in the history
  80. net/ncsi : Add payload to be 32-bit aligned to fix dropped packets

    [ Upstream commit ac13285 ]
    
    Update NC-SI command handler (both standard and OEM) to take into
    account of payload paddings in allocating skb (in case of payload
    size is not 32-bit aligned).
    
    The checksum field follows payload field, without taking payload
    padding into account can cause checksum being truncated, leading to
    dropped packets.
    
    Fixes: fb4ee67 ("net/ncsi: Add NCSI OEM command support")
    Signed-off-by: Kumar Thangavel <thangavel.k@hcl.com>
    Acked-by: Samuel Mendoza-Jonas <sam@mendozajonas.com>
    Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Kumar Thangavel authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    440bd9f View commit details
    Browse the repository at this point in the history
  81. PM: hibernate: use correct mode for swsusp_close()

    [ Upstream commit cefcf24 ]
    
    Commit 39fbef4 ("PM: hibernate: Get block device exclusively in
    swsusp_check()") changed the opening mode of the block device to
    (FMODE_READ | FMODE_EXCL).
    
    In the corresponding calls to swsusp_close(), the mode is still just
    FMODE_READ which triggers the warning in blkdev_flush_mapping() on
    resume from hibernate.
    
    So, use the mode (FMODE_READ | FMODE_EXCL) also when closing the
    device.
    
    Fixes: 39fbef4 ("PM: hibernate: Get block device exclusively in swsusp_check()")
    Signed-off-by: Thomas Zeitlhofer <thomas.zeitlhofer+lkml@ze-it.at>
    Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Thomas Zeitlhofer authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    f634c75 View commit details
    Browse the repository at this point in the history
  82. drm/amd/display: Set plane update flags for all planes in reset

    [ Upstream commit 21431f7 ]
    
    [Why]
    We're only setting the flags on stream[0]'s planes so this logic fails
    if we have more than one stream in the state.
    
    This can cause a page flip timeout with multiple displays in the
    configuration.
    
    [How]
    Index into the stream_status array using the stream index - it's a 1:1
    mapping.
    
    Fixes: cdaae83 ("drm/amd/display: Handle GPU reset for DC block")
    
    Reviewed-by: Harry Wentland <Harry.Wentland@amd.com>
    Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Nicholas Kazlauskas authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    3187623 View commit details
    Browse the repository at this point in the history
  83. tcp_cubic: fix spurious Hystart ACK train detections for not-cwnd-lim…

    …ited flows
    
    [ Upstream commit 4e1fddc ]
    
    While testing BIG TCP patch series, I was expecting that TCP_RR workloads
    with 80KB requests/answers would send one 80KB TSO packet,
    then being received as a single GRO packet.
    
    It turns out this was not happening, and the root cause was that
    cubic Hystart ACK train was triggering after a few (2 or 3) rounds of RPC.
    
    Hystart was wrongly setting CWND/SSTHRESH to 30, while my RPC
    needed a budget of ~20 segments.
    
    Ideally these TCP_RR flows should not exit slow start.
    
    Cubic Hystart should reset itself at each round, instead of assuming
    every TCP flow is a bulk one.
    
    Note that even after this patch, Hystart can still trigger, depending
    on scheduling artifacts, but at a higher CWND/SSTHRESH threshold,
    keeping optimal TSO packet sizes.
    
    Tested:
    
    ip link set dev eth0 gro_ipv6_max_size 131072 gso_ipv6_max_size 131072
    nstat -n; netperf -H ... -t TCP_RR  -l 5  -- -r 80000,80000 -K cubic; nstat|egrep "Ip6InReceives|Hystart|Ip6OutRequests"
    
    Before:
    
       8605
    Ip6InReceives                   87541              0.0
    Ip6OutRequests                  129496             0.0
    TcpExtTCPHystartTrainDetect     1                  0.0
    TcpExtTCPHystartTrainCwnd       30                 0.0
    
    After:
    
      8760
    Ip6InReceives                   88514              0.0
    Ip6OutRequests                  87975              0.0
    
    Fixes: ae27e98 ("[TCP] CUBIC v2.3")
    Co-developed-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Neal Cardwell <ncardwell@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Cc: Stephen Hemminger <stephen@networkplumber.org>
    Cc: Yuchung Cheng <ycheng@google.com>
    Cc: Soheil Hassas Yeganeh <soheil@google.com>
    Link: https://lore.kernel.org/r/20211123202535.1843771-1-eric.dumazet@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Eric Dumazet authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    c5e4316 View commit details
    Browse the repository at this point in the history
  84. lan743x: fix deadlock in lan743x_phy_link_status_change()

    [ Upstream commit ddb826c ]
    
    Usage of phy_ethtool_get_link_ksettings() in the link status change
    handler isn't needed, and in combination with the referenced change
    it results in a deadlock. Simply remove the call and replace it with
    direct access to phydev->speed. The duplex argument of
    lan743x_phy_update_flowcontrol() isn't used and can be removed.
    
    Fixes: c10a485 ("phy: phy_ethtool_ksettings_get: Lock the phy for consistency")
    Reported-by: Alessandro B Maurici <abmaurici@gmail.com>
    Tested-by: Alessandro B Maurici <abmaurici@gmail.com>
    Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
    Reviewed-by: Andrew Lunn <andrew@lunn.ch>
    Link: https://lore.kernel.org/r/40e27f76-0ba3-dcef-ee32-a78b9df38b0f@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    hkallweit authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    95ba8f0 View commit details
    Browse the repository at this point in the history
  85. net: phylink: Force link down and retrigger resolve on interface change

    [ Upstream commit 80662f4 ]
    
    On PHY state change the phylink_resolve() function can read stale
    information from the MAC and report incorrect link speed and duplex to
    the kernel message log.
    
    Example with a Marvell 88X3310 PHY connected to a SerDes port on Marvell
    88E6393X switch:
    - PHY driver triggers state change due to PHY interface mode being
      changed from 10gbase-r to 2500base-x due to copper change in speed
      from 10Gbps to 2.5Gbps, but the PHY itself either hasn't yet changed
      its interface to the host, or the interrupt about loss of SerDes link
      hadn't arrived yet (there can be a delay of several milliseconds for
      this), so we still think that the 10gbase-r mode is up
    - phylink_resolve()
      - phylink_mac_pcs_get_state()
        - this fills in speed=10g link=up
      - interface mode is updated to 2500base-x but speed is left at 10Gbps
      - phylink_major_config()
        - interface is changed to 2500base-x
      - phylink_link_up()
        - mv88e6xxx_mac_link_up()
          - .port_set_speed_duplex()
            - speed is set to 10Gbps
        - reports "Link is Up - 10Gbps/Full" to dmesg
    
    Afterwards when the interrupt finally arrives for mv88e6xxx, another
    resolve is forced in which we get the correct speed from
    phylink_mac_pcs_get_state(), but since the interface is not being
    changed anymore, we don't call phylink_major_config() but only
    phylink_mac_config(), which does not set speed/duplex anymore.
    
    To fix this, we need to force the link down and trigger another resolve
    on PHY interface change event.
    
    Fixes: 9525ae8 ("phylink: add phylink infrastructure")
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Russell King (Oracle) authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    50162ff View commit details
    Browse the repository at this point in the history
  86. net: phylink: Force retrigger in case of latched link-fail indicator

    [ Upstream commit dbae338 ]
    
    On mv88e6xxx 1G/2.5G PCS, the SerDes register 4.2001.2 has the following
    description:
      This register bit indicates when link was lost since the last
      read. For the current link status, read this register
      back-to-back.
    
    Thus to get current link state, we need to read the register twice.
    
    But doing that in the link change interrupt handler would lead to
    potentially ignoring link down events, which we really want to avoid.
    
    Thus this needs to be solved in phylink's resolve, by retriggering
    another resolve in the event when PCS reports link down and previous
    link was up, and by re-reading PCS state if the previous link was down.
    
    The wrong value is read when phylink requests change from sgmii to
    2500base-x mode, and link won't come up. This fixes the bug.
    
    Fixes: 9525ae8 ("phylink: add phylink infrastructure")
    Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
    Signed-off-by: Marek Behún <kabel@kernel.org>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Russell King (Oracle) authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    3d4937c View commit details
    Browse the repository at this point in the history
  87. net/smc: Fix NULL pointer dereferencing in smc_vlan_by_tcpsk()

    [ Upstream commit 587acad ]
    
    Coverity reports a possible NULL dereferencing problem:
    
    in smc_vlan_by_tcpsk():
    6. returned_null: netdev_lower_get_next returns NULL (checked 29 out of 30 times).
    7. var_assigned: Assigning: ndev = NULL return value from netdev_lower_get_next.
    1623                ndev = (struct net_device *)netdev_lower_get_next(ndev, &lower);
    CID 1468509 (Freescale#1 of 1): Dereference null return value (NULL_RETURNS)
    8. dereference: Dereferencing a pointer that might be NULL ndev when calling is_vlan_dev.
    1624                if (is_vlan_dev(ndev)) {
    
    Remove the manual implementation and use netdev_walk_all_lower_dev() to
    iterate over the lower devices. While on it remove an obsolete function
    parameter comment.
    
    Fixes: cb9d43f ("net/smc: determine vlan_id of stacked net_device")
    Suggested-by: Julian Wiedmann <jwi@linux.ibm.com>
    Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    karstengr authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    c94cbd2 View commit details
    Browse the repository at this point in the history
  88. net/smc: Fix loop in smc_listen

    [ Upstream commit 9ebb0c4 ]
    
    The kernel_listen function in smc_listen will fail when all the available
    ports are occupied.  At this point smc->clcsock->sk->sk_data_ready has
    been changed to smc_clcsock_data_ready.  When we call smc_listen again,
    now both smc->clcsock->sk->sk_data_ready and smc->clcsk_data_ready point
    to the smc_clcsock_data_ready function.
    
    The smc_clcsock_data_ready() function calls lsmc->clcsk_data_ready which
    now points to itself resulting in an infinite loop.
    
    This patch restores smc->clcsock->sk->sk_data_ready with the old value.
    
    Fixes: a60a2b1 ("net/smc: reduce active tcp_listen workers")
    Signed-off-by: Guo DaXing <guodaxing@huawei.com>
    Acked-by: Tony Lu <tonylu@linux.alibaba.com>
    Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Guo DaXing authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    12ceb52 View commit details
    Browse the repository at this point in the history
  89. nvmet: use IOCB_NOWAIT only if the filesystem supports it

    [ Upstream commit c024b22 ]
    
    Submit I/O requests with the IOCB_NOWAIT flag set only if
    the underlying filesystem supports it.
    
    Fixes: 50a909d ("nvmet: use IOCB_NOWAIT for file-ns buffered I/O")
    Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
    Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    maurizio-lombardi authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    f2a58ff View commit details
    Browse the repository at this point in the history
  90. igb: fix netpoll exit with traffic

    [ Upstream commit eaeace6 ]
    
    Oleksandr brought a bug report where netpoll causes trace
    messages in the log on igb.
    
    Danielle brought this back up as still occurring, so we'll try
    again.
    
    [22038.710800] ------------[ cut here ]------------
    [22038.710801] igb_poll+0x0/0x1440 [igb] exceeded budget in poll
    [22038.710802] WARNING: CPU: 12 PID: 40362 at net/core/netpoll.c:155 netpoll_poll_dev+0x18a/0x1a0
    
    As Alex suggested, change the driver to return work_done at the
    exit of napi_poll, which should be safe to do in this driver
    because it is not polling multiple queues in this single napi
    context (multiple queues attached to one MSI-X vector). Several
    other drivers contain the same simple sequence, so I hope
    this will not create new problems.
    
    Fixes: 16eb881 ("igb: Refactor clean_rx_irq to reduce overhead and improve performance")
    Reported-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Reported-by: Danielle Ratson <danieller@nvidia.com>
    Suggested-by: Alexander Duyck <alexander.duyck@gmail.com>
    Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: Oleksandr Natalenko <oleksandr@natalenko.name>
    Tested-by: Danielle Ratson <danieller@nvidia.com>
    Link: https://lore.kernel.org/r/20211123204000.1597971-1-jesse.brandeburg@intel.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jbrandeb authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    5e823db View commit details
    Browse the repository at this point in the history
  91. MIPS: loongson64: fix FTLB configuration

    [ Upstream commit 7db5e9e ]
    
    It turns out that 'decode_configs' -> 'set_ftlb_enable' is called under
    c->cputype unset, which leaves FTLB disabled on BOTH 3A2000 and 3A3000
    
    Fix it by calling "decode_configs" after c->cputype is initialized
    
    Fixes: da1bd29 ("MIPS: Loongson64: Probe CPU features via CPUCFG")
    Signed-off-by: Huang Pei <huangpei@loongson.cn>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mips-hp authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    a6a5d85 View commit details
    Browse the repository at this point in the history
  92. MIPS: use 3-level pgtable for 64KB page size on MIPS_VA_BITS_48

    [ Upstream commit 41ce097 ]
    
    It hangup when booting Loongson 3A1000 with BOTH
    CONFIG_PAGE_SIZE_64KB and CONFIG_MIPS_VA_BITS_48, that it turn
    out to use 2-level pgtable instead of 3-level. 64KB page size
    with 2-level pgtable only cover 42 bits VA, use 3-level pgtable
    to cover all 48 bits VA(55 bits)
    
    Fixes: 1e321fa ("MIPS64: Support of at least 48 bits of SEGBITS)
    Signed-off-by: Huang Pei <huangpei@loongson.cn>
    Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    mips-hp authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    3b6c71c View commit details
    Browse the repository at this point in the history
  93. tls: splice_read: fix record type check

    [ Upstream commit 520493f ]
    
    We don't support splicing control records. TLS 1.3 changes moved
    the record type check into the decrypt if(). The skb may already
    be decrypted and still be an alert.
    
    Note that decrypt_skb_update() is idempotent and updates ctx->decrypted
    so the if() is pointless.
    
    Reorder the check for decryption errors with the content type check
    while touching them. This part is not really a bug, because if
    decryption failed in TLS 1.3 content type will be DATA, and for
    TLS 1.2 it will be correct. Nevertheless its strange to touch output
    before checking if the function has failed.
    
    Fixes: fedf201 ("net: tls: Refactor control message handling on recv")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    kuba-moo authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    2215624 View commit details
    Browse the repository at this point in the history
  94. tls: fix replacing proto_ops

    [ Upstream commit f3911f7 ]
    
    We replace proto_ops whenever TLS is configured for RX. But our
    replacement also overrides sendpage_locked, which will crash
    unless TX is also configured. Similarly we plug both of those
    in for TLS_HW (NIC crypto offload) even tho TLS_HW has a completely
    different implementation for TX.
    
    Last but not least we always plug in something based on inet_stream_ops
    even though a few of the callbacks differ for IPv6 (getname, release,
    bind).
    
    Use a callback building method similar to what we do for struct proto.
    
    Fixes: c46234e ("tls: RX path for ktls")
    Fixes: d4ffb02 ("net/tls: enable sk_msg redirect to tls socket egress")
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    kuba-moo authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    e3509fe View commit details
    Browse the repository at this point in the history
  95. net/sched: sch_ets: don't peek at classes beyond 'nbands'

    [ Upstream commit de6d259 ]
    
    when the number of DRR classes decreases, the round-robin active list can
    contain elements that have already been freed in ets_qdisc_change(). As a
    consequence, it's possible to see a NULL dereference crash, caused by the
    attempt to call cl->qdisc->ops->peek(cl->qdisc) when cl->qdisc is NULL:
    
     BUG: kernel NULL pointer dereference, address: 0000000000000018
     #PF: supervisor read access in kernel mode
     #PF: error_code(0x0000) - not-present page
     PGD 0 P4D 0
     Oops: 0000 [Freescale#1] PREEMPT SMP NOPTI
     CPU: 1 PID: 910 Comm: mausezahn Not tainted 5.16.0-rc1+ Freescale#475
     Hardware name: Red Hat KVM, BIOS 1.11.1-4.module+el8.1.0+4066+0f1aadab 04/01/2014
     RIP: 0010:ets_qdisc_dequeue+0x129/0x2c0 [sch_ets]
     Code: c5 01 41 39 ad e4 02 00 00 0f 87 18 ff ff ff 49 8b 85 c0 02 00 00 49 39 c4 0f 84 ba 00 00 00 49 8b ad c0 02 00 00 48 8b 7d 10 <48> 8b 47 18 48 8b 40 38 0f ae e8 ff d0 48 89 c3 48 85 c0 0f 84 9d
     RSP: 0000:ffffbb36c0b5fdd8 EFLAGS: 00010287
     RAX: ffff956678efed30 RBX: 0000000000000000 RCX: 0000000000000000
     RDX: 0000000000000002 RSI: ffffffff9b938dc9 RDI: 0000000000000000
     RBP: ffff956678efed30 R08: e2f3207fe360129c R09: 0000000000000000
     R10: 0000000000000001 R11: 0000000000000001 R12: ffff956678efeac0
     R13: ffff956678efe800 R14: ffff956611545000 R15: ffff95667ac8f100
     FS:  00007f2aa9120740(0000) GS:ffff95667b800000(0000) knlGS:0000000000000000
     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
     CR2: 0000000000000018 CR3: 000000011070c000 CR4: 0000000000350ee0
     Call Trace:
      <TASK>
      qdisc_peek_dequeued+0x29/0x70 [sch_ets]
      tbf_dequeue+0x22/0x260 [sch_tbf]
      __qdisc_run+0x7f/0x630
      net_tx_action+0x290/0x4c0
      __do_softirq+0xee/0x4f8
      irq_exit_rcu+0xf4/0x130
      sysvec_apic_timer_interrupt+0x52/0xc0
      asm_sysvec_apic_timer_interrupt+0x12/0x20
     RIP: 0033:0x7f2aa7fc9ad4
     Code: b9 ff ff 48 8b 54 24 18 48 83 c4 08 48 89 ee 48 89 df 5b 5d e9 ed fc ff ff 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00 f3 0f 1e fa <53> 48 83 ec 10 48 8b 05 10 64 33 00 48 8b 00 48 85 c0 0f 85 84 00
     RSP: 002b:00007ffe5d33fab8 EFLAGS: 00000202
     RAX: 0000000000000002 RBX: 0000561f72c31460 RCX: 0000561f72c31720
     RDX: 0000000000000002 RSI: 0000561f72c31722 RDI: 0000561f72c31720
     RBP: 000000000000002a R08: 00007ffe5d33fa40 R09: 0000000000000014
     R10: 0000000000000000 R11: 0000000000000246 R12: 0000561f7187e380
     R13: 0000000000000000 R14: 0000000000000000 R15: 0000561f72c31460
      </TASK>
     Modules linked in: sch_ets sch_tbf dummy rfkill iTCO_wdt intel_rapl_msr iTCO_vendor_support intel_rapl_common joydev virtio_balloon lpc_ich i2c_i801 i2c_smbus pcspkr ip_tables xfs libcrc32c crct10dif_pclmul crc32_pclmul crc32c_intel ahci libahci ghash_clmulni_intel serio_raw libata virtio_blk virtio_console virtio_net net_failover failover sunrpc dm_mirror dm_region_hash dm_log dm_mod
     CR2: 0000000000000018
    
    Ensuring that 'alist' was never zeroed [1] was not sufficient, we need to
    remove from the active list those elements that are no more SP nor DRR.
    
    [1] https://lore.kernel.org/netdev/60d274838bf09777f0371253416e8af71360bc08.1633609148.git.dcaratti@redhat.com/
    
    v3: fix race between ets_qdisc_change() and ets_qdisc_dequeue() delisting
        DRR classes beyond 'nbands' in ets_qdisc_change() with the qdisc lock
        acquired, thanks to Cong Wang.
    
    v2: when a NULL qdisc is found in the DRR active list, try to dequeue skb
        from the next list item.
    
    Reported-by: Hangbin Liu <liuhangbin@gmail.com>
    Fixes: dcc68b4 ("net: sch_ets: Add a new Qdisc")
    Signed-off-by: Davide Caratti <dcaratti@redhat.com>
    Link: https://lore.kernel.org/r/7a5c496eed2d62241620bdbb83eb03fb9d571c99.1637762721.git.dcaratti@redhat.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    dcaratti authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    ae2659d View commit details
    Browse the repository at this point in the history
  96. net: vlan: fix underflow for the real_dev refcnt

    [ Upstream commit 01d9cc2 ]
    
    Inject error before dev_hold(real_dev) in register_vlan_dev(),
    and execute the following testcase:
    
    ip link add dev dummy1 type dummy
    ip link add name dummy1.100 link dummy1 type vlan id 100
    ip link del dev dummy1
    
    When the dummy netdevice is removed, we will get a WARNING as following:
    
    =======================================================================
    refcount_t: decrement hit 0; leaking memory.
    WARNING: CPU: 2 PID: 0 at lib/refcount.c:31 refcount_warn_saturate+0xbf/0x1e0
    
    and an endless loop of:
    
    =======================================================================
    unregister_netdevice: waiting for dummy1 to become free. Usage count = -1073741824
    
    That is because dev_put(real_dev) in vlan_dev_free() be called without
    dev_hold(real_dev) in register_vlan_dev(). It makes the refcnt of real_dev
    underflow.
    
    Move the dev_hold(real_dev) to vlan_dev_init() which is the call-back of
    ndo_init(). That makes dev_hold() and dev_put() for vlan's real_dev
    symmetrical.
    
    Fixes: 563bcba ("net: vlan: fix a UAF in vlan_dev_real_dev()")
    Reported-by: Petr Machata <petrm@nvidia.com>
    Suggested-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Link: https://lore.kernel.org/r/20211126015942.2918542-1-william.xuanziyang@huawei.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Ziyang Xuan authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    6e800ee View commit details
    Browse the repository at this point in the history
  97. net/smc: Don't call clcsock shutdown twice when smc shutdown

    [ Upstream commit bacb6c1 ]
    
    When applications call shutdown() with SHUT_RDWR in userspace,
    smc_close_active() calls kernel_sock_shutdown(), and it is called
    twice in smc_shutdown().
    
    This fixes this by checking sk_state before do clcsock shutdown, and
    avoids missing the application's call of smc_shutdown().
    
    Link: https://lore.kernel.org/linux-s390/1f67548e-cbf6-0dce-82b5-10288a4583bd@linux.ibm.com/
    Fixes: 606a63c ("net/smc: Ensure the active closing peer first closes clcsock")
    Signed-off-by: Tony Lu <tonylu@linux.alibaba.com>
    Reviewed-by: Wen Gu <guwen@linux.alibaba.com>
    Acked-by: Karsten Graul <kgraul@linux.ibm.com>
    Link: https://lore.kernel.org/r/20211126024134.45693-1-tonylu@linux.alibaba.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Tony Lu authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    215167d View commit details
    Browse the repository at this point in the history
  98. net: hns3: fix VF RSS failed problem after PF enable multi-TCs

    [ Upstream commit 8d2ad99 ]
    
    When PF is set to multi-TCs and configured mapping relationship between
    priorities and TCs, the hardware will active these settings for this PF
    and its VFs.
    
    In this case when VF just uses one TC and its rx packets contain priority,
    and if the priority is not mapped to TC0, as other TCs of VF is not valid,
    hardware always put this kind of packets to the queue 0. It cause this kind
    of packets of VF can not be used RSS function.
    
    To fix this problem, set tc mode of all unused TCs of VF to the setting of
    TC0, then rx packet with priority which map to unused TC will be direct to
    TC0.
    
    Fixes: e2cb1de ("net: hns3: Add HNS3 VF HCL(Hardware Compatibility Layer) Support")
    Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Guangbin Huang authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    62343da View commit details
    Browse the repository at this point in the history
  99. net: mscc: ocelot: don't downgrade timestamping RX filters in SIOCSHW…

    …TSTAMP
    
    [ Upstream commit 8a07546 ]
    
    The ocelot driver, when asked to timestamp all receiving packets, 1588
    v1 or NTP, says "nah, here's 1588 v2 for you".
    
    According to this discussion:
    https://patchwork.kernel.org/project/netdevbpf/patch/20211104133204.19757-8-martin.kaistra@linutronix.de/#24577647
    drivers that downgrade from a wider request to a narrower response (or
    even a response where the intersection with the request is empty) are
    buggy, and should return -ERANGE instead. This patch fixes that.
    
    Fixes: 4e3b046 ("net: mscc: PTP Hardware Clock (PHC) support")
    Suggested-by: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Acked-by: Richard Cochran <richardcochran@gmail.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    vladimiroltean authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    73115a2 View commit details
    Browse the repository at this point in the history
  100. net: mscc: ocelot: correctly report the timestamping RX filters in et…

    …htool
    
    [ Upstream commit c49a35e ]
    
    The driver doesn't support RX timestamping for non-PTP packets, but it
    declares that it does. Restrict the reported RX filters to PTP v2 over
    L2 and over L4.
    
    Fixes: 4e3b046 ("net: mscc: PTP Hardware Clock (PHC) support")
    Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    vladimiroltean authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    72f2117 View commit details
    Browse the repository at this point in the history
  101. tcp: correctly handle increased zerocopy args struct size

    [ Upstream commit e0fecb2 ]
    
    A prior patch increased the size of struct tcp_zerocopy_receive
    but did not update do_tcp_getsockopt() handling to properly account
    for this.
    
    This patch simply reintroduces content erroneously cut from the
    referenced prior patch that handles the new struct size.
    
    Fixes: 18fb76e ("net-zerocopy: Copy straggler unaligned data for TCP Rx. zerocopy.")
    Signed-off-by: Arjun Roy <arjunroy@google.com>
    Signed-off-by: Eric Dumazet <edumazet@google.com>
    Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    arjunroy authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    71e38a0 View commit details
    Browse the repository at this point in the history
  102. sched/scs: Reset task stack state in bringup_cpu()

    [ Upstream commit dce1ca0 ]
    
    To hot unplug a CPU, the idle task on that CPU calls a few layers of C
    code before finally leaving the kernel. When KASAN is in use, poisoned
    shadow is left around for each of the active stack frames, and when
    shadow call stacks are in use. When shadow call stacks (SCS) are in use
    the task's saved SCS SP is left pointing at an arbitrary point within
    the task's shadow call stack.
    
    When a CPU is offlined than onlined back into the kernel, this stale
    state can adversely affect execution. Stale KASAN shadow can alias new
    stackframes and result in bogus KASAN warnings. A stale SCS SP is
    effectively a memory leak, and prevents a portion of the shadow call
    stack being used. Across a number of hotplug cycles the idle task's
    entire shadow call stack can become unusable.
    
    We previously fixed the KASAN issue in commit:
    
      e1b77c9 ("sched/kasan: remove stale KASAN poison after hotplug")
    
    ... by removing any stale KASAN stack poison immediately prior to
    onlining a CPU.
    
    Subsequently in commit:
    
      f1a0a37 ("sched/core: Initialize the idle task with preemption disabled")
    
    ... the refactoring left the KASAN and SCS cleanup in one-time idle
    thread initialization code rather than something invoked prior to each
    CPU being onlined, breaking both as above.
    
    We fixed SCS (but not KASAN) in commit:
    
      63acd42 ("sched/scs: Reset the shadow stack when idle_task_exit")
    
    ... but as this runs in the context of the idle task being offlined it's
    potentially fragile.
    
    To fix these consistently and more robustly, reset the SCS SP and KASAN
    shadow of a CPU's idle task immediately before we online that CPU in
    bringup_cpu(). This ensures the idle task always has a consistent state
    when it is running, and removes the need to so so when exiting an idle
    task.
    
    Whenever any thread is created, dup_task_struct() will give the task a
    stack which is free of KASAN shadow, and initialize the task's SCS SP,
    so there's no need to specially initialize either for idle thread within
    init_idle(), as this was only necessary to handle hotplug cycles.
    
    I've tested this on arm64 with:
    
    * gcc 11.1.0, defconfig +KASAN_INLINE, KASAN_STACK
    * clang 12.0.0, defconfig +KASAN_INLINE, KASAN_STACK, SHADOW_CALL_STACK
    
    ... offlining and onlining CPUS with:
    
    | while true; do
    |   for C in /sys/devices/system/cpu/cpu*/online; do
    |     echo 0 > $C;
    |     echo 1 > $C;
    |   done
    | done
    
    Fixes: f1a0a37 ("sched/core: Initialize the idle task with preemption disabled")
    Reported-by: Qian Cai <quic_qiancai@quicinc.com>
    Signed-off-by: Mark Rutland <mark.rutland@arm.com>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
    Tested-by: Qian Cai <quic_qiancai@quicinc.com>
    Link: https://lore.kernel.org/lkml/20211115113310.35693-1-mark.rutland@arm.com/
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Mark Rutland authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    e6ee7ab View commit details
    Browse the repository at this point in the history
  103. f2fs: set SBI_NEED_FSCK flag when inconsistent node block found

    [ Upstream commit 6663b13 ]
    
    Inconsistent node block will cause a file fail to open or read,
    which could make the user process crashes or stucks. Let's mark
    SBI_NEED_FSCK flag to trigger a fix at next fsck time. After
    unlinking the corrupted file, the user process could regenerate
    a new one and work correctly.
    
    Signed-off-by: Weichao Guo <guoweichao@oppo.com>
    Reviewed-by: Chao Yu <chao@kernel.org>
    Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    weichao-guo authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    22423c9 View commit details
    Browse the repository at this point in the history
  104. ceph: properly handle statfs on multifs setups

    [ Upstream commit 8cfc0c7 ]
    
    ceph_statfs currently stuffs the cluster fsid into the f_fsid field.
    This was fine when we only had a single filesystem per cluster, but now
    that we have multiples we need to use something that will vary between
    them.
    
    Change ceph_statfs to xor each 32-bit chunk of the fsid (aka cluster id)
    into the lower bits of the statfs->f_fsid. Change the lower bits to hold
    the fscid (filesystem ID within the cluster).
    
    That should give us a value that is guaranteed to be unique between
    filesystems within a cluster, and should minimize the chance of
    collisions between mounts of different clusters.
    
    URL: https://tracker.ceph.com/issues/52812
    Reported-by: Sachin Prabhu <sprabhu@redhat.com>
    Signed-off-by: Jeff Layton <jlayton@kernel.org>
    Reviewed-by: Xiubo Li <xiubli@redhat.com>
    Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    jtlayton authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    c380062 View commit details
    Browse the repository at this point in the history
  105. smb3: do not error on fsync when readonly

    [ Upstream commit 71e6864 ]
    
    Linux allows doing a flush/fsync on a file open for read-only,
    but the protocol does not allow that.  If the file passed in
    on the flush is read-only try to find a writeable handle for
    the same inode, if that is not possible skip sending the
    fsync call to the server to avoid breaking the apps.
    
    Reported-by: Julian Sikorski <belegdol@gmail.com>
    Tested-by: Julian Sikorski <belegdol@gmail.com>
    Suggested-by: Jeremy Allison <jra@samba.org>
    Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
    Signed-off-by: Steve French <stfrench@microsoft.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    Steve French authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    5655b8b View commit details
    Browse the repository at this point in the history
  106. iommu/amd: Clarify AMD IOMMUv2 initialization messages

    commit 717e88a upstream.
    
    The messages printed on the initialization of the AMD IOMMUv2 driver
    have caused some confusion in the past. Clarify the messages to lower
    the confusion in the future.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: Joerg Roedel <jroedel@suse.de>
    Link: https://lore.kernel.org/r/20211123105507.7654-3-joro@8bytes.org
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    joergroedel authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    fbc0514 View commit details
    Browse the repository at this point in the history
  107. vhost/vsock: fix incorrect used length reported to the guest

    commit 49d8c5f upstream.
    
    The "used length" reported by calling vhost_add_used() must be the
    number of bytes written by the device (using "in" buffers).
    
    In vhost_vsock_handle_tx_kick() the device only reads the guest
    buffers (they are all "out" buffers), without writing anything,
    so we must pass 0 as "used length" to comply virtio spec.
    
    Fixes: 433fc58 ("VSOCK: Introduce vhost_vsock.ko")
    Cc: stable@vger.kernel.org
    Reported-by: Halil Pasic <pasic@linux.ibm.com>
    Suggested-by: Jason Wang <jasowang@redhat.com>
    Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
    Link: https://lore.kernel.org/r/20211122163525.294024-2-sgarzare@redhat.com
    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
    Reviewed-by: Halil Pasic <pasic@linux.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    stefano-garzarella authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    4fd0ad0 View commit details
    Browse the repository at this point in the history
  108. tracing: Check pid filtering when creating events

    commit 6cb2065 upstream.
    
    When pid filtering is activated in an instance, all of the events trace
    files for that instance has the PID_FILTER flag set. This determines
    whether or not pid filtering needs to be done on the event, otherwise the
    event is executed as normal.
    
    If pid filtering is enabled when an event is created (via a dynamic event
    or modules), its flag is not updated to reflect the current state, and the
    events are not filtered properly.
    
    Cc: stable@vger.kernel.org
    Fixes: 3fdaf80 ("tracing: Implement event pid filtering")
    Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    rostedt authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    406f2d5 View commit details
    Browse the repository at this point in the history
  109. xen: sync include/xen/interface/io/ring.h with Xen's newest version

    commit 629a5d8 upstream.
    
    Sync include/xen/interface/io/ring.h with Xen's newest version in
    order to get the RING_COPY_RESPONSE() and RING_RESPONSE_PROD_OVERFLOW()
    macros.
    
    Note that this will correct the wrong license info by adding the
    missing original copyright notice.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    b98284a View commit details
    Browse the repository at this point in the history
  110. xen/blkfront: read response from backend only once

    commit 71b6624 upstream.
    
    In order to avoid problems in case the backend is modifying a response
    on the ring page while the frontend has already seen it, just read the
    response into a local buffer in one go and then operate on that buffer
    only.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Roger Pau Monné <roger.pau@citrix.com>
    Link: https://lore.kernel.org/r/20210730103854.12681-2-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    273f04d View commit details
    Browse the repository at this point in the history
  111. xen/blkfront: don't take local copy of a request from the ring page

    commit 8f5a695 upstream.
    
    In order to avoid a malicious backend being able to influence the local
    copy of a request build the request locally first and then copy it to
    the ring page instead of doing it the other way round as today.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Roger Pau Monné <roger.pau@citrix.com>
    Link: https://lore.kernel.org/r/20210730103854.12681-3-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    8e14785 View commit details
    Browse the repository at this point in the history
  112. xen/blkfront: don't trust the backend response data blindly

    commit b94e4b1 upstream.
    
    Today blkfront will trust the backend to send only sane response data.
    In order to avoid privilege escalations or crashes in case of malicious
    backends verify the data to be within expected limits. Especially make
    sure that the response always references an outstanding request.
    
    Introduce a new state of the ring BLKIF_STATE_ERROR which will be
    switched to in case an inconsistency is being detected. Recovering from
    this state is possible only via removing and adding the virtual device
    again (e.g. via a suspend/resume cycle).
    
    Make all warning messages issued due to valid error responses rate
    limited in order to avoid message floods being triggered by a malicious
    backend.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Acked-by: Roger Pau Monné <roger.pau@citrix.com>
    Link: https://lore.kernel.org/r/20210730103854.12681-4-jgross@suse.com
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    1ffb20f View commit details
    Browse the repository at this point in the history
  113. xen/netfront: read response from backend only once

    commit 8446066 upstream.
    
    In order to avoid problems in case the backend is modifying a response
    on the ring page while the frontend has already seen it, just read the
    response into a local buffer in one go and then operate on that buffer
    only.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    f5e4937 View commit details
    Browse the repository at this point in the history
  114. xen/netfront: don't read data from request on the ring page

    commit 162081e upstream.
    
    In order to avoid a malicious backend being able to influence the local
    processing of a request build the request locally first and then copy
    it to the ring page. Any reading from the request influencing the
    processing in the frontend needs to be done on the local instance.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    e17ee04 View commit details
    Browse the repository at this point in the history
  115. xen/netfront: disentangle tx_skb_freelist

    commit 21631d2 upstream.
    
    The tx_skb_freelist elements are in a single linked list with the
    request id used as link reference. The per element link field is in a
    union with the skb pointer of an in use request.
    
    Move the link reference out of the union in order to enable a later
    reuse of it for requests which need a populated skb pointer.
    
    Rename add_id_to_freelist() and get_id_from_freelist() to
    add_id_to_list() and get_id_from_list() in order to prepare using
    those for other lists as well. Define ~0 as value to indicate the end
    of a list and place that value into the link for a request not being
    on the list.
    
    When freeing a skb zero the skb pointer in the request. Use a NULL
    value of the skb pointer instead of skb_entry_is_link() for deciding
    whether a request has a skb linked to it.
    
    Remove skb_entry_set_link() and open code it instead as it is really
    trivial now.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    334b0f2 View commit details
    Browse the repository at this point in the history
  116. xen/netfront: don't trust the backend response data blindly

    commit a884daa upstream.
    
    Today netfront will trust the backend to send only sane response data.
    In order to avoid privilege escalations or crashes in case of malicious
    backends verify the data to be within expected limits. Especially make
    sure that the response always references an outstanding request.
    
    Note that only the tx queue needs special id handling, as for the rx
    queue the id is equal to the index in the ring page.
    
    Introduce a new indicator for the device whether it is broken and let
    the device stop working when it is set. Set this indicator in case the
    backend sets any weird data.
    
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    1c5f722 View commit details
    Browse the repository at this point in the history
  117. tty: hvc: replace BUG_ON() with negative return value

    commit e679004 upstream.
    
    Xen frontends shouldn't BUG() in case of illegal data received from
    their backends. So replace the BUG_ON()s when reading illegal data from
    the ring page with negative return values.
    
    Reviewed-by: Jan Beulich <jbeulich@suse.com>
    Signed-off-by: Juergen Gross <jgross@suse.com>
    Link: https://lore.kernel.org/r/20210707091045.460-1-jgross@suse.com
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    jgross1 authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    a94e4a7 View commit details
    Browse the repository at this point in the history
  118. s390/mm: validate VMA in PGSTE manipulation functions

    commit fe3d100 upstream.
    
    We should not walk/touch page tables outside of VMA boundaries when
    holding only the mmap sem in read mode. Evil user space can modify the
    VMA layout just before this function runs and e.g., trigger races with
    page table removal code since commit dd2283f ("mm: mmap: zap pages
    with read mmap_sem in munmap"). gfn_to_hva() will only translate using
    KVM memory regions, but won't validate the VMA.
    
    Further, we should not allocate page tables outside of VMA boundaries: if
    evil user space decides to map hugetlbfs to these ranges, bad things will
    happen because we suddenly have PTE or PMD page tables where we
    shouldn't have them.
    
    Similarly, we have to check if we suddenly find a hugetlbfs VMA, before
    calling get_locked_pte().
    
    Fixes: 2d42f94 ("s390/kvm: Add PGSTE manipulation functions")
    Signed-off-by: David Hildenbrand <david@redhat.com>
    Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
    Acked-by: Heiko Carstens <hca@linux.ibm.com>
    Link: https://lore.kernel.org/r/20210909162248.14969-4-david@redhat.com
    Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    davidhildenbrand authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    aa20e96 View commit details
    Browse the repository at this point in the history
  119. shm: extend forced shm destroy to support objects from several IPC nses

    commit 85b6d24 upstream.
    
    Currently, the exit_shm() function not designed to work properly when
    task->sysvshm.shm_clist holds shm objects from different IPC namespaces.
    
    This is a real pain when sysctl kernel.shm_rmid_forced = 1, because it
    leads to use-after-free (reproducer exists).
    
    This is an attempt to fix the problem by extending exit_shm mechanism to
    handle shm's destroy from several IPC ns'es.
    
    To achieve that we do several things:
    
    1. add a namespace (non-refcounted) pointer to the struct shmid_kernel
    
    2. during new shm object creation (newseg()/shmget syscall) we
       initialize this pointer by current task IPC ns
    
    3. exit_shm() fully reworked such that it traverses over all shp's in
       task->sysvshm.shm_clist and gets IPC namespace not from current task
       as it was before but from shp's object itself, then call
       shm_destroy(shp, ns).
    
    Note: We need to be really careful here, because as it was said before
    (1), our pointer to IPC ns non-refcnt'ed.  To be on the safe side we
    using special helper get_ipc_ns_not_zero() which allows to get IPC ns
    refcounter only if IPC ns not in the "state of destruction".
    
    Q/A
    
    Q: Why can we access shp->ns memory using non-refcounted pointer?
    A: Because shp object lifetime is always shorther than IPC namespace
       lifetime, so, if we get shp object from the task->sysvshm.shm_clist
       while holding task_lock(task) nobody can steal our namespace.
    
    Q: Does this patch change semantics of unshare/setns/clone syscalls?
    A: No. It's just fixes non-covered case when process may leave IPC
       namespace without getting task->sysvshm.shm_clist list cleaned up.
    
    Link: https://lkml.kernel.org/r/67bb03e5-f79c-1815-e2bf-949c67047418@colorfullife.com
    Link: https://lkml.kernel.org/r/20211109151501.4921-1-manfred@colorfullife.com
    Fixes: ab602f7 ("shm: make exit_shm work proportional to task activity")
    Co-developed-by: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Manfred Spraul <manfred@colorfullife.com>
    Signed-off-by: Alexander Mikhalitsyn <alexander.mikhalitsyn@virtuozzo.com>
    Cc: "Eric W. Biederman" <ebiederm@xmission.com>
    Cc: Davidlohr Bueso <dave@stgolabs.net>
    Cc: Greg KH <gregkh@linuxfoundation.org>
    Cc: Andrei Vagin <avagin@gmail.com>
    Cc: Pavel Tikhomirov <ptikhomirov@virtuozzo.com>
    Cc: Vasily Averin <vvs@virtuozzo.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    mihalicyn authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    a15261d View commit details
    Browse the repository at this point in the history
  120. net: stmmac: platform: fix build warning when with !CONFIG_PM_SLEEP

    commit 2a48d96 upstream.
    
    Use __maybe_unused for noirq_suspend()/noirq_resume() hooks to avoid
    build warning with !CONFIG_PM_SLEEP:
    
    >> drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:796:12: error: 'stmmac_pltfr_noirq_resume' defined but not used [-Werror=unused-function]
         796 | static int stmmac_pltfr_noirq_resume(struct device *dev)
             |            ^~~~~~~~~~~~~~~~~~~~~~~~~
    >> drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:775:12: error: 'stmmac_pltfr_noirq_suspend' defined but not used [-Werror=unused-function]
         775 | static int stmmac_pltfr_noirq_suspend(struct device *dev)
             |            ^~~~~~~~~~~~~~~~~~~~~~~~~~
       cc1: all warnings being treated as errors
    
    Fixes: 276aae3 ("net: stmmac: fix system hang caused by eee_ctrl_timer during suspend/resume")
    Reported-by: kernel test robot <lkp@intel.com>
    Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Joakim Zhang authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    98b0275 View commit details
    Browse the repository at this point in the history
  121. drm/amdgpu/gfx9: switch to golden tsc registers for renoir+

    commit 53af98c upstream.
    
    Renoir and newer gfx9 APUs have new TSC register that is
    not part of the gfxoff tile, so it can be read without
    needing to disable gfx off.
    
    Acked-by: Luben Tuikov <luben.tuikov@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    alexdeucher authored and gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    45b42cd View commit details
    Browse the repository at this point in the history
  122. Linux 5.10.83

    Link: https://lore.kernel.org/r/20211129181711.642046348@linuxfoundation.org
    Tested-by: Shuah Khan <skhan@linuxfoundation.org>
    Tested-by: Hulk Robot <hulkrobot@huawei.com>
    Tested-by: Florian Fainelli <f.fainelli@gmail.com>
    Tested-by: Linux Kernel Functional Testing <lkft@linaro.org>
    Tested-by: Jon Hunter <jonathanh@nvidia.com>
    Tested-by: Fox Chen <foxhlchen@gmail.com>
    Tested-by: Pavel Machek (CIP) <pavel@denx.de>
    Tested-by: Guenter Roeck <linux@roeck-us.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    gregkh committed Dec 1, 2021
    Configuration menu
    Copy the full SHA
    a324ad7 View commit details
    Browse the repository at this point in the history

Commits on Dec 2, 2021

  1. Merge tag 'v5.10.83' into 5.10-2.1.x-imx

    This is the 5.10.83 stable release
    
    Conflicts:
    - drivers/mmc/host/sdhci-esdhc-imx.c:
    Fix merge conflict of upstream commit 6319570 ("mmc: sdhci-esdhc-imx:
    disable CMDQ support") to NXP tree.
    
    - drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c:
    - drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:
    Pick NXP version of both conflicting file as following upstream
    commits are covered in NXP tree:
    ----
    98b0275 ("net: stmmac: platform: fix build warning when with !CONFIG_PM_SLEEP")
    dc2f7e9 ("net: stmmac: retain PTP clock time during SIOCSHWTSTAMP ioctls")
    79068e6 ("net: stmmac: fix system hang caused by eee_ctrl_timer during suspend/resume")
    ----
    
    Signed-off-by: Andrey Zhizhikin <andrey.zhizhikin@leica-geosystems.com>
    zandrey committed Dec 2, 2021
    Configuration menu
    Copy the full SHA
    78fdc9f View commit details
    Browse the repository at this point in the history