Skip to content
  1. Dec 17, 2021
    • Mike Rapoport's avatar
      memblock: ensure there is no overflow in memblock_overlaps_region() · 492f4d3c
      Mike Rapoport authored
      commit 023accf5
      
       upstream.
      
      There maybe an overflow in memblock_overlaps_region() if it is called with
      base and size such that
      
      	base + size > PHYS_ADDR_MAX
      
      Make sure that memblock_overlaps_region() caps the size to prevent such
      overflow and remove now duplicated call to memblock_cap_size() from
      memblock_is_region_reserved().
      
      Signed-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
      Tested-by: default avatarTony Lindgren <tony@atomide.com>
      Link: https://lore.kernel.org/lkml/20210630071211.21011-1-rppt@kernel.org/
      
      
      Signed-off-by: default avatarMark-PK Tsai <mark-pk.tsai@mediatek.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      492f4d3c
    • Mike Rapoport's avatar
      memblock: align freed memory map on pageblock boundaries with SPARSEMEM · bdca9647
      Mike Rapoport authored
      commit f921f53e
      
       upstream.
      
      When CONFIG_SPARSEMEM=y the ranges of the memory map that are freed are not
      aligned to the pageblock boundaries which breaks assumptions about
      homogeneity of the memory map throughout core mm code.
      
      Make sure that the freed memory map is always aligned on pageblock
      boundaries regardless of the memory model selection.
      
      Signed-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
      Tested-by: default avatarTony Lindgren <tony@atomide.com>
      Link: https://lore.kernel.org/lkml/20210630071211.21011-1-rppt@kernel.org/
      
      
      [backport upstream modification in mm/memblock.c to arch/arm/mm/init.c]
      Signed-off-by: default avatarMark-PK Tsai <mark-pk.tsai@mediatek.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      bdca9647
    • Mike Rapoport's avatar
      memblock: free_unused_memmap: use pageblock units instead of MAX_ORDER · 60111b30
      Mike Rapoport authored
      commit e2a86800
      
       upstream.
      
      The code that frees unused memory map uses rounds start and end of the
      holes that are freed to MAX_ORDER_NR_PAGES to preserve continuity of the
      memory map for MAX_ORDER regions.
      
      Lots of core memory management functionality relies on homogeneity of the
      memory map within each pageblock which size may differ from MAX_ORDER in
      certain configurations.
      
      Although currently, for the architectures that use free_unused_memmap(),
      pageblock_order and MAX_ORDER are equivalent, it is cleaner to have common
      notation thought mm code.
      
      Replace MAX_ORDER_NR_PAGES with pageblock_nr_pages and update the comments
      to make it more clear why the alignment to pageblock boundaries is
      required.
      
      Signed-off-by: default avatarMike Rapoport <rppt@linux.ibm.com>
      Tested-by: default avatarTony Lindgren <tony@atomide.com>
      Link: https://lore.kernel.org/lkml/20210630071211.21011-1-rppt@kernel.org/
      
      
      [backport upstream modification in mm/memblock.c to arch/arm/mm/init.c]
      Signed-off-by: default avatarMark-PK Tsai <mark-pk.tsai@mediatek.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      60111b30
    • Armin Wolf's avatar
      hwmon: (dell-smm) Fix warning on /proc/i8k creation error · 3e8e2728
      Armin Wolf authored
      commit dbd3e6ea upstream.
      
      The removal function is called regardless of whether
      /proc/i8k was created successfully or not, the later
      causing a WARN() on module removal.
      Fix that by only registering the removal function
      if /proc/i8k was created successfully.
      
      Tested on a Inspiron 3505.
      
      Fixes: 039ae585
      
       ("hwmon: Allow to compile dell-smm-hwmon driver without /proc/i8k")
      Signed-off-by: default avatarArmin Wolf <W_Armin@gmx.de>
      Acked-by: default avatarPali Rohár <pali@kernel.org>
      Link: https://lore.kernel.org/r/20211112171440.59006-1-W_Armin@gmx.de
      
      
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3e8e2728
    • Bui Quang Minh's avatar
      bpf: Fix integer overflow in argument calculation for bpf_map_area_alloc · f6f1d191
      Bui Quang Minh authored
      commit 7dd5d437 upstream.
      
      In 32-bit architecture, the result of sizeof() is a 32-bit integer so
      the expression becomes the multiplication between 2 32-bit integer which
      can potentially leads to integer overflow. As a result,
      bpf_map_area_alloc() allocates less memory than needed.
      
      Fix this by casting 1 operand to u64.
      
      Fixes: 0d2c4f96 ("bpf: Eliminate rlimit-based memory accounting for sockmap and sockhash maps")
      Fixes: 99c51064 ("devmap: Use bpf_map_area_alloc() for allocating hash buckets")
      Fixes: 546ac1ff
      
       ("bpf: add devmap, a map for storing net device references")
      Signed-off-by: default avatarBui Quang Minh <minhquangbui99@gmail.com>
      Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Link: https://lore.kernel.org/bpf/20210613143440.71975-1-minhquangbui99@gmail.com
      
      
      Signed-off-by: default avatarConnor O'Brien <connoro@google.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f6f1d191
    • Ondrej Mosnacek's avatar
      selinux: fix race condition when computing ocontext SIDs · b06b1f46
      Ondrej Mosnacek authored
      commit cbfcd13b upstream.
      
      Current code contains a lot of racy patterns when converting an
      ocontext's context structure to an SID. This is being done in a "lazy"
      fashion, such that the SID is looked up in the SID table only when it's
      first needed and then cached in the "sid" field of the ocontext
      structure. However, this is done without any locking or memory barriers
      and is thus unsafe.
      
      Between commits 24ed7fda ("selinux: use separate table for initial
      SID lookup") and 66f8e2f0 ("selinux: sidtab reverse lookup hash
      table"), this race condition lead to an actual observable bug, because a
      pointer to the shared sid field was passed directly to
      sidtab_context_to_sid(), which was using this location to also store an
      intermediate value, which could have been read by other threads and
      interpreted as an SID. In practice this caused e.g. new mounts to get a
      wrong (seemingly random) filesystem context, leading to strange denials.
      This bug has been spotted in the wild at least twice, see [1] and [2].
      
      Fix the race condition by making all the racy functions use a common
      helper that ensures the ocontext::sid accesses are made safely using the
      appropriate SMP constructs.
      
      Note that security_netif_sid() was populating the sid field of both
      contexts stored in the ocontext, but only the first one was actually
      used. The SELinux wiki's documentation on the "netifcon" policy
      statement [3] suggests that using only the first context is intentional.
      I kept only the handling of the first context here, as there is really
      no point in doing the SID lookup for the unused one.
      
      I wasn't able to reproduce the bug mentioned above on any kernel that
      includes commit 66f8e2f0, even though it has been reported that the
      issue occurs with that commit, too, just less frequently. Thus, I wasn't
      able to verify that this patch fixes the issue, but it makes sense to
      avoid the race condition regardless.
      
      [1] https://github.com/containers/container-selinux/issues/89
      [2] https://lists.fedoraproject.org/archives/list/selinux@lists.fedoraproject.org/thread/6DMTAMHIOAOEMUAVTULJD45JZU7IBAFM/
      [3] https://selinuxproject.org/page/NetworkStatements#netifcon
      
      
      
      Cc: stable@vger.kernel.org
      Cc: Xinjie Zheng <xinjie@google.com>
      Reported-by: default avatarSujithra Periasamy <sujithra@google.com>
      Fixes: 1da177e4
      
       ("Linux-2.6.12-rc2")
      Signed-off-by: default avatarOndrej Mosnacek <omosnace@redhat.com>
      Signed-off-by: default avatarPaul Moore <paul@paul-moore.com>
      [vijayb: Backport contextual differences are due to v5.10 RCU related
       changes are not in 5.4]
      Signed-off-by: default avatarVijay Balakrishna <vijayb@linux.microsoft.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b06b1f46
    • Sean Christopherson's avatar
      KVM: x86: Ignore sparse banks size for an "all CPUs", non-sparse IPI req · 2fb8e426
      Sean Christopherson authored
      commit 3244867a upstream.
      
      Do not bail early if there are no bits set in the sparse banks for a
      non-sparse, a.k.a. "all CPUs", IPI request.  Per the Hyper-V spec, it is
      legal to have a variable length of '0', e.g. VP_SET's BankContents in
      this case, if the request can be serviced without the extra info.
      
        It is possible that for a given invocation of a hypercall that does
        accept variable sized input headers that all the header input fits
        entirely within the fixed size header. In such cases the variable sized
        input header is zero-sized and the corresponding bits in the hypercall
        input should be set to zero.
      
      Bailing early results in KVM failing to send IPIs to all CPUs as expected
      by the guest.
      
      Fixes: 214ff83d
      
       ("KVM: x86: hyperv: implement PV IPI send hypercalls")
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
      Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
      Message-Id: <20211207220926.718794-2-seanjc@google.com>
      Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
      Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2fb8e426
    • Chen Jun's avatar
      tracing: Fix a kmemleak false positive in tracing_map · 46735995
      Chen Jun authored
      [ Upstream commit f25667e5 ]
      
      Doing the command:
        echo 'hist:key=common_pid.execname,common_timestamp' > /sys/kernel/debug/tracing/events/xxx/trigger
      
      Triggers many kmemleak reports:
      
      unreferenced object 0xffff0000c7ea4980 (size 128):
        comm "bash", pid 338, jiffies 4294912626 (age 9339.324s)
        hex dump (first 32 bytes):
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<00000000f3469921>] kmem_cache_alloc_trace+0x4c0/0x6f0
          [<0000000054ca40c3>] hist_trigger_elt_data_alloc+0x140/0x178
          [<00000000633bd154>] tracing_map_init+0x1f8/0x268
          [<000000007e814ab9>] event_hist_trigger_func+0xca0/0x1ad0
          [<00000000bf8520ed>] trigger_process_regex+0xd4/0x128
          [<00000000f549355a>] event_trigger_write+0x7c/0x120
          [<00000000b80f898d>] vfs_write+0xc4/0x380
          [<00000000823e1055>] ksys_write+0x74/0xf8
          [<000000008a9374aa>] __arm64_sys_write+0x24/0x30
          [<0000000087124017>] do_el0_svc+0x88/0x1c0
          [<00000000efd0dcd1>] el0_svc+0x1c/0x28
          [<00000000dbfba9b3>] el0_sync_handler+0x88/0xc0
          [<00000000e7399680>] el0_sync+0x148/0x180
      unreferenced object 0xffff0000c7ea4980 (size 128):
        comm "bash", pid 338, jiffies 4294912626 (age 9339.324s)
        hex dump (first 32 bytes):
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        backtrace:
          [<00000000f3469921>] kmem_cache_alloc_trace+0x4c0/0x6f0
          [<0000000054ca40c3>] hist_trigger_elt_data_alloc+0x140/0x178
          [<00000000633bd154>] tracing_map_init+0x1f8/0x268
          [<000000007e814ab9>] event_hist_trigger_func+0xca0/0x1ad0
          [<00000000bf8520ed>] trigger_process_regex+0xd4/0x128
          [<00000000f549355a>] event_trigger_write+0x7c/0x120
          [<00000000b80f898d>] vfs_write+0xc4/0x380
          [<00000000823e1055>] ksys_write+0x74/0xf8
          [<000000008a9374aa>] __arm64_sys_write+0x24/0x30
          [<0000000087124017>] do_el0_svc+0x88/0x1c0
          [<00000000efd0dcd1>] el0_svc+0x1c/0x28
          [<00000000dbfba9b3>] el0_sync_handler+0x88/0xc0
          [<00000000e7399680>] el0_sync+0x148/0x180
      
      The reason is elts->pages[i] is alloced by get_zeroed_page.
      and kmemleak will not scan the area alloced by get_zeroed_page.
      The address stored in elts->pages will be regarded as leaked.
      
      That is, the elts->pages[i] will have pointers loaded onto it as well, and
      without telling kmemleak about it, those pointers will look like memory
      without a reference.
      
      To fix this, call kmemleak_alloc to tell kmemleak to scan elts->pages[i]
      
      Link: https://lkml.kernel.org/r/20211124140801.87121-1-chenjun102@huawei.com
      
      
      
      Signed-off-by: default avatarChen Jun <chenjun102@huawei.com>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      46735995
    • Perry Yuan's avatar
      drm/amd/display: add connector type check for CRC source set · fb8cd2b3
      Perry Yuan authored
      [ Upstream commit 2da34b7b ]
      
      [Why]
      IGT bypass test will set crc source as DPRX,and display DM didn`t check
      connection type, it run the test on the HDMI connector ,then the kernel
      will be crashed because aux->transfer is set null for HDMI connection.
      This patch will skip the invalid connection test and fix kernel crash issue.
      
      [How]
      Check the connector type while setting the pipe crc source as DPRX or
      auto,if the type is not DP or eDP, the crtc crc source will not be set
      and report error code to IGT test,IGT will show the this subtest as no
      valid crtc/connector combinations found.
      
      116.779714] [IGT] amd_bypass: starting subtest 8bpc-bypass-mode
      [ 117.730996] BUG: kernel NULL pointer dereference, address: 0000000000000000
      [ 117.731001] #PF: supervisor instruction fetch in kernel mode
      [ 117.731003] #PF: error_code(0x0010) - not-present page
      [ 117.731004] PGD 0 P4D 0
      [ 117.731006] Oops: 0010 [#1] SMP NOPTI
      [ 117.731009] CPU: 11 PID: 2428 Comm: amd_bypass Tainted: G OE 5.11.0-34-generic #36~20.04.1-Ubuntu
      [ 117.731011] Hardware name: AMD CZN/, BIOS AB.FD 09/07/2021
      [ 117.731012] RIP: 0010:0x0
      [ 117.731015] Code: Unable to access opcode bytes at RIP 0xffffffffffffffd6.
      [ 117.731016] RSP: 0018:ffffa8d64225bab8 EFLAGS: 00010246
      [ 117.731017] RAX: 0000000000000000 RBX: 0000000000000020 RCX: ffffa8d64225bb5e
      [ 117.731018] RDX: ffff93151d921880 RSI: ffffa8d64225bac8 RDI: ffff931511a1a9d8
      [ 117.731022] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 117.731023] CR2: ffffffffffffffd6 CR3: 000000010d5a4000 CR4: 0000000000750ee0
      [ 117.731023] PKRU: 55555554
      [ 117.731024] Call Trace:
      [ 117.731027] drm_dp_dpcd_access+0x72/0x110 [drm_kms_helper]
      [ 117.731036] drm_dp_dpcd_read+0xb7/0xf0 [drm_kms_helper]
      [ 117.731040] drm_dp_start_crc+0x38/0xb0 [drm_kms_helper]
      [ 117.731047] amdgpu_dm_crtc_set_crc_source+0x1ae/0x3e0 [amdgpu]
      [ 117.731149] crtc_crc_open+0x174/0x220 [drm]
      [ 117.731162] full_proxy_open+0x168/0x1f0
      [ 117.731165] ? open_proxy_open+0x100/0x100
      
      BugLink: https://gitlab.freedesktop.org/drm/amd/-/issues/1546
      
      
      Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
      Reviewed-by: default avatarRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
      Signed-off-by: default avatarPerry Yuan <Perry.Yuan@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      fb8cd2b3
    • Mustapha Ghaddar's avatar
      drm/amd/display: Fix for the no Audio bug with Tiled Displays · 8fc2f28e
      Mustapha Ghaddar authored
      [ Upstream commit 5ceaebcd
      
       ]
      
      [WHY]
      It seems like after a series of plug/unplugs we end up in a situation
      where tiled display doesnt support Audio.
      
      [HOW]
      The issue seems to be related to when we check streams changed after an
      HPD, we should be checking the audio_struct as well to see if any of its
      values changed.
      
      Reviewed-by: default avatarJun Lei <Jun.Lei@amd.com>
      Acked-by: default avatarBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
      Signed-off-by: default avatarMustapha Ghaddar <mustapha.ghaddar@amd.com>
      Tested-by: default avatarDaniel Wheeler <daniel.wheeler@amd.com>
      Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      8fc2f28e
    • Harshit Mogalapalli's avatar
      net: netlink: af_netlink: Prevent empty skb by adding a check on len. · c0315e93
      Harshit Mogalapalli authored
      [ Upstream commit f123cffd
      
       ]
      
      Adding a check on len parameter to avoid empty skb. This prevents a
      division error in netem_enqueue function which is caused when skb->len=0
      and skb->data_len=0 in the randomized corruption step as shown below.
      
      skb->data[prandom_u32() % skb_headlen(skb)] ^= 1<<(prandom_u32() % 8);
      
      Crash Report:
      [  343.170349] netdevsim netdevsim0 netdevsim3: set [1, 0] type 2 family
      0 port 6081 - 0
      [  343.216110] netem: version 1.3
      [  343.235841] divide error: 0000 [#1] PREEMPT SMP KASAN NOPTI
      [  343.236680] CPU: 3 PID: 4288 Comm: reproducer Not tainted 5.16.0-rc1+
      [  343.237569] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
      BIOS 1.11.0-2.el7 04/01/2014
      [  343.238707] RIP: 0010:netem_enqueue+0x1590/0x33c0 [sch_netem]
      [  343.239499] Code: 89 85 58 ff ff ff e8 5f 5d e9 d3 48 8b b5 48 ff ff
      ff 8b 8d 50 ff ff ff 8b 85 58 ff ff ff 48 8b bd 70 ff ff ff 31 d2 2b 4f
      74 <f7> f1 48 b8 00 00 00 00 00 fc ff df 49 01 d5 4c 89 e9 48 c1 e9 03
      [  343.241883] RSP: 0018:ffff88800bcd7368 EFLAGS: 00010246
      [  343.242589] RAX: 00000000ba7c0a9c RBX: 0000000000000001 RCX:
      0000000000000000
      [  343.243542] RDX: 0000000000000000 RSI: ffff88800f8edb10 RDI:
      ffff88800f8eda40
      [  343.244474] RBP: ffff88800bcd7458 R08: 0000000000000000 R09:
      ffffffff94fb8445
      [  343.245403] R10: ffffffff94fb8336 R11: ffffffff94fb8445 R12:
      0000000000000000
      [  343.246355] R13: ffff88800a5a7000 R14: ffff88800a5b5800 R15:
      0000000000000020
      [  343.247291] FS:  00007fdde2bd7700(0000) GS:ffff888109780000(0000)
      knlGS:0000000000000000
      [  343.248350] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  343.249120] CR2: 00000000200000c0 CR3: 000000000ef4c000 CR4:
      00000000000006e0
      [  343.250076] Call Trace:
      [  343.250423]  <TASK>
      [  343.250713]  ? memcpy+0x4d/0x60
      [  343.251162]  ? netem_init+0xa0/0xa0 [sch_netem]
      [  343.251795]  ? __sanitizer_cov_trace_pc+0x21/0x60
      [  343.252443]  netem_enqueue+0xe28/0x33c0 [sch_netem]
      [  343.253102]  ? stack_trace_save+0x87/0xb0
      [  343.253655]  ? filter_irq_stacks+0xb0/0xb0
      [  343.254220]  ? netem_init+0xa0/0xa0 [sch_netem]
      [  343.254837]  ? __kasan_check_write+0x14/0x20
      [  343.255418]  ? _raw_spin_lock+0x88/0xd6
      [  343.255953]  dev_qdisc_enqueue+0x50/0x180
      [  343.256508]  __dev_queue_xmit+0x1a7e/0x3090
      [  343.257083]  ? netdev_core_pick_tx+0x300/0x300
      [  343.257690]  ? check_kcov_mode+0x10/0x40
      [  343.258219]  ? _raw_spin_unlock_irqrestore+0x29/0x40
      [  343.258899]  ? __kasan_init_slab_obj+0x24/0x30
      [  343.259529]  ? setup_object.isra.71+0x23/0x90
      [  343.260121]  ? new_slab+0x26e/0x4b0
      [  343.260609]  ? kasan_poison+0x3a/0x50
      [  343.261118]  ? kasan_unpoison+0x28/0x50
      [  343.261637]  ? __kasan_slab_alloc+0x71/0x90
      [  343.262214]  ? memcpy+0x4d/0x60
      [  343.262674]  ? write_comp_data+0x2f/0x90
      [  343.263209]  ? __kasan_check_write+0x14/0x20
      [  343.263802]  ? __skb_clone+0x5d6/0x840
      [  343.264329]  ? __sanitizer_cov_trace_pc+0x21/0x60
      [  343.264958]  dev_queue_xmit+0x1c/0x20
      [  343.265470]  netlink_deliver_tap+0x652/0x9c0
      [  343.266067]  netlink_unicast+0x5a0/0x7f0
      [  343.266608]  ? netlink_attachskb+0x860/0x860
      [  343.267183]  ? __sanitizer_cov_trace_pc+0x21/0x60
      [  343.267820]  ? write_comp_data+0x2f/0x90
      [  343.268367]  netlink_sendmsg+0x922/0xe80
      [  343.268899]  ? netlink_unicast+0x7f0/0x7f0
      [  343.269472]  ? __sanitizer_cov_trace_pc+0x21/0x60
      [  343.270099]  ? write_comp_data+0x2f/0x90
      [  343.270644]  ? netlink_unicast+0x7f0/0x7f0
      [  343.271210]  sock_sendmsg+0x155/0x190
      [  343.271721]  ____sys_sendmsg+0x75f/0x8f0
      [  343.272262]  ? kernel_sendmsg+0x60/0x60
      [  343.272788]  ? write_comp_data+0x2f/0x90
      [  343.273332]  ? write_comp_data+0x2f/0x90
      [  343.273869]  ___sys_sendmsg+0x10f/0x190
      [  343.274405]  ? sendmsg_copy_msghdr+0x80/0x80
      [  343.274984]  ? slab_post_alloc_hook+0x70/0x230
      [  343.275597]  ? futex_wait_setup+0x240/0x240
      [  343.276175]  ? security_file_alloc+0x3e/0x170
      [  343.276779]  ? write_comp_data+0x2f/0x90
      [  343.277313]  ? __sanitizer_cov_trace_pc+0x21/0x60
      [  343.277969]  ? write_comp_data+0x2f/0x90
      [  343.278515]  ? __fget_files+0x1ad/0x260
      [  343.279048]  ? __sanitizer_cov_trace_pc+0x21/0x60
      [  343.279685]  ? write_comp_data+0x2f/0x90
      [  343.280234]  ? __sanitizer_cov_trace_pc+0x21/0x60
      [  343.280874]  ? sockfd_lookup_light+0xd1/0x190
      [  343.281481]  __sys_sendmsg+0x118/0x200
      [  343.281998]  ? __sys_sendmsg_sock+0x40/0x40
      [  343.282578]  ? alloc_fd+0x229/0x5e0
      [  343.283070]  ? write_comp_data+0x2f/0x90
      [  343.283610]  ? write_comp_data+0x2f/0x90
      [  343.284135]  ? __sanitizer_cov_trace_pc+0x21/0x60
      [  343.284776]  ? ktime_get_coarse_real_ts64+0xb8/0xf0
      [  343.285450]  __x64_sys_sendmsg+0x7d/0xc0
      [  343.285981]  ? syscall_enter_from_user_mode+0x4d/0x70
      [  343.286664]  do_syscall_64+0x3a/0x80
      [  343.287158]  entry_SYSCALL_64_after_hwframe+0x44/0xae
      [  343.287850] RIP: 0033:0x7fdde24cf289
      [  343.288344] Code: 01 00 48 81 c4 80 00 00 00 e9 f1 fe ff ff 0f 1f 00
      48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f
      05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d b7 db 2c 00 f7 d8 64 89 01 48
      [  343.290729] RSP: 002b:00007fdde2bd6d98 EFLAGS: 00000246 ORIG_RAX:
      000000000000002e
      [  343.291730] RAX: ffffffffffffffda RBX: 0000000000000000 RCX:
      00007fdde24cf289
      [  343.292673] RDX: 0000000000000000 RSI: 00000000200000c0 RDI:
      0000000000000004
      [  343.293618] RBP: 00007fdde2bd6e20 R08: 0000000100000001 R09:
      0000000000000000
      [  343.294557] R10: 0000000100000001 R11: 0000000000000246 R12:
      0000000000000000
      [  343.295493] R13: 0000000000021000 R14: 0000000000000000 R15:
      00007fdde2bd7700
      [  343.296432]  </TASK>
      [  343.296735] Modules linked in: sch_netem ip6_vti ip_vti ip_gre ipip
      sit ip_tunnel geneve macsec macvtap tap ipvlan macvlan 8021q garp mrp
      hsr wireguard libchacha20poly1305 chacha_x86_64 poly1305_x86_64
      ip6_udp_tunnel udp_tunnel libblake2s blake2s_x86_64 libblake2s_generic
      curve25519_x86_64 libcurve25519_generic libchacha xfrm_interface
      xfrm6_tunnel tunnel4 veth netdevsim psample batman_adv nlmon dummy team
      bonding tls vcan ip6_gre ip6_tunnel tunnel6 gre tun ip6t_rpfilter
      ipt_REJECT nf_reject_ipv4 ip6t_REJECT nf_reject_ipv6 xt_conntrack ip_set
      ebtable_nat ebtable_broute ip6table_nat ip6table_mangle
      ip6table_security ip6table_raw iptable_nat nf_nat nf_conntrack
      nf_defrag_ipv6 nf_defrag_ipv4 iptable_mangle iptable_security
      iptable_raw ebtable_filter ebtables rfkill ip6table_filter ip6_tables
      iptable_filter ppdev bochs drm_vram_helper drm_ttm_helper ttm
      drm_kms_helper cec parport_pc drm joydev floppy parport sg syscopyarea
      sysfillrect sysimgblt i2c_piix4 qemu_fw_cfg fb_sys_fops pcspkr
      [  343.297459]  ip_tables xfs virtio_net net_failover failover sd_mod
      sr_mod cdrom t10_pi ata_generic pata_acpi ata_piix libata virtio_pci
      virtio_pci_legacy_dev serio_raw virtio_pci_modern_dev dm_mirror
      dm_region_hash dm_log dm_mod
      [  343.311074] Dumping ftrace buffer:
      [  343.311532]    (ftrace buffer empty)
      [  343.312040] ---[ end trace a2e3db5a6ae05099 ]---
      [  343.312691] RIP: 0010:netem_enqueue+0x1590/0x33c0 [sch_netem]
      [  343.313481] Code: 89 85 58 ff ff ff e8 5f 5d e9 d3 48 8b b5 48 ff ff
      ff 8b 8d 50 ff ff ff 8b 85 58 ff ff ff 48 8b bd 70 ff ff ff 31 d2 2b 4f
      74 <f7> f1 48 b8 00 00 00 00 00 fc ff df 49 01 d5 4c 89 e9 48 c1 e9 03
      [  343.315893] RSP: 0018:ffff88800bcd7368 EFLAGS: 00010246
      [  343.316622] RAX: 00000000ba7c0a9c RBX: 0000000000000001 RCX:
      0000000000000000
      [  343.317585] RDX: 0000000000000000 RSI: ffff88800f8edb10 RDI:
      ffff88800f8eda40
      [  343.318549] RBP: ffff88800bcd7458 R08: 0000000000000000 R09:
      ffffffff94fb8445
      [  343.319503] R10: ffffffff94fb8336 R11: ffffffff94fb8445 R12:
      0000000000000000
      [  343.320455] R13: ffff88800a5a7000 R14: ffff88800a5b5800 R15:
      0000000000000020
      [  343.321414] FS:  00007fdde2bd7700(0000) GS:ffff888109780000(0000)
      knlGS:0000000000000000
      [  343.322489] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [  343.323283] CR2: 00000000200000c0 CR3: 000000000ef4c000 CR4:
      00000000000006e0
      [  343.324264] Kernel panic - not syncing: Fatal exception in interrupt
      [  343.333717] Dumping ftrace buffer:
      [  343.334175]    (ftrace buffer empty)
      [  343.334653] Kernel Offset: 0x13600000 from 0xffffffff81000000
      (relocation range: 0xffffffff80000000-0xffffffffbfffffff)
      [  343.336027] Rebooting in 86400 seconds..
      
      Reported-by: default avatarsyzkaller <syzkaller@googlegroups.com>
      Signed-off-by: default avatarHarshit Mogalapalli <harshit.m.mogalapalli@oracle.com>
      Link: https://lore.kernel.org/r/20211129175328.55339-1-harshit.m.mogalapalli@oracle.com
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      c0315e93
    • Ondřej Jirman's avatar
      i2c: rk3x: Handle a spurious start completion interrupt flag · 7ff666e6
      Ondřej Jirman authored
      [ Upstream commit 02fe0fbd
      
       ]
      
      In a typical read transfer, start completion flag is being set after
      read finishes (notice ipd bit 4 being set):
      
      trasnfer poll=0
      i2c start
      rk3x-i2c fdd40000.i2c: IRQ: state 1, ipd: 10
      i2c read
      rk3x-i2c fdd40000.i2c: IRQ: state 2, ipd: 1b
      i2c stop
      rk3x-i2c fdd40000.i2c: IRQ: state 4, ipd: 33
      
      This causes I2C transfer being aborted in polled mode from a stop completion
      handler:
      
      trasnfer poll=1
      i2c start
      rk3x-i2c fdd40000.i2c: IRQ: state 1, ipd: 10
      i2c read
      rk3x-i2c fdd40000.i2c: IRQ: state 2, ipd: 0
      rk3x-i2c fdd40000.i2c: IRQ: state 2, ipd: 1b
      i2c stop
      rk3x-i2c fdd40000.i2c: IRQ: state 4, ipd: 13
      i2c stop
      rk3x-i2c fdd40000.i2c: unexpected irq in STOP: 0x10
      
      Clearing the START flag after read fixes the issue without any obvious
      side effects.
      
      This issue was dicovered on RK3566 when adding support for powering
      off the RK817 PMIC.
      
      Signed-off-by: default avatarOndrej Jirman <megous@megous.com>
      Reviewed-by: default avatarJohn Keeping <john@metanate.com>
      Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      7ff666e6
    • Helge Deller's avatar
      parisc/agp: Annotate parisc agp init functions with __init · 409ecd02
      Helge Deller authored
      [ Upstream commit 8d88382b
      
       ]
      
      Signed-off-by: default avatarHelge Deller <deller@gmx.de>
      Reported-by: default avatarkernel test robot <lkp@intel.com>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      409ecd02
    • Erik Ekman's avatar
      net/mlx4_en: Update reported link modes for 1/10G · 4233fbd4
      Erik Ekman authored
      [ Upstream commit 2191b1df ]
      
      When link modes were initially added in commit 2c762679
      ("net/mlx4_en: Use PTYS register to query ethtool settings") and
      later updated for the new ethtool API in commit 3d8f7cc7
      ("net: mlx4: use new ETHTOOL_G/SSETTINGS API") the only 1/10G non-baseT
      link modes configured were 1000baseKX, 10000baseKX4 and 10000baseKR.
      It looks like these got picked to represent other modes since nothing
      better was available.
      
      Switch to using more specific link modes added in commit 5711a982
      
      
      ("net: ethtool: add support for 1000BaseX and missing 10G link modes").
      
      Tested with MCX311A-XCAT connected via DAC.
      Before:
      
      % sudo ethtool enp3s0
      Settings for enp3s0:
      	Supported ports: [ FIBRE ]
      	Supported link modes:   1000baseKX/Full
      	                        10000baseKR/Full
      	Supported pause frame use: Symmetric Receive-only
      	Supports auto-negotiation: No
      	Supported FEC modes: Not reported
      	Advertised link modes:  1000baseKX/Full
      	                        10000baseKR/Full
      	Advertised pause frame use: Symmetric
      	Advertised auto-negotiation: No
      	Advertised FEC modes: Not reported
      	Speed: 10000Mb/s
      	Duplex: Full
      	Auto-negotiation: off
      	Port: Direct Attach Copper
      	PHYAD: 0
      	Transceiver: internal
      	Supports Wake-on: d
      	Wake-on: d
              Current message level: 0x00000014 (20)
                                     link ifdown
      	Link detected: yes
      
      With this change:
      
      % sudo ethtool enp3s0
      	Settings for enp3s0:
      	Supported ports: [ FIBRE ]
      	Supported link modes:   1000baseX/Full
      	                        10000baseCR/Full
       	                        10000baseSR/Full
      	Supported pause frame use: Symmetric Receive-only
      	Supports auto-negotiation: No
      	Supported FEC modes: Not reported
      	Advertised link modes:  1000baseX/Full
       	                        10000baseCR/Full
       	                        10000baseSR/Full
      	Advertised pause frame use: Symmetric
      	Advertised auto-negotiation: No
      	Advertised FEC modes: Not reported
      	Speed: 10000Mb/s
      	Duplex: Full
      	Auto-negotiation: off
      	Port: Direct Attach Copper
      	PHYAD: 0
      	Transceiver: internal
      	Supports Wake-on: d
      	Wake-on: d
              Current message level: 0x00000014 (20)
                                     link ifdown
      	Link detected: yes
      
      Tested-by: default avatarMichael Stapelberg <michael@stapelberg.ch>
      Signed-off-by: default avatarErik Ekman <erik@kryo.se>
      Reviewed-by: default avatarTariq Toukan <tariqt@nvidia.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      4233fbd4
    • Philip Chen's avatar
      drm/msm/dsi: set default num_data_lanes · b6158d96
      Philip Chen authored
      [ Upstream commit cd92cc18
      
       ]
      
      If "data_lanes" property of the dsi output endpoint is missing in
      the DT, num_data_lanes would be 0 by default, which could cause
      dsi_host_attach() to fail if dsi->lanes is set to a non-zero value
      by the bridge driver.
      
      According to the binding document of msm dsi controller, the
      input/output endpoint of the controller is expected to have 4 lanes.
      So let's set num_data_lanes to 4 by default.
      
      Signed-off-by: default avatarPhilip Chen <philipchen@chromium.org>
      Reviewed-by: default avatarDouglas Anderson <dianders@chromium.org>
      Reviewed-by: default avatarStephen Boyd <swboyd@chromium.org>
      Link: https://lore.kernel.org/r/20211030100812.1.I6cd9af36b723fed277d34539d3b2ba4ca233ad2d@changeid
      
      
      Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
      Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
      b6158d96
    • Tadeusz Struk's avatar
      nfc: fix segfault in nfc_genl_dump_devices_done · d731ecc6
      Tadeusz Struk authored
      commit fd79a0cb upstream.
      
      When kmalloc in nfc_genl_dump_devices() fails then
      nfc_genl_dump_devices_done() segfaults as below
      
      KASAN: null-ptr-deref in range [0x0000000000000008-0x000000000000000f]
      CPU: 0 PID: 25 Comm: kworker/0:1 Not tainted 5.16.0-rc4-01180-g2a987e65025e-dirty #5
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-6.fc35 04/01/2014
      Workqueue: events netlink_sock_destruct_work
      RIP: 0010:klist_iter_exit+0x26/0x80
      Call Trace:
      <TASK>
      class_dev_iter_exit+0x15/0x20
      nfc_genl_dump_devices_done+0x3b/0x50
      genl_lock_done+0x84/0xd0
      netlink_sock_destruct+0x8f/0x270
      __sk_destruct+0x64/0x3b0
      sk_destruct+0xa8/0xd0
      __sk_free+0x2e8/0x3d0
      sk_free+0x51/0x90
      netlink_sock_destruct_work+0x1c/0x20
      process_one_work+0x411/0x710
      worker_thread+0x6fd/0xa80
      
      Link: https://syzkaller.appspot.com/bug?id=fc0fa5a53db9edd261d56e74325419faf18bd0df
      
      
      Reported-by: default avatar <syzbot+f9f76f4a0766420b4a02@syzkaller.appspotmail.com>
      Signed-off-by: default avatarTadeusz Struk <tadeusz.struk@linaro.org>
      Reviewed-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
      Link: https://lore.kernel.org/r/20211208182742.340542-1-tadeusz.struk@linaro.org
      
      
      Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d731ecc6
  2. Dec 16, 2021
  3. Dec 14, 2021