1. 14 11月, 2018 40 次提交
    • J
      btrfs: fix error handling in btrfs_dev_replace_start · 18bdce0e
      Jeff Mahoney 提交于
      commit 5c06147128fbbdf7a84232c5f0d808f53153defe upstream.
      
      When we fail to start a transaction in btrfs_dev_replace_start, we leave
      dev_replace->replace_start set to STARTED but clear ->srcdev and
      ->tgtdev.  Later, that can result in an Oops in
      btrfs_dev_replace_progress when having state set to STARTED or SUSPENDED
      implies that ->srcdev is valid.
      
      Also fix error handling when the state is already STARTED or SUSPENDED
      while starting.  That, too, will clear ->srcdev and ->tgtdev even though
      it doesn't own them.  This should be an impossible case to hit since we
      should be protected by the BTRFS_FS_EXCL_OP bit being set.  Let's add an
      ASSERT there while we're at it.
      
      Fixes: e93c89c1 (Btrfs: add new sources for device replace code)
      CC: stable@vger.kernel.org # 4.4+
      Signed-off-by: NJeff Mahoney <jeffm@suse.com>
      Reviewed-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      18bdce0e
    • J
      btrfs: fix error handling in free_log_tree · cdecd48a
      Jeff Mahoney 提交于
      commit 374b0e2d6ba5da7fd1cadb3247731ff27d011f6f upstream.
      
      When we hit an I/O error in free_log_tree->walk_log_tree during file system
      shutdown we can crash due to there not being a valid transaction handle.
      
      Use btrfs_handle_fs_error when there's no transaction handle to use.
      
        BUG: unable to handle kernel NULL pointer dereference at 0000000000000060
        IP: free_log_tree+0xd2/0x140 [btrfs]
        PGD 0 P4D 0
        Oops: 0000 [#1] SMP DEBUG_PAGEALLOC PTI
        Modules linked in: <modules>
        CPU: 2 PID: 23544 Comm: umount Tainted: G        W        4.12.14-kvmsmall #9 SLE15 (unreleased)
        Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.0.0-prebuilt.qemu-project.org 04/01/2014
        task: ffff96bfd3478880 task.stack: ffffa7cf40d78000
        RIP: 0010:free_log_tree+0xd2/0x140 [btrfs]
        RSP: 0018:ffffa7cf40d7bd10 EFLAGS: 00010282
        RAX: 00000000fffffffb RBX: 00000000fffffffb RCX: 0000000000000002
        RDX: 0000000000000000 RSI: ffff96c02f07d4c8 RDI: 0000000000000282
        RBP: ffff96c013cf1000 R08: ffff96c02f07d4c8 R09: ffff96c02f07d4d0
        R10: 0000000000000000 R11: 0000000000000002 R12: 0000000000000000
        R13: ffff96c005e800c0 R14: ffffa7cf40d7bdb8 R15: 0000000000000000
        FS:  00007f17856bcfc0(0000) GS:ffff96c03f600000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
        CR2: 0000000000000060 CR3: 0000000045ed6002 CR4: 00000000003606e0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
        Call Trace:
         ? wait_for_writer+0xb0/0xb0 [btrfs]
         btrfs_free_log+0x17/0x30 [btrfs]
         btrfs_drop_and_free_fs_root+0x9a/0xe0 [btrfs]
         btrfs_free_fs_roots+0xc0/0x130 [btrfs]
         ? wait_for_completion+0xf2/0x100
         close_ctree+0xea/0x2e0 [btrfs]
         ? kthread_stop+0x161/0x260
         generic_shutdown_super+0x6c/0x120
         kill_anon_super+0xe/0x20
         btrfs_kill_super+0x13/0x100 [btrfs]
         deactivate_locked_super+0x3f/0x70
         cleanup_mnt+0x3b/0x70
         task_work_run+0x78/0x90
         exit_to_usermode_loop+0x77/0xa6
         do_syscall_64+0x1c5/0x1e0
         entry_SYSCALL_64_after_hwframe+0x42/0xb7
        RIP: 0033:0x7f1784f90827
        RSP: 002b:00007ffdeeb03118 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
        RAX: 0000000000000000 RBX: 0000556a60c62970 RCX: 00007f1784f90827
        RDX: 0000000000000001 RSI: 0000000000000000 RDI: 0000556a60c62b50
        RBP: 0000000000000000 R08: 0000000000000005 R09: 00000000ffffffff
        R10: 0000556a60c63900 R11: 0000000000000246 R12: 0000556a60c62b50
        R13: 00007f17854a81c4 R14: 0000000000000000 R15: 0000000000000000
        RIP: free_log_tree+0xd2/0x140 [btrfs] RSP: ffffa7cf40d7bd10
        CR2: 0000000000000060
      
      Fixes: 681ae509 ("Btrfs: cleanup reserved space when freeing tree log on error")
      CC: <stable@vger.kernel.org> # v3.13
      Signed-off-by: NJeff Mahoney <jeffm@suse.com>
      Reviewed-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      cdecd48a
    • Q
      btrfs: locking: Add extra check in btrfs_init_new_buffer() to avoid deadlock · d4f56c44
      Qu Wenruo 提交于
      commit b72c3aba09a53fc7c1824250d71180ca154517a7 upstream.
      
      [BUG]
      For certain crafted image, whose csum root leaf has missing backref, if
      we try to trigger write with data csum, it could cause deadlock with the
      following kernel WARN_ON():
      
        WARNING: CPU: 1 PID: 41 at fs/btrfs/locking.c:230 btrfs_tree_lock+0x3e2/0x400
        CPU: 1 PID: 41 Comm: kworker/u4:1 Not tainted 4.18.0-rc1+ #8
        Workqueue: btrfs-endio-write btrfs_endio_write_helper
        RIP: 0010:btrfs_tree_lock+0x3e2/0x400
        Call Trace:
         btrfs_alloc_tree_block+0x39f/0x770
         __btrfs_cow_block+0x285/0x9e0
         btrfs_cow_block+0x191/0x2e0
         btrfs_search_slot+0x492/0x1160
         btrfs_lookup_csum+0xec/0x280
         btrfs_csum_file_blocks+0x2be/0xa60
         add_pending_csums+0xaf/0xf0
         btrfs_finish_ordered_io+0x74b/0xc90
         finish_ordered_fn+0x15/0x20
         normal_work_helper+0xf6/0x500
         btrfs_endio_write_helper+0x12/0x20
         process_one_work+0x302/0x770
         worker_thread+0x81/0x6d0
         kthread+0x180/0x1d0
         ret_from_fork+0x35/0x40
      
      [CAUSE]
      That crafted image has missing backref for csum tree root leaf.  And
      when we try to allocate new tree block, since there is no
      EXTENT/METADATA_ITEM for csum tree root, btrfs consider it's free slot
      and use it.
      
      The extent tree of the image looks like:
      
        Normal image                      |       This fuzzed image
        ----------------------------------+--------------------------------
        BG 29360128                       | BG 29360128
         One empty slot                   |  One empty slot
        29364224: backref to UUID tree    | 29364224: backref to UUID tree
         Two empty slots                  |  Two empty slots
        29376512: backref to CSUM tree    |  One empty slot (bad type) <<<
        29380608: backref to D_RELOC tree | 29380608: backref to D_RELOC tree
        ...                               | ...
      
      Since bytenr 29376512 has no METADATA/EXTENT_ITEM, when btrfs try to
      alloc tree block, it's an valid slot for btrfs.
      
      And for finish_ordered_write, when we need to insert csum, we try to CoW
      csum tree root.
      
      By accident, empty slots at bytenr BG_OFFSET, BG_OFFSET + 8K,
      BG_OFFSET + 12K is already used by tree block COW for other trees, the
      next empty slot is BG_OFFSET + 16K, which should be the backref for CSUM
      tree.
      
      But due to the bad type, btrfs can recognize it and still consider it as
      an empty slot, and will try to use it for csum tree CoW.
      
      Then in the following call trace, we will try to lock the new tree
      block, which turns out to be the old csum tree root which is already
      locked:
      
      btrfs_search_slot() called on csum tree root, which is at 29376512
      |- btrfs_cow_block()
         |- btrfs_set_lock_block()
         |  |- Now locks tree block 29376512 (old csum tree root)
         |- __btrfs_cow_block()
            |- btrfs_alloc_tree_block()
               |- btrfs_reserve_extent()
                  | Now it returns tree block 29376512, which extent tree
                  | shows its empty slot, but it's already hold by csum tree
                  |- btrfs_init_new_buffer()
                     |- btrfs_tree_lock()
                        | Triggers WARN_ON(eb->lock_owner == current->pid)
                        |- wait_event()
                           Wait lock owner to release the lock, but it's
                           locked by ourself, so it will deadlock
      
      [FIX]
      This patch will do the lock_owner and current->pid check at
      btrfs_init_new_buffer().
      So above deadlock can be avoided.
      
      Since such problem can only happen in crafted image, we will still
      trigger kernel warning for later aborted transaction, but with a little
      more meaningful warning message.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=200405Reported-by: NXu Wen <wen.xu@gatech.edu>
      CC: stable@vger.kernel.org # 4.4+
      Signed-off-by: NQu Wenruo <wqu@suse.com>
      Reviewed-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d4f56c44
    • Q
      btrfs: Handle owner mismatch gracefully when walking up tree · 4f2a4e02
      Qu Wenruo 提交于
      commit 65c6e82becec33731f48786e5a30f98662c86b16 upstream.
      
      [BUG]
      When mounting certain crafted image, btrfs will trigger kernel BUG_ON()
      when trying to recover balance:
      
        kernel BUG at fs/btrfs/extent-tree.c:8956!
        invalid opcode: 0000 [#1] PREEMPT SMP NOPTI
        CPU: 1 PID: 662 Comm: mount Not tainted 4.18.0-rc1-custom+ #10
        RIP: 0010:walk_up_proc+0x336/0x480 [btrfs]
        RSP: 0018:ffffb53540c9b890 EFLAGS: 00010202
        Call Trace:
         walk_up_tree+0x172/0x1f0 [btrfs]
         btrfs_drop_snapshot+0x3a4/0x830 [btrfs]
         merge_reloc_roots+0xe1/0x1d0 [btrfs]
         btrfs_recover_relocation+0x3ea/0x420 [btrfs]
         open_ctree+0x1af3/0x1dd0 [btrfs]
         btrfs_mount_root+0x66b/0x740 [btrfs]
         mount_fs+0x3b/0x16a
         vfs_kern_mount.part.9+0x54/0x140
         btrfs_mount+0x16d/0x890 [btrfs]
         mount_fs+0x3b/0x16a
         vfs_kern_mount.part.9+0x54/0x140
         do_mount+0x1fd/0xda0
         ksys_mount+0xba/0xd0
         __x64_sys_mount+0x21/0x30
         do_syscall_64+0x60/0x210
         entry_SYSCALL_64_after_hwframe+0x49/0xbe
      
      [CAUSE]
      Extent tree corruption.  In this particular case, reloc tree root's
      owner is DATA_RELOC_TREE (should be TREE_RELOC), thus its backref is
      corrupted and we failed the owner check in walk_up_tree().
      
      [FIX]
      It's pretty hard to take care of every extent tree corruption, but at
      least we can remove such BUG_ON() and exit more gracefully.
      
      And since in this particular image, DATA_RELOC_TREE and TREE_RELOC share
      the same root (which is obviously invalid), we needs to make
      __del_reloc_root() more robust to detect such invalid sharing to avoid
      possible NULL dereference as root->node can be NULL in this case.
      
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=200411Reported-by: NXu Wen <wen.xu@gatech.edu>
      CC: stable@vger.kernel.org # 4.4+
      Signed-off-by: NQu Wenruo <wqu@suse.com>
      Reviewed-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      4f2a4e02
    • Q
      btrfs: qgroup: Avoid calling qgroup functions if qgroup is not enabled · c25c6665
      Qu Wenruo 提交于
      commit 3628b4ca64f24a4ec55055597d0cb1c814729f8b upstream.
      
      Some qgroup trace events like btrfs_qgroup_release_data() and
      btrfs_qgroup_free_delayed_ref() can still be triggered even if qgroup is
      not enabled.
      
      This is caused by the lack of qgroup status check before calling some
      qgroup functions.  Thankfully the functions can handle quota disabled
      case well and just do nothing for qgroup disabled case.
      
      This patch will do earlier check before triggering related trace events.
      
      And for enabled <-> disabled race case:
      
      1) For enabled->disabled case
         Disable will wipe out all qgroups data including reservation and
         excl/rfer. Even if we leak some reservation or numbers, it will
         still be cleared, so nothing will go wrong.
      
      2) For disabled -> enabled case
         Current btrfs_qgroup_release_data() will use extent_io tree to ensure
         we won't underflow reservation. And for delayed_ref we use
         head->qgroup_reserved to record the reserved space, so in that case
         head->qgroup_reserved should be 0 and we won't underflow.
      
      CC: stable@vger.kernel.org # 4.14+
      Reported-by: NChris Murphy <lists@colorremedies.com>
      Link: https://lore.kernel.org/linux-btrfs/CAJCQCtQau7DtuUUeycCkZ36qjbKuxNzsgqJ7+sJ6W0dK_NLE3w@mail.gmail.com/Signed-off-by: NQu Wenruo <wqu@suse.com>
      Reviewed-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NDavid Sterba <dsterba@suse.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c25c6665
    • M
      tracing: Return -ENOENT if there is no target synthetic event · 2b3171ec
      Masami Hiramatsu 提交于
      commit 18858511fd8a877303cc34c06efa461b26a0e070 upstream.
      
      Return -ENOENT error if there is no target synthetic event.
      This notices an operation failure to user as below;
      
        # echo 'wakeup_latency u64 lat; pid_t pid;' > synthetic_events
        # echo '!wakeup' >> synthetic_events
        sh: write error: No such file or directory
      
      Link: http://lkml.kernel.org/r/154013449986.25576.9487131386597290172.stgit@devboxAcked-by: NTom Zanussi <zanussi@linux.intel.com>
      Tested-by: NTom Zanussi <zanussi@linux.intel.com>
      Cc: Shuah Khan <shuah@kernel.org>
      Cc: Rajvi Jingar <rajvi.jingar@intel.com>
      Cc: stable@vger.kernel.org
      Fixes: 4b147936 ('tracing: Add support for 'synthetic' events')
      Signed-off-by: NMasami Hiramatsu <mhiramat@kernel.org>
      Signed-off-by: NSteven Rostedt (VMware) <rostedt@goodmis.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2b3171ec
    • B
      selftests/powerpc: Fix ptrace tm failure · 1ebadf5e
      Breno Leitao 提交于
      commit 48dc0ef19044bfb69193302fbe3a834e3331b7ae upstream.
      
      Test ptrace-tm-spd-gpr fails on current kernel (4.19) due to a segmentation
      fault that happens on the child process prior to setting cptr[2] = 1. This
      causes the parent process to wait forever at 'while (!pptr[2])' and the test to
      be killed by the test harness framework by timeout, thus, failing.
      
      The segmentation fault happens because of a inline assembly being
      generated as:
      
      	0x10000355c <tm_spd_gpr+492>    lfs    f0, 0(0)
      
      This is reading memory position 0x0 and causing the segmentation fault.
      
      This code is being generated by ASM_LOAD_FPR_SINGLE_PRECISION(flt_4), where
      flt_4 is passed to the inline assembly block as:
      
      	[flt_4] "r" (&d)
      
      Since the inline assembly 'r' constraint means any GPR, gpr0 is being
      chosen, thus causing this issue when issuing a Load Floating-Point Single
      instruction.
      
      This patch simply changes the constraint to 'b', which specify that this
      register will be used as base, and r0 is not allowed to be used, avoiding
      this issue.
      
      Other than that, removing flt_2 register from the input operands, since it
      is not used by the inline assembly code at all.
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NBreno Leitao <leitao@debian.org>
      Acked-by: NSegher Boessenkool <segher@kernel.crashing.org>
      Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1ebadf5e
    • M
      selftests/ftrace: Fix synthetic event test to delete event correctly · 2dc12479
      Masami Hiramatsu 提交于
      commit 0d0352d8b3d6d7ca9a710b40e194cbbaeb841c88 upstream.
      
      Fix the synthetic event test case to remove event correctly.
      If redirecting command to synthetic_event file without append
      mode, it cleans up all existing events and execute (parse) the
      command. This means "delete event" always fails to find the
      target event.
      
      Since previous synthetic event has a bug which doesn't return
      -ENOENT even if it fails to find the deleting event, this test
      passed. But fixing that bug, this test fails because this test
      itself has a bug.
      
      This fixes that bug by trying to delete event right after
      adding an event, and use append mode redirection ('>>') instead
      of normal redirection ('>').
      
      Link: http://lkml.kernel.org/r/154013452832.25576.2305459545429386517.stgit@devboxAcked-by: NShuah Khan <shuah@kernel.org>
      Acked-by: NTom Zanussi <zanussi@linux.intel.com>
      Tested-by: NTom Zanussi <zanussi@linux.intel.com>
      Cc: Tom Zanussi <zanussi@kernel.org>
      Cc: Tom Zanussi <tom.zanussi@linux.intel.com>
      Cc: Rajvi Jingar <rajvi.jingar@intel.com>
      Cc: Shuah Khan <shuah@kernel.org>
      Cc: stable@vger.kernel.org
      Fixes: f06eec4d ('selftests: ftrace: Add inter-event hist triggers testcases')
      Signed-off-by: NMasami Hiramatsu <mhiramat@kernel.org>
      Signed-off-by: NSteven Rostedt (VMware) <rostedt@goodmis.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2dc12479
    • J
      soc/tegra: pmc: Fix child-node lookup · b4087c2a
      Johan Hovold 提交于
      commit 1dc6bd5e39a29453bdcc17348dd2a89f1aa4004e upstream.
      
      Fix child-node lookup during probe, which ended up searching the whole
      device tree depth-first starting at the parent rather than just matching
      on its children.
      
      To make things worse, the parent pmc node could end up being prematurely
      freed as of_find_node_by_name() drops a reference to its first argument.
      
      Fixes: 3568df3d ("soc: tegra: Add thermal reset (thermtrip) support to PMC")
      Cc: stable <stable@vger.kernel.org>     # 4.0
      Cc: Mikko Perttunen <mperttunen@nvidia.com>
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      Reviewed-by: NMikko Perttunen <mperttunen@nvidia.com>
      Signed-off-by: NThierry Reding <treding@nvidia.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b4087c2a
    • B
      soc: qcom: rmtfs-mem: Validate that scm is available · 7f9a150f
      Bjorn Andersson 提交于
      commit 137dc5843faeacabf48fc22a8dc58c4e0b4f0927 upstream.
      
      The scm device must be present in order for the rmtfs driver to
      configure memory permissions for the rmtfs memory region, so check that
      it is probed before continuing.
      
      Cc: stable@vger.kernel.org
      Fixes: fa65f804 ("soc: qcom: rmtfs-mem: Add support for assigning memory to remote")
      Signed-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: NAndy Gross <andy.gross@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      7f9a150f
    • T
      arm64: dts: stratix10: Correct System Manager register size · 142261e7
      Thor Thayer 提交于
      commit 74121b9aa3cd571ddfff014a9f47db36cae3cda9 upstream.
      
      Correct the register size of the System Manager node.
      
      Cc: stable@vger.kernel.org
      Fixes: 78cd6a9d ("arm64: dts: Add base stratix 10 dtsi")
      Signed-off-by: NThor Thayer <thor.thayer@linux.intel.com>
      Signed-off-by: NDinh Nguyen <dinguyen@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      142261e7
    • T
      ARM: dts: socfpga: Fix SDRAM node address for Arria10 · 9a209614
      Thor Thayer 提交于
      commit ce3bf934f919a7d675c5b7fa4cc233ded9c6256e upstream.
      
      The address in the SDRAM node was incorrect. Fix this to agree with the
      correct address and to match the reg definition block.
      
      Cc: stable@vger.kernel.org
      Fixes: 54b4a8f5("arm: socfpga: dts: Add Arria10 SDRAM EDAC DTS support")
      Signed-off-by: NThor Thayer <thor.thayer@linux.intel.com>
      Signed-off-by: NDinh Nguyen <dinguyen@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9a209614
    • N
      Cramfs: fix abad comparison when wrap-arounds occur · 9d9da6fe
      Nicolas Pitre 提交于
      commit 672ca9dd13f1aca0c17516f76fc5b0e8344b3e46 upstream.
      
      It is possible for corrupted filesystem images to produce very large
      block offsets that may wrap when a length is added, and wrongly pass
      the buffer size test.
      Reported-by: NAnatoly Trosinenko <anatoly.trosinenko@gmail.com>
      Signed-off-by: NNicolas Pitre <nico@linaro.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9d9da6fe
    • C
      rpmsg: smd: fix memory leak on channel create · 9632c033
      Colin Ian King 提交于
      commit 940c620d6af8fca7d115de40f19870fba415efac upstream.
      
      Currently a failed allocation of channel->name leads to an
      immediate return without freeing channel. Fix this by setting
      ret to -ENOMEM and jumping to an exit path that kfree's channel.
      
      Detected by CoverityScan, CID#1473692 ("Resource Leak")
      
      Fixes: 53e2822e ("rpmsg: Introduce Qualcomm SMD backend")
      Cc: stable@vger.kernel.org
      Signed-off-by: NColin Ian King <colin.king@canonical.com>
      Signed-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9632c033
    • T
      arm64: lse: remove -fcall-used-x0 flag · 64537fda
      Tri Vo 提交于
      commit 2a6c7c367de82951c98a290a21156770f6f82c84 upstream.
      
      x0 is not callee-saved in the PCS. So there is no need to specify
      -fcall-used-x0.
      
      Clang doesn't currently support -fcall-used flags. This patch will help
      building the kernel with clang.
      Tested-by: NNick Desaulniers <ndesaulniers@google.com>
      Acked-by: NWill Deacon <will.deacon@arm.com>
      Signed-off-by: NTri Vo <trong@android.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      64537fda
    • H
      media: hdmi.h: rename ADOBE_RGB to OPRGB and ADOBE_YCC to OPYCC · 3f7987f8
      Hans Verkuil 提交于
      commit 463659a08d7999d5461fa45b35b17686189a70ca upstream.
      
      These names have been renamed in the CTA-861 standard due to trademark
      issues. Replace them here as well so they are in sync with the standard.
      Signed-off-by: NHans Verkuil <hansverk@cisco.com>
      Cc: stable@vger.kernel.org
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3f7987f8
    • H
      media: replace ADOBERGB by OPRGB · b1452c51
      Hans Verkuil 提交于
      commit db0340182444612bcadb98bdec22f651aa42266c upstream.
      
      The CTA-861 standards have been updated to refer to opRGB instead
      of AdobeRGB. The official standard is in fact named opRGB, so
      switch to that.
      
      The two old defines referring to ADOBERGB in the public API are
      put under #ifndef __KERNEL__ and a comment mentions that they are
      deprecated.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Cc: stable@vger.kernel.org
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b1452c51
    • H
      media: media colorspaces*.rst: rename AdobeRGB to opRGB · 29ba4b99
      Hans Verkuil 提交于
      commit a58c37978cf02f6d35d05ee4e9288cb8455f1401 upstream.
      
      Drop all Adobe references and use the official opRGB standard
      instead.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Cc: stable@vger.kernel.org
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      29ba4b99
    • J
      drm/mediatek: fix OF sibling-node lookup · 5501b812
      Johan Hovold 提交于
      commit ceff2f4dcd44abf35864d9a99f85ac619e89a01d upstream.
      
      Use the new of_get_compatible_child() helper to lookup the sibling
      instead of using of_find_compatible_node(), which searches the entire
      tree from a given start node and thus can return an unrelated (i.e.
      non-sibling) node.
      
      This also addresses a potential use-after-free (e.g. after probe
      deferral) as the tree-wide helper drops a reference to its first
      argument (i.e. the parent device node).
      
      While at it, also fix the related cec-node reference leak.
      
      Fixes: 8f83f268 ("drm/mediatek: Add HDMI support")
      Cc: stable <stable@vger.kernel.org>     # 4.8
      Cc: Junzhi Zhao <junzhi.zhao@mediatek.com>
      Cc: Philipp Zabel <p.zabel@pengutronix.de>
      Cc: CK Hu <ck.hu@mediatek.com>
      Cc: David Airlie <airlied@linux.ie>
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      5501b812
    • H
      media: adv7842: when the EDID is cleared, unconfigure CEC as well · 6529dcce
      Hans Verkuil 提交于
      commit ab83203e181015b099720aff43ffabc1812e0fb3 upstream.
      
      When there is no EDID the CEC adapter should be unconfigured as
      well. So call cec_phys_addr_invalidate() when this happens.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Cc: <stable@vger.kernel.org>      # for v4.18 and up
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6529dcce
    • H
      media: adv7604: when the EDID is cleared, unconfigure CEC as well · 3e383b31
      Hans Verkuil 提交于
      commit e7da89926f6dc6cf855f5ffdf79ef99a1b115ca7 upstream.
      
      When there is no EDID the CEC adapter should be unconfigured as
      well. So call cec_phys_addr_invalidate() when this happens.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Cc: <stable@vger.kernel.org>      # for v4.18 and up
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3e383b31
    • M
      media: em28xx: fix handler for vidioc_s_input() · 9a79eb12
      Mauro Carvalho Chehab 提交于
      commit 258c430456ba5f0005043762e14fc3be35983aaf upstream.
      
      The a->index is not the name of the internal amux entry,
      but, instead a value from zero to the maximum number
      of audio inputs.
      
      As the actual available inputs depend on each board, build
      it dynamically.
      
      This is broken for a really long time. On a quick check,
      since at least commit 195a4ef6 ("V4L/DVB (6585): Convert
      em28xx to video_ioctl2") this was not implemented right.
      
      Fixes: 195a4ef6 ("V4L/DVB (6585): Convert em28xx to video_ioctl2")
      
      Cc: stable@vger.kernel.org
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9a79eb12
    • M
      media: em28xx: make v4l2-compliance happier by starting sequence on zero · 3e2e4d05
      Mauro Carvalho Chehab 提交于
      commit afeaade90db4c5dab93f326d9582be1d5954a198 upstream.
      
      The v4l2-compliance tool complains if a video doesn't start
      with a zero sequence number.
      
      While this shouldn't cause any real problem for apps, let's
      make it happier, in order to better check the v4l2-compliance
      differences before and after patchsets.
      
      This is actually an old issue. It is there since at least its
      videobuf2 conversion, e. g. changeset 3829fadc461 ("[media]
      em28xx: convert to videobuf2"), if VB1 wouldn't suffer from
      the same issue.
      
      Cc: stable@vger.kernel.org
      Fixes: d3829fad ("[media] em28xx: convert to videobuf2")
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3e2e4d05
    • M
      media: em28xx: fix input name for Terratec AV 350 · d861ec5d
      Mauro Carvalho Chehab 提交于
      commit 15644bfa195bd166d0a5ed76ae2d587f719c3dac upstream.
      
      Instead of using a register value, use an AMUX name, as otherwise
      VIDIOC_G_AUDIO would fail.
      
      Cc: stable@vger.kernel.org
      Fixes: 766ed64d ("V4L/DVB (11827): Add support for Terratec Grabster AV350")
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d861ec5d
    • M
      media: tvp5150: avoid going past array on v4l2_querymenu() · 73dc88fa
      Mauro Carvalho Chehab 提交于
      commit 5c4c4505b716cb782ad7263091edc466c4d1fbd4 upstream.
      
      The parameters of v4l2_ctrl_new_std_menu_items() are tricky: instead of
      the number of possible values, it requires the number of the maximum
      value. In other words, the ARRAY_SIZE() value should be decremented,
      otherwise it will go past the array bounds, as warned by KASAN:
      
      [  279.839688] BUG: KASAN: global-out-of-bounds in v4l2_querymenu+0x10d/0x180 [videodev]
      [  279.839709] Read of size 8 at addr ffffffffc10a4cb0 by task v4l2-compliance/16676
      
      [  279.839736] CPU: 1 PID: 16676 Comm: v4l2-compliance Not tainted 4.18.0-rc2+ #120
      [  279.839741] Hardware name:  /NUC5i7RYB, BIOS RYBDWi35.86A.0364.2017.0511.0949 05/11/2017
      [  279.839743] Call Trace:
      [  279.839758]  dump_stack+0x71/0xab
      [  279.839807]  ? v4l2_querymenu+0x10d/0x180 [videodev]
      [  279.839817]  print_address_description+0x1c9/0x270
      [  279.839863]  ? v4l2_querymenu+0x10d/0x180 [videodev]
      [  279.839871]  kasan_report+0x237/0x360
      [  279.839918]  v4l2_querymenu+0x10d/0x180 [videodev]
      [  279.839964]  __video_do_ioctl+0x2c8/0x590 [videodev]
      [  279.840011]  ? copy_overflow+0x20/0x20 [videodev]
      [  279.840020]  ? avc_ss_reset+0xa0/0xa0
      [  279.840028]  ? check_stack_object+0x21/0x60
      [  279.840036]  ? __check_object_size+0xe7/0x240
      [  279.840080]  video_usercopy+0xed/0x730 [videodev]
      [  279.840123]  ? copy_overflow+0x20/0x20 [videodev]
      [  279.840167]  ? v4l_enumstd+0x40/0x40 [videodev]
      [  279.840177]  ? __handle_mm_fault+0x9f9/0x1ba0
      [  279.840186]  ? __pmd_alloc+0x2c0/0x2c0
      [  279.840193]  ? __vfs_write+0xb6/0x350
      [  279.840200]  ? kernel_read+0xa0/0xa0
      [  279.840244]  ? video_usercopy+0x730/0x730 [videodev]
      [  279.840284]  v4l2_ioctl+0xa1/0xb0 [videodev]
      [  279.840295]  do_vfs_ioctl+0x117/0x8a0
      [  279.840303]  ? selinux_file_ioctl+0x211/0x2f0
      [  279.840313]  ? ioctl_preallocate+0x120/0x120
      [  279.840319]  ? selinux_capable+0x20/0x20
      [  279.840332]  ksys_ioctl+0x70/0x80
      [  279.840342]  __x64_sys_ioctl+0x3d/0x50
      [  279.840351]  do_syscall_64+0x6d/0x1c0
      [  279.840361]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
      [  279.840367] RIP: 0033:0x7fdfb46275d7
      [  279.840369] Code: b3 66 90 48 8b 05 b1 48 2d 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 81 48 2d 00 f7 d8 64 89 01 48
      [  279.840474] RSP: 002b:00007ffee1179038 EFLAGS: 00000202 ORIG_RAX: 0000000000000010
      [  279.840483] RAX: ffffffffffffffda RBX: 00007ffee1179180 RCX: 00007fdfb46275d7
      [  279.840488] RDX: 00007ffee11790c0 RSI: 00000000c02c5625 RDI: 0000000000000003
      [  279.840493] RBP: 0000000000000002 R08: 0000000000000020 R09: 00000000009f0902
      [  279.840497] R10: 0000000000000000 R11: 0000000000000202 R12: 00007ffee117a5a0
      [  279.840501] R13: 00007ffee11790c0 R14: 0000000000000002 R15: 0000000000000000
      
      [  279.840515] The buggy address belongs to the variable:
      [  279.840535]  tvp5150_test_patterns+0x10/0xffffffffffffe360 [tvp5150]
      
      Fixes: c43875f6 ("[media] tvp5150: replace MEDIA_ENT_F_CONN_TEST by a control")
      Cc: stable@vger.kernel.org
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      73dc88fa
    • M
      media: em28xx: use a default format if TRY_FMT fails · e015b502
      Mauro Carvalho Chehab 提交于
      commit f823ce2a1202d47110a7ef86b65839f0be8adc38 upstream.
      
      Follow the V4L2 spec, as warned by v4l2-compliance:
      
      	warn: v4l2-test-formats.cpp(732): TRY_FMT cannot handle an invalid pixelformat.
      	warn: v4l2-test-formats.cpp(733): This may or may not be a problem. For more information see:
      
      warn: v4l2-test-formats.cpp(734): http://www.mail-archive.com/linux-media@vger.kernel.org/msg56550.html
      
      Cc: stable@vger.kernel.org
      Fixes: bddcf633 ("V4L/DVB (9927): em28xx: use a more standard way to specify video formats")
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      e015b502
    • H
      media: cec: forgot to cancel delayed work · 2781b86d
      Hans Verkuil 提交于
      commit 490d84f6d73c12f4204241cff8651eed60aae914 upstream.
      
      If the wait for completion was interrupted, then make sure to cancel
      any delayed work.
      
      This can only happen if a transmit is waiting for a reply, and you press
      Ctrl-C or reboot/poweroff or something like that which interrupts the
      thread waiting for the reply and then proceeds to delete the CEC message.
      
      Since the delayed work wasn't canceled, once it would trigger it referred
      to stale data and resulted in a kernel oops.
      
      Fixes: 7ec2b3b941a6 ("cec: add new tx/rx status bits to detect aborts/timeouts")
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Cc: <stable@vger.kernel.org>      # for v4.18 and up
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      2781b86d
    • H
      media: cec: fix the Signal Free Time calculation · b68d405a
      Hans Verkuil 提交于
      commit 7d867a1b765e2b70815fec4964d7822a976ed349 upstream.
      
      The calculation of the Signal Free Time in the framework was not
      correct. If a message was received, then the next transmit should be
      considered a New Initiator and use a shorter SFT value.
      
      This was not done with the result that if both sides where continually
      sending messages, they both could use the same SFT value and one side
      could deny the other side access to the bus.
      
      Note that this fix does not take the corner case into account where
      a receive is in progress when you call adap_transmit.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Cc: <stable@vger.kernel.org>      # for v4.18 and up
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b68d405a
    • H
      media: cec: add new tx/rx status bits to detect aborts/timeouts · 94ec4487
      Hans Verkuil 提交于
      commit 7ec2b3b941a666a942859684281b5f6460a0c234 upstream.
      
      If the HDMI cable is disconnected or the CEC adapter is manually
      unconfigured, then all pending transmits and wait-for-replies are
      aborted. Signal this with new status bits (CEC_RX/TX_STATUS_ABORTED).
      
      If due to (usually) a driver bug a transmit never ends (i.e. the
      transmit_done was never called by the driver), then when this times
      out the message is marked with CEC_TX_STATUS_TIMEOUT.
      
      This should not happen and is an indication of a driver bug.
      
      Without a separate status bit for this it was impossible to detect
      this from userspace.
      
      The 'transmit timed out' kernel message is now a warning, so this
      should be more prominent in the kernel log as well.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Cc: <stable@vger.kernel.org>      # for v4.18 and up
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      94ec4487
    • M
      xen-blkfront: fix kernel panic with negotiate_mq error path · 587960d8
      Manjunath Patil 提交于
      commit 6cc4a0863c9709c512280c64e698d68443ac8053 upstream.
      
      info->nr_rings isn't adjusted in case of ENOMEM error from
      negotiate_mq(). This leads to kernel panic in error path.
      
      Typical call stack involving panic -
       #8 page_fault at ffffffff8175936f
          [exception RIP: blkif_free_ring+33]
          RIP: ffffffffa0149491  RSP: ffff8804f7673c08  RFLAGS: 00010292
       ...
       #9 blkif_free at ffffffffa0149aaa [xen_blkfront]
       #10 talk_to_blkback at ffffffffa014c8cd [xen_blkfront]
       #11 blkback_changed at ffffffffa014ea8b [xen_blkfront]
       #12 xenbus_otherend_changed at ffffffff81424670
       #13 backend_changed at ffffffff81426dc3
       #14 xenwatch_thread at ffffffff81422f29
       #15 kthread at ffffffff810abe6a
       #16 ret_from_fork at ffffffff81754078
      
      Cc: stable@vger.kernel.org
      Fixes: 7ed8ce1c ("xen-blkfront: move negotiate_mq to cover all cases of new VBDs")
      Signed-off-by: NManjunath Patil <manjunath.b.patil@oracle.com>
      Acked-by: NRoger Pau Monné <roger.pau@citrix.com>
      Signed-off-by: NJuergen Gross <jgross@suse.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      587960d8
    • J
      xen: remove size limit of privcmd-buf mapping interface · 1ebdc3d1
      Juergen Gross 提交于
      commit 3941552aec1e04d63999988a057ae09a1c56ebeb upstream.
      
      Currently the size of hypercall buffers allocated via
      /dev/xen/hypercall is limited to a default of 64 memory pages. For live
      migration of guests this might be too small as the page dirty bitmask
      needs to be sized according to the size of the guest. This means
      migrating a 8GB sized guest is already exhausting the default buffer
      size for the dirty bitmap.
      
      There is no sensible way to set a sane limit, so just remove it
      completely. The device node's usage is limited to root anyway, so there
      is no additional DOS scenario added by allowing unlimited buffers.
      
      While at it make the error path for the -ENOMEM case a little bit
      cleaner by setting n_pages to the number of successfully allocated
      pages instead of the target size.
      
      Fixes: c51b3c63 ("xen: add new hypercall buffer mapping device")
      Cc: <stable@vger.kernel.org> #4.18
      Signed-off-by: NJuergen Gross <jgross@suse.com>
      Reviewed-by: NBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Signed-off-by: NJuergen Gross <jgross@suse.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      1ebdc3d1
    • J
      xen: fix xen_qlock_wait() · d54e8a7d
      Juergen Gross 提交于
      commit d3132b3860f6cf35ff7609a76bbcdbb814bd027c upstream.
      
      Commit a856531951dc80 ("xen: make xen_qlock_wait() nestable")
      introduced a regression for Xen guests running fully virtualized
      (HVM or PVH mode). The Xen hypervisor wouldn't return from the poll
      hypercall with interrupts disabled in case of an interrupt (for PV
      guests it does).
      
      So instead of disabling interrupts in xen_qlock_wait() use a nesting
      counter to avoid calling xen_clear_irq_pending() in case
      xen_qlock_wait() is nested.
      
      Fixes: a856531951dc80 ("xen: make xen_qlock_wait() nestable")
      Cc: stable@vger.kernel.org
      Reported-by: NSander Eikelenboom <linux@eikelenboom.it>
      Signed-off-by: NJuergen Gross <jgross@suse.com>
      Reviewed-by: NBoris Ostrovsky <boris.ostrovsky@oracle.com>
      Tested-by: NSander Eikelenboom <linux@eikelenboom.it>
      Signed-off-by: NJuergen Gross <jgross@suse.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      d54e8a7d
    • H
      media: cec: integrate cec_validate_phys_addr() in cec-api.c · 9130ced3
      Hans Verkuil 提交于
      commit e81bff39489a06384822bb38ce7a59f9e365bbe9 upstream.
      
      The cec_phys_addr_validate() function will be moved to V4L2,
      so use a simplified variant of that function in cec-api.c.
      cec now no longer calls cec_phys_addr_validate() and it can
      be safely moved to V4L2.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Cc: <stable@vger.kernel.org>      # for v4.17 and up
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      9130ced3
    • H
      media: cec: make cec_get_edid_spa_location() an inline function · c1a4102e
      Hans Verkuil 提交于
      commit b915bf575d5b7774d0f22d57d6c143e07dcaade2 upstream.
      
      This function is needed by both V4L2 and CEC, so move this to
      cec.h as a static inline since there are no obvious shared
      modules between the two subsystems.
      
      This patch, together with the following ones, fixes a
      dependency bug: if CEC_CORE is disabled, then building adv7604
      (and other HDMI receivers) will fail because an essential
      function is now stubbed out.
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Cc: <stable@vger.kernel.org>      # for v4.17 and up
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      c1a4102e
    • B
      remoteproc: qcom: q6v5: Propagate EPROBE_DEFER · a91394b2
      Bjorn Andersson 提交于
      commit d5269c4553a64b6882f2c019ae21b783a0984a83 upstream.
      
      In the case that the interrupts fail to result because of the
      interrupt-controller not yet being registered the
      platform_get_irq_byname() call will fail with -EPROBE_DEFER, but passing
      this into devm_request_threaded_irq() will result in -EINVAL being
      returned, the driver is therefor not reprobed later.
      
      Fixes: 3b415c8f ("remoteproc: q6v5: Extract common resource handling")
      Cc: stable@vger.kernel.org
      Reviewed-by: NSibi Sankar <sibis@codeaurora.org>
      Signed-off-by: NBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      a91394b2
    • H
      kgdboc: Passing ekgdboc to command line causes panic · df7ada33
      He Zhe 提交于
      commit 1bd54d851f50dea6af30c3e6ff4f3e9aab5558f9 upstream.
      
      kgdboc_option_setup does not check input argument before passing it
      to strlen. The argument would be a NULL pointer if "ekgdboc", without
      its value, is set in command line and thus cause the following panic.
      
      PANIC: early exception 0xe3 IP 10:ffffffff8fbbb620 error 0 cr2 0x0
      [    0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 4.18-rc8+ #1
      [    0.000000] RIP: 0010:strlen+0x0/0x20
      ...
      [    0.000000] Call Trace
      [    0.000000]  ? kgdboc_option_setup+0x9/0xa0
      [    0.000000]  ? kgdboc_early_init+0x6/0x1b
      [    0.000000]  ? do_early_param+0x4d/0x82
      [    0.000000]  ? parse_args+0x212/0x330
      [    0.000000]  ? rdinit_setup+0x26/0x26
      [    0.000000]  ? parse_early_options+0x20/0x23
      [    0.000000]  ? rdinit_setup+0x26/0x26
      [    0.000000]  ? parse_early_param+0x2d/0x39
      [    0.000000]  ? setup_arch+0x2f7/0xbf4
      [    0.000000]  ? start_kernel+0x5e/0x4c2
      [    0.000000]  ? load_ucode_bsp+0x113/0x12f
      [    0.000000]  ? secondary_startup_64+0xa5/0xb0
      
      This patch adds a check to prevent the panic.
      
      Cc: stable@vger.kernel.org
      Cc: jason.wessel@windriver.com
      Cc: gregkh@linuxfoundation.org
      Cc: jslaby@suse.com
      Signed-off-by: NHe Zhe <zhe.he@windriver.com>
      Reviewed-by: NDaniel Thompson <daniel.thompson@linaro.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      df7ada33
    • M
      Revert "media: dvbsky: use just one mutex for serializing device R/W ops" · 43cdccfe
      Mauro Carvalho Chehab 提交于
      commit 9afc82194de9a1ce298f0d77d7d779d585bf962c upstream.
      
      As pointed at:
      	https://bugzilla.kernel.org/show_bug.cgi?id=199323
      
      This patch causes a bad effect on RPi. I suspect that the root
      cause is at the USB out of tree RPi driver, with uses high priority
      interrupts instead of normal ones. Anyway, as this patch
      is mostly a cleanup, better to revert it.
      
      This reverts commit 7d95fb74.
      
      Cc: stable@vger.kernel.org # For Kernel 4.18
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      43cdccfe
    • H
      media: v4l2-tpg: fix kernel oops when enabling HFLIP and OSD · 04feb58d
      Hans Verkuil 提交于
      commit 250854eed5d45a73d81e4137dfd85180af6f2ec3 upstream.
      
      When the OSD is on (i.e. vivid displays text on top of the test pattern), and
      you enable hflip, then the driver crashes.
      
      The cause turned out to be a division of a negative number by an unsigned value.
      You expect that -8 / 2U would be -4, but in reality it is 2147483644 :-(
      
      Fixes: 3e14e7a8 ("vivid-tpg: add hor/vert downsampling support to tpg_gen_text")
      Signed-off-by: NHans Verkuil <hans.verkuil@cisco.com>
      Reported-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Cc: <stable@vger.kernel.org>      # for v4.1 and up
      Signed-off-by: NMauro Carvalho Chehab <mchehab+samsung@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      04feb58d
    • J
      net: bcmgenet: fix OF child-node lookup · 90bedf4a
      Johan Hovold 提交于
      commit d397dbe606120a1ea1b11b0020c3f7a3852da5ac upstream.
      
      Use the new of_get_compatible_child() helper to lookup the mdio child
      node instead of using of_find_compatible_node(), which searches the
      entire tree from a given start node and thus can return an unrelated
      (i.e. non-child) node.
      
      This also addresses a potential use-after-free (e.g. after probe
      deferral) as the tree-wide helper drops a reference to its first
      argument (i.e. the node of the device being probed).
      
      Fixes: aa09677c ("net: bcmgenet: add MDIO routines")
      Cc: stable <stable@vger.kernel.org>     # 3.15
      Cc: David S. Miller <davem@davemloft.net>
      Reviewed-by: NFlorian Fainelli <f.fainelli@gmail.com>
      Signed-off-by: NJohan Hovold <johan@kernel.org>
      Signed-off-by: NRob Herring <robh@kernel.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      90bedf4a
    • M
      TC: Set DMA masks for devices · b0b62843
      Maciej W. Rozycki 提交于
      commit 3f2aa244ee1a0d17ed5b6c86564d2c1b24d1c96b upstream.
      
      Fix a TURBOchannel support regression with commit 205e1b7f
      ("dma-mapping: warn when there is no coherent_dma_mask") that caused
      coherent DMA allocations to produce a warning such as:
      
      defxx: v1.11 2014/07/01  Lawrence V. Stefani and others
      tc1: DEFTA at MMIO addr = 0x1e900000, IRQ = 20, Hardware addr = 08-00-2b-a3-a3-29
      ------------[ cut here ]------------
      WARNING: CPU: 0 PID: 1 at ./include/linux/dma-mapping.h:516 dfx_dev_register+0x670/0x678
      Modules linked in:
      CPU: 0 PID: 1 Comm: swapper Not tainted 4.19.0-rc6 #2
      Stack : ffffffff8009ffc0 fffffffffffffec0 0000000000000000 ffffffff80647650
              0000000000000000 0000000000000000 ffffffff806f5f80 ffffffffffffffff
              0000000000000000 0000000000000000 0000000000000001 ffffffff8065d4e8
              98000000031b6300 ffffffff80563478 ffffffff805685b0 ffffffffffffffff
              0000000000000000 ffffffff805d6720 0000000000000204 ffffffff80388df8
              0000000000000000 0000000000000009 ffffffff8053efd0 ffffffff806657d0
              0000000000000000 ffffffff803177f8 0000000000000000 ffffffff806d0000
              9800000003078000 980000000307b9e0 000000001e900000 ffffffff80067940
              0000000000000000 ffffffff805d6720 0000000000000204 ffffffff80388df8
              ffffffff805176c0 ffffffff8004dc78 0000000000000000 ffffffff80067940
              ...
      Call Trace:
      [<ffffffff8004dc78>] show_stack+0xa0/0x130
      [<ffffffff80067940>] __warn+0x128/0x170
      ---[ end trace b1d1e094f67f3bb2 ]---
      
      This is because the TURBOchannel bus driver fails to set the coherent
      DMA mask for devices enumerated.
      
      Set the regular and coherent DMA masks for TURBOchannel devices then,
      observing that the bus protocol supports a 34-bit (16GiB) DMA address
      space, by interpreting the value presented in the address cycle across
      the 32 `ad' lines as a 32-bit word rather than byte address[1].  The
      architectural size of the TURBOchannel DMA address space exceeds the
      maximum amount of RAM any actual TURBOchannel system in existence may
      have, hence both masks are the same.
      
      This removes the warning shown above.
      
      References:
      
      [1] "TURBOchannel Hardware Specification", EK-369AA-OD-007B, Digital
          Equipment Corporation, January 1993, Section "DMA", pp. 1-15 -- 1-17
      Signed-off-by: NMaciej W. Rozycki <macro@linux-mips.org>
      Signed-off-by: NPaul Burton <paul.burton@mips.com>
      Patchwork: https://patchwork.linux-mips.org/patch/20835/
      Fixes: 205e1b7f ("dma-mapping: warn when there is no coherent_dma_mask")
      Cc: stable@vger.kernel.org # 4.16+
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b0b62843