SuccessChanges

Summary

  1. sctp: remove sched init from sctp_stream_init (details)
  2. tcp: do not report TCP_CM_INQ of 0 for closed connections (details)
  3. tcp: Don't access TCP_SKB_CB before initializing it (details)
  4. tcp: handle inet_csk_reqsk_queue_add() failures (details)
  5. vxlan: Fix GRO cells race condition between receive and link delete (details)
  6. vxlan: test dev->flags & IFF_UP before calling gro_cells_receive() (details)
  7. net/mlx4_core: Fix reset flow when in command polling mode (details)
  8. net/mlx4_core: Fix locking in SRIOV mode when switching between events (details)
  9. net/mlx4_core: Fix qp mtt size calculation (details)
  10. net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports (details)
  11. net: hns3: fix to stop multiple HNS reset due to the AER changes (details)
  12. vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock (details)
  13. net: sched: flower: insert new filter to idr after setting its mask (details)
  14. f2fs: wait on atomic writes to count F2FS_CP_WB_DATA (details)
  15. perf/x86: Fixup typo in stub functions (details)
  16. ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against (details)
  17. ALSA: firewire-motu: fix construction of PCM frame for capture direction (details)
  18. ALSA: hda: Extend i915 component bind timeout (details)
  19. ALSA: hda - add more quirks for HP Z2 G4 and HP Z240 (details)
  20. ALSA: hda/realtek: Enable audio jacks of ASUS UX362FA with ALC294 (details)
  21. ALSA: hda/realtek - Reduce click noise on Dell Precision 5820 headphone (details)
  22. ALSA: hda/realtek: Enable headset MIC of Acer TravelMate X514-51T with (details)
  23. perf/x86/intel: Fix memory corruption (details)
  24. perf/x86/intel: Make dev_attr_allow_tsx_force_abort static (details)
  25. It's wrong to add len to sector_nr in raid10 reshape twice (details)
  26. drm: Block fb changes for async plane updates (details)
  27. Linux 5.0.3 (details)
  28. 9p: use inode->i_lock to protect i_size_write() under 32-bit (details)
  29. 9p/net: fix memory leak in p9_client_create (details)
  30. ASoC: fsl_esai: fix register setting issue in RIGHT_J mode (details)
  31. ASoC: codecs: pcm186x: fix wrong usage of DECLARE_TLV_DB_SCALE() (details)
  32. ASoC: codecs: pcm186x: Fix energysense SLEEP bit (details)
  33. iio: adc: exynos-adc: Fix NULL pointer exception on unbind (details)
  34. iio: adc: exynos-adc: Use proper number of channels for Exynos4x12 (details)
  35. mei: hbm: clean the feature flags on link reset (details)
  36. mei: bus: move hw module get/put to probe/release (details)
  37. stm class: Prevent division by zero (details)
  38. stm class: Fix an endless loop in channel allocation (details)
  39. crypto: caam - fix hash context DMA unmap size (details)
  40. crypto: ccree - fix missing break in switch statement (details)
  41. crypto: caam - fixed handling of sg list (details)
  42. crypto: caam - fix DMA mapping of stack memory (details)
  43. crypto: ccree - fix free of unallocated mlli buffer (details)
  44. crypto: ccree - unmap buffer before copying IV (details)
  45. crypto: ccree - don't copy zero size ciphertext (details)
  46. crypto: cfb - add missing 'chunksize' property (details)
  47. crypto: cfb - remove bogus memcpy() with src == dest (details)
  48. crypto: ofb - fix handling partial blocks and make thread-safe (details)
  49. crypto: ahash - fix another early termination in hash walk (details)
  50. crypto: rockchip - fix scatterlist nents error (details)
  51. crypto: rockchip - update new iv to device in multiple operations (details)
  52. dax: Flush partial PMDs correctly (details)
  53. nfit: Fix nfit_intel_shutdown_status() command submission (details)
  54. nfit: acpi_nfit_ctl(): Check out_obj->type in the right place (details)
  55. acpi/nfit: Fix bus command validation (details)
  56. nfit/ars: Attempt a short-ARS whenever the ARS state is idle at boot (details)
  57. nfit/ars: Attempt short-ARS even in the no_init_ars case (details)
  58. libnvdimm/label: Clear 'updating' flag after label-set update (details)
  59. libnvdimm, pfn: Fix over-trim in trim_pfn_device() (details)
  60. libnvdimm/pmem: Honor force_raw for legacy pmem regions (details)
  61. libnvdimm: Fix altmap reservation size calculation (details)
  62. fix cgroup_do_mount() handling of failure exits (details)
  63. crypto: aead - set CRYPTO_TFM_NEED_KEY if ->setkey() fails (details)
  64. crypto: aegis - fix handling chunked inputs (details)
  65. crypto: arm/crct10dif - revert to C code for short inputs (details)
  66. crypto: arm64/aes-neonbs - fix returning final keystream block (details)
  67. crypto: arm64/crct10dif - revert to C code for short inputs (details)
  68. crypto: hash - set CRYPTO_TFM_NEED_KEY if ->setkey() fails (details)
  69. crypto: morus - fix handling chunked inputs (details)
  70. crypto: pcbc - remove bogus memcpy()s with src == dest (details)
  71. crypto: skcipher - set CRYPTO_TFM_NEED_KEY if ->setkey() fails (details)
  72. crypto: testmgr - skip crc32c context test for ahash algorithms (details)
  73. crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP (details)
  74. crypto: x86/aesni-gcm - fix crash on empty plaintext (details)
  75. crypto: x86/morus - fix handling chunked inputs and MAY_SLEEP (details)
  76. crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling (details)
  77. crypto: arm64/aes-ccm - fix bugs in non-NEON fallback routine (details)
  78. CIFS: Fix leaking locked VFS cache pages in writeback retry (details)
  79. CIFS: Do not reset lease state to NONE on lease break (details)
  80. CIFS: Do not skip SMB2 message IDs on send failures (details)
  81. CIFS: Fix read after write for files with read caching (details)
  82. smb3: make default i/o size for smb3 mounts larger (details)
  83. tracing: Use strncpy instead of memcpy for string keys in hist triggers (details)
  84. tracing: Do not free iter->trace in fail path of tracing_open_pipe() (details)
  85. tracing/perf: Use strndup_user() instead of buggy open-coded version (details)
  86. vmw_balloon: release lock on error in vmballoon_reset() (details)
  87. xen: fix dom0 boot on huge systems (details)
  88. ACPI / device_sysfs: Avoid OF modalias creation for removed device (details)
  89. mmc: sdhci-esdhc-imx: fix HS400 timing issue (details)
  90. mmc: renesas_sdhi: Fix card initialization failure in high speed mode (details)
  91. mmc:fix a bug when max_discard is 0 (details)
  92. spi: ti-qspi: Fix mmap read when more than one CS in use (details)
  93. spi: pxa2xx: Setup maximum supported DMA transfer length (details)
  94. spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch (details)
  95. spi: spi-gpio: fix SPI_CS_HIGH capability (details)
  96. regulator: s2mps11: Fix steps for buck7, buck8 and LDO35 (details)
  97. regulator: max77620: Initialize values for DT properties (details)
  98. regulator: s2mpa01: Fix step values for some LDOs (details)
  99. mt76: fix corrupted software generated tx CCMP PN (details)
  100. clocksource/drivers/exynos_mct: Move one-shot check from tick clear to (details)
  101. clocksource/drivers/exynos_mct: Clear timer interrupt when shutdown (details)
  102. clocksource/drivers/arch_timer: Workaround for Allwinner A64 timer (details)
  103. s390: vfio_ap: link the vfio_ap devices to the vfio_ap bus subsystem (details)
  104. s390/setup: fix early warning messages (details)
  105. s390/virtio: handle find on invalid queue gracefully (details)
  106. scsi: virtio_scsi: don't send sc payload with tmfs (details)
  107. scsi: aacraid: Fix performance issue on logical drives (details)
  108. scsi: sd: Optimal I/O size should be a multiple of physical block size (details)
  109. scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock (details)
  110. scsi: qla2xxx: Fix LUN discovery if loop id is not assigned yet by (details)
  111. scsi: qla2xxx: Avoid PCI IRQ affinity mapping when multiqueue is not (details)
  112. scsi: qla2xxx: Use complete switch scan for RSCN events (details)
  113. fs/devpts: always delete dcache dentry-s in dput() (details)
  114. splice: don't merge into linked buffers (details)
  115. ovl: During copy up, first copy up data and then xattrs (details)
  116. ovl: Do not lose security.capability xattr over metadata file copy-up (details)
  117. m68k: Add -ffreestanding to CFLAGS (details)
  118. Btrfs: setup a nofs context for memory allocation at btrfs_create_tree() (details)
  119. Btrfs: setup a nofs context for memory allocation at __btrfs_set_acl (details)
  120. btrfs: scrub: fix circular locking dependency warning (details)
  121. btrfs: drop the lock on error in btrfs_dev_replace_cancel (details)
  122. btrfs: ensure that a DUP or RAID1 block group has exactly two stripes (details)
  123. btrfs: init csum_list before possible free (details)
  124. Btrfs: fix corruption reading shared and compressed extents after hole (details)
  125. Btrfs: fix deadlock between clone/dedupe and rename (details)
  126. soc: qcom: rpmh: Avoid accessing freed memory from batch API (details)
  127. libertas_tf: don't set URB_ZERO_PACKET on IN USB transfer (details)
  128. irqchip/gic-v3-its: Avoid parsing _indirect_ twice for Device table (details)
  129. irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code (details)
  130. x86/kprobes: Prohibit probing on optprobe template code (details)
  131. cpufreq: kryo: Release OPP tables on module removal (details)
  132. cpufreq: tegra124: add missing of_node_put() (details)
  133. cpufreq: pxa2xx: remove incorrect __init annotation (details)
  134. ext4: fix check of inode in swap_inode_boot_loader (details)
  135. ext4: cleanup pagecache before swap i_data (details)
  136. mm: hwpoison: fix thp split handing in soft_offline_in_use_page() (details)
  137. mm/vmalloc: fix size check for remap_vmalloc_range_partial() (details)
  138. mm/memory.c: do_fault: avoid usage of stale vm_area_struct (details)
  139. kernel/sysctl.c: add missing range check in do_proc_dointvec_minmax_conv (details)
  140. nvmem: core: don't check the return value of notifier chain call (details)
  141. device property: Fix the length used in PROPERTY_ENTRY_STRING() (details)
  142. intel_th: Don't reference unassigned outputs (details)
  143. parport_pc: fix find_superio io compare code, should use equal test. (details)
  144. i2c: tegra: fix maximum transfer size (details)
  145. i2c: tegra: update maximum transfer size (details)
  146. media: i2c: ov5640: Fix post-reset delay (details)
  147. gpio: pca953x: Fix dereference of irq data in shutdown (details)
  148. ext4: update quota information while swapping boot loader inode (details)
  149. ext4: add mask of ext4 flags to swap (details)
  150. ext4: fix crash during online resizing (details)
  151. dma: Introduce dma_max_mapping_size() (details)
  152. swiotlb: Introduce swiotlb_max_mapping_size() (details)
  153. swiotlb: Add is_swiotlb_active() function (details)
  154. PCI/ASPM: Use LTR if already enabled by platform (details)
  155. PCI/DPC: Fix print AER status in DPC event handling (details)
  156. PCI: qcom: Don't deassert reset GPIO during probe (details)
  157. PCI: dwc: skip MSI init if MSIs have been explicitly disabled (details)
  158. PCI: pciehp: Disable Data Link Layer State Changed event on suspend (details)
  159. PCI: pci-bridge-emul: Create per-bridge copy of register behavior (details)
  160. PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags (details)
  161. IB/hfi1: Close race condition on user context disable and close (details)
  162. IB/rdmavt: Fix loopback send with invalidate ordering (details)
  163. IB/rdmavt: Fix concurrency panics in QP post_send and modify to error (details)
  164. cxl: Wrap iterations over afu slices inside 'afu_list_lock' (details)
  165. ext2: Fix underflow in ext2_max_size() (details)
  166. clk: uniphier: Fix update register for CPU-gear (details)
  167. clk: clk-twl6040: Fix imprecise external abort for pdmclk (details)
  168. clk: samsung: exynos5: Fix possible NULL pointer exception on (details)
  169. clk: samsung: exynos5: Fix kfree() of const memory on setting (details)
  170. clk: ingenic: Fix round_rate misbehaving with non-integer dividers (details)
  171. clk: ingenic: Fix doc of ingenic_cgu_div_info (details)
  172. usb: chipidea: tegra: Fix missed ci_hdrc_remove_device() (details)
  173. usb: typec: tps6598x: handle block writes separately with plain-I2C (details)
  174. dmaengine: usb-dmac: Make DMAC system sleep callbacks explicit (details)
  175. serial: uartps: Fix stuck ISR if RX disabled with non-empty FIFO (details)
  176. serial: 8250_of: assume reg-shift of 2 for mrvl,mmp-uart (details)
  177. serial: 8250_pci: Fix number of ports for ACCES serial cards (details)
  178. serial: 8250_pci: Have ACCES cards that use the four port Pericom (details)
  179. jbd2: clear dirty flag when revoking a buffer from an older transaction (details)
  180. jbd2: fix compile warning when using JBUFFER_TRACE (details)
  181. selinux: add the missing walk_size + len check in (details)
  182. security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock (details)
  183. powerpc/32: Clear on-stack exception marker upon exception return (details)
  184. powerpc/wii: properly disable use of BATs when requested. (details)
  185. powerpc/powernv: Make opal log only readable by root (details)
  186. powerpc/83xx: Also save/restore SPRG4-7 during suspend (details)
  187. powerpc/kvm: Save and restore host AMR/IAMR/UAMOR (details)
  188. powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit (details)
  189. powerpc/64s/hash: Fix assert_slb_presence() use of the slbfee. (details)
  190. powerpc: Fix 32-bit KVM-PR lockup and host crash with MacOS guest (details)
  191. powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning (details)
  192. powerpc/hugetlb: Don't do runtime allocation of 16G pages in LPAR (details)
  193. powerpc/smp: Fix NMI IPI timeout (details)
  194. powerpc/smp: Fix NMI IPI xmon timeout (details)
  195. powerpc/traps: fix recoverability of machine check handling on book3s/32 (details)
  196. powerpc/traps: Fix the message printed when stack overflows (details)
  197. ARM: s3c24xx: Fix boolean expressions in osiris_dvs_notify (details)
  198. arm64: Fix HCR.TGE status for NMI contexts (details)
  199. arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals (details)
  200. arm64: debug: Ensure debug handlers check triggering exception level (details)
  201. arm64: KVM: Fix architecturally invalid reset value for FPEXC32_EL2 (details)
  202. Revert "KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()" (details)
  203. ipmi_si: Fix crash when using hard-coded device (details)
  204. ipmi_si: fix use-after-free of resource->name (details)
  205. dm: fix to_sector() for 32bit (details)
  206. dm integrity: limit the rate of error messages (details)
  207. media: cx25840: mark pad sig_types to fix cx231xx init (details)
  208. mfd: sm501: Fix potential NULL pointer dereference (details)
  209. cpcap-charger: generate events for userspace (details)
  210. cpuidle: governor: Add new governors to cpuidle_governors again (details)
  211. NFS: Fix I/O request leakages (details)
  212. NFS: Fix an I/O request leakage in nfs_do_recoalesce (details)
  213. NFS: Don't recoalesce on error in nfs_pageio_complete_mirror() (details)
  214. nfsd: fix performance-limiting session calculation (details)
  215. nfsd: fix memory corruption caused by readdir (details)
  216. nfsd: fix wrong check in write_v4_end_grace() (details)
  217. NFSv4.1: Reinitialise sequence results before retransmitting a request (details)
  218. svcrpc: fix UDP on servers with lots of threads (details)
  219. PM / wakeup: Rework wakeup source timer cancellation (details)
  220. PM / OPP: Update performance state when freq == old_freq (details)
  221. bcache: never writeback a discard operation (details)
  222. bcache: treat stale && dirty keys as bad keys (details)
  223. bcache: use (REQ_META|REQ_PRIO) to indicate bio for metadata (details)
  224. stable-kernel-rules.rst: add link to networking patch queue (details)
  225. vt: perform safe console erase in the right order (details)
  226. x86/unwind/orc: Fix ORC unwind table alignment (details)
  227. perf intel-pt: Fix CYC timestamp calculation after OVF (details)
  228. perf tools: Fix split_kallsyms_for_kcore() for trampoline symbols (details)
  229. perf auxtrace: Define auxtrace record alignment (details)
  230. perf intel-pt: Fix overlap calculation for padding (details)
  231. perf/x86/intel/uncore: Fix client IMC events return huge result (details)
  232. perf intel-pt: Fix divide by zero when TSC is not available (details)
  233. md: Fix failed allocation of md_register_thread (details)
  234. x86/kvmclock: set offset for kvm unstable clock (details)
  235. x86/ftrace: Fix warning and considate ftrace_jmp_replace() and (details)
  236. tpm/tpm_crb: Avoid unaligned reads in crb_recv() (details)
  237. tpm: Unify the send callback behaviour (details)
  238. rcu: Do RCU GP kthread self-wakeup from softirq and interrupt (details)
  239. media: imx: prpencvf: Stop upstream before disabling IDMA channel (details)
  240. media: lgdt330x: fix lock status reporting (details)
  241. media: sun6i: Fix CSI regmap's max_register (details)
  242. media: uvcvideo: Avoid NULL pointer dereference at the end of streaming (details)
  243. media: vimc: Add vimc-streamer for stream control (details)
  244. media: imx-csi: Input connections to CSI should be optional (details)
  245. media: imx: csi: Disable CSI immediately after last EOF (details)
  246. media: imx: csi: Stop upstream before disabling IDMA channel (details)
  247. drm/fb-helper: generic: Fix drm_fbdev_client_restore() (details)
  248. drm/radeon/evergreen_cs: fix missing break in switch statement (details)
  249. drm/amd/powerplay: correct power reading on fiji (details)
  250. drm/amd/display: don't call dm_pp_ function from an fpu block (details)
  251. KVM: Call kvm_arch_memslots_updated() before updating memslots (details)
  252. KVM: VMX: Compare only a single byte for VMCS' "launched" in vCPU-run (details)
  253. KVM: VMX: Zero out *all* general purpose registers after VM-Exit (details)
  254. KVM: x86/mmu: Detect MMIO generation wrap in any address space (details)
  255. KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux (details)
  256. KVM: nVMX: Sign extend displacements of VMX instr's mem operands (details)
  257. KVM: nVMX: Apply addr size mask to effective address for VMX (details)
  258. KVM: nVMX: Ignore limit checks on VMX instructions using flat segments (details)
  259. KVM: nVMX: Check a single byte for VMCS "launched" in nested early (details)
  260. net: dsa: lantiq_gswip: fix use-after-free on failed probe (details)
  261. net: dsa: lantiq_gswip: fix OF child-node lookups (details)
  262. s390/setup: fix boot crash for machine without EDAT-1 (details)
  263. SUNRPC: Prevent thundering herd when the socket is not connected (details)
  264. SUNRPC: Fix up RPC back channel transmission (details)
  265. SUNRPC: Respect RPC call timeouts when retrying transmission (details)
  266. Linux 5.0.4 (details)
  267. ALSA: hda - add Lenovo IdeaCentre B550 to the power_save_blacklist (details)
  268. ALSA: firewire-motu: use 'version' field of unit directory to identify (details)
  269. mmc: pxamci: fix enum type confusion (details)
  270. mmc: alcor: fix DMA reads (details)
  271. mmc: mxcmmc: "Revert mmc: mxcmmc: handle highmem pages" (details)
  272. mmc: renesas_sdhi: limit block count to 16 bit for old revisions (details)
  273. drm/amdgpu: fix invalid use of change_bit (details)
  274. drm/vmwgfx: Don't double-free the mode stored in par->set_mode (details)
  275. drm/vmwgfx: Return 0 when gmrid::get_node runs out of ID's (details)
  276. iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE (details)
  277. iommu/iova: Fix tracking of recently failed iova address (details)
  278. libceph: wait for latest osdmap in ceph_monc_blacklist_add() (details)
  279. udf: Fix crash on IO error during truncate (details)
  280. mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction. (details)
  281. MIPS: Ensure ELF appended dtb is relocated (details)
  282. MIPS: Fix kernel crash for R6 in jump label branch function (details)
  283. powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038 (details)
  284. powerpc/security: Fix spectre_v2 reporting (details)
  285. net/mlx5: Fix DCT creation bad flow (details)
  286. scsi: core: Avoid that a kernel warning appears during system resume (details)
  287. scsi: qla2xxx: Fix FC-AL connection target discovery (details)
  288. scsi: ibmvscsi: Protect ibmvscsi_head from concurrent modificaiton (details)
  289. scsi: ibmvscsi: Fix empty event pool access during host removal (details)
  290. futex: Ensure that futex address is aligned in handle_futex_death() (details)
  291. cifs: allow guest mounts to work for smb3.11 (details)
  292. perf probe: Fix getting the kernel map (details)
  293. objtool: Move objtool_file struct off the stack (details)
  294. irqchip/gic-v3-its: Fix comparison logic in lpi_range_cmp (details)
  295. clocksource/drivers/riscv: Fix clocksource mask (details)
  296. SMB3: Fix SMB3.1.1 guest mounts to Samba (details)
  297. ALSA: hda - Don't trigger jackpoll_work in azx_resume (details)
  298. ALSA: ac97: Fix of-node refcount unbalance (details)
  299. ext4: fix NULL pointer dereference while journal is aborted (details)
  300. ext4: fix data corruption caused by unaligned direct AIO (details)
  301. ext4: brelse all indirect buffer in ext4_ind_remove_space() (details)
  302. media: v4l2-ctrls.c/uvc: zero v4l2_event (details)
  303. Bluetooth: hci_uart: Check if socket buffer is ERR_PTR in h4_recv_buf() (details)
  304. Bluetooth: Fix decrementing reference count twice in releasing socket (details)
  305. Bluetooth: hci_ldisc: Initialize hci_dev before open() (details)
  306. Bluetooth: hci_ldisc: Postpone HCI_UART_PROTO_READY bit set in (details)
  307. drm/vkms: Fix flush_work() without INIT_WORK(). (details)
  308. RDMA/cma: Rollback source IP address if failing to acquire device (details)
  309. f2fs: fix to avoid deadlock of atomic file operations (details)
  310. aio: simplify - and fix - fget/fput for io_submit() (details)
  311. netfilter: ebtables: remove BUGPRINT messages (details)
  312. loop: access lo_backing_file only when the loop device is Lo_bound (details)
  313. x86/unwind: Handle NULL pointer calls better in frame unwinder (details)
  314. x86/unwind: Add hardcoded ORC entry for NULL (details)
  315. locking/lockdep: Add debug_locks check in __lock_downgrade() (details)
  316. ALSA: hda - Record the current power state before suspend/resume calls (details)
  317. ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec (details)
  318. Linux 5.0.5 (details)
  319. Bluetooth: Check L2CAP option sizes returned from l2cap_get_conf_opt (details)
  320. Bluetooth: Verify that l2cap_get_conf_opt provides large enough buffer (details)
  321. netfilter: nf_tables: fix set double-free in abort path (details)
  322. dccp: do not use ipv6 header for ipv4 flow (details)
  323. genetlink: Fix a memory leak on error path (details)
  324. gtp: change NET_UDP_TUNNEL dependency to select (details)
  325. ipv6: make ip6_create_rt_rcu return ip6_null_entry instead of NULL (details)
  326. mac8390: Fix mmio access size probe (details)
  327. mISDN: hfcpci: Test both vendor & device ID for Digium HFC4S (details)
  328. net: aquantia: fix rx checksum offload for UDP/TCP over IPv6 (details)
  329. net: datagram: fix unbounded loop in __skb_try_recv_datagram() (details)
  330. net/packet: Set __GFP_NOWARN upon allocation in alloc_pg_vec (details)
  331. net: phy: meson-gxl: fix interrupt support (details)
  332. net: rose: fix a possible stack overflow (details)
  333. net: stmmac: fix memory corruption with large MTUs (details)
  334. net-sysfs: call dev_hold if kobject_init_and_add success (details)
  335. net: usb: aqc111: Extend HWID table by QNAP device (details)
  336. packets: Always register packet sk in the same order (details)
  337. rhashtable: Still do rehash when we get EEXIST (details)
  338. sctp: get sctphdr by offset in sctp_compute_cksum (details)
  339. sctp: use memdup_user instead of vmemdup_user (details)
  340. tcp: do not use ipv6 header for ipv4 flow (details)
  341. tipc: allow service ranges to be connect()'ed on RDM/DGRAM (details)
  342. tipc: change to check tipc_own_id to return in tipc_net_stop (details)
  343. tipc: fix cancellation of topology subscriptions (details)
  344. tun: properly test for IFF_UP (details)
  345. vrf: prevent adding upper devices (details)
  346. vxlan: Don't call gro_cells_destroy() before device is unregistered (details)
  347. thunderx: enable page recycling for non-XDP case (details)
  348. thunderx: eliminate extra calls to put_page() for pages held for (details)
  349. net: dsa: mv88e6xxx: fix few issues in mv88e6390x_port_set_cmode (details)
  350. net: mii: Fix PAUSE cap advertisement from linkmode_adv_to_lcl_adv_t() (details)
  351. net: phy: don't clear BMCR in genphy_soft_reset (details)
  352. r8169: fix cable re-plugging issue (details)
  353. ila: Fix rhashtable walker list corruption (details)
  354. tun: add a missing rcu_read_unlock() in error path (details)
  355. powerpc/fsl: Fix the flush of branch predictor. (details)
  356. Btrfs: fix incorrect file size after shrinking truncate and fsync (details)
  357. btrfs: remove WARN_ON in log_dir_items (details)
  358. btrfs: don't report readahead errors and don't update statistics (details)
  359. btrfs: raid56: properly unmap parity page in finish_parity_scrub() (details)
  360. btrfs: Fix bound checking in qgroup_trace_new_subtree_blocks (details)
  361. btrfs: Avoid possible qgroup_rsv_size overflow in (details)
  362. Btrfs: fix assertion failure on fsync with NO_HOLES enabled (details)
  363. locks: wake any locks blocked on request before deadlock check (details)
  364. tracing: initialize variable in create_dyn_event() (details)
  365. ARM: imx6q: cpuidle: fix bug that CPU might not wake up at expected time (details)
  366. powerpc: bpf: Fix generation of load/store DW instructions (details)
  367. vfio: ccw: only free cp on final interrupt (details)
  368. NFS: Fix nfs4_lock_state refcounting in nfs4_alloc_{lock,unlock}data() (details)
  369. NFS: fix mount/umount race in nlmclnt. (details)
  370. NFSv4.1 don't free interrupted slot on open (details)
  371. net: dsa: qca8k: remove leftover phy accessors (details)
  372. ALSA: rawmidi: Fix potential Spectre v1 vulnerability (details)
  373. ALSA: seq: oss: Fix Spectre v1 vulnerability (details)
  374. ALSA: pcm: Fix possible OOB access in PCM oss plugins (details)
  375. ALSA: pcm: Don't suspend stream in unrecoverable PCM state (details)
  376. ALSA: hda/realtek - Fixed Headset Mic JD not stable (details)
  377. ALSA: hda/realtek: merge alc_fixup_headset_jack to (details)
  378. ALSA: hda/realtek - Add support headset mode for DELL WYSE AIO (details)
  379. ALSA: hda/realtek - Add support headset mode for New DELL WYSE NB (details)
  380. ALSA: hda/realtek: Enable headset MIC of Acer AIO with ALC286 (details)
  381. ALSA: hda/realtek: Enable headset MIC of Acer Aspire Z24-890 with ALC286 (details)
  382. ALSA: hda/realtek - Add support for Acer Aspire E5-523G/ES1-432 headset (details)
  383. ALSA: hda/realtek: Enable ASUS X441MB and X705FD headset MIC with ALC256 (details)
  384. ALSA: hda/realtek: Enable headset mic of ASUS P5440FF with ALC256 (details)
  385. ALSA: hda/realtek: Enable headset MIC of ASUS X430UN and X512DK with (details)
  386. ALSA: hda/realtek - Fix speakers on Acer Predator Helios 500 Ryzen (details)
  387. kbuild: modversions: Fix relative CRC byte order interpretation (details)
  388. fs/open.c: allow opening only regular files during execve() (details)
  389. ocfs2: fix inode bh swapping mixup in ocfs2_reflink_inodes_lock (details)
  390. scsi: sd: Fix a race between closing an sd device and sd I/O (details)
  391. scsi: sd: Quiesce warning if device does not report optimal I/O size (details)
  392. scsi: zfcp: fix rport unblock if deleted SCSI devices on Scsi_Host (details)
  393. scsi: zfcp: fix scsi_eh host reset with port_forced ERP for non-NPIV FCP (details)
  394. drm/rockchip: vop: reset scale mode when win is disabled (details)
  395. tty/serial: atmel: Add is_half_duplex helper (details)
  396. tty/serial: atmel: RS485 HD w/DMA: enable RX after TX is stopped (details)
  397. tty: mxs-auart: fix a potential NULL pointer dereference (details)
  398. tty: atmel_serial: fix a potential NULL pointer dereference (details)
  399. tty: serial: qcom_geni_serial: Initialize baud in (details)
  400. staging: comedi: ni_mio_common: Fix divide-by-zero for DIO cmdtest (details)
  401. staging: olpc_dcon_xo_1: add missing 'const' qualifier (details)
  402. staging: speakup_soft: Fix alternate speech with other synths (details)
  403. staging: vt6655: Remove vif check from vnt_interrupt (details)
  404. staging: vt6655: Fix interrupt race condition on device start up. (details)
  405. staging: erofs: fix to handle error path of erofs_vmap() (details)
  406. staging: erofs: fix error handling when failed to read compresssed data (details)
  407. staging: erofs: keep corrupted fs from crashing kernel in (details)
  408. serial: max310x: Fix to avoid potential NULL pointer dereference (details)
  409. serial: mvebu-uart: Fix to avoid a potential NULL pointer dereference (details)
  410. serial: sh-sci: Fix setting SCSCR_TIE while transferring data (details)
  411. USB: serial: cp210x: add new device id (details)
  412. USB: serial: ftdi_sio: add additional NovaTech products (details)
  413. USB: serial: mos7720: fix mos_parport refcount imbalance on error path (details)
  414. USB: serial: option: set driver_info for SIM5218 and compatibles (details)
  415. USB: serial: option: add support for Quectel EM12 (details)
  416. USB: serial: option: add Olicard 600 (details)
  417. ACPI / CPPC: Fix guaranteed performance handling (details)
  418. Disable kgdboc failed by echo space to (details)
  419. fs/proc/proc_sysctl.c: fix NULL pointer dereference in put_links (details)
  420. drivers/block/zram/zram_drv.c: fix idle/writeback string compare (details)
  421. blk-mq: fix sbitmap ws_active for shared tags (details)
  422. cpufreq: intel_pstate: Also use CPPC nominal_perf for base_frequency (details)
  423. cpufreq: scpi: Fix use after free (details)
  424. drm/vgem: fix use-after-free when drm_gem_handle_create() fails (details)
  425. drm/vkms: fix use-after-free when drm_gem_handle_create() fails (details)
  426. drm/i915: Mark AML 0x87CA as ULX (details)
  427. drm/i915/gvt: Fix MI_FLUSH_DW parsing with correct index check (details)
  428. drm/i915/icl: Fix the TRANS_DDI_FUNC_CTL2 bitfield macro (details)
  429. gpio: exar: add a check for the return value of ida_simple_get fails (details)
  430. gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input (details)
  431. phy: sun4i-usb: Support set_mode to USB_HOST for non-OTG PHYs (details)
  432. usb: mtu3: fix EXTCON dependency (details)
  433. USB: gadget: f_hid: fix deadlock in f_hidg_write() (details)
  434. usb: common: Consider only available nodes for dr_mode (details)
  435. mm/memory.c: fix modifying of page protection by insert_pfn() (details)
  436. usb: host: xhci-rcar: Add XHCI_TRUST_TX_LENGTH quirk (details)
  437. xhci: Fix port resume done detection for SS ports with LPM enabled (details)
  438. usb: xhci: dbc: Don't free all memory with spinlock held (details)
  439. xhci: Don't let USB3 ports stuck in polling state prevent suspend (details)
  440. usb: cdc-acm: fix race during wakeup blocking TX traffic (details)
  441. usb: typec: tcpm: Try PD-2.0 if sink does not respond to 3.0 source-caps (details)
  442. usb: typec: Fix unchecked return value (details)
  443. mm/hotplug: fix offline undo_isolate_page_range() (details)
  444. mm: add support for kmem caches in DMA32 zone (details)
  445. iommu/io-pgtable-arm-v7s: request DMA32 memory, and improve debugging (details)
  446. mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified (details)
  447. mm/debug.c: fix __dump_page when mapping->host is not set (details)
  448. mm/memory_hotplug.c: fix notification in offline error path (details)
  449. mm/page_isolation.c: fix a wrong flag in set_migratetype_isolate() (details)
  450. mm/migrate.c: add missing flush_dcache_page for non-mapped page migrate (details)
  451. perf pmu: Fix parser error for uncore event alias (details)
  452. perf intel-pt: Fix TSC slip (details)
  453. objtool: Query pkg-config for libelf location (details)
  454. powerpc/pseries/energy: Use OF accessor functions to read (details)
  455. powerpc/64: Fix memcmp reading past the end of src/dest (details)
  456. powerpc/pseries/mce: Fix misleading print for TLB mutlihit (details)
  457. watchdog: Respect watchdog cpumask on CPU hotplug (details)
  458. cpu/hotplug: Prevent crash when CPU bringup fails on (details)
  459. x86/smp: Enforce CONFIG_HOTPLUG_CPU when SMP=y (details)
  460. KVM: Reject device ioctls from processes other than the VM's creator (details)
  461. KVM: x86: Emulate MSR_IA32_ARCH_CAPABILITIES on AMD hosts (details)
  462. KVM: x86: update %rip after emulating IO (details)
  463. bpf: do not restore dst_reg when cur_state is freed (details)
  464. mt76x02u: use usb_bulk_msg to upload firmware (details)
  465. Linux 5.0.6 (details)
  466. ext4: cleanup bh release code in ext4_ind_remove_space() (details)
  467. CIFS: fix POSIX lock leak and invalid ptr deref (details)
  468. nvme-fc: fix numa_node when dev is null (details)
  469. nvme-loop: init nvmet_ctrl fatal_err_work when allocate (details)
  470. h8300: use cc-cross-prefix instead of hardcoding h8300-unknown-linux- (details)
  471. f2fs: fix to adapt small inline xattr space in __find_inline_xattr() (details)
  472. f2fs: fix to avoid deadlock in f2fs_read_inline_dir() (details)
  473. apparmor: fix double free when unpack of secmark rules fails (details)
  474. tracing: kdb: Fix ftdump to not sleep (details)
  475. net/mlx5e: Fix access to non-existing receive queue (details)
  476. net/mlx5: Avoid panic when setting vport rate (details)
  477. net/mlx5: Avoid panic when setting vport mac, getting vport config (details)
  478. xsk: fix to reject invalid flags in xsk_bind (details)
  479. clk: ti: clkctrl: Fix clkdm_name regression for TI_CLK_CLKCTRL_COMPAT (details)
  480. gpio: gpio-omap: fix level interrupt idling (details)
  481. include/linux/relay.h: fix percpu annotation in struct rchan (details)
  482. sysctl: handle overflow for file-max (details)
  483. net: stmmac: Avoid sometimes uninitialized Clang warnings (details)
  484. enic: fix build warning without CONFIG_CPUMASK_OFFSTACK (details)
  485. libbpf: force fixdep compilation at the start of the build (details)
  486. scsi: hisi_sas: Set PHY linkrate when disconnected (details)
  487. scsi: hisi_sas: Fix a timeout race of driver internal and SMP IO (details)
  488. iio: adc: fix warning in Qualcomm PM8xxx HK/XOADC driver (details)
  489. x86/hyperv: Fix kernel panic when kexec on HyperV (details)
  490. perf c2c: Fix c2c report for empty numa node (details)
  491. mm/sparse: fix a bad comparison (details)
  492. mm/cma.c: cma_declare_contiguous: correct err handling (details)
  493. mm/page_ext.c: fix an imbalance with kmemleak (details)
  494. mm, swap: bounds check swap_info array accesses to avoid NULL derefs (details)
  495. docs/core-api/mm: fix user memory accessors formatting (details)
  496. mm,oom: don't kill global init via memory.oom.group (details)
  497. memcg: killed threads should not invoke memcg OOM killer (details)
  498. mm, mempolicy: fix uninit memory access (details)
  499. mm/vmalloc.c: fix kernel BUG at mm/vmalloc.c:512! (details)
  500. mm/slab.c: kmemleak no scan alien caches (details)
  501. ocfs2: fix a panic problem caused by o2cb_ctl (details)
  502. f2fs: do not use mutex lock in atomic context (details)
  503. f2fs: fix to data block override node segment by mistake (details)
  504. fs/file.c: initialize init_files.resize_wait (details)
  505. page_poison: play nicely with KASAN (details)
  506. kasan: fix kasan_check_read/write definitions (details)
  507. cifs: use correct format characters (details)
  508. dm thin: add sanity checks to thin-pool and external snapshot creation (details)
  509. f2fs: fix to check inline_xattr_size boundary correctly (details)
  510. cifs: Accept validate negotiate if server return NT_STATUS_NOT_SUPPORTED (details)
  511. cifs: Fix NULL pointer dereference of devname (details)
  512. perf beauty msg_flags: Add missing %s lost when adding prefix (details)
  513. netfilter: nf_tables: check the result of dereferencing (details)
  514. PCI: mediatek: Fix memory mapped IO range size computation (details)
  515. netfilter: conntrack: tcp: only close if RST matches exact sequence (details)
  516. iommu/vt-d: Disable ATS support on untrusted devices (details)
  517. jbd2: fix invalid descriptor block checksum (details)
  518. ext4: fix bigalloc cluster freeing when hole punching under load (details)
  519. fs: fix guard_bio_eod to check for real EOD errors (details)
  520. tools lib traceevent: Fix buffer overflow in arg_eval (details)
  521. mm/resource: Return real error codes from walk failures (details)
  522. PCI/PME: Fix hotplug/sysfs remove deadlock in pcie_pme_remove() (details)
  523. wil6210: check null pointer in _wil_cfg80211_merge_extra_ies (details)
  524. mt76: fix a leaked reference by adding a missing of_node_put (details)
  525. ath10k: Fix the wrong updation of BW in tx_stats debugfs entry (details)
  526. lockdep/lib/tests: Fix run_tests.sh (details)
  527. crypto: crypto4xx - add missing of_node_put after of_device_is_available (details)
  528. crypto: cavium/zip - fix collision with generic cra_driver_name (details)
  529. tools/bpf: selftests: add map lookup to test_map_in_map bpf prog (details)
  530. usb: chipidea: Grab the (legacy) USB PHY by phandle first (details)
  531. powerpc/powernv/ioda: Fix locked_vm counting for memory used by IOMMU (details)
  532. scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c (details)
  533. kbuild: invoke syncconfig if include/config/auto.conf.cmd is missing (details)
  534. kbuild: make -r/-R effective in top Makefile for old Make versions (details)
  535. btrfs: save drop_progress if we drop refs at all (details)
  536. drm/amd/display: Fix reference counting for struct dc_sink. (details)
  537. ath10k: don't report unset rssi values to mac80211 (details)
  538. powerpc/xmon: Fix opcode being uninitialized in print_insn_powerpc (details)
  539. coresight: etm4x: Add support to enable ETMv4.2 (details)
  540. serial: 8250_pxa: honor the port number from devicetree (details)
  541. ARM: 8840/1: use a raw_spinlock_t in unwind (details)
  542. ARM: 8845/1: use unified assembler in c files (details)
  543. iommu/io-pgtable-arm-v7s: Only kmemleak_ignore L2 tables (details)
  544. powerpc/hugetlb: Handle mmap_min_addr correctly in get_unmapped_area (details)
  545. net: dsa: mv88e6xxx: Default CMODE to 1000BaseX only on 6390X (details)
  546. ice: fix ice_remove_rule_internal vsi_list handling (details)
  547. perf script: Handle missing fields with -F +.. (details)
  548. btrfs: qgroup: Make qgroup async transaction commit more aggressive (details)
  549. btrfs: don't enospc all tickets on flush failure (details)
  550. mmc: omap: fix the maximum timeout setting (details)
  551. net: dsa: mv88e6xxx: Add lockdep classes to fix false positive splat (details)
  552. net: hns3: fix setting of the hns reset_type for rdma hw errors (details)
  553. veth: Fix -Wformat-truncation (details)
  554. e1000e: Fix -Wformat-truncation warnings (details)
  555. mlxsw: spectrum: Avoid -Wformat-truncation warnings (details)
  556. i2c: Allow recovery of the initial IRQ by an I2C client device. (details)
  557. platform/x86: ideapad-laptop: Fix no_hw_rfkill_list for Lenovo RESCUER (details)
  558. platform/mellanox: mlxreg-hotplug: Fix KASAN warning (details)
  559. loop: set GENHD_FL_NO_PART_SCAN after blkdev_reread_part() (details)
  560. i2c: designware: Do not allow i2c_dw_xfer() calls while suspended (details)
  561. IB/mlx4: Increase the timeout for CM cache (details)
  562. clk: fractional-divider: check parent rate only if flag is set (details)
  563. perf annotate: Fix getting source line failure (details)
  564. powerpc/44x: Force PCI on for CURRITUCK (details)
  565. ASoC: qcom: Fix of-node refcount unbalance in qcom_snd_parse_of() (details)
  566. cpufreq: acpi-cpufreq: Report if CPU doesn't support boost technologies (details)
  567. efi: cper: Fix possible out-of-bounds access (details)
  568. s390/ism: ignore some errors during deregistration (details)
  569. scsi: megaraid_sas: return error when create DMA pool failed (details)
  570. scsi: fcoe: make use of fip_mode enum complete (details)
  571. drm/amd/display: Clear stream->mode_changed after commit (details)
  572. perf test: Fix failure of 'evsel-tp-sched' test on s390 (details)
  573. mwifiex: don't advertise IBSS features without FW support (details)
  574. perf report: Don't shadow inlined symbol with different addr range (details)
  575. SoC: imx-sgtl5000: add missing put_device() (details)
  576. media: ov7740: fix runtime pm initialization (details)
  577. media: sh_veu: Correct return type for mem2mem buffer helpers (details)
  578. media: s5p-jpeg: Correct return type for mem2mem buffer helpers (details)
  579. media: rockchip/rga: Correct return type for mem2mem buffer helpers (details)
  580. media: s5p-g2d: Correct return type for mem2mem buffer helpers (details)
  581. media: mx2_emmaprp: Correct return type for mem2mem buffer helpers (details)
  582. media: mtk-jpeg: Correct return type for mem2mem buffer helpers (details)
  583. media: rockchip/vpu: Correct return type for mem2mem buffer helpers (details)
  584. mt76: usb: do not run mt76u_queues_deinit twice (details)
  585. gpio: of: Apply regulator-gpio quirk only to enable-gpios (details)
  586. xen/gntdev: Do not destroy context while dma-bufs are in use (details)
  587. vfs: fix preadv64v2 and pwritev64v2 compat syscalls with offset == -1 (details)
  588. HID: intel-ish-hid: avoid binding wrong ishtp_cl_device (details)
  589. cgroup, rstat: Don't flush subtree root unless necessary (details)
  590. efi: Fix build error due to enum collision between efi.h and ima.h (details)
  591. drm/sched: Fix entities with 0 rqs. (details)
  592. regulator: core: Take lock before applying system load (details)
  593. jbd2: fix race when writing superblock (details)
  594. leds: lp55xx: fix null deref on firmware load failure (details)
  595. tools build: Add -lrt to FEATURE_CHECK_LDFLAGS-libaio (details)
  596. tools build: Add test-reallocarray.c to test-all.c to fix the build (details)
  597. perf beauty waitid options: Fix up prefix showing logic (details)
  598. perf trace: Check if the 'fd' is negative when mapping it to pathname (details)
  599. perf report: Add s390 diagnosic sampling descriptor size (details)
  600. perf coresight: Do not test for libopencsd by default (details)
  601. iwlwifi: pcie: fix emergency path (details)
  602. ACPI / video: Refactor and fix dmi_is_desktop() (details)
  603. selftests: ir: fix warning: "%s" directive output may be truncated ’ (details)
  604. selftests: skip seccomp get_metadata test if not real root (details)
  605. kprobes: Prohibit probing on bsearch() (details)
  606. kprobes: Prohibit probing on RCU debug routine (details)
  607. netfilter: conntrack: fix cloned unconfirmed skb->_nfct race in (details)
  608. ARM: 8833/1: Ensure that NEON code always compiles with Clang (details)
  609. ARM: dts: meson8b: fix the Ethernet data line signals in eth_rgmii_pins (details)
  610. ALSA: PCM: check if ops are defined before suspending PCM (details)
  611. ath10k: fix shadow register implementation for WCN3990 (details)
  612. usb: f_fs: Avoid crash due to out-of-scope stack ptr access (details)
  613. sched/topology: Fix percpu data types in struct sd_data & struct s_data (details)
  614. bcache: fix input overflow to cache set sysfs file io_error_halflife (details)
  615. bcache: fix input overflow to sequential_cutoff (details)
  616. bcache: fix potential div-zero error of writeback_rate_i_term_inverse (details)
  617. bcache: improve sysfs_strtoul_clamp() (details)
  618. genirq: Avoid summation loops for /proc/stat (details)
  619. net: marvell: mvpp2: fix stuck in-band SGMII negotiation (details)
  620. iw_cxgb4: fix srqidx leak during connection abort (details)
  621. net: phy: consider latched link-down status in polling mode (details)
  622. fbdev: fbmem: fix memory access if logo is bigger than the screen (details)
  623. cdrom: Fix race condition in cdrom_sysctl_register (details)
  624. drm: rcar-du: add missing of_node_put (details)
  625. drm/amd/display: Don't re-program planes for DPMS changes (details)
  626. bpf: test_maps: fix possible out of bound access warning (details)
  627. x86/kexec: Fill in acpi_rsdp_addr from the first kernel (details)
  628. powerpc/ptrace: Mitigate potential Spectre v1 (details)
  629. drm/amd/display: Disconnect mpcc when changing tg (details)
  630. perf/aux: Make perf_event accessible to setup_aux() (details)
  631. e1000e: fix cyclic resets at link up with active tx (details)
  632. e1000e: Exclude device from suspend direct complete optimization (details)
  633. platform/x86: intel_pmc_core: Fix PCH IP sts reading (details)
  634. i2c: of: Try to find an I2C adapter matching the parent (details)
  635. staging: spi: mt7621: Add return code check on device_reset() (details)
  636. iwlwifi: mvm: fix RFH config command with >=10 CPUs (details)
  637. ASoC: fsl-asoc-card: fix object reference leaks in fsl_asoc_card_probe (details)
  638. sched/debug: Initialize sd_sysctl_cpus if !CONFIG_CPUMASK_OFFSTACK (details)
  639. efi/memattr: Don't bail on zero VA if it equals the region's PA (details)
  640. sched/core: Use READ_ONCE()/WRITE_ONCE() in (details)
  641. drm/vkms: Bugfix racing hrtimer vblank handle (details)
  642. drm/vkms: Bugfix extra vblank frame (details)
  643. ARM: dts: lpc32xx: Remove leading 0x and 0s from bindings notation (details)
  644. efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted (details)
  645. soc: qcom: gsbi: Fix error handling in gsbi_probe() (details)
  646. drm/msm/dpu: Convert to a chained irq chip (details)
  647. mt7601u: bump supported EEPROM version (details)
  648. ARM: 8830/1: NOMMU: Toggle only bits in EXC_RETURN we are really care of (details)
  649. ARM: avoid Cortex-A9 livelock on tight dmb loops (details)
  650. block, bfq: fix in-service-queue check for queue merging (details)
  651. block, bfq: fix queue removal from weights tree (details)
  652. bpf: fix missing prototype warnings (details)
  653. selftests/bpf: skip verifier tests for unsupported program types (details)
  654. powerpc/64s: Clear on-stack exception marker upon exception return (details)
  655. cgroup/pids: turn cgroup_subsys->free() into cgroup_subsys->release() to (details)
  656. backlight: pwm_bl: Use gpiod_get_value_cansleep() to get initial state (details)
  657. tty: increase the default flip buffer limit to 2*640K (details)
  658. powerpc/pseries: Perform full re-add of CPU for topology update (details)
  659. drm/amd/display: Enable vblank interrupt during CRC capture (details)
  660. ALSA: dice: add support for Solid State Logic Duende Classic/Mini (details)
  661. regulator: mcp16502: Include linux/gpio/consumer.h to fix build error (details)
  662. usb: dwc3: gadget: Fix OTG events when gadget driver isn't loaded (details)
  663. platform/x86: intel-hid: Missing power button release on some Dell (details)
  664. perf trace: Fixup etcsnoop example (details)
  665. perf script python: Use PyBytes for attr in trace-event-python (details)
  666. perf script python: Add trace_context extension module to sys.modules (details)
  667. media: mt9m111: set initial frame size other than 0x0 (details)
  668. hwrng: virtio - Avoid repeated init of completion (details)
  669. soc/tegra: fuse: Fix illegal free of IO base address (details)
  670. selftests/bpf: suppress readelf stderr when probing for BTF support (details)
  671. HID: intel-ish: ipc: handle PIMR before ish_wakeup also clear PISR (details)
  672. f2fs: UBSAN: set boolean value iostat_enable correctly (details)
  673. f2fs: fix to initialize variable to avoid UBSAN/smatch warning (details)
  674. hpet: Fix missing '=' character in the __setup() code of (details)
  675. pinctrl: meson: fix G12A ao pull registers base address (details)
  676. pinctrl: sh-pfc: r8a77990: Fix MOD_SEL bit numbering (details)
  677. pinctrl: sh-pfc: r8a77995: Fix MOD_SEL bit numbering (details)
  678. cpu/hotplug: Mute hotplug lockdep during init (details)
  679. dmaengine: imx-dma: fix warning comparison of distinct pointer types (details)
  680. dmaengine: qcom_hidma: assign channel cookie correctly (details)
  681. dmaengine: qcom_hidma: initialize tx flags in hidma_prep_dma_* (details)
  682. netfilter: physdev: relax br_netfilter dependency (details)
  683. media: rcar-vin: Allow independent VIN link enablement (details)
  684. media: s5p-jpeg: Check for fmt_ver_flag when doing fmt enumeration (details)
  685. PCI: pciehp: Assign ctrl->slot_ctrl before writing it to hardware (details)
  686. audit: hand taken context to audit_kill_trees for syscall logging (details)
  687. regulator: act8865: Fix act8600_sudcdc_voltage_ranges setting (details)
  688. pinctrl: meson: meson8b: add the eth_rxd2 and eth_rxd3 pins (details)
  689. drm: Auto-set allow_fb_modifiers when given modifiers at plane init (details)
  690. drm/nouveau: Stop using drm_crtc_force_disable (details)
  691. x86/build: Specify elf_i386 linker emulation explicitly for i386 objects (details)
  692. selinux: do not override context on context mounts (details)
  693. brcmfmac: Use firmware_request_nowarn for the clm_blob (details)
  694. wlcore: Fix memory leak in case wl12xx_fetch_firmware failure (details)
  695. x86/build: Mark per-CPU symbols as absolute explicitly for LLD (details)
  696. drm/fb-helper: fix leaks in error path of drm_fb_helper_fbdev_setup (details)
  697. clk: meson: clean-up clock registration (details)
  698. ARM: shmobile: Fix R-Car Gen2 regulator quirk (details)
  699. clk: rockchip: fix frac settings of GPLL clock for rk3328 (details)
  700. dmaengine: tegra: avoid overflow of byte tracking (details)
  701. staging: iio: adt7316: fix dac_bits assignment (details)
  702. Input: soc_button_array - fix mapping of the 5th GPIO in a PNP0C40 (details)
  703. ASoC: simple-card-utils: check "reg" property on (details)
  704. drm: Reorder set_property_atomic to avoid returning with an active (details)
  705. drm/dp/mst: Configure no_stop_bit correctly for remote i2c xfers (details)
  706. net: stmmac: Avoid one more sometimes uninitialized Clang warning (details)
  707. appletalk: Fix compile regression (details)
  708. gpio: of: Restrict enable-gpio quirk to regulator-gpio (details)
  709. ACPI / video: Extend chassis-type detection with a "Lunch Box" check (details)
  710. bcache: fix potential div-zero error of writeback_rate_p_term_inverse (details)
  711. kbuild: add workaround for Debian make-kpkg (details)
  712. kbuild: skip sub-make for in-tree build with GNU Make 4.x (details)
  713. Linux 5.0.7 (details)
  714. gpu: pvr: Add PVR GPU driver (details)
  715. gpu: pvr: compilation fixes for kernel > 2.6.33 (details)
  716. gpu: pvr: move device registration into board file (details)
  717. gpu: pvr: add support to set board specific max SGX functional clk rate (details)
  718. gpu: pvr: add pvr_lock/remove unneeded lock headers (details)
  719. gpu: pvr: bail out from SGXOSTimer if it's been canceled (details)
  720. gpu: pvr: fix locking on the HW interrupt path (details)
  721. gpu: pvr: acquire the pvr lock on the SGX HW recovery path (details)
  722. gpu: pvr: fix locking in pvr_dbg_reset (details)
  723. gpu: pvr: BUG if pvr_lock is not held in HWRecoveryResetSGX (details)
  724. gpu: pvr: fix indent error (details)
  725. gpu: pvr: remove unused per device variable (details)
  726. gpu: pvr: make sure the device is powered on in SGX_MISRHandler (details)
  727. gpu: pvr: add support for finding the BM context from the DL (details)
  728. gpu: pvr: clean up FreeResourceByCriteria (details)
  729. gpu: pvr: add helpers to look up resource context and proc info (details)
  730. gpu: pvr: dump process info at HW recovery reset (details)
  731. gpu: pvr: add option for extra debugging information (details)
  732. gpu: pvr: enable debug trace for basic debug build (details)
  733. gpu: pvr: fix locking on SGX load calculating thread (details)
  734. gpu: pvr: fix locking on the DVFS path (details)
  735. gpu: pvr: remove PVRSRVPowerLock() (details)
  736. gpu: pvr: remove sPowerStateChangeResource lock (details)
  737. gpu: pvr: remove sQProcessResource/OSLockResource interface (details)
  738. gpu: pvr: remove unused function args from PVRSRVSetDevicePowerStateKM (details)
  739. gpu: pvr: remove unused function args from PVRSRVProcessQueues (details)
  740. gpu: pvr: no need to check for retry failures in PVRSRVMISR (details)
  741. gpu: pvr: remove unused function args from HWRecoveryResetSGX (details)
  742. gpu: pvr: no need to check for retry failures in SGXScheduleCCBCommandKM (details)
  743. gpu: pvr: no need to check for IRQ context in SGXCommandComplete (details)
  744. gpu: pvr: no need to check for retry failures in SGXTestActivePowerEvent (details)
  745. gpu: pvr: no need to delay queue processing in SGXPostActivePowerEvent (details)
  746. gpu: pvr: remove unused function args from SGXPostActivePowerEvent (details)
  747. gpu: pvr: remove unused function args from SGXTestActivePowerEvent (details)
  748. gpu: pvr: remove unrelevant comments about caller ID (details)
  749. gpu: pvr: fix PDUMP configuartion in release build (details)
  750. gpu: pvr: remove support for broken LINUX_MEM_AREAS_DEBUG (details)
  751. gpu: pvr: round the SGX fclock rate to the nearest supported (details)
  752. gpu: pvr: replace boolean by flags in blits complete query (details)
  753. gpu: pvr: support for events (details)
  754. gpu: pvr: support for polling events (details)
  755. gpu: pvr: support for render complete events (details)
  756. gpu: pvr: enable render complete events (details)
  757. gpu: pvr: support for user data in events (details)
  758. gpu: pvr: more accurate error reporting when clk_set_rate fails (details)
  759. gpu: pvr: fix lockdep problem (details)
  760. gpu: pvr: move ocp_cleanup() later during device deinit (details)
  761. gpu: pvr: optimize pvr_lock() by inlining it (details)
  762. gpu: pvr: Disable driver if SGX HW recovery fails (details)
  763. gpu: pvr: Reuse the same syncobject across all wraps (details)
  764. gpu: pvr: fix handle allocation when sharing sync objects (details)
  765. gpu: pvr: Add support for flip complete events (details)
  766. gpu: pvr: Reduce code duplication (details)
  767. gpu: pvr: Use DSS notifier to signal flip complete events (details)
  768. gpu: pvr: omaplfb: remove unnecessary fb unblanking (details)
  769. gpu: pvr: add SGXScheduleProcessQueues to prepare for pvr_dev_lock (details)
  770. gpu: pvr: add dvfs lock (details)
  771. gpu: pvr: rename pvr_dvfs_lock to pvr_dev_lock (details)
  772. gpu: pvr: fix locking around HWRecoveryResetSGX (details)
  773. gpu: pvr: Remove needless NULL check in BM_ImportMemory. (details)
  774. gpu: pvr: Remove needless NULL check in BM_DestroyHeap. (details)
  775. gpu: pvr: Fixed formatting in buffer_manager.c (details)
  776. gpu: pvr: Remove needless NULL check in WrapMemory. (details)
  777. gpu: pvr: Remove needless NULL check in BM_CreateHeap. (details)
  778. gpu: pvr: Remove needless NULL check in PVRSRVWrapExtMemoryKM. (details)
  779. gpu: pvr: Changed error-path condtion. (details)
  780. gpu: pvr: Changed ReallocMem. (details)
  781. gpu: pvr: Check OSAllocMem return value. (details)
  782. gpu: pvr: Check OSAllocMem return value. (details)
  783. gpu: pvr: Remove FIRST_PHYSICAL_PFN define. (details)
  784. gpu: pvr: Removed needless NULL check in MMU_BIFResetPDAlloc. (details)
  785. gpu: pvr: Check OSAllocMem return value. (details)
  786. gpu: pvr: Check OSAllocMem return value. (details)
  787. gpu: pvr: Check OSAllocMem return value. (details)
  788. gpu: pvr: Remove SysAcquireData call in pvr_cleanup. (details)
  789. gpu: pvr: Check SysAcquireData return value. (details)
  790. gpu: pvr: pass IOCTL in param size to dispatch func (details)
  791. gpu: pvr: Increase the max number of 3D TA status vals in kick requests (details)
  792. gpu: pvr: Fixed error path in cache flush function. (details)
  793. gpu: pvr: fix locking on the HW recovery reset error path (details)
  794. gpu: pvr: remove unnecessary udelay from the HW poll loop (details)
  795. gpu: pvr: fix typo in SGXDoKickBW (details)
  796. gpu: pvr: split out setting power down delay into its own function (details)
  797. gpu: pvr: fix SysGetSGXTimingInformation for cases when the HW is off (details)
  798. gpu: pvr: add support for dynamic timing of SGX HW power down (details)
  799. gpu: pvr: wire in the dynamic power-down delay calculation (details)
  800. gpu: pvr: Expose new display events to user space (details)
  801. gpu: pvr: Snapshot pending write ops during event request (details)
  802. gpu: pvr: remove build time ABI dependency on the EDM trace option (details)
  803. gpu: pvr: make the IOCTL i/f compatible for old ABI users (details)
  804. gpu: pvr: fix Kconfig description for EDM tracing (details)
  805. gpu: pvr: remove runtime dependency on the EDM trace option (details)
  806. gpu: pvr: move debugfs entries under a new pvr dir (details)
  807. gpu: pvr: make debugfs available in release build too (details)
  808. gpu: pvr: add snprint_edm_trace (details)
  809. gpu: pvr: add debugfs entry to read the EDM trace (details)
  810. gpu: pvr: print some init failure messages in release mode too (details)
  811. gpu: pvr: remove ABI compatibility hack from SGXInitPart2 IOCTL (details)
  812. gpu: pvr: remove ABI compatibility hack from SGXKick IOCTL (details)
  813. gpu: pvr: refactor dump_process_info (details)
  814. gpu: pvr: dump render status buffers during SGX HW recovery (details)
  815. gpu: pvr: improve per process procfs entry/dir handling (details)
  816. gpu: pvr: disable sgx active power management while pvrtune is running (details)
  817. gpu: pvr: fix error path during SGX device initialization (details)
  818. gpu: pvr: move debugfs infrastructure to its own files (details)
  819. gpu: pvr: debugfs: add initial hwrec dumping infrastructure (details)
  820. gpu: pvr: debugfs: add hwrec register dump (details)
  821. gpu: pvr: debugfs: add hwrec context dump (details)
  822. gpu: pvr: debugfs: add hwrec edm trace (details)
  823. gpu: pvr: debugfs: add hwrec status buffer dumping (details)
  824. gpu: pvr: pdump: SYS_DATA::bPowerUpPDumped is unused (details)
  825. gpu: pvr: pdump: consolidate some code inside PDUMP defines (details)
  826. gpu: pvr: pdump: remove unused bridge calls (details)
  827. gpu: pvr: pdump: remove unused pdump functions (details)
  828. gpu: pvr: pdump: remove lastframe support (details)
  829. gpu: pvr: pdump: stop depending on dbgdrvif.h (details)
  830. gpu: pvr: pdump: remove dbgdrv (details)
  831. gpu: pvr: pdump: remove wrapping of globals in pdump.c (details)
  832. gpu: pvr: pdump: remove pdump marker code (details)
  833. gpu: pvr: pdump: move functions around to better reflect dependencies (details)
  834. gpu: pvr: pdump: reduce error propagation from pdump to userspace (details)
  835. gpu: pvr: pdump: rewrite PDumpWriteString2() to pdump_print() (details)
  836. gpu: pvr: pdump: rewrite PDumpCommentKM (details)
  837. gpu: pvr: pdump: remove param offset handling (details)
  838. gpu: pvr: pdump: review use of PDumpSuspended (details)
  839. gpu: pvr: pdump: assume that SGX_MMU_PAGE_SIZE equals PAGE_SIZE (details)
  840. gpu: pvr: pdump: clean up logic across pdump.c (details)
  841. gpu: pvr: pdump: remove page offset juggling (details)
  842. gpu: pvr: pdump: sanitise stream handling (details)
  843. gpu: pvr: pdump: rewrite PDumpMemUM() (details)
  844. gpu: pvr: pdump: move pdump.c and pdump_km.h to pvr_pdump.[ch] (details)
  845. gpu: pvr: pdump: remove unused arguments (details)
  846. gpu: pvr: pdump: rename PDumpMem2KM to PDumpPageTableKM (details)
  847. gpu: pvr: pdump: silence sparse warnings in sgx_bridge pdump code (details)
  848. gpu: pvr: pdump: move empty back-end into pvr_pdumpfs.[ch] (details)
  849. gpu: pvr: pdumpfs: add pdumpfs_mutex (details)
  850. gpu: pvr: pdumpfs: add Kconfig and debugfs pdump mode handling (details)
  851. gpu: pvr: pdumpfs: add frame struct and initial frame handling code (details)
  852. gpu: pvr: pdumpfs: make frame_count_max configurable (details)
  853. gpu: pvr: pdumpfs: start storing pdump data (details)
  854. gpu: pvr: pdumpfs: add initial frame handling and debugfs support (details)
  855. gpu: pvr: pdumpfs: add debugfs entries for the current frame (details)
  856. gpu: pvr: pdumpfs: add stream offset tracking (details)
  857. gpu: pvr: pdumpfs: add stream_frames debugfs entry (details)
  858. gpu: pvr: pdumpfs: fix for imgtec simulator (details)
  859. gpu: pvr: change snprintf to scnprintf (details)
  860. gpu: pvr: reinstate dumping EDM trace to syslog (details)
  861. gpu: pvr: fix error path in PVRSRVRegisterBCDeviceKM (details)
  862. gpu: pvr: refactor error path in PVRSRVOpenBCDeviceKM (details)
  863. gpu: pvr: fix incorrect free size in PVRSRVOpenBCDeviceKM (details)
  864. gpu: pvr: fix error path in PVRSRVOpenBCDeviceKM (details)
  865. gpu: pvr: refactor error path in PVRSRVOpenDCDeviceKM (details)
  866. gpu: pvr: fix error path in PVRSRVOpenDCDeviceKM (details)
  867. gpu: pvr: fix PVRSRVWrapExtMemoryKM for user provided physical pages (details)
  868. gpu: pvr: fix error path in hash _Resize (details)
  869. gpu: pvr: optimize mem clear in hash _Resize (details)
  870. gpu: pvr: fix error path in MMU_Initialise (details)
  871. gpu: pvr: fix state buffer validation (details)
  872. gpu: pvr: fix error path in SysInitialise (details)
  873. gpu: pvr: remove dead code from the PVRSRVGetFBStatsKM code path (details)
  874. gpu: pvr: get rid of unnecessary hash lookups for the proc object (details)
  875. gpu: pvr: add missing headers to osfunc.h (details)
  876. gpu: pvr: get proc name during process attach time (details)
  877. gpu: pvr: use already existing proc name in pr_err_process info (details)
  878. gpu: pvr: add command tracing support (details)
  879. gpu: pvr: pass proc info to sgxkick and sgxtransfer (details)
  880. gpu: pvr: add tracing to the SGX kick and transfer commands (details)
  881. gpu: pvr: add tracing to the SGX queryblits command (details)
  882. gpu: pvr: add tracing for PVR events (details)
  883. gpu: pvr: add debugfs interface for the command trace (details)
  884. gpu: pvr: print the command trace to syslog during HWrec (details)
  885. gpu: pvr: fix memory context refcount problem leading to leaked handle (details)
  886. gpu: pvr: report IOCTL failures (details)
  887. gpu: pvr: remove CommonBridgeInit() (details)
  888. gpu: pvr: move ioctl checking error messagess to pr_err() (details)
  889. gpu: pvr: fix init script handling for pdump/non-pdump (details)
  890. gpu: pvr: move pdump ioctls to its own range at 192 (details)
  891. gpu: pvr: debugfs: add registers file (details)
  892. gpu: pvr: hwrec: fix hwrec_mem_pages type change warnings (details)
  893. gpu: pvr: fix pdumpfs_stream_buffer_clear (details)
  894. gpu: pvr: fix missing return value warning when CONFIG_BUG=n (details)
  895. gpu: pvr: V2: Find and fix all incorrect sync counter completion checks (details)
  896. gpu: pvr: kick: check for duplicate src syncs (details)
  897. gpu: pvr: add slab.h include in order to make driver build on 2.6.35.3 (details)
  898. SGX: display.h -> omapdss.h (details)
  899. SGX: console_sem -> console_lock (details)
  900. SGX: clk_notifier_register -> cpufreq_register_notifier (details)
  901. SGX: Add export.h include to pvr_debugfs.c (details)
  902. gpu: pvr: Use DMA mapping API for cache invalidation (details)
  903. gpu: pvr: update config dependency name (details)
  904. gpu: pvr: use video/omapfb_dss.h header file (details)
  905. gpu: pvr: remove includes for asm/system.h (details)
  906. gpu: pvr: convert file permissions to numeric (details)
  907. gpu: pvr: convert proc files to seq_file interface (details)
  908. gpu: pvr: proc: use file_inode() macro (details)
  909. gpu: pvr: update write handlers for proc files (details)
  910. gpu: pvr: convert timer to use timer_setup() (details)
  911. gpu: pvr: kill vma flag VM_RESERVED (details)
  912. gpu: pvr: remove the first parameter of OSAccessOK() (details)
  913. gpu: pvr: page_cache_release() -> put_page() (details)
  914. gpu: pvr: update get_user_pages() for changed API (details)
  915. gpu: pvr: remove __dev* attributes (details)
  916. gpu: pvr: ignore return value of misc_deregister() (details)
  917. gpu: pvr: proc: rename variables (details)
  918. gpu: pvr: rewrite proc files write handling (details)
  919. gpu: pvr: don't dereference pointers to proc_dir_entry (details)
  920. gpu: pvr: include dma.h for dmac_map_area() (details)
  921. ARM: export cache flush management symbols when !MULTI_CACHE (details)
  922. gpu: pvr: remove unused omap_pm_set_min_bus_tput() (details)
  923. gpu: pvr: make sysutils.o build (details)
  924. gpu: pvr: add header for cpu_clock() (details)
  925. gpu: pvr: events: remove unused do_gettimeofday() (details)
  926. gpu: pvr: debugfs: get rid of do_gettimeofday() (details)
  927. gpu: pvr: events: get rid of do_gettimeofday() (details)
  928. gpu: pvr: set proper SGX maximum clock rate (details)
  929. gpu: pvr: add device tree support (details)
  930. ARM: dts: omap34xx: add GPU entry (details)
  931. gpu: pvr: update for common clk framework (details)
  932. gpu: pvr: remove irrelevant clk_set_parent() (details)
  933. gpu: pvr: cpufreq_register_notifier -> clk_notifier_register (details)
  934. gpu: pvr: remove line wraps (details)
  935. gpu: pvr: set FMODE_UNSIGNED_OFFSET (details)
  936. gpu: pvr: debug: show memory stats in /proc/slabinfo (details)
  937. gpu: pvr: enhance debugging (details)
  938. gpu: pvr: minor fix (details)
  939. gpu: pvr: fix CONFIG_PVR_TRACE_CMD=y compilation (details)
  940. gpu: pvr: trace_cmd: fix empty buffer (details)
  941. gpu: pvr: trace_cmd: rewrite with seq_file (details)
  942. OMAP: DSS2: apply patch from Nemo Adaptation (details)
  943. OMAP: DSS2: fix state checking (details)
  944. Input: tsc200x-core - add 'disable' sysfs attribute (details)
  945. ARM: dts: n900: remove rx51-battery (details)
  946. ARM: dts: n900: increase charge current limit to 950mA (details)
  947. bq27x00: use cached flags (details)
  948. ARM: dts: n900: ignore mmc1 card detect gpio (details)
  949. phy: phy-twl4030-usb: Fix cable state handling (details)
  950. usb: musb: omap2430: Add support for idling phy when musb is idle (details)
  951. ARM: n900_defconfig: rename omap2plus_defconfig (details)
  952. ARM: n900_defconfig: update for current kernel (details)
  953. ARM: n900_defconfig: disable lock debugging (details)
  954. ARM: n900_defconfig: disable SMP (details)
  955. ARM: n900_defconfig: disable DRM (details)
  956. ARM: n900_defconfig: make display work (details)
  957. ARM: n900_defconfig: enable PowerVR SGX (details)
  958. ARM: n900_defconfig: enable WiFi (details)
  959. ARM: n900_defconfig: set kernel compression mode to LZ4 (details)
  960. ARM: n900_defconfig: don't store .config in kernel (details)
  961. ARM: n900_defconfig: increase kernel log buffer size (details)
  962. ARM: n900_defconfig: disable swap controller (cgroup) (details)
  963. ARM: n900_defconfig: remove obsolete sysfs syscall (details)
  964. ARM: n900_defconfig: select SLUB as slab allocator (details)
  965. ARM: n900_defconfig: disable ARMv6 (details)
  966. ARM: n900_defconfig: remove excessive systems (details)
  967. ARM: n900_defconfig: clean up SoC specific features (details)
  968. ARM: n900_defconfig: clean up common clock framework (details)
  969. ARM: n900_defconfig: disable extraneous erratas (details)
  970. ARM: n900_defconfig: disable L2x0 PrimeCell (details)
  971. ARM: n900_defconfig: disable PCI (details)
  972. ARM: n900_defconfig: set preemption model to "Desktop" (details)
  973. ARM: n900_defconfig: optimize kernel for size (details)
  974. ARM: n900_defconfig: build in Thumb-2 mode (details)
  975. ARM: n900_defconfig: disable Thumb-2 bug workaround (details)
  976. ARM: n900_defconfig: set timer frequency to 200 Hz (details)
  977. ARM: n900_defconfig: disable highmem interaction code (details)
  978. ARM: n900_defconfig: disable ATAGS (details)
  979. ARM: n900_defconfig: disable SATA/PATA (details)
  980. ARM: n900_defconfig: clean up 'Power supply' (details)
  981. ARM: n900_defconfig: clean up 'Keyboards' (details)
  982. ARM: n900_defconfig: clean up 'Touchscreens' (details)
  983. ARM: n900_defconfig: clean up 'Real Time Clock' (details)
  984. ARM: n900_defconfig: compile RTC driver in kernel (details)
  985. ARM: n900_defconfig: compile watchdog drivers in kernel (details)
  986. ARM: n900_defconfig: enable ZRAM (details)
  987. ARM: n900_defconfig: enable ZSWAP (details)
  988. ARM: n900_defconfig: change cmdline 'console' param (details)
  989. ARM: n900_defconfig: add common filesystems (details)
  990. ARM: n900_defconfig: filesystems native language (details)
  991. ARM: n900_defconfig: systemd related options (details)
  992. ARM: n900_defconfig: PowerTOP related options (details)
  993. ARM: n900_defconfig: disable ethernet drivers (details)
  994. ARM: n900_defconfig: compile PHY devices drivers as modules (details)
  995. ARM: n900_defconfig: enable nokia modem (details)
  996. ARM: n900_defconfig: enable accelerometer (details)
  997. ARM: n900_defconfig: change compiler debug options (details)
  998. ARM: n900_defconfig: disable initramfs/initrd (details)
  999. ARM: n900_defconfig: enable crypto accelerators (details)
  1000. ARM: n900_defconfig: enable thermal driver (details)
  1001. ARM: n900_defconfig: enable light sensor (details)
  1002. ARM: n900_defconfig: analog to digital converters (details)
  1003. ARM: n900_defconfig: enable radio driver (details)
  1004. ARM: n900_defconfig: enable bluetooth radio (details)
  1005. ARM: n900_defconfig: disable TV tuners (details)
  1006. ARM: n900_defconfig: enable front LED (details)
  1007. ARM: n900_defconfig: enable flash LED (details)
  1008. ARM: n900_defconfig: enable front webcam (details)
  1009. ARM: n900_defconfig: enable back camera (details)
  1010. ARM: n900_defconfig: expose thermal sensors as hwmon device (details)
  1011. ARM: n900_defconfig: build keyboard driver into kernel (details)
  1012. ARM: n900_defconfig: enable in-kernel .config (details)
  1013. debian: preserve /debian/ on 'make clean' (details)
  1014. debian: remove /debian/ from .gitignore (details)
  1015. debian: fill /debian/ directory with content (details)
  1016. debian: use linux native scripts for packaging (details)
  1017. Update debian/changelog (5.0.5-1) (details)
  1018. debian: fix linux-headers-n900 when crossbuilding (details)
  1019. debian: add gbp.conf needed by jenkins-debian-glue (details)
  1020. debian: update README for default config management (details)
  1021. debian: rules: fix warning: 'build-arch' is missing (details)
  1022. Update debian/changelog (5.0.5-2) (details)
  1023. Update debian/changelog (5.0.5-3) (details)
  1024. Update debian/changelog (5.0.7-1) (details)
Commit 05ad31a85e96bba6c2725f41f91f910d6a4ec21e by gregkh
sctp: remove sched init from sctp_stream_init
[ Upstream commit 2e990dfd13974d9eae493006f42ffb48707970ef ]
syzbot reported a NULL-ptr deref caused by that sched->init() in
sctp_stream_init() set stream->rr_next = NULL.
  kasan: GPF could be caused by NULL-ptr deref or user memory access
RIP: 0010:sctp_sched_rr_dequeue+0xd3/0x170
net/sctp/stream_sched_rr.c:141
Call Trace:
   sctp_outq_dequeue_data net/sctp/outqueue.c:90 [inline]
   sctp_outq_flush_data net/sctp/outqueue.c:1079 [inline]
   sctp_outq_flush+0xba2/0x2790 net/sctp/outqueue.c:1205
All sched info is saved in sout->ext now, in sctp_stream_init()
sctp_stream_alloc_out() will not change it, there's no need to call
sched->init() again, since sctp_outq_init() has already done it.
Fixes: 5bbbbe32a431 ("sctp: introduce stream scheduler foundations")
Reported-by: syzbot+4c9934f20522c0efd657@syzkaller.appspotmail.com
Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Neil Horman
<nhorman@tuxdriver.com> Acked-by: Marcelo Ricardo Leitner
<marcelo.leitner@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sctp/stream.c (diff)
Commit 75c9b039f9bdf59f4fd74b1cf3db7321497653fa by gregkh
tcp: do not report TCP_CM_INQ of 0 for closed connections
[ Upstream commit 6466e715651f9f358e60c5ea4880e4731325827f ]
Returning 0 as inq to userspace indicates there is no more data to read,
and the application needs to wait for EPOLLIN. For a connection that has
received FIN from the remote peer, however, the application must
continue reading until getting EOF (return value of 0 from tcp_recvmsg)
or an error, if edge-triggered epoll (EPOLLET) is being used. Otherwise,
the application will never receive a new EPOLLIN, since there is no
epoll edge after the FIN.
Return 1 when there is no data left on the queue but the connection has
received FIN, so that the applications continue reading.
Fixes: b75eba76d3d72 (tcp: send in-queue bytes in cmsg upon read)
Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com> Acked-by: Neal
Cardwell <ncardwell@google.com> Signed-off-by: Eric Dumazet
<edumazet@google.com> Acked-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/ipv4/tcp.c (diff)
Commit dfcf44d29a7f4d0a3c177dffa4be0a05205ad1fa by gregkh
tcp: Don't access TCP_SKB_CB before initializing it
[ Upstream commit f2feaefdabb0a6253aa020f65e7388f07a9ed47c ]
Since commit eeea10b83a13 ("tcp: add
tcp_v4_fill_cb()/tcp_v4_restore_cb()"), tcp_vX_fill_cb is only called
after tcp_filter(). That means, TCP_SKB_CB(skb)->end_seq still points to
the IP-part of the cb.
We thus should not mock with it, as this can trigger bugs (thanks
syzkaller):
[   12.349396]
==================================================================
[   12.350188] BUG: KASAN: slab-out-of-bounds in
ip6_datagram_recv_specific_ctl+0x19b3/0x1a20
[   12.351035] Read of size 1 at addr ffff88006adbc208 by task
test_ip6_datagr/1799
Setting end_seq is actually no more necessary in tcp_filter as it gets
initialized later on in tcp_vX_fill_cb.
Cc: Eric Dumazet <edumazet@google.com> Fixes: eeea10b83a13 ("tcp: add
tcp_v4_fill_cb()/tcp_v4_restore_cb()") Signed-off-by: Christoph Paasch
<cpaasch@apple.com> Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/ipv4/tcp_ipv4.c (diff)
Commit 3460bb198560a0dd809544b638114f5418ae3dee by gregkh
tcp: handle inet_csk_reqsk_queue_add() failures
[  Upstream commit 9d3e1368bb45893a75a5dfb7cd21fdebfa6b47af ]
Commit 7716682cc58e ("tcp/dccp: fix another race at listener dismantle")
let inet_csk_reqsk_queue_add() fail, and adjusted
{tcp,dccp}_check_req() accordingly. However, TFO and syncookies weren't
modified, thus leaking allocated resources on error.
Contrary to tcp_check_req(), in both syncookies and TFO cases, we need
to drop the request socket. Also, since the child socket is created with
inet_csk_clone_lock(), we have to unlock it and drop an extra reference
(->sk_refcount is initially set to 2 and inet_csk_reqsk_queue_add()
drops only one ref).
For TFO, we also need to revert the work done by tcp_try_fastopen()
(with reqsk_fastopen_remove()).
Fixes: 7716682cc58e ("tcp/dccp: fix another race at listener dismantle")
Signed-off-by: Guillaume Nault <gnault@redhat.com> Signed-off-by: Eric
Dumazet <edumazet@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/ipv4/syncookies.c (diff)
The file was modifiednet/ipv4/tcp_input.c (diff)
Commit 854b83c7493cb92cdce6d78368b97f4290962e39 by gregkh
vxlan: Fix GRO cells race condition between receive and link delete
[ Upstream commit ad6c9986bcb627c7c22b8f9e9a934becc27df87c ]
If we receive a packet while deleting a VXLAN device, there's a chance
vxlan_rcv() is called at the same time as vxlan_dellink(). This is fine,
except that vxlan_dellink() should never ever touch stuff that's still
in use, such as the GRO cells list.
Otherwise, vxlan_rcv() crashes while queueing packets via
gro_cells_receive().
Move the gro_cells_destroy() to vxlan_uninit(), which runs after the RCU
grace period is elapsed and nothing needs the gro_cells anymore.
This is now done in the same way as commit 8e816df87997 ("geneve: Use
GRO cells infrastructure.") originally implemented for GENEVE.
Reported-by: Jianlin Shi <jishi@redhat.com> Fixes: 58ce31cca1ff ("vxlan:
GRO support at tunnel layer") Signed-off-by: Stefano Brivio
<sbrivio@redhat.com> Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
Reviewed-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/vxlan.c (diff)
Commit 11e457c165d0e695384e96d12965bce198e6c617 by gregkh
vxlan: test dev->flags & IFF_UP before calling gro_cells_receive()
[ Upstream commit 59cbf56fcd98ba2a715b6e97c4e43f773f956393 ]
Same reasons than the ones explained in commit 4179cb5a4c92
("vxlan: test dev->flags & IFF_UP before calling netif_rx()")
netif_rx() or gro_cells_receive() must be called under a strict
contract.
At device dismantle phase, core networking clears IFF_UP and
flush_all_backlogs() is called after rcu grace period to make sure no
incoming packet might be in a cpu backlog and still referencing the
device.
A similar protocol is used for gro_cells infrastructure, as
gro_cells_destroy() will be called only after a full rcu grace period is
observed after IFF_UP has been cleared.
Most drivers call netif_rx() from their interrupt handler, and since the
interrupts are disabled at device dismantle, netif_rx() does not have to
check dev->flags & IFF_UP
Virtual drivers do not have this guarantee, and must therefore make the
check themselves.
Otherwise we risk use-after-free and/or crashes.
Fixes: d342894c5d2f ("vxlan: virtual extensible lan") Signed-off-by:
Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/vxlan.c (diff)
Commit f1ac81bb23a4ca59c25ed37668664d287885d0ac by gregkh
net/mlx4_core: Fix reset flow when in command polling mode
[ Upstream commit e15ce4b8d11227007577e6dc1364d288b8874fbe ]
As part of unloading a device, the driver switches from FW command event
mode to FW command polling mode.
Part of switching over to polling mode is freeing the command context
array memory (unfortunately, currently, without NULLing the command
context array pointer).
The reset flow calls "complete" to complete all outstanding fw commands
(if we are in event mode). The check for event vs. polling mode here is
to test if the command context array pointer is NULL.
If the reset flow is activated after the switch to polling mode, it will
attempt (incorrectly) to complete all the commands in the context array
-- because the pointer was not NULLed when the driver switched over to
polling mode.
As a result, we have a use-after-free situation, which results in a
kernel crash.
For example: BUG: unable to handle kernel NULL pointer dereference at  
       (null) IP: [<ffffffff876c4a8e>] __wake_up_common+0x2e/0x90 PGD 0
Oops: 0000 [#1] SMP Modules linked in: netconsole nfsv3 nfs_acl nfs
lockd grace ... CPU: 2 PID: 940 Comm: kworker/2:3 Kdump: loaded Not
tainted 3.10.0-862.el7.x86_64 #1 Hardware name: Microsoft Corporation
Virtual Machine/Virtual Machine, BIOS 090006  04/28/2016 Workqueue:
events hv_eject_device_work [pci_hyperv] task: ffff8d1734ca0fd0 ti:
ffff8d17354bc000 task.ti: ffff8d17354bc000 RIP:
0010:[<ffffffff876c4a8e>]  [<ffffffff876c4a8e>]
__wake_up_common+0x2e/0x90 RSP: 0018:ffff8d17354bfa38  EFLAGS: 00010082
RAX: 0000000000000000 RBX: ffff8d17362d42c8 RCX: 0000000000000000 RDX:
0000000000000001 RSI: 0000000000000003 RDI: ffff8d17362d42c8 RBP:
ffff8d17354bfa70 R08: 0000000000000000 R09: 0000000000000000 R10:
0000000000000298 R11: ffff8d173610e000 R12: ffff8d17362d42d0 R13:
0000000000000246 R14: 0000000000000000 R15: 0000000000000003 FS:
0000000000000000(0000) GS:ffff8d1802680000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000
CR3: 00000000f16d8000 CR4: 00000000001406e0 Call Trace:
[<ffffffff876c7adc>] complete+0x3c/0x50
[<ffffffffc04242f0>] mlx4_cmd_wake_completions+0x70/0x90 [mlx4_core]
[<ffffffffc041e7b1>] mlx4_enter_error_state+0xe1/0x380 [mlx4_core]
[<ffffffffc041fa4b>] mlx4_comm_cmd+0x29b/0x360 [mlx4_core]
[<ffffffffc041ff51>] __mlx4_cmd+0x441/0x920 [mlx4_core]
[<ffffffff877f62b1>] ? __slab_free+0x81/0x2f0
[<ffffffff87951384>] ? __radix_tree_lookup+0x84/0xf0
[<ffffffffc043a8eb>] mlx4_free_mtt_range+0x5b/0xb0 [mlx4_core]
[<ffffffffc043a957>] mlx4_mtt_cleanup+0x17/0x20 [mlx4_core]
[<ffffffffc04272c7>] mlx4_free_eq+0xa7/0x1c0 [mlx4_core]
[<ffffffffc042803e>] mlx4_cleanup_eq_table+0xde/0x130 [mlx4_core]
[<ffffffffc0433e08>] mlx4_unload_one+0x118/0x300 [mlx4_core]
[<ffffffffc0434191>] mlx4_remove_one+0x91/0x1f0 [mlx4_core]
The fix is to set the command context array pointer to NULL after
freeing the array.
Fixes: f5aef5aa3506 ("net/mlx4_core: Activate reset flow upon fatal
command cases") Signed-off-by: Jack Morgenstein
<jackm@dev.mellanox.co.il> Signed-off-by: Tariq Toukan
<tariqt@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx4/cmd.c (diff)
Commit 979785bea346a9895576fe0ef1655d72c41c7305 by gregkh
net/mlx4_core: Fix locking in SRIOV mode when switching between events
and polling
[ Upstream commit c07d27927f2f2e96fcd27bb9fb330c9ea65612d0 ]
In procedures mlx4_cmd_use_events() and mlx4_cmd_use_polling(), we need
to guarantee that there are no FW commands in progress on the comm
channel
(for VFs) or wrapped FW commands (on the PF) when SRIOV is active.
We do this by also taking the slave_cmd_mutex when SRIOV is active.
This is especially important when switching from event to polling, since
we free the command-context array during the switch.  If there are FW
commands in progress (e.g., waiting for a completion event), the
completion event handler will access freed memory.
Since the decision to use comm_wait or comm_poll is taken before
grabbing the event_sem/poll_sem in mlx4_comm_cmd_wait/poll, we must take
the slave_cmd_mutex as well (to guarantee that the decision to use
events or polling and the call to the appropriate cmd function are
atomic).
Fixes: a7e1f04905e5 ("net/mlx4_core: Fix deadlock when switching between
polling and event fw commands") Signed-off-by: Jack Morgenstein
<jackm@dev.mellanox.co.il> Signed-off-by: Tariq Toukan
<tariqt@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx4/cmd.c (diff)
Commit 7e30fd0627dbc8c3a5417706ad0bfcbd1e2d2d32 by gregkh
net/mlx4_core: Fix qp mtt size calculation
[ Upstream commit 8511a653e9250ef36b95803c375a7be0e2edb628 ]
Calculation of qp mtt size (in function mlx4_RST2INIT_wrapper)
ultimately depends on function roundup_pow_of_two.
If the amount of memory required by the QP is less than one page,
roundup_pow_of_two is called with argument zero.  In this case, the
roundup_pow_of_two result is undefined.
Calling roundup_pow_of_two with a zero argument resulted in the
following stack trace:
UBSAN: Undefined behaviour in ./include/linux/log2.h:61:13 shift
exponent 64 is too large for 64-bit type 'long unsigned int' CPU: 4 PID:
26939 Comm: rping Tainted: G OE 4.19.0-rc1 Hardware name: Supermicro
X9DR3-F/X9DR3-F, BIOS 3.2a 07/09/2015 Call Trace: dump_stack+0x9a/0xeb
ubsan_epilogue+0x9/0x7c
__ubsan_handle_shift_out_of_bounds+0x254/0x29d
? __ubsan_handle_load_invalid_value+0x180/0x180
? debug_show_all_locks+0x310/0x310
? sched_clock+0x5/0x10
? sched_clock+0x5/0x10
? sched_clock_cpu+0x18/0x260
? find_held_lock+0x35/0x1e0
? mlx4_RST2INIT_QP_wrapper+0xfb1/0x1440 [mlx4_core]
mlx4_RST2INIT_QP_wrapper+0xfb1/0x1440 [mlx4_core]
Fix this by explicitly testing for zero, and returning one if the
argument is zero (assuming that the next higher power of 2 in this case
should be one).
Fixes: c82e9aa0a8bc ("mlx4_core: resource tracking for HCA resources
used by guests") Signed-off-by: Jack Morgenstein
<jackm@dev.mellanox.co.il> Signed-off-by: Tariq Toukan
<tariqt@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx4/resource_tracker.c (diff)
Commit b31539bd3595837a2618c286c56de818c28972bf by gregkh
net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports
[ Upstream commit 7cbbee050c959f41b512599bafd99685f419ce26 ]
By default, the switch driver is expected to configure CPU and DSA ports
to their maximum speed. For the 6341 and 6390 families, the ports
interface mode has to be configured as well. The 6390X range support 10G
ports using XAUI, while the 6341 and 6390 supports 2500BaseX, as their
maximum speed.
Fixes: 787799a9d555 ("net: dsa: mv88e6xxx: Default ports 9/10 6390X
CMODE to 1000BaseX") Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.c (diff)
The file was modifieddrivers/net/dsa/mv88e6xxx/port.c (diff)
The file was modifieddrivers/net/dsa/mv88e6xxx/port.h (diff)
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.h (diff)
Commit c7bc9d62033a5e5df2ac0c69145332ca4d5653e0 by gregkh
net: hns3: fix to stop multiple HNS reset due to the AER changes
[ Upstream commit 69b51bbb03f73e04c486f79d1556b2d9becf4dbc ]
The commit bfcb79fca19d
("PCI/ERR: Run error recovery callbacks for all affected devices")
affected the non-fatal error recovery logic for the HNS and RDMA
devices. This is because each HNS PF under PCIe bus receive callbacks
from the AER driver when an error is reported for one of the PF. This
causes unwanted PF resets because the HNS decides which PF to reset
based on the reset type set. The HNS error handling code sets the reset
type based on the hw error type detected.
This patch provides fix for the above issue for the recovery of the hw
errors in the HNS and RDMA devices.
This patch needs backporting to the kernel v5.0+
Fixes: 332fbf576579 ("net: hns3: add handling of hw ras errors using new
set of commands") Reported-by: Xiaofei Tan <tanxiaofei@huawei.com>
Signed-off-by: Shiju Jose <shiju.jose@huawei.com> Signed-off-by:
Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/hisilicon/hns3/hns3_enet.c (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns3/hnae3.h (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c (diff)
Commit 882e7866ad283b135d0434905551aba1ea93e7d7 by gregkh
vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock
[ Upstream commit 4c404ce23358d5d8fbdeb7a6021a9b33d3c3c167 ]
Previous to commit 22b5c0b63f32 ("vsock/virtio: fix kernel panic after
device hot-unplug"), vsock_core_init() was called from
virtio_vsock_probe(). Now, virtio_transport_reset_no_sock() can be
called before vsock_core_init() has the chance to run.
[Wed Feb 27 14:17:09 2019] BUG: unable to handle kernel NULL pointer
dereference at 0000000000000110
[Wed Feb 27 14:17:09 2019] #PF error: [normal kernel read fault]
[Wed Feb 27 14:17:09 2019] PGD 0 P4D 0
[Wed Feb 27 14:17:09 2019] Oops: 0000 [#1] SMP PTI
[Wed Feb 27 14:17:09 2019] CPU: 3 PID: 59 Comm: kworker/3:1 Not tainted
5.0.0-rc7-390-generic-hvi #390
[Wed Feb 27 14:17:09 2019] Hardware name: QEMU Standard PC (i440FX +
PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
[Wed Feb 27 14:17:09 2019] Workqueue: virtio_vsock
virtio_transport_rx_work [vmw_vsock_virtio_transport]
[Wed Feb 27 14:17:09 2019] RIP:
0010:virtio_transport_reset_no_sock+0x8c/0xc0
[vmw_vsock_virtio_transport_common]
[Wed Feb 27 14:17:09 2019] Code: 35 8b 4f 14 48 8b 57 08 31 f6 44 8b 4f
10 44 8b 07 48 8d 7d c8 e8 84 f8 ff ff 48 85 c0 48 89 c3 74 2a e8 f7 31
03 00 48 89 df <48> 8b 80 10 01 00 00 e8 68 fb 69 ed 48 8b 75 f0 65 48
33 34 25 28
[Wed Feb 27 14:17:09 2019] RSP: 0018:ffffb42701ab7d40 EFLAGS: 00010282
[Wed Feb 27 14:17:09 2019] RAX: 0000000000000000 RBX: ffff9d79637ee080
RCX: 0000000000000003
[Wed Feb 27 14:17:09 2019] RDX: 0000000000000001 RSI: 0000000000000002
RDI: ffff9d79637ee080
[Wed Feb 27 14:17:09 2019] RBP: ffffb42701ab7d78 R08: ffff9d796fae70e0
R09: ffff9d796f403500
[Wed Feb 27 14:17:09 2019] R10: ffffb42701ab7d90 R11: 0000000000000000
R12: ffff9d7969d09240
[Wed Feb 27 14:17:09 2019] R13: ffff9d79624e6840 R14: ffff9d7969d09318
R15: ffff9d796d48ff80
[Wed Feb 27 14:17:09 2019] FS:  0000000000000000(0000)
GS:ffff9d796fac0000(0000) knlGS:0000000000000000
[Wed Feb 27 14:17:09 2019] CS:  0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[Wed Feb 27 14:17:09 2019] CR2: 0000000000000110 CR3: 0000000427f22000
CR4: 00000000000006e0
[Wed Feb 27 14:17:09 2019] DR0: 0000000000000000 DR1: 0000000000000000
DR2: 0000000000000000
[Wed Feb 27 14:17:09 2019] DR3: 0000000000000000 DR6: 00000000fffe0ff0
DR7: 0000000000000400
[Wed Feb 27 14:17:09 2019] Call Trace:
[Wed Feb 27 14:17:09 2019]  virtio_transport_recv_pkt+0x63/0x820
[vmw_vsock_virtio_transport_common]
[Wed Feb 27 14:17:09 2019]  ? kfree+0x17e/0x190
[Wed Feb 27 14:17:09 2019]  ? detach_buf_split+0x145/0x160
[Wed Feb 27 14:17:09 2019]  ? __switch_to_asm+0x40/0x70
[Wed Feb 27 14:17:09 2019]  virtio_transport_rx_work+0xa0/0x106
[vmw_vsock_virtio_transport]
[Wed Feb 27 14:17:09 2019] NET: Registered protocol family 40
[Wed Feb 27 14:17:09 2019]  process_one_work+0x167/0x410
[Wed Feb 27 14:17:09 2019]  worker_thread+0x4d/0x460
[Wed Feb 27 14:17:09 2019]  kthread+0x105/0x140
[Wed Feb 27 14:17:09 2019]  ? rescuer_thread+0x360/0x360
[Wed Feb 27 14:17:09 2019]  ? kthread_destroy_worker+0x50/0x50
[Wed Feb 27 14:17:09 2019]  ret_from_fork+0x35/0x40
[Wed Feb 27 14:17:09 2019] Modules linked in: vmw_vsock_virtio_transport
vmw_vsock_virtio_transport_common input_leds vsock serio_raw i2c_piix4
mac_hid qemu_fw_cfg autofs4 cirrus ttm drm_kms_helper syscopyarea
sysfillrect sysimgblt fb_sys_fops virtio_net psmouse drm net_failover
pata_acpi virtio_blk failover floppy
Fixes: 22b5c0b63f32 ("vsock/virtio: fix kernel panic after device
hot-unplug") Reported-by: Alexandru Herghelegiu
<aherghelegiu@bitdefender.com> Signed-off-by: Adalbert Lazăr
<alazar@bitdefender.com> Co-developed-by: Stefan Hajnoczi
<stefanha@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/vmw_vsock/virtio_transport_common.c (diff)
Commit 15c5945f83c1b167d3f10ca42b27c0f54039f760 by gregkh
net: sched: flower: insert new filter to idr after setting its mask
[ Upstream commit ecb3dea400d3beaf611ce76ac7a51d4230492cf2 ]
When adding new filter to flower classifier, fl_change() inserts it to
handle_idr before initializing filter extensions and assigning it a
mask. Normally this ordering doesn't matter because all flower
classifier ops callbacks assume rtnl lock protection. However, when
filter has an action that doesn't have its kernel module loaded, rtnl
lock is released before call to request_module(). During this time the
filter can be accessed bu concurrent task before its initialization is
completed, which can lead to a crash.
Example case of NULL pointer dereference in concurrent dump:
Task 1                           Task 2
tc_new_tfilter()
fl_change()
idr_alloc_u32(fnew)
fl_set_parms()
  tcf_exts_validate()
   tcf_action_init()
    tcf_action_init_1()
     rtnl_unlock()
     request_module()
     ...                        rtnl_lock()
     tc_dump_tfilter()
       tcf_chain_dump()
   fl_walk()
    idr_get_next_ul()
    tcf_node_dump()
     tcf_fill_node()
      fl_dump()
       mask = &f->mask->key; <- NULL ptr
     rtnl_lock()
Extension initialization and mask assignment don't depend on
fnew->handle that is allocated by idr_alloc_u32(). Move idr allocation
code after action creation and mask assignment in fl_change() to prevent
concurrent access to not fully initialized filter when rtnl lock is
released to load action module.
Fixes: 01683a146999 ("net: sched: refactor flower walk to iterate over
idr") Signed-off-by: Vlad Buslov <vladbu@mellanox.com> Reviewed-by: Roi
Dayan <roid@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sched/cls_flower.c (diff)
Commit 94f93c5900e3c98d11a3353cd93bee0a0daf2bdc by gregkh
f2fs: wait on atomic writes to count F2FS_CP_WB_DATA
commit 31867b23d7d1ee3535136c6a410a6cf56f666bfc upstream.
Otherwise, we can get wrong counts incurring checkpoint hang.
IO_W (CP:  -24, Data:   24, Flush: (   0    0    1), Discard: (   0  
0))
Thread A                        Thread B
- f2fs_write_data_pages
-  __write_data_page
- f2fs_submit_page_write
  - inc_page_count(F2FS_WB_DATA)
    type is F2FS_WB_DATA due to file is non-atomic one
- f2fs_ioc_start_atomic_write
- set_inode_flag(FI_ATOMIC_FILE)
                               - f2fs_write_end_io
                                - dec_page_count(F2FS_WB_CP_DATA)
                                  type is F2FS_WB_DATA due to file
becomes
                                  atomic one
Cc: <stable@vger.kernel.org> Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/f2fs/file.c (diff)
Commit 9826a60a2acadf3b2de5f452c179a29a43c3f28a by gregkh
perf/x86: Fixup typo in stub functions
commit f764c58b7faa26f5714e6907f892abc2bc0de4f8 upstream.
Guenter reported a build warning for CONFIG_CPU_SUP_INTEL=n:
  > With allmodconfig-CONFIG_CPU_SUP_INTEL, this patch results in:
>
> In file included from arch/x86/events/amd/core.c:8:0:
> arch/x86/events/amd/../perf_event.h:1036:45: warning: ‘struct
cpu_hw_event’ declared inside parameter list will not be visible outside
of this definition or declaration
>  static inline int intel_cpuc_prepare(struct cpu_hw_event *cpuc, int
cpu)
While harmless (an unsed pointer is an unused pointer, no matter the
type) it needs fixing.
Reported-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Peter
Zijlstra (Intel) <peterz@infradead.org> Cc: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc:
stable@vger.kernel.org Fixes: d01b1f96a82e ("perf/x86/intel: Make cpuc
allocations consistent") Link:
http://lkml.kernel.org/r/20190315081410.GR5996@hirez.programming.kicks-ass.net
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/perf_event.h (diff)
Commit b072cb42f01eae65d2fafa33e0c9902b3d1d9fed by gregkh
ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against
Liquid Saffire 56
commit 7dc661bd8d3261053b69e4e2d0050cd1ee540fc1 upstream.
ALSA bebob driver has an entry for Focusrite Saffire Pro 10 I/O. The
entry matches vendor_id in root directory and model_id in unit directory
of configuration ROM for IEEE 1394 bus.
On the other hand, configuration ROM of Focusrite Liquid Saffire 56 has
the same vendor_id and model_id. This device is an application of TCAT
Dice (TCD2220 a.k.a Dice Jr.) however ALSA bebob driver can be bound to
it randomly instead of ALSA dice driver. At present, drivers in ALSA
firewire stack can not handle this situation appropriately.
This commit uses more identical mod_alias for Focusrite Saffire Pro 10
I/O in ALSA bebob driver.
$ python2 crpp < /sys/bus/firewire/devices/fw1/config_rom
              ROM header and bus information block
            
----------------------------------------------------------------- 400
042a829d  bus_info_length 4, crc_length 42, crc 33437 404  31333934
bus_name "1394" 408  f0649222  irmc 1, cmc 1, isc 1, bmc 1, pmc 0,
cyc_clk_acc 100,
              max_rec 9 (1024), max_rom 2, gen 2, spd 2 (S400) 40c
00130e01  company_id 00130e     | 410  000606e0  device_id 01000606e0  |
EUI-64 00130e01000606e0
               root directory
            
----------------------------------------------------------------- 414
0009d31c  directory_length 9, crc 54044 418  04000014  hardware version
41c  0c0083c0  node capabilities per IEEE 1394 420  0300130e  vendor 424
81000012  --> descriptor leaf at 46c 428  17000006  model 42c  81000016
--> descriptor leaf at 484 430  130120c2  version 434  d1000002  -->
unit directory at 43c 438  d4000006  --> dependent info directory at 450
               unit directory at 43c
            
----------------------------------------------------------------- 43c
0004707c  directory_length 4, crc 28796 440  1200a02d  specifier id:
1394 TA 444  13010001  version: AV/C 448  17000006  model 44c  81000013
--> descriptor leaf at 498
               dependent info directory at 450
            
----------------------------------------------------------------- 450
000637c7  directory_length 6, crc 14279 454  120007f5  specifier id 458
13000001  version 45c  3affffc7  (immediate value) 460  3b100000
(immediate value) 464  3cffffc7  (immediate value) 468  3d600000
(immediate value)
               descriptor leaf at 46c
            
----------------------------------------------------------------- 46c
00056f3b  leaf_length 5, crc 28475 470  00000000  textual descriptor 474
00000000  minimal ASCII 478  466f6375  "Focu" 47c  73726974  "srit" 480
65000000  "e"
               descriptor leaf at 484
            
----------------------------------------------------------------- 484
0004a165  leaf_length 4, crc 41317 488  00000000  textual descriptor 48c
00000000  minimal ASCII 490  50726f31  "Pro1" 494  30494f00  "0IO"
               descriptor leaf at 498
            
----------------------------------------------------------------- 498
0004a165  leaf_length 4, crc 41317 49c  00000000  textual descriptor 4a0
00000000  minimal ASCII 4a4  50726f31  "Pro1" 4a8  30494f00  "0IO"
$ python2 crpp < /sys/bus/firewire/devices/fw1/config_rom
              ROM header and bus information block
            
----------------------------------------------------------------- 400
040442e4  bus_info_length 4, crc_length 4, crc 17124 404  31333934
bus_name "1394" 408  e0ff8112  irmc 1, cmc 1, isc 1, bmc 0, pmc 0,
cyc_clk_acc 255,
              max_rec 8 (512), max_rom 1, gen 1, spd 2 (S400) 40c
00130e04  company_id 00130e     | 410  018001e9  device_id 04018001e9  |
EUI-64 00130e04018001e9
               root directory
            
----------------------------------------------------------------- 414
00065612  directory_length 6, crc 22034 418  0300130e  vendor 41c
8100000a  --> descriptor leaf at 444 420  17000006  model 424  8100000e
--> descriptor leaf at 45c 428  0c0087c0  node capabilities per IEEE
1394 42c  d1000001  --> unit directory at 430
               unit directory at 430
            
----------------------------------------------------------------- 430
000418a0  directory_length 4, crc 6304 434  1200130e  specifier id 438
13000001  version 43c  17000006  model 440  8100000f  --> descriptor
leaf at 47c
               descriptor leaf at 444
            
----------------------------------------------------------------- 444
00056f3b  leaf_length 5, crc 28475 448  00000000  textual descriptor 44c
00000000  minimal ASCII 450  466f6375  "Focu" 454  73726974  "srit" 458
65000000  "e"
               descriptor leaf at 45c
            
----------------------------------------------------------------- 45c
000762c6  leaf_length 7, crc 25286 460  00000000  textual descriptor 464
00000000  minimal ASCII 468  4c495155  "LIQU" 46c  49445f53  "ID_S" 470
41464649  "AFFI" 474  52455f35  "RE_5" 478  36000000  "6"
               descriptor leaf at 47c
            
----------------------------------------------------------------- 47c
000762c6  leaf_length 7, crc 25286 480  00000000  textual descriptor 484
00000000  minimal ASCII 488  4c495155  "LIQU" 48c  49445f53  "ID_S" 490
41464649  "AFFI" 494  52455f35  "RE_5" 498  36000000  "6"
Cc: <stable@vger.kernel.org> # v3.16+ Fixes: 25784ec2d034 ("ALSA: bebob:
Add support for Focusrite Saffire/SaffirePro series") Signed-off-by:
Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai
<tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/firewire/bebob/bebob.c (diff)
Commit 69bf155eec9e19d3f724281c2349be8e54665460 by gregkh
ALSA: firewire-motu: fix construction of PCM frame for capture direction
commit f97a0944a72b26a2bece72516294e112a890f98a upstream.
In data blocks of common isochronous packet for MOTU devices, PCM frames
are multiplexed in a shape of '24 bit * 4 Audio Pack', described in IEC
61883-6. The frames are not aligned to quadlet.
For capture PCM substream, ALSA firewire-motu driver constructs PCM
frames by reading data blocks byte-by-byte. However this operation
includes bug for lower byte of the PCM sample. This brings invalid
content of the PCM samples.
This commit fixes the bug.
Reported-by: Peter Sjöberg <autopeter@gmail.com> Cc:
<stable@vger.kernel.org> # v4.12+ Fixes: 4641c9394010 ("ALSA:
firewire-motu: add MOTU specific protocol layer") Signed-off-by: Takashi
Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai
<tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/firewire/motu/amdtp-motu.c (diff)
Commit f36b6691acdd6687a0027d8c821a9a5be9160824 by gregkh
ALSA: hda: Extend i915 component bind timeout
commit cfc35f9c128cea8fce6a5513b1de50d36f3b209f upstream.
I set 10 seconds for the timeout of the i915 audio component binding
with a hope that recent machines are fast enough to handle all probe
tasks in that period, but I was too optimistic.  The binding may take
longer than that, and this caused a problem on the machine with both
audio and graphics driver modules loaded in parallel, as Paul Menzel
experienced.  This problem haven't hit so often just because the KMS
driver is loaded in initrd on most machines.
As a simple workaround, extend the timeout to 60 seconds.
Fixes: f9b54e1961c7 ("ALSA: hda/i915: Allow delayed i915 audio component
binding") Reported-by: Paul Menzel <pmenzel+alsa-devel@molgen.mpg.de>
Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/hda/hdac_i915.c (diff)
Commit 19fcfe5ad57c99f218c1fb515747f05e5976e2e6 by gregkh
ALSA: hda - add more quirks for HP Z2 G4 and HP Z240
commit 167897f4b32c2bc18b3b6183029a33fb420a114e upstream.
Apply the HP_MIC_NO_PRESENCE fixups for the more HP Z2 G4 and HP Z240
models.
Reported-by: Jeff Burrell <jeff.burrell@hp.com> Signed-off-by: Jaroslav
Kysela <perex@perex.cz> Cc: <stable@vger.kernel.org> Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_conexant.c (diff)
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 6f63adaf88816b72f74b22aaa40d55fab993c572 by gregkh
ALSA: hda/realtek: Enable audio jacks of ASUS UX362FA with ALC294
commit 8bb37a2a4d7c02affef554f5dc05f6d2e39c31f9 upstream.
The ASUS UX362FA with ALC294 cannot detect the headset MIC and outputs
through the internal speaker and the headphone.  This issue can be fixed
by the quirk in the commit 4e0511067 ALSA: hda/realtek: Enable audio
jacks of ASUS UX533FD with ALC294.
Besides, ASUS UX362FA and UX533FD have the same audio initial pin config
values.  So, this patch replaces SND_PCI_QUIRK of UX533FD with a new
SND_HDA_PIN_QUIRK which benefits both UX362FA and UX533FD.
Fixes: 4e051106730d ("ALSA: hda/realtek: Enable audio jacks of ASUS
UX533FD with ALC294") Signed-off-by: Jian-Hong Pan
<jian-hong@endlessm.com> Signed-off-by: Ming Shuo Chiu
<chiu@endlessm.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi
Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 843a9a5b5675e72814a4e18cbce2ed7c2a077032 by gregkh
ALSA: hda/realtek - Reduce click noise on Dell Precision 5820 headphone
commit c0ca5eced22215c1e03e3ad479f8fab0bbb30772 upstream.
Dell Precision 5820 with ALC3234 codec (which is equivalent with ALC255)
shows click noises at (runtime) PM resume on the headphone. The biggest
source of the noise comes from the cleared headphone pin control at
resume, which is done via the standard shutup procedure.
Although we have an override of the standard shutup callback to replace
with NOP, this would skip other needed stuff (e.g. the pull down of
headset power).  So, instead, this "fixes" the behavior of
alc_fixup_no_shutup() by introducing spec->no_shutup_pins flag. When
this flag is set, Realtek codec won't call the standard
snd_hda_shutup_pins() & co.  Now alc_fixup_no_shutup() just sets this
flag instead of overriding spec->shutup callback itself.  This allows us
to apply the similar fix for other entries easily if needed in future.
Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 291ad91aad03edf5483350a1997a468ce17010da by gregkh
ALSA: hda/realtek: Enable headset MIC of Acer TravelMate X514-51T with
ALC255
commit cbc05fd6708c1744ee6a61cb4c461ff956d30524 upstream.
The Acer TravelMate X514-51T with ALC255 cannot detect the headset MIC
until ALC255_FIXUP_ACER_HEADSET_MIC quirk applied.  Although, the
internal DMIC uses another module - snd_soc_skl as the driver.  We still
need the NID 0x1a in the quirk to enable the headset MIC.
Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com> Signed-off-by:
Kailang Yang <kailang@realtek.com> Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit c075798c05d913d20d53ca0eabd36f53f9c7328d by gregkh
perf/x86/intel: Fix memory corruption
commit ede271b059463731cbd6dffe55ffd70d7dbe8392 upstream.
Through:
  validate_event()
   x86_pmu.get_event_constraints(.idx=-1)
     tfa_get_event_constraints()
       dyn_constraint()
cpuc->constraint_list[-1] is used, which is an obvious out-of-bound
access.
In this case, simply skip the TFA constraint code, there is no event
constraint with just PMC3, therefore the code will never result in the
empty set.
Fixes: 400816f60c54 ("perf/x86/intel: Implement support for TSX Force
Abort") Reported-by: Tony Jones <tonyj@suse.com> Reported-by: "DSouza,
Nelson" <nelson.dsouza@intel.com> Signed-off-by: Peter Zijlstra (Intel)
<peterz@infradead.org> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Tested-by: Tony Jones <tonyj@suse.com> Tested-by:
"DSouza, Nelson" <nelson.dsouza@intel.com> Cc: eranian@google.com Cc:
jolsa@redhat.com Cc: stable@kernel.org Link:
https://lkml.kernel.org/r/20190314130705.441549378@infradead.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/intel/core.c (diff)
Commit 0912fa3dfceab294ebad311fbde7ac71dec56e15 by gregkh
perf/x86/intel: Make dev_attr_allow_tsx_force_abort static
commit c634dc6bdedeb0b2c750fc611612618a85639ab2 upstream.
Fixes: 400816f60c54 ("perf/x86/intel: Implement support for TSX Force
Abort") Signed-off-by: kbuild test robot <lkp@intel.com> Signed-off-by:
Thomas Gleixner <tglx@linutronix.de> Cc: "Peter Zijlstra (Intel)"
<peterz@infradead.org> Cc: kbuild-all@01.org Cc: Borislav Petkov
<bp@alien8.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Kan Liang
<kan.liang@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Andi
Kleen <ak@linux.intel.com> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190313184243.GA10820@lkp-sb-ep06
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/intel/core.c (diff)
Commit a516031202041d880579fd26935e47a105bdeb89 by gregkh
It's wrong to add len to sector_nr in raid10 reshape twice
commit b761dcf1217760a42f7897c31dcb649f59b2333e upstream.
In reshape_request it already adds len to sector_nr already. It's wrong
to add len to sector_nr again after adding pages to bio. If there is bad
block it can't copy one chunk at a time, it needs to goto read_more. Now
the sector_nr is wrong. It can cause data corruption.
Cc: stable@vger.kernel.org # v3.16+ Signed-off-by: Xiao Ni
<xni@redhat.com> Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/raid10.c (diff)
Commit 847c02bcb48a17a09b620bfc36b57195ae047cbf by gregkh
drm: Block fb changes for async plane updates
commit 25dc194b34dd5919dd07b8873ee338182e15df9d upstream.
The prepare_fb call always happens on new_plane_state.
The drm_atomic_helper_cleanup_planes checks to see if plane state
pointer has changed when deciding to call cleanup_fb on either the
new_plane_state or the old_plane_state.
For a non-async atomic commit the state pointer is swapped, so this
helper calls prepare_fb on the new_plane_state and cleanup_fb on the
old_plane_state. This makes sense, since we want to prepare the
framebuffer we are going to use and cleanup the the framebuffer we are
no longer using.
For the async atomic update helpers this differs. The async atomic
update helpers perform in-place updates on the existing state. They call
drm_atomic_helper_cleanup_planes but the state pointer is not swapped.
This means that prepare_fb is called on the new_plane_state and
cleanup_fb is called on the new_plane_state (not the old).
In the case where old_plane_state->fb == new_plane_state->fb then there
should be no behavioral difference between an async update and a
non-async commit. But there are issues that arise when
old_plane_state->fb != new_plane_state->fb.
The first is that the new_plane_state->fb is immediately cleaned up
after it has been prepared, so we're using a fb that we shouldn't be.
The second occurs during a sequence of async atomic updates and
non-async regular atomic commits. Suppose there are two framebuffers
being interleaved in a double-buffering scenario, fb1 and fb2:
- Async update, oldfb = NULL, newfb = fb1, prepare fb1, cleanup fb1
- Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb2
- Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2
We call cleanup_fb on fb2 twice in this example scenario, and any
further use will result in use-after-free.
The simple fix to this problem is to block framebuffer changes in the
drm_atomic_helper_async_check function for now.
v2: Move check by itself, add a FIXME (Daniel)
Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Harry Wentland
<harry.wentland@amd.com> Cc: Andrey Grodzovsky
<andrey.grodzovsky@amd.com> Cc: <stable@vger.kernel.org> # v4.14+ Fixes:
fef9df8b5945 ("drm/atomic: initial support for asynchronous plane
update") Signed-off-by: Nicholas Kazlauskas
<nicholas.kazlauskas@amd.com> Acked-by: Andrey Grodzovsky
<andrey.grodzovsky@amd.com> Acked-by: Harry Wentland
<harry.wentland@amd.com> Reviewed-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Harry Wentland <harry.wentland@amd.com> Link:
https://patchwork.freedesktop.org/patch/275364/ Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/drm_atomic_helper.c (diff)
The file was modifiedMakefile (diff)
Commit 3cccba9a38d5119c48eebf60e1071b60c457591f by gregkh
9p: use inode->i_lock to protect i_size_write() under 32-bit
commit 5e3cc1ee1405a7eb3487ed24f786dec01b4cbe1f upstream.
Use inode->i_lock to protect i_size_write(), else i_size_read() in
generic_fillattr() may loop infinitely in read_seqcount_begin() when
multiple processes invoke v9fs_vfs_getattr() or v9fs_vfs_getattr_dotl()
simultaneously under 32-bit SMP environment, and a soft lockup will be
triggered as show below:
  watchdog: BUG: soft lockup - CPU#5 stuck for 22s! [stat:2217]
Modules linked in:
CPU: 5 PID: 2217 Comm: stat Not tainted 5.0.0-rc1-00005-g7f702faf5a9e
#4
Hardware name: Generic DT based system
PC is at generic_fillattr+0x104/0x108
LR is at 0xec497f00
pc : [<802b8898>]    lr : [<ec497f00>]    psr: 200c0013
sp : ec497e20  ip : ed608030  fp : ec497e3c
r10: 00000000  r9 : ec497f00  r8 : ed608030
r7 : ec497ebc  r6 : ec497f00  r5 : ee5c1550  r4 : ee005780
r3 : 0000052d  r2 : 00000000  r1 : ec497f00  r0 : ed608030
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
Control: 10c5387d  Table: ac48006a  DAC: 00000051
CPU: 5 PID: 2217 Comm: stat Not tainted 5.0.0-rc1-00005-g7f702faf5a9e
#4
Hardware name: Generic DT based system
Backtrace:
[<8010d974>] (dump_backtrace) from [<8010dc88>] (show_stack+0x20/0x24)
[<8010dc68>] (show_stack) from [<80a1d194>] (dump_stack+0xb0/0xdc)
[<80a1d0e4>] (dump_stack) from [<80109f34>] (show_regs+0x1c/0x20)
[<80109f18>] (show_regs) from [<801d0a80>]
(watchdog_timer_fn+0x280/0x2f8)
[<801d0800>] (watchdog_timer_fn) from [<80198658>]
(__hrtimer_run_queues+0x18c/0x380)
[<801984cc>] (__hrtimer_run_queues) from [<80198e60>]
(hrtimer_run_queues+0xb8/0xf0)
[<80198da8>] (hrtimer_run_queues) from [<801973e8>]
(run_local_timers+0x28/0x64)
[<801973c0>] (run_local_timers) from [<80197460>]
(update_process_times+0x3c/0x6c)
[<80197424>] (update_process_times) from [<801ab2b8>]
(tick_nohz_handler+0xe0/0x1bc)
[<801ab1d8>] (tick_nohz_handler) from [<80843050>]
(arch_timer_handler_virt+0x38/0x48)
[<80843018>] (arch_timer_handler_virt) from [<80180a64>]
(handle_percpu_devid_irq+0x8c/0x240)
[<801809d8>] (handle_percpu_devid_irq) from [<8017ac20>]
(generic_handle_irq+0x34/0x44)
[<8017abec>] (generic_handle_irq) from [<8017b344>]
(__handle_domain_irq+0x6c/0xc4)
[<8017b2d8>] (__handle_domain_irq) from [<801022e0>]
(gic_handle_irq+0x4c/0x88)
[<80102294>] (gic_handle_irq) from [<80101a30>] (__irq_svc+0x70/0x98)
[<802b8794>] (generic_fillattr) from [<8056b284>]
(v9fs_vfs_getattr_dotl+0x74/0xa4)
[<8056b210>] (v9fs_vfs_getattr_dotl) from [<802b8904>]
(vfs_getattr_nosec+0x68/0x7c)
[<802b889c>] (vfs_getattr_nosec) from [<802b895c>]
(vfs_getattr+0x44/0x48)
[<802b8918>] (vfs_getattr) from [<802b8a74>] (vfs_statx+0x9c/0xec)
[<802b89d8>] (vfs_statx) from [<802b9428>] (sys_lstat64+0x48/0x78)
[<802b93e0>] (sys_lstat64) from [<80101000>]
(ret_fast_syscall+0x0/0x28)
[dominique.martinet@cea.fr: updated comment to not refer to a function
in another subsystem] Link:
http://lkml.kernel.org/r/20190124063514.8571-2-houtao1@huawei.com Cc:
stable@vger.kernel.org Fixes: 7549ae3e81cc ("9p: Use the i_size_[read,
write]() macros instead of using inode->i_size directly.") Reported-by:
Xing Gaopeng <xingaopeng@huawei.com> Signed-off-by: Hou Tao
<houtao1@huawei.com> Signed-off-by: Dominique Martinet
<dominique.martinet@cea.fr> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/9p/vfs_inode.c (diff)
The file was modifiedfs/9p/vfs_super.c (diff)
The file was modifiedfs/9p/v9fs_vfs.h (diff)
The file was modifiedfs/9p/vfs_file.c (diff)
The file was modifiedfs/9p/vfs_inode_dotl.c (diff)
Commit 5ababa4e34db899d8947474df6139641d5347794 by gregkh
9p/net: fix memory leak in p9_client_create
commit bb06c388fa20ae24cfe80c52488de718a7e3a53f upstream.
If msize is less than 4096, we should close and put trans, destroy
tagpool, not just free client. This patch fixes that.
Link:
http://lkml.kernel.org/m/1552464097-142659-1-git-send-email-zhengbin13@huawei.com
Cc: stable@vger.kernel.org Fixes: 574d356b7a02 ("9p/net: put a lower
bound on msize") Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: zhengbin <zhengbin13@huawei.com> Signed-off-by: Dominique
Martinet <dominique.martinet@cea.fr> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/9p/client.c (diff)
Commit a7abca8506b56002a2d168764eaf05ffa3ac22ef by gregkh
ASoC: fsl_esai: fix register setting issue in RIGHT_J mode
commit cc29ea007347f39f4c5a4d27b0b555955a0277f9 upstream.
The ESAI_xCR_xWA is xCR's bit, not the xCCR's bit, driver set it to
wrong register, correct it.
Fixes 43d24e76b698 ("ASoC: fsl_esai: Add ESAI CPU DAI driver") Cc:
<stable@vger.kernel.org> Signed-off-by: Shengjiu Wang
<shengjiu.wang@nxp.com> Reviewed-by: Fabio Estevam <festevam@gmail.com>
Ackedy-by: Nicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: Mark
Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/soc/fsl/fsl_esai.c (diff)
Commit 5bd4f972e594b381b8d185e734216f5557d4527a by gregkh
ASoC: codecs: pcm186x: fix wrong usage of DECLARE_TLV_DB_SCALE()
commit fcf4daabf08079e6d09958a2992e7446ef8d0438 upstream.
According to DS, the gain is between -12 dB and 40 dB, with a 0.5 dB
step. Tested on pcm1863.
Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Acked-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/soc/codecs/pcm186x.c (diff)
Commit 61328520e0b65bf409845e8e00ee1d691a1ca27c by gregkh
ASoC: codecs: pcm186x: Fix energysense SLEEP bit
commit 05bd7fcdd06b19a10f069af1bea3ad9abac038d7 upstream.
The ADCs are sleeping when the SLEEP bit is set and running when it's
cleared, so the bit should be inverted. Tested on pcm1863.
Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Acked-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/soc/codecs/pcm186x.c (diff)
Commit a52251155bab8c569bf697f1eb23302e61fd2beb by gregkh
iio: adc: exynos-adc: Fix NULL pointer exception on unbind
commit 2ea8bab4dd2a9014e723b28091831fa850b82d83 upstream.
Fix NULL pointer exception on device unbind when device tree does not
contain "has-touchscreen" property.  In such case the input device is
not registered so it should not be unregistered.
    $ echo "12d10000.adc" > /sys/bus/platform/drivers/exynos-adc/unbind
    Unable to handle kernel NULL pointer dereference at virtual address
00000474
   ...
   (input_unregister_device) from [<c0772060>]
(exynos_adc_remove+0x20/0x80)
   (exynos_adc_remove) from [<c0587d5c>] (platform_drv_remove+0x20/0x40)
   (platform_drv_remove) from [<c05860f0>]
(device_release_driver_internal+0xdc/0x1ac)
   (device_release_driver_internal) from [<c0583ecc>]
(unbind_store+0x60/0xd4)
   (unbind_store) from [<c031b89c>] (kernfs_fop_write+0x100/0x1e0)
   (kernfs_fop_write) from [<c029709c>] (__vfs_write+0x2c/0x17c)
   (__vfs_write) from [<c0297374>] (vfs_write+0xa4/0x184)
   (vfs_write) from [<c0297594>] (ksys_write+0x4c/0xac)
   (ksys_write) from [<c0101000>] (ret_fast_syscall+0x0/0x28)
Fixes: 2bb8ad9b44c5 ("iio: exynos-adc: add experimental touchscreen
support") Cc: <stable@vger.kernel.org> Signed-off-by: Krzysztof
Kozlowski <krzk@kernel.org> Signed-off-by: Jonathan Cameron
<Jonathan.Cameron@huawei.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/iio/adc/exynos_adc.c (diff)
Commit f644d56fe1d7e8f264c2d86c0eebcfa84883b071 by gregkh
iio: adc: exynos-adc: Use proper number of channels for Exynos4x12
commit 103cda6a3b8d2c10d5f8cd7abad118e9db8f4776 upstream.
Exynos4212 and Exynos4412 have only four ADC channels so using
"samsung,exynos-adc-v1" compatible (for eight channels ADCv1) on them is
wrong.  Add a new compatible for Exynos4x12.
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Cc:
<Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron
<Jonathan.Cameron@huawei.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/iio/adc/exynos_adc.c (diff)
The file was modifiedDocumentation/devicetree/bindings/iio/adc/samsung,exynos-adc.txt (diff)
Commit 55ced4559dbf812384a8e0dc74b6f33866e132b1 by gregkh
mei: hbm: clean the feature flags on link reset
commit 37fd0b623023484ef6df79ed46f21f06ecc611ff upstream.
The list of supported functions can be altered upon link reset, clean
the flags to allow correct selections of supported features.
Cc: <stable@vger.kernel.org> v4.19+ Signed-off-by: Alexander Usyskin
<alexander.usyskin@intel.com> Signed-off-by: Tomas Winkler
<tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/misc/mei/hbm.c (diff)
Commit 1cfec56130907b513d01d04688859d39f9563b2c by gregkh
mei: bus: move hw module get/put to probe/release
commit b5958faa34e2f99f3475ad89c52d98dfea079d33 upstream.
Fix unbalanced module reference counting during internal reset, which
prevents the drivers unloading. Tracking mei_me/txe modules on mei
client bus via mei_cldev_enable/disable is error prone due to possible
internal reset flow, where clients are disconnected underneath. Moving
reference counting to probe and release of mei bus client driver solves
this issue in simplest way, as each client provides only a single
connection to a client bus driver.
Cc: <stable@vger.kernel.org> Signed-off-by: Alexander Usyskin
<alexander.usyskin@intel.com> Signed-off-by: Tomas Winkler
<tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/misc/mei/bus.c (diff)
Commit 2adb36ff325d889e7771c90fdbc413a811873b2d by gregkh
stm class: Prevent division by zero
commit bf7cbaae0831252b416f375ca9b1027ecd4642dd upstream.
Using STP_POLICY_ID_SET ioctl command with dummy_stm device, or any STM
device that supplies zero mmio channel size, will trigger a division by
zero bug in the kernel.
Prevent this by disallowing channel widths other than 1 for such
devices.
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Fixes: 7bd1d4093c2f ("stm class: Introduce an abstraction for System
Trace Module devices") CC: stable@vger.kernel.org # v4.4+ Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/hwtracing/stm/core.c (diff)
Commit 9b2fdbdce1fb6774cd234b64b854e9090f4d6ba9 by gregkh
stm class: Fix an endless loop in channel allocation
commit a1d75dad3a2c689e70a1c4e0214cca9de741d0aa upstream.
There is a bug in the channel allocation logic that leads to an endless
loop when looking for a contiguous range of channels in a range with a
mixture of free and occupied channels. For example, opening three
consequtive channels, closing the first two and requesting 4 channels in
a row will trigger this soft lockup. The bug is that the search loop
forgets to skip over the range once it detects that one channel in that
range is occupied.
Restore the original intent to the logic by fixing the omission.
Signed-off-by: Zhi Jin <zhi.jin@intel.com> Signed-off-by: Alexander
Shishkin <alexander.shishkin@linux.intel.com> Fixes: 7bd1d4093c2f ("stm
class: Introduce an abstraction for System Trace Module devices") CC:
stable@vger.kernel.org # v4.4+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/hwtracing/stm/core.c (diff)
Commit fce3d391401a0fd25955a02a4a4577c7eae85aeb by gregkh
crypto: caam - fix hash context DMA unmap size
commit 65055e2108847af5e577cc7ce6bde45ea136d29a upstream.
When driver started using state->caam_ctxt for storing both running hash
and final hash, it was not updated to handle different DMA unmap
lengths.
Cc: <stable@vger.kernel.org> # v4.19+ Fixes: c19650d6ea99 ("crypto: caam
- fix DMA mapping of stack memory") Signed-off-by: Franck LENORMAND
<franck.lenormand@nxp.com> Signed-off-by: Horia Geantă
<horia.geanta@nxp.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/caam/caamhash.c (diff)
Commit 4a18213573b811d1910964dae36c3b3c358c0ba2 by gregkh
crypto: ccree - fix missing break in switch statement
commit b5be853181a8d4a6e20f2073ccd273d6280cad88 upstream.
Add missing break statement in order to prevent the code from falling
through to case S_DIN_to_DES.
This bug was found thanks to the ongoing efforts to enable
-Wimplicit-fallthrough.
Fixes: 63ee04c8b491 ("crypto: ccree - add skcipher support") Cc:
stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/ccree/cc_cipher.c (diff)
Commit e86dc780320e586fb1a30536f2b017fc7a4beb9c by gregkh
crypto: caam - fixed handling of sg list
commit 42e95d1f10dcf8b18b1d7f52f7068985b3dc5b79 upstream.
when the source sg contains more than 1 fragment and destination sg
contains 1 fragment, the caam driver mishandle the buffers to be sent to
caam.
Fixes: f2147b88b2b1 ("crypto: caam - Convert GCM to new AEAD interface")
Cc: <stable@vger.kernel.org> # 4.2+ Signed-off-by: Pankaj Gupta
<pankaj.gupta@nxp.com> Signed-off-by: Arun Pathak <arun.pathak@nxp.com>
Reviewed-by: Horia Geanta <horia.geanta@nxp.com> Signed-off-by: Herbert
Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/caam/caamalg.c (diff)
Commit 6e905e258c50b32fdda68dff8a7686b8d2636ce7 by gregkh
crypto: caam - fix DMA mapping of stack memory
commit c19650d6ea99bcd903d3e55dd61860026c701339 upstream.
Roland reports the following issue and provides a root cause analysis:
"On a v4.19 i.MX6 system with IMA and CONFIG_DMA_API_DEBUG enabled, a
warning is generated when accessing files on a filesystem for which IMA
measurement is enabled:
    ------------[ cut here ]------------
   WARNING: CPU: 0 PID: 1 at kernel/dma/debug.c:1181
check_for_stack.part.9+0xd0/0x120
   caam_jr 2101000.jr0: DMA-API: device driver maps memory from stack
[addr=b668049e]
   Modules linked in:
   CPU: 0 PID: 1 Comm: switch_root Not tainted 4.19.0-20181214-1 #2
   Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
   Backtrace:
   [<c010efb8>] (dump_backtrace) from [<c010f2d0>]
(show_stack+0x20/0x24)
   [<c010f2b0>] (show_stack) from [<c08b04f4>] (dump_stack+0xa0/0xcc)
   [<c08b0454>] (dump_stack) from [<c012b610>] (__warn+0xf0/0x108)
   [<c012b520>] (__warn) from [<c012b680>] (warn_slowpath_fmt+0x58/0x74)
   [<c012b62c>] (warn_slowpath_fmt) from [<c0199acc>]
(check_for_stack.part.9+0xd0/0x120)
   [<c01999fc>] (check_for_stack.part.9) from [<c019a040>]
(debug_dma_map_page+0x144/0x174)
   [<c0199efc>] (debug_dma_map_page) from [<c065f7f4>]
(ahash_final_ctx+0x5b4/0xcf0)
   [<c065f240>] (ahash_final_ctx) from [<c065b3c4>]
(ahash_final+0x1c/0x20)
   [<c065b3a8>] (ahash_final) from [<c03fe278>]
(crypto_ahash_op+0x38/0x80)
   [<c03fe240>] (crypto_ahash_op) from [<c03fe2e0>]
(crypto_ahash_final+0x20/0x24)
   [<c03fe2c0>] (crypto_ahash_final) from [<c03f19a8>]
(ima_calc_file_hash+0x29c/0xa40)
   [<c03f170c>] (ima_calc_file_hash) from [<c03f2b24>]
(ima_collect_measurement+0x1dc/0x240)
   [<c03f2948>] (ima_collect_measurement) from [<c03f0a60>]
(process_measurement+0x4c4/0x6b8)
   [<c03f059c>] (process_measurement) from [<c03f0cdc>]
(ima_file_check+0x88/0xa4)
   [<c03f0c54>] (ima_file_check) from [<c02d8adc>]
(path_openat+0x5d8/0x1364)
   [<c02d8504>] (path_openat) from [<c02dad24>] (do_filp_open+0x84/0xf0)
   [<c02daca0>] (do_filp_open) from [<c02cf50c>]
(do_open_execat+0x84/0x1b0)
   [<c02cf488>] (do_open_execat) from [<c02d1058>]
(__do_execve_file+0x43c/0x890)
   [<c02d0c1c>] (__do_execve_file) from [<c02d1770>]
(sys_execve+0x44/0x4c)
   [<c02d172c>] (sys_execve) from [<c0101000>]
(ret_fast_syscall+0x0/0x28)
   ---[ end trace 3455789a10e3aefd ]---
The cause is that the struct ahash_request *req is created as a
stack-local variable up in the stack (presumably somewhere in the IMA
implementation), then passed down into the CAAM driver, which tries to
dma_single_map the req->result (indirectly via map_seq_out_ptr_result)
in order to make that buffer available for the CAAM to store the result
of the following hash operation.
The calling code doesn't know how req will be used by the CAAM driver,
and there could be other such occurrences where stack memory is passed
down to the CAAM driver. Therefore we should rather fix this issue in
the CAAM driver where the requirements are known."
Fix this problem by:
-instructing the crypto engine to write the final hash in
state->caam_ctx
-subsequently memcpy-ing the final hash into req->result
Cc: <stable@vger.kernel.org> # v4.19+ Reported-by: Roland Hieber
<rhi@pengutronix.de> Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Tested-by: Roland Hieber <rhi@pengutronix.de> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/caam/caamhash.c (diff)
Commit 37ff06fd9cb5dd7dbf401a321d0cd3658e918a63 by gregkh
crypto: ccree - fix free of unallocated mlli buffer
commit a49411959ea6d4915a9fd2a7eb5ba220e6284e9a upstream.
In cc_unmap_aead_request(), call dma_pool_free() for mlli buffer only if
an item is allocated from the pool and not always if there is a pool
allocated. This fixes a kernel panic when trying to free a non-allocated
item.
Cc: stable@vger.kernel.org Signed-off-by: Hadar Gat <hadar.gat@arm.com>
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/ccree/cc_buffer_mgr.c (diff)
Commit 4fc9f0e1c9ffe9ae6dd8591055be95c5fc176996 by gregkh
crypto: ccree - unmap buffer before copying IV
commit c139c72e2beb3e3db5148910b3962b7322e24374 upstream.
We were copying the last ciphertext block into the IV field for CBC
before removing the DMA mapping of the output buffer with the result of
the buffer sometime being out-of-sync cache wise and were getting
intermittent cases of bad output IV.
Fix it by moving the DMA buffer unmapping before the copy.
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com> Fixes:
00904aa0cd59 ("crypto: ccree - fix iv handling") Cc:
<stable@vger.kernel.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/ccree/cc_cipher.c (diff)
Commit ded8d6308ffd691475fe2c80e7ff4f3aa3979a99 by gregkh
crypto: ccree - don't copy zero size ciphertext
commit 2b5ac17463dcb2411fed506edcf259a89bb538ba upstream.
For decryption in CBC mode we need to save the last ciphertext block for
use as the next IV. However, we were trying to do this also with zero
sized ciphertext resulting in a panic.
Fix this by only doing the copy if the ciphertext length is at least of
IV size.
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com> Cc:
stable@vger.kernel.org Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/ccree/cc_cipher.c (diff)
Commit 64ae3c3d0c16817d2b89c5140dac76e06890ded1 by gregkh
crypto: cfb - add missing 'chunksize' property
commit 394a9e044702e6a8958a5e89d2a291605a587a2a upstream.
Like some other block cipher mode implementations, the CFB
implementation assumes that while walking through the scatterlist, a
partial block does not occur until the end.  But the walk is incorrectly
being done with a blocksize of 1, as 'cra_blocksize' is set to 1 (since
CFB is a stream cipher) but no 'chunksize' is set.  This bug causes
incorrect encryption/decryption for some scatterlist layouts.
Fix it by setting the 'chunksize'.  Also extend the CFB test vectors to
cover this bug as well as cases where the message length is not a
multiple of the block size.
Fixes: a7d85e06ed80 ("crypto: cfb - add support for Cipher FeedBack
mode") Cc: <stable@vger.kernel.org> # v4.17+ Cc: James Bottomley
<James.Bottomley@HansenPartnership.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/testmgr.h (diff)
The file was modifiedcrypto/cfb.c (diff)
Commit 5d894501d42350021f28e2df2fe68394a0e96c3e by gregkh
crypto: cfb - remove bogus memcpy() with src == dest
commit 6c2e322b3621dc8be72e5c86d4fdb587434ba625 upstream.
The memcpy() in crypto_cfb_decrypt_inplace() uses walk->iv as both the
source and destination, which has undefined behavior.  It is unneeded
because walk->iv is already used to hold the previous ciphertext block;
thus, walk->iv is already updated to its final value.  So, remove it.
Also, note that in-place decryption is the only case where the previous
ciphertext block is not directly available.  Therefore, as a related
cleanup I also updated crypto_cfb_encrypt_segment() to directly use the
previous ciphertext block rather than save it into walk->iv.  This makes
it consistent with in-place encryption and out-of-place decryption; now
only in-place decryption is different, because it has to be.
Fixes: a7d85e06ed80 ("crypto: cfb - add support for Cipher FeedBack
mode") Cc: <stable@vger.kernel.org> # v4.17+ Cc: James Bottomley
<James.Bottomley@HansenPartnership.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/cfb.c (diff)
Commit b03aa2833d567ad2b6985dde425e5e7f0978cc7f by gregkh
crypto: ofb - fix handling partial blocks and make thread-safe
commit b3e3e2db7de4a1ffe8845876c3520b866cd48de1 upstream.
Fix multiple bugs in the OFB implementation:
1. It stored the per-request state 'cnt' in the tfm context, which can
be
  used by multiple threads concurrently (e.g. via AF_ALG). 2. It didn't
support messages not a multiple of the block cipher size,
  despite being a stream cipher. 3. It didn't set cra_blocksize to 1 to
indicate it is a stream cipher.
To fix these, set the 'chunksize' property to the cipher block size to
guarantee that when walking through the scatterlist, a partial block can
only occur at the end.  Then change the implementation to XOR a block at
a time at first, then XOR the partial block at the end if needed.  This
is the same way CTR and CFB are implemented.  As a bonus, this also
improves performance in most cases over the current approach.
Fixes: e497c51896b3 ("crypto: ofb - add output feedback mode") Cc:
<stable@vger.kernel.org> # v4.20+ Cc: Gilad Ben-Yossef
<gilad@benyossef.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Gilad Ben-Yossef <gilad@benyossef.com> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedcrypto/testmgr.h (diff)
The file was modifiedcrypto/ofb.c (diff)
Commit 20af3634022b2abda46f8b2c8e06a9154c878bd2 by gregkh
crypto: ahash - fix another early termination in hash walk
commit 77568e535af7c4f97eaef1e555bf0af83772456c upstream.
Hash algorithms with an alignmask set, e.g. "xcbc(aes-aesni)" and
"michael_mic", fail the improved hash tests because they sometimes
produce the wrong digest.  The bug is that in the case where a
scatterlist element crosses pages, not all the data is actually hashed
because the scatterlist walk terminates too early.  This happens because
the 'nbytes' variable in crypto_hash_walk_done() is assigned the number
of bytes remaining in the page, then later interpreted as the number of
bytes remaining in the scatterlist element.  Fix it.
Fixes: 900a081f6912 ("crypto: ahash - Fix early termination in hash
walk") Cc: stable@vger.kernel.org Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/ahash.c (diff)
Commit e400988e1daef9f38aaf6cfe3d9d4491b43d79f2 by gregkh
crypto: rockchip - fix scatterlist nents error
commit 4359669a087633132203c52d67dd8c31e09e7b2e upstream.
In some cases, the nents of src scatterlist is different from dst
scatterlist. So two variables are used to handle the nents of src&dst
scatterlist.
Reported-by: Eric Biggers <ebiggers@google.com> Fixes: 433cd2c617bf
("crypto: rockchip - add crypto driver for rk3288") Cc:
<stable@vger.kernel.org> # v4.5+ Signed-off-by: Zhang Zhijie
<zhangzj@rock-chips.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/rockchip/rk3288_crypto.h (diff)
The file was modifieddrivers/crypto/rockchip/rk3288_crypto_ahash.c (diff)
The file was modifieddrivers/crypto/rockchip/rk3288_crypto_ablkcipher.c (diff)
The file was modifieddrivers/crypto/rockchip/rk3288_crypto.c (diff)
Commit c2ca8161971a964531b4afe23a1a236bcec16022 by gregkh
crypto: rockchip - update new iv to device in multiple operations
commit c1c214adcb56d36433480c8fedf772498e7e539c upstream.
For chain mode in cipher(eg. AES-CBC/DES-CBC), the iv is continuously
updated in the operation. The new iv value should be written to device
register by software.
Reported-by: Eric Biggers <ebiggers@google.com> Fixes: 433cd2c617bf
("crypto: rockchip - add crypto driver for rk3288") Cc:
<stable@vger.kernel.org> # v4.5+ Signed-off-by: Zhang Zhijie
<zhangzj@rock-chips.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/rockchip/rk3288_crypto_ablkcipher.c (diff)
The file was modifieddrivers/crypto/rockchip/rk3288_crypto.h (diff)
Commit 9cd805133b844a965570723bacb88595b0a62615 by gregkh
dax: Flush partial PMDs correctly
commit e4b3448bc346fedf36db64124a664a959995b085 upstream.
The radix tree would rewind the index in an iterator to the lowest index
of a multi-slot entry.  The XArray iterators instead leave the index
unchanged, but I overlooked that when converting DAX from the radix tree
to the XArray.  Adjust the index that we use for flushing to the start
of the PMD range.
Fixes: c1901cd33cf4 ("page cache: Convert find_get_entries_tag to
XArray") Cc: <stable@vger.kernel.org> Reported-by: Piotr Balcer
<piotr.balcer@intel.com> Tested-by: Dan Williams
<dan.j.williams@intel.com> Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Matthew Wilcox <willy@infradead.org> Signed-off-by: Dan
Williams <dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/dax.c (diff)
Commit 59a0e57f0cd3cfb5afc815247b0c8b9c9977d55d by gregkh
nfit: Fix nfit_intel_shutdown_status() command submission
commit f596c8844fe1d0022007ae6c7a377361fb653eff upstream.
The implementation is broken in all the ways the unit test did not
touch:
1/ The local definition of in_buf and in_obj violated C99 initializer
  expectations for zeroing. By only initializing 2 out of the three
  struct members the compiler was free to zero-initialize the remaining
  entry even though the aliased location in the union was initialized.
2/ The implementation made assumptions about the state of the 'smart'
  payload after command execution that are satisfied by
  acpi_nfit_ctl(), but not acpi_evaluate_dsm().
3/ populate_shutdown_status() is skipped on Intel NVDIMMs due to the
early
  return for skipping the common _LS{I,R,W} enabling.
4/ The input length should be zero.
This breakage was missed due to the unit test implementation only
testing the case where nfit_intel_shutdown_status() returns a valid
payload.
Much of this complexity would be saved if acpi_nfit_ctl() could be used,
but that currently requires a 'struct nvdimm *' argument and one is not
created until later in the init process. The health result is needed
before the device is created because the payload gates whether the
nmemX/nfit/dirty_shutdown property is visible in sysfs.
Cc: <stable@vger.kernel.org> Fixes: 0ead11181fe0 ("acpi, nfit: Collect
shutdown status") Reported-by: Dexuan Cui <decui@microsoft.com>
Reviewed-by: Dexuan Cui <decui@microsoft.com> Signed-off-by: Dan
Williams <dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit a2690301c9762c5c26c33fbd93002384b30be15b by gregkh
nfit: acpi_nfit_ctl(): Check out_obj->type in the right place
commit 43f89877f26671c6309cd87d7364b1a3e66e71cf upstream.
In the case of ND_CMD_CALL, we should also check out_obj->type.
The patch uses out_obj->type, which is a short alias to
out_obj->package.type.
Fixes: 31eca76ba2fc ("nfit, libnvdimm: limited/whitelisted dimm command
marshaling mechanism") Cc: <stable@vger.kernel.org> Signed-off-by:
Dexuan Cui <decui@microsoft.com> Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit 0c79794474895dbbc3c52225f7e9f73cfecbb7dd by gregkh
acpi/nfit: Fix bus command validation
commit ebe9f6f19d80d8978d16078dff3d5bd93ad8d102 upstream.
Commit 11189c1089da "acpi/nfit: Fix command-supported detection" broke
ND_CMD_CALL for bus-level commands. The "func = cmd" assumption is only
valid for:
    ND_CMD_ARS_CAP
   ND_CMD_ARS_START
   ND_CMD_ARS_STATUS
   ND_CMD_CLEAR_ERROR
The function number otherwise needs to be pulled from the command
payload for:
    NFIT_CMD_TRANSLATE_SPA
   NFIT_CMD_ARS_INJECT_SET
   NFIT_CMD_ARS_INJECT_CLEAR
   NFIT_CMD_ARS_INJECT_GET
Update cmd_to_func() for the bus case and call it in the common path.
Fixes: 11189c1089da ("acpi/nfit: Fix command-supported detection") Cc:
<stable@vger.kernel.org> Reviewed-by: Vishal Verma
<vishal.l.verma@intel.com> Reported-by: Grzegorz Burzynski
<grzegorz.burzynski@intel.com> Tested-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit b3971c932d0d10f95c8d7c9e972276c3319941de by gregkh
nfit/ars: Attempt a short-ARS whenever the ARS state is idle at boot
commit c6c5df293bf1b488cf8459aac658aecfdccb13a9 upstream.
If query-ARS reports that ARS has stopped and requires continuation
attempt to retrieve short-ARS results before continuing the long
operation.
Fixes: bc6ba8085842 ("nfit, address-range-scrub: rework and simplify
ARS...") Cc: <stable@vger.kernel.org> Reported-by: Krzysztof Rusocki
<krzysztof.rusocki@intel.com> Reviewed-by: Toshi Kani
<toshi.kani@hpe.com> Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit 5fa9cb709adc46b52c25a45d919563b02c8fca6e by gregkh
nfit/ars: Attempt short-ARS even in the no_init_ars case
commit fa3ed4d981b1fc19acdd07fcb152a4bd3706892b upstream.
The no_init_ars option is meant to prevent long-ARS, but short-ARS
should be allowed to grab any immediate results.
Fixes: bc6ba8085842 ("nfit, address-range-scrub: rework and simplify
ARS...") Cc: <stable@vger.kernel.org> Reported-by: Erwin Tsaur
<erwin.tsaur@oracle.com> Reviewed-by: Toshi Kani <toshi.kani@hpe.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit dd40489f675180171f5c14929c8424e09b68b75a by gregkh
libnvdimm/label: Clear 'updating' flag after label-set update
commit 966d23a006ca7b44ac8cf4d0c96b19785e0c3da0 upstream.
The UEFI 2.7 specification sets expectations that the 'updating' flag is
eventually cleared. To date, the libnvdimm core has never adhered to
that protocol. The policy of the core matches the policy of other
multi-device info-block formats like MD-Software-RAID that expect
administrator intervention on inconsistent info-blocks, not automatic
invalidation.
However, some pre-boot environments may unfortunately attempt to "clean
up" the labels and invalidate a set when it fails to find at least one
"non-updating" label in the set. Clear the updating flag after set
updates to minimize the window of vulnerability to aggressive pre-boot
environments.
Ideally implementations would not write to the label area outside of
creating namespaces.
Note that this only minimizes the window, it does not close it as the
system can still crash while clearing the flag and the set can be
subsequently deleted / invalidated by the pre-boot environment.
Fixes: f524bf271a5c ("libnvdimm: write pmem label set") Cc:
<stable@vger.kernel.org> Cc: Kelly Couch <kelly.j.couch@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/nvdimm/label.c (diff)
Commit 4b9d1f8b61e8a8a5228fd76fddf0e9dfdfb3a797 by gregkh
libnvdimm, pfn: Fix over-trim in trim_pfn_device()
commit f101ada7da6551127d192c2f1742c1e9e0f62799 upstream.
When trying to see whether current nd_region intersects with others,
trim_pfn_device() has already calculated the *size* to be expanded to
SECTION size.
Do not double append 'adjust' to 'size' when calculating whether the end
of a region collides with the next pmem region.
Fixes: ae86cbfef381 "libnvdimm, pfn: Pad pfn namespaces relative to
other regions" Cc: <stable@vger.kernel.org> Signed-off-by: Wei Yang
<richardw.yang@linux.intel.com> Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/nvdimm/pfn_devs.c (diff)
Commit fefd9f16efc31418c2d9de99f5ca6a48b36ce679 by gregkh
libnvdimm/pmem: Honor force_raw for legacy pmem regions
commit fa7d2e639cd90442d868dfc6ca1d4cc9d8bf206e upstream.
For recovery, where non-dax access is needed to a given physical address
range, and testing, allow the 'force_raw' attribute to override the
default establishment of a dev_pagemap.
Otherwise without this capability it is possible to end up with a
namespace that can not be activated due to corrupted info-block, and one
that can not be repaired due to a section collision.
Cc: <stable@vger.kernel.org> Fixes: 004f1afbe199 ("libnvdimm, pmem:
direct map legacy pmem by default") Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/nvdimm/namespace_devs.c (diff)
Commit 2ac714d69197f48fb87208c6994284075dcdb4fd by gregkh
libnvdimm: Fix altmap reservation size calculation
commit 07464e88365e9236febaca9ed1a2e2006d8bc952 upstream.
Libnvdimm reserves the first 8K of pfn and devicedax namespaces to store
a superblock describing the namespace. This 8K reservation is contained
within the altmap area which the kernel uses for the vmemmap backing for
the pages within the namespace. The altmap allows for some pages at the
start of the altmap area to be reserved and that mechanism is used to
protect the superblock from being re-used as vmemmap backing.
The number of PFNs to reserve is calculated using:
PHYS_PFN(SZ_8K)
Which is implemented as:
#define PHYS_PFN(x) ((unsigned long)((x) >> PAGE_SHIFT))
So on systems where PAGE_SIZE is greater than 8K the reservation size is
truncated to zero and the superblock area is re-used as vmemmap backing.
As a result all the namespace information stored in the superblock (i.e.
if it's a PFN or DAX namespace) is lost and the namespace needs to be
re-created to get access to the contents.
This patch fixes this by using PFN_UP() rather than PHYS_PFN() to ensure
that at least one page is reserved. On systems with a 4K pages size this
patch should have no effect.
Cc: stable@vger.kernel.org Cc: Dan Williams <dan.j.williams@intel.com>
Fixes: ac515c084be9 ("libnvdimm, pmem, pfn: move pfn setup to the core")
Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Reviewed-by: Vishal
Verma <vishal.l.verma@intel.com> Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/nvdimm/pfn_devs.c (diff)
Commit 781bcac5b19943d4275e5ddc113b468c880e0eb7 by gregkh
fix cgroup_do_mount() handling of failure exits
commit 399504e21a10be16dd1408ba0147367d9d82a10c upstream.
same story as with last May fixes in sysfs (7b745a4e4051
"unfuck sysfs_mount()"); new_sb is left uninitialized in case of early
errors in kernfs_mount_ns() and papering over it by treating any error
from kernfs_mount_ns() as equivalent to !new_ns ends up conflating the
cases when objects had never been transferred to a superblock with ones
when that has happened and resulting new superblock had been dropped.
Easily fixed (same way as in sysfs case).  Additionally, there's a
superblock leak on kernfs_node_dentry() failure *and* a dentry leak
inside kernfs_node_dentry() itself - the latter on probably impossible
errors, but the former not impossible to trigger
(as the matter of fact, injecting allocation failures at that point
*does* trigger it).
Cc: stable@kernel.org Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/kernfs/mount.c (diff)
The file was modifiedkernel/cgroup/cgroup.c (diff)
Commit 650b7246d4606306a9b780468e1e9f3a9b262f27 by gregkh
crypto: aead - set CRYPTO_TFM_NEED_KEY if ->setkey() fails
commit 6ebc97006b196aafa9df0497fdfa866cf26f259b upstream.
Some algorithms have a ->setkey() method that is not atomic, in the
sense that setting a key can fail after changes were already made to the
tfm context.  In this case, if a key was already set the tfm can end up
in a state that corresponds to neither the old key nor the new key.
For example, in gcm.c, if the kzalloc() fails due to lack of memory,
then the CTR part of GCM will have the new key but GHASH will not.
It's not feasible to make all ->setkey() methods atomic, especially ones
that have to key multiple sub-tfms.  Therefore, make the crypto API set
CRYPTO_TFM_NEED_KEY if ->setkey() fails, to prevent the tfm from being
used until a new key is set.
[Cc stable mainly because when introducing the NEED_KEY flag I changed
AF_ALG to rely on it; and unlike in-kernel crypto API users, AF_ALG
previously didn't have this problem.  So these "incompletely keyed"
states became theoretically accessible via AF_ALG -- though, the
opportunities for causing real mischief seem pretty limited.]
Fixes: dc26c17f743a ("crypto: aead - prevent using AEADs without setting
key") Cc: <stable@vger.kernel.org> # v4.16+ Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/aead.c (diff)
Commit e414d9bc86a7d71d9dc8b65d5b371cb0971d8394 by gregkh
crypto: aegis - fix handling chunked inputs
commit 0f533e67d26f228ea5dfdacc8a4bdeb487af5208 upstream.
The generic AEGIS implementations all fail the improved AEAD tests
because they produce the wrong result with some data layouts.  The issue
is that they assume that if the skcipher_walk API gives 'nbytes' not
aligned to the walksize (a.k.a. walk.stride), then it is the end of the
data.  In fact, this can happen before the end.  Fix them.
Fixes: f606a88e5823 ("crypto: aegis - Add generic AEGIS AEAD
implementations") Cc: <stable@vger.kernel.org> # v4.18+ Cc: Ondrej
Mosnacek <omosnace@redhat.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Reviewed-by: Ondrej Mosnacek <omosnace@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedcrypto/aegis256.c (diff)
The file was modifiedcrypto/aegis128l.c (diff)
The file was modifiedcrypto/aegis128.c (diff)
Commit 844351fc03b0d8f34ed8ef9426b344d3096b6dc9 by gregkh
crypto: arm/crct10dif - revert to C code for short inputs
commit 62fecf295e3c48be1b5f17c440b93875b9adb4d6 upstream.
The SIMD routine ported from x86 used to have a special code path for
inputs < 16 bytes, which got lost somewhere along the way. Instead, the
current glue code aligns the input pointer to permit the NEON routine to
use special versions of the vld1 instructions that assume 16 byte
alignment, but this could result in inputs of less than 16 bytes to be
passed in. This not only fails the new extended tests that Eric has
implemented, it also results in the code reading past the end of the
input, which could potentially result in crashes when dealing with less
than 16 bytes of input at the end of a page which is followed by an
unmapped page.
So update the glue code to only invoke the NEON routine if the input is
at least 16 bytes.
Reported-by: Eric Biggers <ebiggers@kernel.org> Reviewed-by: Eric
Biggers <ebiggers@kernel.org> Fixes: 1d481f1cd892 ("crypto:
arm/crct10dif - port x86 SSE implementation to ARM") Cc:
<stable@vger.kernel.org> # v4.10+ Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm/crypto/crct10dif-ce-glue.c (diff)
The file was modifiedarch/arm/crypto/crct10dif-ce-core.S (diff)
Commit d78abd635e6c31825737fbc67c631832cc15b92f by gregkh
crypto: arm64/aes-neonbs - fix returning final keystream block
commit 12455e320e19e9cc7ad97f4ab89c280fe297387c upstream.
The arm64 NEON bit-sliced implementation of AES-CTR fails the improved
skcipher tests because it sometimes produces the wrong ciphertext.  The
bug is that the final keystream block isn't returned from the assembly
code when the number of non-final blocks is zero.  This can happen if
the input data ends a few bytes after a page boundary.  In this case the
last bytes get "encrypted" by XOR'ing them with uninitialized memory.
Fix the assembly code to return the final keystream block when needed.
Fixes: 88a3f582bea9 ("crypto: arm64/aes - don't use IV buffer to return
final keystream block") Cc: <stable@vger.kernel.org> # v4.11+
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by:
Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/crypto/aes-neonbs-core.S (diff)
Commit 7007b2645f6e8be0d236ad293ca6229228d9a7f5 by gregkh
crypto: arm64/crct10dif - revert to C code for short inputs
commit d72b9d4acd548251f55b16843fc7a05dc5c80de8 upstream.
The SIMD routine ported from x86 used to have a special code path for
inputs < 16 bytes, which got lost somewhere along the way. Instead, the
current glue code aligns the input pointer to 16 bytes, which is not
really necessary on this architecture (although it could be beneficial
to performance to expose aligned data to the the NEON routine), but this
could result in inputs of less than 16 bytes to be passed in. This not
only fails the new extended tests that Eric has implemented, it also
results in the code reading past the end of the input, which could
potentially result in crashes when dealing with less than 16 bytes of
input at the end of a page which is followed by an unmapped page.
So update the glue code to only invoke the NEON routine if the input is
at least 16 bytes.
Reported-by: Eric Biggers <ebiggers@kernel.org> Reviewed-by: Eric
Biggers <ebiggers@kernel.org> Fixes: 6ef5737f3931 ("crypto:
arm64/crct10dif - port x86 SSE implementation to arm64") Cc:
<stable@vger.kernel.org> # v4.10+ Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/crypto/crct10dif-ce-glue.c (diff)
Commit c850ff289c4ea283f147157945297a96ed9cdae0 by gregkh
crypto: hash - set CRYPTO_TFM_NEED_KEY if ->setkey() fails
commit ba7d7433a0e998c902132bd47330e355a1eaa894 upstream.
Some algorithms have a ->setkey() method that is not atomic, in the
sense that setting a key can fail after changes were already made to the
tfm context.  In this case, if a key was already set the tfm can end up
in a state that corresponds to neither the old key nor the new key.
It's not feasible to make all ->setkey() methods atomic, especially ones
that have to key multiple sub-tfms.  Therefore, make the crypto API set
CRYPTO_TFM_NEED_KEY if ->setkey() fails and the algorithm requires a
key, to prevent the tfm from being used until a new key is set.
Note: we can't set CRYPTO_TFM_NEED_KEY for OPTIONAL_KEY algorithms, so
->setkey() for those must nevertheless be atomic.  That's fine for now
since only the crc32 and crc32c algorithms set OPTIONAL_KEY, and it's
not intended that OPTIONAL_KEY be used much.
[Cc stable mainly because when introducing the NEED_KEY flag I changed
AF_ALG to rely on it; and unlike in-kernel crypto API users, AF_ALG
previously didn't have this problem.  So these "incompletely keyed"
states became theoretically accessible via AF_ALG -- though, the
opportunities for causing real mischief seem pretty limited.]
Fixes: 9fa68f620041 ("crypto: hash - prevent using keyed hashes without
setting key") Cc: stable@vger.kernel.org Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/shash.c (diff)
The file was modifiedcrypto/ahash.c (diff)
Commit 9cbfb0a8d1afb0b47327fe0e0956c106070abf64 by gregkh
crypto: morus - fix handling chunked inputs
commit d644f1c8746ed24f81075480f9e9cb3777ae8d65 upstream.
The generic MORUS implementations all fail the improved AEAD tests
because they produce the wrong result with some data layouts.  The issue
is that they assume that if the skcipher_walk API gives 'nbytes' not
aligned to the walksize (a.k.a. walk.stride), then it is the end of the
data.  In fact, this can happen before the end.  Fix them.
Fixes: 396be41f16fd ("crypto: morus - Add generic MORUS AEAD
implementations") Cc: <stable@vger.kernel.org> # v4.18+ Cc: Ondrej
Mosnacek <omosnace@redhat.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Reviewed-by: Ondrej Mosnacek <omosnace@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedcrypto/morus640.c (diff)
The file was modifiedcrypto/morus1280.c (diff)
Commit 0173f7ca0e2222f42310a49ad89481b5a877973d by gregkh
crypto: pcbc - remove bogus memcpy()s with src == dest
commit 251b7aea34ba3c4d4fdfa9447695642eb8b8b098 upstream.
The memcpy()s in the PCBC implementation use walk->iv as both the source
and destination, which has undefined behavior.  These memcpy()'s are
actually unneeded, because walk->iv is already used to hold the previous
plaintext block XOR'd with the previous ciphertext block.  Thus,
walk->iv is already updated to its final value.
So remove the broken and unnecessary memcpy()s.
Fixes: 91652be5d1b9 ("[CRYPTO] pcbc: Add Propagated CBC template") Cc:
<stable@vger.kernel.org> # v2.6.21+ Cc: David Howells
<dhowells@redhat.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedcrypto/pcbc.c (diff)
Commit c58580801420cfe5e82c105e71741e31dfe506b6 by gregkh
crypto: skcipher - set CRYPTO_TFM_NEED_KEY if ->setkey() fails
commit b1f6b4bf416b49f00f3abc49c639371cdecaaad1 upstream.
Some algorithms have a ->setkey() method that is not atomic, in the
sense that setting a key can fail after changes were already made to the
tfm context.  In this case, if a key was already set the tfm can end up
in a state that corresponds to neither the old key nor the new key.
For example, in lrw.c, if gf128mul_init_64k_bbe() fails due to lack of
memory, then priv::table will be left NULL.  After that, encryption with
that tfm will cause a NULL pointer dereference.
It's not feasible to make all ->setkey() methods atomic, especially ones
that have to key multiple sub-tfms.  Therefore, make the crypto API set
CRYPTO_TFM_NEED_KEY if ->setkey() fails and the algorithm requires a
key, to prevent the tfm from being used until a new key is set.
[Cc stable mainly because when introducing the NEED_KEY flag I changed
AF_ALG to rely on it; and unlike in-kernel crypto API users, AF_ALG
previously didn't have this problem.  So these "incompletely keyed"
states became theoretically accessible via AF_ALG -- though, the
opportunities for causing real mischief seem pretty limited.]
Fixes: f8d33fac8480 ("crypto: skcipher - prevent using skciphers without
setting key") Cc: <stable@vger.kernel.org> # v4.16+ Signed-off-by: Eric
Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/skcipher.c (diff)
Commit c9e34c3c34b928ff35a9ef84be2220ea1a3067e8 by gregkh
crypto: testmgr - skip crc32c context test for ahash algorithms
commit eb5e6730db98fcc4b51148b4a819fa4bf864ae54 upstream.
Instantiating "cryptd(crc32c)" causes a crypto self-test failure because
the crypto_alloc_shash() in alg_test_crc32c() fails.  This is because
cryptd(crc32c) is an ahash algorithm, not a shash algorithm; so it can
only be accessed through the ahash API, unlike shash algorithms which
can be accessed through both the ahash and shash APIs.
As the test is testing the shash descriptor format which is only
applicable to shash algorithms, skip it for ahash algorithms.
(Note that it's still important to fix crypto self-test failures even
for weird algorithm instantiations like cryptd(crc32c) that no one
would really use; in fips_enabled mode unprivileged users can use them
to panic the kernel, and also they prevent treating a crypto self-test
failure as a bug when fuzzing the kernel.)
Fixes: 8e3ee85e68c5 ("crypto: crc32c - Test descriptor context format")
Cc: stable@vger.kernel.org Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/testmgr.c (diff)
Commit 2e0e52c3d61895944c8250b87d0fff6b8a7fa09c by gregkh
crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP
commit ba6771c0a0bc2fac9d6a8759bab8493bd1cffe3b upstream.
The x86 AEGIS implementations all fail the improved AEAD tests because
they produce the wrong result with some data layouts.  The issue is that
they assume that if the skcipher_walk API gives 'nbytes' not aligned to
the walksize (a.k.a. walk.stride), then it is the end of the data.  In
fact, this can happen before the end.
Also, when the CRYPTO_TFM_REQ_MAY_SLEEP flag is given, they can
incorrectly sleep in the skcipher_walk_*() functions while preemption
has been disabled by kernel_fpu_begin().
Fix these bugs.
Fixes: 1d373d4e8e15 ("crypto: x86 - Add optimized AEGIS
implementations") Cc: <stable@vger.kernel.org> # v4.18+ Cc: Ondrej
Mosnacek <omosnace@redhat.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Reviewed-by: Ondrej Mosnacek <omosnace@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/crypto/aegis256-aesni-glue.c (diff)
The file was modifiedarch/x86/crypto/aegis128-aesni-glue.c (diff)
The file was modifiedarch/x86/crypto/aegis128l-aesni-glue.c (diff)
Commit 814ec1461901602180810c0b4fb310c34c9b5d5e by gregkh
crypto: x86/aesni-gcm - fix crash on empty plaintext
commit 3af349639597fea582a93604734d717e59a0e223 upstream.
gcmaes_crypt_by_sg() dereferences the NULL pointer returned by
scatterwalk_ffwd() when encrypting an empty plaintext and the source
scatterlist ends immediately after the associated data.
Fix it by only fast-forwarding to the src/dst data scatterlists if the
data length is nonzero.
This bug is reproduced by the "rfc4543(gcm(aes))" test vectors when run
with the new AEAD test manager.
Fixes: e845520707f8 ("crypto: aesni - Update aesni-intel_glue to use
scatter/gather") Cc: <stable@vger.kernel.org> # v4.17+ Cc: Dave Watson
<davejwatson@fb.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/crypto/aesni-intel_glue.c (diff)
Commit d78c34dfc2882a11ece54f555b8853031def4b08 by gregkh
crypto: x86/morus - fix handling chunked inputs and MAY_SLEEP
commit 2060e284e9595fc3baed6e035903c05b93266555 upstream.
The x86 MORUS implementations all fail the improved AEAD tests because
they produce the wrong result with some data layouts.  The issue is that
they assume that if the skcipher_walk API gives 'nbytes' not aligned to
the walksize (a.k.a. walk.stride), then it is the end of the data.  In
fact, this can happen before the end.
Also, when the CRYPTO_TFM_REQ_MAY_SLEEP flag is given, they can
incorrectly sleep in the skcipher_walk_*() functions while preemption
has been disabled by kernel_fpu_begin().
Fix these bugs.
Fixes: 56e8e57fc3a7 ("crypto: morus - Add common SIMD glue code for
MORUS") Cc: <stable@vger.kernel.org> # v4.18+ Cc: Ondrej Mosnacek
<omosnace@redhat.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Ondrej Mosnacek <omosnace@redhat.com> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/crypto/morus1280_glue.c (diff)
The file was modifiedarch/x86/crypto/morus640_glue.c (diff)
Commit 741ae3caa62f622123ea91dd785018aeaba0daba by gregkh
crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling
commit eaf46edf6ea89675bd36245369c8de5063a0272c upstream.
The NEON MAC calculation routine fails to handle the case correctly
where there is some data in the buffer, and the input fills it up
exactly. In this case, we enter the loop at the end with w8 == 0, while
a negative value is assumed, and so the loop carries on until the
increment of the 32-bit counter wraps around, which is quite obviously
wrong.
So omit the loop altogether in this case, and exit right away.
Reported-by: Eric Biggers <ebiggers@kernel.org> Fixes: a3fd82105b9d1
("arm64/crypto: AES in CCM mode using ARMv8 Crypto ...") Cc:
stable@vger.kernel.org Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/crypto/aes-ce-ccm-core.S (diff)
Commit afaf9d664b0f2e94110947db89123be1fcc1f5e9 by gregkh
crypto: arm64/aes-ccm - fix bugs in non-NEON fallback routine
commit 969e2f59d589c15f6aaf306e590dde16f12ea4b3 upstream.
Commit 5092fcf34908 ("crypto: arm64/aes-ce-ccm: add non-SIMD generic
fallback") introduced C fallback code to replace the NEON routines when
invoked from a context where the NEON is not available (i.e., from the
context of a softirq taken while the NEON is already being used in
kernel process context)
Fix two logical flaws in the MAC calculation of the associated data.
Reported-by: Eric Biggers <ebiggers@kernel.org> Fixes: 5092fcf34908
("crypto: arm64/aes-ce-ccm: add non-SIMD generic fallback") Cc:
stable@vger.kernel.org Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/crypto/aes-ce-ccm-glue.c (diff)
Commit 75bbb83e80c764ddfb4a70270c5b269c92cebd66 by gregkh
CIFS: Fix leaking locked VFS cache pages in writeback retry
commit 165df9a080b6863ae286fa01780c13d87cd81076 upstream.
If we don't find a writable file handle when retrying writepages we
break of the loop and do not unlock and put pages neither from wdata2
nor from the original wdata. Fix this by walking through all the
remaining pages and cleanup them properly.
Cc: <stable@vger.kernel.org> Signed-off-by: Pavel Shilovsky
<pshilov@microsoft.com> Signed-off-by: Steve French
<stfrench@microsoft.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/cifssmb.c (diff)
Commit a992916a9c893116ed106258b16630bd958aaac1 by gregkh
CIFS: Do not reset lease state to NONE on lease break
commit 7b9b9edb49ad377b1e06abf14354c227e9ac4b06 upstream.
Currently on lease break the client sets a caching level twice: when
oplock is detected and when oplock is processed. While the 1st attempt
sets the level to the value provided by the server, the 2nd one resets
the level to None unconditionally. This happens because the oplock/lease
processing code was changed to avoid races between page cache flushes
and oplock breaks. The commit c11f1df5003d534 ("cifs: Wait for
writebacks to complete before attempting write.") fixed the races for
oplocks but didn't apply the same changes for leases resulting in
overwriting the server granted value to None. Fix this by properly
processing lease breaks.
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com> Signed-off-by:
Steve French <stfrench@microsoft.com> CC: Stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/smb2ops.c (diff)
The file was modifiedfs/cifs/smb2misc.c (diff)
Commit c73a769b63fb86b38fda5a01765c9540b8c9c5a6 by gregkh
CIFS: Do not skip SMB2 message IDs on send failures
commit c781af7e0c1fed9f1d0e0ec31b86f5b21a8dca17 upstream.
When we hit failures during constructing MIDs or sending PDUs through
the network, we end up not using message IDs assigned to the packet. The
next SMB packet will skip those message IDs and continue with the next
one. This behavior may lead to a server not granting us credits until we
use the skipped IDs. Fix this by reverting the current ID to the
original value if any errors occur before we push the packet through the
network stack.
This patch fixes the generic/310 test from the xfs-tests.
Cc: <stable@vger.kernel.org> # 4.19.x Signed-off-by: Pavel Shilovsky
<pshilov@microsoft.com> Signed-off-by: Steve French
<stfrench@microsoft.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/smb2ops.c (diff)
The file was modifiedfs/cifs/cifsglob.h (diff)
The file was modifiedfs/cifs/transport.c (diff)
The file was modifiedfs/cifs/smb2transport.c (diff)
Commit 3eb2412dd9da1c459bcd45ad8f567e489c060ad2 by gregkh
CIFS: Fix read after write for files with read caching
commit 6dfbd84684700cb58b34e8602c01c12f3d2595c8 upstream.
When we have a READ lease for a file and have just issued a write
operation to the server we need to purge the cache and set oplock/lease
level to NONE to avoid reading stale data. Currently we do that only if
a write operation succedeed thus not covering cases when a request was
sent to the server but a negative error code was returned later for some
other reasons (e.g. -EIOCBQUEUED or -EINTR). Fix this by turning off
caching regardless of the error code being returned.
The patches fixes generic tests 075 and 112 from the xfs-tests.
Cc: <stable@vger.kernel.org> Signed-off-by: Pavel Shilovsky
<pshilov@microsoft.com> Signed-off-by: Steve French
<stfrench@microsoft.com> Reviewed-by: Ronnie Sahlberg
<lsahlber@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/file.c (diff)
Commit c892f4ee3db2d45ac78172fd2de4fb5e642d6f7b by gregkh
smb3: make default i/o size for smb3 mounts larger
commit e8506d25f740fd058791cc12a6dfa9386ada6b96 upstream.
We negotiate rsize mounts (and it can be overridden by user) to
typically 4MB, so using larger default I/O sizes from userspace
(changing to 1MB default i/o size returned by stat) the performance is
much better (and not just for long latency network connections) in most
use cases for SMB3 than the default I/O size (which ends up being 128K
for cp and can be even smaller for cp). This can be 4x slower or worse
depending on network latency.
By changing inode->blocksize from 32K (which was perhaps ok for very old
SMB1/CIFS) to a larger value, 1MB (but still less than max size
negotiated with the server which is 4MB, in order to minimize risk) it
significantly increases performance for the noncached case, and slightly
increases it for the cached case. This can be changed by the user on
mount (specifying bsize= values from 16K to 16MB) to tune better for
performance for applications that depend on blocksize.
Signed-off-by: Steve French <stfrench@microsoft.com> Reviewed-by: Ronnie
Sahlberg <lsahlber@redhat.com> CC: Stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/cifsglob.h (diff)
The file was modifiedfs/cifs/cifsfs.c (diff)
The file was modifiedfs/cifs/connect.c (diff)
The file was modifiedfs/cifs/cifs_fs_sb.h (diff)
The file was modifiedfs/cifs/inode.c (diff)
Commit e5cde571ee5fef726d62a013c7aeef53705dfd32 by gregkh
tracing: Use strncpy instead of memcpy for string keys in hist triggers
commit 9f0bbf3115ca9f91f43b7c74e9ac7d79f47fc6c2 upstream.
Because there may be random garbage beyond a string's null terminator,
it's not correct to copy the the complete character array for use as a
hist trigger key.  This results in multiple histogram entries for the
'same' string key.
So, in the case of a string key, use strncpy instead of memcpy to avoid
copying in the extra bytes.
Before, using the gdbus entries in the following hist trigger as an
example:
  # echo 'hist:key=comm' >
/sys/kernel/debug/tracing/events/sched/sched_waking/trigger
# cat /sys/kernel/debug/tracing/events/sched/sched_waking/hist
  ...
  { comm: ImgDecoder #4                      } hitcount:        203
{ comm: gmain                              } hitcount:        213
{ comm: gmain                              } hitcount:        216
{ comm: StreamTrans #73                    } hitcount:        221
{ comm: mozStorage #3                      } hitcount:        230
{ comm: gdbus                              } hitcount:        233
{ comm: StyleThread#5                      } hitcount:        253
{ comm: gdbus                              } hitcount:        256
{ comm: gdbus                              } hitcount:        260
{ comm: StyleThread#4                      } hitcount:        271
  ...
  # cat /sys/kernel/debug/tracing/events/sched/sched_waking/hist | egrep
gdbus | wc -l
51
After:
  # cat /sys/kernel/debug/tracing/events/sched/sched_waking/hist | egrep
gdbus | wc -l
1
Link:
http://lkml.kernel.org/r/50c35ae1267d64eee975b8125e151e600071d4dc.1549309756.git.tom.zanussi@linux.intel.com
Cc: Namhyung Kim <namhyung@kernel.org> Cc: stable@vger.kernel.org Fixes:
79e577cbce4c4 ("tracing: Support string type key properly")
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by:
Steven Rostedt (VMware) <rostedt@goodmis.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/trace/trace_events_hist.c (diff)
Commit aca126f4a451b36fc6841d7bf76b3a5f4e5d3b01 by gregkh
tracing: Do not free iter->trace in fail path of tracing_open_pipe()
commit e7f0c424d0806b05d6f47be9f202b037eb701707 upstream.
Commit d716ff71dd12 ("tracing: Remove taking of trace_types_lock in pipe
files") use the current tracer instead of the copy in
tracing_open_pipe(), but it forget to remove the freeing sentence in the
error path.
There's an error path that can call kfree(iter->trace) after the
iter->trace was assigned to tr->current_trace, which would be bad to
free.
Link:
http://lkml.kernel.org/r/1550060946-45984-1-git-send-email-yi.zhang@huawei.com
Cc: stable@vger.kernel.org Fixes: d716ff71dd12 ("tracing: Remove taking
of trace_types_lock in pipe files") Signed-off-by: zhangyi (F)
<yi.zhang@huawei.com> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedkernel/trace/trace.c (diff)
Commit 020c90c694dc36b345eeecc59ac48eae88faa983 by gregkh
tracing/perf: Use strndup_user() instead of buggy open-coded version
commit 83540fbc8812a580b6ad8f93f4c29e62e417687e upstream.
The first version of this method was missing the check for
`ret == PATH_MAX`; then such a check was added, but it didn't call
kfree() on error, so there was still a small memory leak in the error
case. Fix it by using strndup_user() instead of open-coding it.
Link: http://lkml.kernel.org/r/20190220165443.152385-1-jannh@google.com
Cc: Ingo Molnar <mingo@kernel.org> Cc: stable@vger.kernel.org Fixes:
0eadcc7a7bc0 ("perf/core: Fix perf_uprobe_init()") Reviewed-by: Masami
Hiramatsu <mhiramat@kernel.org> Acked-by: Song Liu
<songliubraving@fb.com> Signed-off-by: Jann Horn <jannh@google.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/trace/trace_event_perf.c (diff)
Commit c0b8e1d95cbf94e53ba991339761d03e523f2e00 by gregkh
vmw_balloon: release lock on error in vmballoon_reset()
commit d04071a5d6413b65f17f7bd6e2bdb22e22e4ace7 upstream.
We added some locking to this function but forgot to drop the lock on
these two error paths.  This bug would lead to an immediate deadlock.
Fixes: c7b3690fb152 ("vmw_balloon: stats rework") Signed-off-by: Dan
Carpenter <dan.carpenter@oracle.com> Cc: stable@vger.kernel.org
Reviewed-by: Nadav Amit <namit@vmware.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/misc/vmw_balloon.c (diff)
Commit 050b87cb66c641b389008b35f1146ec9d70188a8 by gregkh
xen: fix dom0 boot on huge systems
commit 01bd2ac2f55a1916d81dace12fa8d7ae1c79b5ea upstream.
Commit f7c90c2aa40048 ("x86/xen: don't write ptes directly in 32-bit PV
guests") introduced a regression for booting dom0 on huge systems with
lots of RAM (in the TB range).
Reason is that on those hosts the p2m list needs to be moved early in
the boot process and this requires temporary page tables to be created.
Said commit modified xen_set_pte_init() to use a hypercall for writing a
PTE, but this requires the page table being in the direct mapped area,
which is not the case for the temporary page tables used in
xen_relocate_p2m().
As the page tables are completely written before being linked to the
actual address space instead of set_pte() a plain write to memory can be
used in xen_relocate_p2m().
Fixes: f7c90c2aa40048 ("x86/xen: don't write ptes directly in 32-bit PV
guests") Cc: stable@vger.kernel.org Signed-off-by: Juergen Gross
<jgross@suse.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/xen/mmu_pv.c (diff)
Commit cb1c7a9d2897b70d44e8e8b88b67c933c52fb11b by gregkh
ACPI / device_sysfs: Avoid OF modalias creation for removed device
commit f16eb8a4b096514ac06fb25bf599dcc792899b3d upstream.
If SSDT overlay is loaded via ConfigFS and then unloaded the device, we
would like to have OF modalias for, already gone. Thus, acpi_get_name()
returns no allocated buffer for such case and kernel crashes afterwards:
ACPI: Host-directed Dynamic ACPI Table Unload
ads7950 spi-PRP0001:00: Dropping the link to regulator.0
BUG: unable to handle kernel NULL pointer dereference at
0000000000000000
#PF error: [normal kernel read fault]
PGD 80000000070d6067 P4D 80000000070d6067 PUD 70d0067 PMD 0
Oops: 0000 [#1] SMP PTI
CPU: 0 PID: 40 Comm: kworker/u4:2 Not tainted 5.0.0+ #96
Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542
2015.01.21:18.19.48
Workqueue: kacpi_hotplug acpi_device_del_work_fn
RIP: 0010:create_of_modalias.isra.1+0x4c/0x150
Code: 00 00 48 89 44 24 18 31 c0 48 8d 54 24 08 48 c7 44 24 10 00 00 00
00 48 c7 44 24 08 ff ff ff ff e8 7a b0 03 00 48 8b 4c 24 10 <0f> b6 01
84 c0 74 27 48 c7 c7 00 09 f4 a5 0f b6 f0 8d 50 20 f6 04
RSP: 0000:ffffa51040297c10 EFLAGS: 00010246
RAX: 0000000000001001 RBX: 0000000000000785 RCX: 0000000000000000
RDX: 0000000000001001 RSI: 0000000000000286 RDI: ffffa2163dc042e0
RBP: ffffa216062b1196 R08: 0000000000001001 R09: ffffa21639873000
R10: ffffffffa606761d R11: 0000000000000001 R12: ffffa21639873218
R13: ffffa2163deb5060 R14: ffffa216063d1010 R15: 0000000000000000
FS:  0000000000000000(0000) GS:ffffa2163e000000(0000)
knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000007114000 CR4: 00000000001006f0
Call Trace:
__acpi_device_uevent_modalias+0xb0/0x100
spi_uevent+0xd/0x40
...
In order to fix above let create_of_modalias() check the status returned
by acpi_get_name() and bail out in case of failure.
Fixes: 8765c5ba1949 ("ACPI / scan: Rework modalias creation when
"compatible" is present") Link:
https://bugzilla.kernel.org/show_bug.cgi?id=201381 Reported-by: Ferry
Toth <fntoth@gmail.com> Tested-by: Ferry Toth<fntoth@gmail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Cc: 4.1+
<stable@vger.kernel.org> # 4.1+ Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/device_sysfs.c (diff)
Commit 351062f08fc1b57f33f29ceeee7dc67a9e39b5c4 by gregkh
mmc: sdhci-esdhc-imx: fix HS400 timing issue
commit de0a0decf2edfc5b0c782915f4120cf990a9bd13 upstream.
Now tuning reset will be done when the timing is MMC_TIMING_LEGACY/
MMC_TIMING_MMC_HS/MMC_TIMING_SD_HS. But for timing MMC_TIMING_MMC_HS, we
can not do tuning reset, otherwise HS400 timing is not right.
Here is the process of init HS400, first finish tuning in HS200 mode,
then switch to HS mode and 8 bit DDR mode, finally switch to HS400 mode.
If we do tuning reset in HS mode, this will cause HS400 mode lost the
tuning setting, which will cause CRC error.
Signed-off-by: Haibo Chen <haibo.chen@nxp.com> Cc:
stable@vger.kernel.org # v4.12+ Acked-by: Adrian Hunter
<adrian.hunter@intel.com> Fixes: d9370424c948 ("mmc: sdhci-esdhc-imx:
reset tuning circuit when power on mmc card") Signed-off-by: Ulf Hansson
<ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/sdhci-esdhc-imx.c (diff)
Commit aaf1e755f8f9c6a4b6cf8514352164940db78cbd by gregkh
mmc: renesas_sdhi: Fix card initialization failure in high speed mode
commit d30ae056adb81e1d2b8b953efa74735a020b8e3b upstream.
This fixes card initialization failure in high speed mode.
If U-Boot uses SDR or HS200/400 mode before starting Linux and Linux DT
does not enable SDR/HS200/HS400 mode, card initialization fails in high
speed mode.
It is necessary to initialize SCC registers during card initialization
phase. HW reset function is registered only for a port with either of
SDR/HS200/HS400 properties in device tree. If SDR/HS200/HS400 properties
are not present in device tree, SCC registers will not be reset. In SoC
that support SCC registers, HW reset function should be registered
regardless of the configuration of device tree.
Reproduction procedure:
- Use U-Boot that support MMC HS200/400 mode.
- Delete HS200/HS400 properties in device tree.
(Delete mmc-hs200-1_8v and mmc-hs400-1_8v)
- MMC port works high speed mode and all commands fail.
Signed-off-by: Takeshi Saito <takeshi.saito.xv@renesas.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Niklas
Söderlund <niklas.soderlund+renesas@ragnatech.se> Cc: Simon Horman
<horms+renesas@verge.net.au> Reviewed-by: Wolfram Sang
<wsa+renesas@sang-engineering.com> Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/renesas_sdhi_core.c (diff)
Commit 4a9932c94626ea4a574a91bfca64423ae8c0695d by gregkh
mmc:fix a bug when max_discard is 0
commit d4721339dcca7def04909a8e60da43c19a24d8bf upstream.
The original purpose of the code I fix is to replace max_discard with
max_trim if max_trim is less than max_discard. When max_discard is 0 we
should replace max_discard with max_trim as well, because max_discard
equals 0 happens only when the max_do_calc_max_discard process is
overflowed, so if mmc_can_trim(card) is true, max_discard should be
replaced by an available max_trim. However, in the original code, there
are two lines of code interfere the right process. 1) if (max_discard &&
mmc_can_trim(card)) when max_discard is 0, it skips the process checking
if max_discard needs to be replaced with max_trim. 2) if (max_trim <
max_discard) the condition is false when max_discard is 0. it also skips
the process that replaces max_discard with max_trim, in fact, we should
replace the 0-valued max_discard with max_trim.
Signed-off-by: Jiong Wu <Lohengrin1024@gmail.com> Fixes: b305882fbc87
(mmc: core: optimize mmc_calc_max_discard) Cc: stable@vger.kernel.org #
v4.17+ Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/core/core.c (diff)
Commit 5d919139baf9d609895425c44fa51779fb558536 by gregkh
spi: ti-qspi: Fix mmap read when more than one CS in use
commit 673c865efbdc5fec3cc525c46d71844d42c60072 upstream.
Commit 4dea6c9b0b64 ("spi: spi-ti-qspi: add mmap mode read support") has
has got order of parameter wrong when calling regmap_update_bits() to
select CS for mmap access. Mask and value arguments are interchanged.
Code will work on a system with single slave, but fails when more than
one CS is in use. Fix this by correcting the order of parameters when
calling regmap_update_bits().
Fixes: 4dea6c9b0b64 ("spi: spi-ti-qspi: add mmap mode read support") Cc:
stable@vger.kernel.org Signed-off-by: Vignesh R <vigneshr@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/spi/spi-ti-qspi.c (diff)
Commit 7406a055c507313cdd9e0c628127ed4a3c8876c0 by gregkh
spi: pxa2xx: Setup maximum supported DMA transfer length
commit ef070b4e4aa25bb5f8632ad196644026c11903bf upstream.
When the commit b6ced294fb61
   ("spi: pxa2xx: Switch to SPI core DMA mapping functionality")
switches to SPI core provided DMA helpers, it missed to setup maximum
supported DMA transfer length for the controller and thus users
mistakenly try to send more data than supported with the following
warning:
  ili9341 spi-PRP0001:01: DMA disabled for transfer length 153600
greater than 65536
Setup maximum supported DMA transfer length in order to make users know
the limit.
Fixes: b6ced294fb61 ("spi: pxa2xx: Switch to SPI core DMA mapping
functionality") Signed-off-by: Andy Shevchenko
<andriy.shevchenko@linux.intel.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/spi/spi-pxa2xx.c (diff)
Commit 6184910148467a7e7fc9e8036aceda495b28ac78 by gregkh
spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch
commit baf8b9f8d260c55a86405f70a384c29cda888476 upstream.
Commit b682cffa3ac6 ("spi: omap2-mcspi: Set FIFO DMA trigger level to
word length") broke SPI transfers where bits_per_word != 8. This is
because of mimsatch between McSPI FIFO level event trigger size (SPI
word length) and DMA request size(word length * maxburst). This leads to
data corruption, lockup and errors like:
spi1.0: EOW timed out
Fix this by setting DMA maxburst size to 1 so that McSPI FIFO level
event trigger size matches DMA request size.
Fixes: b682cffa3ac6 ("spi: omap2-mcspi: Set FIFO DMA trigger level to
word length") Cc: stable@vger.kernel.org Reported-by: David Lechner
<david@lechnology.com> Tested-by: David Lechner <david@lechnology.com>
Signed-off-by: Vignesh R <vigneshr@ti.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/spi/spi-omap2-mcspi.c (diff)
Commit a34758ac6ad4f33edb99caaecf27f0a76d3142a5 by gregkh
spi: spi-gpio: fix SPI_CS_HIGH capability
commit b89fefda7d4e3a649129584d855be233c7465264 upstream.
spi-gpio is capable of dealing with active-high chip-selects.
Unfortunately, commit 4b859db2c606 ("spi: spi-gpio: add SPI_3WIRE
support") broke this by setting master->mode_bits, which overrides the
setting in the spi-bitbang code.  Fix this.
[Fixed a trivial conflict with SPI_3WIRE_HIZ support -- broonie]
Fixes: 4b859db2c606 ("spi: spi-gpio: add SPI_3WIRE support")
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by:
Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/spi/spi-gpio.c (diff)
Commit 4527a24a8f518edf6ad8f74c0ca4fdf6f027b2ad by gregkh
regulator: s2mps11: Fix steps for buck7, buck8 and LDO35
commit 56b5d4ea778c1b0989c5cdb5406d4a488144c416 upstream.
LDO35 uses 25 mV step, not 50 mV.  Bucks 7 and 8 use 12.5 mV step
instead of 6.25 mV.  Wrong step caused over-voltage (LDO35) or
under-voltage (buck7 and 8) if regulators were used (e.g. on Exynos5420
Arndale Octa board).
Cc: <stable@vger.kernel.org> Fixes: cb74685ecb39 ("regulator: s2mps11:
Add samsung s2mps11 regulator driver") Signed-off-by: Krzysztof
Kozlowski <krzk@kernel.org> Signed-off-by: Mark Brown
<broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/regulator/s2mps11.c (diff)
Commit 60cb8b444fbf641b8ca36be3a6f99e51d3e213f6 by gregkh
regulator: max77620: Initialize values for DT properties
commit 0ab66b3c326ef8f77dae9f528118966365757c0c upstream.
If regulator DT node doesn't exist, its of_parse_cb callback function
isn't called. Then all values for DT properties are filled with zero.
This leads to wrong register update for FPS and POK settings.
Signed-off-by: Jinyoung Park <jinyoungp@nvidia.com> Signed-off-by: Mark
Zhang <markz@nvidia.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/regulator/max77620-regulator.c (diff)
Commit 6b65a01d2dcc6ff096d5db0d9ced5354b5b86a52 by gregkh
regulator: s2mpa01: Fix step values for some LDOs
commit 28c4f730d2a44f2591cb104091da29a38dac49fe upstream.
The step values for some of the LDOs appears to be incorrect, resulting
in incorrect voltages (or at least, ones which are different from the
Samsung 3.4 vendor kernel).
Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Mark
Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/regulator/s2mpa01.c (diff)
Commit 9d67c5e995dabb1e75740e01e6d4f202d68a285b by gregkh
mt76: fix corrupted software generated tx CCMP PN
commit 906d2d3f874a54183df5a609fda180adf0462428 upstream.
Since ccmp_pn is u8 *, the second half needs to start at array index 4
instead of 0. Fixes a connection stall after a certain amount of traffic
Fixes: 23405236460b9 ("mt76: fix transmission of encrypted management
frames") Cc: stable@vger.kernel.org Signed-off-by: Felix Fietkau
<nbd@nbd.name> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/wireless/mediatek/mt76/mt76x02_mac.c (diff)
Commit de90b88a20de2fbb10811c8505aa493a4620a5f4 by gregkh
clocksource/drivers/exynos_mct: Move one-shot check from tick clear to
ISR
commit a5719a40aef956ba704f2aa1c7b977224d60fa96 upstream.
When a timer tick occurs and the clock is in one-shot mode, the timer
needs to be stopped to prevent it triggering subsequent interrupts.
Currently this code is in exynos4_mct_tick_clear(), but as it is only
needed when an ISR occurs move it into exynos4_mct_tick_isr(), leaving
exynos4_mct_tick_clear() just doing what its name suggests it should.
Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Tested-by: Marek
Szyprowski <m.szyprowski@samsung.com> Cc: stable@vger.kernel.org # v4.3+
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clocksource/exynos_mct.c (diff)
Commit 773b445425d67891fb58c47d7e059a32c0e99c76 by gregkh
clocksource/drivers/exynos_mct: Clear timer interrupt when shutdown
commit d2f276c8d3c224d5b493c42b6cf006ae4e64fb1c upstream.
When shutting down the timer, ensure that after we have stopped the
timer any pending interrupts are cleared. This fixes a problem when
suspending, as interrupts are disabled before the timer is stopped, so
the timer interrupt may still be asserted, preventing the system
entering a low power state when the wfi is executed.
Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Tested-by: Marek
Szyprowski <m.szyprowski@samsung.com> Cc: <stable@vger.kernel.org> #
v4.3+ Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clocksource/exynos_mct.c (diff)
Commit 4b280a0bfc6d977148915dfbe27ef3af68ac6597 by gregkh
clocksource/drivers/arch_timer: Workaround for Allwinner A64 timer
instability
commit c950ca8c35eeb32224a63adc47e12f9e226da241 upstream.
The Allwinner A64 SoC is known[1] to have an unstable architectural
timer, which manifests itself most obviously in the time jumping forward
a multiple of 95 years[2][3]. This coincides with 2^56 cycles at a timer
frequency of 24 MHz, implying that the time went slightly backward
(and this was interpreted by the kernel as it jumping forward and
wrapping around past the epoch).
Investigation revealed instability in the low bits of CNTVCT at the
point a high bit rolls over. This leads to power-of-two cycle forward
and backward jumps. (Testing shows that forward jumps are about twice as
likely as backward jumps.) Since the counter value returns to normal
after an indeterminate read, each "jump" really consists of both a
forward and backward jump from the software perspective.
Unless the kernel is trapping CNTVCT reads, a userspace program is able
to read the register in a loop faster than it changes. A test program
running on all 4 CPU cores that reported jumps larger than 100 ms was
run for 13.6 hours and reported the following:
Count | Event
-------+---------------------------
9940 | jumped backward      699ms
  268 | jumped backward     1398ms
    1 | jumped backward     2097ms
16020 | jumped forward       175ms
6443 | jumped forward       699ms
2976 | jumped forward      1398ms
    9 | jumped forward    356516ms
    9 | jumped forward    357215ms
    4 | jumped forward    714430ms
    1 | jumped forward   3578440ms
This works out to a jump larger than 100 ms about every 5.5 seconds on
each CPU core.
The largest jump (almost an hour!) was the following sequence of reads:
   0x0000007fffffffff → 0x00000093feffffff → 0x0000008000000000
Note that the middle bits don't necessarily all read as all zeroes or
all ones during the anomalous behavior; however the low 10 bits checked
by the function in this patch have never been observed with any other
value.
Also note that smaller jumps are much more common, with backward jumps
of 2048 (2^11) cycles observed over 400 times per second on each core.
(Of course, this is partially explained by lower bits rolling over more
frequently.) Any one of these could have caused the 95 year time skip.
Similar anomalies were observed while reading CNTPCT (after patching the
kernel to allow reads from userspace). However, the CNTPCT jumps are
much less frequent, and only small jumps were observed. The same program
as before (except now reading CNTPCT) observed after 72 hours:
Count | Event
-------+---------------------------
   17 | jumped backward      699ms
   52 | jumped forward       175ms
2831 | jumped forward       699ms
    5 | jumped forward      1398ms
Further investigation showed that the instability in CNTPCT/CNTVCT also
affected the respective timer's TVAL register. The following values were
observed immediately after writing CNVT_TVAL to 0x10000000:
CNTVCT             | CNTV_TVAL  | CNTV_CVAL          | CNTV_TVAL Error
--------------------+------------+--------------------+-----------------
0x000000d4a2d8bfff | 0x10003fff | 0x000000d4b2d8bfff | +0x00004000
0x000000d4a2d94000 | 0x0fffffff | 0x000000d4b2d97fff | -0x00004000
0x000000d4a2d97fff | 0x10003fff | 0x000000d4b2d97fff | +0x00004000
0x000000d4a2d9c000 | 0x0fffffff | 0x000000d4b2d9ffff | -0x00004000
The pattern of errors in CNTV_TVAL seemed to depend on exactly which
value was written to it. For example, after writing 0x10101010:
CNTVCT             | CNTV_TVAL  | CNTV_CVAL          | CNTV_TVAL Error
--------------------+------------+--------------------+-----------------
0x000001ac3effffff | 0x1110100f | 0x000001ac4f10100f | +0x1000000
0x000001ac40000000 | 0x1010100f | 0x000001ac5110100f | -0x1000000
0x000001ac58ffffff | 0x1110100f | 0x000001ac6910100f | +0x1000000
0x000001ac66000000 | 0x1010100f | 0x000001ac7710100f | -0x1000000
0x000001ac6affffff | 0x1110100f | 0x000001ac7b10100f | +0x1000000
0x000001ac6e000000 | 0x1010100f | 0x000001ac7f10100f | -0x1000000
I was also twice able to reproduce the issue covered by Allwinner's
workaround[4], that writing to TVAL sometimes fails, and both CVAL and
TVAL are left with entirely bogus values. One was the following values:
CNTVCT             | CNTV_TVAL  | CNTV_CVAL
--------------------+------------+--------------------------------------
0x000000d4a2d6014c | 0x8fbd5721 | 0x000000d132935fff (615s in the past)
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
========================================================================
Because the CPU can read the CNTPCT/CNTVCT registers faster than they
change, performing two reads of the register and comparing the high bits
(like other workarounds) is not a workable solution. And because the
timer can jump both forward and backward, no pair of reads can
distinguish a good value from a bad one. The only way to guarantee a
good value from consecutive reads would be to read _three_ times, and
take the middle value only if the three values are 1) each unique and 2)
increasing. This takes at minimum 3 counter cycles (125 ns), or more if
an anomaly is detected.
However, since there is a distinct pattern to the bad values, we can
optimize the common case (1022/1024 of the time) to a single read by
simply ignoring values that match the error pattern. This still takes no
more than 3 cycles in the worst case, and requires much less code. As an
additional safety check, we still limit the loop iteration to the number
of max-frequency (1.2 GHz) CPU cycles in three 24 MHz counter periods.
For the TVAL registers, the simple solution is to not use them. Instead,
read or write the CVAL and calculate the TVAL value in software.
Although the manufacturer is aware of at least part of the erratum[4],
there is no official name for it. For now, use the kernel-internal name
"UNKNOWN1".
[1]: https://github.com/armbian/build/commit/a08cd6fe7ae9
[2]: https://forum.armbian.com/topic/3458-a64-datetime-clock-issue/
[3]: https://irclog.whitequark.org/linux-sunxi/2018-01-26
[4]:
https://github.com/Allwinner-Homlet/H6-BSP4.9-linux/blob/master/drivers/clocksource/arm_arch_timer.c#L272
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Tested-by: Andre
Przywara <andre.przywara@arm.com> Signed-off-by: Samuel Holland
<samuel@sholland.org> Cc: stable@vger.kernel.org Signed-off-by: Daniel
Lezcano <daniel.lezcano@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedDocumentation/arm64/silicon-errata.txt (diff)
The file was modifieddrivers/clocksource/Kconfig (diff)
The file was modifieddrivers/clocksource/arm_arch_timer.c (diff)
Commit 2aa8ab08c82c68cedc09a9e0d19f568b16ad0fe5 by gregkh
s390: vfio_ap: link the vfio_ap devices to the vfio_ap bus subsystem
commit 36360658eb5a6cf04bb9f2704d1e4ce54037ec99 upstream.
Libudev relies on having a subsystem link for non-root devices. To avoid
libudev (and potentially other userspace tools) choking on the matrix
device let us introduce a matrix bus and with it the matrix bus
subsytem. Also make the matrix device reside within the matrix bus.
Doing this we remove the forced link from the matrix device to the
vfio_ap driver and the device_type we do not need anymore.
Since the associated matrix driver is not the vfio_ap driver any more,
we have to change the search for the devices on the vfio_ap driver in
the function vfio_ap_verify_queue_reserved. Fixes: 1fde573413b5 ("s390:
vfio-ap: base implementation of VFIO AP device driver") Cc:
stable@vger.kernel.org
Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com> Reported-by:
Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Pierre
Morel <pmorel@linux.ibm.com> Tested-by: Christian Borntraeger
<borntraeger@de.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Tony Krowiak <akrowiak@linux.ibm.com> Acked-by: Halil Pasic
<pasic@linux.ibm.com> Signed-off-by: Martin Schwidefsky
<schwidefsky@de.ibm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/s390/crypto/vfio_ap_private.h (diff)
The file was modifieddrivers/s390/crypto/vfio_ap_drv.c (diff)
The file was modifieddrivers/s390/crypto/vfio_ap_ops.c (diff)
Commit 39fdc16138b799d2603d9b18ba4d4059df8f54cc by gregkh
s390/setup: fix early warning messages
commit 8727638426b0aea59d7f904ad8ddf483f9234f88 upstream.
The setup_lowcore() function creates a new prefix page for the boot CPU.
The PSW mask for the system_call, external interrupt, i/o interrupt and
the program check handler have the DAT bit set in this new prefix page.
At the time setup_lowcore is called the system still runs without
virtual address translation, the paging_init() function creates the
kernel page table and loads the CR13 with the kernel ASCE.
Any code between setup_lowcore() and the end of paging_init() that has a
BUG or WARN statement will create a program check that can not be
handled correctly as there is no kernel page table yet.
To allow early WARN statements initially setup the lowcore with DAT off
and set the DAT bit only after paging_init() has completed.
Cc: stable@vger.kernel.org Signed-off-by: Martin Schwidefsky
<schwidefsky@de.ibm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/s390/kernel/setup.c (diff)
Commit ffd4a428a54efe2f6bad6d0e63df605cbc90b3bb by gregkh
s390/virtio: handle find on invalid queue gracefully
commit 3438b2c039b4bf26881786a1f3450f016d66ad11 upstream.
A queue with a capacity of zero is clearly not a valid virtio queue.
Some emulators report zero queue size if queried with an invalid queue
index. Instead of crashing in this case let us just return -ENOENT. To
make that work properly, let us fix the notifier cleanup logic as well.
Cc: stable@vger.kernel.org Signed-off-by: Halil Pasic
<pasic@linux.ibm.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/s390/virtio/virtio_ccw.c (diff)
Commit bd1558978695b42263d2ee7d612e8aee1bf55f59 by gregkh
scsi: virtio_scsi: don't send sc payload with tmfs
commit 3722e6a52174d7c3a00e6f5efd006ca093f346c1 upstream.
The virtio scsi spec defines struct virtio_scsi_ctrl_tmf as a set of
device-readable records and a single device-writable response entry:
    struct virtio_scsi_ctrl_tmf
   {
       // Device-readable part
       le32 type;
       le32 subtype;
       u8 lun[8];
       le64 id;
       // Device-writable part
       u8 response;
   }
The above should be organised as two descriptor entries (or potentially
more if using VIRTIO_F_ANY_LAYOUT), but without any extra data after
"le64 id" or after "u8 response".
The Linux driver doesn't respect that, with virtscsi_abort() and
virtscsi_device_reset() setting cmd->sc before calling virtscsi_tmf().
It results in the original scsi command payload (or writable buffers)
added to the tmf.
This fixes the problem by leaving cmd->sc zeroed out, which makes
virtscsi_kick_cmd() add the tmf to the control vq without any payload.
Cc: stable@vger.kernel.org Signed-off-by: Felipe Franciosi
<felipe@nutanix.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/virtio_scsi.c (diff)
Commit 1ba35e5a3c5ce1bfbb753438349c9151341c558b by gregkh
scsi: aacraid: Fix performance issue on logical drives
commit 0015437cc046e5ec2b57b00ff8312b8d432eac7c upstream.
Fix performance issue where the queue depth for SmartIOC logical volumes
is set to 1, and allow the usual logical volume code to be executed
Fixes: a052865fe287 (aacraid: Set correct Queue Depth for HBA1000 RAW
disks) Cc: stable@vger.kernel.org Signed-off-by: Sagar Biradar
<Sagar.Biradar@microchip.com> Reviewed-by: Dave Carroll
<david.carroll@microsemi.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/aacraid/linit.c (diff)
Commit 6c922faf889a49ef95120ae700398f30941e9466 by gregkh
scsi: sd: Optimal I/O size should be a multiple of physical block size
commit a83da8a4509d3ebfe03bb7fffce022e4d5d4764f upstream.
It was reported that some devices report an OPTIMAL TRANSFER LENGTH of
0xFFFF blocks. That looks bogus, especially for a device with a
4096-byte physical block size.
Ignore OPTIMAL TRANSFER LENGTH if it is not a multiple of the device's
reported physical block size.
To make the sanity checking conditionals more readable--and to
facilitate printing warnings--relocate the checking to a helper
function. No functional change aside from the printks.
Cc: <stable@vger.kernel.org> Bugzilla:
https://bugzilla.kernel.org/show_bug.cgi?id=199759 Reported-by:
Christoph Anton Mitterer <calestyo@scientia.net> Reviewed-by: Christoph
Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/sd.c (diff)
Commit 7d6d14a119c861d349257e3c3f2c84a18580413c by gregkh
scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock
commit 32e36bfbcf31452a854263e7c7f32fbefc4b44d8 upstream.
When using SCSI passthrough in combination with the iSCSI target driver
then cmd->t_state_lock may be obtained from interrupt context. Hence,
all code that obtains cmd->t_state_lock from thread context must disable
interrupts first. This patch avoids that lockdep reports the following:
WARNING: inconsistent lock state 4.18.0-dbg+ #1 Not tainted
-------------------------------- inconsistent {HARDIRQ-ON-W} ->
{IN-HARDIRQ-W} usage. iscsi_ttx/1800 [HC1[1]:SC0[2]:HE0:SE0] takes:
000000006e7b0ceb (&(&cmd->t_state_lock)->rlock){?...}, at:
target_complete_cmd+0x47/0x2c0 [target_core_mod]
{HARDIRQ-ON-W} state was registered at:
lock_acquire+0xd2/0x260
_raw_spin_lock+0x32/0x50
iscsit_close_connection+0x97e/0x1020 [iscsi_target_mod]
iscsit_take_action_for_connection_exit+0x108/0x200 [iscsi_target_mod]
iscsi_target_rx_thread+0x180/0x190 [iscsi_target_mod]
kthread+0x1cf/0x1f0
ret_from_fork+0x24/0x30 irq event stamp: 1281 hardirqs last  enabled at
(1279): [<ffffffff970ade79>] __local_bh_enable_ip+0xa9/0x160 hardirqs
last disabled at (1281): [<ffffffff97a008a5>] interrupt_entry+0xb5/0xd0
softirqs last  enabled at (1278): [<ffffffff977cd9a1>]
lock_sock_nested+0x51/0xc0 softirqs last disabled at (1280):
[<ffffffffc07a6e04>] ip6_finish_output2+0x124/0xe40 [ipv6]
other info that might help us debug this: Possible unsafe locking
scenario:
      CPU0
     ----
lock(&(&cmd->t_state_lock)->rlock);
<Interrupt>
  lock(&(&cmd->t_state_lock)->rlock);
The file was modifieddrivers/target/iscsi/iscsi_target.c (diff)
Commit 54e834ee7a6eeb1a6c520a3fa28c39c589147a97 by gregkh
scsi: qla2xxx: Fix LUN discovery if loop id is not assigned yet by
firmware
commit ec322937a7f152d68755dc8316523bf6f831b48f upstream.
This patch fixes LUN discovery when loop ID is not yet assigned by the
firmware during driver load/sg_reset operations. Driver will now search
for new loop id before retrying login.
Fixes: 48acad099074 ("scsi: qla2xxx: Fix N2N link re-connect") Cc:
stable@vger.kernel.org #4.19 Signed-off-by: Himanshu Madhani
<hmadhani@marvell.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/qla2xxx/qla_init.c (diff)
Commit f54e2394acf740b8c9efa3755aba0b474fd1b95f by gregkh
scsi: qla2xxx: Avoid PCI IRQ affinity mapping when multiqueue is not
supported
commit f3e026951771bceb17319a4d0d6121ca58746c88 upstream.
This patch fixes warning seen when BLK-MQ is enabled and hardware does
not support MQ. This will result into driver requesting MSIx vectors
which are equal or less than pre_desc via PCI IRQ Affinity
infrastructure.
    [   19.746300] qla2xxx [0000:00:00.0]-0005: : QLogic Fibre Channel
HBA Driver: 10.00.00.12-k.
   [   19.746599] qla2xxx [0000:02:00.0]-001d: : Found an ISP2432 irq 18
iobase 0x(____ptrval____).
   [   20.203186] ------------[ cut here ]------------
   [   20.203306] WARNING: CPU: 8 PID: 268 at drivers/pci/msi.c:1273
pci_irq_get_affinity+0xf4/0x120
   [   20.203481] Modules linked in: tg3 ptp qla2xxx(+) pps_core sg
libphy scsi_transport_fc flash loop autofs4
   [   20.203700] CPU: 8 PID: 268 Comm: systemd-udevd Not tainted
5.0.0-rc5-00358-gdf3865f #113
   [   20.203830] Call Trace:
   [   20.203933]  [0000000000461bb0] __warn+0xb0/0xe0
   [   20.204090]  [00000000006c8f34] pci_irq_get_affinity+0xf4/0x120
   [   20.204219]  [000000000068c764] blk_mq_pci_map_queues+0x24/0x120
   [   20.204396]  [00000000007162f4] scsi_map_queues+0x14/0x40
   [   20.204626]  [0000000000673654] blk_mq_update_queue_map+0x94/0xe0
   [   20.204698]  [0000000000676ce0] blk_mq_alloc_tag_set+0x120/0x300
   [   20.204869]  [000000000071077c] scsi_add_host_with_dma+0x7c/0x300
   [   20.205419]  [00000000100ead54] qla2x00_probe_one+0x19d4/0x2640
[qla2xxx]
   [   20.205621]  [00000000006b3c88] pci_device_probe+0xc8/0x160
   [   20.205697]  [0000000000701c0c] really_probe+0x1ac/0x2e0
   [   20.205770]  [0000000000701f90] driver_probe_device+0x50/0x100
   [   20.205843]  [0000000000702134] __driver_attach+0xf4/0x120
   [   20.205913]  [0000000000700644] bus_for_each_dev+0x44/0x80
   [   20.206081]  [0000000000700c98] bus_add_driver+0x198/0x220
   [   20.206300]  [0000000000702950] driver_register+0x70/0x120
   [   20.206582]  [0000000010248224] qla2x00_module_init+0x224/0x284
[qla2xxx]
   [   20.206857] ---[ end trace b1de7a3f79fab2c2 ]---
The fix is to check if the hardware does not have Multi Queue
capabiltiy, use pci_alloc_irq_vectors() call instead of
pci_alloc_irq_affinity().
Fixes: f664a3cc17b7d ("scsi: kill off the legacy IO path") Cc:
stable@vger.kernel.org #4.19 Signed-off-by: Giridhar Malavali
<gmalavali@marvell.com> Signed-off-by: Himanshu Madhani
<hmadhani@marvell.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/qla2xxx/qla_isr.c (diff)
The file was modifieddrivers/scsi/qla2xxx/qla_os.c (diff)
Commit a15cf4d9a6229cefd0d1a2696f1e51b9bbd20bef by gregkh
scsi: qla2xxx: Use complete switch scan for RSCN events
commit 1560bafdff9ed54857ac3a03c4c8d8f10d791ba6 upstream.
This patch removes unnecessary code to handle RSCN, instead performs
full scan everytime driver receives RSCN
Fixes: d4f7a16aeca6f ("scsi: qla2xxx: Remove ASYNC GIDPN switch
command") Cc: stable@vger.kernel.org #4.19 Signed-off-by: Quinn Tran
<qtran@marvell.com> Signed-off-by: Himanshu Madhani
<hmadhani@marvell.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/qla2xxx/qla_init.c (diff)
Commit 61d06e123502de4443391cc1bb2b6c1c071c9919 by gregkh
fs/devpts: always delete dcache dentry-s in dput()
commit 73052b0daee0b750b39af18460dfec683e4f5887 upstream.
d_delete only unhashes an entry if it is reached with
dentry->d_lockref.count != 1. Prior to commit 8ead9dd54716 ("devpts:
more pty driver interface cleanups"), d_delete was called on a dentry
from devpts_pty_kill with two references held, which would trigger the
unhashing, and the subsequent dputs would release it.
Commit 8ead9dd54716 reworked devpts_pty_kill to stop acquiring the
second reference from d_find_alias, and the d_delete call left the
dentries still on the hashed list without actually ever being dropped
from dcache before explicit cleanup. This causes the number of negative
dentries for devpts to pile up, and an `ls /dev/pts` invocation can take
seconds to return.
Provide always_delete_dentry() from simple_dentry_operations as
.d_delete for devpts, to make the dentry be dropped from dcache.
Without this cleanup, the number of dentries in /dev/pts/ can be grown
arbitrarily as:
`python -c 'import pty; pty.spawn(["ls", "/dev/pts"])'`
A systemtap probe on dcache_readdir to count d_subdirs shows this count
to increase with each pty spawn invocation above:
probe kernel.function("dcache_readdir") {
   subdirs = &@cast($file->f_path->dentry, "dentry")->d_subdirs;
   p = subdirs;
   p = @cast(p, "list_head")->next;
   i = 0
   while (p != subdirs) {
     p = @cast(p, "list_head")->next;
     i = i+1;
   }
   printf("number of dentries: %d\n", i);
}
Fixes: 8ead9dd54716 ("devpts: more pty driver interface cleanups")
Signed-off-by: Varad Gautam <vrd@amazon.de> Reported-by: Zheng Wang
<wanz@amazon.de> Reported-by: Brandon Schwartz <bsschwar@amazon.de>
Root-caused-by: Maximilian Heyne <mheyne@amazon.de> Root-caused-by:
Nicolas Pernas Maradei <npernas@amazon.de> CC: David Woodhouse
<dwmw@amazon.co.uk> CC: Maximilian Heyne <mheyne@amazon.de> CC: Stefan
Nuernberger <snu@amazon.de> CC: Amit Shah <aams@amazon.de> CC: Linus
Torvalds <torvalds@linux-foundation.org> CC: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> CC: Al Viro <viro@ZenIV.linux.org.uk> CC:
Christian Brauner <christian.brauner@ubuntu.com> CC: Eric W. Biederman
<ebiederm@xmission.com> CC: Matthew Wilcox <willy@infradead.org> CC:
Eric Biggers <ebiggers@google.com> CC: <stable@vger.kernel.org> # 4.9+
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/devpts/inode.c (diff)
Commit ef02f9fe514878336f2440d4b0d06d2bd04096ee by gregkh
splice: don't merge into linked buffers
commit a0ce2f0aa6ad97c3d4927bf2ca54bcebdf062d55 upstream.
Before this patch, it was possible for two pipes to affect each other
after data had been transferred between them with tee():
============
$ cat tee_test.c
int main(void) {
int pipe_a[2];
if (pipe(pipe_a)) err(1, "pipe");
int pipe_b[2];
if (pipe(pipe_b)) err(1, "pipe");
if (write(pipe_a[1], "abcd", 4) != 4) err(1, "write");
if (tee(pipe_a[0], pipe_b[1], 2, 0) != 2) err(1, "tee");
if (write(pipe_b[1], "xx", 2) != 2) err(1, "write");
  char buf[5];
if (read(pipe_a[0], buf, 4) != 4) err(1, "read");
buf[4] = 0;
printf("got back: '%s'\n", buf);
}
$ gcc -o tee_test tee_test.c
$ ./tee_test got back: 'abxx'
$
============
As suggested by Al Viro, fix it by creating a separate type for
non-mergeable pipe buffers, then changing the types of buffers in
splice_pipe_to_pipe() and link_pipe().
Cc: <stable@vger.kernel.org> Fixes: 7c77f0b3f920 ("splice: implement
pipe to pipe splicing") Fixes: 70524490ee2e ("[PATCH] splice: add
support for sys_tee()") Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: Al Viro
<viro@zeniv.linux.org.uk> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/splice.c (diff)
The file was modifiedfs/pipe.c (diff)
The file was modifiedinclude/linux/pipe_fs_i.h (diff)
Commit 0fa6688a288281aad8e6352d70ac772ec14db20c by gregkh
ovl: During copy up, first copy up data and then xattrs
commit 5f32879ea35523b9842bdbdc0065e13635caada2 upstream.
If a file with capability set (and hence security.capability xattr) is
written kernel clears security.capability xattr. For overlay, during
file copy up if xattrs are copied up first and then data is, copied up.
This means data copy up will result in clearing of security.capability
xattr file on lower has. And this can result into surprises. If a lower
file has CAP_SETUID, then it should not be cleared over copy up (if
nothing was actually written to file).
This also creates problems with chown logic where it first copies up
file and then tries to clear setuid bit. But by that time
security.capability xattr is already gone (due to data copy up), and
caller gets -ENODATA. This has been reported by Giuseppe here.
https://github.com/containers/libpod/issues/2015#issuecomment-447824842
Fix this by copying up data first and then metadta. This is a regression
which has been introduced by my commit as part of metadata only copy up
patches.
TODO: There will be some corner cases where a file is copied up metadata
only and later data copy up happens and that will clear
security.capability xattr. Something needs to be done about that too.
Fixes: bd64e57586d3 ("ovl: During copy up, first copy up metadata and
then data") Cc: <stable@vger.kernel.org> # v4.19+ Reported-by: Giuseppe
Scrivano <gscrivan@redhat.com> Signed-off-by: Vivek Goyal
<vgoyal@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/overlayfs/copy_up.c (diff)
Commit 3381b362f74ce0e5ae1af117698fa5ec80534e1c by gregkh
ovl: Do not lose security.capability xattr over metadata file copy-up
commit 993a0b2aec52754f0897b1dab4c453be8217cae5 upstream.
If a file has been copied up metadata only, and later data is copied up,
upper loses any security.capability xattr it has (underlying filesystem
clears it as upon file write).
From a user's point of view, this is just a file copy-up and that should
not result in losing security.capability xattr.  Hence, before data copy
up, save security.capability xattr (if any) and restore it on upper
after data copy up is complete.
Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Reviewed-by: Amir
Goldstein <amir73il@gmail.com> Fixes: 0c2888749363 ("ovl: A new xattr
OVL_XATTR_METACOPY for file on upper") Cc: <stable@vger.kernel.org> #
v4.19+ Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/overlayfs/copy_up.c (diff)
The file was modifiedfs/overlayfs/util.c (diff)
The file was modifiedfs/overlayfs/overlayfs.h (diff)
Commit 98bb142aaff299c44486d4e763c6da58fb913daf by gregkh
m68k: Add -ffreestanding to CFLAGS
commit 28713169d879b67be2ef2f84dcf54905de238294 upstream.
This patch fixes a build failure when using GCC 8.1:
/usr/bin/ld: block/partitions/ldm.o: in function `ldm_parse_tocblock':
block/partitions/ldm.c:153: undefined reference to `strcmp'
This is caused by a new optimization which effectively replaces a
strncmp() call with a strcmp() call. This affects a number of strncmp()
call sites in the kernel.
The entire class of optimizations is avoided with -fno-builtin, which
gets enabled by -ffreestanding. This may avoid possible future build
failures in case new optimizations appear in future compilers.
I haven't done any performance measurements with this patch but I did
count the function calls in a defconfig build. For example, there are
now 23 more sprintf() calls and 39 fewer strcpy() calls. The effect on
the other libc functions is smaller.
If this harms performance we can tackle that regression by optimizing
the call sites, ideally using semantic patches. That way, clang and ICC
builds might benfit too.
Cc: stable@vger.kernel.org Reference:
https://marc.info/?l=linux-m68k&m=154514816222244&w=2 Signed-off-by:
Finn Thain <fthain@telegraphics.com.au> Signed-off-by: Geert
Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/m68k/Makefile (diff)
Commit 80dcd07c27dfe24f79a40897d8ecac4c38b1875d by gregkh
Btrfs: setup a nofs context for memory allocation at btrfs_create_tree()
commit b89f6d1fcb30a8cbdc18ce00c7d93792076af453 upstream.
We are holding a transaction handle when creating a tree, therefore we
can not allocate the root using GFP_KERNEL, as we could deadlock if
reclaim is triggered by the allocation, therefore setup a nofs context.
Fixes: 74e4d82757f74 ("btrfs: let callers of btrfs_alloc_root pass gfp
flags") CC: stable@vger.kernel.org # 4.9+ Reviewed-by: Nikolay Borisov
<nborisov@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.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>
The file was modifiedfs/btrfs/disk-io.c (diff)
Commit 9d7b327affb831572acecd6132cb39d90ace1d6a by gregkh
Btrfs: setup a nofs context for memory allocation at __btrfs_set_acl
commit a0873490660246db587849a9e172f2b7b21fa88a upstream.
We are holding a transaction handle when setting an acl, therefore we
can not allocate the xattr value buffer using GFP_KERNEL, as we could
deadlock if reclaim is triggered by the allocation, therefore setup a
nofs context.
Fixes: 39a27ec1004e8 ("btrfs: use GFP_KERNEL for xattr and acl
allocations") CC: stable@vger.kernel.org # 4.9+ Reviewed-by: Nikolay
Borisov <nborisov@suse.com> Signed-off-by: Filipe Manana
<fdmanana@suse.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>
The file was modifiedfs/btrfs/acl.c (diff)
Commit fb9c36acfab1119669a5c6313ebe5da2311539a5 by gregkh
btrfs: scrub: fix circular locking dependency warning
commit 1cec3f27168d7835ff3d23ab371cd548440131bb upstream.
This fixes a longstanding lockdep warning triggered by
fstests/btrfs/011.
Circular locking dependency check reports warning[1], that's because the
btrfs_scrub_dev() calls the stack #0 below with, the fs_info::scrub_lock
held. The test case leading to this warning:
  $ mkfs.btrfs -f /dev/sdb
$ mount /dev/sdb /btrfs
$ btrfs scrub start -B /btrfs
In fact we have fs_info::scrub_workers_refcnt to track if the init and
destroy of the scrub workers are needed. So once we have incremented and
decremented the fs_info::scrub_workers_refcnt value in the thread, its
ok to drop the scrub_lock, and then actually do the
btrfs_destroy_workqueue() part. So this patch drops the scrub_lock
before calling btrfs_destroy_workqueue().
  [359.258534] ======================================================
[359.260305] WARNING: possible circular locking dependency detected
[359.261938] 5.0.0-rc6-default #461 Not tainted
[359.263135] ------------------------------------------------------
[359.264672] btrfs/20975 is trying to acquire lock:
[359.265927] 00000000d4d32bea ((wq_completion)"%s-%s""btrfs",
name){+.+.}, at: flush_workqueue+0x87/0x540
[359.268416]
[359.268416] but task is already holding lock:
[359.270061] 0000000053ea26a6 (&fs_info->scrub_lock){+.+.}, at:
btrfs_scrub_dev+0x322/0x590 [btrfs]
[359.272418]
[359.272418] which lock already depends on the new lock.
[359.272418]
[359.274692]
[359.274692] the existing dependency chain (in reverse order) is:
[359.276671]
[359.276671] -> #3 (&fs_info->scrub_lock){+.+.}:
[359.278187]        __mutex_lock+0x86/0x9c0
[359.279086]        btrfs_scrub_pause+0x31/0x100 [btrfs]
[359.280421]        btrfs_commit_transaction+0x1e4/0x9e0 [btrfs]
[359.281931]        close_ctree+0x30b/0x350 [btrfs]
[359.283208]        generic_shutdown_super+0x64/0x100
[359.284516]        kill_anon_super+0x14/0x30
[359.285658]        btrfs_kill_super+0x12/0xa0 [btrfs]
[359.286964]        deactivate_locked_super+0x29/0x60
[359.288242]        cleanup_mnt+0x3b/0x70
[359.289310]        task_work_run+0x98/0xc0
[359.290428]        exit_to_usermode_loop+0x83/0x90
[359.291445]        do_syscall_64+0x15b/0x180
[359.292598]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
[359.294011]
[359.294011] -> #2 (sb_internal#2){.+.+}:
[359.295432]        __sb_start_write+0x113/0x1d0
[359.296394]        start_transaction+0x369/0x500 [btrfs]
[359.297471]        btrfs_finish_ordered_io+0x2aa/0x7c0 [btrfs]
[359.298629]        normal_work_helper+0xcd/0x530 [btrfs]
[359.299698]        process_one_work+0x246/0x610
[359.300898]        worker_thread+0x3c/0x390
[359.302020]        kthread+0x116/0x130
[359.303053]        ret_from_fork+0x24/0x30
[359.304152]
[359.304152] -> #1 ((work_completion)(&work->normal_work)){+.+.}:
[359.306100]        process_one_work+0x21f/0x610
[359.307302]        worker_thread+0x3c/0x390
[359.308465]        kthread+0x116/0x130
[359.309357]        ret_from_fork+0x24/0x30
[359.310229]
[359.310229] -> #0 ((wq_completion)"%s-%s""btrfs", name){+.+.}:
[359.311812]        lock_acquire+0x90/0x180
[359.312929]        flush_workqueue+0xaa/0x540
[359.313845]        drain_workqueue+0xa1/0x180
[359.314761]        destroy_workqueue+0x17/0x240
[359.315754]        btrfs_destroy_workqueue+0x57/0x200 [btrfs]
[359.317245]        scrub_workers_put+0x2c/0x60 [btrfs]
[359.318585]        btrfs_scrub_dev+0x336/0x590 [btrfs]
[359.319944]        btrfs_dev_replace_by_ioctl.cold.19+0x179/0x1bb
[btrfs]
[359.321622]        btrfs_ioctl+0x28a4/0x2e40 [btrfs]
[359.322908]        do_vfs_ioctl+0xa2/0x6d0
[359.324021]        ksys_ioctl+0x3a/0x70
[359.325066]        __x64_sys_ioctl+0x16/0x20
[359.326236]        do_syscall_64+0x54/0x180
[359.327379]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
[359.328772]
[359.328772] other info that might help us debug this:
[359.328772]
[359.330990] Chain exists of:
[359.330990]   (wq_completion)"%s-%s""btrfs", name --> sb_internal#2
--> &fs_info->scrub_lock
[359.330990]
[359.334376]  Possible unsafe locking scenario:
[359.334376]
[359.336020]        CPU0                    CPU1
[359.337070]        ----                    ----
[359.337821]   lock(&fs_info->scrub_lock);
[359.338506]                                lock(sb_internal#2);
[359.339506]                                lock(&fs_info->scrub_lock);
[359.341461]   lock((wq_completion)"%s-%s""btrfs", name);
[359.342437]
[359.342437]  *** DEADLOCK ***
[359.342437]
[359.343745] 1 lock held by btrfs/20975:
[359.344788]  #0: 0000000053ea26a6 (&fs_info->scrub_lock){+.+.}, at:
btrfs_scrub_dev+0x322/0x590 [btrfs]
[359.346778]
[359.346778] stack backtrace:
[359.347897] CPU: 0 PID: 20975 Comm: btrfs Not tainted
5.0.0-rc6-default #461
[359.348983] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS rel-1.11.2-0-gf9626cc-prebuilt.qemu-project.org 04/01/2014
[359.350501] Call Trace:
[359.350931]  dump_stack+0x67/0x90
[359.351676]  print_circular_bug.isra.37.cold.56+0x15c/0x195
[359.353569]  check_prev_add.constprop.44+0x4f9/0x750
[359.354849]  ? check_prev_add.constprop.44+0x286/0x750
[359.356505]  __lock_acquire+0xb84/0xf10
[359.357505]  lock_acquire+0x90/0x180
[359.358271]  ? flush_workqueue+0x87/0x540
[359.359098]  flush_workqueue+0xaa/0x540
[359.359912]  ? flush_workqueue+0x87/0x540
[359.360740]  ? drain_workqueue+0x1e/0x180
[359.361565]  ? drain_workqueue+0xa1/0x180
[359.362391]  drain_workqueue+0xa1/0x180
[359.363193]  destroy_workqueue+0x17/0x240
[359.364539]  btrfs_destroy_workqueue+0x57/0x200 [btrfs]
[359.365673]  scrub_workers_put+0x2c/0x60 [btrfs]
[359.366618]  btrfs_scrub_dev+0x336/0x590 [btrfs]
[359.367594]  ? start_transaction+0xa1/0x500 [btrfs]
[359.368679]  btrfs_dev_replace_by_ioctl.cold.19+0x179/0x1bb [btrfs]
[359.369545]  btrfs_ioctl+0x28a4/0x2e40 [btrfs]
[359.370186]  ? __lock_acquire+0x263/0xf10
[359.370777]  ? kvm_clock_read+0x14/0x30
[359.371392]  ? kvm_sched_clock_read+0x5/0x10
[359.372248]  ? sched_clock+0x5/0x10
[359.372786]  ? sched_clock_cpu+0xc/0xc0
[359.373662]  ? do_vfs_ioctl+0xa2/0x6d0
[359.374552]  do_vfs_ioctl+0xa2/0x6d0
[359.375378]  ? do_sigaction+0xff/0x250
[359.376233]  ksys_ioctl+0x3a/0x70
[359.376954]  __x64_sys_ioctl+0x16/0x20
[359.377772]  do_syscall_64+0x54/0x180
[359.378841]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[359.380422] RIP: 0033:0x7f5429296a97
Backporting to older kernels: scrub_nocow_workers must be freed the same
way as the others.
CC: stable@vger.kernel.org # 4.4+ Signed-off-by: Anand Jain
<anand.jain@oracle.com>
[ update changelog ] Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/scrub.c (diff)
Commit 9c58f2ada4fab31f5bf508185ee8b0e4e83cdcd1 by gregkh
btrfs: drop the lock on error in btrfs_dev_replace_cancel
commit 669e859b5ea7c6f4fce0149d3907c64e550c294b upstream.
We should drop the lock on this error path.  This has been found by a
static tool.
The lock needs to be released, it's there to protect access to the
dev_replace members and is not supposed to be left locked. The value of
state that's being switched would need to be artifically changed to an
invalid value so the default: branch is taken.
Fixes: d189dd70e255 ("btrfs: fix use-after-free due to race between
replace start and cancel") CC: stable@vger.kernel.org # 5.0+
Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Dan
Carpenter <dan.carpenter@oracle.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>
The file was modifiedfs/btrfs/dev-replace.c (diff)
Commit 88e610ae4c3af07d964ba792313c1ac9d50ec7b6 by gregkh
btrfs: ensure that a DUP or RAID1 block group has exactly two stripes
commit 349ae63f40638a28c6fce52e8447c2d14b84cc0c upstream.
We recently had a customer issue with a corrupted filesystem. When
trying to mount this image btrfs panicked with a division by zero in
calc_stripe_length().
The corrupt chunk had a 'num_stripes' value of 1. calc_stripe_length()
takes this value and divides it by the number of copies the RAID profile
is expected to have to calculate the amount of data stripes. As a DUP
profile is expected to have 2 copies this division resulted in 1/2 = 0.
Later then the 'data_stripes' variable is used as a divisor in the
stripe length calculation which results in a division by 0 and thus a
kernel panic.
When encountering a filesystem with a DUP block group and a
'num_stripes' value unequal to 2, refuse mounting as the image is
corrupted and will lead to unexpected behaviour.
Code inspection showed a RAID1 block group has the same issues.
Fixes: e06cd3dd7cea ("Btrfs: add validadtion checks for chunk loading")
CC: stable@vger.kernel.org # 4.4+ Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Johannes
Thumshirn <jthumshirn@suse.de> Reviewed-by: David Sterba
<dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/volumes.c (diff)
Commit ebbb48419e8a7933779a5d849d54de47398ba2b1 by gregkh
btrfs: init csum_list before possible free
commit e49be14b8d80e23bb7c53d78c21717a474ade76b upstream.
The scrub_ctx csum_list member must be initialized before scrub_free_ctx
is called. If the csum_list is not initialized beforehand, the
list_empty call in scrub_free_csums will result in a null deref if the
allocation fails in the for loop.
Fixes: a2de733c78fa ("btrfs: scrub") CC: stable@vger.kernel.org # 3.0+
Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Dan
Robertson <dan@dlrobertson.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>
The file was modifiedfs/btrfs/scrub.c (diff)
Commit 3486142a68e34448cd1f591d82f5eae544862d2d by gregkh
Btrfs: fix corruption reading shared and compressed extents after hole
punching
commit 8e928218780e2f1cf2f5891c7575e8f0b284fcce upstream.
In the past we had data corruption when reading compressed extents that
are shared within the same file and they are consecutive, this got fixed
by commit 005efedf2c7d0 ("Btrfs: fix read corruption of compressed and
shared extents") and by commit 808f80b46790f ("Btrfs: update fix for
read corruption of compressed and shared extents"). However there was a
case that was missing in those fixes, which is when the shared and
compressed extents are referenced with a non-zero offset. The following
shell script creates a reproducer for this issue:
  #!/bin/bash
  mkfs.btrfs -f /dev/sdc &> /dev/null
mount -o compress /dev/sdc /mnt/sdc
  # Create a file with 3 consecutive compressed extents, each has an
# uncompressed size of 128Kb and a compressed size of 4Kb.
for ((i = 1; i <= 3; i++)); do
     head -c 4096 /dev/zero
     for ((j = 1; j <= 31; j++)); do
         head -c 4096 /dev/zero | tr '\0' "\377"
     done
done > /mnt/sdc/foobar
sync
  echo "Digest after file creation:   $(md5sum /mnt/sdc/foobar)"
  # Clone the first extent into offsets 128K and 256K.
xfs_io -c "reflink /mnt/sdc/foobar 0 128K 128K" /mnt/sdc/foobar
xfs_io -c "reflink /mnt/sdc/foobar 0 256K 128K" /mnt/sdc/foobar
sync
  echo "Digest after cloning:         $(md5sum /mnt/sdc/foobar)"
  # Punch holes into the regions that are already full of zeroes.
xfs_io -c "fpunch 0 4K" /mnt/sdc/foobar
xfs_io -c "fpunch 128K 4K" /mnt/sdc/foobar
xfs_io -c "fpunch 256K 4K" /mnt/sdc/foobar
sync
  echo "Digest after hole punching:   $(md5sum /mnt/sdc/foobar)"
  echo "Dropping page cache..."
sysctl -q vm.drop_caches=1
echo "Digest after hole punching:   $(md5sum /mnt/sdc/foobar)"
  umount /dev/sdc
When running the script we get the following output:
  Digest after file creation:   5a0888d80d7ab1fd31c229f83a3bbcc8
/mnt/sdc/foobar
linked 131072/131072 bytes at offset 131072
128 KiB, 1 ops; 0.0033 sec (36.960 MiB/sec and 295.6830 ops/sec)
linked 131072/131072 bytes at offset 262144
128 KiB, 1 ops; 0.0015 sec (78.567 MiB/sec and 628.5355 ops/sec)
Digest after cloning:         5a0888d80d7ab1fd31c229f83a3bbcc8
/mnt/sdc/foobar
Digest after hole punching:   5a0888d80d7ab1fd31c229f83a3bbcc8
/mnt/sdc/foobar
Dropping page cache...
Digest after hole punching:   fba694ae8664ed0c2e9ff8937e7f1484
/mnt/sdc/foobar
This happens because after reading all the pages of the extent in the
range from 128K to 256K for example, we read the hole at offset 256K and
then when reading the page at offset 260K we don't submit the existing
bio, which is responsible for filling all the page in the range 128K to
256K only, therefore adding the pages from range 260K to 384K to the
existing bio and submitting it after iterating over the entire range.
Once the bio completes, the uncompressed data fills only the pages in
the range 128K to 256K because there's no more data read from disk,
leaving the pages in the range 260K to 384K unfilled. It is just a
slightly different variant of what was solved by commit 005efedf2c7d0
("Btrfs: fix read corruption of compressed and shared extents").
Fix this by forcing a bio submit, during readpages(), whenever we find a
compressed extent map for a page that is different from the extent map
for the previous page or has a different starting offset (in case it's
the same compressed extent), instead of the extent map's original start
offset.
A test case for fstests follows soon.
Reported-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org> Fixes:
808f80b46790f ("Btrfs: update fix for read corruption of compressed and
shared extents") Fixes: 005efedf2c7d0 ("Btrfs: fix read corruption of
compressed and shared extents") Cc: stable@vger.kernel.org # 4.3+
Tested-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org> Signed-off-by:
Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba
<dsterba@suse.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/extent_io.c (diff)
Commit 1098803b8cb7cd18d1696cb79fd60cc57977e980 by gregkh
Btrfs: fix deadlock between clone/dedupe and rename
commit 4ea748e1d2c9f8a27332b949e8210dbbf392987e upstream.
Reflinking (clone/dedupe) and rename are operations that operate on two
inodes and therefore need to lock them in the same order to avoid ABBA
deadlocks. It happens that Btrfs' reflink implementation always locked
them in a different order from VFS's lock_two_nondirectories() helper,
which is used by the rename code in VFS, resulting in ABBA type
deadlocks.
Btrfs' locking order:
  static void btrfs_double_inode_lock(struct inode *inode1, struct inode
*inode2)
{
        if (inode1 < inode2)
               swap(inode1, inode2);
         inode_lock_nested(inode1, I_MUTEX_PARENT);
        inode_lock_nested(inode2, I_MUTEX_CHILD);
}
VFS's locking order:
  void lock_two_nondirectories(struct inode *inode1, struct inode
*inode2)
{
       if (inode1 > inode2)
               swap(inode1, inode2);
        if (inode1 && !S_ISDIR(inode1->i_mode))
               inode_lock(inode1);
       if (inode2 && !S_ISDIR(inode2->i_mode) && inode2 != inode1)
               inode_lock_nested(inode2, I_MUTEX_NONDIR2);
}
Fix this by killing the btrfs helper function that does the double inode
locking and replace it with VFS's helper lock_two_nondirectories().
Reported-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org> Fixes:
416161db9b63e3 ("btrfs: offline dedupe") CC: stable@vger.kernel.org #
4.4+ Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by:
David Sterba <dsterba@suse.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/ioctl.c (diff)
Commit 028cbca07ab58f77a532b3587ac4ba9d85fd5f55 by gregkh
soc: qcom: rpmh: Avoid accessing freed memory from batch API
commit baef1c90aac7e5bf13f0360a3b334825a23d31a1 upstream.
Using the batch API from the interconnect driver sometimes leads to a
KASAN error due to an access to freed memory. This is easier to trigger
with threadirqs on the kernel commandline.
BUG: KASAN: use-after-free in rpmh_tx_done+0x114/0x12c
Read of size 1 at addr fffffff51414ad84 by task irq/110-apps_rs/57
CPU: 0 PID: 57 Comm: irq/110-apps_rs Tainted: G        W       
4.19.10 #72
Call trace:
dump_backtrace+0x0/0x2f8
show_stack+0x20/0x2c
__dump_stack+0x20/0x28
dump_stack+0xcc/0x10c
print_address_description+0x74/0x240
kasan_report+0x250/0x26c
__asan_report_load1_noabort+0x20/0x2c
rpmh_tx_done+0x114/0x12c
tcs_tx_done+0x450/0x768
irq_forced_thread_fn+0x58/0x9c
irq_thread+0x120/0x1dc
kthread+0x248/0x260
ret_from_fork+0x10/0x18
Allocated by task 385:
kasan_kmalloc+0xac/0x148
__kmalloc+0x170/0x1e4
rpmh_write_batch+0x174/0x540
qcom_icc_set+0x8dc/0x9ac
icc_set+0x288/0x2e8
a6xx_gmu_stop+0x320/0x3c0
a6xx_pm_suspend+0x108/0x124
adreno_suspend+0x50/0x60
pm_generic_runtime_suspend+0x60/0x78
__rpm_callback+0x214/0x32c
rpm_callback+0x54/0x184
rpm_suspend+0x3f8/0xa90
pm_runtime_work+0xb4/0x178
process_one_work+0x544/0xbc0
worker_thread+0x514/0x7d0
kthread+0x248/0x260
ret_from_fork+0x10/0x18
Freed by task 385:
__kasan_slab_free+0x12c/0x1e0
kasan_slab_free+0x10/0x1c
kfree+0x134/0x588
rpmh_write_batch+0x49c/0x540
qcom_icc_set+0x8dc/0x9ac
icc_set+0x288/0x2e8
a6xx_gmu_stop+0x320/0x3c0
a6xx_pm_suspend+0x108/0x124
adreno_suspend+0x50/0x60
cr50_spi spi5.0: SPI transfer timed out
pm_generic_runtime_suspend+0x60/0x78
__rpm_callback+0x214/0x32c
rpm_callback+0x54/0x184
rpm_suspend+0x3f8/0xa90
pm_runtime_work+0xb4/0x178
process_one_work+0x544/0xbc0
worker_thread+0x514/0x7d0
kthread+0x248/0x260
ret_from_fork+0x10/0x18
The buggy address belongs to the object at fffffff51414ac80
which belongs to the cache kmalloc-512 of size 512
The buggy address is located 260 bytes inside of
512-byte region [fffffff51414ac80, fffffff51414ae80)
The buggy address belongs to the page:
page:ffffffbfd4505200 count:1 mapcount:0 mapping:fffffff51e00c680
index:0x0 compound_mapcount: 0
flags: 0x4000000000008100(slab|head)
raw: 4000000000008100 ffffffbfd4529008 ffffffbfd44f9208 fffffff51e00c680
raw: 0000000000000000 0000000000200020 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
Memory state around the buggy address:
fffffff51414ac80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
fffffff51414ad00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>fffffff51414ad80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                   ^
fffffff51414ae00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
fffffff51414ae80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
The batch API sets the same completion for each rpmh message that's sent
and then loops through all the messages and waits for that single
completion declared on the stack to be completed before returning from
the function and freeing the message structures. Unfortunately, some
messages may still be in process and 'stuck' in the TCS. At some later
point, the tcs_tx_done() interrupt will run and try to process messages
that have already been freed at the end of rpmh_write_batch(). This will
in turn access the 'needs_free' member of the rpmh_request structure and
cause KASAN to complain. Furthermore, if there's a message that's
completed in rpmh_tx_done() and freed immediately after the complete()
call is made we'll be racing with potentially freed memory when
accessing the 'needs_free' member:
CPU0                         CPU1
----                         ----
rpmh_tx_done()
complete(&compl)
                             wait_for_completion(&compl)
                             kfree(rpm_msg)
if (rpm_msg->needs_free)
<KASAN warning splat>
Let's fix this by allocating a chunk of completions for each message and
waiting for all of them to be completed before returning from the batch
API. Alternatively, we could wait for the last message in the batch, but
that may be a more complicated change because it looks like
tcs_tx_done() just iterates through the indices of the queue and
completes each message instead of tracking the last inserted message and
completing that first.
Fixes: c8790cb6da58 ("drivers: qcom: rpmh: add support for batch RPMH
request") Cc: Lina Iyer <ilina@codeaurora.org> Cc: "Raju P.L.S.S.S.N"
<rplsssn@codeaurora.org> Cc: Matthias Kaehlcke <mka@chromium.org> Cc:
Evan Green <evgreen@chromium.org> Cc: stable@vger.kernel.org
Reviewed-by: Lina Iyer <ilina@codeaurora.org> Reviewed-by: Evan Green
<evgreen@chromium.org> Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/soc/qcom/rpmh.c (diff)
Commit bd05a30753ebd84004f132bf20aca8c94625bec6 by gregkh
libertas_tf: don't set URB_ZERO_PACKET on IN USB transfer
commit 607076a904c435f2677fadaadd4af546279db68b upstream.
It doesn't make sense and the USB core warns on each submit of such URB,
easily flooding the message buffer with tracebacks.
Analogous issue was fixed in regular libertas driver in commit
6528d8804780
("libertas: don't set URB_ZERO_PACKET on IN USB transfer").
Cc: stable@vger.kernel.org Signed-off-by: Lubomir Rintel
<lkundrak@v3.sk> Reviewed-by: Steve deRosier <derosier@cal-sierra.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/wireless/marvell/libertas_tf/if_usb.c (diff)
Commit 830d66c95e02a425c357835e64e16d3ce686ae05 by gregkh
irqchip/gic-v3-its: Avoid parsing _indirect_ twice for Device table
commit 8d565748b6035eeda18895c213396a4c9fac6a4c upstream.
In current logic, its_parse_indirect_baser() will be invoked twice when
allocating Device tables. Add a *break* to omit the unnecessary and
annoying (might be ...) invoking.
Fixes: 32bd44dc19de ("irqchip/gic-v3-its: Fix the incorrect parsing of
VCPU table size") Cc: stable@vger.kernel.org Signed-off-by: Zenghui Yu
<yuzenghui@huawei.com> Signed-off-by: Marc Zyngier
<marc.zyngier@arm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/irqchip/irq-gic-v3-its.c (diff)
Commit dbbb26db89383723dd2b9fe63165be171d847e1c by gregkh
irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code
commit 33517881ede742107f416533b8c3e4abc56763da upstream.
Using the irq_gc_lock/irq_gc_unlock functions in the suspend and resume
functions creates the opportunity for a deadlock during suspend, resume,
and shutdown. Using the irq_gc_lock_irqsave/ irq_gc_unlock_irqrestore
variants prevents this possible deadlock.
Cc: stable@vger.kernel.org Fixes: 7f646e92766e2 ("irqchip: brcmstb-l2:
Add Broadcom Set Top Box Level-2 interrupt controller") Signed-off-by:
Doug Berger <opendmb@gmail.com> Signed-off-by: Florian Fainelli
<f.fainelli@gmail.com>
[maz: tidied up $SUBJECT] Signed-off-by: Marc Zyngier
<marc.zyngier@arm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/irqchip/irq-brcmstb-l2.c (diff)
Commit 737f4ead9606e748e43260a46dbd9c302abbf8e5 by gregkh
x86/kprobes: Prohibit probing on optprobe template code
commit 0192e6535ebe9af68614198ced4fd6d37b778ebf upstream.
Prohibit probing on optprobe template code, since it is not a code but a
template instruction sequence. If we modify this template, copied
template must be broken.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Cc: Alexander
Shishkin <alexander.shishkin@linux.intel.com> Cc: Andrea Righi
<righi.andrea@gmail.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Mathieu Desnoyers
<mathieu.desnoyers@efficios.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc:
Thomas Gleixner <tglx@linutronix.de> Cc: stable@vger.kernel.org Fixes:
9326638cbee2 ("kprobes, x86: Use NOKPROBE_SYMBOL() instead of __kprobes
annotation") Link:
http://lkml.kernel.org/r/154998787911.31052.15274376330136234452.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/kprobes/opt.c (diff)
Commit 144c3557b1e1e8c3626a698ff3ccd197443fb865 by gregkh
cpufreq: kryo: Release OPP tables on module removal
commit 0334906c06967142c8805fbe88acf787f65d3d26 upstream.
Commit 5ad7346b4ae2 ("cpufreq: kryo: Add module remove and exit") made
it possible to build the kryo cpufreq driver as a module, but it failed
to release all the resources, i.e. OPP tables, when the module is
unloaded.
This patch fixes it by releasing the OPP tables, by calling
dev_pm_opp_put_supported_hw() for them, from the
qcom_cpufreq_kryo_remove() routine. The array of pointers to the OPP
tables is also allocated dynamically now in qcom_cpufreq_kryo_probe(),
as the pointers will be required while releasing the resources.
Compile tested only.
Cc: 4.18+ <stable@vger.kernel.org> # v4.18+ Fixes: 5ad7346b4ae2
("cpufreq: kryo: Add module remove and exit") Reviewed-by: Georgi Djakov
<georgi.djakov@linaro.org> Signed-off-by: Viresh Kumar
<viresh.kumar@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/cpufreq/qcom-cpufreq-kryo.c (diff)
Commit 272b28097c30114e749a66e30ade16a262866953 by gregkh
cpufreq: tegra124: add missing of_node_put()
commit 446fae2bb5395f3028d8e3aae1508737e5a72ea1 upstream.
of_cpu_device_node_get() will increase the refcount of device_node, it
is necessary to call of_node_put() at the end to release the refcount.
Fixes: 9eb15dbbfa1a2 ("cpufreq: Add cpufreq driver for Tegra124") Cc:
<stable@vger.kernel.org> # 4.4+ Signed-off-by: Yangtao Li
<tiny.windzz@gmail.com> Acked-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/cpufreq/tegra124-cpufreq.c (diff)
Commit f9308e46e02bbb6f0f15a880a4fce9e5ba29ab2c by gregkh
cpufreq: pxa2xx: remove incorrect __init annotation
commit 9505b98ccddc454008ca7efff90044e3e857c827 upstream.
pxa_cpufreq_init_voltages() is marked __init but usually inlined into
the non-__init pxa_cpufreq_init() function. When building with clang, it
can stay as a standalone function in a discarded section, and produce
this warning:
WARNING: vmlinux.o(.text+0x616a00): Section mismatch in reference from
the function pxa_cpufreq_init() to the function
.init.text:pxa_cpufreq_init_voltages() The function pxa_cpufreq_init()
references the function __init pxa_cpufreq_init_voltages(). This is
often because pxa_cpufreq_init lacks a __init annotation or the
annotation of pxa_cpufreq_init_voltages is wrong.
Fixes: 50e77fcd790e ("ARM: pxa: remove __init from
cpufreq_driver->init()") Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Nathan
Chancellor <natechancellor@gmail.com> Acked-by: Robert Jarzmik
<robert.jarzmik@free.fr> Cc: All applicable <stable@vger.kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/cpufreq/pxa2xx-cpufreq.c (diff)
Commit a0f6f657ac446194c190fab6aca9f6f71c8404f4 by gregkh
ext4: fix check of inode in swap_inode_boot_loader
commit 67a11611e1a5211f6569044fbf8150875764d1d0 upstream.
Before really do swap between inode and boot inode, something need to
check to avoid invalid or not permitted operation, like does this inode
has inline data. But the condition check should be protected by inode
lock to avoid change while swapping. Also some other condition will not
change between swapping, but there has no problem to do this under inode
lock.
Signed-off-by: yangerkun <yangerkun@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ioctl.c (diff)
Commit 7a34997043f1c042ae91d780630445bbf23fa435 by gregkh
ext4: cleanup pagecache before swap i_data
commit a46c68a318b08f819047843abf349aeee5d10ac2 upstream.
While do swap, we should make sure there has no new dirty page since we
should swap i_data between two inode: 1.We should lock i_mmap_sem with
write to avoid new pagecache from mmap read/write; 2.Change
filemap_flush to filemap_write_and_wait and move them to the space
protected by inode lock to avoid new pagecache from buffer read/write.
Signed-off-by: yangerkun <yangerkun@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ioctl.c (diff)
Commit 84fe80428739b7f40763b4d4c1c84c2ce8591fe5 by gregkh
mm: hwpoison: fix thp split handing in soft_offline_in_use_page()
commit 46612b751c4941c5c0472ddf04027e877ae5990f upstream.
When soft_offline_in_use_page() runs on a thp tail page after pmd is
split, we trigger the following VM_BUG_ON_PAGE():
  Memory failure: 0x3755ff: non anonymous thp
__get_any_page: 0x3755ff: unknown zero refcount page type
2fffff80000000
Soft offlining pfn 0x34d805 at process virtual address 0x20fff000
page:ffffea000d360140 count:0 mapcount:0 mapping:0000000000000000
index:0x1
flags: 0x2fffff80000000()
raw: 002fffff80000000 ffffea000d360108 ffffea000d360188
0000000000000000
raw: 0000000000000001 0000000000000000 00000000ffffffff
0000000000000000
page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0)
------------[ cut here ]------------
kernel BUG at ./include/linux/mm.h:519!
soft_offline_in_use_page() passed refcount and page lock from tail page
to head page, which is not needed because we can pass any subpage to
split_huge_page().
Naoya had fixed a similar issue in c3901e722b29 ("mm: hwpoison: fix thp
split handling in memory_failure()").  But he missed fixing soft
offline.
Link:
http://lkml.kernel.org/r/1551452476-24000-1-git-send-email-zhongjiang@huawei.com
Fixes: 61f5d698cc97 ("mm: re-enable THP") Signed-off-by: zhongjiang
<zhongjiang@huawei.com> Acked-by: Naoya Horiguchi
<n-horiguchi@ah.jp.nec.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Hugh
Dickins <hughd@google.com> Cc: Kirill A. Shutemov <kirill@shutemov.name>
Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: <stable@vger.kernel.org>
[4.5+] 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>
The file was modifiedmm/memory-failure.c (diff)
Commit 8df6ab770e2036e82f3f7ed3004da7aa8740f6c7 by gregkh
mm/vmalloc: fix size check for remap_vmalloc_range_partial()
commit 401592d2e095947344e10ec0623adbcd58934dd4 upstream.
When VM_NO_GUARD is not set area->size includes adjacent guard page,
thus for correct size checking get_vm_area_size() should be used, but
not area->size.
This fixes possible kernel oops when userspace tries to mmap an area on
1 page bigger than was allocated by vmalloc_user() call: the size check
inside remap_vmalloc_range_partial() accounts non-existing guard page
also, so check successfully passes but vmalloc_to_page() returns NULL
(guard page does not physically exist).
The following code pattern example should trigger an oops:
  static int oops_mmap(struct file *file, struct vm_area_struct *vma)
{
       void *mem;
        mem = vmalloc_user(4096);
       BUG_ON(!mem);
       /* Do not care about mem leak */
        return remap_vmalloc_range(vma, mem, 0);
}
And userspace simply mmaps size + PAGE_SIZE:
  mmap(NULL, 8192, PROT_WRITE|PROT_READ, MAP_PRIVATE, fd, 0);
Possible candidates for oops which do not have any explicit size checks:
   *** drivers/media/usb/stkwebcam/stk-webcam.c:
  v4l_stk_mmap[789]   ret = remap_vmalloc_range(vma, sbuf->buffer, 0);
Or the following one:
   *** drivers/video/fbdev/core/fbmem.c
  static int
  fb_mmap(struct file *file, struct vm_area_struct * vma)
       ...
       res = fb->fb_mmap(info, vma);
Where fb_mmap callback calls remap_vmalloc_range() directly without any
explicit checks:
   *** drivers/video/fbdev/vfb.c
  static int vfb_mmap(struct fb_info *info,
            struct vm_area_struct *vma)
  {
      return remap_vmalloc_range(vma, (void *)info->fix.smem_start,
vma->vm_pgoff);
  }
Link: http://lkml.kernel.org/r/20190103145954.16942-2-rpenyaev@suse.de
Signed-off-by: Roman Penyaev <rpenyaev@suse.de> Acked-by: Michal Hocko
<mhocko@suse.com> Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: Joe
Perches <joe@perches.com> Cc: "Luis R. Rodriguez" <mcgrof@kernel.org>
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>
The file was modifiedmm/vmalloc.c (diff)
Commit 9a842b43e4b86a77c09cd722e0dfed7782bc274b by gregkh
mm/memory.c: do_fault: avoid usage of stale vm_area_struct
commit fc8efd2ddfed3f343c11b693e87140ff358d7ff5 upstream.
LTP testcase mtest06 [1] can trigger a crash on s390x running 5.0.0-rc8.
This is a stress test, where one thread mmaps/writes/munmaps memory area
and other thread is trying to read from it:
  CPU: 0 PID: 2611 Comm: mmap1 Not tainted 5.0.0-rc8+ #51
Hardware name: IBM 2964 N63 400 (z/VM 6.4.0)
Krnl PSW : 0404e00180000000 00000000001ac8d8 (__lock_acquire+0x7/0x7a8)
Call Trace:
([<0000000000000000>]           (null))
  [<00000000001adae4>] lock_acquire+0xec/0x258
  [<000000000080d1ac>] _raw_spin_lock_bh+0x5c/0x98
  [<000000000012a780>] page_table_free+0x48/0x1a8
  [<00000000002f6e54>] do_fault+0xdc/0x670
  [<00000000002fadae>] __handle_mm_fault+0x416/0x5f0
  [<00000000002fb138>] handle_mm_fault+0x1b0/0x320
  [<00000000001248cc>] do_dat_exception+0x19c/0x2c8
  [<000000000080e5ee>] pgm_check_handler+0x19e/0x200
page_table_free() is called with NULL mm parameter, but because "0" is a
valid address on s390 (see S390_lowcore), it keeps going until it
eventually crashes in lockdep's lock_acquire.  This crash is
reproducible at least since 4.14.
Problem is that "vmf->vma" used in do_fault() can become stale.  Because
mmap_sem may be released, other threads can come in, call munmap() and
cause "vma" be returned to kmem cache, and get zeroed/re-initialized and
re-used:
handle_mm_fault                           |
__handle_mm_fault                       |
   do_fault                              |
     vma = vmf->vma                      |
     do_read_fault                       |
       __do_fault                        |
         vma->vm_ops->fault(vmf);        |
           mmap_sem is released          |
                                         |
                                         | do_munmap()
                                         |   remove_vma_list()
                                         |     remove_vma()
                                         |       vm_area_free()
                                         |         # vma is released
                                         | ...
                                         | # same vma is allocated
                                         | # from kmem cache
                                         | do_mmap()
                                         |   vm_area_alloc()
                                         |     memset(vma, 0, ...)
                                         |
     pte_free(vma->vm_mm, ...);          |
       page_table_free                   |
         spin_lock_bh(&mm->context.lock);|
           <crash>                       |
Cache mm_struct to avoid using potentially stale "vma".
[1]
https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/mem/mtest06/mmap1.c
Link:
http://lkml.kernel.org/r/5b3fdf19e2a5be460a384b936f5b56e13733f1b8.1551595137.git.jstancek@redhat.com
Signed-off-by: Jan Stancek <jstancek@redhat.com> Reviewed-by: Andrea
Arcangeli <aarcange@redhat.com> Reviewed-by: Matthew Wilcox
<willy@infradead.org> Acked-by: Rafael Aquini <aquini@redhat.com>
Reviewed-by: Minchan Kim <minchan@kernel.org> Acked-by: Kirill A.
Shutemov <kirill.shutemov@linux.intel.com> Cc: Rik van Riel
<riel@surriel.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Huang Ying
<ying.huang@intel.com> Cc: Souptick Joarder <jrdr.linux@gmail.com> Cc:
Jerome Glisse <jglisse@redhat.com> Cc: Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> Cc: David Hildenbrand <david@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: David Rientjes
<rientjes@google.com> Cc: Mel Gorman <mgorman@techsingularity.net> 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>
The file was modifiedmm/memory.c (diff)
Commit d09e7041330bb07ab41d8cfd4bccea3f9b9284c2 by gregkh
kernel/sysctl.c: add missing range check in do_proc_dointvec_minmax_conv
commit 8cf7630b29701d364f8df4a50e4f1f5e752b2778 upstream.
This bug has apparently existed since the introduction of this function
in the pre-git era (4500e91754d3 in Thomas Gleixner's history.git,
"[NET]: Add proc_dointvec_userhz_jiffies, use it for proper handling of
neighbour sysctls.").
As a minimal fix we can simply duplicate the corresponding check in
do_proc_dointvec_conv().
Link:
http://lkml.kernel.org/r/20190207123426.9202-3-zev@bewilderbeest.net
Signed-off-by: Zev Weiss <zev@bewilderbeest.net> Cc: Brendan Higgins
<brendanhiggins@google.com> Cc: Iurii Zaikin <yzaikin@google.com> Cc:
Kees Cook <keescook@chromium.org> Cc: Luis Chamberlain
<mcgrof@kernel.org> Cc: <stable@vger.kernel.org> [2.6.2+]
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>
The file was modifiedkernel/sysctl.c (diff)
Commit 9a638bb82ff5dbd7efc94640bf7334022e9f5efd by gregkh
nvmem: core: don't check the return value of notifier chain call
commit f4853e1c321edb48af229ad5ac85076790d34968 upstream.
blocking_notifier_call_chain() returns the value returned by the last
registered callback. A positive return value doesn't indicate an error
and an nvmem device should correctly register irrespective of any
notifier callback failures. Drop the retval check.
Fixes: bee1138bea15 ("nvmem: add a notifier chain") Cc:
stable@vger.kernel.org Signed-off-by: Bartosz Golaszewski
<bgolaszewski@baylibre.com> Acked-by: Srinivas Kandagatla
<srinivas.kandagatla@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/nvmem/core.c (diff)
Commit 1a1d6860c5394d08518364303222c848edda266c by gregkh
device property: Fix the length used in PROPERTY_ENTRY_STRING()
commit 2b6e492467c78183bb629bb0a100ea3509b615a5 upstream.
With string type property entries we need to use sizeof(const char *)
instead of the number of characters as the length of the entry.
If the string was shorter then sizeof(const char *), attempts to read it
would have failed with -EOVERFLOW. The problem has been hidden because
all build-in string properties have had a string longer then 8
characters until now.
Fixes: a85f42047533 ("device property: helper macros for property entry
creation") Cc: 4.5+ <stable@vger.kernel.org> # 4.5+ Signed-off-by:
Heikki Krogerus <heikki.krogerus@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>
The file was modifiedinclude/linux/property.h (diff)
Commit d91315e99c550a0facdd01cb461305ed79ba0822 by gregkh
intel_th: Don't reference unassigned outputs
commit 9ed3f22223c33347ed963e7c7019cf2956dd4e37 upstream.
When an output port driver is removed, also remove references to it from
any masters. Failing to do this causes a NULL ptr dereference when
configuring another output port:
> BUG: unable to handle kernel NULL pointer dereference at
000000000000000d
> RIP: 0010:master_attr_store+0x9d/0x160 [intel_th_gth]
> Call Trace:
> dev_attr_store+0x1b/0x30
> sysfs_kf_write+0x3c/0x50
> kernfs_fop_write+0x125/0x1a0
> __vfs_write+0x3a/0x190
> ? __vfs_write+0x5/0x190
> ? _cond_resched+0x1a/0x50
> ? rcu_all_qs+0x5/0xb0
> ? __vfs_write+0x5/0x190
> vfs_write+0xb8/0x1b0
> ksys_write+0x55/0xc0
> __x64_sys_write+0x1a/0x20
> do_syscall_64+0x5a/0x140
> entry_SYSCALL_64_after_hwframe+0x44/0xa9
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Fixes: b27a6a3f97b9 ("intel_th: Add Global Trace Hub driver") CC:
stable@vger.kernel.org # v4.4+ Reported-by: Ammy Yi <ammy.yi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/hwtracing/intel_th/gth.c (diff)
Commit 775bd984147eac0b8cee0c46150b0fae4743a61c by gregkh
parport_pc: fix find_superio io compare code, should use equal test.
commit 21698fd57984cd28207d841dbdaa026d6061bceb upstream.
In the original code before 181bf1e815a2 the loop was continuing until
it finds the first matching superios[i].io and p->base. But after
181bf1e815a2 the logic changed and the loop now returns the pointer to
the first mismatched array element which is then used in
get_superio_dma() and get_superio_irq() and thus returning the wrong
value. Fix the condition so that it now returns the correct pointer.
Fixes: 181bf1e815a2 ("parport_pc: clean up the modified while loops
using for") Cc: Alan Cox <alan@linux.intel.com> Cc:
stable@vger.kernel.org Signed-off-by: QiaoChong <qiaochong@loongson.cn>
[rewrite the commit message] Signed-off-by: Sudip Mukherjee
<sudipm.mukherjee@gmail.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/parport/parport_pc.c (diff)
Commit 986d964baaaa37e8f3dd14d93e222ebff1756905 by gregkh
i2c: tegra: fix maximum transfer size
commit f4e3f4ae1d9c9330de355f432b69952e8cef650c upstream.
Tegra186 and prior supports maximum 4K bytes per packet transfer
including 12 bytes of packet header.
This patch fixes max write length limit to account packet header size
for transfers.
Cc: stable@vger.kernel.org # 4.4+
Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Sowjanya
Komatineni <skomatineni@nvidia.com> Signed-off-by: Wolfram Sang
<wsa@the-dreams.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/i2c/busses/i2c-tegra.c (diff)
Commit 8b82d499df877ed7a9c2bcc9456dab83249a534c by gregkh
i2c: tegra: update maximum transfer size
commit b03ff2a23359d0dd6f0a1516c6a9e9c4760ed230 upstream.
Tegra194 supports maximum 64K bytes per packet including 12 bytes of
packet header irrespective of PIO or DMA mode transfer.
This patch updates Tegra194 max write length to account for packet
header size for transfers.
Cc: stable@vger.kernel.org # 4.20+
Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Sowjanya
Komatineni <skomatineni@nvidia.com> Signed-off-by: Wolfram Sang
<wsa@the-dreams.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/i2c/busses/i2c-tegra.c (diff)
Commit 13cef9edc45b5d30fbee28d4ed54b18ed016ea76 by gregkh
media: i2c: ov5640: Fix post-reset delay
commit 1d4c41f3d887bcd66e82cb2fda124533dad8808a upstream.
According to the ov5640 specification (2.7 power up sequence), host can
access the sensor's registers 20ms after reset. Trying to access them
before leads to undefined behavior and result in sporadic initialization
errors.
Signed-off-by: Loic Poulain <loic.poulain@linaro.org> Signed-off-by:
Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro
Carvalho Chehab <mchehab+samsung@kernel.org> Cc: Adam Ford
<aford173@gmail.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/media/i2c/ov5640.c (diff)
Commit ef2dfe6f8c82f427531b7556e2ee1b65f1301543 by gregkh
gpio: pca953x: Fix dereference of irq data in shutdown
commit c378b3aa015931a46c91d6ccc2fe04d97801d060 upstream.
If a PCA953x gpio was used as an interrupt and then released, the
shutdown function was trying to extract the pca953x_chip pointer
directly from the irq_data, but in reality was getting the gpio_chip
structure.
The net effect was that the subsequent writes to the data structure
corrupted data in the gpio_chip structure, which wasn't immediately
obvious until attempting to use the GPIO again in the future, at which
point the kernel panics.
This fix correctly extracts the pca953x_chip structure via the gpio_chip
structure, as is correctly done in the other irq functions.
Fixes: 0a70fe00efea ("gpio: pca953x: Clear irq trigger type on irq
shutdown") Cc: stable@vger.kernel.org Signed-off-by: Mark Walton
<mark.walton@serialtek.com> Reviewed-by: Bartosz Golaszewski
<bgolaszewski@baylibre.com> Signed-off-by: Linus Walleij
<linus.walleij@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpio/gpio-pca953x.c (diff)
Commit 7c2cfdf99ae97e13bea5d0919a03a6b9bb2c02f2 by gregkh
ext4: update quota information while swapping boot loader inode
commit aa507b5faf38784defe49f5e64605ac3c4425e26 upstream.
While do swap between two inode, they swap i_data without update quota
information. Also, swap_inode_boot_loader can do "revert" somtimes, so
update the quota while all operations has been finished.
Signed-off-by: yangerkun <yangerkun@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ioctl.c (diff)
Commit edc0bf6532ba167697ce6588d3311b6692bfb3d7 by gregkh
ext4: add mask of ext4 flags to swap
commit abdc644e8cbac2e9b19763680e5a7cf9bab2bee7 upstream.
The reason is that while swapping two inode, we swap the flags too. Some
flags such as EXT4_JOURNAL_DATA_FL can really confuse the things since
we're not resetting the address operations structure.  The simplest way
to keep things sane is to restrict the flags that can be swapped.
Signed-off-by: yangerkun <yangerkun@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ext4.h (diff)
The file was modifiedfs/ext4/ioctl.c (diff)
Commit db8913b46d74dc10fd4a9063b840e695f33e3eb9 by gregkh
ext4: fix crash during online resizing
commit f96c3ac8dfc24b4e38fc4c2eba5fea2107b929d1 upstream.
When computing maximum size of filesystem possible with given number of
group descriptor blocks, we forget to include s_first_data_block into
the number of blocks. Thus for filesystems with non-zero
s_first_data_block it can happen that computed maximum filesystem size
is actually lower than current filesystem size which confuses the code
and eventually leads to a BUG_ON in ext4_alloc_group_tables() hitting on
flex_gd->count == 0. The problem can be reproduced like:
truncate -s 100g /tmp/image mkfs.ext4 -b 1024 -E resize=262144
/tmp/image 32768 mount -t ext4 -o loop /tmp/image /mnt resize2fs
/dev/loop0 262145 resize2fs /dev/loop0 300000
Fix the problem by properly including s_first_data_block into the
computed number of filesystem blocks.
Fixes: 1c6bd7173d66 "ext4: convert file system to meta_bg if needed..."
Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Theodore Ts'o
<tytso@mit.edu> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/resize.c (diff)
Commit 38c3a86a8226ac78b1fd10b4dd7912530bcd3c9c by gregkh
dma: Introduce dma_max_mapping_size()
commit 133d624b1cee16906134e92d5befb843b58bcf31 upstream.
The function returns the maximum size that can be mapped using DMA-API
functions. The patch also adds the implementation for direct DMA and a
new dma_map_ops pointer so that other implementations can expose their
limit.
Cc: stable@vger.kernel.org Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Michael S.
Tsirkin <mst@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/dma-mapping.h (diff)
The file was modifiedDocumentation/DMA-API.txt (diff)
The file was modifiedkernel/dma/direct.c (diff)
The file was modifiedkernel/dma/mapping.c (diff)
Commit a4eeaa9cc9dadd79369e91b9f8220c4aa0d77098 by gregkh
swiotlb: Introduce swiotlb_max_mapping_size()
commit abe420bfae528c92bd8cc5ecb62dc95672b1fd6f upstream.
The function returns the maximum size that can be remapped by the
SWIOTLB implementation. This function will be later exposed to users
through the DMA-API.
Cc: stable@vger.kernel.org Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Michael S.
Tsirkin <mst@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedkernel/dma/swiotlb.c (diff)
The file was modifiedinclude/linux/swiotlb.h (diff)
Commit 4e9f8e86d6c781a5098e46b175355f6109a46d72 by gregkh
swiotlb: Add is_swiotlb_active() function
commit 492366f7b4237257ef50ca9c431a6a0d50225aca upstream.
This function will be used from dma_direct code to determine the maximum
segment size of a dma mapping.
Cc: stable@vger.kernel.org Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Michael S.
Tsirkin <mst@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedkernel/dma/swiotlb.c (diff)
The file was modifiedinclude/linux/swiotlb.h (diff)
Commit bae1cf68370d3938f864da041e37cc96c3d7ba2b by gregkh
PCI/ASPM: Use LTR if already enabled by platform
commit 10ecc818ea7319b5d0d2b4e1aa6a77323e776f76 upstream.
RussianNeuroMancer reported that the Intel 7265 wifi on a Dell Venue 11
Pro 7140 table stopped working after wakeup from suspend and bisected
the problem to 9ab105deb60f ("PCI/ASPM: Disable ASPM L1.2 Substate if we
don't have LTR").  David Ward reported the same problem on a Dell
Latitude 7350.
After af8bb9f89838 ("PCI/ACPI: Request LTR control from platform before
using it"), we don't enable LTR unless the platform has granted LTR
control to us.  In addition, we don't notice if the platform had already
enabled LTR itself.
After 9ab105deb60f ("PCI/ASPM: Disable ASPM L1.2 Substate if we don't
have LTR"), we avoid using LTR if we don't think the path to the device
has LTR enabled.
The combination means that if the platform itself enables LTR but
declines to give the OS control over LTR, we unnecessarily avoided using
ASPM L1.2.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=201469 Fixes:
9ab105deb60f ("PCI/ASPM: Disable ASPM L1.2 Substate if we don't have
LTR") Fixes: af8bb9f89838 ("PCI/ACPI: Request LTR control from platform
before using it") Reported-by: RussianNeuroMancer
<russianneuromancer@ya.ru> Reported-by: David Ward
<david.ward@ll.mit.edu> Signed-off-by: Bjorn Helgaas
<bhelgaas@google.com> CC: stable@vger.kernel.org # v4.18+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/probe.c (diff)
Commit eafa704de27bbb428f83d282aabcb5087256aa77 by gregkh
PCI/DPC: Fix print AER status in DPC event handling
commit 9f08a5d896ce43380314c34ed3f264c8e6075b80 upstream.
Previously dpc_handler() called aer_get_device_error_info() without
initializing info->severity, so aer_get_device_error_info() relied on
uninitialized data.
Add dpc_get_aer_uncorrect_severity() to read the port's AER status,
mask, and severity registers and set info->severity.
Also, clear the port's AER fatal error status bits.
Fixes: 8aefa9b0d910 ("PCI/DPC: Print AER status in DPC event handling")
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
[bhelgaas: changelog] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Keith Busch <keith.busch@intel.com> Cc:
stable@vger.kernel.org # v4.19+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/pcie/dpc.c (diff)
Commit 63a9e7ce6624ef0385a1c65bdae0708d3abb7f47 by gregkh
PCI: qcom: Don't deassert reset GPIO during probe
commit 02b485e31d98265189b91f3e69c43df2ed50610c upstream.
Acquiring the reset GPIO low means that reset is being deasserted, this
is followed almost immediately with qcom_pcie_host_init() asserting it,
initializing it and then finally deasserting it again, for the link to
come up.
Some PCIe devices requires a minimum time between the initial deassert
and subsequent reset cycles. In a platform that boots with the reset
GPIO asserted this requirement is being violated by this deassert/assert
pulse.
Acquire the reset GPIO high to prevent this situation by matching the
state to the subsequent asserted state.
Fixes: 82a823833f4e ("PCI: qcom: Add Qualcomm PCIe controller driver")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
[lorenzo.pieralisi@arm.com: updated commit log] Signed-off-by: Lorenzo
Pieralisi <lorenzo.pieralisi@arm.com> Acked-by: Stanimir Varbanov
<svarbanov@mm-sol.com> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/controller/dwc/pcie-qcom.c (diff)
Commit 0d5bc50f524afb84a882cb5f507c4aeeab08aa8a by gregkh
PCI: dwc: skip MSI init if MSIs have been explicitly disabled
commit 3afc8299f39a27b60e1519a28e18878ce878e7dd upstream.
Since 7c5925afbc58 (PCI: dwc: Move MSI IRQs allocation to IRQ domains
hierarchical API) the MSI init claims one of the controller IRQs as a
chained IRQ line for the MSI controller. On some designs, like the
i.MX6, this line is shared with a PCIe legacy IRQ. When the line is
claimed for the MSI domain, any device trying to use this legacy IRQs
will fail to request this IRQ line.
As MSI and legacy IRQs are already mutually exclusive on the DWC core,
as the core won't forward any legacy IRQs once any MSI has been enabled,
users wishing to use legacy IRQs already need to explictly disable MSI
support (usually via the pci=nomsi kernel commandline option). To avoid
any issues with MSI conflicting with legacy IRQs, just skip all of the
DWC MSI initalization, including the IRQ line claim, when MSI is
disabled.
Fixes: 7c5925afbc58 ("PCI: dwc: Move MSI IRQs allocation to IRQ domains
hierarchical API") Tested-by: Tim Harvey <tharvey@gateworks.com>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by:
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Acked-by: Gustavo Pimentel
<gustavo.pimentel@synopsys.com> Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/controller/dwc/pcie-designware-host.c (diff)
Commit ee0bf8d6e7fca46dd8e53a7b97683cb57bb4c3fd by gregkh
PCI: pciehp: Disable Data Link Layer State Changed event on suspend
commit bbe54ea5330d828cc396d451c0e1e5c3f9764c1e upstream.
Commit 0e157e528604 ("PCI/PME: Implement runtime PM callbacks") tried to
solve an issue where the hierarchy immediately wakes up when it is
transitioned into D3cold.  However, it turns out to prevent PME
propagation on some systems that do not support D3cold.
I looked more closely at what might cause the immediate wakeup.  It
happens when the ACPI power resource of the root port is turned off.
The AML code associated with the _OFF() method of the ACPI power
resource starts a PCIe L2/L3 Ready transition and waits for it to
complete.  Right after the L2/L3 Ready transition is started the root
port receives a PME from the downstream port.
The simplest hierarchy where this happens looks like this:
  00:1d.0 PCIe Root Port
   ^
   |
   v
   05:00.0 PCIe switch #1 upstream port
     06:01.0 PCIe switch #1 downstream hotplug port
       ^
       |
       v
       08:00.0 PCIe switch #2 upstream port
It seems that the PCIe link between the two switches, before
PME_Turn_Off/PME_TO_Ack is complete for the whole hierarchy, goes
inactive and triggers PME towards the root port bringing it back to D0.
The L2/L3 Ready sequence is described in PCIe r4.0 spec sections 5.2 and
5.3.3 but unfortunately they do not state what happens if DLLSCE is
enabled during the sequence.
Disabling Data Link Layer State Changed event (DLLSCE) seems to prevent
the issue and still allows the downstream hotplug port to notice when a
device is plugged/unplugged.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=202593 Fixes:
0e157e528604 ("PCI/PME: Implement runtime PM callbacks") Signed-off-by:
Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Bjorn
Helgaas <bhelgaas@google.com> Reviewed-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> CC: stable@vger.kernel.org # v4.20+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/hotplug/pciehp_hpc.c (diff)
Commit d011c7871d16e81168faaccce9a977499f8a5f97 by gregkh
PCI: pci-bridge-emul: Create per-bridge copy of register behavior
commit 59f81c35e0df840f7112cb296dde48df84a67c79 upstream.
The behavior of the different registers of the PCI-to-PCI bridge is
currently encoded in two global arrays, shared by all instances of
PCI-to-PCI bridge emulation.
However, we will need to tweak the behavior on a per-bridge basis, to
accommodate for different capabilities of the platforms where this code
is used. In preparation for this, create a per-bridge copy of the
register behavior arrays, so that they can later be tweaked on a
per-bridge basis.
Fixes: 1f08673eef123 ("PCI: mvebu: Convert to PCI emulated bridge config
space") Reported-by: Luís Mendes <luis.p.mendes@gmail.com> Reported-by:
Leigh Brown <leigh@solinno.co.uk> Tested-by: Leigh Brown
<leigh@solinno.co.uk> Tested-by: Luis Mendes <luis.p.mendes@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc:
stable@vger.kernel.org Cc: Luís Mendes <luis.p.mendes@gmail.com> Cc:
Leigh Brown <leigh@solinno.co.uk> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/pci-bridge-emul.h (diff)
The file was modifieddrivers/pci/pci-bridge-emul.c (diff)
Commit 2b9ef0bedaac2acc648a03bb519e4609661da6dc by gregkh
PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags
commit 33776d059630e5045ea9ccf756c74de8f9cc86de upstream.
Depending on the capabilities of the PCI controller/platform, the
PCI-to-PCI bridge emulation behavior might need to be different. For
example, on platforms that use the pci-mvebu code, we currently don't
support prefetchable memory BARs, so the corresponding fields in the
PCI-to-PCI bridge configuration space should be read-only.
To implement this, extend pci_bridge_emul_init() to take a "flags"
argument, with currently one flag supported:
PCI_BRIDGE_EMUL_NO_PREFETCHABLE_BAR
that will make the prefetchable memory base and limit registers
read-only.
The pci-mvebu and pci-aardvark drivers are updated accordingly.
Fixes: 1f08673eef123 ("PCI: mvebu: Convert to PCI emulated bridge config
space") Reported-by: Luís Mendes <luis.p.mendes@gmail.com> Reported-by:
Leigh Brown <leigh@solinno.co.uk> Tested-by: Leigh Brown
<leigh@solinno.co.uk> Tested-by: Luis Mendes <luis.p.mendes@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc:
stable@vger.kernel.org Cc: Luís Mendes <luis.p.mendes@gmail.com> Cc:
Leigh Brown <leigh@solinno.co.uk> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/controller/pci-aardvark.c (diff)
The file was modifieddrivers/pci/pci-bridge-emul.h (diff)
The file was modifieddrivers/pci/controller/pci-mvebu.c (diff)
The file was modifieddrivers/pci/pci-bridge-emul.c (diff)
Commit c8a23dfeb2d63e79a1cb60640007c04e6c4c39fb by gregkh
IB/hfi1: Close race condition on user context disable and close
commit bc5add09764c123f58942a37c8335247e683d234 upstream.
When disabling and removing a receive context, it is possible for an
asynchronous event (i.e IRQ) to occur.  Because of this, there is a race
between cleaning up the context, and the context being used by the
asynchronous event.
cpu 0  (context cleanup)
   rc->ref_count-- (ref_count == 0)
   hfi1_rcd_free() cpu 1  (IRQ (with rcd index))
rcd_get_by_index()
lock
ref_count+++     <-- reference count race (WARNING)
return rcd
unlock cpu 0
   hfi1_free_ctxtdata() <-- incorrect free location
   lock
   remove rcd from array
   unlock
   free rcd
This race will cause the following WARNING trace:
WARNING: CPU: 0 PID: 175027 at include/linux/kref.h:52
hfi1_rcd_get_by_index+0x84/0xa0 [hfi1] CPU: 0 PID: 175027 Comm: IMB-MPI1
Kdump: loaded Tainted: G OE ------------ 3.10.0-957.el7.x86_64 #1
Hardware name: Intel Corporation S2600KP/S2600KP, BIOS
SE5C610.86B.11.01.0076.C4.111920150602 11/19/2015 Call Trace:
dump_stack+0x19/0x1b
__warn+0xd8/0x100
warn_slowpath_null+0x1d/0x20
hfi1_rcd_get_by_index+0x84/0xa0 [hfi1]
is_rcv_urgent_int+0x24/0x90 [hfi1]
general_interrupt+0x1b6/0x210 [hfi1]
__handle_irq_event_percpu+0x44/0x1c0
handle_irq_event_percpu+0x32/0x80
handle_irq_event+0x3c/0x60
handle_edge_irq+0x7f/0x150
handle_irq+0xe4/0x1a0
do_IRQ+0x4d/0xf0
common_interrupt+0x162/0x162
The race can also lead to a use after free which could be similar to:
general protection fault: 0000 1 SMP CPU: 71 PID: 177147 Comm: IMB-MPI1
Kdump: loaded Tainted: G W OE ------------ 3.10.0-957.el7.x86_64 #1
Hardware name: Intel Corporation S2600KP/S2600KP, BIOS
SE5C610.86B.11.01.0076.C4.111920150602 11/19/2015 task: ffff9962a8098000
ti: ffff99717a508000 task.ti: ffff99717a508000 __kmalloc+0x94/0x230 Call
Trace:
? hfi1_user_sdma_process_request+0x9c8/0x1250 [hfi1]
hfi1_user_sdma_process_request+0x9c8/0x1250 [hfi1]
hfi1_aio_write+0xba/0x110 [hfi1]
do_sync_readv_writev+0x7b/0xd0
do_readv_writev+0xce/0x260
? handle_mm_fault+0x39d/0x9b0
? pick_next_task_fair+0x5f/0x1b0
? sched_clock_cpu+0x85/0xc0
? __schedule+0x13a/0x890
vfs_writev+0x35/0x60
SyS_writev+0x7f/0x110
system_call_fastpath+0x22/0x27
Use the appropriate kref API to verify access.
Reorder context cleanup to ensure context removal before cleanup occurs
correctly.
Cc: stable@vger.kernel.org # v4.14.0+ Fixes: f683c80ca68e ("IB/hfi1:
Resolve kernel panics by reference counting receive contexts")
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com> Signed-off-by:
Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Jason
Gunthorpe <jgg@mellanox.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/infiniband/hw/hfi1/hfi.h (diff)
The file was modifieddrivers/infiniband/hw/hfi1/init.c (diff)
Commit ada60723d7cd01d811d20144db50da96e633e8c2 by gregkh
IB/rdmavt: Fix loopback send with invalidate ordering
commit 38bbc9f0381550d1d227fc57afa08436e36b32fc upstream.
The IBTA spec notes:
o9-5.2.1: For any HCA which supports SEND with Invalidate, upon
receiving an IETH, the Invalidate operation must not take place until
after the normal transport header validation checks have been
successfully completed.
The rdmavt loopback code does the validation after the invalidate.
Fix by relocating the operation specific logic for all SEND variants
until after the validity checks.
Cc: <stable@vger.kernel.org> #v4.20+ Reviewed-by: Michael J. Ruhl
<michael.j.ruhl@intel.com> Signed-off-by: Mike Marciniszyn
<mike.marciniszyn@intel.com> Signed-off-by: Dennis Dalessandro
<dennis.dalessandro@intel.com> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/infiniband/sw/rdmavt/qp.c (diff)
Commit 25636de95557a95d54ac30be94af3748345a0a90 by gregkh
IB/rdmavt: Fix concurrency panics in QP post_send and modify to error
commit d757c60eca9b22f4d108929a24401e0fdecda0b1 upstream.
The RC/UC code path can go through a software loopback. In this code
path the receive side QP is manipulated.
If two threads are working on the QP receive side (i.e. post_send, and
modify_qp to an error state), QP information can be corrupted.
(post_send via loopback)
set r_sge
loop
    update r_sge
(modify_qp)
    take r_lock
    update r_sge <---- r_sge is now incorrect
(post_send)
    update r_sge <---- crash, etc.
    ...
This can lead to one of the two following crashes:
BUG: unable to handle kernel NULL pointer dereference at (null)
IP:  hfi1_copy_sge+0xf1/0x2e0 [hfi1]
PGD 8000001fe6a57067 PUD 1fd9e0c067 PMD 0
Call Trace:
ruc_loopback+0x49b/0xbc0 [hfi1]
hfi1_do_send+0x38e/0x3e0 [hfi1]
_hfi1_do_send+0x1e/0x20 [hfi1]
process_one_work+0x17f/0x440
worker_thread+0x126/0x3c0
kthread+0xd1/0xe0
ret_from_fork_nospec_begin+0x21/0x21
or:
BUG: unable to handle kernel NULL pointer dereference at
0000000000000048
IP:  rvt_clear_mr_refs+0x45/0x370 [rdmavt]
PGD 80000006ae5eb067 PUD ef15d0067 PMD 0
Call Trace:
rvt_error_qp+0xaa/0x240 [rdmavt]
rvt_modify_qp+0x47f/0xaa0 [rdmavt]
ib_security_modify_qp+0x8f/0x400 [ib_core]
ib_modify_qp_with_udata+0x44/0x70 [ib_core]
modify_qp.isra.23+0x1eb/0x2b0 [ib_uverbs]
ib_uverbs_modify_qp+0xaa/0xf0 [ib_uverbs]
ib_uverbs_write+0x272/0x430 [ib_uverbs]
vfs_write+0xc0/0x1f0
SyS_write+0x7f/0xf0
system_call_fastpath+0x1c/0x21
Fix by using the appropriate locking on the receiving QP.
Fixes: 15703461533a ("IB/{hfi1, qib, rdmavt}: Move ruc_loopback to
rdmavt") Cc: <stable@vger.kernel.org> #v4.9+ Reviewed-by: Mike
Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Michael J. Ruhl
<michael.j.ruhl@intel.com> Signed-off-by: Dennis Dalessandro
<dennis.dalessandro@intel.com> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/infiniband/sw/rdmavt/qp.c (diff)
Commit 96728f35572ebe2ce959a820cc981e5eec806139 by gregkh
cxl: Wrap iterations over afu slices inside 'afu_list_lock'
commit edeb304f659792fb5bab90d7d6f3408b4c7301fb upstream.
Within cxl module, iteration over array 'adapter->afu' may be racy at
few points as it might be simultaneously read during an EEH and its
contents being set to NULL while driver is being unloaded or unbound
from the adapter. This might result in a NULL pointer to 'struct afu'
being de-referenced during an EEH thereby causing a kernel oops.
This patch fixes this by making sure that all access to the array
'adapter->afu' is wrapped within the context of spin-lock
'adapter->afu_list_lock'.
Fixes: 9e8df8a21963 ("cxl: EEH support") Cc: stable@vger.kernel.org #
v4.3+ Acked-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Acked-by: Frederic Barrat <fbarrat@linux.ibm.com> Acked-by: Christophe
Lombard <clombard@linux.vnet.ibm.com> Signed-off-by: Vaibhav Jain
<vaibhav@linux.ibm.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/misc/cxl/pci.c (diff)
The file was modifieddrivers/misc/cxl/guest.c (diff)
Commit e1ac0077345670a71613dc8c92da3ae5c8bfd489 by gregkh
ext2: Fix underflow in ext2_max_size()
commit 1c2d14212b15a60300a2d4f6364753e87394c521 upstream.
When ext2 filesystem is created with 64k block size, ext2_max_size()
will return value less than 0. Also, we cannot write any file in this fs
since the sb->maxbytes is less than 0. The core of the problem is that
the size of block index tree for such large block size is more than
i_blocks can carry. So fix the computation to count with this
possibility.
File size limits computed with the new function for the full range of
possible block sizes look like:
bits file_size 10     17247252480 11    275415851008 12   2196873666560
13   2197948973056 14   2198486220800 15   2198754754560 16 
2198888906752
CC: stable@vger.kernel.org Reported-by: yangerkun <yangerkun@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/ext2/super.c (diff)
Commit a712a38100b569ddb5a55b421531f48dcd030b4b by gregkh
clk: uniphier: Fix update register for CPU-gear
commit 521282237b9d78b9bff423ec818becd4c95841c2 upstream.
Need to set the update bit in UNIPHIER_CLK_CPUGEAR_UPD to update the
CPU-gear value.
Fixes: d08f1f0d596c ("clk: uniphier: add CPU-gear change (cpufreq)
support") Cc: linux-stable@vger.kernel.org Signed-off-by: Kunihiko
Hayashi <hayashi.kunihiko@socionext.com> Acked-by: Masahiro Yamada
<yamada.masahiro@socionext.com> Signed-off-by: Stephen Boyd
<sboyd@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/uniphier/clk-uniphier-cpugear.c (diff)
Commit d9d7760c1e45ecb9c4c2e6a2d2668ad2bd10f10c by gregkh
clk: clk-twl6040: Fix imprecise external abort for pdmclk
commit 5ae51d67aec95f6f9386aa8dd5db424964895575 upstream.
I noticed that modprobe clk-twl6040 can fail after a cold boot with:
abe_cm:clk:0010:0: failed to enable
... Unhandled fault: imprecise external abort (0x1406) at 0xbe896b20
WARNING: CPU: 1 PID: 29 at drivers/clk/clk.c:828
clk_core_disable_lock+0x18/0x24
...
(clk_core_disable_lock) from [<c0123534>] (_disable_clocks+0x18/0x90)
(_disable_clocks) from [<c0124040>] (_idle+0x17c/0x244)
(_idle) from [<c0125ad4>] (omap_hwmod_idle+0x24/0x44)
(omap_hwmod_idle) from [<c053a038>] (sysc_runtime_suspend+0x48/0x108)
(sysc_runtime_suspend) from [<c06084c4>] (__rpm_callback+0x144/0x1d8)
(__rpm_callback) from [<c0608578>] (rpm_callback+0x20/0x80)
(rpm_callback) from [<c0607034>] (rpm_suspend+0x120/0x694)
(rpm_suspend) from [<c0607a78>] (__pm_runtime_idle+0x60/0x84)
(__pm_runtime_idle) from [<c053aaf0>] (sysc_probe+0x874/0xf2c)
(sysc_probe) from [<c05fecd4>] (platform_drv_probe+0x48/0x98)
After searching around for a similar issue, I came across an earlier fix
that never got merged upstream in the Android tree for glass-omap-xrr02.
There is patch "MFD: twl6040-codec: Implement PDMCLK cold temp errata"
by Misael Lopez Cruz <misael.lopez@ti.com>.
Based on my observations, this fix is also needed when cold booting
devices, and not just for deeper idle modes. Since we now have a clock
driver for pdmclk, let's fix the issue in twl6040_pdmclk_prepare().
Cc: Misael Lopez Cruz <misael.lopez@ti.com> Cc: Peter Ujfalusi
<peter.ujfalusi@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Cc:
<stable@vger.kernel.org> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/clk-twl6040.c (diff)
Commit 7da58ad824b10393f15a02375638945cbdde8389 by gregkh
clk: samsung: exynos5: Fix possible NULL pointer exception on
platform_device_alloc() failure
commit 5f0b6216ea381b43c0dff88702d6cc5673d63922 upstream.
During initialization of subdevices if platform_device_alloc() failed,
returned NULL pointer will be later dereferenced.  Add proper error
paths to exynos5_clk_register_subcmu().  The return value of this
function is still ignored because at this stage of init there is nothing
we can do.
Fixes: b06a532bf1fa ("clk: samsung: Add Exynos5 sub-CMU clock driver")
Cc: <stable@vger.kernel.org> Signed-off-by: Krzysztof Kozlowski
<krzk@kernel.org> Reviewed-by: Geert Uytterhoeven
<geert+renesas@glider.be> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/samsung/clk-exynos5-subcmu.c (diff)
Commit 1a29715073a181d6d41b8b6b1a9b7a3b67f4c0b9 by gregkh
clk: samsung: exynos5: Fix kfree() of const memory on setting
driver_override
commit 785c9f411eb2d9a6076d3511c631587d5e676bf3 upstream.
Platform driver driver_override field should not be initialized from
const memory because the core later kfree() it.  If driver_override is
manually set later through sysfs, kfree() of old value leads to:
    $ echo "new_value" > /sys/bus/platform/drivers/.../driver_override
    kernel BUG at ../mm/slub.c:3960!
   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
   ...
   (kfree) from [<c058e8c0>] (platform_set_driver_override+0x84/0xac)
   (platform_set_driver_override) from [<c058e908>]
(driver_override_store+0x20/0x34)
   (driver_override_store) from [<c031f778>]
(kernfs_fop_write+0x100/0x1dc)
   (kernfs_fop_write) from [<c0296de8>] (__vfs_write+0x2c/0x17c)
   (__vfs_write) from [<c02970c4>] (vfs_write+0xa4/0x188)
   (vfs_write) from [<c02972e8>] (ksys_write+0x4c/0xac)
   (ksys_write) from [<c0101000>] (ret_fast_syscall+0x0/0x28)
The clk-exynos5-subcmu driver uses override only for the purpose of
creating meaningful names for children devices (matching names of power
domains, e.g. DISP, MFC).  The driver_override was not developed for
this purpose so just switch to default names of devices to fix the
issue.
Fixes: b06a532bf1fa ("clk: samsung: Add Exynos5 sub-CMU clock driver")
Cc: <stable@vger.kernel.org> Signed-off-by: Krzysztof Kozlowski
<krzk@kernel.org> Reviewed-by: Geert Uytterhoeven
<geert+renesas@glider.be> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/samsung/clk-exynos5-subcmu.c (diff)
Commit 7d4966247a99b8d549a3301fe06310911db286b8 by gregkh
clk: ingenic: Fix round_rate misbehaving with non-integer dividers
commit bc5d922c93491878c44c9216e9d227c7eeb81d7f upstream.
Take a parent rate of 180 MHz, and a requested rate of 4.285715 MHz.
This results in a theorical divider of 41.999993 which is then rounded
up to 42. The .round_rate function would then return (180 MHz / 42) as
the clock, rounded down, so 4.285714 MHz.
Calling clk_set_rate on 4.285714 MHz would round the rate again, and
give a theorical divider of 42,0000028, now rounded up to 43, and the
rate returned would be (180 MHz / 43) which is 4.186046 MHz, aka. not
what we requested.
Fix this by rounding up the divisions.
Signed-off-by: Paul Cercueil <paul@crapouillou.net> Tested-by: Maarten
ter Huurne <maarten@treewalker.org> Cc: <stable@vger.kernel.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/ingenic/cgu.c (diff)
Commit f11fa22a7a5f9ddfa9fabcf919fad4728ea38acd by gregkh
clk: ingenic: Fix doc of ingenic_cgu_div_info
commit 7ca4c922aad2e3c46767a12f80d01c6b25337b59 upstream.
The 'div' field does not represent a number of bits used to divide
(understand: right-shift) the divider, but a number itself used to
divide the divider.
Signed-off-by: Paul Cercueil <paul@crapouillou.net> Signed-off-by:
Maarten ter Huurne <maarten@treewalker.org> Cc: <stable@vger.kernel.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/ingenic/cgu.h (diff)
Commit 07e326fd07d76449aa89053ef0f92fd6969e7115 by gregkh
usb: chipidea: tegra: Fix missed ci_hdrc_remove_device()
commit 563b9372f7ec57e44e8f9a8600c5107d7ffdd166 upstream.
The ChipIdea's platform device need to be unregistered on Tegra's driver
module removal.
Fixes: dfebb5f43a78827a ("usb: chipidea: Add support for
Tegra20/30/114/124") Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Acked-by: Peter Chen <peter.chen@nxp.com> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/chipidea/ci_hdrc_tegra.c (diff)
Commit 39367147f046bf92eef5a542bc1326d72658db6a by gregkh
usb: typec: tps6598x: handle block writes separately with plain-I2C
adapters
commit 8a863a608d47fa5d9dd15cf841817f73f804cf91 upstream.
Commit 1a2f474d328f handles block _reads_ separately with plain-I2C
adapters, but the problem described with regmap-i2c not handling SMBus
block transfers (i.e. read and writes) correctly also exists with
writes.
As workaround, this patch adds a block write function the same way
1a2f474d328f adds a block read function.
Fixes: 1a2f474d328f ("usb: typec: tps6598x: handle block reads
separately with plain-I2C adapters") Fixes: 0a4c005bd171 ("usb: typec:
driver for TI TPS6598x USB Power Delivery controllers") Signed-off-by:
Nikolaus Voss <nikolaus.voss@loewensteinmedical.de> Cc: stable
<stable@vger.kernel.org> Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/typec/tps6598x.c (diff)
Commit 37fe1d56aa2c19dc51022a6a884b7e65b821b3dd by gregkh
dmaengine: usb-dmac: Make DMAC system sleep callbacks explicit
commit d9140a0da4a230a03426d175145989667758aa6a upstream.
This commit fixes the issue that USB-DMAC hangs silently after system
resumes on R-Car Gen3 hence renesas_usbhs will not work correctly when
using USB-DMAC for bulk transfer e.g. ethernet or serial gadgets.
The issue can be reproduced by these steps:
1. modprobe g_serial
2. Suspend and resume system.
3. connect a usb cable to host side
4. Transfer data from Host to Target
5. cat /dev/ttyGS0 (Target side)
6. echo "test" > /dev/ttyACM0 (Host side)
The 'cat' will not result anything. However, system still can work
normally.
Currently, USB-DMAC driver does not have system sleep callbacks hence
this driver relies on the PM core to force runtime suspend/resume to
suspend and reinitialize USB-DMAC during system resume. After the commit
17218e0092f8 ("PM / genpd: Stop/start devices without
pm_runtime_force_suspend/resume()"), PM core will not force runtime
suspend/resume anymore so this issue happens.
To solve this, make system suspend resume explicit by using
pm_runtime_force_{suspend,resume}() as the system sleep callbacks.
SET_NOIRQ_SYSTEM_SLEEP_PM_OPS() is used to make sure USB-DMAC suspended
after and initialized before renesas_usbhs."
Signed-off-by: Phuong Nguyen <phuong.nguyen.xw@renesas.com>
Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Cc:
<stable@vger.kernel.org> # v4.16+
[shimoda: revise the commit log and add Cc tag] Signed-off-by: Yoshihiro
Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Vinod Koul
<vkoul@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/dma/sh/usb-dmac.c (diff)
Commit fa4d0361304f844f8536df0f826659e6ff54904d by gregkh
serial: uartps: Fix stuck ISR if RX disabled with non-empty FIFO
commit 7abab1605139bc41442864c18f9573440f7ca105 upstream.
If RX is disabled while there are still unprocessed bytes in RX FIFO,
cdns_uart_handle_rx() called from interrupt handler will get stuck in
the receive loop as read bytes will not get removed from the RX FIFO and
CDNS_UART_SR_RXEMPTY bit will never get set.
Avoid the stuck handler by checking first if RX is disabled. port->lock
protects against race with RX-disabling functions.
This HW behavior was mentioned by Nathan Rossi in 43e98facc4a3 ("tty:
xuartps: Fix RX hang, and TX corruption in termios call") which fixed a
similar issue in cdns_uart_set_termios(). The behavior can also be
easily verified by e.g. setting CDNS_UART_CR_RX_DIS at the beginning of
cdns_uart_handle_rx() - the following loop will then get stuck.
Resetting the FIFO using RXRST would not set RXEMPTY either so simply
issuing a reset after RX-disable would not work.
I observe this frequently on a ZynqMP board during heavy RX load at 1M
baudrate when the reader process exits and thus RX gets disabled.
Fixes: 61ec9016988f ("tty/serial: add support for Xilinx PS UART")
Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi> Cc:
stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/xilinx_uartps.c (diff)
Commit c7388ba1090255168aeec594a5b6fc7d7643ac4c by gregkh
serial: 8250_of: assume reg-shift of 2 for mrvl,mmp-uart
commit f4817843e39ce78aace0195a57d4e8500a65a898 upstream.
There are two other drivers that bind to mrvl,mmp-uart and both of them
assume register shift of 2 bits. There are device trees that lack the
property and rely on that assumption.
If this driver wins the race to bind to those devices, it should behave
the same as the older deprecated driver.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Cc:
stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/8250/8250_of.c (diff)
Commit 7271438208b6c7954d8b27364c955c8302f9e8ad by gregkh
serial: 8250_pci: Fix number of ports for ACCES serial cards
commit b896b03bc7fce43a07012cc6bf5e2ab2fddf3364 upstream.
Have the correct number of ports created for ACCES serial cards. Two
port cards show up as four ports, and four port cards show up as eight.
Fixes: c8d192428f52 ("serial: 8250: added acces i/o products quad and
octal serial cards") Signed-off-by: Jay Dolan <jay.dolan@accesio.com>
Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/8250/8250_pci.c (diff)
Commit bb47633ab15e32d5c5de9b4e97ad1f3867c07acc by gregkh
serial: 8250_pci: Have ACCES cards that use the four port Pericom
PI7C9X7954 chip use the pci_pericom_setup()
commit 78d3820b9bd39028727c6aab7297b63c093db343 upstream.
The four port Pericom chips have the fourth port at the wrong address.
Make use of quirk to fix it.
Fixes: c8d192428f52 ("serial: 8250: added acces i/o products quad and
octal serial cards") Cc: stable <stable@vger.kernel.org> Signed-off-by:
Jay Dolan <jay.dolan@accesio.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/8250/8250_pci.c (diff)
Commit 8c343062c8faf4e17c9c38c4bc850f557a6aed43 by gregkh
jbd2: clear dirty flag when revoking a buffer from an older transaction
commit 904cdbd41d749a476863a0ca41f6f396774f26e4 upstream.
Now, we capture a data corruption problem on ext4 while we're truncating
an extent index block. Imaging that if we are revoking a buffer which
has been journaled by the committing transaction, the buffer's jbddirty
flag will not be cleared in jbd2_journal_forget(), so the commit code
will set the buffer dirty flag again after refile the buffer.
fsx                               kjournald2
                                 jbd2_journal_commit_transaction
jbd2_journal_revoke                commit phase 1~5...
jbd2_journal_forget
  belongs to older transaction    commit phase 6
  jbddirty not clear               __jbd2_journal_refile_buffer
                                    __jbd2_journal_unfile_buffer
                                     test_clear_buffer_jbddirty
                                      mark_buffer_dirty
Finally, if the freed extent index block was allocated again as data
block by some other files, it may corrupt the file data after writing
cached pages later, such as during unmount time. (In general,
clean_bdev_aliases() related helpers should be invoked after
re-allocation to prevent the above corruption, but unfortunately we
missed it when zeroout the head of extra extent blocks in
ext4_ext_handle_unwritten_extents()).
This patch mark buffer as freed and set j_next_transaction to the new
transaction when it already belongs to the committing transaction in
jbd2_journal_forget(), so that commit code knows it should clear dirty
bits when it is done with the buffer.
This problem can be reproduced by xfstests generic/455 easily with seeds
(3246 3247 3248 3249).
Signed-off-by: zhangyi (F) <yi.zhang@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Reviewed-by: Jan Kara <jack@suse.cz> Cc:
stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/jbd2/transaction.c (diff)
Commit f9897a30deb7d93670d0bfd15f56a181158ccc41 by gregkh
jbd2: fix compile warning when using JBUFFER_TRACE
commit 01215d3edb0f384ddeaa5e4a22c1ae5ff634149f upstream.
The jh pointer may be used uninitialized in the two cases below and the
compiler complain about it when enabling JBUFFER_TRACE macro, fix them.
In file included from fs/jbd2/transaction.c:19:0: fs/jbd2/transaction.c:
In function ‘jbd2_journal_get_undo_access’:
./include/linux/jbd2.h:1637:38: warning: ‘jh’ is used uninitialized in
this function [-Wuninitialized]
#define JBUFFER_TRACE(jh, info) do { printk("%s: %d\n", __func__,
jh->b_jcount);} while (0)
                                     ^ fs/jbd2/transaction.c:1219:23:
note: ‘jh’ was declared here
struct journal_head *jh;
                      ^ In file included from
fs/jbd2/transaction.c:19:0: fs/jbd2/transaction.c: In function
‘jbd2_journal_dirty_metadata’:
./include/linux/jbd2.h:1637:38: warning: ‘jh’ may be used uninitialized
in this function [-Wmaybe-uninitialized]
#define JBUFFER_TRACE(jh, info) do { printk("%s: %d\n", __func__,
jh->b_jcount);} while (0)
                                     ^ fs/jbd2/transaction.c:1332:23:
note: ‘jh’ was declared here
struct journal_head *jh;
                      ^
Signed-off-by: zhangyi (F) <yi.zhang@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@vger.kernel.org Reviewed-by: Jan Kara
<jack@suse.cz> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/jbd2/transaction.c (diff)
Commit 7e30471146d2a450df421e2462ae220e8303a167 by gregkh
selinux: add the missing walk_size + len check in
selinux_sctp_bind_connect
commit 292c997a1970f8d1e1dfa354ed770a22f7b5a434 upstream.
As does in __sctp_connect(), when checking addrs in a while loop, after
get the addr len according to sa_family, it's necessary to do the check
walk_size + af->sockaddr_len > addrs_size to make sure it won't access
an out-of-bounds addr.
The same thing is needed in selinux_sctp_bind_connect(), otherwise an
out-of-bounds issue can be triggered:
  [14548.772313] BUG: KASAN: slab-out-of-bounds in
selinux_sctp_bind_connect+0x1aa/0x1f0
[14548.927083] Call Trace:
[14548.938072]  dump_stack+0x9a/0xe9
[14548.953015]  print_address_description+0x65/0x22e
[14548.996524]  kasan_report.cold.6+0x92/0x1a6
[14549.015335]  selinux_sctp_bind_connect+0x1aa/0x1f0
[14549.036947]  security_sctp_bind_connect+0x58/0x90
[14549.058142]  __sctp_setsockopt_connectx+0x5a/0x150 [sctp]
[14549.081650]  sctp_setsockopt.part.24+0x1322/0x3ce0 [sctp]
Cc: stable@vger.kernel.org Fixes: d452930fd3b9 ("selinux: Add SCTP
support") Reported-by: Chunyu Hu <chuhu@redhat.com> Signed-off-by: Xin
Long <lucien.xin@gmail.com> Reviewed-by: Marcelo Ricardo Leitner
<marcelo.leitner@gmail.com> Signed-off-by: Paul Moore
<paul@paul-moore.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsecurity/selinux/hooks.c (diff)
Commit 232aa30f16b95c0a6a5fb6fb1acffa52e8f8bd8f by gregkh
security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock
commit 3815a245b50124f0865415dcb606a034e97494d4 upstream.
In the case when we're reusing a superblock, selinux_sb_clone_mnt_opts()
fails to set set_kern_flags, with the result that
nfs_clone_sb_security() incorrectly clears NFS_CAP_SECURITY_LABEL.
The result is that if you mount the same NFS filesystem twice, NFS
security labels are turned off, even if they would work fine if you
mounted the filesystem only once.
("fixes" may be not exactly the right tag, it may be more like
"fixed-other-cases-but-missed-this-one".)
Cc: Scott Mayhew <smayhew@redhat.com> Cc: stable@vger.kernel.org Fixes:
0b4d3452b8b4 "security/selinux: allow security_sb_clone_mnt_opts..."
Signed-off-by: J. Bruce Fields <bfields@redhat.com> Acked-by: Stephen
Smalley <sds@tycho.nsa.gov> Signed-off-by: Paul Moore
<paul@paul-moore.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsecurity/selinux/hooks.c (diff)
Commit d0d33e87d1438384461596015a580dc51820d5d1 by gregkh
powerpc/32: Clear on-stack exception marker upon exception return
commit 9580b71b5a7863c24a9bd18bcd2ad759b86b1eff upstream.
Clear the on-stack STACK_FRAME_REGS_MARKER on exception exit in order to
avoid confusing stacktrace like the one below.
  Call Trace:
[c0e9dca0] [c01c42a0] print_address_description+0x64/0x2bc (unreliable)
[c0e9dcd0] [c01c4684] kasan_report+0xfc/0x180
[c0e9dd10] [c0895130] memchr+0x24/0x74
[c0e9dd30] [c00a9e38] msg_print_text+0x124/0x574
[c0e9dde0] [c00ab710] console_unlock+0x114/0x4f8
[c0e9de40] [c00adc60] vprintk_emit+0x188/0x1c4
--- interrupt: c0e9df00 at 0x400f330
     LR = init_stack+0x1f00/0x2000
[c0e9de80] [c00ae3c4] printk+0xa8/0xcc (unreliable)
[c0e9df20] [c0c27e44] early_irq_init+0x38/0x108
[c0e9df50] [c0c15434] start_kernel+0x310/0x488
[c0e9dff0] [00003484] 0x3484
With this patch the trace becomes:
  Call Trace:
[c0e9dca0] [c01c42c0] print_address_description+0x64/0x2bc (unreliable)
[c0e9dcd0] [c01c46a4] kasan_report+0xfc/0x180
[c0e9dd10] [c0895150] memchr+0x24/0x74
[c0e9dd30] [c00a9e58] msg_print_text+0x124/0x574
[c0e9dde0] [c00ab730] console_unlock+0x114/0x4f8
[c0e9de40] [c00adc80] vprintk_emit+0x188/0x1c4
[c0e9de80] [c00ae3e4] printk+0xa8/0xcc
[c0e9df20] [c0c27e44] early_irq_init+0x38/0x108
[c0e9df50] [c0c15434] start_kernel+0x310/0x488
[c0e9dff0] [00003484] 0x3484
Cc: stable@vger.kernel.org Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/entry_32.S (diff)
Commit 8d2cc8c1c4fec1c33376fd2ae01ac393720723ec by gregkh
powerpc/wii: properly disable use of BATs when requested.
commit 6d183ca8baec983dc4208ca45ece3c36763df912 upstream.
'nobats' kernel parameter or some options like CONFIG_DEBUG_PAGEALLOC
deny the use of BATS for mapping memory.
This patch makes sure that the specific wii RAM mapping function takes
it into account as well.
Fixes: de32400dd26e ("wii: use both mem1 and mem2 as ram") Cc:
stable@vger.kernel.org Reviewed-by: Jonathan Neuschafer
<j.neuschaefer@gmx.net> Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/embedded6xx/wii.c (diff)
Commit 16ee62368aaa56bc52793b563f93bf3ba7410c22 by gregkh
powerpc/powernv: Make opal log only readable by root
commit 7b62f9bd2246b7d3d086e571397c14ba52645ef1 upstream.
Currently the opal log is globally readable. It is kernel policy to
limit the visibility of physical addresses / kernel pointers to root.
Given this and the fact the opal log may contain this information it
would be better to limit the readability to root.
Fixes: bfc36894a48b ("powerpc/powernv: Add OPAL message log interface")
Cc: stable@vger.kernel.org # v3.15+ Signed-off-by: Jordan Niethe
<jniethe5@gmail.com> Reviewed-by: Stewart Smith <stewart@linux.ibm.com>
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/powernv/opal-msglog.c (diff)
Commit 3b218d244482379551a1c415c1f9d27f2c71b0b7 by gregkh
powerpc/83xx: Also save/restore SPRG4-7 during suspend
commit 36da5ff0bea2dc67298150ead8d8471575c54c7d upstream.
The 83xx has 8 SPRG registers and uses at least SPRG4 for DTLB handling
LRU.
Fixes: 2319f1239592 ("powerpc/mm: e300c2/c3/c4 TLB errata workaround")
Cc: stable@vger.kernel.org Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/83xx/suspend-asm.S (diff)
Commit f7d68a102ad4685b6c40c398185e585453754601 by gregkh
powerpc/kvm: Save and restore host AMR/IAMR/UAMOR
commit c3c7470c75566a077c8dc71dcf8f1948b8ddfab4 upstream.
When the hash MMU is active the AMR, IAMR and UAMOR are used for pkeys.
The AMR is directly writable by user space, and the UAMOR masks those
writes, meaning both registers are effectively user register state. The
IAMR is used to create an execute only key.
Also we must maintain the value of at least the AMR when running in
process context, so that any memory accesses done by the kernel on
behalf of the process are correctly controlled by the AMR.
Although we are correctly switching all registers when going into a
guest, on returning to the host we just write 0 into all regs, except on
Power9 where we restore the IAMR correctly.
This could be observed by a user process if it writes the AMR, then runs
a guest and we then return immediately to it without rescheduling.
Because we have written 0 to the AMR that would have the effect of
granting read/write permission to pages that the process was trying to
protect.
In addition, when using the Radix MMU, the AMR can prevent inadvertent
kernel access to userspace data, writing 0 to the AMR disables that
protection.
So save and restore AMR, IAMR and UAMOR.
Fixes: cf43d3b26452 ("powerpc: Enable pkey subsystem") Cc:
stable@vger.kernel.org # v4.16+ Signed-off-by: Russell Currey
<ruscur@russell.cc> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Acked-by: Paul Mackerras <paulus@ozlabs.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kvm/book3s_hv_rmhandlers.S (diff)
Commit 702c1ab420ab4265a98fa5a9eae7db20c2de52ff by gregkh
powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit
commit 19f8a5b5be2898573a5e1dc1db93e8d40117606a upstream.
Commit 24be85a23d1f ("powerpc/powernv: Clear PECE1 in LPCR via stop-api
only on Hotplug", 2017-07-21) added two calls to opal_slw_set_reg()
inside pnv_cpu_offline(), with the aim of changing the LPCR value in the
SLW image to disable wakeups from the decrementer while a CPU is
offline.  However, pnv_cpu_offline() gets called each time a secondary
CPU thread is woken up to participate in running a KVM guest, that is,
not just when a CPU is offlined.
Since opal_slw_set_reg() is a very slow operation (with observed
execution times around 20 milliseconds), this means that an offline
secondary CPU can often be busy doing the opal_slw_set_reg() call when
the primary CPU wants to grab all the secondary threads so that it can
run a KVM guest.  This leads to messages like "KVM: couldn't grab CPU n"
being printed and guest execution failing.
There is no need to reprogram the SLW image on every KVM guest entry and
exit.  So that we do it only when a CPU is really transitioning between
online and offline, this moves the calls to
pnv_program_cpu_hotplug_lpcr() into pnv_smp_cpu_kill_self().
Fixes: 24be85a23d1f ("powerpc/powernv: Clear PECE1 in LPCR via stop-api
only on Hotplug") Cc: stable@vger.kernel.org # v4.14+ Signed-off-by:
Paul Mackerras <paulus@ozlabs.org> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/powernv/idle.c (diff)
The file was modifiedarch/powerpc/include/asm/powernv.h (diff)
The file was modifiedarch/powerpc/platforms/powernv/smp.c (diff)
Commit 651db146179376b543d0ee159da8101c4080d3ad by gregkh
powerpc/64s/hash: Fix assert_slb_presence() use of the slbfee.
instruction
commit 7104dccfd052fde51eecc9972dad9c40bd3e0d11 upstream.
The slbfee. instruction must have bit 24 of RB clear, failure to do so
can result in false negatives that result in incorrect assertions.
This is not obvious from the ISA v3.0B document, which only says:
    The hardware ignores the contents of RB 36:38 40:63 -- p.1032
This patch fixes the bug and also clears all other bits from PPC bit
36-63, which is good practice when dealing with reserved or ignored
bits.
Fixes: e15a4fea4dee ("powerpc/64s/hash: Add some SLB debugging tests")
Cc: stable@vger.kernel.org # v4.20+ Reported-by: Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> Tested-by: Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> Signed-off-by: Nicholas Piggin
<npiggin@gmail.com> Reviewed-by: Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/mm/slb.c (diff)
Commit 55b852a06fe18acfb0cb684fbd3f3fbc75aa91a3 by gregkh
powerpc: Fix 32-bit KVM-PR lockup and host crash with MacOS guest
commit fe1ef6bcdb4fca33434256a802a3ed6aacf0bd2f upstream.
Commit 8792468da5e1 "powerpc: Add the ability to save FPU without giving
it up" unexpectedly removed the MSR_FE0 and MSR_FE1 bits from the
bitmask used to update the MSR of the previous thread in
__giveup_fpu() causing a KVM-PR MacOS guest to lockup and panic the host
kernel.
Leaving FE0/1 enabled means unrelated processes might receive FPEs when
they're not expecting them and crash. In particular if this happens to
init the host will then panic.
eg (transcribed):
qemu-system-ppc[837]: unhandled signal 8 at 12cc9ce4 nip 12cc9ce4 lr
12cc9ca4 code 0
systemd[1]: unhandled signal 8 at 202f02e0 nip 202f02e0 lr 001003d4
code 0
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
Reinstate these bits to the MSR bitmask to enable MacOS guests to run
under 32-bit KVM-PR once again without issue.
Fixes: 8792468da5e1 ("powerpc: Add the ability to save FPU without
giving it up") Cc: stable@vger.kernel.org # v4.6+ Signed-off-by: Mark
Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Michael
Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/process.c (diff)
Commit 4ca936a493606bea2224c3b3796235fd398f31d0 by gregkh
powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning
commit ca6d5149d2ad0a8d2f9c28cbe379802260a0a5e0 upstream.
GCC 8 warns about the logic in vr_get/set(), which with -Werror breaks
the build:
  In function ‘user_regset_copyin’,
     inlined from ‘vr_set’ at arch/powerpc/kernel/ptrace.c:628:9:
include/linux/regset.h:295:4: error: ‘memcpy’ offset [-527, -529] is
out of the bounds [0, 16] of object ‘vrsave’ with type ‘union
<anonymous>’ [-Werror=array-bounds]
arch/powerpc/kernel/ptrace.c: In function ‘vr_set’:
arch/powerpc/kernel/ptrace.c:623:5: note: ‘vrsave’ declared here
    } vrsave;
This has been identified as a regression in GCC, see GCC bug 88273.
However we can avoid the warning and also simplify the logic and make it
more robust.
Currently we pass -1 as end_pos to user_regset_copyout(). This says
"copy up to the end of the regset".
The definition of the regset is:
[REGSET_VMX] = {
.core_note_type = NT_PPC_VMX, .n = 34,
.size = sizeof(vector128), .align = sizeof(vector128),
.active = vr_active, .get = vr_get, .set = vr_set
},
The end is calculated as (n * size), ie. 34 * sizeof(vector128).
In vr_get/set() we pass start_pos as 33 * sizeof(vector128), meaning we
can copy up to sizeof(vector128) into/out-of vrsave.
The on-stack vrsave is defined as:
union {
  elf_vrreg_t reg;
  u32 word;
} vrsave;
And elf_vrreg_t is:
typedef __vector128 elf_vrreg_t;
So there is no bug, but we rely on all those sizes lining up, otherwise
we would have a kernel stack exposure/overwrite on our hands.
Rather than relying on that we can pass an explict end_pos based on the
sizeof(vrsave). The result should be exactly the same but it's more
obviously not over-reading/writing the stack and it avoids the compiler
warning.
Reported-by: Meelis Roos <mroos@linux.ee> Reported-by: Mathieu Malaterre
<malat@debian.org> Cc: stable@vger.kernel.org Tested-by: Mathieu
Malaterre <malat@debian.org> Tested-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/ptrace.c (diff)
Commit fcf1ca937f59cee7dbaac4aabca45ebd95997aba by gregkh
powerpc/hugetlb: Don't do runtime allocation of 16G pages in LPAR
configuration
commit 35f2806b481f5b9207f25e1886cba5d1c4d12cc7 upstream.
We added runtime allocation of 16G pages in commit 4ae279c2c96a
("powerpc/mm/hugetlb: Allow runtime allocation of 16G.") That was done
to enable 16G allocation on PowerNV and KVM config. In case of KVM
config, we mostly would have the entire guest RAM backed by 16G hugetlb
pages for this to work. PAPR do support partial backing of guest RAM
with hugepages via ibm,expected#pages node of memory node in the device
tree. This means rest of the guest RAM won't be backed by 16G contiguous
pages in the host and hence a hash page table insertion can fail in such
case.
An example error message will look like
  hash-mmu: mm: Hashing failure ! EA=0x7efc00000000
access=0x8000000000000006 current=readback
hash-mmu:     trap=0x300 vsid=0x67af789 ssize=1 base psize=14 psize 14
pte=0xc000000400000386
readback[12260]: unhandled signal 7 at 00007efc00000000 nip
00000000100012d0 lr 000000001000127c code 2
This patch address that by preventing runtime allocation of 16G
hugepages in LPAR config. To allocate 16G hugetlb one need to kernel
command line hugepagesz=16G hugepages=<number of 16G pages>
With radix translation mode we don't run into this issue.
This change will prevent runtime allocation of 16G hugetlb pages on kvm
with hash translation mode. However, with the current upstream it was
observed that 16G hugetlbfs backed guest doesn't boot at all.
We observe boot failure with the below message:
[131354.647546] KVM: map_vrma at 0 failed, ret=-4
That means this patch is not resulting in an observable regression. Once
we fix the boot issue with 16G hugetlb backed memory, we need to use
ibm,expected#pages memory node attribute to indicate 16G page
reservation to the guest. This will also enable partial backing of guest
RAM with 16G pages.
Fixes: 4ae279c2c96a ("powerpc/mm/hugetlb: Allow runtime allocation of
16G.") Cc: stable@vger.kernel.org # v4.14+ Signed-off-by: Aneesh Kumar
K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/include/asm/book3s/64/hugetlb.h (diff)
Commit 850a95bf2a4626745d7a4de59fb08d23a93f305f by gregkh
powerpc/smp: Fix NMI IPI timeout
commit 1b5fc84aba170bdfe3533396ca9662ceea1609b7 upstream.
The NMI IPI timeout logic is broken, if __smp_send_nmi_ipi() times out
on the first condition, delay_us will be zero which will send it into
the second spin loop with no timeout so it will spin forever.
Fixes: 5b73151fff63 ("powerpc: NMI IPI make NMI IPIs fully sychronous")
Cc: stable@vger.kernel.org # v4.19+ Signed-off-by: Nicholas Piggin
<npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/smp.c (diff)
Commit 71bb4d02441620f983e119edae46d2bbe1f459f5 by gregkh
powerpc/smp: Fix NMI IPI xmon timeout
commit 88b9a3d1425a436e95c41f09986fdae2daee437a upstream.
The xmon debugger IPI handler waits in the callback function while xmon
is still active. This means they don't complete the IPI, and the
initiator always times out waiting for them.
Things manage to work after the timeout because there is some fallback
logic to keep NMI IPI state sane in case of the timeout, but this is a
bit ugly.
This patch changes NMI IPI back to half-asynchronous (i.e., wait for
everyone to call in, do not wait for IPI function to complete), but the
complexity is avoided by going one step further and allowing new IPIs to
be issued before the IPI functions to all complete.
If synchronization against that is required, it is left up to the
caller, but current callers don't require that. In fact with the timeout
handling, callers must be able to cope with this already.
Fixes: 5b73151fff63 ("powerpc: NMI IPI make NMI IPIs fully sychronous")
Cc: stable@vger.kernel.org # v4.19+ Signed-off-by: Nicholas Piggin
<npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/smp.c (diff)
Commit 24bf608e74387d8ac6e617302aa1c4f536d12277 by gregkh
powerpc/traps: fix recoverability of machine check handling on book3s/32
commit 0bbea75c476b77fa7d7811d6be911cc7583e640f upstream.
Looks like book3s/32 doesn't set RI on machine check, so checking RI
before calling die() will always be fatal allthought this is not an
issue in most cases.
Fixes: b96672dd840f ("powerpc: Machine check interrupt is a non-maskable
interrupt") Fixes: daf00ae71dad ("powerpc/traps: restore recoverability
of machine_check interrupts") Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr> Cc: stable@vger.kernel.org Signed-off-by:
Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/traps.c (diff)
Commit 6a4c3ab2d53e6e144898a98a9495ae629e75683e by gregkh
powerpc/traps: Fix the message printed when stack overflows
commit 9bf3d3c4e4fd82c7174f4856df372ab2a71005b9 upstream.
Today's message is useless:
  [   42.253267] Kernel stack overflow in process (ptrval), r1=c65500b0
This patch fixes it:
  [   66.905235] Kernel stack overflow in process sh[356], r1=c65560b0
Fixes: ad67b74d2469 ("printk: hash addresses printed with %p") Cc:
stable@vger.kernel.org # v4.15+ Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr>
[mpe: Use task_pid_nr()] Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/traps.c (diff)
Commit 8f67dd8570ac05366b06b7de00b5a1cc192b15de by gregkh
ARM: s3c24xx: Fix boolean expressions in osiris_dvs_notify
commit e2477233145f2156434afb799583bccd878f3e9f upstream.
Fix boolean expressions by using logical AND operator '&&' instead of
bitwise operator '&'.
This issue was detected with the help of Coccinelle.
Fixes: 4fa084af28ca ("ARM: OSIRIS: DVS (Dynamic Voltage Scaling)
supoort.") Cc: stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com>
[krzk: Fix -Wparentheses warning] Signed-off-by: Krzysztof Kozlowski
<krzk@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm/mach-s3c24xx/mach-osiris-dvs.c (diff)
Commit 9afab3b6b9c549ea84ad2812559f7ab986808f5a by gregkh
arm64: Fix HCR.TGE status for NMI contexts
commit 5870970b9a828d8693aa6d15742573289d7dbcd0 upstream.
When using VHE, the host needs to clear HCR_EL2.TGE bit in order to
interact with guest TLBs, switching from EL2&0 translation regime to
EL1&0.
However, some non-maskable asynchronous event could happen while TGE is
cleared like SDEI. Because of this address translation operations
relying on EL2&0 translation regime could fail (tlb invalidation,
userspace access, ...).
Fix this by properly setting HCR_EL2.TGE when entering NMI context and
clear it if necessary when returning to the interrupted context.
Signed-off-by: Julien Thierry <julien.thierry@arm.com> Suggested-by:
Marc Zyngier <marc.zyngier@arm.com> Reviewed-by: Marc Zyngier
<marc.zyngier@arm.com> Reviewed-by: James Morse <james.morse@arm.com>
Cc: Arnd Bergmann <arnd@arndb.de> Cc: Will Deacon <will.deacon@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: James Morse
<james.morse@arm.com> Cc: linux-arch@vger.kernel.org Cc:
stable@vger.kernel.org Signed-off-by: Catalin Marinas
<catalin.marinas@arm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/hardirq.h (diff)
The file was modifiedarch/arm64/include/asm/hardirq.h (diff)
The file was modifiedarch/arm64/kernel/irq.c (diff)
Commit 4f771d8acc7452b6900a02df3235dd67c064b52d by gregkh
arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals
commit b9a4b9d084d978f80eb9210727c81804588b42ff upstream.
FAR_EL1 is UNKNOWN for all debug exceptions other than those caused by
taking a hardware watchpoint. Unfortunately, if a debug handler returns
a non-zero value, then we will propagate the UNKNOWN FAR value to
userspace via the si_addr field of the SIGTRAP siginfo_t.
Instead, let's set si_addr to take on the PC of the faulting
instruction, which we have available in the current pt_regs.
Cc: <stable@vger.kernel.org> Reviewed-by: Mark Rutland
<mark.rutland@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/mm/fault.c (diff)
Commit 4b6d75b38664ab8869e99b80b5ff1911209cbe59 by gregkh
arm64: debug: Ensure debug handlers check triggering exception level
commit 6bd288569b50bc89fa5513031086746968f585cb upstream.
Debug exception handlers may be called for exceptions generated both by
user and kernel code. In many cases, this is checked explicitly, but in
other cases things either happen to work by happy accident or they go
slightly wrong. For example, executing 'brk #4' from userspace will
enter the kprobes code and be ignored, but the instruction will be
retried forever in userspace instead of delivering a SIGTRAP.
Fix this issue in the most stable-friendly fashion by simply adding
explicit checks of the triggering exception level to all of our debug
exception handlers.
Cc: <stable@vger.kernel.org> Reviewed-by: Mark Rutland
<mark.rutland@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/kernel/kgdb.c (diff)
The file was modifiedarch/arm64/kernel/probes/kprobes.c (diff)
Commit bf5615991a915bfce37a6abdd8419325a4ac2f9a by gregkh
arm64: KVM: Fix architecturally invalid reset value for FPEXC32_EL2
commit c88b093693ccbe41991ef2e9b1d251945e6e54ed upstream.
Due to what looks like a typo dating back to the original addition of
FPEXC32_EL2 handling, KVM currently initialises this register to an
architecturally invalid value.
As a result, the VECITR field (RES1) in bits [10:8] is initialised with
0, and the two reserved (RES0) bits [6:5] are initialised with 1.  (In
the Common VFP Subarchitecture as specified by ARMv7-A, these two bits
were IMP DEF.  ARMv8-A removes them.)
This patch changes the reset value from 0x70 to 0x700, which reflects
the architectural constraints and is presumably what was originally
intended.
Cc: <stable@vger.kernel.org> # 4.12.x- Cc: Christoffer Dall
<christoffer.dall@arm.com> Fixes: 62a89c44954f ("arm64: KVM: 32bit
handling of coprocessor traps") Signed-off-by: Dave Martin
<Dave.Martin@arm.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/kvm/sys_regs.c (diff)
Commit 98ab3b877400c2cbd025c112fb3d2b759f067193 by gregkh
Revert "KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()"
commit 92da008fa21034c369cdb8ca2b629fe5c196826b upstream.
This reverts commit 71883a62fcd6c70639fa12cda733378b4d997409.
The above commit contains an optimization to kvm_zap_gfn_range which
uses gfn-limited TLB flushes, if enabled. If using these limited
flushes, kvm_zap_gfn_range passes lock_flush_tlb=false to
slot_handle_level_range which creates a race when the function unlocks
to call cond_resched. See an example of this race below:
CPU 0                   CPU 1                           CPU 3
// zap_direct_gfn_range mmu_lock()
// *ptep == pte_1
*ptep = 0 if (lock_flush_tlb)
       flush_tlbs() mmu_unlock()
                       // In invalidate range
                       // MMU notifier
                       mmu_lock()
                       if (pte != 0)
                               *ptep = 0
                               flush = true
                       if (flush)
                               flush_remote_tlbs()
                       mmu_unlock()
                       return
                       // Host MM reallocates
                       // page previously
                       // backing guest memory.
                                                       // Guest accesses
                                                       // invalid page
                                                       // through pte_1
                                                       // in its TLB!!
Tested: Ran all kvm-unit-tests on a Intel Haswell machine with and
without this patch. The patch introduced no new failures.
Signed-off-by: Ben Gardon <bgardon@google.com> Cc:
stable@vger.kernel.org Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/mmu.c (diff)
Commit d3432e5d0831f3dd1cd850ec45b5073eaabece63 by gregkh
ipmi_si: Fix crash when using hard-coded device
commit 41b766d661bf94a364960862cfc248a78313dbd3 upstream.
When excuting a command like:
modprobe ipmi_si ports=0xffc0e3 type=bt The system would get an oops.
The trouble here is that ipmi_si_hardcode_find_bmc() is called before
ipmi_si_platform_init(), but initialization of the hard-coded device
creates an IPMI platform device, which won't be initialized yet.
The real trouble is that hard-coded devices aren't created with any
device, and the fixup is done later.  So do it right, create the
hard-coded devices as normal platform devices.
This required adding some new resource types to the IPMI platform code
for passing information required by the hard-coded device and adding
some code to remove the hard-coded platform devices on module removal.
To enforce the "hard-coded devices passed by the user take priority over
firmware devices" rule, some special code was added to check and see if
a hard-coded device already exists.
Reported-by: Yang Yingliang <yangyingliang@huawei.com> Cc:
stable@vger.kernel.org # v4.15+ Signed-off-by: Corey Minyard
<cminyard@mvista.com> Tested-by: Yang Yingliang
<yangyingliang@huawei.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/char/ipmi/ipmi_si_hardcode.c (diff)
The file was modifieddrivers/char/ipmi/ipmi_si.h (diff)
The file was modifieddrivers/char/ipmi/ipmi_si_platform.c (diff)
The file was modifieddrivers/char/ipmi/ipmi_si_intf.c (diff)
Commit a8964a63780ce3ea4ada492cfe8edef9c1336022 by gregkh
ipmi_si: fix use-after-free of resource->name
commit 401e7e88d4ef80188ffa07095ac00456f901b8c4 upstream.
When we excute the following commands, we got oops rmmod ipmi_si cat
/proc/ioports
[ 1623.482380] Unable to handle kernel paging request at virtual address
ffff00000901d478
[ 1623.482382] Mem abort info:
[ 1623.482383]   ESR = 0x96000007
[ 1623.482385]   Exception class = DABT (current EL), IL = 32 bits
[ 1623.482386]   SET = 0, FnV = 0
[ 1623.482387]   EA = 0, S1PTW = 0
[ 1623.482388] Data abort info:
[ 1623.482389]   ISV = 0, ISS = 0x00000007
[ 1623.482390]   CM = 0, WnR = 0
[ 1623.482393] swapper pgtable: 4k pages, 48-bit VAs, pgdp =
00000000d7d94a66
[ 1623.482395] [ffff00000901d478] pgd=000000dffbfff003,
pud=000000dffbffe003, pmd=0000003f5d06e003, pte=0000000000000000
[ 1623.482399] Internal error: Oops: 96000007 [#1] SMP
[ 1623.487407] Modules linked in: ipmi_si(E) nls_utf8 isofs rpcrdma
ib_iser ib_srpt target_core_mod ib_srp scsi_transport_srp ib_ipoib
rdma_ucm ib_umad rdma_cm ib_cm dm_mirror dm_region_hash dm_log iw_cm
dm_mod aes_ce_blk crypto_simd cryptd aes_ce_cipher ses ghash_ce sha2_ce
enclosure sha256_arm64 sg sha1_ce hisi_sas_v2_hw hibmc_drm sbsa_gwdt
hisi_sas_main ip_tables mlx5_ib ib_uverbs marvell ib_core mlx5_core
ixgbe mdio hns_dsaf ipmi_devintf hns_enet_drv ipmi_msghandler hns_mdio
[last unloaded: ipmi_si]
[ 1623.532410] CPU: 30 PID: 11438 Comm: cat Kdump: loaded Tainted: G   
       E     5.0.0-rc3+ #168
[ 1623.541498] Hardware name: Huawei TaiShan 2280 /BC11SPCD, BIOS 1.37
11/21/2017
[ 1623.548822] pstate: a0000005 (NzCv daif -PAN -UAO)
[ 1623.553684] pc : string+0x28/0x98
[ 1623.557040] lr : vsnprintf+0x368/0x5e8
[ 1623.560837] sp : ffff000013213a80
[ 1623.564191] x29: ffff000013213a80 x28: ffff00001138abb5
[ 1623.569577] x27: ffff000013213c18 x26: ffff805f67d06049
[ 1623.574963] x25: 0000000000000000 x24: ffff00001138abb5
[ 1623.580349] x23: 0000000000000fb7 x22: ffff0000117ed000
[ 1623.585734] x21: ffff000011188fd8 x20: ffff805f67d07000
[ 1623.591119] x19: ffff805f67d06061 x18: ffffffffffffffff
[ 1623.596505] x17: 0000000000000200 x16: 0000000000000000
[ 1623.601890] x15: ffff0000117ed748 x14: ffff805f67d07000
[ 1623.607276] x13: ffff805f67d0605e x12: 0000000000000000
[ 1623.612661] x11: 0000000000000000 x10: 0000000000000000
[ 1623.618046] x9 : 0000000000000000 x8 : 000000000000000f
[ 1623.623432] x7 : ffff805f67d06061 x6 : fffffffffffffffe
[ 1623.628817] x5 : 0000000000000012 x4 : ffff00000901d478
[ 1623.634203] x3 : ffff0a00ffffff04 x2 : ffff805f67d07000
[ 1623.639588] x1 : ffff805f67d07000 x0 : ffffffffffffffff
[ 1623.644974] Process cat (pid: 11438, stack limit =
0x000000008d4cbc10)
[ 1623.651592] Call trace:
[ 1623.654068]  string+0x28/0x98
[ 1623.657071]  vsnprintf+0x368/0x5e8
[ 1623.660517]  seq_vprintf+0x70/0x98
[ 1623.668009]  seq_printf+0x7c/0xa0
[ 1623.675530]  r_show+0xc8/0xf8
[ 1623.682558]  seq_read+0x330/0x440
[ 1623.689877]  proc_reg_read+0x78/0xd0
[ 1623.697346]  __vfs_read+0x60/0x1a0
[ 1623.704564]  vfs_read+0x94/0x150
[ 1623.711339]  ksys_read+0x6c/0xd8
[ 1623.717939]  __arm64_sys_read+0x24/0x30
[ 1623.725077]  el0_svc_common+0x120/0x148
[ 1623.732035]  el0_svc_handler+0x30/0x40
[ 1623.738757]  el0_svc+0x8/0xc
[ 1623.744520] Code: d1000406 aa0103e2 54000149 b4000080 (39400085)
[ 1623.753441] ---[ end trace f91b6a4937de9835 ]---
[ 1623.760871] Kernel panic - not syncing: Fatal exception
[ 1623.768935] SMP: stopping secondary CPUs
[ 1623.775718] Kernel Offset: disabled
[ 1623.781998] CPU features: 0x002,21006008
[ 1623.788777] Memory Limit: none
[ 1623.798329] Starting crashdump kernel...
[ 1623.805202] Bye!
If io_setup is called successful in try_smi_init() but try_smi_init()
goes out_err before calling ipmi_register_smi(), so
ipmi_unregister_smi() will not be called while removing module. It leads
to the resource that allocated in io_setup() can not be freed, but the
name(DEVICE_NAME) of resource is freed while removing the module. It
causes use-after-free when cat /proc/ioports.
Fix this by calling io_cleanup() while try_smi_init() goes to out_err.
and don't call io_cleanup() until io_setup() returns successful to avoid
warning prints.
Fixes: 93c303d2045b ("ipmi_si: Clean up shutdown a bit") Cc:
stable@vger.kernel.org Reported-by: NuoHan Qiao <qiaonuohan@huawei.com>
Suggested-by: Corey Minyard <cminyard@mvista.com> Signed-off-by: Yang
Yingliang <yangyingliang@huawei.com> Signed-off-by: Corey Minyard
<cminyard@mvista.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/char/ipmi/ipmi_si_port_io.c (diff)
The file was modifieddrivers/char/ipmi/ipmi_si_mem_io.c (diff)
The file was modifieddrivers/char/ipmi/ipmi_si_intf.c (diff)
Commit dca22c59e47e2af32943c471aa879fa9ba20baf0 by gregkh
dm: fix to_sector() for 32bit
commit 0bdb50c531f7377a9da80d3ce2d61f389c84cb30 upstream.
A dm-raid array with devices larger than 4GB won't assemble on a 32 bit
host since _check_data_dev_sectors() was added in 4.16. This is because
to_sector() treats its argument as an "unsigned long" which is 32bits
(4GB) on a 32bit host.  Using "unsigned long long" is more correct.
Kernels as early as 4.2 can have other problems due to to_sector() being
used on the size of a device.
Fixes: 0cf4503174c1 ("dm raid: add support for the MD RAID0
personality") cc: stable@vger.kernel.org (v4.2+) Reported-and-tested-by:
Guillaume Perréal <gperreal@free.fr> Signed-off-by: NeilBrown
<neil@brown.name> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/device-mapper.h (diff)
Commit b6246ffae5a0e05878afd0079ff6a9c76df865ec by gregkh
dm integrity: limit the rate of error messages
commit 225557446856448039a9e495da37b72c20071ef2 upstream.
When using dm-integrity underneath md-raid, some tests with raid
auto-correction trigger large amounts of integrity failures - and all
these failures print an error message. These messages can bring the
system to a halt if the system is using serial console.
Fix this by limiting the rate of error messages - it improves the speed
of raid recovery and avoids the hang.
Fixes: 7eada909bfd7a ("dm: add integrity target") Cc:
stable@vger.kernel.org # v4.12+ Signed-off-by: Mikulas Patocka
<mpatocka@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/dm-integrity.c (diff)
Commit 83df21c731e632254232ffa980f9244ca10dcfb0 by gregkh
media: cx25840: mark pad sig_types to fix cx231xx init
commit 46c039d06b6ecabb94bd16c3a999b28dc83b79ce upstream.
Without this, we get failures like this when the kernel attempts to
initialize a cx231xx device:
[16046.153653] cx231xx 3-1.2:1.1: New device Hauppauge Hauppauge
Device @ 480 Mbps (2040:c200) with 6 interfaces
[16046.153900] cx231xx 3-1.2:1.1: can't change interface 3 alt no. to 3:
Max. Pkt size = 0
[16046.153907] cx231xx 3-1.2:1.1: Identified as Hauppauge USB Live 2
(card=9)
[16046.154350] i2c i2c-11: Added multiplexed i2c bus 13
[16046.154379] i2c i2c-11: Added multiplexed i2c bus 14
[16046.267194] cx25840 10-0044: cx23102 A/V decoder found @ 0x88
(cx231xx #0-0)
[16048.424551] cx25840 10-0044: loaded v4l-cx231xx-avcore-01.fw firmware
(16382 bytes)
[16048.463224] cx231xx 3-1.2:1.1: v4l2 driver version 0.0.3
[16048.567878] cx231xx 3-1.2:1.1: Registered video device video2 [v4l2]
[16048.568001] cx231xx 3-1.2:1.1: Registered VBI device vbi0
[16048.568419] cx231xx 3-1.2:1.1: audio EndPoint Addr 0x83, Alternate
settings: 3
[16048.568425] cx231xx 3-1.2:1.1: video EndPoint Addr 0x84, Alternate
settings: 5
[16048.568431] cx231xx 3-1.2:1.1: VBI EndPoint Addr 0x85, Alternate
settings: 2
[16048.568436] cx231xx 3-1.2:1.1: sliced CC EndPoint Addr 0x86,
Alternate settings: 2
[16048.568448] usb 3-1.2: couldn't get decoder output pad for V4L I/O
[16048.568453] cx231xx 3-1.2:1.1: V4L2 device vbi0 deregistered
[16048.568579] cx231xx 3-1.2:1.1: V4L2 device video2 deregistered
[16048.569001] cx231xx: probe of 3-1.2:1.1 failed with error -22
Likely a regession since Commit 9d6d20e652c0
("media: v4l2-mc: switch it to use the new approach to setup pipelines")
(v4.19-rc1-100-g9d6d20e652c0), which introduced the use of PAD_SIGNAL_DV
within v4l2_mc_create_media_graph().
This also modifies cx25840 to remove the VBI pad, matching the action
taken in Commit 092a37875a22 ("media: v4l2: remove VBI output pad").
Fixes: 9d6d20e652c0 ("media: v4l2-mc: switch it to use the new approach
to setup pipelines")
Cc: stable@vger.kernel.org Signed-off-by: Cody P Schafer
<dev@codyps.com> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by:
Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/media/i2c/cx25840/cx25840-core.h (diff)
The file was modifieddrivers/media/i2c/cx25840/cx25840-core.c (diff)
Commit 9cc42d068f57ed5bf15ec626f20d256cfffc5d1c by gregkh
mfd: sm501: Fix potential NULL pointer dereference
commit ae7b8eda27b33b1f688dfdebe4d46f690a8f9162 upstream.
There is a potential NULL pointer dereference in case devm_kzalloc()
fails and returns NULL.
Fix this by adding a NULL check on *lookup*
This bug was detected with the help of Coccinelle.
Fixes: b2e63555592f ("i2c: gpio: Convert to use descriptors") Cc:
stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mfd/sm501.c (diff)
Commit 6eea03f8c368b79f8b8ca0fbe4cbe23ce51cb843 by gregkh
cpcap-charger: generate events for userspace
commit fd10606f93a149a9f3d37574e5385b083b4a7b32 upstream.
The driver doesn't generate uevents on charger connect/disconnect. This
leads to UPower not detecting when AC is on or off... and that is bad.
Reported by Arthur D. on github (
https://github.com/maemo-leste/bugtracker/issues/206 ), thanks to
Merlijn Wajer for suggesting a fix.
Cc: stable@kernel.org Signed-off-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian
Reichel <sebastian.reichel@collabora.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/power/supply/cpcap-charger.c (diff)
Commit b41991d86722d6557ca9e4509313d894c9fdc46b by gregkh
cpuidle: governor: Add new governors to cpuidle_governors again
commit 22782b3f9bb8ae21c710e2880db21bc729771e92 upstream.
After commit 61cb5758d3c4 ("cpuidle: Add cpuidle.governor= command line
parameter") new cpuidle governors are not added to the list of available
governors, so governor selection via sysfs doesn't work as expected
(even though it is rarely used anyway).
Fix that by making cpuidle_register_governor() add new governors to
cpuidle_governors again.
Fixes: 61cb5758d3c4 ("cpuidle: Add cpuidle.governor= command line
parameter") Reported-by: Kees Cook <keescook@chromium.org> Cc: 5.0+
<stable@vger.kernel.org> # 5.0+ Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/cpuidle/governor.c (diff)
Commit e83b6ac7deed44e09f45bf13e837cd9e3ce23256 by gregkh
NFS: Fix I/O request leakages
commit f57dcf4c72113c745d83f1c65f7291299f65c14f upstream.
When we fail to add the request to the I/O queue, we currently leave it
to the caller to free the failed request. However since some of the
requests that fail are actually created by nfs_pageio_add_request()
itself, and are not passed back the caller, this leads to a leakage
issue, which can again cause page locks to leak.
This commit addresses the leakage by freeing the created requests on
error, using desc->pg_completion_ops->error_cleanup()
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Fixes:
a7d42ddb30997 ("nfs: add mirroring support to pgio layer") Cc:
stable@vger.kernel.org # v4.0: c18b96a1b862: nfs: clean up rest of reqs
Cc: stable@vger.kernel.org # v4.0: d600ad1f2bdb: NFS41: pop some
layoutget Cc: stable@vger.kernel.org # v4.0+ Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/pagelist.c (diff)
Commit 4fe2a7fda78a7275cd695e0219260d3a5572bc24 by gregkh
NFS: Fix an I/O request leakage in nfs_do_recoalesce
commit 4d91969ed4dbcefd0e78f77494f0cb8fada9048a upstream.
Whether we need to exit early, or just reprocess the list, we must not
lost track of the request which failed to get recoalesced.
Fixes: 03d5eb65b538 ("NFS: Fix a memory leak in nfs_do_recoalesce")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Cc:
stable@vger.kernel.org # v4.0+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/pagelist.c (diff)
Commit 88f786a8e78a091e10a58cb794fb5637feaa82d0 by gregkh
NFS: Don't recoalesce on error in nfs_pageio_complete_mirror()
commit 8127d82705998568b52ac724e28e00941538083d upstream.
If the I/O completion failed with a fatal error, then we should just
exit nfs_pageio_complete_mirror() rather than try to recoalesce.
Fixes: a7d42ddb3099 ("nfs: add mirroring support to pgio layer")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Cc:
stable@vger.kernel.org # v4.0+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/pagelist.c (diff)
Commit 2ececa64d67ad8efe1704ec9ecdecb1451ee32a1 by gregkh
nfsd: fix performance-limiting session calculation
commit c54f24e338ed2a35218f117a4a1afb5f9e2b4e64 upstream.
We're unintentionally limiting the number of slots per nfsv4.1 session
to 10.  Often more than 10 simultaneous RPCs are needed for the best
performance.
This calculation was meant to prevent any one client from using up more
than a third of the limit we set for total memory use across all clients
and sessions.  Instead, it's limiting the client to a third of the
maximum for a single session.
Fix this.
Reported-by: Chris Tracy <ctracy@engr.scu.edu> Cc:
stable@vger.kernel.org Fixes: de766e570413 "nfsd: give out fewer session
slots as limit approaches" Signed-off-by: J. Bruce Fields
<bfields@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfsd/nfs4state.c (diff)
Commit f5bed084b482498852a5e6caf4fa2f83c6e55040 by gregkh
nfsd: fix memory corruption caused by readdir
commit b602345da6cbb135ba68cf042df8ec9a73da7981 upstream.
If the result of an NFSv3 readdir{,plus} request results in the
"offset" on one entry having to be split across 2 pages, and is sized so
that the next directory entry doesn't fit in the requested size, then
memory corruption can happen.
When encode_entry() is called after encoding the last entry that fits,
it notices that ->offset and ->offset1 are set, and so stores the offset
value in the two pages as required.  It clears ->offset1 but
*does not* clear ->offset.
Normally this omission doesn't matter as encode_entry_baggage() will be
called, and will set ->offset to a suitable value (not on a page
boundary). But in the case where cd->buflen < elen and nfserr_toosmall
is returned, ->offset is not reset.
This means that nfsd3proc_readdirplus will see ->offset with a value 4
bytes before the end of a page, and ->offset1 set to NULL. It will try
to write 8bytes to ->offset. If we are lucky, the next page will be
read-only, and the system will
BUG: unable to handle kernel paging request at...
If we are unlucky, some innocent page will have the first 4 bytes
corrupted.
nfsd3proc_readdir() doesn't even check for ->offset1, it just blindly
writes 8 bytes to the offset wherever it is.
Fix this by clearing ->offset after it is used, and copying the
->offset handling code from nfsd3_proc_readdirplus into
nfsd3_proc_readdir.
(Note that the commit hash in the Fixes tag is from the 'history'
tree - this bug predates git).
Fixes: 0b1d57cf7654 ("[PATCH] kNFSd: Fix nfs3 dentry encoding")
Fixes-URL:
https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/commit/?id=0b1d57cf7654
Cc: stable@vger.kernel.org (v2.6.12+) Signed-off-by: NeilBrown
<neilb@suse.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/nfsd/nfs3proc.c (diff)
The file was modifiedfs/nfsd/nfs3xdr.c (diff)
Commit 867ae74fb190082a12863a4719c1f6fead35c50a by gregkh
nfsd: fix wrong check in write_v4_end_grace()
commit dd838821f0a29781b185cd8fb8e48d5c177bd838 upstream.
Commit 62a063b8e7d1 "nfsd4: fix crash on writing v4_end_grace before
nfsd startup" is trying to fix a NULL dereference issue, but it
mistakenly checks if the nfsd server is started. So fix it.
Fixes: 62a063b8e7d1 "nfsd4: fix crash on writing v4_end_grace before
nfsd startup" Cc: stable@vger.kernel.org Reviewed-by: Joseph Qi
<joseph.qi@linux.alibaba.com> Signed-off-by: Yihao Wu
<wuyihao@linux.alibaba.com> Signed-off-by: J. Bruce Fields
<bfields@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfsd/nfsctl.c (diff)
Commit 1363f37fbd241c8341816513dfd07b3d9ed3a4ba by gregkh
NFSv4.1: Reinitialise sequence results before retransmitting a request
commit c1dffe0bf7f9c3d57d9f237a7cb2a81e62babd2b upstream.
If we have to retransmit a request, we should ensure that we
reinitialise the sequence results structure, since in the event of a
signal we need to treat the request as if it had not been sent.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Cc:
stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/nfs4proc.c (diff)
Commit f03f5295caf0106820d1dac1fe0e019ee00f05dc by gregkh
svcrpc: fix UDP on servers with lots of threads
commit b7e5034cbecf5a65b7bfdc2b20a8378039577706 upstream.
James Pearson found that an NFS server stopped responding to UDP
requests if started with more than 1017 threads.
sv_max_mesg is about 2^20, so that is probably where the calculation
performed by
svc_sock_setbufsize(svsk->sk_sock,
                           (serv->sv_nrthreads+3) * serv->sv_max_mesg,
                           (serv->sv_nrthreads+3) * serv->sv_max_mesg);
starts to overflow an int.
Reported-by: James Pearson <jcpearson@gmail.com> Tested-by: James
Pearson <jcpearson@gmail.com> Cc: stable@vger.kernel.org Signed-off-by:
J. Bruce Fields <bfields@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sunrpc/svcsock.c (diff)
Commit c9c0e5f01245d6bf6779401a32f9f194e19deb87 by gregkh
PM / wakeup: Rework wakeup source timer cancellation
commit 1fad17fb1bbcd73159c2b992668a6957ecc5af8a upstream.
If wakeup_source_add() is called right after wakeup_source_remove() for
the same wakeup source, timer_setup() may be called for a potentially
scheduled timer which is incorrect.
To avoid that, move the wakeup source timer cancellation from
wakeup_source_drop() to wakeup_source_remove().
Moreover, make wakeup_source_remove() clear the timer function after
canceling the timer to let wakeup_source_not_registered() treat
unregistered wakeup sources in the same way as the ones that have never
been registered.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Cc: 4.4+
<stable@vger.kernel.org> # 4.4+
[ rjw: Subject, changelog, merged two patches together ] Signed-off-by:
Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/base/power/wakeup.c (diff)
Commit a8ce88427a9b3932e469e3eeb4853926b8a91b34 by gregkh
PM / OPP: Update performance state when freq == old_freq
commit faef080f6db5320011862f7baf1aa66d0851559f upstream.
At boot up, CPUFreq core performs a sanity check to see if the system is
running at a frequency defined in the frequency table of the CPU. If so,
we try to find a valid frequency (lowest frequency greater than the
currently programmed frequency) from the table and set it. When the call
reaches dev_pm_opp_set_rate(), it calls _find_freq_ceil(opp_table,
&old_freq) to find the previously configured OPP and this call also
updates the old_freq. This eventually sets the old_freq == freq (new
target requested by cpufreq core) and we skip updating the performance
state in this case.
Fix this by also updating the performance state when the old_freq ==
freq.
Fixes: ca1b5d77b1c6 ("OPP: Configure all required OPPs") Cc: v5.0
<stable@vger.kernel.org> # v5.0 Reported-by: Niklas Cassel
<niklas.cassel@linaro.org> Tested-by: Jorge Ramirez-Ortiz
<jorge.ramirez-ortiz@linaro.org> Signed-off-by: Viresh Kumar
<viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/opp/core.c (diff)
Commit 97cf758e172c9ae8b3a1561d1dbb247e2eaf6dca by gregkh
bcache: never writeback a discard operation
commit 9951379b0ca88c95876ad9778b9099e19a95d566 upstream.
Some users see panics like the following when performing fstrim on a
bcached volume:
[  529.803060] BUG: unable to handle kernel NULL pointer dereference at
0000000000000008
[  530.183928] #PF error: [normal kernel read fault]
[  530.412392] PGD 8000001f42163067 P4D 8000001f42163067 PUD 1f42168067
PMD 0
[  530.750887] Oops: 0000 [#1] SMP PTI
[  530.920869] CPU: 10 PID: 4167 Comm: fstrim Kdump: loaded Not tainted
5.0.0-rc1+ #3
[  531.290204] Hardware name: HP ProLiant DL360 Gen9/ProLiant DL360
Gen9, BIOS P89 12/27/2015
[  531.693137] RIP: 0010:blk_queue_split+0x148/0x620
[  531.922205] Code: 60 38 89 55 a0 45 31 db 45 31 f6 45 31 c9 31 ff 89
4d 98 85 db 0f 84 7f 04 00 00 44 8b 6d 98 4c 89 ee 48 c1 e6 04 49 03 70
78 <8b> 46 08 44 8b 56 0c 48 8b 16 44 29 e0 39 d8 48 89 55 a8 0f 47 c3
[  532.838634] RSP: 0018:ffffb9b708df39b0 EFLAGS: 00010246
[  533.093571] RAX: 00000000ffffffff RBX: 0000000000046000 RCX:
0000000000000000
[  533.441865] RDX: 0000000000000200 RSI: 0000000000000000 RDI:
0000000000000000
[  533.789922] RBP: ffffb9b708df3a48 R08: ffff940d3b3fdd20 R09:
0000000000000000
[  534.137512] R10: ffffb9b708df3958 R11: 0000000000000000 R12:
0000000000000000
[  534.485329] R13: 0000000000000000 R14: 0000000000000000 R15:
ffff940d39212020
[  534.833319] FS:  00007efec26e3840(0000) GS:ffff940d1f480000(0000)
knlGS:0000000000000000
[  535.224098] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  535.504318] CR2: 0000000000000008 CR3: 0000001f4e256004 CR4:
00000000001606e0
[  535.851759] Call Trace:
[  535.970308]  ? mempool_alloc_slab+0x15/0x20
[  536.174152]  ? bch_data_insert+0x42/0xd0 [bcache]
[  536.403399]  blk_mq_make_request+0x97/0x4f0
[  536.607036]  generic_make_request+0x1e2/0x410
[  536.819164]  submit_bio+0x73/0x150
[  536.980168]  ? submit_bio+0x73/0x150
[  537.149731]  ? bio_associate_blkg_from_css+0x3b/0x60
[  537.391595]  ? _cond_resched+0x1a/0x50
[  537.573774]  submit_bio_wait+0x59/0x90
[  537.756105]  blkdev_issue_discard+0x80/0xd0
[  537.959590]  ext4_trim_fs+0x4a9/0x9e0
[  538.137636]  ? ext4_trim_fs+0x4a9/0x9e0
[  538.324087]  ext4_ioctl+0xea4/0x1530
[  538.497712]  ? _copy_to_user+0x2a/0x40
[  538.679632]  do_vfs_ioctl+0xa6/0x600
[  538.853127]  ? __do_sys_newfstat+0x44/0x70
[  539.051951]  ksys_ioctl+0x6d/0x80
[  539.212785]  __x64_sys_ioctl+0x1a/0x20
[  539.394918]  do_syscall_64+0x5a/0x110
[  539.568674]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
We have observed it where both: 1) LVM/devmapper is involved (bcache
backing device is LVM volume) and 2) writeback cache is involved (bcache
cache_mode is writeback)
On one machine, we can reliably reproduce it with:
# echo writeback > /sys/block/bcache0/bcache/cache_mode
  (not sure whether above line is required)
# mount /dev/bcache0 /test
# for i in {0..10}; do
file="$(mktemp /test/zero.XXX)"
dd if=/dev/zero of="$file" bs=1M count=256
sync
rm $file
   done
# fstrim -v /test
Observing this with tracepoints on, we see the following writes:
fstrim-18019 [022] .... 91107.302026: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 4260112 + 196352 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302050: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 4456464 + 262144 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302075: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 4718608 + 81920 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302094: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 5324816 + 180224 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302121: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 5505040 + 262144 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302145: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 5767184 + 81920 hit 0
bypass 1 fstrim-18019 [022] .... 91107.308777: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 6373392 + 180224 hit 1
bypass 0
<crash>
Note the final one has different hit/bypass flags.
This is because in should_writeback(), we were hitting a case where the
partial stripe condition was returning true and so should_writeback()
was returning true early.
If that hadn't been the case, it would have hit the would_skip test, and
as would_skip == s->iop.bypass == true, should_writeback() would have
returned false.
Looking at the git history from 'commit 72c270612bd3 ("bcache: Write out
full stripes")', it looks like the idea was to optimise for raid5/6:
       * If a stripe is already dirty, force writes to that stripe to
writeback mode - to help build up full stripes of dirty data
To fix this issue, make sure that should_writeback() on a discard op
never returns true.
More details of debugging:
https://www.spinics.net/lists/linux-bcache/msg06996.html
Previous reports:
- https://bugzilla.kernel.org/show_bug.cgi?id=201051
- https://bugzilla.kernel.org/show_bug.cgi?id=196103
- https://www.spinics.net/lists/linux-bcache/msg06885.html
(Coly Li: minor modification to follow maximum 75 chars per line rule)
Cc: Kent Overstreet <koverstreet@google.com> Cc: stable@vger.kernel.org
Fixes: 72c270612bd3 ("bcache: Write out full stripes") Signed-off-by:
Daniel Axtens <dja@axtens.net> Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/bcache/writeback.h (diff)
Commit dddd539dc3257c8a1bfc66b7c7f4f47ea7f10605 by gregkh
bcache: treat stale && dirty keys as bad keys
commit 58ac323084ebf44f8470eeb8b82660f9d0ee3689 upstream.
Stale && dirty keys can be produced in the follow way: After writeback
in write_dirty_finish(), dirty keys k1 will replace by clean keys k2
==>ret = bch_btree_insert(dc->disk.c, &keys, NULL, &w->key);
==>btree_insert_fn(struct btree_op *b_op, struct btree *b)
==>static int bch_btree_insert_node(struct btree *b,
      struct btree_op *op,
      struct keylist *insert_keys,
      atomic_t *journal_ref, Then two steps: A) update k1 to k2 in btree
node memory;
  bch_btree_insert_keys(b, op, insert_keys, replace_key) B) Write the
bset(contains k2) to cache disk by a 30s delay work
  bch_btree_leaf_dirty(b, journal_ref). But before the 30s delay work
write the bset to cache device, these things happened: A) GC works, and
reclaim the bucket k2 point to; B) Allocator works, and invalidate the
bucket k2 point to,
  and increase the gen of the bucket, and place it into free_inc
  fifo; C) Until now, the 30s delay work still does not finish work,
  so in the disk, the key still is k1, it is dirty and stale
  (its gen is smaller than the gen of the bucket). and then the
  machine power off suddenly happens; D) When the machine power on
again, after the btree reconstruction,
  the stale dirty key appear.
In bch_extent_bad(), when expensive_debug_checks is off, it would treat
the dirty key as good even it is stale keys, and it would cause bellow
probelms: A) In read_dirty() it would cause machine crash:
  BUG_ON(ptr_stale(dc->disk.c, &w->key, 0)); B) It could be worse when
reads hits stale dirty keys, it would
  read old incorrect data.
This patch tolerate the existence of these stale && dirty keys, and
treat them as bad key in bch_extent_bad().
(Coly Li: fix indent which was modified by sender's email client)
Signed-off-by: Tang Junhui <tang.junhui.linux@gmail.com> Cc:
stable@vger.kernel.org Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/bcache/extents.c (diff)
Commit 0b60b354b33a6d7740e0da6174594716cf4356a2 by gregkh
bcache: use (REQ_META|REQ_PRIO) to indicate bio for metadata
commit dc7292a5bcb4c878b076fca2ac3fc22f81b8f8df upstream.
In 'commit 752f66a75aba ("bcache: use REQ_PRIO to indicate bio for
metadata")' REQ_META is replaced by REQ_PRIO to indicate metadata bio.
This assumption is not always correct, e.g. XFS uses REQ_META to mark
metadata bio other than REQ_PRIO. This is why Nix noticed that bcache
does not cache metadata for XFS after the above commit.
Thanks to Dave Chinner, he explains the difference between REQ_META and
REQ_PRIO from view of file system developer. Here I quote part of his
explanation from mailing list,
  REQ_META is used for metadata. REQ_PRIO is used to communicate to
  the lower layers that the submitter considers this IO to be more
  important that non REQ_PRIO IO and so dispatch should be expedited.
   IOWs, if the filesystem considers metadata IO to be more important
  that user data IO, then it will use REQ_PRIO | REQ_META rather than
  just REQ_META.
Then it seems bios with REQ_META or REQ_PRIO should both be cached for
performance optimation, because they are all probably low I/O latency
demand by upper layer (e.g. file system).
So in this patch, when we want to decide whether to bypass the cache,
REQ_META and REQ_PRIO are both checked. Then both metadata and high
priority I/O requests will be handled properly.
Reported-by: Nix <nix@esperi.org.uk> Signed-off-by: Coly Li
<colyli@suse.de> Reviewed-by: Andre Noll <maan@tuebingen.mpg.de>
Tested-by: Nix <nix@esperi.org.uk> Cc: stable@vger.kernel.org Cc: Dave
Chinner <david@fromorbit.com> Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/bcache/request.c (diff)
Commit c8d3a581742f36da4047eab4b3ed9c27201aa781 by gregkh
stable-kernel-rules.rst: add link to networking patch queue
commit a41e8f25fa8f8f67360d88eb0eebbabe95a64bdf upstream.
The networking maintainer keeps a public list of the patches being
queued up for the next round of stable releases.  Be sure to check there
before asking for a patch to be applied so that you do not waste
people's time.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Jonathan Corbet
<corbet@lwn.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedDocumentation/process/stable-kernel-rules.rst (diff)
Commit 194f1ecd4906396a8638a8e9294bd9255209a439 by gregkh
vt: perform safe console erase in the right order
commit a6dbe442755999960ca54a9b8ecfd9606be0ea75 upstream.
Commit 4b4ecd9cb853 ("vt: Perform safe console erase only once") removed
what appeared to be an extra call to scr_memsetw(). This missed the fact
that set_origin() must be called before clearing the screen otherwise
old screen content gets restored on the screen when using vgacon. Let's
fix that by moving all the scrollback handling to flush_scrollback()
where it logically belongs, and invoking it before the actual screen
clearing in csi_J(), making the code simpler in the end.
Reported-by: Matthew Whitehead <tedheadster@gmail.com> Signed-off-by:
Nicolas Pitre <nico@linaro.org> Tested-by: Matthew Whitehead
<tedheadster@gmail.com> Fixes: 4b4ecd9cb853 ("vt: Perform safe console
erase only once") Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/vt/vt.c (diff)
Commit a0203d4e717ec9939f70a4cc27c5259f5ec31e67 by gregkh
x86/unwind/orc: Fix ORC unwind table alignment
commit f76a16adc485699f95bb71fce114f97c832fe664 upstream.
The .orc_unwind section is a packed array of 6-byte structs.  It's
currently aligned to 6 bytes, which is causing warnings in the LLD
linker.
Six isn't a power of two, so it's not a valid alignment value.  The
actual alignment doesn't matter much because it's an array of packed
structs.  An alignment of two is sufficient.  In reality it always gets
aligned to four bytes because it comes immediately after the
4-byte-aligned .orc_unwind_ip section.
Fixes: ee9f8fce9964 ("x86/unwind: Add the ORC unwinder") Reported-by:
Nick Desaulniers <ndesaulniers@google.com> Reported-by: Dmitry Golovin
<dima@golovin.in> Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Signed-off-by:
Thomas Gleixner <tglx@linutronix.de> Tested-by: Sedat Dilek
<sedat.dilek@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
stable@vger.kernel.org Link:
https://github.com/ClangBuiltLinux/linux/issues/218 Link:
https://lkml.kernel.org/r/d55027ee95fe73e952dcd8be90aebd31b0095c45.1551892041.git.jpoimboe@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedinclude/asm-generic/vmlinux.lds.h (diff)
Commit 99c7a8ec438752b6a29c0449eb3298233d7243cd by gregkh
perf intel-pt: Fix CYC timestamp calculation after OVF
commit 03997612904866abe7cdcc992784ef65cb3a4b81 upstream.
CYC packet timestamp calculation depends upon CBR which was being
cleared upon overflow (OVF). That can cause errors due to failing to
synchronize with sideband events. Even if a CBR change has been lost,
the old CBR is still a better estimate than zero. So remove the clearing
of CBR.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: stable@vger.kernel.org Link:
http://lkml.kernel.org/r/20190206103947.15750-4-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/intel-pt-decoder/intel-pt-decoder.c (diff)
Commit 0f43fd4bdb74714f0ad8b0ee5bd26603b0390adb by gregkh
perf tools: Fix split_kallsyms_for_kcore() for trampoline symbols
commit d6d457451eb94fa747dc202765592eb8885a7352 upstream.
Kallsyms symbols do not have a size, so the size becomes the distance to
the next symbol.
Consequently the recently added trampoline symbols end up with large
sizes because the trampolines are some distance from one another and the
main kernel map.
However, symbols that end outside their map can disrupt the symbol tree
because, after mapping, it can appear incorrectly that they overlap
other symbols.
Add logic to truncate symbol size to the end of the corresponding map.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Acked-by: Jiri
Olsa <jolsa@kernel.org> Cc: stable@vger.kernel.org Fixes: d83212d5dd67
("kallsyms, x86: Export addresses of PTI entry trampolines") Link:
http://lkml.kernel.org/r/20190109091835.5570-2-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/symbol.c (diff)
Commit 2354deae355bd77162676e9e7a23c3c0e9720b4c by gregkh
perf auxtrace: Define auxtrace record alignment
commit c3fcadf0bb765faf45d6d562246e1d08885466df upstream.
Define auxtrace record alignment so that it can be referenced elsewhere.
Note this is preparation for patch "perf intel-pt: Fix overlap
calculation for padding"
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: stable@vger.kernel.org Link:
http://lkml.kernel.org/r/20190206103947.15750-2-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/auxtrace.c (diff)
The file was modifiedtools/perf/util/auxtrace.h (diff)
Commit 6228a6e3516f9fcada4c2eeb45d56eb1638eee3c by gregkh
perf intel-pt: Fix overlap calculation for padding
commit 5a99d99e3310a565b0cf63f785b347be9ee0da45 upstream.
Auxtrace records might have up to 7 bytes of padding appended. Adjust
the overlap accordingly.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: stable@vger.kernel.org Link:
http://lkml.kernel.org/r/20190206103947.15750-3-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/intel-pt-decoder/intel-pt-decoder.c (diff)
Commit 85c9f1fb8a81ddd2bbd1c7259b8454b09d51ee09 by gregkh
perf/x86/intel/uncore: Fix client IMC events return huge result
commit 8041ffd36f42d8521d66dd1e236feb58cecd68bc upstream.
The client IMC bandwidth events currently return very large values:
  $ perf stat -e uncore_imc/data_reads/ -e uncore_imc/data_writes/ -I
10000 -a
  10.000117222 34,788.76 MiB uncore_imc/data_reads/
10.000117222 8.26 MiB uncore_imc/data_writes/
20.000374584 34,842.89 MiB uncore_imc/data_reads/
20.000374584 10.45 MiB uncore_imc/data_writes/
30.000633299 37,965.29 MiB uncore_imc/data_reads/
30.000633299 323.62 MiB uncore_imc/data_writes/
40.000891548 41,012.88 MiB uncore_imc/data_reads/
40.000891548 6.98 MiB uncore_imc/data_writes/
50.001142480 1,125,899,906,621,494.75 MiB uncore_imc/data_reads/
50.001142480 6.97 MiB uncore_imc/data_writes/
The client IMC events are freerunning counters. They still use the old
event encoding format (0x1 for data_read and 0x2 for data write). The
counter bit width is calculated by common code, which assume that the
standard encoding format is used for the freerunning counters. Error bit
width information is calculated.
The patch intends to convert the old client IMC event encoding to the
standard encoding format.
Current common code uses event->attr.config which directly copy from
user space. We should not implicitly modify it for a converted event.
The event->hw.config is used to replace the event->attr.config in common
code.
For client IMC events, the event->attr.config is used to calculate a
converted event with standard encoding format in the custom
event_init(). The converted event is stored in event->hw.config. For
other events of freerunning counters, they already use the standard
encoding format. The same value as event->attr.config is assigned to
event->hw.config in common event_init().
Reported-by: Jin Yao <yao.jin@linux.intel.com> Tested-by: Jin Yao
<yao.jin@linux.intel.com> Signed-off-by: Kan Liang
<kan.liang@linux.intel.com> Signed-off-by: Peter Zijlstra (Intel)
<peterz@infradead.org> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Andy Lutomirski
<luto@kernel.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc:
Borislav Petkov <bp@alien8.de> Cc: Dave Hansen
<dave.hansen@linux.intel.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc:
Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Rik van Riel <riel@surriel.com> Cc: Stephane
Eranian <eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu> Cc: stable@kernel.org #
v4.18+ Fixes: 9aae1780e7e8 ("perf/x86/intel/uncore: Clean up client IMC
uncore") Link:
https://lkml.kernel.org/r/20190227165729.1861-1-kan.liang@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/intel/uncore.c (diff)
The file was modifiedarch/x86/events/intel/uncore.h (diff)
The file was modifiedarch/x86/events/intel/uncore_snb.c (diff)
Commit 99e5abb7b8958c4bfaa9a155cfa4e3600d336854 by gregkh
perf intel-pt: Fix divide by zero when TSC is not available
commit 076333870c2f5bdd9b6d31e7ca1909cf0c84cbfa upstream.
When TSC is not available, "timeless" decoding is used but a divide by
zero occurs if perf_time_to_tsc() is called.
Ensure the divisor is not zero.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: stable@vger.kernel.org # v4.9+ Link:
https://lkml.kernel.org/n/tip-1i4j0wqoc8vlbkcizqqxpsf4@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/intel-pt.c (diff)
Commit 9b236e3f79d9c26009162d331daa5770320f225d by gregkh
md: Fix failed allocation of md_register_thread
commit e406f12dde1a8375d77ea02d91f313fb1a9c6aec upstream.
mddev->sync_thread can be set to NULL on kzalloc failure downstream. The
patch checks for such a scenario and frees allocated resources.
Committer node:
Added similar fix to raid5.c, as suggested by Guoqing.
Cc: stable@vger.kernel.org # v3.16+ Acked-by: Guoqing Jiang
<gqjiang@suse.com> Signed-off-by: Aditya Pakki <pakki001@umn.edu>
Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/raid10.c (diff)
The file was modifieddrivers/md/raid5.c (diff)
Commit 384dada74d3710d74b673ce5f96294b1375d6963 by gregkh
x86/kvmclock: set offset for kvm unstable clock
commit b5179ec4187251a751832193693d6e474d3445ac upstream.
VMs may show incorrect uptime and dmesg printk offsets on hypervisors
with unstable clock. The problem is produced when VM is rebooted without
exiting from qemu.
The fix is to calculate clock offset not only for stable clock but for
unstable clock as well, and use kvm_sched_clock_read() which substracts
the offset for both clocks.
This is safe, because pvclock_clocksource_read() does the right thing
and makes sure that clock always goes forward, so once offset is
calculated with unstable clock, we won't get new reads that are smaller
than offset, and thus won't get negative results.
Thank you Jon DeVree for helping to reproduce this issue.
Fixes: 857baa87b642 ("sched/clock: Enable sched clock early") Cc:
stable@vger.kernel.org Reported-by: Dominique Martinet
<asmadeus@codewreck.org> Signed-off-by: Pavel Tatashin
<pasha.tatashin@soleen.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/kvmclock.c (diff)
Commit f484e220df1530bed07d0b1e56a127e57f85cd3c by gregkh
x86/ftrace: Fix warning and considate ftrace_jmp_replace() and
ftrace_call_replace()
commit 745cfeaac09ce359130a5451d90cb0bd4094c290 upstream.
Arnd reported the following compiler warning:
arch/x86/kernel/ftrace.c:669:23: error: 'ftrace_jmp_replace' defined but
not used [-Werror=unused-function]
The ftrace_jmp_replace() function now only has a single user and should
be simply moved by that user. But looking at the code, it shows that
ftrace_jmp_replace() is similar to ftrace_call_replace() except that
instead of using the opcode of 0xe8 it uses 0xe9. It makes more sense to
consolidate that function into one implementation that both
ftrace_jmp_replace() and ftrace_call_replace() use by passing in the op
code separate.
The structure in ftrace_code_union is also modified to replace the "e8"
field with the more appropriate name "op".
Cc: stable@vger.kernel.org Reported-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Arnd Bergmann <arnd@arndb.de> Link:
http://lkml.kernel.org/r/20190304200748.1418790-1-arnd@arndb.de Fixes:
d2a68c4effd8 ("x86/ftrace: Do not call function graph from dynamic
trampolines") Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/ftrace.c (diff)
Commit 65a2af7599c6f3b9afa4e6b479fcbfa5bb1ec456 by gregkh
tpm/tpm_crb: Avoid unaligned reads in crb_recv()
commit 3d7a850fdc1a2e4d2adbc95cc0fc962974725e88 upstream.
The current approach to read first 6 bytes from the response and then
tail of the response, can cause the 2nd memcpy_fromio() to do an
unaligned read
(e.g. read 32-bit word from address aligned to a 16-bits), depending on
how memcpy_fromio() is implemented. If this happens, the read will fail
and the memory controller will fill the read with 1's.
This was triggered by 170d13ca3a2f, which should be probably refined to
check and react to the address alignment. Before that commit, on x86
memcpy_fromio() turned out to be memcpy(). By a luck GCC has done the
right thing (from tpm_crb's perspective) for us so far, but we should
not rely on that. Thus, it makes sense to fix this also in tpm_crb, not
least because the fix can be then backported to stable kernels and make
them more robust when compiled in differing environments.
Cc: stable@vger.kernel.org Cc: James Morris <jmorris@namei.org> Cc:
Tomas Winkler <tomas.winkler@intel.com> Cc: Jerry Snitselaar
<jsnitsel@redhat.com> Fixes: 30fc8d138e91 ("tpm: TPM 2.0 CRB Interface")
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> Acked-by: Tomas
Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/char/tpm/tpm_crb.c (diff)
Commit 5d6f031fa78241c72efecf1c99ff70fa34de0453 by gregkh
tpm: Unify the send callback behaviour
commit f5595f5baa30e009bf54d0d7653a9a0cc465be60 upstream.
The send() callback should never return length as it does not in every
driver except tpm_crb in the success case. The reason is that the main
transmit functionality only cares about whether the transmit was
successful or not and ignores the count completely.
Suggested-by: Stefan Berger <stefanb@linux.ibm.com> Cc:
stable@vger.kernel.org Signed-off-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Reviewed-by: Stefan Berger
<stefanb@linux.ibm.com> Reviewed-by: Jerry Snitselaar
<jsnitsel@redhat.com> Tested-by: Alexander Steffen
<Alexander.Steffen@infineon.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/char/tpm/tpm-interface.c (diff)
The file was modifieddrivers/char/tpm/xen-tpmfront.c (diff)
The file was modifieddrivers/char/tpm/tpm_i2c_infineon.c (diff)
The file was modifieddrivers/char/tpm/tpm_ibmvtpm.c (diff)
The file was modifieddrivers/char/tpm/st33zp24/st33zp24.c (diff)
The file was modifieddrivers/char/tpm/tpm_i2c_nuvoton.c (diff)
The file was modifieddrivers/char/tpm/tpm_nsc.c (diff)
The file was modifieddrivers/char/tpm/tpm_tis_core.c (diff)
The file was modifieddrivers/char/tpm/tpm_i2c_atmel.c (diff)
The file was modifieddrivers/char/tpm/tpm_atmel.c (diff)
The file was modifieddrivers/char/tpm/tpm_infineon.c (diff)
The file was modifieddrivers/char/tpm/tpm_vtpm_proxy.c (diff)
Commit 9d032911a36cb7a3903cae3f96138609fae1bd8d by gregkh
rcu: Do RCU GP kthread self-wakeup from softirq and interrupt
commit 1d1f898df6586c5ea9aeaf349f13089c6fa37903 upstream.
The rcu_gp_kthread_wake() function is invoked when it might be necessary
to wake the RCU grace-period kthread.  Because self-wakeups are normally
a useless waste of CPU cycles, if rcu_gp_kthread_wake() is invoked from
this kthread, it naturally refuses to do the wakeup.
Unfortunately, natural though it might be, this heuristic fails when
rcu_gp_kthread_wake() is invoked from an interrupt or softirq handler
that interrupted the grace-period kthread just after the final check of
the wait-event condition but just before the schedule() call.  In this
case, a wakeup is required, even though the call to
rcu_gp_kthread_wake() is within the RCU grace-period kthread's context.
Failing to provide this wakeup can result in grace periods failing to
start, which in turn results in out-of-memory conditions.
This race window is quite narrow, but it actually did happen during real
testing.  It would of course need to be fixed even if it was strictly
theoretical in nature.
This patch does not Cc stable because it does not apply cleanly to
earlier kernel versions.
Fixes: 48a7639ce80c ("rcu: Make callers awaken grace-period kthread")
Reported-by: "He, Bo" <bo.he@intel.com> Co-developed-by: "Zhang, Jun"
<jun.zhang@intel.com> Co-developed-by: "He, Bo" <bo.he@intel.com>
Co-developed-by: "xiao, jin" <jin.xiao@intel.com> Co-developed-by: Bai,
Jie A <jie.a.bai@intel.com> Signed-off: "Zhang, Jun"
<jun.zhang@intel.com> Signed-off: "He, Bo" <bo.he@intel.com> Signed-off:
"xiao, jin" <jin.xiao@intel.com> Signed-off: Bai, Jie A
<jie.a.bai@intel.com> Signed-off-by: "Zhang, Jun" <jun.zhang@intel.com>
[ paulmck: Switch from !in_softirq() to "!in_interrupt() &&
!in_serving_softirq() to avoid redundant wakeups and to also handle the
interrupt-handler scenario as well as the softirq-handler scenario that
actually occurred in testing. ] Signed-off-by: Paul E. McKenney
<paulmck@linux.ibm.com> Link:
https://lkml.kernel.org/r/CD6925E8781EFD4D8E11882D20FC406D52A11F61@SHSMSX104.ccr.corp.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/rcu/tree.c (diff)
Commit f55d0cb10f5b54fdd586b738fcd36da0576781a3 by gregkh
media: imx: prpencvf: Stop upstream before disabling IDMA channel
commit a19c22677377b87e4354f7306f46ad99bc982a9f upstream.
Upstream must be stopped immediately after receiving the last EOF and
before disabling the IDMA channel. This can be accomplished by moving
upstream stream off to just after receiving the last EOF completion in
prp_stop(). For symmetry also move upstream stream on to end of
prp_start().
This fixes a complete system hard lockup on the SabreAuto when streaming
from the ADV7180, by repeatedly sending a stream off immediately
followed by stream on:
while true; do v4l2-ctl  -d1 --stream-mmap --stream-count=3; done
Eventually this either causes the system lockup or EOF timeouts at all
subsequent stream on, until a system reset.
The lockup occurs when disabling the IDMA channel at stream off.
Stopping the video data stream entering the IDMA channel before
disabling the channel itself appears to be a reliable fix for the hard
lockup.
Fixes: f0d9c8924e2c3 ("[media] media: imx: Add IC subdev drivers")
Reported-by: Gaël PORTAY <gael.portay@collabora.com> Tested-by: Gaël
PORTAY <gael.portay@collabora.com> Signed-off-by: Steve Longerbeam
<slongerbeam@gmail.com> Cc: stable@vger.kernel.org # for 4.13 and up
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by:
Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/media/imx/imx-ic-prpencvf.c (diff)
Commit 1d433d48516e387de7c3cf043b56744606f07c17 by gregkh
media: lgdt330x: fix lock status reporting
commit 1b4fd9de6ec7f3722c2b3e08cc5ad171c11f93be upstream.
A typo in code cleanup commit db9c1007bc07 ("media: lgdt330x: do some
cleanups at status logic") broke the FE_HAS_LOCK reporting for 3303
chips by inadvertently modifying the register mask.
The broken lock status is critial as it prevents video capture cards
from reporting signal strength, scanning for channels, and capturing
video.
Fix regression by reverting mask change.
Cc: stable@vger.kernel.org # Kernel 4.17+ Fixes: db9c1007bc07 ("media:
lgdt330x: do some cleanups at status logic") Signed-off-by: Nick French
<naf@ou.edu> Reviewed-by: Laurent Pinchart
<laurent.pinchart@ideasonboard.com> Tested-by: Adam Stylinski
<kungfujesus06@gmail.com> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/media/dvb-frontends/lgdt330x.c (diff)
Commit 202ed62dea70ce1b87db2007384b6ef2cfc13d47 by gregkh
media: sun6i: Fix CSI regmap's max_register
commit d31b282e2c0de9c7fb113516820340251f03a625 upstream.
max_register is currently set to 0x1000. This is beyond the mapped
address range of the hardware, so attempts to dump the regmap from
debugfs would trigger a kernel exception.
Furthermore, the useful registers only occupy a small section at the
beginning of the full range. Change the value to 0x9c, the last known
register on the V3s and H3.
On the A31, the register range is extended to support additional capture
channels. Since this is not yet supported, ignore it for now.
Fixes: 5cc7522d8965 ("media: sun6i: Add support for Allwinner CSI V3s")
Cc: <stable@vger.kernel.org> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by: Hans
Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c (diff)
Commit 6932b9b4e677f6b29fa1f7f54b259ed9b3b6ba8e by gregkh
media: uvcvideo: Avoid NULL pointer dereference at the end of streaming
commit 9dd0627d8d62a7ddb001a75f63942d92b5336561 upstream.
The UVC video driver converts the timestamp from hardware specific unit
to one known by the kernel at the time when the buffer is dequeued. This
is fine in general, but the streamoff operation consists of the
following steps (among other things):
1. uvc_video_clock_cleanup --- the hardware clock sample array is
  released and the pointer to the array is set to NULL,
2. buffers in active state are returned to the user and
3. buf_finish callback is called on buffers that are prepared.
  buf_finish includes calling uvc_video_clock_update that accesses the
  hardware clock sample array.
The above is serialised by a queue specific mutex. Address the problem
by skipping the clock conversion if the hardware clock sample array is
already released.
Fixes: 9c0863b1cc48 ("[media] vb2: call buf_finish from __queue_cancel")
Reported-by: Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
Tested-by: Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Cc:
stable@vger.kernel.org Signed-off-by: Laurent Pinchart
<laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/media/usb/uvc/uvc_video.c (diff)
Commit e7ae48ae47227c0302b9f4b15a5bf45934a55673 by gregkh
media: vimc: Add vimc-streamer for stream control
commit adc589d2a20808fb99d46a78175cd023f2040338 upstream.
Add a linear pipeline logic for the stream control. It's created by
walking backwards on the entity graph. When the stream starts it will
simply loop through the pipeline calling the respective process_frame
function of each entity.
Fixes: f2fe89061d797 ("vimc: Virtual Media Controller core, capture and
sensor")
Cc: stable@vger.kernel.org # for v4.20 Signed-off-by: Lucas A. M.
Magalhães <lucmaga@gmail.com> Acked-by: Helen Koike
<helen.koike@collabora.com> Signed-off-by: Hans Verkuil
<hverkuil-cisco@xs4all.nl>
[hverkuil-cisco@xs4all.nl: fixed small space-after-tab issue in the
patch] Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/media/platform/vimc/vimc-scaler.c (diff)
The file was addeddrivers/media/platform/vimc/vimc-streamer.c
The file was modifieddrivers/media/platform/vimc/vimc-common.c (diff)
The file was addeddrivers/media/platform/vimc/vimc-streamer.h
The file was modifieddrivers/media/platform/vimc/Makefile (diff)
The file was modifieddrivers/media/platform/vimc/vimc-sensor.c (diff)
The file was modifieddrivers/media/platform/vimc/vimc-capture.c (diff)
The file was modifieddrivers/media/platform/vimc/vimc-common.h (diff)
The file was modifieddrivers/media/platform/vimc/vimc-debayer.c (diff)
Commit e7a06193c52cab30335d58cde7dc7e0e6a67045b by gregkh
media: imx-csi: Input connections to CSI should be optional
commit 337e90ed028643c7acdfd0d31e3224d05ca03d66 upstream.
Some imx platforms do not have fwnode connections to all CSI input
ports, and should not be treated as an error. This includes the imx6q
SabreAuto, which has no connections to ipu1_csi1 and ipu2_csi0. Return
-ENOTCONN in imx_csi_parse_endpoint() so that v4l2-fwnode endpoint
parsing will not treat an unconnected CSI input port as an error.
Fixes: c893500a16baf ("media: imx: csi: Register a subdev notifier")
Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com> Reviewed-by:
Philipp Zabel <p.zabel@pengutronix.de> Acked-by: Tim Harvey
<tharvey@gateworks.com> Cc: stable@vger.kernel.org Tested-by: Fabio
Estevam <festevam@gmail.com> Signed-off-by: Hans Verkuil
<hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/media/imx/imx-media-csi.c (diff)
Commit 145cab144d758292570cd2e6a9ad765234debedc by gregkh
media: imx: csi: Disable CSI immediately after last EOF
commit 2e0fe66e0a136252f4d89dbbccdcb26deb867eb8 upstream.
Disable the CSI immediately after receiving the last EOF before stream
off (and thus before disabling the IDMA channel). Do this by moving the
wait for EOF completion into a new function csi_idmac_wait_last_eof().
This fixes a complete system hard lockup on the SabreAuto when streaming
from the ADV7180, by repeatedly sending a stream off immediately
followed by stream on:
while true; do v4l2-ctl  -d4 --stream-mmap --stream-count=3; done
Eventually this either causes the system lockup or EOF timeouts at all
subsequent stream on, until a system reset.
The lockup occurs when disabling the IDMA channel at stream off.
Disabling the CSI before disabling the IDMA channel appears to be a
reliable fix for the hard lockup.
Fixes: 4a34ec8e470cb ("[media] media: imx: Add CSI subdev driver")
Reported-by: Gaël PORTAY <gael.portay@collabora.com> Signed-off-by:
Steve Longerbeam <slongerbeam@gmail.com> Cc: stable@vger.kernel.org #
for 4.13 and up Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/media/imx/imx-media-csi.c (diff)
Commit c7a35a9877b89bca4856fcd06d191335b2d6bf5c by gregkh
media: imx: csi: Stop upstream before disabling IDMA channel
commit 4bc1ab41eee9d02ad2483bf8f51a7b72e3504eba upstream.
Move upstream stream off to just after receiving the last EOF completion
and disabling the CSI (and thus before disabling the IDMA channel) in
csi_stop(). For symmetry also move upstream stream on to beginning of
csi_start().
Doing this makes csi_s_stream() more symmetric with prp_s_stream() which
will require the same change to fix a hard lockup.
Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com> Cc:
stable@vger.kernel.org # for 4.13 and up Signed-off-by: Hans
Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/media/imx/imx-media-csi.c (diff)
Commit b78ee0965f86be90e514258b60dbf71908e071ee by gregkh
drm/fb-helper: generic: Fix drm_fbdev_client_restore()
commit 78de14c23e031420aa5f61973583635eccd6cd2a upstream.
If fbdev setup has failed, lastclose will give a NULL pointer deref:
[   77.794295] [drm:drm_lastclose]
[   77.794414] [drm:drm_lastclose] driver lastclose completed
[   77.794660] Unable to handle kernel NULL pointer dereference at
virtual address 00000014
[   77.809460] pgd = b376b71b
[   77.818275] [00000014] *pgd=175ba831, *pte=00000000, *ppte=00000000
[   77.830813] Internal error: Oops: 17 [#1] ARM
[   77.840963] Modules linked in: mi0283qt mipi_dbi tinydrm
raspberrypi_hwmon gpio_backlight backlight snd_bcm2835(C) bcm2835_rng
rng_core
[   77.865203] CPU: 0 PID: 527 Comm: lt-modetest Tainted: G         C  
    5.0.0-rc1+ #1
[   77.879525] Hardware name: BCM2835
[   77.889185] PC is at restore_fbdev_mode+0x20/0x164
[   77.900261] LR is at
drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0x9c
[   78.002446] Process lt-modetest (pid: 527, stack limit = 0x7a3d5c14)
[   78.291030] Backtrace:
[   78.300815] [<c04f2d0c>] (restore_fbdev_mode) from [<c04f4708>]
(drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0x9c)
[   78.319095]  r9:d8a8a288 r8:d891acf0 r7:d7697910 r6:00000000
r5:d891ac00 r4:d891ac00
[   78.334432] [<c04f46b4>] (drm_fb_helper_restore_fbdev_mode_unlocked)
from [<c04f47e8>] (drm_fbdev_client_restore+0x18/0x20)
[   78.353296]  r8:d76978c0 r7:d7697910 r6:d7697950 r5:d7697800
r4:d891ac00 r3:c04f47d0
[   78.368689] [<c04f47d0>] (drm_fbdev_client_restore) from [<c051b6b4>]
(drm_client_dev_restore+0x7c/0xc0)
[   78.385982] [<c051b638>] (drm_client_dev_restore) from [<c04f8fd0>]
(drm_lastclose+0xc4/0xd4)
[   78.402332]  r8:d76978c0 r7:d7471080 r6:c0e0c088 r5:d8a85e00
r4:d7697800
[   78.416688] [<c04f8f0c>] (drm_lastclose) from [<c04f9088>]
(drm_release+0xa8/0x10c)
[   78.431929]  r5:d8a85e00 r4:d7697800
[   78.442989] [<c04f8fe0>] (drm_release) from [<c02640c4>]
(__fput+0x104/0x1c8)
[   78.457740]  r8:d5ccea10 r7:d96cfb10 r6:00000008 r5:d74c1b90
r4:d8a8a280
[   78.472043] [<c0263fc0>] (__fput) from [<c02641ec>]
(____fput+0x18/0x1c)
[   78.486363]  r10:00000006 r9:d7722000 r8:c01011c4 r7:00000000
r6:c0ebac6c r5:d892a340
[   78.501869]  r4:d8a8a280
[   78.512002] [<c02641d4>] (____fput) from [<c013ef1c>]
(task_work_run+0x98/0xac)
[   78.527186] [<c013ee84>] (task_work_run) from [<c010cc54>]
(do_work_pending+0x4f8/0x570)
[   78.543238]  r7:d7722030 r6:00000004 r5:d7723fb0 r4:00000000
[   78.556825] [<c010c75c>] (do_work_pending) from [<c0101034>]
(slow_work_pending+0xc/0x20)
[   78.674256] ---[ end trace 70d3a60cf739be3b ]---
Fix by using drm_fb_helper_lastclose() which checks if fbdev is in use.
Fixes: 9060d7f49376 ("drm/fb-helper: Finish the generic fbdev
emulation") Cc: stable@vger.kernel.org Signed-off-by: Noralf Trønnes
<noralf@tronnes.org> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Link:
https://patchwork.freedesktop.org/patch/msgid/20190125150300.33268-1-noralf@tronnes.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/drm_fb_helper.c (diff)
Commit 3bc65d729765659a7959d4fb99ee53811ecc9cb0 by gregkh
drm/radeon/evergreen_cs: fix missing break in switch statement
commit cc5034a5d293dd620484d1d836aa16c6764a1c8c upstream.
Add missing break statement in order to prevent the code from falling
through to case CB_TARGET_MASK.
This bug was found thanks to the ongoing efforts to enable
-Wimplicit-fallthrough.
Fixes: dd220a00e8bd ("drm/radeon/kms: add support for streamout v7") Cc:
stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/radeon/evergreen_cs.c (diff)
Commit ea7da9ef23a08f21ccd194d8e86f07f164788820 by gregkh
drm/amd/powerplay: correct power reading on fiji
commit f5742ec36422a39b57f0256e4847f61b3c432f8c upstream.
Set sampling period as 500ms to provide a smooth power reading output.
Also, correct the register for power reading.
Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Feifei Xu
<Feifei.Xu@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Cc: stable@vger.kernel.org Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c (diff)
Commit c61d88f39491cb9105a83b770b195cbd1b836c4a by gregkh
drm/amd/display: don't call dm_pp_ function from an fpu block
commit 59d3191f14dc18881fec1172c7096b7863622803 upstream.
Powerplay functions called from dm_pp_* functions tend to do a
mutex_lock which isn't safe to do inside a kernel_fpu_begin/end block as
those will disable/enable preemption.
Rearrange the dm_pp_get_clock_levels_by_type_with_voltage calls to make
sure they happen outside of kernel_fpu_begin/end.
Cc: stable@vger.kernel.org Acked-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Harry Wentland
<harry.wentland@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c (diff)
Commit e1bdcf061b48dafc0755dd2f68fb0e31ed6f2597 by gregkh
KVM: Call kvm_arch_memslots_updated() before updating memslots
commit 152482580a1b0accb60676063a1ac57b2d12daf6 upstream.
kvm_arch_memslots_updated() is at this point in time an x86-specific
hook for handling MMIO generation wraparound.  x86 stashes 19 bits of
the memslots generation number in its MMIO sptes in order to avoid full
page fault walks for repeat faults on emulated MMIO addresses. Because
only 19 bits are used, wrapping the MMIO generation number is possible,
if unlikely.  kvm_arch_memslots_updated() alerts x86 that the generation
has changed so that it can invalidate all MMIO sptes in case the
effective MMIO generation has wrapped so as to avoid using a stale spte,
e.g. a (very) old spte that was created with generation==0.
Given that the purpose of kvm_arch_memslots_updated() is to prevent
consuming stale entries, it needs to be called before the new generation
is propagated to memslots.  Invalidating the MMIO sptes after updating
memslots means that there is a window where a vCPU could dereference the
new memslots generation, e.g. 0, and incorrectly reuse an old MMIO spte
that was created with (pre-wrap) generation==0.
Fixes: e59dbe09f8e6 ("KVM: Introduce kvm_arch_memslots_updated()") Cc:
<stable@vger.kernel.org> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedvirt/kvm/kvm_main.c (diff)
The file was modifiedarch/mips/include/asm/kvm_host.h (diff)
The file was modifiedarch/x86/kvm/mmu.c (diff)
The file was modifiedvirt/kvm/arm/mmu.c (diff)
The file was modifiedarch/x86/include/asm/kvm_host.h (diff)
The file was modifiedarch/x86/kvm/x86.c (diff)
The file was modifiedinclude/linux/kvm_host.h (diff)
The file was modifiedarch/powerpc/include/asm/kvm_host.h (diff)
The file was modifiedarch/s390/include/asm/kvm_host.h (diff)
Commit cf8d03a4fe59ae40a6a8e5b0925425ef975a5597 by gregkh
KVM: VMX: Compare only a single byte for VMCS' "launched" in vCPU-run
commit 61c08aa9606d4e48a8a50639c956448a720174c3 upstream.
The vCPU-run asm blob does a manual comparison of a VMCS' launched
status to execute the correct VM-Enter instruction, i.e. VMLAUNCH vs.
VMRESUME.  The launched flag is a bool, which is a typedef of _Bool. C99
does not define an exact size for _Bool, stating only that is must be
large enough to hold '0' and '1'.  Most, if not all, compilers use a
single byte for _Bool, including gcc[1].
Originally, 'launched' was of type 'int' and so the asm blob used 'cmpl'
to check the launch status.  When 'launched' was moved to be stored on a
per-VMCS basis, struct vcpu_vmx's "temporary" __launched flag was added
in order to avoid having to pass the current VMCS into the asm blob. The
new  '__launched' was defined as a 'bool' and not an 'int', but the
'cmp' instruction was not updated.
This has not caused any known problems, likely due to compilers aligning
variables to 4-byte or 8-byte boundaries and KVM zeroing out struct
vcpu_vmx during allocation.  I.e. vCPU-run accesses "junk" data, it just
happens to always be zero and so doesn't affect the result.
[1] https://gcc.gnu.org/ml/gcc-patches/2000-10/msg01127.html
Fixes: d462b8192368 ("KVM: VMX: Keep list of loaded VMCSs, instead of
vcpus") Cc: <stable@vger.kernel.org> Reviewed-by: Jim Mattson
<jmattson@google.com> Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
Commit 5221117cd414d6365b921ea85d5c14c55c3dfb76 by gregkh
KVM: VMX: Zero out *all* general purpose registers after VM-Exit
commit 0e0ab73c9a0243736bcd779b30b717e23ba9a56d upstream.
...except RSP, which is restored by hardware as part of VM-Exit.
Paolo theorized that restoring registers from the stack after a VM-Exit
in lieu of zeroing them could lead to speculative execution with the
guest's values, e.g. if the stack accesses miss the L1 cache[1]. Zeroing
XORs are dirt cheap, so just be ultra-paranoid.
Note that the scratch register (currently RCX) used to save/restore the
guest state is also zeroed as its host-defined value is loaded via the
stack, just with a MOV instead of a POP.
[1] https://patchwork.kernel.org/patch/10771539/#22441255
Fixes: 0cb5b30698fd ("kvm: vmx: Scrub hardware GPRs at VM-exit") Cc:
<stable@vger.kernel.org> Cc: Jim Mattson <jmattson@google.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
Commit c173d5417a11248961b4da79adeb6a70b5b44df3 by gregkh
KVM: x86/mmu: Detect MMIO generation wrap in any address space
commit e1359e2beb8b0a1188abc997273acbaedc8ee791 upstream.
The check to detect a wrap of the MMIO generation explicitly looks for a
generation number of zero.  Now that unique memslots generation numbers
are assigned to each address space, only address space 0 will get a
generation number of exactly zero when wrapping.  E.g. when address
space 1 goes from 0x7fffe to 0x80002, the MMIO generation number will
wrap to 0x2.  Adjust the MMIO generation to strip the address space
modifier prior to checking for a wrap.
Fixes: 4bd518f1598d ("KVM: use separate generations for each address
space") Cc: <stable@vger.kernel.org> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/mmu.c (diff)
Commit 1e42327adb8da50e3a0fb68848a6a07d18c158ec by gregkh
KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux
commit ddfd1730fd829743e41213e32ccc8b4aa6dc8325 upstream.
When installing new memslots, KVM sets bit 0 of the generation number to
indicate that an update is in-progress.  Until the update is complete,
there are no guarantees as to whether a vCPU will see the old or the new
memslots.  Explicity prevent caching MMIO accesses so as to avoid using
an access cached from the old memslots after the new memslots have been
installed.
Note that it is unclear whether or not disabling caching during the
update window is strictly necessary as there is no definitive
documentation as to what ordering guarantees KVM provides with respect
to updating memslots.  That being said, the MMIO spte code does not
allow reusing sptes created while an update is in-progress, and the
associated documentation explicitly states:
    We do not want to use an MMIO sptes created with an odd generation
   number, ...  If KVM is unlucky and creates an MMIO spte while the
   low bit is 1, the next access to the spte will always be a cache
miss.
At the very least, disabling the per-vCPU MMIO cache during updates will
make its behavior consistent with the MMIO spte behavior and
documentation.
Fixes: 56f17dd3fbc4 ("kvm: x86: fix stale mmio cache bug") Cc:
<stable@vger.kernel.org> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/x86.h (diff)
Commit 64d259a7064214e8b6cc4f807a71987ee73235d2 by gregkh
KVM: nVMX: Sign extend displacements of VMX instr's mem operands
commit 946c522b603f281195af1df91837a1d4d1eb3bc9 upstream.
The VMCS.EXIT_QUALIFCATION field reports the displacements of memory
operands for various instructions, including VMX instructions, as a
naturally sized unsigned value, but masks the value by the addr size,
e.g. given a ModRM encoded as -0x28(%ebp), the -0x28 displacement is
reported as 0xffffffd8 for a 32-bit address size.  Despite some weird
wording regarding sign extension, the SDM explicitly states that bits
beyond the instructions address size are undefined:
    In all cases, bits of this field beyond the instruction’s address
   size are undefined.
Failure to sign extend the displacement results in KVM incorrectly
treating a negative displacement as a large positive displacement when
the address size of the VMX instruction is smaller than KVM's native
size, e.g. a 32-bit address size on a 64-bit KVM.
The very original decoding, added by commit 064aea774768 ("KVM: nVMX:
Decoding memory operands of VMX instructions"), sort of modeled sign
extension by truncating the final virtual/linear address for a 32-bit
address size.  I.e. it messed up the effective address but made it work
by adjusting the final address.
When segmentation checks were added, the truncation logic was kept as-is
and no sign extension logic was introduced.  In other words, it kept
calculating the wrong effective address while mostly generating the
correct virtual/linear address.  As the effective address is what's used
in the segment limit checks, this results in KVM incorreclty injecting
#GP/#SS faults due to non-existent segment violations when a nested VMM
uses negative displacements with an address size smaller than KVM's
native address size.
Using the -0x28(%ebp) example, an EBP value of 0x1000 will result in KVM
using 0x100000fd8 as the effective address when checking for a segment
limit violation.  This causes a 100% failure rate when running a 32-bit
KVM build as L1 on top of a 64-bit KVM L0.
Fixes: f9eb4af67c9d ("KVM: nVMX: VMX instructions: add checks for
#GP/#SS exceptions") Cc: stable@vger.kernel.org Signed-off-by: Sean
Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit f88f29f81d5921b03f60bb9d707b2a377e0875c4 by gregkh
KVM: nVMX: Apply addr size mask to effective address for VMX
instructions
commit 8570f9e881e3fde98801bb3a47eef84dd934d405 upstream.
The address size of an instruction affects the effective address, not
the virtual/linear address.  The final address may still be truncated,
e.g. to 32-bits outside of long mode, but that happens irrespective of
the address size, e.g. a 32-bit address size can yield a 64-bit virtual
address when using FS/GS with a non-zero base.
Fixes: 064aea774768 ("KVM: nVMX: Decoding memory operands of VMX
instructions") Cc: stable@vger.kernel.org Signed-off-by: Sean
Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit 5de7f6cd6aebe0a6b58cd975c22f9472ec30ef33 by gregkh
KVM: nVMX: Ignore limit checks on VMX instructions using flat segments
commit 34333cc6c2cb021662fd32e24e618d1b86de95bf upstream.
Regarding segments with a limit==0xffffffff, the SDM officially states:
    When the effective limit is FFFFFFFFH (4 GBytes), these accesses may
   or may not cause the indicated exceptions.  Behavior is
   implementation-specific and may vary from one execution to another.
In practice, all CPUs that support VMX ignore limit checks for "flat
segments", i.e. an expand-up data or code segment with base=0 and
limit=0xffffffff.  This is subtly different than wrapping the effective
address calculation based on the address size, as the flat segment
behavior also applies to accesses that would wrap the 4g boundary, e.g.
a 4-byte access starting at 0xffffffff will access linear addresses
0xffffffff, 0x0, 0x1 and 0x2.
Fixes: f9eb4af67c9d ("KVM: nVMX: VMX instructions: add checks for
#GP/#SS exceptions") Cc: stable@vger.kernel.org Signed-off-by: Sean
Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit 4e126cbd4f0613a1975056b9f2978151b25ecd39 by gregkh
KVM: nVMX: Check a single byte for VMCS "launched" in nested early
checks
commit 1ce072cbfd8dba46f117804850398e0b3040a541 upstream.
Nested early checks does a manual comparison of a VMCS' launched status
in its asm blob to execute the correct VM-Enter instruction, i.e.
VMLAUNCH vs. VMRESUME.  The launched flag is a bool, which is a typedef
of _Bool.  C99 does not define an exact size for _Bool, stating only
that is must be large enough to hold '0' and '1'.  Most, if not all,
compilers use a single byte for _Bool, including gcc[1].
The use of 'cmpl' instead of 'cmpb' was not deliberate, but rather the
result of a copy-paste as the asm blob was directly derived from the asm
blob for vCPU-run.
This has not caused any known problems, likely due to compilers aligning
variables to 4-byte or 8-byte boundaries and KVM zeroing out struct
vcpu_vmx during allocation.  I.e. vCPU-run accesses "junk" data, it just
happens to always be zero and so doesn't affect the result.
[1] https://gcc.gnu.org/ml/gcc-patches/2000-10/msg01127.html
Fixes: 52017608da33 ("KVM: nVMX: add option to perform early consistency
checks via H/W") Cc: <stable@vger.kernel.org> Reviewed-by: Jim Mattson
<jmattson@google.com> Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit 8d244127d25f403d285ab69ff16c194dc44327be by gregkh
net: dsa: lantiq_gswip: fix use-after-free on failed probe
commit aed13f2e00ce278f039b76e7ac84d419aff48ef6 upstream.
Make sure to disable and deregister the switch on late probe errors to
avoid use-after-free when the device-resource-managed switch is freed.
Fixes: 14fceff4771e ("net: dsa: Add Lantiq / Intel DSA driver for
vrx200") Cc: stable <stable@vger.kernel.org> # 4.20 Cc: Hauke
Mehrtens <hauke@hauke-m.de> Signed-off-by: Johan Hovold
<johan@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Acked-by:
Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/lantiq_gswip.c (diff)
Commit 09bfb45ed842f4b53683c3bc28a386997e47c719 by gregkh
net: dsa: lantiq_gswip: fix OF child-node lookups
commit c8cbcb0d8bd72d44fad1a5ddc348ac10e0fb1b37 upstream.
Use the new of_get_compatible_child() helper to look up child nodes to
avoid ever matching non-child nodes elsewhere in the tree.
Also fix up the related struct device_node leaks.
Fixes: 14fceff4771e ("net: dsa: Add Lantiq / Intel DSA driver for
vrx200") Cc: stable <stable@vger.kernel.org> # 4.20 Cc: Hauke
Mehrtens <hauke@hauke-m.de> Signed-off-by: Johan Hovold
<johan@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Acked-by:
Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/lantiq_gswip.c (diff)
Commit 1b2f5d715bbc21c548c834647084c4ad7952696f by gregkh
s390/setup: fix boot crash for machine without EDAT-1
commit 86a86804e4f18fc3880541b3d5a07f4df0fe29cb upstream.
The fix to make WARN work in the early boot code created a problem on
older machines without EDAT-1. The setup_lowcore_dat_on function uses
the pointer from lowcore_ptr[0] to set the DAT bit in the new PSWs. That
does not work if the kernel page table is set up with 4K pages as the
prefix address maps to absolute zero.
To make this work the PSWs need to be changed with via address 0 in form
of the S390_lowcore definition.
Reported-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Cornelia Huck
<cohuck@redhat.com> Fixes: 94f85ed3e2f8 ("s390/setup: fix early warning
messages") Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/s390/kernel/setup.c (diff)
Commit aed54941cf9e67876456513b490fdf72e0367aed by gregkh
SUNRPC: Prevent thundering herd when the socket is not connected
commit ed7dc973bd91da234d93aff6d033a5206a6c9885 upstream.
If the socket is not connected, then we want to initiate a reconnect
rather that trying to transmit requests. If there is a large number of
requests queued and waiting for the lock in call_transmit(), then it can
take a while for one of the to loop back and retake the lock in
call_connect.
Fixes: 89f90fe1ad8b ("SUNRPC: Allow calls to xprt_transmit() to
drain...") Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sunrpc/clnt.c (diff)
Commit f6716abfd12b90c10a6e234edd41bfab4387c3b8 by gregkh
SUNRPC: Fix up RPC back channel transmission
commit 477687e1116ad16180caf8633dd830b296a5ce73 upstream.
Now that transmissions happen through a queue, we require the RPC tasks
to handle error conditions that may have been set while they were
sleeping. The back channel does not currently do this, but assumes that
any error condition happens during its own call to xprt_transmit().
The solution is to ensure that the back channel splits out the error
handling just like the forward channel does.
Fixes: 89f90fe1ad8b ("SUNRPC: Allow calls to xprt_transmit() to
drain...") Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sunrpc/clnt.c (diff)
Commit 87e728e85559749608073c447141dab26663d0bb by gregkh
SUNRPC: Respect RPC call timeouts when retrying transmission
commit 7b3fef8e4157ed424bcde039a60a730aa0dfb0eb upstream.
Fix a regression where soft and softconn requests are not timing out as
expected.
Fixes: 89f90fe1ad8b ("SUNRPC: Allow calls to xprt_transmit() to
drain...") Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sunrpc/clnt.c (diff)
The file was modifiedMakefile (diff)
Commit 3c09233b5dee8b1d9503b9c1399fca2fac4b1ff8 by gregkh
ALSA: hda - add Lenovo IdeaCentre B550 to the power_save_blacklist
commit 721f1e6c1fd137e7e2053d8e103b666faaa2d50c upstream.
Another machine which does not like the power saving (noise):
https://bugzilla.redhat.com/show_bug.cgi?id=1689623
Also, reorder the Lenovo C50 entry to keep the table sorted.
Reported-by: hs.guimaraes@outlook.com Signed-off-by: Jaroslav Kysela
<perex@perex.cz> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi
Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/hda_intel.c (diff)
Commit ae833c3eefaf9b1e08978048d460bb9ae406acad by gregkh
ALSA: firewire-motu: use 'version' field of unit directory to identify
model
commit 2d012c65a9ca26a0ef87ea0a42f1653dd37155f5 upstream.
Current ALSA firewire-motu driver uses the value of 'model' field of
unit directory in configuration ROM for modalias for MOTU FireWire
models. However, as long as I checked, Pre8 and 828mk3(Hybrid) have the
same value for the field (=0x100800).
unit            | version   | model
--------------- | --------- | ---------- 828mkII         | 0x000003  |
0x101800 Traveler        | 0x000009  | 0x107800 Pre8            |
0x00000f  | 0x100800 <- 828mk3(FW)      | 0x000015  | 0x106800
AudioExpress    | 0x000033  | 0x104800 828mk3(Hybrid)  | 0x000035  |
0x100800 <-
When updating firmware for MOTU 8pre FireWire from v1.0.0 to v1.0.3, I
got change of the value from 0x100800 to 0x103800. On the other hand,
the value of 'version' field is fixed to 0x00000f. As a quick glance,
the higher 12 bits of the value of 'version' field represent firmware
version, while the lower 12 bits is unknown.
By induction, the value of 'version' field represents actual model.
This commit changes modalias to match the value of 'version' field,
instead of 'model' field. For degug, long name of added sound card
includes hexadecimal value of 'model' field.
Fixes: 6c5e1ac0e144 ("ALSA: firewire-motu: add support for Motu
Traveler") Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Cc:
<stable@vger.kernel.org> # v4.19+ Signed-off-by: Takashi Iwai
<tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/firewire/motu/motu.c (diff)
Commit cc8cd197411baebacec3a31c319d86c2ace4bfdd by gregkh
mmc: pxamci: fix enum type confusion
commit e60a582bcde01158a64ff948fb799f21f5d31a11 upstream.
clang points out several instances of mismatched types in this drivers,
all coming from a single declaration:
drivers/mmc/host/pxamci.c:193:15: error: implicit conversion from
enumeration type 'enum dma_transfer_direction' to
     different enumeration type 'enum dma_data_direction'
[-Werror,-Wenum-conversion]
               direction = DMA_DEV_TO_MEM;
                         ~ ^~~~~~~~~~~~~~
drivers/mmc/host/pxamci.c:212:62: error: implicit conversion from
enumeration type 'enum dma_data_direction' to
     different enumeration type 'enum dma_transfer_direction'
[-Werror,-Wenum-conversion]
       tx = dmaengine_prep_slave_sg(chan, data->sg, host->dma_len,
direction,
The behavior is correct, so this must be a simply typo from
dma_data_direction and dma_transfer_direction being similarly named
types with a similar purpose.
Fixes: 6464b7140951 ("mmc: pxamci: switch over to dmaengine use")
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Nathan
Chancellor <natechancellor@gmail.com> Acked-by: Robert Jarzmik
<robert.jarzmik@free.fr> Cc: stable@vger.kernel.org Signed-off-by: Ulf
Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/pxamci.c (diff)
Commit 7e682a01b11110f0193c5808930149d7ac2826c9 by gregkh
mmc: alcor: fix DMA reads
commit 5ea47691bd99e1100707ec63364aff72324e2af4 upstream.
Setting max_blk_count to 1 here was causing the mmc block layer to
always use the MMC_READ_SINGLE_BLOCK command here, which the driver does
not DMA-accelerate.
Drop the max_blk_ settings here. The mmc host defaults suffice, along
with the max_segs and max_seg_size settings, which I have now documented
in more detail.
Now each MMC command reads 4 512-byte blocks, using DMA instead of PIO.
On my SD card, this increases read performance (measured with dd) from
167kb/sec to 4.6mb/sec.
Link:
http://lkml.kernel.org/r/CAD8Lp47L5T3jnAjBiPs1cQ+yFA3L6LJtgFvMETnBrY63-Zdi2g@mail.gmail.com
Signed-off-by: Daniel Drake <drake@endlessm.com> Reviewed-by: Oleksij
Rempel <linux@rempel-privat.de> Fixes: c5413ad815a6 ("mmc: add new Alcor
Micro Cardreader SD/MMC driver") Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/alcor.c (diff)
Commit 1494408bf8638fdfeb4cdce923ae0645c62ca0a9 by gregkh
mmc: mxcmmc: "Revert mmc: mxcmmc: handle highmem pages"
commit 2b77158ffa92b820a0c5da9a3c6ead7aa069c71c upstream.
This reverts commit b189e7589f6d3411e85c6b7ae6eef158f08f388f.
Unable to handle kernel paging request at virtual address c8358000 pgd =
efa405c3
[c8358000] *pgd=00000000 Internal error: Oops: 805 [#1] PREEMPT ARM CPU:
0 PID: 711 Comm: kworker/0:2 Not tainted 4.20.0+ #30 Hardware name:
Freescale i.MX27 (Device Tree Support) Workqueue: events mxcmci_datawork
PC is at mxcmci_datawork+0xbc/0x2ac LR is at mxcmci_datawork+0xac/0x2ac
pc : [<c04e33c8>]    lr : [<c04e33b8>]    psr: 60000013 sp : c6c93f08
ip : 24004180  fp : 00000008 r10: c8358000  r9 : c78b3e24  r8 : c6c92000
r7 : 00000000  r6 : c7bb8680  r5 : c7bb86d4  r4 : c78b3de0 r3 : 00002502
r2 : c090b2e0  r1 : 00000880  r0 : 00000000 Flags: nZCv  IRQs on  FIQs
on  Mode SVC_32  ISA ARM  Segment user Control: 0005317f  Table:
a68a8000  DAC: 00000055 Process kworker/0:2 (pid: 711, stack limit =
0x389543bc) Stack: (0xc6c93f08 to 0xc6c94000) 3f00:                 
c7bb86d4 00000000 00000000 c6cbfde0 c7bb86d4 c7ee4200 3f20: 00000000
c0907ea8 00000000 c7bb86d8 c0907ea8 c012077c c6cbfde0 c7bb86d4 3f40:
c6cbfde0 c6c92000 c6cbfdf4 c09280ba c0907ea8 c090b2e0 c0907ebc c0120c18
3f60: c6cbfde0 00000000 00000000 c6cbb580 c7ba7c40 c7837edc c6cbb598
00000000 3f80: c6cbfde0 c01208f8 00000000 c01254fc c7ba7c40 c0125400
00000000 00000000 3fa0: 00000000 00000000 00000000 c01010d0 00000000
00000000 00000000 00000000 3fc0: 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 3fe0: 00000000 00000000 00000000
00000000 00000013 00000000 00000000 00000000
[<c04e33c8>] (mxcmci_datawork) from [<c012077c>]
(process_one_work+0x1f0/0x338)
[<c012077c>] (process_one_work) from [<c0120c18>]
(worker_thread+0x320/0x474)
[<c0120c18>] (worker_thread) from [<c01254fc>] (kthread+0xfc/0x118)
[<c01254fc>] (kthread) from [<c01010d0>] (ret_from_fork+0x14/0x24)
Exception stack(0xc6c93fb0 to 0xc6c93ff8) 3fa0:                        
           00000000 00000000 00000000 00000000 3fc0: 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 3fe0: 00000000
00000000 00000000 00000000 00000013 00000000 Code: e3500000 1a000059
e5153050 e5933038 (e48a3004)
---[ end trace 54ca629b75f0e737 ]--- note: kworker/0:2[711] exited with
preempt_count 1
Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Fixes: b189e7589f6d
("mmc: mxcmmc: handle highmem pages") Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/mxcmmc.c (diff)
Commit cdb57f82a4bc54d3de2108eec8f855b46ead6934 by gregkh
mmc: renesas_sdhi: limit block count to 16 bit for old revisions
commit c9a9497ccef205ed4ed2e247011382627876d831 upstream.
R-Car Gen2 has two different SDHI incarnations in the same chip. The
older one does not support the recently introduced 32 bit register
access to the block count register. Make sure we use this feature only
after the first known version.
Thanks to the Renesas Testing team for this bug report!
Fixes: 5603731a15ef ("mmc: tmio: fix access width of Block Count
Register") Reported-by: Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Wolfram Sang
<wsa+renesas@sang-engineering.com> Reviewed-by: Simon Horman
<horms+renesas@verge.net.au> Tested-by: Phong Hoang
<phong.hoang.wz@renesas.com> Cc: stable@vger.kernel.org Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/renesas_sdhi_core.c (diff)
Commit 109f5f9dff14a5a9d28a48218d04cdf81c370d6b by gregkh
drm/amdgpu: fix invalid use of change_bit
commit 72464382fc2d3673eb51f21a57f2c0a320c1552f upstream.
We only need to clear the bit in a 32bit integer.
This fixes a crah on ARM64 and PPC64LE caused by
"drm/amdgpu: update the vm invalidation engine layout V2"
Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Alex
Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/amd/amdgpu/gmc_v9_0.c (diff)
Commit 5618b16763ce38b53aa3677744771f971c145322 by gregkh
drm/vmwgfx: Don't double-free the mode stored in par->set_mode
commit c2d311553855395764e2e5bf401d987ba65c2056 upstream.
When calling vmw_fb_set_par(), the mode stored in par->set_mode gets
free'd twice. The first free is in vmw_fb_kms_detach(), the second is
near the end of vmw_fb_set_par() under the name of 'old_mode'. The
mode-setting code only works correctly if the mode doesn't actually
change. Removing
'old_mode' in favor of using par->set_mode directly fixes the problem.
Cc: <stable@vger.kernel.org> Fixes: a278724aa23c ("drm/vmwgfx: Implement
fbdev on kms v2") Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Deepak Rawat <drawat@vmware.com> Signed-off-by: Thomas
Hellstrom <thellstrom@vmware.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/vmwgfx/vmwgfx_fb.c (diff)
Commit 0c113ec08d71ad237ea87d3d6b55f20d0ab1a42c by gregkh
drm/vmwgfx: Return 0 when gmrid::get_node runs out of ID's
commit 4b9ce3a651a37c60527101db4451a315a8b9588f upstream.
If it's not a system error and get_node implementation accommodate the
buffer object then it should return 0 with memm::mm_node set to NULL.
v2: Test for id != -ENOMEM instead of id == -ENOSPC.
Cc: <stable@vger.kernel.org> Fixes: 4eb085e42fde ("drm/vmwgfx: Convert
to new IDA API") Signed-off-by: Deepak Rawat <drawat@vmware.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by:
Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c (diff)
Commit 98e2c51c1ac3d1599c221944c5aecb5868c1605d by gregkh
iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE
commit 4e50ce03976fbc8ae995a000c4b10c737467beaa upstream.
Take into account that sg->offset can be bigger than PAGE_SIZE when
setting segment sg->dma_address. Otherwise sg->dma_address will point at
diffrent page, what makes DMA not possible with erros like this:
xhci_hcd 0000:38:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0000
address=0x00000000fdaa70c0 flags=0x0020] xhci_hcd 0000:38:00.3: AMD-Vi:
Event logged [IO_PAGE_FAULT domain=0x0000 address=0x00000000fdaa7040
flags=0x0020] xhci_hcd 0000:38:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT
domain=0x0000 address=0x00000000fdaa7080 flags=0x0020] xhci_hcd
0000:38:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0000
address=0x00000000fdaa7100 flags=0x0020] xhci_hcd 0000:38:00.3: AMD-Vi:
Event logged [IO_PAGE_FAULT domain=0x0000 address=0x00000000fdaa7000
flags=0x0020]
Additinally with wrong sg->dma_address unmap_sg will free wrong pages,
what what can cause crashes like this:
Feb 28 19:27:45 kernel: BUG: Bad page state in process cinnamon
pfn:39e8b1 Feb 28 19:27:45 kernel: Disabling lock debugging due to
kernel taint Feb 28 19:27:45 kernel: flags: 0x2ffff0000000000() Feb 28
19:27:45 kernel: raw: 02ffff0000000000 0000000000000000 ffffffff00000301
0000000000000000 Feb 28 19:27:45 kernel: raw: 0000000000000000
0000000000000000 00000001ffffffff 0000000000000000 Feb 28 19:27:45
kernel: page dumped because: nonzero _refcount Feb 28 19:27:45 kernel:
Modules linked in: ccm fuse arc4 nct6775 hwmon_vid amdgpu nls_iso8859_1
nls_cp437 edac_mce_amd vfat fat kvm_amd ccp rng_core kvm mt76x0u
mt76x0_common mt76x02_usb irqbypass mt76_usb mt76x02_lib mt76
crct10dif_pclmul crc32_pclmul chash mac80211 amd_iommu_v2
ghash_clmulni_intel gpu_sched i2c_algo_bit ttm wmi_bmof
snd_hda_codec_realtek snd_hda_codec_generic drm_kms_helper
snd_hda_codec_hdmi snd_hda_intel drm snd_hda_codec aesni_intel
snd_hda_core snd_hwdep aes_x86_64 crypto_simd snd_pcm cfg80211 cryptd
mousedev snd_timer glue_helper pcspkr r8169 input_leds realtek agpgart
libphy rfkill snd syscopyarea sysfillrect sysimgblt fb_sys_fops
soundcore sp5100_tco k10temp i2c_piix4 wmi evdev gpio_amdpt pinctrl_amd
mac_hid pcc_cpufreq acpi_cpufreq sg ip_tables x_tables ext4(E)
crc32c_generic(E) crc16(E) mbcache(E) jbd2(E) fscrypto(E) sd_mod(E)
hid_generic(E) usbhid(E) hid(E) dm_mod(E) serio_raw(E) atkbd(E)
libps2(E) crc32c_intel(E) ahci(E) libahci(E) libata(E) xhci_pci(E)
xhci_hcd(E) Feb 28 19:27:45 kernel:  scsi_mod(E) i8042(E) serio(E)
bcache(E) crc64(E) Feb 28 19:27:45 kernel: CPU: 2 PID: 896 Comm:
cinnamon Tainted: G    B   W   E     4.20.12-arch1-1-custom #1 Feb 28
19:27:45 kernel: Hardware name: To Be Filled By O.E.M. To Be Filled By
O.E.M./B450M Pro4, BIOS P1.20 06/26/2018 Feb 28 19:27:45 kernel: Call
Trace: Feb 28 19:27:45 kernel:  dump_stack+0x5c/0x80 Feb 28 19:27:45
kernel:  bad_page.cold.29+0x7f/0xb2 Feb 28 19:27:45 kernel:
__free_pages_ok+0x2c0/0x2d0 Feb 28 19:27:45 kernel:
skb_release_data+0x96/0x180 Feb 28 19:27:45 kernel:
__kfree_skb+0xe/0x20 Feb 28 19:27:45 kernel:  tcp_recvmsg+0x894/0xc60
Feb 28 19:27:45 kernel:  ? reuse_swap_page+0x120/0x340 Feb 28 19:27:45
kernel:  ? ptep_set_access_flags+0x23/0x30 Feb 28 19:27:45 kernel:
inet_recvmsg+0x5b/0x100 Feb 28 19:27:45 kernel:
__sys_recvfrom+0xc3/0x180 Feb 28 19:27:45 kernel:  ?
handle_mm_fault+0x10a/0x250 Feb 28 19:27:45 kernel:  ?
syscall_trace_enter+0x1d3/0x2d0 Feb 28 19:27:45 kernel:  ?
__audit_syscall_exit+0x22a/0x290 Feb 28 19:27:45 kernel:
__x64_sys_recvfrom+0x24/0x30 Feb 28 19:27:45 kernel:
do_syscall_64+0x5b/0x170 Feb 28 19:27:45 kernel:
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Cc: stable@vger.kernel.org Reported-and-tested-by: Jan Viktorin
<jan.viktorin@gmail.com> Reviewed-by: Alexander Duyck
<alexander.h.duyck@linux.intel.com> Signed-off-by: Stanislaw Gruszka
<sgruszka@redhat.com> Fixes: 80187fd39dcb ('iommu/amd: Optimize map_sg
and unmap_sg') Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/iommu/amd_iommu.c (diff)
Commit 027584c8ef01eececbb4eca218ebcf301ab1231d by gregkh
iommu/iova: Fix tracking of recently failed iova address
commit 80ef4464d5e27408685e609d389663aad46644b9 upstream.
If a 32 bit allocation request is too big to possibly succeed, it early
exits with a failure and then should never update max32_alloc_ size.
This patch fixes current code, now the size is only updated if the slow
path failed while walking the tree. Without the fix the allocation may
enter the slow path again even if there was a failure before of a
request with the same or a smaller size.
Cc: <stable@vger.kernel.org> # 4.20+ Fixes: bee60e94a1e2 ("iommu/iova:
Optimise attempts to allocate iova from 32bit address range")
Reviewed-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Robert
Richter <rrichter@marvell.com> Signed-off-by: Joerg Roedel
<jroedel@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/iommu/iova.c (diff)
Commit 48cce130d485275c0b04e4031629d3c9d62326be by gregkh
libceph: wait for latest osdmap in ceph_monc_blacklist_add()
commit bb229bbb3bf63d23128e851a1f3b85c083178fa1 upstream.
Because map updates are distributed lazily, an OSD may not know about
the new blacklist for quite some time after "osd blacklist add" command
is completed.  This makes it possible for a blacklisted but still alive
client to overwrite a post-blacklist update, resulting in data
corruption.
Waiting for latest osdmap in ceph_monc_blacklist_add() and thus using
the post-blacklist epoch for all post-blacklist requests ensures that
all such requests "wait" for the blacklist to come into force on their
respective OSDs.
Cc: stable@vger.kernel.org Fixes: 6305a3b41515 ("libceph: support for
blacklisting clients") Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Jason Dillaman <dillaman@redhat.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/ceph/libceph.h (diff)
The file was modifiednet/ceph/mon_client.c (diff)
The file was modifiednet/ceph/ceph_common.c (diff)
Commit e88f693e6e8d43678c1af5d7305755098ea4d26b by gregkh
udf: Fix crash on IO error during truncate
commit d3ca4651d05c0ff7259d087d8c949bcf3e14fb46 upstream.
When truncate(2) hits IO error when reading indirect extent block the
code just bugs with:
kernel BUG at linux-4.15.0/fs/udf/truncate.c:249!
...
Fix the problem by bailing out cleanly in case of IO error.
CC: stable@vger.kernel.org Reported-by: jean-luc malet
<jeanluc.malet@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/udf/truncate.c (diff)
Commit 63703e8fd2af25f5b946eff504d7e74fc19fe16d by gregkh
mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction.
commit 5f5f67da9781770df0403269bc57d7aae608fecd upstream.
Timekeeping IRQs from CS5536 MFGPT are routed to i8259, which then
triggers the "cascade" IRQ on MIPS CPU. Without IRQF_NO_SUSPEND in
cascade_irqaction, MFGPT interrupts will be masked in suspend mode, and
the machine would be unable to resume once suspended.
Previously, MIPS IRQs were not disabled properly, so the original code
appeared to work. Commit a3e6c1eff5 ("MIPS: IRQ: Fix disable_irq on CPU
IRQs") uncovers the bug. To fix it, add IRQF_NO_SUSPEND to
cascade_irqaction.
This commit is functionally identical to 0add9c2f1cff ("MIPS:
Loongson-3: Add IRQF_NO_SUSPEND to Cascade irqaction"), but it forgot to
apply the same fix to Loongson2.
Signed-off-by: Yifeng Li <tomli@tomli.me> Signed-off-by: Paul Burton
<paul.burton@mips.com> Cc: linux-mips@vger.kernel.org Cc: Jiaxun Yang
<jiaxun.yang@flygoat.com> Cc: Huacai Chen <chenhc@lemote.com> Cc: Ralf
Baechle <ralf@linux-mips.org> Cc: James Hogan <jhogan@kernel.org> Cc:
linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org # v3.19+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/mips/loongson64/lemote-2f/irq.c (diff)
Commit de21552cc84833d72598d54a552ca3b291cc6ca3 by gregkh
MIPS: Ensure ELF appended dtb is relocated
commit 3f0a53bc6482fb09770982a8447981260ea258dc upstream.
This fixes booting with the combination of CONFIG_RELOCATABLE=y and
CONFIG_MIPS_ELF_APPENDED_DTB=y.
Sections that appear after the relocation table are not relocated on
system boot (except .bss, which has special handling).
With CONFIG_MIPS_ELF_APPENDED_DTB, the dtb is part of the vmlinux ELF,
so it must be relocated together with everything else.
Fixes: 069fd766271d ("MIPS: Reserve space for relocation table")
Signed-off-by: Yasha Cherikovsky <yasha.che3@gmail.com> Signed-off-by:
Paul Burton <paul.burton@mips.com> Cc: Ralf Baechle
<ralf@linux-mips.org> Cc: Paul Burton <paul.burton@mips.com> Cc: James
Hogan <jhogan@kernel.org> Cc: linux-mips@linux-mips.org Cc:
linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org # v4.7+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/mips/kernel/vmlinux.lds.S (diff)
Commit 9e063d979422bced2e0783f66943e70055e2540b by gregkh
MIPS: Fix kernel crash for R6 in jump label branch function
commit 47c25036b60f27b86ab44b66a8861bcf81cde39b upstream.
Insert Branch instruction instead of NOP to make sure assembler don't
patch code in forbidden slot. In jump label function, it might be
possible to patch Control Transfer Instructions(CTIs) into forbidden
slot, which will generate Reserved Instruction exception in MIPS release
6.
Signed-off-by: Archer Yan <ayan@wavecomp.com> Reviewed-by: Paul Burton
<paul.burton@mips.com>
[paul.burton@mips.com:
- Add MIPS prefix to subject.
- Mark for stable from v4.0, which introduced r6 support, onwards.]
Signed-off-by: Paul Burton <paul.burton@mips.com> Cc:
linux-mips@vger.kernel.org Cc: stable@vger.kernel.org # v4.0+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/mips/include/asm/jump_label.h (diff)
Commit 7f5ffb4c7a710c1f441817cbeca7ca5aecc5f4ef by gregkh
powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038
commit b5b4453e7912f056da1ca7572574cada32ecb60c upstream.
Jakub Drnec reported:
Setting the realtime clock can sometimes make the monotonic clock go
back by over a hundred years. Decreasing the realtime clock across
the y2k38 threshold is one reliable way to reproduce. Allegedly this
can also happen just by running ntpd, I have not managed to
reproduce that other than booting with rtc at >2038 and then running
ntp. When this happens, anything with timers (e.g. openjdk) breaks
rather badly.
And included a test case (slightly edited for brevity):
#define _POSIX_C_SOURCE 199309L
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
  long get_time(void) {
   struct timespec tp;
   clock_gettime(CLOCK_MONOTONIC, &tp);
   return tp.tv_sec + tp.tv_nsec / 1000000000;
}
  int main(void) {
   long last = get_time();
   while(1) {
     long now = get_time();
     if (now < last) {
       printf("clock went backwards by %ld seconds!\n", last - now);
     }
     last = now;
     sleep(1);
   }
   return 0;
}
Which when run concurrently with:
# date -s 2040-1-1
# date -s 2037-1-1
Will detect the clock going backward.
The root cause is that wtom_clock_sec in struct vdso_data is only a
32-bit signed value, even though we set its value to be equal to
tk->wall_to_monotonic.tv_sec which is 64-bits.
Because the monotonic clock starts at zero when the system boots the
wall_to_montonic.tv_sec offset is negative for current and future dates.
Currently on a freshly booted system the offset will be in the vicinity
of negative 1.5 billion seconds.
However if the wall clock is set past the Y2038 boundary, the offset
from wall to monotonic becomes less than negative 2^31, and no longer
fits in 32-bits. When that value is assigned to wtom_clock_sec it is
truncated and becomes positive, causing the VDSO assembly code to
calculate CLOCK_MONOTONIC incorrectly.
That causes CLOCK_MONOTONIC to jump ahead by ~4 billion seconds which it
is not meant to do. Worse, if the time is then set back before the Y2038
boundary CLOCK_MONOTONIC will jump backward.
We can fix it simply by storing the full 64-bit offset in the vdso_data,
and using that in the VDSO assembly code. We also shuffle some of the
fields in vdso_data to avoid creating a hole.
The original commit that added the CLOCK_MONOTONIC support to the VDSO
did actually use a 64-bit value for wtom_clock_sec, see commit
a7f290dad32e ("[PATCH] powerpc: Merge vdso's and add vdso support to 32
bits kernel") (Nov 2005). However just 3 days later it was converted to
32-bits in commit 0c37ec2aa88b ("[PATCH] powerpc: vdso fixes (take
#2)"), and the bug has existed since then AFAICS.
Fixes: 0c37ec2aa88b ("[PATCH] powerpc: vdso fixes (take #2)") Cc:
stable@vger.kernel.org # v2.6.15+ Link:
http://lkml.kernel.org/r/HaC.ZfES.62bwlnvAvMP.1STMMj@seznam.cz
Reported-by: Jakub Drnec <jaydee@email.cz> Signed-off-by: Michael
Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/include/asm/vdso_datapage.h (diff)
The file was modifiedarch/powerpc/kernel/vdso64/gettimeofday.S (diff)
Commit 62362ccdd45c741ac82c1a9cb033669b4e591154 by gregkh
powerpc/security: Fix spectre_v2 reporting
commit 92edf8df0ff2ae86cc632eeca0e651fd8431d40d upstream.
When I updated the spectre_v2 reporting to handle software count cache
flush I got the logic wrong when there's no software count cache enabled
at all.
The result is that on systems with the software count cache flush
disabled we print:
  Mitigation: Indirect branch cache disabled, Software count cache flush
Which correctly indicates that the count cache is disabled, but
incorrectly says the software count cache flush is enabled.
The root of the problem is that we are trying to handle all combinations
of options. But we know now that we only expect to see the software
count cache flush enabled if the other options are false.
So split the two cases, which simplifies the logic and fixes the bug. We
were also missing a space before "(hardware accelerated)".
The result is we see one of:
  Mitigation: Indirect branch serialisation (kernel only)
Mitigation: Indirect branch cache disabled
Mitigation: Software count cache flush
Mitigation: Software count cache flush (hardware accelerated)
Fixes: ee13cb249fab ("powerpc/64s: Add support for software count cache
flush") Cc: stable@vger.kernel.org # v4.19+ Signed-off-by: Michael
Ellerman <mpe@ellerman.id.au> Reviewed-by: Michael Neuling
<mikey@neuling.org> Reviewed-by: Diana Craciun <diana.craciun@nxp.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/security.c (diff)
Commit e846d79bc1ba095482c3a2472c1a7cd2ef962e19 by gregkh
net/mlx5: Fix DCT creation bad flow
commit f84b66b9cce78e8f9d38204fdaa75f07c75f4911 upstream.
In case the DCT creation command has succeeded a DRAIN must be issued
before calling DESTROY.
In addition, the original code used the wrong parameter for the DESTROY
command, 'in' instead of 'din', which caused another creation try
instead of destroying.
Cc: <stable@vger.kernel.org> # 4.15 Fixes: 57cda166bbe0 ("net/mlx5: Add
DCT command interface") Signed-off-by: Yishai Hadas
<yishaih@mellanox.com> Reviewed-by: Artemy Kovalyov
<artemyko@mellanox.com> Signed-off-by: Leon Romanovsky
<leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/qp.c (diff)
Commit abe481cfe98329a4bed82f3d7d910c8c638a4e77 by gregkh
scsi: core: Avoid that a kernel warning appears during system resume
commit 17605afaae825b0291f80c62a7f6565879edaa8a upstream.
Since scsi_device_quiesce() skips SCSI devices that have another state
than RUNNING, OFFLINE or TRANSPORT_OFFLINE, scsi_device_resume() should
not complain about SCSI devices that have been skipped. Hence this
patch.  This patch avoids that the following warning appears during
resume:
WARNING: CPU: 3 PID: 1039 at blk_clear_pm_only+0x2a/0x30 CPU: 3 PID:
1039 Comm: kworker/u8:49 Not tainted 5.0.0+ #1 Hardware name: LENOVO
4180F42/4180F42, BIOS 83ET75WW (1.45 ) 05/10/2013 Workqueue:
events_unbound async_run_entry_fn RIP: 0010:blk_clear_pm_only+0x2a/0x30
Call Trace:
? scsi_device_resume+0x28/0x50
? scsi_dev_type_resume+0x2b/0x80
? async_run_entry_fn+0x2c/0xd0
? process_one_work+0x1f0/0x3f0
? worker_thread+0x28/0x3c0
? process_one_work+0x3f0/0x3f0
? kthread+0x10c/0x130
? __kthread_create_on_node+0x150/0x150
? ret_from_fork+0x1f/0x30
Cc: Christoph Hellwig <hch@lst.de> Cc: Hannes Reinecke <hare@suse.com>
Cc: Ming Lei <ming.lei@redhat.com> Cc: Johannes Thumshirn
<jthumshirn@suse.de> Cc: Oleksandr Natalenko <oleksandr@natalenko.name>
Cc: Martin Steigerwald <martin@lichtvoll.de> Cc:
<stable@vger.kernel.org> Reported-by: Jisheng Zhang
<Jisheng.Zhang@synaptics.com> Tested-by: Jisheng Zhang
<Jisheng.Zhang@synaptics.com> Fixes: 3a0a529971ec ("block, scsi: Make
SCSI quiesce and resume work reliably") # v4.15 Signed-off-by: Bart Van
Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/scsi_lib.c (diff)
Commit e109bf21f4c61a869237a107249687d3c0f7e9ea by gregkh
scsi: qla2xxx: Fix FC-AL connection target discovery
commit 4705f10e82c63924bd84a9b31d15839ec9ba3d06 upstream.
Commit 7f147f9bfd44 ("scsi: qla2xxx: Fix N2N target discovery with Local
loop") fixed N2N target discovery for local loop.  However, same code is
used for FC-AL discovery as well. Added check to make sure we are
bypassing area and domain check only in N2N topology for target
discovery.
Fixes: 7f147f9bfd44 ("scsi: qla2xxx: Fix N2N target discovery with Local
loop") Cc: stable@vger.kernel.org # 5.0+ Signed-off-by: Quinn Tran
<qtran@marvell.com> Signed-off-by: Himanshu Madhani
<hmadhani@marvell.com> Reviewed-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>
The file was modifieddrivers/scsi/qla2xxx/qla_init.c (diff)
Commit bc1bf16d7defec622e3d9a13b841d079e73063eb by gregkh
scsi: ibmvscsi: Protect ibmvscsi_head from concurrent modificaiton
commit 7205981e045e752ccf96cf6ddd703a98c59d4339 upstream.
For each ibmvscsi host created during a probe or destroyed during a
remove we either add or remove that host to/from the global
ibmvscsi_head list. This runs the risk of concurrent modification.
This patch adds a simple spinlock around the list modification calls to
prevent concurrent updates as is done similarly in the ibmvfc driver and
ipr driver.
Fixes: 32d6e4b6e4ea ("scsi: ibmvscsi: add vscsi hosts to global
list_head") Cc: <stable@vger.kernel.org> # v4.10+ Signed-off-by: Tyrel
Datwyler <tyreld@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/ibmvscsi/ibmvscsi.c (diff)
Commit 72b8c5492f48c8bdee1dddef1c0ef4020a31dd4c by gregkh
scsi: ibmvscsi: Fix empty event pool access during host removal
commit 7f5203c13ba8a7b7f9f6ecfe5a4d5567188d7835 upstream.
The event pool used for queueing commands is destroyed fairly early in
the ibmvscsi_remove() code path. Since, this happens prior to the call
so scsi_remove_host() it is possible for further calls to queuecommand
to be processed which manifest as a panic due to a NULL pointer
dereference as seen here:
PANIC: "Unable to handle kernel paging request for data at address
0x00000000"
Context process backtrace:
DSISR: 0000000042000000 ????Syscall Result: 0000000000000000 4
[c000000002cb3820] memcpy_power7 at c000000000064204
[Link Register] [c000000002cb3820] ibmvscsi_send_srp_event at
d000000003ed14a4 5 [c000000002cb3920] ibmvscsi_send_srp_event at
d000000003ed14a4 [ibmvscsi] ?(unreliable) 6 [c000000002cb39c0]
ibmvscsi_queuecommand at d000000003ed2388 [ibmvscsi] 7
[c000000002cb3a70] scsi_dispatch_cmd at d00000000395c2d8 [scsi_mod] 8
[c000000002cb3af0] scsi_request_fn at d00000000395ef88 [scsi_mod] 9
[c000000002cb3be0] __blk_run_queue at c000000000429860 10
[c000000002cb3c10] blk_delay_work at c00000000042a0ec 11
[c000000002cb3c40] process_one_work at c0000000000dac30 12
[c000000002cb3cd0] worker_thread at c0000000000db110 13
[c000000002cb3d80] kthread at c0000000000e3378 14 [c000000002cb3e30]
ret_from_kernel_thread at c00000000000982c
The kernel buffer log is overfilled with this log:
[11261.952732] ibmvscsi: found no event struct in pool!
This patch reorders the operations during host teardown. Start by
calling the SRP transport and Scsi_Host remove functions to flush any
outstanding work and set the host offline. LLDD teardown follows
including destruction of the event pool, freeing the Command Response
Queue (CRQ), and unmapping any persistent buffers. The event pool
destruction is protected by the scsi_host lock, and the pool is purged
prior of any requests for which we never received a response. Finally,
move the removal of the scsi host from our global list to the end so
that the host is easily locatable for debugging purposes during
teardown.
Cc: <stable@vger.kernel.org> # v2.6.12+ Signed-off-by: Tyrel Datwyler
<tyreld@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/ibmvscsi/ibmvscsi.c (diff)
Commit 8dfb1e702caa46124669964fac5ebdab040137f3 by gregkh
futex: Ensure that futex address is aligned in handle_futex_death()
commit 5a07168d8d89b00fe1760120714378175b3ef992 upstream.
The futex code requires that the user space addresses of futexes are
32bit aligned. sys_futex() checks this in futex_get_keys() but the
robust list code has no alignment check in place.
As a consequence the kernel crashes on architectures with strict
alignment requirements in handle_futex_death() when trying to cmpxchg()
on an unaligned futex address which was retrieved from the robust list.
[ tglx: Rewrote changelog, proper sizeof() based alignement check and
add
comment ]
Fixes: 0771dfefc9e5 ("[PATCH] lightweight robust futexes: core")
Signed-off-by: Chen Jie <chenjie6@huawei.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Cc: <dvhart@infradead.org> Cc:
<peterz@infradead.org> Cc: <zengweilin@huawei.com> Cc:
stable@vger.kernel.org Link:
https://lkml.kernel.org/r/1552621478-119787-1-git-send-email-chenjie6@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/futex.c (diff)
Commit 3bff3aabd58634b437a1dd7a7c099c4f270abf89 by gregkh
cifs: allow guest mounts to work for smb3.11
commit e71ab2aa06f731a944993120b0eef1556c63b81c upstream.
Fix Guest/Anonymous sessions so that they work with SMB 3.11.
The commit noted below tightened the conditions and forced signing for
the SMB2-TreeConnect commands as per MS-SMB2. However, this should only
apply to normal user sessions and not for Guest/Anonumous sessions.
Fixes: 6188f28bf608 ("Tree connect for SMB3.1.1 must be signed for
non-encrypted shares")
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com> CC: Stable
<stable@vger.kernel.org> Signed-off-by: Steve French
<stfrench@microsoft.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/smb2pdu.c (diff)
Commit 198092b82db30f959e4999153d7a99f80b31f6f8 by gregkh
perf probe: Fix getting the kernel map
commit eaeffeb9838a7c0dec981d258666bfcc0fa6a947 upstream.
Since commit 4d99e4136580 ("perf machine: Workaround missing maps for
x86 PTI entry trampolines"), perf tools has been creating more than one
kernel map, however 'perf probe' assumed there could be only one.
Fix by using machine__kernel_map() to get the main kernel map.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Tested-by: Joseph
Qi <joseph.qi@linux.alibaba.com> Acked-by: Masami Hiramatsu
<mhiramat@kernel.org> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Andy Lutomirski
<luto@kernel.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiufei Xue <jiufei.xue@linux.alibaba.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: stable@vger.kernel.org Cc: Xu Yu
<xuyu@linux.alibaba.com> Fixes: 4d99e4136580 ("perf machine: Workaround
missing maps for x86 PTI entry trampolines") Fixes: d83212d5dd67
("kallsyms, x86: Export addresses of PTI entry trampolines") Link:
http://lkml.kernel.org/r/2ed432de-e904-85d2-5c36-5897ddc5b23b@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/probe-event.c (diff)
Commit dfa011546d27afb6c189261b5fb78db0bf9f44f3 by gregkh
objtool: Move objtool_file struct off the stack
commit 0c671812f152b628bd87c0af49da032cc2a2c319 upstream.
Objtool uses over 512k of stack, thanks to the hash table embedded in
the objtool_file struct.  This causes an unnecessarily large stack
allocation and breaks users with low stack limits.
Move the struct off the stack.
Fixes: 042ba73fe7eb ("objtool: Add several performance improvements")
Reported-by: Vassili Karpov <moosotc@gmail.com> Signed-off-by: Josh
Poimboeuf <jpoimboe@redhat.com> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
stable@vger.kernel.org Link:
https://lkml.kernel.org/r/df92dcbc4b84b02ffa252f46876df125fb56e2d7.1552954176.git.jpoimboe@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/objtool/check.c (diff)
Commit 70c1b15faf8b1885a89072d959869cd22a7bfafb by gregkh
irqchip/gic-v3-its: Fix comparison logic in lpi_range_cmp
commit 89dc891792c2e046b030f87600109c22209da32e upstream.
The lpi_range_list is supposed to be sorted in ascending order of
->base_id (at least if the range merging is to work), but the current
comparison function returns a positive value if rb->base_id >
ra->base_id, which means that list_sort() will put A after B in that
case - and vice versa, of course.
Fixes: 880cb3cddd16 (irqchip/gic-v3-its: Refactor LPI allocator) Cc:
stable@vger.kernel.org (v4.19+) Signed-off-by: Rasmus Villemoes
<linux@rasmusvillemoes.dk> Signed-off-by: Marc Zyngier
<marc.zyngier@arm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/irqchip/irq-gic-v3-its.c (diff)
Commit 809ecabb6d418d0f711d0cb0d58743c41d4be9f4 by gregkh
clocksource/drivers/riscv: Fix clocksource mask
commit 32d0be018f6f5ee2d5d19c4795304613560814cf upstream.
For all riscv architectures (RV32, RV64 and RV128), the clocksource is a
64 bit incrementing counter.
Fix the clock source mask accordingly.
Tested on both 64bit and 32 bit virt machine in QEMU.
Fixes: 62b019436814 ("clocksource: new RISC-V SBI timer driver")
Signed-off-by: Atish Patra <atish.patra@wdc.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Reviewed-by: Anup Patel
<anup@brainfault.org> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Daniel
Lezcano <daniel.lezcano@linaro.org> Cc: linux-riscv@lists.infradead.org
Cc: Palmer Dabbelt <palmer@sifive.com> Cc: Anup Patel
<Anup.Patel@wdc.com> Cc: Damien Le Moal <Damien.LeMoal@wdc.com> Cc:
stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190322215411.19362-1-atish.patra@wdc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clocksource/timer-riscv.c (diff)
Commit 2b1cf1a17a41c356981f25d31bb658df53d970dc by gregkh
SMB3: Fix SMB3.1.1 guest mounts to Samba
commit 8c11a607d1d9cd6e7f01fd6b03923597fb0ef95a upstream.
Workaround problem with Samba responses to SMB3.1.1 null user (guest)
mounts.  The server doesn't set the expected flag in the session setup
response so we have to do a similar check to what is done in
smb3_validate_negotiate where we also check if the user is a null user
(but not sec=krb5 since username might not be passed in on mount for
Kerberos case).
Note that the commit below tightened the conditions and forced signing
for the SMB2-TreeConnect commands as per MS-SMB2. However, this should
only apply to normal user sessions and not for cases where there is no
user (even if server forgets to set the flag in the response) since we
don't have anything useful to sign with. This is especially important
now that the more secure SMB3.1.1 protocol is in the default dialect
list.
An earlier patch ("cifs: allow guest mounts to work for smb3.11") fixed
the guest mounts to Windows.
    Fixes: 6188f28bf608 ("Tree connect for SMB3.1.1 must be signed for
non-encrypted shares")
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com> Reviewed-by: Paulo
Alcantara <palcantara@suse.de> CC: Stable <stable@vger.kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/smb2pdu.c (diff)
Commit 1fa1bfef5f4c526ab707101f900cc09587f1dd9a by gregkh
ALSA: hda - Don't trigger jackpoll_work in azx_resume
commit 744c67ffeb06f2d2493f4049ba0bd19698ce0adf upstream.
The commit 3baffc4a84d7 (ALSA: hda/intel: Refactoring PM code) changed
the behaviour of azx_resume(), it triggers the jackpoll_work after
applying this commit.
This change introduced a new issue, all codecs are runtime active after
S3, and will not call runtime_suspend() automatically.
The root cause is the jackpoll_work calls snd_hda_power_up/down_pm, and
it calls up_pm before snd_hdac_enter_pm is called, while calls the
down_pm in the middle of enter_pm and leave_pm is called. This makes the
dev->power.usage_count unbalanced after S3.
To fix it, let azx_resume() don't trigger jackpoll_work as before it
did.
Fixes: 3baffc4a84d7 ("ALSA: hda/intel: Refactoring PM code")
Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi
Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/hda_intel.c (diff)
Commit 5b099547f29d0e21c2982a4697ababd2f9dd55ea by gregkh
ALSA: ac97: Fix of-node refcount unbalance
commit 31d2350d602511efc9ef626b848fe521233b0387 upstream.
ac97_of_get_child_device() take the refcount of the node explicitly via
of_node_get(), but this leads to an unbalance.  The
for_each_child_of_node() loop itself takes the refcount for each
iteration node, hence you don't need to take the extra refcount again.
Fixes: 2225a3e6af78 ("ALSA: ac97: add codecs devicetree binding")
Reviewed-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/ac97/bus.c (diff)
Commit 635218fee409e6f02f220d12a86b3ef79a9c9170 by gregkh
ext4: fix NULL pointer dereference while journal is aborted
commit fa30dde38aa8628c73a6dded7cb0bba38c27b576 upstream.
We see the following NULL pointer dereference while running xfstests
generic/475: BUG: unable to handle kernel NULL pointer dereference at
0000000000000008 PGD 8000000c84bad067 P4D 8000000c84bad067 PUD c84e62067
PMD 0 Oops: 0000 [#1] SMP PTI CPU: 7 PID: 9886 Comm: fsstress Kdump:
loaded Not tainted 5.0.0-rc8 #10 RIP:
0010:ext4_do_update_inode+0x4ec/0x760
... Call Trace:
? jbd2_journal_get_write_access+0x42/0x50
? __ext4_journal_get_write_access+0x2c/0x70
? ext4_truncate+0x186/0x3f0 ext4_mark_iloc_dirty+0x61/0x80
ext4_mark_inode_dirty+0x62/0x1b0 ext4_truncate+0x186/0x3f0
? unmap_mapping_pages+0x56/0x100 ext4_setattr+0x817/0x8b0
notify_change+0x1df/0x430 do_truncate+0x5e/0x90
? generic_permission+0x12b/0x1a0
This is triggered because the NULL pointer handle->h_transaction was
dereferenced in function ext4_update_inode_fsync_trans(). I found that
the h_transaction was set to NULL in jbd2__journal_restart but failed to
attached to a new transaction while the journal is aborted.
Fix this by checking the handle before updating the inode.
Fixes: b436b9bef84d ("ext4: Wait for proper transaction commit on
fsync") Signed-off-by: Jiufei Xue <jiufei.xue@linux.alibaba.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Joseph Qi
<joseph.qi@linux.alibaba.com> Cc: stable@kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ext4_jbd2.h (diff)
Commit f1902fd02d56a912b56a5eaa43d51221d8d3224b by gregkh
ext4: fix data corruption caused by unaligned direct AIO
commit 372a03e01853f860560eade508794dd274e9b390 upstream.
Ext4 needs to serialize unaligned direct AIO because the zeroing of
partial blocks of two competing unaligned AIOs can result in data
corruption.
However it decides not to serialize if the potentially unaligned aio is
past i_size with the rationale that no pending writes are possible past
i_size. Unfortunately if the i_size is not block aligned and the second
unaligned write lands past i_size, but still into the same block, it has
the potential of corrupting the previous unaligned write to the same
block.
This is (very simplified) reproducer from Frank
    // 41472 = (10 * 4096) + 512
   // 37376 = 41472 - 4096
    ftruncate(fd, 41472);
   io_prep_pwrite(iocbs[0], fd, buf[0], 4096, 37376);
   io_prep_pwrite(iocbs[1], fd, buf[1], 4096, 41472);
    io_submit(io_ctx, 1, &iocbs[1]);
   io_submit(io_ctx, 1, &iocbs[2]);
    io_getevents(io_ctx, 2, 2, events, NULL);
Without this patch the 512B range from 40960 up to the start of the
second unaligned write (41472) is going to be zeroed overwriting the
data written by the first write. This is a data corruption.
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
* 00009200  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30
* 0000a000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
* 0000a200  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31
With this patch the data corruption is avoided because we will recognize
the unaligned_aio and wait for the unwritten extent conversion.
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
* 00009200  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30
* 0000a200  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31
* 0000b200
Reported-by: Frank Sorenson <fsorenso@redhat.com> Signed-off-by: Lukas
Czerner <lczerner@redhat.com> Signed-off-by: Theodore Ts'o
<tytso@mit.edu> Fixes: e9e3bcecf44c ("ext4: serialize unaligned
asynchronous DIO") Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/file.c (diff)
Commit c29313c07f2d956c4c6c34ce998beabeddc1f5ff by gregkh
ext4: brelse all indirect buffer in ext4_ind_remove_space()
commit 674a2b27234d1b7afcb0a9162e81b2e53aeef217 upstream.
All indirect buffers get by ext4_find_shared() should be released no
mater the branch should be freed or not. But now, we forget to release
the lower depth indirect buffers when removing space from the same
higher depth indirect block. It will lead to buffer leak and futher
more, it may lead to quota information corruption when using old quota,
consider the following case.
- Create and mount an empty ext4 filesystem without extent and quota
  features,
- quotacheck and enable the user & group quota,
- Create some files and write some data to them, and then punch hole
  to some files of them, it may trigger the buffer leak problem
  mentioned above.
- Disable quota and run quotacheck again, it will create two new
  aquota files and write the checked quota information to them, which
  probably may reuse the freed indirect block(the buffer and page
  cache was not freed) as data block.
- Enable quota again, it will invoke
  vfs_load_quota_inode()->invalidate_bdev() to try to clean unused
  buffers and pagecache. Unfortunately, because of the buffer of quota
  data block is still referenced, quota code cannot read the up to date
  quota info from the device and lead to quota information corruption.
This problem can be reproduced by xfstests generic/231 on ext3 file
system or ext4 file system without extent and quota features.
This patch fix this problem by releasing the missing indirect buffers,
in ext4_ind_remove_space().
Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: zhangyi (F)
<yi.zhang@huawei.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz> Cc: stable@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/indirect.c (diff)
Commit c35a32eb2339531f0ecd502c397f9cc2b87c4c54 by gregkh
media: v4l2-ctrls.c/uvc: zero v4l2_event
commit f45f3f753b0a3d739acda8e311b4f744d82dc52a upstream.
Control events can leak kernel memory since they do not fully zero the
event. The same code is present in both v4l2-ctrls.c and uvc_ctrl.c, so
fix both.
It appears that all other event code is properly zeroing the structure,
it's these two places.
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Reported-by:
syzbot+4f021cf3697781dbd9fb@syzkaller.appspotmail.com Reviewed-by:
Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by:
Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/media/usb/uvc/uvc_ctrl.c (diff)
The file was modifieddrivers/media/v4l2-core/v4l2-ctrls.c (diff)
Commit 572ae5c7646b36b06d8431682ebfca66229b2ff4 by gregkh
Bluetooth: hci_uart: Check if socket buffer is ERR_PTR in h4_recv_buf()
commit 1dc2d785156cbdc80806c32e8d2c7c735d0b4721 upstream.
h4_recv_buf() callers store the return value to socket buffer and
recursively pass the buffer to h4_recv_buf() without protection. So,
ERR_PTR returned from h4_recv_buf() can be dereferenced, if called again
before setting the socket buffer to NULL from previous error. Check if
skb is ERR_PTR in h4_recv_buf().
Reported-by: syzbot+017a32f149406df32703@syzkaller.appspotmail.com
Signed-off-by: Myungho Jung <mhjungk@gmail.com> Signed-off-by: Marcel
Holtmann <marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/bluetooth/hci_h4.c (diff)
The file was modifieddrivers/bluetooth/h4_recv.h (diff)
Commit 4d18023ade55906b1e1f4983f59082f747499778 by gregkh
Bluetooth: Fix decrementing reference count twice in releasing socket
commit e20a2e9c42c9e4002d9e338d74e7819e88d77162 upstream.
When releasing socket, it is possible to enter hci_sock_release() and
hci_sock_dev_event(HCI_DEV_UNREG) at the same time in different thread.
The reference count of hdev should be decremented only once from one of
them but if storing hdev to local variable in hci_sock_release() before
detached from socket and setting to NULL in hci_sock_dev_event(),
hci_dev_put(hdev) is unexpectedly called twice. This is resolved by
referencing hdev from socket after bt_sock_unlink() in
hci_sock_release().
Reported-by: syzbot+fdc00003f4efff43bc5b@syzkaller.appspotmail.com
Signed-off-by: Myungho Jung <mhjungk@gmail.com> Signed-off-by: Marcel
Holtmann <marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/bluetooth/hci_sock.c (diff)
Commit c8d311117c3e45b55794ace66e098f6b622c356e by gregkh
Bluetooth: hci_ldisc: Initialize hci_dev before open()
commit 32a7b4cbe93b0a0ef7e63d31ca69ce54736c4412 upstream.
The hci_dev struct hdev is referenced in work queues and timers started
by open() in some protocols. This creates a race between the
initialization function and the work or timer which can result hdev
being dereferenced while it is still null.
The syzbot report contains a reliable reproducer which causes a null
pointer dereference of hdev in hci_uart_write_work() by making the
memory allocation for hdev fail.
To fix this, ensure hdev is valid from before calling a protocol's
open() until after calling a protocol's close().
Reported-by: syzbot+257790c15bcdef6fe00c@syzkaller.appspotmail.com
Signed-off-by: Jeremy Cline <jcline@redhat.com> Signed-off-by: Marcel
Holtmann <marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/bluetooth/hci_ldisc.c (diff)
Commit 35228ce61a8160199d1ea4ced956116bba686192 by gregkh
Bluetooth: hci_ldisc: Postpone HCI_UART_PROTO_READY bit set in
hci_uart_set_proto()
commit 56897b217a1d0a91c9920cb418d6b3fe922f590a upstream.
task A:                                task B: hci_uart_set_proto      
             flush_to_ldisc
- p->open(hu) -> h5_open  //alloc h5  - receive_buf
- set_bit HCI_UART_PROTO_READY         - tty_port_default_receive_buf
- hci_uart_register_dev                 - tty_ldisc_receive_buf
                                         - hci_uart_tty_receive
           - test_bit HCI_UART_PROTO_READY
            - h5_recv
- clear_bit HCI_UART_PROTO_READY             while() {
- p->open(hu) -> h5_close //free h5
              - h5_rx_3wire_hdr
               - h5_reset()  //use-after-free
                                             }
It could use ioctl to set hci uart proto, but there is a use-after-free
issue when hci_uart_register_dev() fail in hci_uart_set_proto(), see
stack above, fix this by setting HCI_UART_PROTO_READY bit only when
hci_uart_register_dev() return success.
Reported-by: syzbot+899a33dc0fa0dbaf06a6@syzkaller.appspotmail.com
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> Reviewed-by:
Jeremy Cline <jcline@redhat.com> Signed-off-by: Marcel Holtmann
<marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/bluetooth/hci_ldisc.c (diff)
Commit 244594c5f5c80c6505b4dd6a94bd1b847d24f38e by gregkh
drm/vkms: Fix flush_work() without INIT_WORK().
commit b30b61ff6b1dc37f276cf56a8328b80086a3ffca upstream.
syzbot is hitting a lockdep warning [1] because flush_work() is called
without INIT_WORK() after kzalloc() at vkms_atomic_crtc_reset().
Commit 6c234fe37c57627a ("drm/vkms: Implement CRC debugfs API") added
INIT_WORK() to only vkms_atomic_crtc_duplicate_state() side. Assuming
that lifecycle of crc_work is appropriately managed, fix this problem by
adding INIT_WORK() to vkms_atomic_crtc_reset() side.
[1]
https://syzkaller.appspot.com/bug?id=a5954455fcfa51c29ca2ab55b203076337e1c770
Reported-and-tested-by: syzbot
<syzbot+12f1b031b6da017e34f8@syzkaller.appspotmail.com> Signed-off-by:
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Reviewed-by: Shayenne
Moura <shayenneluzmoura@gmail.com> Signed-off-by: Daniel Vetter
<daniel.vetter@ffwll.ch> Link:
https://patchwork.freedesktop.org/patch/msgid/1547829823-9877-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/vkms/vkms_crtc.c (diff)
Commit 648562c0a9583ec4927c7d5eba5259fe7785d314 by gregkh
RDMA/cma: Rollback source IP address if failing to acquire device
commit 5fc01fb846bce8fa6d5f95e2625b8ce0f8e86810 upstream.
If cma_acquire_dev_by_src_ip() returns error in addr_handler(), the
device state changes back to RDMA_CM_ADDR_BOUND but the resolved source
IP address is still left. After that, if rdma_destroy_id() is called
after rdma_listen(), the device is freed without removed from
listen_any_list in cma_cancel_operation(). Revert to the previous IP
address if acquiring device fails.
Reported-by: syzbot+f3ce716af730c8f96637@syzkaller.appspotmail.com
Signed-off-by: Myungho Jung <mhjungk@gmail.com> Reviewed-by: Parav
Pandit <parav@mellanox.com> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/infiniband/core/cma.c (diff)
Commit 1c0fc5e9cb408b41ff7c5f3c1ed102c94ce98f50 by gregkh
f2fs: fix to avoid deadlock of atomic file operations
commit 48432984d718c95cf13e26d487c2d1b697c3c01f upstream.
Thread A Thread B
- __fput
- f2fs_release_file
- drop_inmem_pages
  - mutex_lock(&fi->inmem_lock)
  - __revoke_inmem_pages
   - lock_page(page)
- open
- f2fs_setattr
- truncate_setsize
- truncate_inode_pages_range
  - lock_page(page)
  - truncate_cleanup_page
   - f2fs_invalidate_page
    - drop_inmem_page
    - mutex_lock(&fi->inmem_lock);
We may encounter above ABBA deadlock as reported by Kyungtae Kim:
I'm reporting a bug in linux-4.17.19: "INFO: task hung in
drop_inmem_page" (no reproducer)
I think this might be somehow related to the following:
https://groups.google.com/forum/#!searchin/syzkaller-bugs/INFO$3A$20task$20hung$20in$20%7Csort:date/syzkaller-bugs/c6soBTrdaIo/AjAzPeIzCgAJ
========================================= INFO: task syz-executor7:10822
blocked for more than 120 seconds.
     Not tainted 4.17.19 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
message. syz-executor7   D27024 10822   6346 0x00000004 Call Trace:
context_switch kernel/sched/core.c:2867 [inline]
__schedule+0x721/0x1e60 kernel/sched/core.c:3515
schedule+0x88/0x1c0 kernel/sched/core.c:3559
schedule_preempt_disabled+0x18/0x30 kernel/sched/core.c:3617
__mutex_lock_common kernel/locking/mutex.c:833 [inline]
__mutex_lock+0x5bd/0x1410 kernel/locking/mutex.c:893
mutex_lock_nested+0x1b/0x20 kernel/locking/mutex.c:908
drop_inmem_page+0xcb/0x810 fs/f2fs/segment.c:327
f2fs_invalidate_page+0x337/0x5e0 fs/f2fs/data.c:2401
do_invalidatepage mm/truncate.c:165 [inline]
truncate_cleanup_page+0x261/0x330 mm/truncate.c:187
truncate_inode_pages_range+0x552/0x1610 mm/truncate.c:367
truncate_inode_pages mm/truncate.c:478 [inline]
truncate_pagecache+0x6d/0x90 mm/truncate.c:801
truncate_setsize+0x81/0xa0 mm/truncate.c:826
f2fs_setattr+0x44f/0x1270 fs/f2fs/file.c:781
notify_change+0xa62/0xe80 fs/attr.c:313
do_truncate+0x12e/0x1e0 fs/open.c:63
do_last fs/namei.c:2955 [inline]
path_openat+0x2042/0x29f0 fs/namei.c:3505
do_filp_open+0x1bd/0x2c0 fs/namei.c:3540
do_sys_open+0x35e/0x4e0 fs/open.c:1101
__do_sys_open fs/open.c:1119 [inline]
__se_sys_open fs/open.c:1114 [inline]
__x64_sys_open+0x89/0xc0 fs/open.c:1114
do_syscall_64+0xc4/0x4e0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x4497b9 RSP:
002b:00007f734e459c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000002 RAX:
ffffffffffffffda RBX: 00007f734e45a6cc RCX: 00000000004497b9 RDX:
0000000000000104 RSI: 00000000000a8280 RDI: 0000000020000080 RBP:
000000000071bea0 R08: 0000000000000000 R09: 0000000000000000 R10:
0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff R13:
0000000000007230 R14: 00000000006f02d0 R15: 00007f734e45a700 INFO: task
syz-executor7:10858 blocked for more than 120 seconds.
     Not tainted 4.17.19 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
message. syz-executor7   D28880 10858   6346 0x00000004 Call Trace:
context_switch kernel/sched/core.c:2867 [inline]
__schedule+0x721/0x1e60 kernel/sched/core.c:3515
schedule+0x88/0x1c0 kernel/sched/core.c:3559
__rwsem_down_write_failed_common kernel/locking/rwsem-xadd.c:565
[inline]
rwsem_down_write_failed+0x5e6/0xc90 kernel/locking/rwsem-xadd.c:594
call_rwsem_down_write_failed+0x17/0x30 arch/x86/lib/rwsem.S:117
__down_write arch/x86/include/asm/rwsem.h:142 [inline]
down_write+0x58/0xa0 kernel/locking/rwsem.c:72
inode_lock include/linux/fs.h:713 [inline]
do_truncate+0x120/0x1e0 fs/open.c:61
do_last fs/namei.c:2955 [inline]
path_openat+0x2042/0x29f0 fs/namei.c:3505
do_filp_open+0x1bd/0x2c0 fs/namei.c:3540
do_sys_open+0x35e/0x4e0 fs/open.c:1101
__do_sys_open fs/open.c:1119 [inline]
__se_sys_open fs/open.c:1114 [inline]
__x64_sys_open+0x89/0xc0 fs/open.c:1114
do_syscall_64+0xc4/0x4e0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x4497b9 RSP:
002b:00007f734e3b4c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000002 RAX:
ffffffffffffffda RBX: 00007f734e3b56cc RCX: 00000000004497b9 RDX:
0000000000000104 RSI: 00000000000a8280 RDI: 0000000020000080 RBP:
000000000071c238 R08: 0000000000000000 R09: 0000000000000000 R10:
0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff R13:
0000000000007230 R14: 00000000006f02d0 R15: 00007f734e3b5700 INFO: task
syz-executor5:10829 blocked for more than 120 seconds.
     Not tainted 4.17.19 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
message. syz-executor5   D28760 10829   6308 0x80000002 Call Trace:
context_switch kernel/sched/core.c:2867 [inline]
__schedule+0x721/0x1e60 kernel/sched/core.c:3515
schedule+0x88/0x1c0 kernel/sched/core.c:3559
io_schedule+0x21/0x80 kernel/sched/core.c:5179
wait_on_page_bit_common mm/filemap.c:1100 [inline]
__lock_page+0x2b5/0x390 mm/filemap.c:1273
lock_page include/linux/pagemap.h:483 [inline]
__revoke_inmem_pages+0xb35/0x11c0 fs/f2fs/segment.c:231
drop_inmem_pages+0xa3/0x3e0 fs/f2fs/segment.c:306
f2fs_release_file+0x2c7/0x330 fs/f2fs/file.c:1556
__fput+0x2c7/0x780 fs/file_table.c:209
____fput+0x1a/0x20 fs/file_table.c:243
task_work_run+0x151/0x1d0 kernel/task_work.c:113
exit_task_work include/linux/task_work.h:22 [inline]
do_exit+0x8ba/0x30a0 kernel/exit.c:865
do_group_exit+0x13b/0x3a0 kernel/exit.c:968
get_signal+0x6bb/0x1650 kernel/signal.c:2482
do_signal+0x84/0x1b70 arch/x86/kernel/signal.c:810
exit_to_usermode_loop+0x155/0x190 arch/x86/entry/common.c:162
prepare_exit_to_usermode arch/x86/entry/common.c:196 [inline]
syscall_return_slowpath arch/x86/entry/common.c:265 [inline]
do_syscall_64+0x445/0x4e0 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x4497b9 RSP:
002b:00007f1c68e74ce8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca RAX:
fffffffffffffe00 RBX: 000000000071bf80 RCX: 00000000004497b9 RDX:
0000000000000000 RSI: 0000000000000000 RDI: 000000000071bf80 RBP:
000000000071bf80 R08: 0000000000000000 R09: 000000000071bf58 R10:
0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13:
0000000000000000 R14: 00007f1c68e759c0 R15: 00007f1c68e75700
This patch tries to use trylock_page to mitigate such deadlock condition
for fix.
Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim
<jaegeuk@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/f2fs/segment.c (diff)
Commit a179695eddd9f94e89ede2cbbf2b27cf748d5070 by gregkh
aio: simplify - and fix - fget/fput for io_submit()
commit 84c4e1f89fefe70554da0ab33be72c9be7994379 upstream.
Al Viro root-caused a race where the IOCB_CMD_POLL handling of
fget/fput() could cause us to access the file pointer after it had
already been freed:
"In more details - normally IOCB_CMD_POLL handling looks so:
   1) io_submit(2) allocates aio_kiocb instance and passes it to
     aio_poll()
   2) aio_poll() resolves the descriptor to struct file by req->file =
     fget(iocb->aio_fildes)
   3) aio_poll() sets ->woken to false and raises ->ki_refcnt of that
     aio_kiocb to 2 (bumps by 1, that is).
   4) aio_poll() calls vfs_poll(). After sanity checks (basically,
     "poll_wait() had been called and only once") it locks the queue.
     That's what the extra reference to iocb had been for - we know we
     can safely access it.
   5) With queue locked, we check if ->woken has already been set to
     true (by aio_poll_wake()) and, if it had been, we unlock the
     queue, drop a reference to aio_kiocb and bugger off - at that
     point it's a responsibility to aio_poll_wake() and the stuff
     called/scheduled by it. That code will drop the reference to file
     in req->file, along with the other reference to our aio_kiocb.
   6) otherwise, we see whether we need to wait. If we do, we unlock the
     queue, drop one reference to aio_kiocb and go away - eventual
     wakeup (or cancel) will deal with the reference to file and with
     the other reference to aio_kiocb
   7) otherwise we remove ourselves from waitqueue (still under the
     queue lock), so that wakeup won't get us. No async activity will
     be happening, so we can safely drop req->file and iocb ourselves.
  If wakeup happens while we are in vfs_poll(), we are fine - aio_kiocb
won't get freed under us, so we can do all the checks and locking
safely. And we don't touch ->file if we detect that case.
  However, vfs_poll() most certainly *does* touch the file it had been
given. So wakeup coming while we are still in ->poll() might end up
doing fput() on that file. That case is not too rare, and usually we
are saved by the still present reference from descriptor table - that
fput() is not the final one.
  But if another thread closes that descriptor right after our fget()
and wakeup does happen before ->poll() returns, we are in trouble -
final fput() done while we are in the middle of a method:
Al also wrote a patch to take an extra reference to the file descriptor
to fix this, but I instead suggested we just streamline the whole file
pointer handling by submit_io() so that the generic aio submission code
simply keeps the file pointer around until the aio has completed.
Fixes: bfe4037e722e ("aio: implement IOCB_CMD_POLL") Acked-by: Al Viro
<viro@zeniv.linux.org.uk> Reported-by:
syzbot+503d4cc169fcec1cb18c@syzkaller.appspotmail.com Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/aio.c (diff)
The file was modifiedinclude/linux/fs.h (diff)
Commit da75d37754011753db79d5d93fb9a2517446c3e6 by gregkh
netfilter: ebtables: remove BUGPRINT messages
commit d824548dae220820bdf69b2d1561b7c4b072783f upstream.
They are however frequently triggered by syzkaller, so remove them.
ebtables userspace should never trigger any of these, so there is little
value in making them pr_debug (or ratelimited).
Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo
Neira Ayuso <pablo@netfilter.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/bridge/netfilter/ebtables.c (diff)
Commit 1e641e63fe0c969ae21f46d739bc5b181911f1ba by gregkh
loop: access lo_backing_file only when the loop device is Lo_bound
commit f7c8a4120eedf24c36090b7542b179ff7a649219 upstream.
Commit 758a58d0bc67 ("loop: set GENHD_FL_NO_PART_SCAN after
blkdev_reread_part()") separates "lo->lo_backing_file = NULL" and
"lo->lo_state = Lo_unbound" into different critical regions protected by
loop_ctl_mutex.
However, there is below race that the NULL lo->lo_backing_file would be
accessed when the backend of a loop is another loop device, e.g.,
loop0's backend is a file, while loop1's backend is loop0.
loop0's backend is file            loop1's backend is loop0
__loop_clr_fd()
mutex_lock(&loop_ctl_mutex);
lo->lo_backing_file = NULL; --> set to NULL
mutex_unlock(&loop_ctl_mutex);
                                  loop_set_fd()
                                  
mutex_lock_killable(&loop_ctl_mutex);
                                    loop_validate_file()
                                      f = l->lo_backing_file; --> NULL
                                        access if loop0 is not
Lo_unbound
mutex_lock(&loop_ctl_mutex);
lo->lo_state = Lo_unbound;
mutex_unlock(&loop_ctl_mutex);
lo->lo_backing_file should be accessed only when the loop device is
Lo_bound.
In fact, the problem has been introduced already in commit 7ccd0791d985
("loop: Push loop_ctl_mutex down into loop_clr_fd()") after which
loop_validate_file() could see devices in Lo_rundown state with which it
did not count. It was harmless at that point but still.
Fixes: 7ccd0791d985 ("loop: Push loop_ctl_mutex down into
loop_clr_fd()") Reported-by:
syzbot+9bdc1adc1c55e7fe765b@syzkaller.appspotmail.com Signed-off-by:
Dongli Zhang <dongli.zhang@oracle.com> Reviewed-by: Jan Kara
<jack@suse.cz> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/block/loop.c (diff)
Commit 0312f3032e35670043fd14f5773f450ae13bd09c by gregkh
x86/unwind: Handle NULL pointer calls better in frame unwinder
commit f4f34e1b82eb4219d8eaa1c7e2e17ca219a6a2b5 upstream.
When the frame unwinder is invoked for an oops caused by a call to NULL,
it currently skips the parent function because BP still points to the
parent's stack frame; the (nonexistent) current function only has the
first half of a stack frame, and BP doesn't point to it yet.
Add a special case for IP==0 that calculates a fake BP from SP, then
uses the real BP for the next frame.
Note that this handles first_frame specially: Return information about
the parent function as long as the saved IP is >=first_frame, even if
the fake BP points below it.
With an artificially-added NULL call in prctl_set_seccomp(), before this
patch, the trace is:
Call Trace:
? prctl_set_seccomp+0x3a/0x50
__x64_sys_prctl+0x457/0x6f0
? __ia32_sys_prctl+0x750/0x750
do_syscall_64+0x72/0x160
entry_SYSCALL_64_after_hwframe+0x44/0xa9
After this patch, the trace is:
Call Trace:
prctl_set_seccomp+0x3a/0x50
__x64_sys_prctl+0x457/0x6f0
? __ia32_sys_prctl+0x750/0x750
do_syscall_64+0x72/0x160
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Acked-by: Josh Poimboeuf
<jpoimboe@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Andrew
Morton <akpm@linux-foundation.org> Cc: syzbot
<syzbot+ca95b2b7aef9e7cbd6ab@syzkaller.appspotmail.com> Cc: "H. Peter
Anvin" <hpa@zytor.com> Cc: Masahiro Yamada
<yamada.masahiro@socionext.com> Cc: Michal Marek
<michal.lkml@markovi.net> Cc: linux-kbuild@vger.kernel.org Link:
https://lkml.kernel.org/r/20190301031201.7416-1-jannh@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/include/asm/unwind.h (diff)
The file was modifiedarch/x86/kernel/unwind_frame.c (diff)
Commit 0830cf62f5290b2f878faacc2b6f32e77bc2ea12 by gregkh
x86/unwind: Add hardcoded ORC entry for NULL
commit ac5ceccce5501e43d217c596e4ee859f2a3fef79 upstream.
When the ORC unwinder is invoked for an oops caused by IP==0, it
currently has no idea what to do because there is no debug information
for the stack frame of NULL.
But if RIP is NULL, it is very likely that the last successfully
executed instruction was an indirect CALL/JMP, and it is possible to
unwind out in the same way as for the first instruction of a normal
function. Hardcode a corresponding ORC entry.
With an artificially-added NULL call in prctl_set_seccomp(), before this
patch, the trace is:
Call Trace:
? __x64_sys_prctl+0x402/0x680
? __ia32_sys_prctl+0x6e0/0x6e0
? __do_page_fault+0x457/0x620
? do_syscall_64+0x6d/0x160
? entry_SYSCALL_64_after_hwframe+0x44/0xa9
After this patch, the trace looks like this:
Call Trace:
__x64_sys_prctl+0x402/0x680
? __ia32_sys_prctl+0x6e0/0x6e0
? __do_page_fault+0x457/0x620
do_syscall_64+0x6d/0x160
entry_SYSCALL_64_after_hwframe+0x44/0xa9
prctl_set_seccomp() still doesn't show up in the trace because for some
reason, tail call optimization is only disabled in builds that use the
frame pointer unwinder.
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Acked-by: Josh Poimboeuf
<jpoimboe@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Andrew
Morton <akpm@linux-foundation.org> Cc: syzbot
<syzbot+ca95b2b7aef9e7cbd6ab@syzkaller.appspotmail.com> Cc: "H. Peter
Anvin" <hpa@zytor.com> Cc: Masahiro Yamada
<yamada.masahiro@socionext.com> Cc: Michal Marek
<michal.lkml@markovi.net> Cc: linux-kbuild@vger.kernel.org Link:
https://lkml.kernel.org/r/20190301031201.7416-2-jannh@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/unwind_orc.c (diff)
Commit 8bc3816d65668a4ce2b7347fdecc95bebdce6ff6 by gregkh
locking/lockdep: Add debug_locks check in __lock_downgrade()
commit 71492580571467fb7177aade19c18ce7486267f5 upstream.
Tetsuo Handa had reported he saw an incorrect "downgrading a read lock"
warning right after a previous lockdep warning. It is likely that the
previous warning turned off lock debugging causing the lockdep to have
inconsistency states leading to the lock downgrade warning.
Fix that by add a check for debug_locks at the beginning of
__lock_downgrade().
Debugged-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Reported-by: syzbot+53383ae265fb161ef488@syzkaller.appspotmail.com
Signed-off-by: Waiman Long <longman@redhat.com> Signed-off-by: Peter
Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton
<akpm@linux-foundation.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Paul E. McKenney
<paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will Deacon
<will.deacon@arm.com> Link:
https://lkml.kernel.org/r/1547093005-26085-1-git-send-email-longman@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/locking/lockdep.c (diff)
Commit 6c77789fb46e9ef076fb688383fcc6766e44d288 by gregkh
ALSA: hda - Record the current power state before suspend/resume calls
commit 98081ca62cbac31fb0f7efaf90b2e7384ce22257 upstream.
Currently we deal with single codec and suspend codec callbacks for all
S3, S4 and runtime PM handling.  But it turned out that we want
distinguish the call patterns sometimes, e.g. for applying some init
sequence only at probing and restoring from hibernate.
This patch slightly modifies the common PM callbacks for HD-audio codec
and stores the currently processed PM event in power_state of the
codec's device.power field, which is currently unused.  The codec
callback can take a look at this event value and judges which purpose
it's being called.
Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/hda_codec.c (diff)
Commit a57af6d07512716b78f1a32d9426bcdf6aafc50c by gregkh
ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec
commit b5a236c175b0d984552a5f7c9d35141024c2b261 upstream.
Recently we found the audio jack detection stop working after suspend on
many machines with Realtek codec. Sometimes the audio selection dialogue
didn't show up after users plugged headhphone/headset into the headset
jack, sometimes after uses plugged headphone/headset, then click the
sound icon on the upper-right corner of gnome-desktop, it also showed
the speaker rather than the headphone.
The root cause is that before suspend, the codec already call the
runtime_suspend since this codec is not used by any apps, then in
resume, it will not call runtime_resume for this codec. But for some
realtek codec (so far, alc236, alc255 and alc891) with the specific
BIOS, if it doesn't run runtime_resume after suspend, all codec
functions including jack detection stop working anymore.
This problem existed for a long time, but it was not exposed, that is
because when problem happens, if users play sound or open sound-setting
to check audio device, this will trigger calling to runtime_resume (via
snd_hda_power_up), then the codec starts working again before users
notice this problem.
Since we don't know how many codec and BIOS combinations have this
problem, to fix it, let the driver call runtime_resume for all codecs in
pm_resume, maybe for some codecs, this is not needed, but it is
harmless. After a codec is runtime resumed, if it is not used by any
apps, it will be runtime suspended soon and furthermore we don't run
suspend frequently, this change will not add much power consumption.
Fixes: cc72da7d4d06 ("ALSA: hda - Use standard runtime PM for codec
power-save control") Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/hda_codec.c (diff)
The file was modifiedMakefile (diff)
Commit 8dac9b8d27b504734429cb0be541425a216ccba2 by gregkh
Bluetooth: Check L2CAP option sizes returned from l2cap_get_conf_opt
commit af3d5d1c87664a4f150fcf3534c6567cb19909b0 upstream.
When doing option parsing for standard type values of 1, 2 or 4 octets,
the value is converted directly into a variable instead of a pointer. To
avoid being tricked into being a pointer, check that for these option
types that sizes actually match. In L2CAP every option is fixed size and
thus it is prudent anyway to ensure that the remote side sends us the
right option size along with option paramters.
If the option size is not matching the option type, then that option is
silently ignored. It is a protocol violation and instead of trying to
give the remote attacker any further hints just pretend that option is
not present and proceed with the default values. Implementation
following the specification and its qualification procedures will always
use the correct size and thus not being impacted here.
To keep the code readable and consistent accross all options, a few
cosmetic changes were also required.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Reviewed-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Johan Hedberg
<johan.hedberg@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/bluetooth/l2cap_core.c (diff)
Commit a556547bae00528f24b42786b41a14047db14b84 by gregkh
Bluetooth: Verify that l2cap_get_conf_opt provides large enough buffer
commit 7c9cbd0b5e38a1672fcd137894ace3b042dfbf69 upstream.
The function l2cap_get_conf_opt will return L2CAP_CONF_OPT_SIZE +
opt->len as length value. The opt->len however is in control over the
remote user and can be used by an attacker to gain access beyond the
bounds of the actual packet.
To prevent any potential leak of heap memory, it is enough to check that
the resulting len calculation after calling l2cap_get_conf_opt is not
below zero. A well formed packet will always return >= 0 here and will
end with the length value being zero after the last option has been
parsed. In case of malformed packets messing with the opt->len field the
length value will become negative. If that is the case, then just abort
and ignore the option.
In case an attacker uses a too short opt->len value, then garbage will
be parsed, but that is protected by the unknown option handling and also
the option parameter size checks.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Reviewed-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Johan Hedberg
<johan.hedberg@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/bluetooth/l2cap_core.c (diff)
Commit 400dded59397da860e31f42810c027c115067dcb by gregkh
netfilter: nf_tables: fix set double-free in abort path
[ Upstream commit 40ba1d9b4d19796afc9b7ece872f5f3e8f5e2c13 ]
The abort path can cause a double-free of an anonymous set.
Added-and-to-be-aborted rule looks like this:
udp dport { 137, 138 } drop
The to-be-aborted transaction list looks like this:
newset newsetelem newsetelem rule
This gets walked in reverse order, so first pass disables the rule, the
set elements, then the set.
After synchronize_rcu(), we then destroy those in same order: rule, set
element, set element, newset.
Problem is that the anonymous set has already been bound to the rule, so
the rule (lookup expression destructor) already frees the set, when then
cause use-after-free when trying to delete the elements from this set,
then try to free the set again when handling the newset expression.
Rule releases the bound set in first place from the abort path, this
causes the use-after-free on set element removal when undoing the new
element transactions. To handle this, skip new element transaction if
set is bound from the abort path.
This is still causes the use-after-free on set element removal.  To
handle this, remove transaction from the list when the set is already
bound.
Joint work with Florian Westphal.
Fixes: f6ac85858976 ("netfilter: nf_tables: unbind set in rule from
commit path") Bugzilla:
https://bugzilla.netfilter.org/show_bug.cgi?id=1325 Acked-by: Florian
Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso
<pablo@netfilter.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedinclude/net/netfilter/nf_tables.h (diff)
The file was modifiednet/netfilter/nf_tables_api.c (diff)
Commit 3b58f24bdfec7d0297da4c304107364d95271607 by gregkh
dccp: do not use ipv6 header for ipv4 flow
[ Upstream commit e0aa67709f89d08c8d8e5bdd9e0b649df61d0090 ]
When a dual stack dccp listener accepts an ipv4 flow, it should not
attempt to use an ipv6 header or inet6_iif() helper.
Fixes: 3df80d9320bc ("[DCCP]: Introduce DCCPv6") Signed-off-by: Eric
Dumazet <edumazet@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/dccp/ipv6.c (diff)
Commit bd60a788b10b6b10cc7d53a41a8a53a300705690 by gregkh
genetlink: Fix a memory leak on error path
[ Upstream commit ceabee6c59943bdd5e1da1a6a20dc7ee5f8113a2 ]
In genl_register_family(), when idr_alloc() fails, we forget to free the
memory we possibly allocate for family->attrbuf.
Reported-by: Hulk Robot <hulkci@huawei.com> Fixes: 2ae0f17df1cd
("genetlink: use idr to track families") Signed-off-by: YueHaibing
<yuehaibing@huawei.com> Reviewed-by: Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/netlink/genetlink.c (diff)
Commit 8122233e877a4d4632885e466f00144fea54acb3 by gregkh
gtp: change NET_UDP_TUNNEL dependency to select
[ Upstream commit c22da36688d6298f2e546dcc43fdc1ad35036467 ]
Similarly to commit a7603ac1fc8c ("geneve: change NET_UDP_TUNNEL
dependency to select"), GTP has a dependency on NET_UDP_TUNNEL which
makes impossible to compile it if no other protocol depending on
NET_UDP_TUNNEL is selected.
Fix this by changing the depends to a select, and drop NET_IP_TUNNEL
from the select list, as it already depends on NET_UDP_TUNNEL.
Signed-off-by: Matteo Croce <mcroce@redhat.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/Kconfig (diff)
Commit 282c70c23454fd62d4571a1a6f6482900b3e5ee4 by gregkh
ipv6: make ip6_create_rt_rcu return ip6_null_entry instead of NULL
[ Upstream commit 1c87e79a002f6a159396138cd3f3ab554a2a8887 ]
Jianlin reported a crash:
  [  381.484332] BUG: unable to handle kernel NULL pointer dereference
at 0000000000000068
[  381.619802] RIP: 0010:fib6_rule_lookup+0xa3/0x160
[  382.009615] Call Trace:
[  382.020762]  <IRQ>
[  382.030174]  ip6_route_redirect.isra.52+0xc9/0xf0
[  382.050984]  ip6_redirect+0xb6/0xf0
[  382.066731]  icmpv6_notify+0xca/0x190
[  382.083185]  ndisc_redirect_rcv+0x10f/0x160
[  382.102569]  ndisc_rcv+0xfb/0x100
[  382.117725]  icmpv6_rcv+0x3f2/0x520
[  382.133637]  ip6_input_finish+0xbf/0x460
[  382.151634]  ip6_input+0x3b/0xb0
[  382.166097]  ipv6_rcv+0x378/0x4e0
It was caused by the lookup function __ip6_route_redirect() returns NULL
in fib6_rule_lookup() when ip6_create_rt_rcu() returns NULL.
So we fix it by simply making ip6_create_rt_rcu() return ip6_null_entry
instead of NULL.
v1->v2:
- move down 'fallback:' to make it more readable.
Fixes: e873e4b9cc7e ("ipv6: use fib6_info_hold_safe() when necessary")
Reported-by: Jianlin Shi <jishi@redhat.com> Suggested-by: Paolo Abeni
<pabeni@redhat.com> Signed-off-by: Xin Long <lucien.xin@gmail.com>
Reviewed-by: David Ahern <dsahern@gmail.com> Acked-by: Wei Wang
<weiwan@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/ipv6/route.c (diff)
Commit 780e62a6a021bb136a8e297dd3f432eb2dda3361 by gregkh
mac8390: Fix mmio access size probe
[ Upstream commit bb9e5c5bcd76f4474eac3baf643d7a39f7bac7bb ]
The bug that Stan reported is as follows. After a restart, a 16-bit NIC
may be incorrectly identified as a 32-bit NIC and stop working.
mac8390 slot.E: Memory length resource not found, probing mac8390
slot.E: Farallon EtherMac II-C (type farallon) mac8390 slot.E: MAC
00:00:c5:30:c2:99, IRQ 61, 32 KB shared memory at 0xfeed0000, 32-bit
access.
The bug never arises after a cold start and only intermittently after a
warm start. (I didn't investigate why the bug is intermittent.)
It turns out that memcpy_toio() is deprecated and memcmp_withio() also
has issues. Replacing these calls with mmio accessors fixes the problem.
Reported-and-tested-by: Stan Johnson <userm57@yahoo.com> Fixes:
2964db0f5904 ("m68k: Mac DP8390 update") Signed-off-by: Finn Thain
<fthain@telegraphics.com.au> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/8390/mac8390.c (diff)
Commit 3e5c1acf0637855cb9a057cdbae277a64bbff7d9 by gregkh
mISDN: hfcpci: Test both vendor & device ID for Digium HFC4S
[ Upstream commit fae846e2b7124d4b076ef17791c73addf3b26350 ]
The device ID alone does not uniquely identify a device.  Test both the
vendor and device ID to make sure we don't mistakenly think some other
vendor's 0xB410 device is a Digium HFC4S.  Also, instead of the bare hex
ID, use the same constant (PCI_DEVICE_ID_DIGIUM_HFC4S) used in the
device ID table.
No functional change intended.
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: David
S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/isdn/hardware/mISDN/hfcmulti.c (diff)
Commit 017c90da5d8ff1bc8e8d9be41eab18f8633e682f by gregkh
net: aquantia: fix rx checksum offload for UDP/TCP over IPv6
[ Upstream commit a7faaa0c5dc7d091cc9f72b870d7edcdd6f43f12 ]
TCP/UDP checksum validity was propagated to skb only if IP checksum is
valid. But for IPv6 there is no validity as there is no checksum in
IPv6. This patch propagates TCP/UDP checksum validity regardless of IP
checksum.
Fixes: 018423e90bee ("net: ethernet: aquantia: Add ring support code")
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com> Signed-off-by:
Nikita Danilov <nikita.danilov@aquantia.com> Signed-off-by: Dmitry
Bogdanov <dmitry.bogdanov@aquantia.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/aquantia/atlantic/aq_ring.c (diff)
Commit 475af63497f85c452cbc7546e4f091456498de5c by gregkh
net: datagram: fix unbounded loop in __skb_try_recv_datagram()
[ Upstream commit 0b91bce1ebfc797ff3de60c8f4a1e6219a8a3187 ]
Christoph reported a stall while peeking datagram with an offset when
busy polling is enabled. __skb_try_recv_datagram() uses as the loop
termination condition 'queue empty'. When peeking, the socket queue can
be not empty, even when no additional packets are received.
Address the issue explicitly checking for receive queue changes, as
currently done by __skb_wait_for_more_packets().
Fixes: 2b5cd0dfa384 ("net: Change return type of sk_busy_loop from bool
to void") Reported-and-tested-by: Christoph Paasch <cpaasch@apple.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/core/datagram.c (diff)
Commit 3ca86ad4e57a84262f2386e5b06302ebc4c8b5d4 by gregkh
net/packet: Set __GFP_NOWARN upon allocation in alloc_pg_vec
[ Upstream commit 398f0132c14754fcd03c1c4f8e7176d001ce8ea1 ]
Since commit fc62814d690c ("net/packet: fix 4gb buffer limit due to
overflow check") one can now allocate packet ring buffers >= UINT_MAX.
However, syzkaller found that that triggers a warning:
[   21.100000] WARNING: CPU: 2 PID: 2075 at mm/page_alloc.c:4584
__alloc_pages_nod0
[   21.101490] Modules linked in:
[   21.101921] CPU: 2 PID: 2075 Comm: syz-executor.0 Not tainted 5.0.0
#146
[   21.102784] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS 0.5.1 01/01/2011
[   21.103887] RIP: 0010:__alloc_pages_nodemask+0x2a0/0x630
[   21.104640] Code: fe ff ff 65 48 8b 04 25 c0 de 01 00 48 05 90 0f 00
00 41 bd 01 00 00 00 48 89 44 24 48 e9 9c fe 3
[   21.107121] RSP: 0018:ffff88805e1cf920 EFLAGS: 00010246
[   21.107819] RAX: 0000000000000000 RBX: ffffffff85a488a0 RCX:
0000000000000000
[   21.108753] RDX: 0000000000000000 RSI: dffffc0000000000 RDI:
0000000000000000
[   21.109699] RBP: 1ffff1100bc39f28 R08: ffffed100bcefb67 R09:
ffffed100bcefb67
[   21.110646] R10: 0000000000000001 R11: ffffed100bcefb66 R12:
000000000000000d
[   21.111623] R13: 0000000000000000 R14: ffff88805e77d888 R15:
000000000000000d
[   21.112552] FS:  00007f7c7de05700(0000) GS:ffff88806d100000(0000)
knlGS:0000000000000000
[   21.113612] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   21.114405] CR2: 000000000065c000 CR3: 000000005e58e006 CR4:
00000000001606e0
[   21.115367] Call Trace:
[   21.115705]  ? __alloc_pages_slowpath+0x21c0/0x21c0
[   21.116362]  alloc_pages_current+0xac/0x1e0
[   21.116923]  kmalloc_order+0x18/0x70
[   21.117393]  kmalloc_order_trace+0x18/0x110
[   21.117949]  packet_set_ring+0x9d5/0x1770
[   21.118524]  ? packet_rcv_spkt+0x440/0x440
[   21.119094]  ? lock_downgrade+0x620/0x620
[   21.119646]  ? __might_fault+0x177/0x1b0
[   21.120177]  packet_setsockopt+0x981/0x2940
[   21.120753]  ? __fget+0x2fb/0x4b0
[   21.121209]  ? packet_release+0xab0/0xab0
[   21.121740]  ? sock_has_perm+0x1cd/0x260
[   21.122297]  ? selinux_secmark_relabel_packet+0xd0/0xd0
[   21.123013]  ? __fget+0x324/0x4b0
[   21.123451]  ? selinux_netlbl_socket_setsockopt+0x101/0x320
[   21.124186]  ? selinux_netlbl_sock_rcv_skb+0x3a0/0x3a0
[   21.124908]  ? __lock_acquire+0x529/0x3200
[   21.125453]  ? selinux_socket_setsockopt+0x5d/0x70
[   21.126075]  ? __sys_setsockopt+0x131/0x210
[   21.126533]  ? packet_release+0xab0/0xab0
[   21.127004]  __sys_setsockopt+0x131/0x210
[   21.127449]  ? kernel_accept+0x2f0/0x2f0
[   21.127911]  ? ret_from_fork+0x8/0x50
[   21.128313]  ? do_raw_spin_lock+0x11b/0x280
[   21.128800]  __x64_sys_setsockopt+0xba/0x150
[   21.129271]  ? lockdep_hardirqs_on+0x37f/0x560
[   21.129769]  do_syscall_64+0x9f/0x450
[   21.130182]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
We should allocate with __GFP_NOWARN to handle this.
Cc: Kal Conley <kal.conley@dectris.com> Cc: Andrey Konovalov
<andreyknvl@google.com> Fixes: fc62814d690c ("net/packet: fix 4gb buffer
limit due to overflow check") Signed-off-by: Christoph Paasch
<cpaasch@apple.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/packet/af_packet.c (diff)
Commit baa14468e57d26cf23c058af3c89edf59b3cabec by gregkh
net: phy: meson-gxl: fix interrupt support
[ Upstream commit daa5c4d0167a308306525fd5ab9a5e18e21f4f74 ]
If an interrupt is already pending when the interrupt is enabled on the
GXL phy, no IRQ will ever be triggered.
The fix is simply to make sure pending IRQs are cleared before setting
up the irq mask.
Fixes: cf127ff20af1 ("net: phy: meson-gxl: add interrupt support")
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> Signed-off-by: David
S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/phy/meson-gxl.c (diff)
Commit 8cf288b55da92dc5ea87cf51a6bbddc09f8cdb22 by gregkh
net: rose: fix a possible stack overflow
[ Upstream commit e5dcc0c3223c45c94100f05f28d8ef814db3d82c ]
rose_write_internal() uses a temp buffer of 100 bytes, but a manual
inspection showed that given arbitrary input, rose_create_facilities()
can fill up to 110 bytes.
Lets use a tailroom of 256 bytes for peace of mind, and remove the
bounce buffer : we can simply allocate a big enough skb and adjust its
length as needed.
syzbot report :
BUG: KASAN: stack-out-of-bounds in memcpy include/linux/string.h:352
[inline] BUG: KASAN: stack-out-of-bounds in rose_create_facilities
net/rose/rose_subr.c:521 [inline] BUG: KASAN: stack-out-of-bounds in
rose_write_internal+0x597/0x15d0 net/rose/rose_subr.c:116 Write of size
7 at addr ffff88808b1ffbef by task syz-executor.0/24854
CPU: 0 PID: 24854 Comm: syz-executor.0 Not tainted 5.0.0+ #97 Hardware
name: Google Google Compute Engine/Google Compute Engine, BIOS Google
01/01/2011 Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x172/0x1f0 lib/dump_stack.c:113
print_address_description.cold+0x7c/0x20d mm/kasan/report.c:187
kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317
check_memory_region_inline mm/kasan/generic.c:185 [inline]
check_memory_region+0x123/0x190 mm/kasan/generic.c:191
memcpy+0x38/0x50 mm/kasan/common.c:131
memcpy include/linux/string.h:352 [inline]
rose_create_facilities net/rose/rose_subr.c:521 [inline]
rose_write_internal+0x597/0x15d0 net/rose/rose_subr.c:116
rose_connect+0x7cb/0x1510 net/rose/af_rose.c:826
__sys_connect+0x266/0x330 net/socket.c:1685
__do_sys_connect net/socket.c:1696 [inline]
__se_sys_connect net/socket.c:1693 [inline]
__x64_sys_connect+0x73/0xb0 net/socket.c:1693
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x458079 Code: ad b8
fb ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90 48 89 f8 48 89 f7 48 89 d6
48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f
83 7b b8 fb ff c3 66 2e 0f 1f 84 00 00 00 00 RSP: 002b:00007f47b8d9dc78
EFLAGS: 00000246 ORIG_RAX: 000000000000002a RAX: ffffffffffffffda RBX:
0000000000000003 RCX: 0000000000458079 RDX: 000000000000001c RSI:
0000000020000040 RDI: 0000000000000004 RBP: 000000000073bf00 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007f47b8d9e6d4 R13: 00000000004be4a4 R14:
00000000004ceca8 R15: 00000000ffffffff
The buggy address belongs to the page: page:ffffea00022c7fc0 count:0
mapcount:0 mapping:0000000000000000 index:0x0 flags: 0x1fffc0000000000()
raw: 01fffc0000000000 0000000000000000 ffffffff022c0101 0000000000000000
raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
page dumped because: kasan: bad access detected
Memory state around the buggy address:
ffff88808b1ffa80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff88808b1ffb00: 00 00 00 00 00 00 00 00 f1 f1 f1 f1 00 00 00 03
>ffff88808b1ffb80: f2 f2 00 00 00 00 00 00 00 00 00 00 00 00 04 f3
                                                            ^
ffff88808b1ffc00: f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00
ffff88808b1ffc80: 00 00 00 00 00 00 00 f1 f1 f1 f1 f1 f1 01 f2 01
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/rose/rose_subr.c (diff)
Commit 1b925f484028db4adf8922c493c8bae2f8f9567f by gregkh
net: stmmac: fix memory corruption with large MTUs
[ Upstream commit 223a960c01227e4dbcb6f9fa06b47d73bda21274 ]
When using 16K DMA buffers and ring mode, the DES3 refill is not working
correctly as the function is using a bogus pointer for checking the
private data. As a result stale pointers will remain in the RX
descriptor ring, so DMA will now likely overwrite/corrupt some already
freed memory.
As simple reproducer, just receive some UDP traffic:
# ifconfig eth0 down; ifconfig eth0 mtu 9000; ifconfig eth0 up
# iperf3 -c 192.168.253.40 -u -b 0 -R
If you didn't crash by now check the RX descriptors to find
non-contiguous RX buffers:
cat /sys/kernel/debug/stmmaceth/eth0/descriptors_status
[...]
1 [0x2be5020]: 0xa3220321 0x9ffc1ffc 0x72d70082 0x130e207e
     ^^^^^^^^^^^^^^^^^^^^^
2 [0x2be5040]: 0xa3220321 0x9ffc1ffc 0x72998082 0x1311a07e
     ^^^^^^^^^^^^^^^^^^^^^
A simple ping test will now report bad data:
# ping -s 8200 192.168.253.40
PING 192.168.253.40 (192.168.253.40) 8200(8228) bytes of data.
8208 bytes from 192.168.253.40: icmp_seq=1 ttl=64 time=1.00 ms
wrong data byte #8144 should be 0xd0 but was 0x88
Fix the wrong pointer. Also we must refill DES3 only if the DMA buffer
size is 16K.
Fixes: 54139cf3bb33 ("net: stmmac: adding multiple buffers for rx")
Signed-off-by: Aaro Koskinen <aaro.koskinen@nokia.com> Acked-by: Jose
Abreu <joabreu@synopsys.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/ring_mode.c (diff)
Commit 566e793d051fe42834ba5e80c573f6c65506c7b9 by gregkh
net-sysfs: call dev_hold if kobject_init_and_add success
[ Upstream commit a3e23f719f5c4a38ffb3d30c8d7632a4ed8ccd9e ]
In netdev_queue_add_kobject and rx_queue_add_kobject, if
sysfs_create_group failed, kobject_put will call netdev_queue_release to
decrease dev refcont, however dev_hold has not be called. So we will see
this while unregistering dev:
unregister_netdevice: waiting for bcsh0 to become free. Usage count = -1
Reported-by: Hulk Robot <hulkci@huawei.com> Fixes: d0d668371679 ("net:
don't decrement kobj reference count on init failure") Signed-off-by:
YueHaibing <yuehaibing@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/core/net-sysfs.c (diff)
Commit 970d4fb2a2318961b4d981358fd12d8d415aa42d by gregkh
net: usb: aqc111: Extend HWID table by QNAP device
[ Upstream commit b7ebee2f95fb0fa2862d5ed2de707f872c311393 ]
New device of QNAP based on aqc111u Add this ID to blacklist of
cdc_ether driver as well
Signed-off-by: Dmitry Bezrukov <dmitry.bezrukov@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/usb/aqc111.c (diff)
The file was modifieddrivers/net/usb/cdc_ether.c (diff)
Commit 278c7d7e4ecbfd9feb62492a4a98c21c7941faa8 by gregkh
packets: Always register packet sk in the same order
[ Upstream commit a4dc6a49156b1f8d6e17251ffda17c9e6a5db78a ]
When using fanouts with AF_PACKET, the demux functions such as
fanout_demux_cpu will return an index in the fanout socket array, which
corresponds to the selected socket.
The ordering of this array depends on the order the sockets were added
to a given fanout group, so for FANOUT_CPU this means sockets are bound
to cpus in the order they are configured, which is OK.
However, when stopping then restarting the interface these sockets are
bound to, the sockets are reassigned to the fanout group in the reverse
order, due to the fact that they were inserted at the head of the
interface's AF_PACKET socket list.
This means that traffic that was directed to the first socket in the
fanout group is now directed to the last one after an interface restart.
In the case of FANOUT_CPU, traffic from CPU0 will be directed to the
socket that used to receive traffic from the last CPU after an interface
restart.
This commit introduces a helper to add a socket at the tail of a list,
then uses it to register AF_PACKET sockets.
Note that this changes the order in which sockets are listed in /proc
and with sock_diag.
Fixes: dc99f600698d ("packet: Add fanout support") Signed-off-by: Maxime
Chevallier <maxime.chevallier@bootlin.com> Acked-by: Willem de Bruijn
<willemb@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/packet/af_packet.c (diff)
The file was modifiedinclude/net/sock.h (diff)
Commit 5a336f69cfa0cf9c2abf2e865b01458ef4a9ebbd by gregkh
rhashtable: Still do rehash when we get EEXIST
[ Upstream commit 408f13ef358aa5ad56dc6230c2c7deb92cf462b1 ]
As it stands if a shrink is delayed because of an outstanding rehash, we
will go into a rescheduling loop without ever doing the rehash.
This patch fixes this by still carrying out the rehash and then
rescheduling so that we can shrink after the completion of the rehash
should it still be necessary.
The return value of EEXIST captures this case and other cases
(e.g., another thread expanded/rehashed the table at the same time)
where we should still proceed with the rehash.
Fixes: da20420f83ea ("rhashtable: Add nested tables") Reported-by: Josh
Elsasser <jelsasser@appneta.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Tested-by: Josh Elsasser
<jelsasser@appneta.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedlib/rhashtable.c (diff)
Commit d2af0ce54b1cbc82813b388b759877a2c6e53265 by gregkh
sctp: get sctphdr by offset in sctp_compute_cksum
[ Upstream commit 273160ffc6b993c7c91627f5a84799c66dfe4dee ]
sctp_hdr(skb) only works when skb->transport_header is set properly.
But in Netfilter, skb->transport_header for ipv6 is not guaranteed to be
right value for sctphdr. It would cause to fail to check the checksum
for sctp packets.
So fix it by using offset, which is always right in all places.
v1->v2:
- Fix the changelog.
Fixes: e6d8b64b34aa ("net: sctp: fix and consolidate SCTP checksumming
code") Reported-by: Li Shuang <shuali@redhat.com> Signed-off-by: Xin
Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/net/sctp/checksum.h (diff)
Commit 118ad2c7de1d1d91bebec1430b4c47e3f5ebaa99 by gregkh
sctp: use memdup_user instead of vmemdup_user
[ Upstream commit ef82bcfa671b9a635bab5fa669005663d8b177c5 ]
In sctp_setsockopt_bindx()/__sctp_setsockopt_connectx(), it allocates
memory with addrs_size which is passed from userspace. We used flag
GFP_USER to put some more restrictions on it in Commit cacc06215271
("sctp: use GFP_USER for user-controlled kmalloc").
However, since Commit c981f254cc82 ("sctp: use vmemdup_user() rather
than badly open-coding memdup_user()"), vmemdup_user() has been used,
which doesn't check GFP_USER flag when goes to vmalloc_*(). So when
addrs_size is a huge value, it could exhaust memory and even trigger oom
killer.
This patch is to use memdup_user() instead, in which GFP_USER would work
to limit the memory allocation with a huge addrs_size.
Note we can't fix it by limiting 'addrs_size', as there's no demand for
it from RFC.
Reported-by: syzbot+ec1b7575afef85a0e5ca@syzkaller.appspotmail.com
Fixes: c981f254cc82 ("sctp: use vmemdup_user() rather than badly
open-coding memdup_user()") Signed-off-by: Xin Long
<lucien.xin@gmail.com> Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/sctp/socket.c (diff)
Commit 632f3ed848bcadece46e1494f149c0d28a277205 by gregkh
tcp: do not use ipv6 header for ipv4 flow
[ Upstream commit 89e4130939a20304f4059ab72179da81f5347528 ]
When a dual stack tcp listener accepts an ipv4 flow, it should not
attempt to use an ipv6 header or tcp_v6_iif() helper.
Fixes: 1397ed35f22d ("ipv6: add flowinfo for tcp6 pkt_options for all
cases") Fixes: df3687ffc665 ("ipv6: add the IPV6_FL_F_REFLECT flag to
IPV6_FL_A_GET") Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by:
Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/ipv6/tcp_ipv6.c (diff)
Commit 30e2a9a38d0c07af07eddc0db2a685a9e2b89af6 by gregkh
tipc: allow service ranges to be connect()'ed on RDM/DGRAM
[ Upstream commit ea239314fe42ace880bdd834256834679346c80e ]
We move the check that prevents connecting service ranges to after the
RDM/DGRAM check, and move address sanity control to a separate function
that also validates the service range.
Fixes: 23998835be98 ("tipc: improve address sanity check in
tipc_connect()") Signed-off-by: Erik Hugne <erik.hugne@gmail.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David
S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/tipc/socket.c (diff)
Commit e13fbdf6e872a3bbd4c2d727e746a5f83b793b28 by gregkh
tipc: change to check tipc_own_id to return in tipc_net_stop
[ Upstream commit 9926cb5f8b0f0aea535735185600d74db7608550 ]
When running a syz script, a panic occurred:
[  156.088228] BUG: KASAN: use-after-free in
tipc_disc_timeout+0x9c9/0xb20 [tipc]
[  156.094315] Call Trace:
[  156.094844]  <IRQ>
[  156.095306]  dump_stack+0x7c/0xc0
[  156.097346]  print_address_description+0x65/0x22e
[  156.100445]  kasan_report.cold.3+0x37/0x7a
[  156.102402]  tipc_disc_timeout+0x9c9/0xb20 [tipc]
[  156.106517]  call_timer_fn+0x19a/0x610
[  156.112749]  run_timer_softirq+0xb51/0x1090
It was caused by the netns freed without deleting the discoverer timer,
while later on the netns would be accessed in the timer handler.
The timer should have been deleted by tipc_net_stop() when cleaning up a
netns. However, tipc has been able to enable a bearer and start d->timer
without the local node_addr set since Commit 52dfae5c85a4 ("tipc: obtain
node identity from interface by default"), which caused the timer not to
be deleted in tipc_net_stop() then.
So fix it in tipc_net_stop() by changing to check local node_id instead
of local node_addr, as Jon suggested.
While at it, remove the calling of tipc_nametbl_withdraw() there, since
tipc_nametbl_stop() will take of the nametbl's freeing after.
Fixes: 52dfae5c85a4 ("tipc: obtain node identity from interface by
default") Reported-by:
syzbot+a25307ad099309f1c2b9@syzkaller.appspotmail.com Signed-off-by: Xin
Long <lucien.xin@gmail.com> Acked-by: Ying Xue <ying.xue@windriver.com>
Acked-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/tipc/net.c (diff)
Commit 9868ffd44b2554253c1377a0577aea67ea8b7ca4 by gregkh
tipc: fix cancellation of topology subscriptions
[ Upstream commit 33872d79f5d1cbedaaab79669cc38f16097a9450 ]
When cancelling a subscription, we have to clear the cancel bit in the
request before iterating over any established subscriptions with memcmp.
Otherwise no subscription will ever be found, and it will not be
possible to explicitly unsubscribe individual subscriptions.
Fixes: 8985ecc7c1e0 ("tipc: simplify endianness handling in topology
subscriber") Signed-off-by: Erik Hugne <erik.hugne@gmail.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David
S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/tipc/topsrv.c (diff)
Commit e269f5f55c063cc8e7f7be1231dcb2c51ccebc71 by gregkh
tun: properly test for IFF_UP
[ Upstream commit 4477138fa0ae4e1b699786ef0600863ea6e6c61c ]
Same reasons than the ones explained in commit 4179cb5a4c92
("vxlan: test dev->flags & IFF_UP before calling netif_rx()")
netif_rx_ni() or napi_gro_frags() must be called under a strict
contract.
At device dismantle phase, core networking clears IFF_UP and
flush_all_backlogs() is called after rcu grace period to make sure no
incoming packet might be in a cpu backlog and still referencing the
device.
A similar protocol is used for gro layer.
Most drivers call netif_rx() from their interrupt handler, and since the
interrupts are disabled at device dismantle, netif_rx() does not have to
check dev->flags & IFF_UP
Virtual drivers do not have this guarantee, and must therefore make the
check themselves.
Fixes: 1bd4978a88ac ("tun: honor IFF_UP in tun_get_user()")
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/tun.c (diff)
Commit 1a44391e1d03a310261aff9fe83abd963ddb2c2e by gregkh
vrf: prevent adding upper devices
[ Upstream commit 1017e0987117c32783ba7c10fe2e7ff1456ba1dc ]
VRF devices don't work with upper devices. Currently, it's possible to
add a VRF device to a bridge or team, and to create macvlan, macsec, or
ipvlan devices on top of a VRF (bond and vlan are prevented respectively
by the lack of an ndo_set_mac_address op and the NETIF_F_VLAN_CHALLENGED
feature flag).
Fix this by setting the IFF_NO_RX_HANDLER flag (introduced in commit
f5426250a6ec ("net: introduce IFF_NO_RX_HANDLER")).
Cc: David Ahern <dsahern@gmail.com> Fixes: 193125dbd8eb ("net: Introduce
VRF device driver") Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Acked-by: David Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/vrf.c (diff)
Commit 0c421524c1f161999144c98af0fecdcee6dbc73f by gregkh
vxlan: Don't call gro_cells_destroy() before device is unregistered
[ Upstream commit cc4807bb609230d8959fd732b0bf3bd4c2de8eac ]
Commit ad6c9986bcb62 ("vxlan: Fix GRO cells race condition between
receive and link delete") fixed a race condition for the typical case a
vxlan device is dismantled from the current netns. But if a netns is
dismantled, vxlan_destroy_tunnels() is called to schedule a
unregister_netdevice_queue() of all the vxlan tunnels that are related
to this netns.
In vxlan_destroy_tunnels(), gro_cells_destroy() is called and finished
before unregister_netdevice_queue(). This means that the
gro_cells_destroy() call is done too soon, for the same reasons
explained in above commit.
So we need to fully respect the RCU rules, and thus must remove the
gro_cells_destroy() call or risk use after-free.
Fixes: 58ce31cca1ff ("vxlan: GRO support at tunnel layer")
Signed-off-by: Suanming.Mou <mousuanming@huawei.com> Suggested-by: Eric
Dumazet <eric.dumazet@gmail.com> Reviewed-by: Stefano Brivio
<sbrivio@redhat.com> Reviewed-by: Zhiqiang Liu
<liuzhiqiang26@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/vxlan.c (diff)
Commit 10792c33d060090ff6f44aaa20f8db2d35632b56 by gregkh
thunderx: enable page recycling for non-XDP case
[ Upstream commit b3e208069477588c06f4d5d986164b435bb06e6d ]
Commit 773225388dae15e72790 ("net: thunderx: Optimize page recycling for
XDP") added code to nicvf_alloc_page() that inadvertently disables
receive buffer page recycling for the non-XDP case by always NULL'ng the
page pointer.
This patch corrects two if-conditionals to allow for the recycling of
non-XDP mode pages by only setting the page pointer to NULL when the
page is not ready for recycling.
Fixes: 773225388dae ("net: thunderx: Optimize page recycling for XDP")
Signed-off-by: Dean Nelson <dnelson@redhat.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_queues.c (diff)
Commit 98bfc778c5d962a8505a08569c42f849d3aa80d8 by gregkh
thunderx: eliminate extra calls to put_page() for pages held for
recycling
[ Upstream commit cd35ef91490ad8049dd180bb060aff7ee192eda9 ]
For the non-XDP case, commit 773225388dae15e72790 ("net: thunderx:
Optimize page recycling for XDP") added code to nicvf_free_rbdr() that,
when releasing the additional receive buffer page reference held for
recycling, repeatedly calls put_page() until the page's _refcount goes
to zero. Which results in the page being freed.
This is not okay if the page's _refcount was greater than 1 (in the
non-XDP case), because nicvf_free_rbdr() should not be subtracting more
than what nicvf_alloc_page() had previously added to the page's
_refcount, which was only 1 (in the non-XDP case).
This can arise if a received packet is still being processed and the
receive buffer (i.e., skb->head) has not yet been freed via
skb_free_head() when nicvf_free_rbdr() is spinning through the
aforementioned put_page() loop.
If this should occur, when the received packet finishes processing and
skb_free_head() is called, various problems can ensue. Exactly what,
depends on whether the page has already been reallocated or not,
anything from "BUG: Bad page state ... ", to "Unable to handle kernel
NULL pointer dereference ..." or
"Unable to handle kernel paging request...".
So this patch changes nicvf_free_rbdr() to only call put_page() once for
pages held for recycling (in the non-XDP case).
Fixes: 773225388dae ("net: thunderx: Optimize page recycling for XDP")
Signed-off-by: Dean Nelson <dnelson@redhat.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_queues.c (diff)
Commit d9c13ecbf7c571775cb82bf59fbee2d9908cab80 by gregkh
net: dsa: mv88e6xxx: fix few issues in mv88e6390x_port_set_cmode
[ Upstream commit 5ceaeb99ffb4dc002d20f6ac243c19a85e2c7a76 ]
This patches fixes few issues in mv88e6390x_port_set_cmode().
1. When entering the function the old cmode may be 0, in this case
  mv88e6390x_serdes_get_lane() returns -ENODEV. As result we bail
  out and have no chance to set a new mode. Therefore deal properly
  with -ENODEV.
2. Once we have disabled power and irq, let's set the cached cmode to 0.
  This reflects the actual status and is cleaner if we bail out with an
  error in the following function calls.
3. The cached cmode is used by mv88e6390x_serdes_get_lane(),
  mv88e6390_serdes_power_lane() and mv88e6390_serdes_irq_enable().
  Currently we set the cached mode to the new one at the very end of
  the function only, means until then we use the old one what may be
  wrong.
4. When calling mv88e6390_serdes_irq_enable() we use the lane value
  belonging to the old cmode. Get the lane belonging to the new cmode
  before calling this function.
It's hard to provide a good "Fixes" tag because quite a few smaller
changes have been done to the code in question recently.
Fixes: d235c48b40d3 ("net: dsa: mv88e6xxx: power serdes on/off for 10G
interfaces on 6390X") Signed-off-by: Heiner Kallweit
<hkallweit1@gmail.com> Reviewed-by: Florian Fainelli
<f.fainelli@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/mv88e6xxx/port.c (diff)
Commit aa3f1b029e4b664330a7f00ff80d8713f26921dc by gregkh
net: mii: Fix PAUSE cap advertisement from linkmode_adv_to_lcl_adv_t()
helper
[ Upstream commit 7f07e5f1f778605e98cf2156d4db1ff3a3a1a74a ]
With a recent link mode advertisement code update this helper providing
local pause capability translation used for flow control link mode
negotiation got broken. For eth drivers using this helper, the issue is
apparent only if either PAUSE or ASYM_PAUSE is being advertised.
Fixes: 3c1bcc8614db ("net: ethernet: Convert phydev advertize and
supported from u32 to link mode") Signed-off-by: Claudiu Manoil
<claudiu.manoil@nxp.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/mii.h (diff)
Commit fc8f36de77111bf925d19f347c21134542941a3c by gregkh
net: phy: don't clear BMCR in genphy_soft_reset
[ Upstream commit d29f5aa0bc0c321e1b9e4658a2a7e08e885da52a ]
So far we effectively clear the BMCR register. Some PHY's can deal with
this (e.g. because they reset BMCR to a default as part of a soft-reset)
whilst on others this causes issues because e.g. the autoneg bit is
cleared. Marvell is an example, see also thread [0]. So let's be a
little bit more gentle and leave all bits we're not interested in as-is.
This change is needed for PHY drivers to properly deal with the original
patch.
[0] https://marc.info/?t=155264050700001&r=1&w=2
Fixes: 6e2d85ec0559 ("net: phy: Stop with excessive soft reset")
Tested-by: Phil Reid <preid@electromag.com.au> Tested-by: liweihang
<liweihang@hisilicon.com> Signed-off-by: Heiner Kallweit
<hkallweit1@gmail.com> Reviewed-by: Florian Fainelli
<f.fainelli@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/phy/phy_device.c (diff)
Commit 4951fc65d9153deded3d066ab371a61977c96e8a by gregkh
r8169: fix cable re-plugging issue
[ Upstream commit 23c78343ec36990709b636a9e02bad814f4384ad ]
Bartek reported that after few cable unplug/replug cycles suddenly
replug isn't detected any longer. His system uses a RTL8106, I wasn't
able to reproduce the issue with RTL8168g. According to his bisect the
referenced commit caused the regression. As Realtek doesn't release
datasheets or errata it's hard to say what's the actual root cause, but
this change was reported to fix the issue.
Fixes: 38caff5a445b ("r8169: handle all interrupt events in the hard irq
handler") Reported-by: Bartosz Skrzypczak <barteks2x@gmail.com>
Suggested-by: Bartosz Skrzypczak <barteks2x@gmail.com> Tested-by:
Bartosz Skrzypczak <barteks2x@gmail.com> Signed-off-by: Heiner Kallweit
<hkallweit1@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/realtek/r8169.c (diff)
Commit d01bf3762e290a58d7f1941a42b13322f7803564 by gregkh
ila: Fix rhashtable walker list corruption
[ Upstream commit b5f9bd15b88563b55a99ed588416881367a0ce5f ]
ila_xlat_nl_cmd_flush uses rhashtable walkers allocated from the stack
but it never frees them.  This corrupts the walker list of the hash
table.
This patch fixes it.
Reported-by: syzbot+dae72a112334aa65a159@syzkaller.appspotmail.com
Fixes: b6e71bdebb12 ("ila: Flush netlink command to clear xlat...")
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/ipv6/ila/ila_xlat.c (diff)
Commit bb06073a9cad930f5c8bb5f433dcd478c26608dd by gregkh
tun: add a missing rcu_read_unlock() in error path
commit 9180bb4f046064dfa4541488102703b402bb04e1 upstream.
In my latest patch I missed one rcu_read_unlock(), in case device is
down.
Fixes: 4477138fa0ae ("tun: properly test for IFF_UP") Signed-off-by:
Eric Dumazet <edumazet@google.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/tun.c (diff)
Commit 0253563b8be5358ada3907f008a6642a1f326470 by gregkh
powerpc/fsl: Fix the flush of branch predictor.
commit 27da80719ef132cf8c80eb406d5aeb37dddf78cc upstream.
The commit identified below adds MC_BTB_FLUSH macro only when
CONFIG_PPC_FSL_BOOK3E is defined. This results in the following error on
some configs (seen several times with kisskb randconfig_defconfig)
arch/powerpc/kernel/exceptions-64e.S:576: Error: Unrecognized opcode:
`mc_btb_flush' make[3]: *** [scripts/Makefile.build:367:
arch/powerpc/kernel/exceptions-64e.o] Error 1 make[2]: ***
[scripts/Makefile.build:492: arch/powerpc/kernel] Error 2 make[1]: ***
[Makefile:1043: arch/powerpc] Error 2 make: *** [Makefile:152: sub-make]
Error 2
This patch adds a blank definition of MC_BTB_FLUSH for other cases.
Fixes: 10c5e83afd4a ("powerpc/fsl: Flush the branch predictor at each
kernel entry (64bit)") Cc: Diana Craciun <diana.craciun@nxp.com>
Signed-off-by: Christophe Leroy <christophe.leroy@c-s.fr> Reviewed-by:
Daniel Axtens <dja@axtens.net> Reviewed-by: Diana Craciun
<diana.craciun@nxp.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/exceptions-64e.S (diff)
Commit ab0600d45dd9faf6a27ae75caa08ac02b3b0a723 by gregkh
Btrfs: fix incorrect file size after shrinking truncate and fsync
commit bf504110bc8aa05df48b0e5f0aa84bfb81e0574b upstream.
If we do a shrinking truncate against an inode which is already present
in the respective log tree and then rename it, as part of logging the
new name we end up logging an inode item that reflects the old size of
the file (the one which we previously logged) and not the new smaller
size. The decision to preserve the size previously logged was added by
commit 1a4bcf470c886b ("Btrfs: fix fsync data loss after adding hard
link to inode") in order to avoid data loss after replaying the log.
However that decision is only needed for the case the logged inode size
is smaller then the current size of the inode, as explained in that
commit's change log. If the current size of the inode is smaller then
the previously logged size, we know a shrinking truncate happened and
therefore need to use that smaller size.
Example to trigger the problem:
  $ mkfs.btrfs -f /dev/sdb
$ mount /dev/sdb /mnt
  $ xfs_io -f -c "pwrite -S 0xab 0 8000" /mnt/foo
$ xfs_io -c "fsync" /mnt/foo
$ xfs_io -c "truncate 3000" /mnt/foo
  $ mv /mnt/foo /mnt/bar
$ xfs_io -c "fsync" /mnt/bar
  <power failure>
  $ mount /dev/sdb /mnt
$ od -t x1 -A d /mnt/bar
0000000 ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
*
0008000
Once we rename the file, we log its name (and inode item), and because
the inode was already logged before in the current transaction, we log
it with a size of 8000 bytes because that is the size we previously
logged
(with the first fsync). As part of the rename, besides logging the
inode, we do also sync the log, which is done since commit
d4682ba03ef618
("Btrfs: sync log after logging new name"), so the next fsync against
our inode is effectively a no-op, since no new changes happened since
the rename operation. Even if did not sync the log during the rename
operation, the same problem (fize size of 8000 bytes instead of 3000
bytes) would be visible after replaying the log if the log ended up
getting synced to disk through some other means, such as for example by
fsyncing some other modified file. In the example above the fsync after
the rename operation is there just because not every filesystem may
guarantee logging/journalling the inode (and syncing the log/journal)
during the rename operation, for example it is needed for f2fs, but not
for ext4 and xfs.
Fix this scenario by, when logging a new name (which is triggered by
rename and link operations), using the current size of the inode instead
of the previously logged inode size.
A test case for fstests follows soon.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202695 CC:
stable@vger.kernel.org # 4.4+ Reported-by: Seulbae Kim
<seulbae@gatech.edu> Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/tree-log.c (diff)
Commit 70c88bf99441e63087f64c614bd2ff1d81bcdcdf by gregkh
btrfs: remove WARN_ON in log_dir_items
commit 2cc8334270e281815c3850c3adea363c51f21e0d upstream.
When Filipe added the recursive directory logging stuff in 2f2ff0ee5e430
("Btrfs: fix metadata inconsistencies after directory fsync") he
specifically didn't take the directory i_mutex for the children
directories that we need to log because of lockdep.  This is generally
fine, but can lead to this WARN_ON() tripping if we happen to run
delayed deletion's in between our first search and our second search of
dir_item/dir_indexes for this directory.  We expect this to happen, so
the WARN_ON() isn't necessary.  Drop the WARN_ON() and add a comment so
we know why this case can happen.
CC: stable@vger.kernel.org # 4.4+ Reviewed-by: Filipe Manana
<fdmanana@suse.com> 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>
The file was modifiedfs/btrfs/tree-log.c (diff)
Commit da2dea634c2223ce6a3492dd3aaa06aa43c1a6d1 by gregkh
btrfs: don't report readahead errors and don't update statistics
commit 0cc068e6ee59c1fffbfa977d8bf868b7551d80ac upstream.
As readahead is an optimization, all errors are usually filtered out,
but still properly handled when the real read call is done. The commit
5e9d398240b2 ("btrfs: readpages() should submit IO as read-ahead") added
REQ_RAHEAD to readpages() because that's only used for readahead
(despite what one would expect from the callback name).
This causes a flood of messages and inflated read error stats, so skip
reporting in case it's readahead.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202403
Reported-by: LimeTech <tomm@lime-technology.com> Fixes: 5e9d398240b2
("btrfs: readpages() should submit IO as read-ahead") CC:
stable@vger.kernel.org # 4.19+ Signed-off-by: David Sterba
<dsterba@suse.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/volumes.c (diff)
Commit 4a0584a21542fe8000f72258a3884bfc65668a7e by gregkh
btrfs: raid56: properly unmap parity page in finish_parity_scrub()
commit 3897b6f0a859288c22fb793fad11ec2327e60fcd upstream.
Parity page is incorrectly unmapped in finish_parity_scrub(), triggering
a reference counter bug on i386, i.e.:
[ 157.662401] kernel BUG at mm/highmem.c:349!
[ 157.666725] invalid opcode: 0000 [#1] SMP PTI
The reason is that kunmap(p_page) was completely left out, so we never
did an unmap for the p_page and the loop unmapping the rbio page was
iterating over the wrong number of stripes: unmapping should be done
with nr_data instead of rbio->real_stripes.
Test case to reproduce the bug:
- create a raid5 btrfs filesystem:
  # mkfs.btrfs -m raid5 -d raid5 /dev/sdb /dev/sdc /dev/sdd /dev/sde
- mount it:
  # mount /dev/sdb /mnt
- run btrfs scrub in a loop:
  # while :; do btrfs scrub start -BR /mnt; done
BugLink: https://bugs.launchpad.net/bugs/1812845 Fixes: 5a6ac9eacb49
("Btrfs, raid56: support parity scrub on raid56") CC:
stable@vger.kernel.org # 4.4+ Reviewed-by: Johannes Thumshirn
<jthumshirn@suse.de> Signed-off-by: Andrea Righi
<andrea.righi@canonical.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>
The file was modifiedfs/btrfs/raid56.c (diff)
Commit e3a605636a80164fa90f0a8b97a033ae790d9509 by gregkh
btrfs: Fix bound checking in qgroup_trace_new_subtree_blocks
commit 7ff2c2a1a71e83f74574b8001ea88deb3c166ad7 upstream.
If 'cur_level' is 7  then the bound checking at the top of the function
will actually pass. Later on, it's possible to dereference
ds_path->nodes[cur_level+1] which will be an out of bounds.
The correct check will be cur_level >= BTRFS_MAX_LEVEL - 1 .
Fixes-coverty-id: 1440918 Fixes-coverty-id: 1440911 Fixes: ea49f3e73c4b
("btrfs: qgroup: Introduce function to find all new tree blocks of reloc
tree") CC: stable@vger.kernel.org # 4.20+ Reviewed-by: Qu Wenruo
<wqu@suse.com> Signed-off-by: Nikolay Borisov <nborisov@suse.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>
The file was modifiedfs/btrfs/qgroup.c (diff)
Commit 84104398e6f33bc8d1e64177bd4e205e355dce42 by gregkh
btrfs: Avoid possible qgroup_rsv_size overflow in
btrfs_calculate_inode_block_rsv_size
commit 139a56170de67101791d6e6c8e940c6328393fe9 upstream.
qgroup_rsv_size is calculated as the product of outstanding_extent *
fs_info->nodesize. The product is calculated with 32 bit precision since
both variables are defined as u32. Yet qgroup_rsv_size expects a 64 bit
result.
Avoid possible multiplication overflow by casting outstanding_extent to
u64. Such overflow would in the worst case (64K nodesize) require more
than 65536 extents, which is quite large and i'ts not likely that it
would happen in practice.
Fixes-coverity-id: 1435101 Fixes: ff6bc37eb7f6 ("btrfs: qgroup: Use
independent and accurate per inode qgroup rsv") CC:
stable@vger.kernel.org # 4.19+ Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Nikolay Borisov <nborisov@suse.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>
The file was modifiedfs/btrfs/extent-tree.c (diff)
Commit 3ba84d2d75810cd64d4841867ad301e52e4522df by gregkh
Btrfs: fix assertion failure on fsync with NO_HOLES enabled
commit 0ccc3876e4b2a1559a4dbe3126dda4459d38a83b upstream.
Back in commit a89ca6f24ffe4 ("Btrfs: fix fsync after truncate when
no_holes feature is enabled") I added an assertion that is triggered
when an inline extent is found to assert that the length of the
(uncompressed) data the extent represents is the same as the i_size of
the inode, since that is true most of the time I couldn't find or didn't
remembered about any exception at that time. Later on the assertion was
expanded twice to deal with a case of a compressed inline extent
representing a range that matches the sector size followed by an
expanding truncate, and another case where fallocate can update the
i_size of the inode without adding or updating existing extents (if the
fallocate range falls entirely within the first block of the file).
These two expansion/fixes of the assertion were done by commit
7ed586d0a8241 ("Btrfs: fix assertion on fsync of regular file when using
no-holes feature") and commit 6399fb5a0b69a
("Btrfs: fix assertion failure during fsync in no-holes mode"). These
however missed the case where an falloc expands the i_size of an inode
to exactly the sector size and inline extent exists, for example:
$ mkfs.btrfs -f -O no-holes /dev/sdc
$ mount /dev/sdc /mnt
$ xfs_io -f -c "pwrite -S 0xab 0 1096" /mnt/foobar
wrote 1096/1096 bytes at offset 0
1 KiB, 1 ops; 0.0002 sec (4.448 MiB/sec and 4255.3191 ops/sec)
$ xfs_io -c "falloc 1096 3000" /mnt/foobar
$ xfs_io -c "fsync" /mnt/foobar
Segmentation fault
$ dmesg
[701253.602385] assertion failed: len == i_size || (len ==
fs_info->sectorsize && btrfs_file_extent_compression(leaf, extent) !=
BTRFS_COMPRESS_NONE) || (len < i_size && i_size < fs_info->sectorsize),
file: fs/btrfs/tree-log.c, line: 4727
[701253.602962] ------------[ cut here ]------------
[701253.603224] kernel BUG at fs/btrfs/ctree.h:3533!
[701253.603503] invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC PTI
[701253.603774] CPU: 2 PID: 7192 Comm: xfs_io Tainted: G        W      
5.0.0-rc8-btrfs-next-45 #1
[701253.604054] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS rel-1.11.2-0-gf9626ccb91-prebuilt.qemu-project.org 04/01/2014
[701253.604650] RIP: 0010:assfail.constprop.23+0x18/0x1a [btrfs]
(...)
[701253.605591] RSP: 0018:ffffbb48c186bc48 EFLAGS: 00010286
[701253.605914] RAX: 00000000000000de RBX: ffff921d0a7afc08 RCX:
0000000000000000
[701253.606244] RDX: 0000000000000000 RSI: ffff921d36b16868 RDI:
ffff921d36b16868
[701253.606580] RBP: ffffbb48c186bcf0 R08: 0000000000000000 R09:
0000000000000000
[701253.606913] R10: 0000000000000003 R11: 0000000000000000 R12:
ffff921d05d2de18
[701253.607247] R13: ffff921d03b54000 R14: 0000000000000448 R15:
ffff921d059ecf80
[701253.607769] FS:  00007f14da906700(0000) GS:ffff921d36b00000(0000)
knlGS:0000000000000000
[701253.608163] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[701253.608516] CR2: 000056087ea9f278 CR3: 00000002268e8001 CR4:
00000000003606e0
[701253.608880] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000
[701253.609250] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400
[701253.609608] Call Trace:
[701253.609994]  btrfs_log_inode+0xdfb/0xe40 [btrfs]
[701253.610383]  btrfs_log_inode_parent+0x2be/0xa60 [btrfs]
[701253.610770]  ? do_raw_spin_unlock+0x49/0xc0
[701253.611150]  btrfs_log_dentry_safe+0x4a/0x70 [btrfs]
[701253.611537]  btrfs_sync_file+0x3b2/0x440 [btrfs]
[701253.612010]  ? do_sysinfo+0xb0/0xf0
[701253.612552]  do_fsync+0x38/0x60
[701253.612988]  __x64_sys_fsync+0x10/0x20
[701253.613360]  do_syscall_64+0x60/0x1b0
[701253.613733]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[701253.614103] RIP: 0033:0x7f14da4e66d0
(...)
[701253.615250] RSP: 002b:00007fffa670fdb8 EFLAGS: 00000246 ORIG_RAX:
000000000000004a
[701253.615647] RAX: ffffffffffffffda RBX: 0000000000000001 RCX:
00007f14da4e66d0
[701253.616047] RDX: 000056087ea9c260 RSI: 000056087ea9c260 RDI:
0000000000000003
[701253.616450] RBP: 0000000000000001 R08: 0000000000000020 R09:
0000000000000010
[701253.616854] R10: 000000000000009b R11: 0000000000000246 R12:
000056087ea9c260
[701253.617257] R13: 000056087ea9c240 R14: 0000000000000000 R15:
000056087ea9dd10
(...)
[701253.619941] ---[ end trace e088d74f132b6da5 ]---
Updating the assertion again to allow for this particular case would
result in a meaningless assertion, plus there is currently no risk of
logging content that would result in any corruption after a log replay
if the size of the data encoded in an inline extent is greater than the
inode's i_size
(which is not currently possibe either with or without compression),
therefore just remove the assertion.
CC: stable@vger.kernel.org # 4.4+ Signed-off-by: Filipe Manana
<fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/tree-log.c (diff)
Commit 7bcb002431ba3d0a2d5c646219a8100914cb3a9d by gregkh
locks: wake any locks blocked on request before deadlock check
commit 945ab8f6de94430c23a82f3cf2e3f6d6f2945ff7 upstream.
Andreas reported that he was seeing the tdbtorture test fail in some
cases with -EDEADLCK when it wasn't before. Some debugging showed that
deadlock detection was sometimes discovering the caller's lock request
itself in a dependency chain.
While we remove the request from the blocked_lock_hash prior to
reattempting to acquire it, any locks that are blocked on that request
will still be present in the hash and will still have their fl_blocker
pointer set to the current request.
This causes posix_locks_deadlock to find a deadlock dependency chain
when it shouldn't, as a lock request cannot block itself.
We are going to end up waking all of those blocked locks anyway when we
go to reinsert the request back into the blocked_lock_hash, so just do
it prior to checking for deadlocks. This ensures that any lock blocked
on the current request will no longer be part of any blocked request
chain.
URL: https://bugzilla.kernel.org/show_bug.cgi?id=202975 Fixes:
5946c4319ebb ("fs/locks: allow a lock request to block other requests.")
Cc: stable@vger.kernel.org Reported-by: Andreas Schneider
<asn@redhat.com> Signed-off-by: Neil Brown <neilb@suse.com>
Signed-off-by: Jeff Layton <jlayton@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/locks.c (diff)
Commit 8bf47766a9f9f4a716ad83158ccf5272fe3b0b54 by gregkh
tracing: initialize variable in create_dyn_event()
commit 3dee10da2e9ff220e054a8f158cc296c797fbe81 upstream.
Fix compile warning in create_dyn_event(): 'ret' may be used
uninitialized in this function [-Wuninitialized].
Link:
http://lkml.kernel.org/r/1553237900-8555-1-git-send-email-frowand.list@gmail.com
Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Ingo Molnar
<mingo@kernel.org> Cc: Tom Zanussi <tom.zanussi@linux.intel.com> Cc:
Ravi Bangoria <ravi.bangoria@linux.vnet.ibm.com> Cc:
stable@vger.kernel.org Fixes: 5448d44c3855 ("tracing: Add unified
dynamic event framework") Signed-off-by: Frank Rowand
<frank.rowand@sony.com> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedkernel/trace/trace_dynevent.c (diff)
Commit a2216e2d0751100397a90422695c6211247b0592 by gregkh
ARM: imx6q: cpuidle: fix bug that CPU might not wake up at expected time
commit 91740fc8242b4f260cfa4d4536d8551804777fae upstream.
In the current cpuidle implementation for i.MX6q, the CPU that sets
'WAIT_UNCLOCKED' and the CPU that returns to 'WAIT_CLOCKED' are always
the same. While the CPU that sets 'WAIT_UNCLOCKED' is in IDLE state of
"WAIT", if the other CPU wakes up and enters IDLE state of "WFI" istead
of "WAIT", this CPU can not wake up at expired time.
Because, in the case of "WFI", the CPU must be waked up by the local
timer interrupt. But, while 'WAIT_UNCLOCKED' is set, the local timer is
stopped, when all CPUs execute "wfi" instruction. As a result, the local
timer interrupt is not fired.
In this situation, this CPU will wake up by IRQ different from local
timer. (e.g. broacast timer)
So, this fix changes CPU to return to 'WAIT_CLOCKED'.
Signed-off-by: Kohji Okuno <okuno.kohji@jp.panasonic.com> Fixes:
e5f9dec8ff5f ("ARM: imx6q: support WAIT mode using cpuidle") Cc:
<stable@vger.kernel.org> Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm/mach-imx/cpuidle-imx6q.c (diff)
Commit 73d6cb88453261d77a95b219d39c543cca46c115 by gregkh
powerpc: bpf: Fix generation of load/store DW instructions
commit 86be36f6502c52ddb4b85938145324fd07332da1 upstream.
Yauheni Kaliuta pointed out that PTR_TO_STACK store/load verifier test
was failing on powerpc64 BE, and rightfully indicated that the PPC_LD()
macro is not masking away the last two bits of the offset per the ISA,
resulting in the generation of 'lwa' instruction instead of the intended
'ld' instruction.
Segher also pointed out that we can't simply mask away the last two bits
as that will result in loading/storing from/to a memory location that
was not intended.
This patch addresses this by using ldx/stdx if the offset is not
word-aligned. We load the offset into a temporary register (TMP_REG_2)
and use that as the index register in a subsequent ldx/stdx. We fix
PPC_LD() macro to mask off the last two bits, but enhance PPC_BPF_LL()
and PPC_BPF_STL() to factor in the offset value and generate the proper
instruction sequence. We also convert all existing users of PPC_LD() and
PPC_STD() to use these macros. All existing uses of these macros have
been audited to ensure that TMP_REG_2 can be clobbered.
Fixes: 156d0e290e96 ("powerpc/ebpf/jit: Implement JIT compiler for
extended BPF") Cc: stable@vger.kernel.org # v4.9+
Reported-by: Yauheni Kaliuta <yauheni.kaliuta@redhat.com> Signed-off-by:
Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com> Signed-off-by: Daniel
Borkmann <daniel@iogearbox.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/net/bpf_jit32.h (diff)
The file was modifiedarch/powerpc/net/bpf_jit_comp64.c (diff)
The file was modifiedarch/powerpc/net/bpf_jit.h (diff)
The file was modifiedarch/powerpc/include/asm/ppc-opcode.h (diff)
The file was modifiedarch/powerpc/net/bpf_jit64.h (diff)
Commit bd01ab90e8a5fd84aa91839ea9b96f5edf0842d2 by gregkh
vfio: ccw: only free cp on final interrupt
commit 50b7f1b7236bab08ebbbecf90521e84b068d7a17 upstream.
When we get an interrupt for a channel program, it is not necessarily
the final interrupt; for example, the issuing guest may request an
intermediate interrupt by specifying the program-controlled-interrupt
flag on a ccw.
We must not switch the state to idle if the interrupt is not yet final;
even more importantly, we must not free the translated channel program
if the interrupt is not yet final, or the host can crash during cp
rewind.
Fixes: e5f84dbaea59 ("vfio: ccw: return I/O results asynchronously") Cc:
stable@vger.kernel.org # v4.12+ Reviewed-by: Eric Farman
<farman@linux.ibm.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/s390/cio/vfio_ccw_drv.c (diff)
Commit 7a4cdaf977c2c3636f3bb4d11fcfc498ec3475c8 by gregkh
NFS: Fix nfs4_lock_state refcounting in nfs4_alloc_{lock,unlock}data()
commit 3028efe03be9c8c4cd7923f0f3c39b2871cc8a8f upstream.
Commit 7b587e1a5a6c ("NFS: use locks_copy_lock() to copy locks.")
changed the lock copying from memcpy() to the dedicated
locks_copy_lock() function. The latter correctly increments the
nfs4_lock_state.ls_count via nfs4_fl_copy_lock(), however, this refcount
has already been incremented in the nfs4_alloc_{lock,unlock}data().
Kmemleak subsequently reports an unreferenced nfs4_lock_state object as
below (arm64 platform):
unreferenced object 0xffff8000fce0b000 (size 256):
comm "systemd-sysuser", pid 1608, jiffies 4294892825 (age 32.348s)
hex dump (first 32 bytes):
   20 57 4c fb 00 80 ff ff 20 57 4c fb 00 80 ff ff   WL..... WL.....
   00 57 4c fb 00 80 ff ff 01 00 00 00 00 00 00 00  .WL.............
backtrace:
   [<000000000d15010d>] kmem_cache_alloc+0x178/0x208
   [<00000000d7c1d264>] nfs4_set_lock_state+0x124/0x1f0
   [<000000009c867628>] nfs4_proc_lock+0x90/0x478
   [<000000001686bd74>] do_setlk+0x64/0xe8
   [<00000000e01500d4>] nfs_lock+0xe8/0x1f0
   [<000000004f387d8d>] vfs_lock_file+0x18/0x40
   [<00000000656ab79b>] do_lock_file_wait+0x68/0xf8
   [<00000000f17c4a4b>] fcntl_setlk+0x224/0x280
   [<0000000052a242c6>] do_fcntl+0x418/0x730
   [<000000004f47291a>] __arm64_sys_fcntl+0x84/0xd0
   [<00000000d6856e01>] el0_svc_common+0x80/0xf0
   [<000000009c4bd1df>] el0_svc_handler+0x2c/0x80
   [<00000000b1a0d479>] el0_svc+0x8/0xc
   [<0000000056c62a0f>] 0xffffffffffffffff
This patch removes the original refcount_inc(&lsp->ls_count) that was
paired with the memcpy() lock copying.
Fixes: 7b587e1a5a6c ("NFS: use locks_copy_lock() to copy locks.") Cc:
<stable@vger.kernel.org> # 5.0.x- Cc: NeilBrown <neilb@suse.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by:
Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/nfs4proc.c (diff)
Commit e37c15d77d68cf8f4f5af368f431d61372ce2f22 by gregkh
NFS: fix mount/umount race in nlmclnt.
commit 4a9be28c45bf02fa0436808bb6c0baeba30e120e upstream.
If the last NFSv3 unmount from a given host races with a mount from the
same host, we can destroy an nlm_host that is still in use.
Specifically nlmclnt_lookup_host() can increment h_count on an nlm_host
that nlmclnt_release_host() has just successfully called
refcount_dec_and_test() on. Once nlmclnt_lookup_host() drops the mutex,
nlm_destroy_host_lock() will be called to destroy the nlmclnt which is
now in use again.
The cause of the problem is that the dec_and_test happens outside the
locked region.  This is easily fixed by using
refcount_dec_and_mutex_lock().
Fixes: 8ea6ecc8b075 ("lockd: Create client-side nlm_host cache") Cc:
stable@vger.kernel.org (v2.6.38+) Signed-off-by: NeilBrown
<neilb@suse.com> Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/lockd/host.c (diff)
Commit 0110524398bb210d1f31f3ccd06064be2af858ea by gregkh
NFSv4.1 don't free interrupted slot on open
commit 0cb98abb5bd13b9a636bde603d952d722688b428 upstream.
Allow the async rpc task for finish and update the open state if needed,
then free the slot. Otherwise, the async rpc unable to decode the reply.
Signed-off-by: Olga Kornievskaia <kolga@netapp.com> Fixes: ae55e59da0e4
("pnfs: Don't release the sequence slot...") Cc: stable@vger.kernel.org
# v4.18+ Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/nfs4proc.c (diff)
Commit ce1ae80cacf7948bbdac9999c30e7cc6ca143f62 by gregkh
net: dsa: qca8k: remove leftover phy accessors
commit 1eec7151ae0e134bd42e3f128066b2ff8da21393 upstream.
This belated patch implements Andrew Lunn's request of
"remove the phy_read() and phy_write() functions."
<https://lore.kernel.org/patchwork/comment/902734/>
While seemingly harmless, this causes the switch's user port PHYs to get
registered twice. This is because the DSA subsystem will create a slave
mdio-bus not knowing that the qca8k_phy_(read|write) accessors operate
on the external mdio-bus. So the same "bus" gets effectively duplicated.
Cc: stable@vger.kernel.org Fixes: 6b93fb46480a ("net-next: dsa: add new
driver for qca8xxx family") Signed-off-by: Christian Lamparter
<chunkeey@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/qca8k.c (diff)
Commit abe5b0a76de91133b38bd66ec8d2b7316eb7cb4b by gregkh
ALSA: rawmidi: Fix potential Spectre v1 vulnerability
commit 2b1d9c8f87235f593826b9cf46ec10247741fff9 upstream.
info->stream is indirectly controlled by user-space, hence leading to a
potential exploitation of the Spectre variant 1 vulnerability.
This issue was detected with the help of Smatch:
sound/core/rawmidi.c:604 __snd_rawmidi_info_select() warn: potential
spectre issue 'rmidi->streams' [r] (local cap)
Fix this by sanitizing info->stream before using it to index
rmidi->streams.
Notice that given that speculation windows are large, the policy is to
kill the speculation on the first load and not worry if it can be
completed with a dependent load/store [1].
[1] https://lore.kernel.org/lkml/20180423164740.GY17484@dhcp22.suse.cz/
Cc: stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/core/rawmidi.c (diff)
Commit a30c0ff829c63ebf8fe399e0860f32db0bd7acfe by gregkh
ALSA: seq: oss: Fix Spectre v1 vulnerability
commit c709f14f0616482b67f9fbcb965e1493a03ff30b upstream.
dev is indirectly controlled by user-space, hence leading to a potential
exploitation of the Spectre variant 1 vulnerability.
This issue was detected with the help of Smatch:
sound/core/seq/oss/seq_oss_synth.c:626 snd_seq_oss_synth_make_info()
warn: potential spectre issue 'dp->synths' [w] (local cap)
Fix this by sanitizing dev before using it to index dp->synths.
Notice that given that speculation windows are large, the policy is to
kill the speculation on the first load and not worry if it can be
completed with a dependent load/store [1].
[1] https://lore.kernel.org/lkml/20180423164740.GY17484@dhcp22.suse.cz/
Cc: stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/core/seq/oss/seq_oss_synth.c (diff)
Commit 94176d2a1d2b6f25286ee6a4b2e19655467b99ae by gregkh
ALSA: pcm: Fix possible OOB access in PCM oss plugins
commit ca0214ee2802dd47239a4e39fb21c5b00ef61b22 upstream.
The PCM OSS emulation converts and transfers the data on the fly via
"plugins".  The data is converted over the dynamically allocated buffer
for each plugin, and recently syzkaller caught OOB in this flow.
Although the bisection by syzbot pointed out to the commit 65766ee0bf7f
("ALSA: oss: Use kvzalloc() for local buffer allocations"), this is
merely a commit to replace vmalloc() with kvmalloc(), hence it can't be
the cause.  The further debug action revealed that this happens in the
case where a slave PCM doesn't support only the stereo channels while
the OSS stream is set up for a mono channel.  Below is a brief
explanation:
At each OSS parameter change, the driver sets up the PCM hw_params again
in snd_pcm_oss_change_params_lock().  This is also the place where
plugins are created and local buffers are allocated.  The problem is
that the plugins are created before the final hw_params is determined.
Namely, two snd_pcm_hw_param_near() calls for setting the period size
and periods may influence on the final result of channels, rates, etc,
too, while the current code has already created plugins beforehand with
the premature values.  So, the plugin believes that channels=1, while
the actual I/O is with channels=2, which makes the driver
reading/writing over the allocated buffer size.
The fix is simply to move the plugin allocation code after the final
hw_params call.
Reported-by: syzbot+d4503ae45b65c5bc1194@syzkaller.appspotmail.com Cc:
<stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/core/oss/pcm_oss.c (diff)
Commit 56e3785b579b8dfb4d70f96b38d6fda68eb813f8 by gregkh
ALSA: pcm: Don't suspend stream in unrecoverable PCM state
commit 113ce08109f8e3b091399e7cc32486df1cff48e7 upstream.
Currently PCM core sets each opened stream forcibly to SUSPENDED state
via snd_pcm_suspend_all() call, and the user-space is responsible for
re-triggering the resume manually either via snd_pcm_resume() or prepare
call.  The scheme works fine usually, but there are corner cases where
the stream can't be resumed by that call: the streams still in OPEN
state before finishing hw_params.  When they are suspended, user-space
cannot perform resume or prepare because they haven't been set up yet.
The only possible recovery is to re-open the device, which isn't nice at
all.  Similarly, when a stream is in DISCONNECTED state, it makes no
sense to change it to SUSPENDED state.  Ditto for in SETUP state; which
you can re-prepare directly.
So, this patch addresses these issues by filtering the PCM streams to be
suspended by checking the PCM state.  When a stream is in either OPEN,
SETUP or DISCONNECTED as well as already SUSPENDED, the suspend action
is skipped.
To be noted, this problem was originally reported for the PCM runtime PM
on HD-audio.  And, the runtime PM problem itself was already addressed
(although not intended) by the code refactoring commits 3d21ef0b49f8
("ALSA: pcm: Suspend streams globally via device type PM ops") and
17bc4815de58 ("ALSA: pci: Remove superfluous snd_pcm_suspend*() calls").
These commits eliminated the snd_pcm_suspend*() calls from the runtime
PM suspend callback code path, hence the racy OPEN state won't appear
while runtime PM.
(FWIW, the race window is between snd_pcm_open_substream() and the first
power up in azx_pcm_open().)
Although the runtime PM issue was already "fixed", the same problem is
still present for the system PM, hence this patch is still needed. And
for stable trees, this patch alone should suffice for fixing the runtime
PM problem, too.
Reported-and-tested-by: Jon Hunter <jonathanh@nvidia.com> Cc:
<stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/core/pcm_native.c (diff)
Commit c87a0bb99b8393641cf416bd5c57d82fa86040a6 by gregkh
ALSA: hda/realtek - Fixed Headset Mic JD not stable
commit 10f5b1b85ed10a80d45bc2db450e65bd792efaad upstream.
It will be lose Mic JD state when Chrome OS boot and headset was
plugged. Implement of reset combo jack JD. It will show normally.
Fixes: e854747d7593 ("ALSA: hda/realtek - Enable headset button support
for new codec") Signed-off-by: Kailang Yang <kailang@realtek.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 545d1fe70648a4797e5b797f871544b23c98a506 by gregkh
ALSA: hda/realtek: merge alc_fixup_headset_jack to
alc295_fixup_chromebook
commit c8a9afa632f0fd45731d3353525faf1fdb362c89 upstream.
The ALC225_FIXUP_HEADSET_JACK fixup can be merged to
alc295_fixup_chromebook. There are no other users for
ALC225_FIXUP_HEADSET_JACK other than the chromebook hardware.
Fixes: 10f5b1b85ed1 ("ALSA: hda/realtek - Fixed Headset Mic JD not
stable") Cc: Kailang Yang <kailang@realtek.com> Signed-off-by: Jaroslav
Kysela <perex@perex.cz> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 8da540f343aa36f711103e3bce8b40c617e97293 by gregkh
ALSA: hda/realtek - Add support headset mode for DELL WYSE AIO
commit 136824efaab2c095fc911048f7c7ddeda258c965 upstream.
This patch will enable WYSE AIO for Headset mode.
Signed-off-by: Kailang Yang <kailang@realtek.com> Signed-off-by: Takashi
Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit b6de98dcc02e5a3ec6ecf2aeb6ae5a13dcbeefae by gregkh
ALSA: hda/realtek - Add support headset mode for New DELL WYSE NB
commit da484d00f020af3dd7cfcc6c4b69a7f856832883 upstream.
Enable headset mode support for new WYSE NB platform.
Signed-off-by: Kailang Yang <kailang@realtek.com> Signed-off-by: Takashi
Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 9635b3bf1a5fbbc8d115a769f03d1735f3911974 by gregkh
ALSA: hda/realtek: Enable headset MIC of Acer AIO with ALC286
commit 667a8f73753908c4d0171e52b71774f9be5d6713 upstream.
Some Acer AIO desktops like Veriton Z6860G, Z4860G and Z4660G cannot
record sound from headset MIC.  This patch adds the
ALC286_FIXUP_ACER_AIO_HEADSET_MIC quirk to fix this issue.
Fixes: 9f8aefed9623 ("ALSA: hda/realtek: Fix mic issue on Acer AIO
Veriton Z4660G") Fixes: b72f936f6b32 ("ALSA: hda/realtek: Fix mic issue
on Acer AIO Veriton Z4860G/Z6860G") Signed-off-by: Jian-Hong Pan
<jian-hong@endlessm.com> Reviewed-by: Kailang Yang <kailang@realtek.com>
Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 12af8b3d94eb8df0ef0dd509f17a74c5444a9470 by gregkh
ALSA: hda/realtek: Enable headset MIC of Acer Aspire Z24-890 with ALC286
commit 2733ccebf4a937a0858e7d05a4a003b89715033f upstream.
The Acer Aspire Z24-890 cannot detect the headset MIC until
ALC286_FIXUP_ACER_AIO_HEADSET_MIC quirk applied.
Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com> Signed-off-by:
Daniel Drake <drake@endlessm.com> Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit c672af11fbb0614c49a40aeeaa54408e84a8d091 by gregkh
ALSA: hda/realtek - Add support for Acer Aspire E5-523G/ES1-432 headset
mic
commit c7531e31c8a440b5fe6bd62664def5bcb6262f96 upstream.
The Acer laptop Aspire E5-523G and ES1-432 with ALC255 can't detect the
headset microphone until ALC255_FIXUP_ACER_MIC_NO_PRESENCE quirk
applied.
Signed-off-by: Chris Chiu <chiu@endlessm.com> Signed-off-by: Daniel
Drake <drake@endlessm.com> Signed-off-by: Jian-Hong Pan
<jian-hong@endlessm.com> Cc: <stable@vger.kernel.org> Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit dd1774f3d0cdecd422daab2504a9acb70f8ec4c4 by gregkh
ALSA: hda/realtek: Enable ASUS X441MB and X705FD headset MIC with ALC256
commit e1037354a0a75acdea2b27043c0a371ed85cf262 upstream.
The ASUS laptop X441MB and X705FD with ALC256 cannot detect the headset
MIC until ALC256_FIXUP_ASUS_MIC_NO_PRESENCE quirk applied.
Signed-off-by: Chris Chiu <chiu@endlessm.com> Signed-off-by: Daniel
Drake <drake@endlessm.com> Signed-off-by: Jian-Hong Pan
<jian-hong@endlessm.com> Cc: <stable@vger.kernel.org> Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit c03c547b07d973eb014f005992dba2b133311b0a by gregkh
ALSA: hda/realtek: Enable headset mic of ASUS P5440FF with ALC256
commit a806ef1cf3bbc0baadc6cdeb11f12b5dd27e91c2 upstream.
The ASUS laptop P5440FF with ALC256 can't detect the headset microphone
until ALC256_FIXUP_ASUS_MIC_NO_PRESENCE quirk applied.
Signed-off-by: Chris Chiu <chiu@endlessm.com> Signed-off-by: Daniel
Drake <drake@endlessm.com> Signed-off-by: Jian-Hong Pan
<jian-hong@endlessm.com> Cc: <stable@vger.kernel.org> Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit f2b1bfbc173a22e0c6e1865b1fa2a7e88eddad25 by gregkh
ALSA: hda/realtek: Enable headset MIC of ASUS X430UN and X512DK with
ALC256
commit 6ac371aa1a74240fb910c98aa3484d5ece8473d3 upstream.
The ASUS X430UN and X512DK with ALC256 cannot detect the headset MIC
until ALC256_FIXUP_ASUS_MIC_NO_PRESENCE quirk applied.
Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com> Signed-off-by:
Daniel Drake <drake@endlessm.com> Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit a6c74dcb59091b7c246f378b7b68ec65a825a85c by gregkh
ALSA: hda/realtek - Fix speakers on Acer Predator Helios 500 Ryzen
laptops
commit e2a829b3da01b9b32c4d0291d042b8a6e2a98ca3 upstream.
On an Acer Predator Helios 500 (Ryzen version), the laptop's speakers
don't work out of the box.
The problem can be worked around with hdajackretask, remapping the
"Black Headphone, Right side" pin (0x21) to the Internal speaker.
This patch adds a quirk to change this mapping by default.
[ corrected ALC299_FIXUP_PREDATOR_SPK definition and adapted for the
latest tree by tiwai ]
Signed-off-by: Bernhard Rosenkraenzer <bero@lindev.ch> Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 95d78fc939430d77b1545b2290fa5c3bf1ddc68b by gregkh
kbuild: modversions: Fix relative CRC byte order interpretation
commit 54a7151b1496cddbb7a83546b7998103e98edc88 upstream.
Fix commit 56067812d5b0 ("kbuild: modversions: add infrastructure for
emitting relative CRCs") where CRCs are interpreted in host byte order
rather than proper kernel byte order. The bug is conditional on
CONFIG_MODULE_REL_CRCS.
For example, when loading a BE module into a BE kernel compiled with a
LE system, the error "disagrees about version of symbol module_layout"
is produced. A message such as "Found checksum D7FA6856 vs module
5668FAD7" will be given with debug enabled, which indicates an obvious
endian problem within __kcrctab within the kernel image.
The general solution is to use the macro TO_NATIVE, as is done in
similar cases throughout modpost.c. With this correction it has been
verified that a BE kernel compiled with a LE system accepts BE modules.
This change has also been verified with a LE kernel compiled with a LE
system, in which case TO_NATIVE returns its value unmodified since the
byte orders match. This is by far the common case.
Fixes: 56067812d5b0 ("kbuild: modversions: add infrastructure for
emitting relative CRCs") Signed-off-by: Fredrik Noring
<noring@nocrew.org> Cc: stable@vger.kernel.org Signed-off-by: Masahiro
Yamada <yamada.masahiro@socionext.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedscripts/mod/modpost.c (diff)
Commit f2391e6767a6a54fd7c7ba928ec8ff0d4aa08fea by gregkh
fs/open.c: allow opening only regular files during execve()
commit 73601ea5b7b18eb234219ae2adf77530f389da79 upstream.
syzbot is hitting lockdep warning [1] due to trying to open a fifo
during an execve() operation.  But we don't need to open non regular
files during an execve() operation, for all files which we will need are
the executable file itself and the interpreter programs like /bin/sh and
ld-linux.so.2 .
Since the manpage for execve(2) says that execve() returns EACCES when
the file or a script interpreter is not a regular file, and the manpage
for uselib(2) says that uselib() can return EACCES, and we use
FMODE_EXEC when opening for execve()/uselib(), we can bail out if a non
regular file is requested with FMODE_EXEC set.
Since this deadlock followed by khungtaskd warnings is trivially
reproducible by a local unprivileged user, and syzbot's frequent crash
due to this deadlock defers finding other bugs, let's workaround this
deadlock until we get a chance to find a better solution.
[1]
https://syzkaller.appspot.com/bug?id=b5095bfec44ec84213bac54742a82483aad578ce
Link:
http://lkml.kernel.org/r/1552044017-7890-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp
Reported-by: syzbot
<syzbot+e93a80c1bb7c5c56e522461c149f8bf55eab1b2b@syzkaller.appspotmail.com>
Fixes: 8924feff66f35fe2 ("splice: lift pipe_lock out of
splice_to_pipe()") Signed-off-by: Tetsuo Handa
<penguin-kernel@I-love.SAKURA.ne.jp> Acked-by: Kees Cook
<keescook@chromium.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Eric
Biggers <ebiggers3@gmail.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc:
<stable@vger.kernel.org> [4.9+] 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>
The file was modifiedfs/open.c (diff)
Commit 310891a84396d072588e577694b3c20290b38079 by gregkh
ocfs2: fix inode bh swapping mixup in ocfs2_reflink_inodes_lock
commit e6a9467ea14bae8691b0f72c500510c42ea8edb8 upstream.
ocfs2_reflink_inodes_lock() can swap the inode1/inode2 variables so that
we always grab cluster locks in order of increasing inode number.
Unfortunately, we forget to swap the inode record buffer head pointers
when we've done this, which leads to incorrect bookkeepping when we're
trying to make the two inodes have the same refcount tree.
This has the effect of causing filesystem shutdowns if you're trying to
reflink data from inode 100 into inode 97, where inode 100 already has a
refcount tree attached and inode 97 doesn't.  The reflink code decides
to copy the refcount tree pointer from 100 to 97, but uses inode 97's
inode record to open the tree root (which it doesn't have) and blows up.
This issue causes filesystem shutdowns and metadata corruption!
Link: http://lkml.kernel.org/r/20190312214910.GK20533@magnolia Fixes:
29ac8e856cb369 ("ocfs2: implement the VFS clone_range, copy_range, and
dedupe_range features") Signed-off-by: Darrick J. Wong
<darrick.wong@oracle.com> Reviewed-by: Joseph Qi <jiangqi903@gmail.com>
Cc: Mark Fasheh <mfasheh@versity.com> Cc: Joel Becker
<jlbec@evilplan.org> Cc: Junxiao Bi <junxiao.bi@oracle.com> Cc: Joseph
Qi <joseph.qi@huawei.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>
The file was modifiedfs/ocfs2/refcounttree.c (diff)
Commit 98163d192bc5050f88fee16754e9c01e7d1d6def by gregkh
scsi: sd: Fix a race between closing an sd device and sd I/O
commit c14a57264399efd39514a2329c591a4b954246d8 upstream.
The scsi_end_request() function calls scsi_cmd_to_driver() indirectly
and hence needs the disk->private_data pointer. Avoid that that pointer
is cleared before all affected I/O requests have finished. This patch
avoids that the following crash occurs:
Unable to handle kernel NULL pointer dereference at virtual address
0000000000000000 Call trace:
scsi_mq_uninit_cmd+0x1c/0x30
scsi_end_request+0x7c/0x1b8
scsi_io_completion+0x464/0x668
scsi_finish_command+0xbc/0x160
scsi_eh_flush_done_q+0x10c/0x170
sas_scsi_recover_host+0x84c/0xa98 [libsas]
scsi_error_handler+0x140/0x5b0
kthread+0x100/0x12c
ret_from_fork+0x10/0x18
Cc: Christoph Hellwig <hch@lst.de> Cc: Ming Lei <ming.lei@redhat.com>
Cc: Hannes Reinecke <hare@suse.com> Cc: Johannes Thumshirn
<jthumshirn@suse.de> Cc: Jason Yan <yanaijie@huawei.com> Cc:
<stable@vger.kernel.org> Signed-off-by: Bart Van Assche
<bvanassche@acm.org> Reported-by: Jason Yan <yanaijie@huawei.com>
Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K.
Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/sd.c (diff)
Commit 143982417ad32d854b127b758057c3098e19c851 by gregkh
scsi: sd: Quiesce warning if device does not report optimal I/O size
commit 1d5de5bd311be7cd54f02f7cd164f0349a75c876 upstream.
Commit a83da8a4509d ("scsi: sd: Optimal I/O size should be a multiple of
physical block size") split one conditional into several separate
statements in an effort to provide more accurate warning messages when a
device reports a nonsensical value. However, this reorganization
accidentally dropped the precondition of the reported value being larger
than zero. This lead to a warning getting emitted on devices that do not
report an optimal I/O size at all.
Remain silent if a device does not report an optimal I/O size.
Fixes: a83da8a4509d ("scsi: sd: Optimal I/O size should be a multiple of
physical block size") Cc: Randy Dunlap <rdunlap@infradead.org> Cc:
<stable@vger.kernel.org> Reported-by: Hussam Al-Tayeb <ht990332@gmx.com>
Tested-by: Hussam Al-Tayeb <ht990332@gmx.com> Reviewed-by: Bart Van
Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/sd.c (diff)
Commit e188df7644069f0994591406f1fa36f70202be57 by gregkh
scsi: zfcp: fix rport unblock if deleted SCSI devices on Scsi_Host
commit fe67888fc007a76b81e37da23ce5bd8fb95890b0 upstream.
An already deleted SCSI device can exist on the Scsi_Host and remain
there because something still holds a reference.  A new SCSI device with
the same H:C:T:L and FCP device, target port WWPN, and FCP LUN can be
created.  When we try to unblock an rport, we still find the deleted
SCSI device and return early because the zfcp_scsi_dev of that SCSI
device is not ZFCP_STATUS_COMMON_UNBLOCKED. Hence we miss to unblock the
rport, even if the new proper SCSI device would be in good state.
Therefore, skip deleted SCSI devices when iterating the sdevs of the
shost.
[cf. __scsi_device_lookup{_by_target}() or scsi_device_get()]
The following abbreviated trace sequence can indicate such problem:
Area           : REC Tag            : ersfs_3 LUN            :
0x4045400300000000 WWPN           : 0x50050763031bd327 LUN status     :
0x40000000     not ZFCP_STATUS_COMMON_UNBLOCKED Ready count    : n
not incremented yet Running count  : 0x00000000 ERP want       : 0x01
ERP need       : 0xc1 ZFCP_ERP_ACTION_NONE
Area           : REC Tag            : ersfs_3 LUN            :
0x4045400300000000 WWPN           : 0x50050763031bd327 LUN status     :
0x41000000 Ready count    : n+1 Running count  : 0x00000000 ERP want   
  : 0x01 ERP need       : 0x01
...
Area           : REC Level          : 4 only with increased
trace level Tag            : ertru_l LUN            : 0x4045400300000000
WWPN           : 0x50050763031bd327 LUN status     : 0x40000000 Request
ID     : 0x0000000000000000 ERP status     : 0x01800000 ERP step       :
0x1000 ERP action     : 0x01 ERP count      : 0x00
NOT followed by a trace record with tag "scpaddy" for WWPN
0x50050763031bd327.
Signed-off-by: Steffen Maier <maier@linux.ibm.com> Fixes: 6f2ce1c6af37
("scsi: zfcp: fix rport unblock race with LUN recovery") Cc:
<stable@vger.kernel.org> #2.6.32+ Reviewed-by: Jens Remus
<jremus@linux.ibm.com> Reviewed-by: Benjamin Block
<bblock@linux.ibm.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/s390/scsi/zfcp_erp.c (diff)
Commit 631d09fd085668db774f17c4fa363f2cb4d3f8dc by gregkh
scsi: zfcp: fix scsi_eh host reset with port_forced ERP for non-NPIV FCP
devices
commit 242ec1455151267fe35a0834aa9038e4c4670884 upstream.
Suppose more than one non-NPIV FCP device is active on the same channel.
Send I/O to storage and have some of the pending I/O run into a SCSI
command timeout, e.g. due to bit errors on the fibre. Now the error
situation stops. However, we saw FCP requests continue to timeout in the
channel. The abort will be successful, but the subsequent TUR fails.
Scsi_eh starts. The LUN reset fails. The target reset fails.  The host
reset only did an FCP device recovery. However, for non-NPIV FCP
devices, this does not close and reopen ports on the SAN-side if other
non-NPIV FCP device(s) share the same open ports.
In order to resolve the continuing FCP request timeouts, we need to
explicitly close and reopen ports on the SAN-side.
This was missing since the beginning of zfcp in v2.6.0 history commit
ea127f975424 ("[PATCH] s390 (7/7): zfcp host adapter.").
Note: The FSF requests for forced port reopen could run into FSF request
timeouts due to other reasons. This would trigger an internal FCP device
recovery. Pending forced port reopen recoveries would get dismissed. So
some ports might not get fully reopened during this host reset handler.
However, subsequent I/O would trigger the above described escalation and
eventually all ports would be forced reopen to resolve any continuing
FCP request timeouts due to earlier bit errors.
Signed-off-by: Steffen Maier <maier@linux.ibm.com> Fixes: 1da177e4c3f4
("Linux-2.6.12-rc2") Cc: <stable@vger.kernel.org> #3.0+ Reviewed-by:
Jens Remus <jremus@linux.ibm.com> Reviewed-by: Benjamin Block
<bblock@linux.ibm.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/s390/scsi/zfcp_erp.c (diff)
The file was modifieddrivers/s390/scsi/zfcp_scsi.c (diff)
The file was modifieddrivers/s390/scsi/zfcp_ext.h (diff)
Commit d5845d77e9e1cbfc0a0478b9b542c65ba8ba78c2 by gregkh
drm/rockchip: vop: reset scale mode when win is disabled
commit e9abc611a941d4051cde1d94b2ab7473fdb50102 upstream.
NV12 framebuffers produced by the VPU shows distorted on RK3288 after
win has been disabled when scaling is active.
This issue can be reproduced using a 1080p modeset by:
- Scale a 1280x720 NV12 framebuffer to 1920x1080 on win0
- Disable win0
- Display a 1920x1080 NV12 framebuffer without scaling on win0
- Output will now show the framebuffer distorted
And by:
- Scale a 1280x720 NV12 framebuffer to 1920x1080
- Change to a 720p modeset (win gets disabled and scaling reset to none)
- Output will now show the framebuffer distorted
Fix this by setting scale mode to none when win is disabled.
Fixes: 4c156c21c794 ("drm/rockchip: vop: support plane scale") Cc:
stable@vger.kernel.org Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Signed-off-by: Heiko Stuebner <heiko@sntech.de> Link:
https://patchwork.freedesktop.org/patch/msgid/AM3PR03MB0966DE3E19BACE07328CD637AC7D0@AM3PR03MB0966.eurprd03.prod.outlook.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/rockchip/rockchip_drm_vop.c (diff)
Commit 70691073d296ff48ef03a7236da48489dcd8a532 by gregkh
tty/serial: atmel: Add is_half_duplex helper
commit f3040983132bf3477acd45d2452a906e67c2fec9 upstream.
Use a helper function to check that a port needs to use half duplex
communication, replacing several occurrences of multi-line bit checking.
Fixes: b389f173aaa1 ("tty/serial: atmel: RS485 half duplex w/DMA: enable
RX after TX is done") Cc: stable <stable@vger.kernel.org> Signed-off-by:
Razvan Stefanescu <razvan.stefanescu@microchip.com> Acked-by: Richard
Genoud <richard.genoud@gmail.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/atmel_serial.c (diff)
Commit 35070431105fd409d7e46588bec105cf11cee579 by gregkh
tty/serial: atmel: RS485 HD w/DMA: enable RX after TX is stopped
commit 69646d7a3689fbe1a65ae90397d22ac3f1b8d40f upstream.
In half-duplex operation, RX should be started after TX completes.
If DMA is used, there is a case when the DMA transfer completes but the
TX FIFO is not emptied, so the RX cannot be restarted just yet.
Use a boolean variable to store this state and rearm TX interrupt mask
to be signaled again that the transfer finished. In interrupt transmit
handler this variable is used to start RX. A warning message is
generated if RX is activated before TX fifo is cleared.
Fixes: b389f173aaa1 ("tty/serial: atmel: RS485 half duplex w/DMA: enable
RX after TX is done") Signed-off-by: Razvan Stefanescu
<razvan.stefanescu@microchip.com> Acked-by: Richard Genoud
<richard.genoud@gmail.com> Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/atmel_serial.c (diff)
Commit ade797815046ab53487b3e927415d3e053634b67 by gregkh
tty: mxs-auart: fix a potential NULL pointer dereference
commit 6734330654dac550f12e932996b868c6d0dcb421 upstream.
In case ioremap fails, the fix returns -ENOMEM to avoid NULL pointer
dereferences. Multiple places use port.membase.
Signed-off-by: Kangjie Lu <kjlu@umn.edu> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/mxs-auart.c (diff)
Commit 36e47853d0e9dad0ef94bc7a611a485e24a4e775 by gregkh
tty: atmel_serial: fix a potential NULL pointer dereference
commit c85be041065c0be8bc48eda4c45e0319caf1d0e5 upstream.
In case dmaengine_prep_dma_cyclic fails, the fix returns a proper error
code to avoid NULL pointer dereference.
Signed-off-by: Kangjie Lu <kjlu@umn.edu> Fixes: 34df42f59a60 ("serial:
at91: add rx dma support") Acked-by: Richard Genoud
<richard.genoud@gmail.com> Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/atmel_serial.c (diff)
Commit 5bff7cb2bc8950c9882a07563ce9d87591597ce3 by gregkh
tty: serial: qcom_geni_serial: Initialize baud in
qcom_geni_console_setup
commit c5cbc78acf693f5605d4a85b1327fa7933daf092 upstream.
When building with -Wsometimes-uninitialized, Clang warns:
drivers/tty/serial/qcom_geni_serial.c:1079:6: warning: variable 'baud'
is used uninitialized whenever 'if' condition is false
[-Wsometimes-uninitialized]
It's not wrong; when options is NULL, baud has no default value. Use
9600 as that is a sane default.
Link: https://github.com/ClangBuiltLinux/linux/issues/395 Suggested-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Nathan
Chancellor <natechancellor@gmail.com> Reviewed-by: Nick Desaulniers
<ndesaulniers@google.com> Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/qcom_geni_serial.c (diff)
Commit da418a0b0963b7899a60a8fe5754da2f08b50aac by gregkh
staging: comedi: ni_mio_common: Fix divide-by-zero for DIO cmdtest
commit bafd9c64056cd034a1174dcadb65cd3b294ff8f6 upstream.
`ni_cdio_cmdtest()` validates Comedi asynchronous commands for the DIO
subdevice (subdevice 2) of supported National Instruments M-series
cards.  It is called when handling the `COMEDI_CMD` and `COMEDI_CMDTEST`
ioctls for this subdevice.  There are two causes for a possible
divide-by-zero error when validating that the `stop_arg` member of the
passed-in command is not too large.
The first cause for the divide-by-zero is that calls to
`comedi_bytes_per_scan()` are only valid once the command has been
copied to `s->async->cmd`, but that copy is only done for the
`COMEDI_CMD` ioctl.  For the `COMEDI_CMDTEST` ioctl, it will use
whatever was left there by the previous `COMEDI_CMD` ioctl, if any.
(This is very likely, as it is usual for the application to use
`COMEDI_CMDTEST` before `COMEDI_CMD`.) If there has been no previous,
valid `COMEDI_CMD` for this subdevice, then `comedi_bytes_per_scan()`
will return 0, so the subsequent division in `ni_cdio_cmdtest()` of
`s->async->prealloc_bufsz / comedi_bytes_per_scan(s)` will be a
divide-by-zero error.  To fix this error, call a new function
`comedi_bytes_per_scan_cmd(s, cmd)`, based on the existing
`comedi_bytes_per_scan(s)` but using a specified `struct comedi_cmd` for
its calculations.  (Also refactor `comedi_bytes_per_scan()` to call the
new function.)
Once the first cause for the divide-by-zero has been fixed, the second
cause is that `comedi_bytes_per_scan_cmd()` can legitimately return 0 if
the `scan_end_arg` member of the `struct comedi_cmd` being tested is 0.
Fix it by only performing the division (and validating that `stop_arg`
is no more than the maximum value) if `comedi_bytes_per_scan_cmd()`
returns a non-zero value.
The problem was reported on the COMEDI mailing list here:
https://groups.google.com/forum/#!topic/comedi_list/4t9WlHzMhKM
Reported-by: Ivan Vasilyev <grabesstimme@gmail.com> Tested-by: Ivan
Vasilyev <grabesstimme@gmail.com> Fixes: f164cbf98fa8 ("staging: comedi:
ni_mio_common: add finite regeneration to dio output") Cc:
<stable@vger.kernel.org> # 4.6+ Cc: Spencer E. Olson <olsonse@umich.edu>
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/comedi/drivers.c (diff)
The file was modifieddrivers/staging/comedi/drivers/ni_mio_common.c (diff)
The file was modifieddrivers/staging/comedi/comedidev.h (diff)
Commit de6283bc5cafe7ba95e7fdfb1cc68547b152fdf8 by gregkh
staging: olpc_dcon_xo_1: add missing 'const' qualifier
commit ae0a6d2017f733781dcc938a471ccc2d05f9bee6 upstream.
gcc noticed a mismatch between the type qualifiers after a recent
cleanup:
drivers/staging/olpc_dcon/olpc_dcon_xo_1.c: In function
'dcon_init_xo_1': drivers/staging/olpc_dcon/olpc_dcon_xo_1.c:48:26:
error: initialization discards 'const' qualifier from pointer target
type [-Werror=discarded-qualifiers]
Add the 'const' keyword that should have been there all along.
Fixes: 2159fb372929 ("staging: olpc_dcon: olpc_dcon_xo_1.c: Switch to
the gpio descriptor interface") Signed-off-by: Arnd Bergmann
<arnd@arndb.de> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/olpc_dcon/olpc_dcon_xo_1.c (diff)
Commit 7d9cd1961a505bf718367f547afed12ef32ff5cc by gregkh
staging: speakup_soft: Fix alternate speech with other synths
commit 45ac7b31bc6c4af885cc5b5d6c534c15bcbe7643 upstream.
When switching from speakup_soft to another synth, speakup_soft would
keep calling synth_buffer_getc() from softsynthx_read.
Let's thus make synth.c export the knowledge of the current synth, so
that speakup_soft can determine whether it should be running.
speakup_soft also needs to set itself alive, otherwise the switch would
let it remain silent.
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/speakup/speakup_soft.c (diff)
The file was modifieddrivers/staging/speakup/synth.c (diff)
The file was modifieddrivers/staging/speakup/spk_priv.h (diff)
Commit 37fc532d4d58871e6f6b55eda7e1b70f8f62ee88 by gregkh
staging: vt6655: Remove vif check from vnt_interrupt
commit cc26358f89c3e493b54766b1ca56cfc6b14db78a upstream.
A check for vif is made in vnt_interrupt_work.
There is a small chance of leaving interrupt disabled while vif is NULL
and the work hasn't been scheduled.
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> CC:
stable@vger.kernel.org # v4.2+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/vt6655/device_main.c (diff)
Commit be3d49395af04f7909ec575e9f82e3a7d4a40093 by gregkh
staging: vt6655: Fix interrupt race condition on device start up.
commit 3b9c2f2e0e99bb67c96abcb659b3465efe3bee1f upstream.
It appears on some slower systems that the driver can find its way out
of the workqueue while the interrupt is disabled by continuous polling
by it.
Move MACvIntEnable to vnt_interrupt_work so that it is always enabled on
all routes out of vnt_interrupt_process.
Move MACvIntDisable so that the device doesn't keep polling the system
while the workqueue is being processed.
Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> CC:
stable@vger.kernel.org # v4.2+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/vt6655/device_main.c (diff)
Commit a0fdd9036176202418a84641165adc0fbcc894b2 by gregkh
staging: erofs: fix to handle error path of erofs_vmap()
commit 8bce6dcede65139a087ff240127e3f3c01363eed upstream.
erofs_vmap() wrapped vmap() and vm_map_ram() to return virtual
continuous memory, but both of them can failed due to a lot of reason,
previously, erofs_vmap()'s callers didn't handle them, which can
potentially cause NULL pointer access, fix it.
Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression
support") Fixes: 0d40d6e399c1 ("staging: erofs: add a generic z_erofs
VLE decompressor") Cc: <stable@vger.kernel.org> # 4.19+ Signed-off-by:
Gao Xiang <gaoxiang25@huawei.com> Signed-off-by: Chao Yu
<yuchao0@huawei.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/erofs/unzip_vle.c (diff)
The file was modifieddrivers/staging/erofs/unzip_vle_lz4.c (diff)
Commit 22a76cf6a5eb13428034ed6f05da44c7b0e0870c by gregkh
staging: erofs: fix error handling when failed to read compresssed data
commit b6391ac73400eff38377a4a7364bd3df5efb5178 upstream.
Complete read error handling paths for all three kinds of compressed
pages:
1) For cache-managed pages, PG_uptodate will be checked since
   read_endio will unlock and SetPageUptodate for these pages;
2) For inplaced pages, read_endio cannot SetPageUptodate directly
   since it should be used to mark the final decompressed data,
   PG_error will be set with page locked for IO error instead;
3) For staging pages, PG_error is used, which is similar to
   what we do for inplaced pages.
Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression
support") Cc: <stable@vger.kernel.org> # 4.19+ Reviewed-by: Chao Yu
<yuchao0@huawei.com> Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/erofs/unzip_vle.c (diff)
Commit 198b7b7fb6b627044286513349b03391d0adf18e by gregkh
staging: erofs: keep corrupted fs from crashing kernel in
erofs_readdir()
commit 33bac912840fe64dbc15556302537dc6a17cac63 upstream.
After commit 419d6efc50e9, kernel cannot be crashed in the namei path.
However, corrupted nameoff can do harm in the process of readdir for
scenerios without dm-verity as well. Fix it now.
Fixes: 3aa8ec716e52 ("staging: erofs: add directory operations") Cc:
<stable@vger.kernel.org> # 4.19+ Signed-off-by: Gao Xiang
<gaoxiang25@huawei.com> Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/erofs/dir.c (diff)
Commit 763eafe0dbf56e5ec2bbdf21c6106d37e6af9724 by gregkh
serial: max310x: Fix to avoid potential NULL pointer dereference
commit 3a10e3dd52e80b9a97a3346020024d17b2c272d6 upstream.
of_match_device can return a NULL pointer when matching device is not
found. This patch avoids a scenario causing NULL pointer derefernce.
Signed-off-by: Aditya Pakki <pakki001@umn.edu> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/max310x.c (diff)
Commit e39ecf48678ee4a7445c68c17b0228b6d047a5c0 by gregkh
serial: mvebu-uart: Fix to avoid a potential NULL pointer dereference
commit 32f47179833b63de72427131169809065db6745e upstream.
of_match_device on failure to find a matching device can return a NULL
pointer. The patch checks for such a scenrio and passes the error
upstream.
Signed-off-by: Aditya Pakki <pakki001@umn.edu> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/mvebu-uart.c (diff)
Commit 4fc867dd92cbdc3f40e719bad3680892cce37be0 by gregkh
serial: sh-sci: Fix setting SCSCR_TIE while transferring data
commit 93bcefd4c6bad4c69dbc4edcd3fbf774b24d930d upstream.
We disable transmission interrupt (clear SCSCR_TIE) after all data has
been transmitted
(if uart_circ_empty(xmit)). While transmitting, if the data is still in
the tty buffer, re-enable the SCSCR_TIE bit, which was done at
sci_start_tx(). This is unnecessary processing, wasting CPU operation if
the data transmission length is large. And further, transmit end, FIFO
empty bits disabling have also been performed in the step above.
Signed-off-by: Hoan Nguyen An <na-hoan@jinso.co.jp> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/sh-sci.c (diff)
Commit 7790bb1039fbd402ab40cf0e92e56de3d812cb72 by gregkh
USB: serial: cp210x: add new device id
commit a595ecdd5f60b2d93863cebb07eec7f935839b54 upstream.
Lorenz Messtechnik has a device that is controlled by the cp210x driver,
so add the device id to the driver.  The device id was provided by
Silicon-Labs for the devices from this vendor.
Reported-by: Uli <t9cpu@web.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: stable <stable@vger.kernel.org>
Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/cp210x.c (diff)
Commit 639f52d2901236cd74e32576a0513d3e2581b514 by gregkh
USB: serial: ftdi_sio: add additional NovaTech products
commit 422c2537ba9d42320f8ab6573940269f87095320 upstream.
Add PIDs for the NovaTech OrionLX+ and Orion I/O so they can be
automatically detected.
Signed-off-by: George McCollister <george.mccollister@gmail.com> Cc:
stable <stable@vger.kernel.org> Signed-off-by: Johan Hovold
<johan@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/ftdi_sio_ids.h (diff)
The file was modifieddrivers/usb/serial/ftdi_sio.c (diff)
Commit 4503b17ed4963c8aa727e2b2601f3cc72b911538 by gregkh
USB: serial: mos7720: fix mos_parport refcount imbalance on error path
commit 2908b076f5198d231de62713cb2b633a3a4b95ac upstream.
The write_parport_reg_nonblock() helper takes a reference to the struct
mos_parport, but failed to release it in a couple of error paths after
allocation failures, leading to a memory leak.
Johan said that move the kref_get() and mos_parport assignment to the
end of urbtrack initialisation is a better way, so move it. and
mos_parport do not used until urbtrack initialisation.
Signed-off-by: Lin Yi <teroincn@163.com> Fixes: b69578df7e98 ("USB:
usbserial: mos7720: add support for parallel port on moschip 7715") Cc:
stable <stable@vger.kernel.org>     # 2.6.35 Signed-off-by: Johan Hovold
<johan@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/mos7720.c (diff)
Commit b7a0e2163e0dc57b200d366d70f8b8b14e938ca3 by gregkh
USB: serial: option: set driver_info for SIM5218 and compatibles
commit f8df5c2c3e2df5ffaf9fb5503da93d477a8c7db4 upstream.
The SIMCom SIM5218 and compatible devices have 5 USB interfaces, only 4
of which are serial ports.  The fifth is a network interface supported
by the qmi-wwan driver.  Furthermore, the serial ports do not support
modem control signals.  Add driver_info flags to reflect this.
Signed-off-by: Mans Rullgard <mans@mansr.com> Fixes: ec0cd94d881c ("usb:
option: add SIMCom SIM5218") Cc: stable <stable@vger.kernel.org> #
3.2 Signed-off-by: Johan Hovold <johan@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/option.c (diff)
Commit 623533deabb1808473ab8b7560e148287031f257 by gregkh
USB: serial: option: add support for Quectel EM12
commit d1252f0237238b912c3e7a51bf237acf34c97983 upstream.
The Quectel EM12 is a Cat. 12 LTE modem. It behaves in the exactly the
same way as the EP06 (including the dynamic configuration behavior), so
the same checks on reserved interfaces, etc. are needed.
Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/option.c (diff)
Commit 72c1487ea0a446443556aa0fe6716df760aeb8e6 by gregkh
USB: serial: option: add Olicard 600
commit 84f3b43f7378b98b7e3096d5499de75183d4347c upstream.
This is a Qualcomm based device with a QMI function on interface 4. It
is mode switched from 2020:2030 using a standard eject message.
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  6 Spd=480  MxCh= 0 D:
Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1 P:  Vendor=2020
ProdID=2031 Rev= 2.32 S:  Manufacturer=Mobile Connect S:  Product=Mobile
Connect S:  SerialNumber=0123456789ABCDEF C:* #Ifs= 6 Cfg#= 1 Atr=80
MxPwr=500mA I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff
Driver=(none) E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E:  Ad=01(O)
Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.)
Sub=00 Prot=00 Driver=(none) E:  Ad=83(I) Atr=03(Int.) MxPS=  10
Ivl=32ms E:  Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E:  Ad=02(O)
Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.)
Sub=00 Prot=00 Driver=(none) E:  Ad=85(I) Atr=03(Int.) MxPS=  10
Ivl=32ms E:  Ad=84(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E:  Ad=03(O)
Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.)
Sub=00 Prot=00 Driver=(none) E:  Ad=87(I) Atr=03(Int.) MxPS=  10
Ivl=32ms E:  Ad=86(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E:  Ad=04(O)
Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.)
Sub=ff Prot=ff Driver=(none) E:  Ad=89(I) Atr=03(Int.) MxPS=   8
Ivl=32ms E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms E:  Ad=05(O)
Atr=02(Bulk) MxPS= 512 Ivl=0ms I:* If#= 5 Alt= 0 #EPs= 2 Cls=08(stor.)
Sub=06 Prot=50 Driver=(none) E:  Ad=8a(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
Cc: stable@vger.kernel.org Signed-off-by: Bjørn Mork <bjorn@mork.no>
[ johan: use tabs to align comments in adjacent lines ] Signed-off-by:
Johan Hovold <johan@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/option.c (diff)
Commit c6ed8bf0ad03458ae156c9ea6d3a94be67beebd5 by gregkh
ACPI / CPPC: Fix guaranteed performance handling
commit edef1ef134180149694b86386277076f566d165c upstream.
As per the ACPI specification, "Guaranteed Performance Register" is a
"Buffer" field and it cannot be "Integer", so treat the "Integer" type
for "Guaranteed Performance Register" field as invalid and ignore its
value in that case.
Also save one cpc_read() call when "Guaranteed Performance Register" is
not present, which means a register defined as:
"Register(SystemMemory, 0, 0, 0, 0)".
Fixes: 29523f095397 ("ACPI / CPPC: Add support for guaranteed
performance") Suggested-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Srinivas Pandruvada
<srinivas.pandruvada@linux.intel.com> Cc: 4.20+ <stable@vger.kernel.org>
# 4.20+ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/cppc_acpi.c (diff)
Commit e44461a50380741d6c5f7df7f524a3b30a98afab by gregkh
Disable kgdboc failed by echo space to
/sys/module/kgdboc/parameters/kgdboc
commit 3ec8002951ea173e24b466df1ea98c56b7920e63 upstream.
Echo "" to /sys/module/kgdboc/parameters/kgdboc will fail with "No such
device” error.
This is caused by function "configure_kgdboc" who init err to ENODEV
when the config is empty (legal input) the code go out with ENODEV
returned.
Fixes: 2dd453168643 ("kgdboc: Fix restrict error") Signed-off-by: Wentao
Wang <witallwang@gmail.com> Cc: stable <stable@vger.kernel.org>
Acked-by: Daniel Thompson <daniel.thompson@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/kgdboc.c (diff)
Commit 79d8bdf334d6079133133c7f45135980e38c0196 by gregkh
fs/proc/proc_sysctl.c: fix NULL pointer dereference in put_links
commit 23da9588037ecdd4901db76a5b79a42b529c4ec3 upstream.
Syzkaller reports:
kasan: GPF could be caused by NULL-ptr deref or user memory access
general protection fault: 0000 [#1] SMP KASAN PTI CPU: 1 PID: 5373 Comm:
syz-executor.0 Not tainted 5.0.0-rc8+ #3 Hardware name: QEMU Standard PC
(i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014 RIP:
0010:put_links+0x101/0x440 fs/proc/proc_sysctl.c:1599 Code: 00 0f 85 3a
03 00 00 48 8b 43 38 48 89 44 24 20 48 83 c0 38 48 89 c2 48 89 44 24 28
48 b8 00 00 00 00 00 fc ff df 48 c1 ea 03 <80> 3c 02 00 0f 85 fe 02 00
00 48 8b 74 24 20 48 c7 c7 60 2a 9d 91 RSP: 0018:ffff8881d828f238
EFLAGS: 00010202 RAX: dffffc0000000000 RBX: ffff8881e01b1140 RCX:
ffffffff8ee98267 RDX: 0000000000000007 RSI: ffffc90001479000 RDI:
ffff8881e01b1178 RBP: dffffc0000000000 R08: ffffed103ee27259 R09:
ffffed103ee27259 R10: 0000000000000001 R11: ffffed103ee27258 R12:
fffffffffffffff4 R13: 0000000000000006 R14: ffff8881f59838c0 R15:
dffffc0000000000 FS:  00007f072254f700(0000) GS:ffff8881f7100000(0000)
knlGS:0000000000000000 CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fff8b286668 CR3: 00000001f0542002 CR4: 00000000007606e0 DR0:
0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3:
0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 PKRU:
55555554 Call Trace:
drop_sysctl_table+0x152/0x9f0 fs/proc/proc_sysctl.c:1629
get_subdir fs/proc/proc_sysctl.c:1022 [inline]
__register_sysctl_table+0xd65/0x1090 fs/proc/proc_sysctl.c:1335
br_netfilter_init+0xbc/0x1000 [br_netfilter]
do_one_initcall+0xfa/0x5ca init/main.c:887
do_init_module+0x204/0x5f6 kernel/module.c:3460
load_module+0x66b2/0x8570 kernel/module.c:3808
__do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x462e99 Code: f7 d8
64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 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 c7 c1 bc ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f072254ec58
EFLAGS: 00000246 ORIG_RAX: 0000000000000139 RAX: ffffffffffffffda RBX:
000000000073bf00 RCX: 0000000000462e99 RDX: 0000000000000000 RSI:
0000000020000280 RDI: 0000000000000003 RBP: 00007f072254ec70 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007f072254f6bc R13: 00000000004bcefa R14:
00000000006f6fb0 R15: 0000000000000004 Modules linked in:
br_netfilter(+) dvb_usb_dibusb_mc_common dib3000mc dibx000_common
dvb_usb_dibusb_common dvb_usb_dw2102 dvb_usb classmate_laptop
palmas_regulator cn videobuf2_v4l2 v4l2_common snd_soc_bd28623 mptbase
snd_usb_usx2y snd_usbmidi_lib snd_rawmidi wmi libnvdimm lockd sunrpc
grace rc_kworld_pc150u rc_core rtc_da9063 sha1_ssse3 i2c_cros_ec_tunnel
adxl34x_spi adxl34x nfnetlink lib80211 i5500_temp dvb_as102 dvb_core
videobuf2_common videodev media videobuf2_vmalloc videobuf2_memops
udc_core lnbp22 leds_lp3952 hid_roccat_ryos s1d13xxxfb mtd vport_geneve
openvswitch nf_conncount nf_nat_ipv6 nsh geneve udp_tunnel
ip6_udp_tunnel snd_soc_mt6351 sis_agp phylink snd_soc_adau1761_spi
snd_soc_adau1761 snd_soc_adau17x1 snd_soc_core snd_pcm_dmaengine
ac97_bus snd_compress snd_soc_adau_utils snd_soc_sigmadsp_regmap
snd_soc_sigmadsp raid_class hid_roccat_konepure hid_roccat_common
hid_roccat c2port_duramar2150 core mdio_bcm_unimac iptable_security
iptable_raw iptable_mangle
iptable_nat nf_nat_ipv4 nf_nat nf_conntrack nf_defrag_ipv6
nf_defrag_ipv4 iptable_filter bpfilter ip6_vti ip_vti ip_gre ipip sit
tunnel4 ip_tunnel hsr veth netdevsim devlink vxcan batman_adv cfg80211
rfkill chnl_net caif nlmon dummy team bonding vcan bridge stp llc
ip6_gre gre ip6_tunnel tunnel6 tun crct10dif_pclmul crc32_pclmul
crc32c_intel ghash_clmulni_intel joydev mousedev ide_pci_generic piix
aesni_intel aes_x86_64 ide_core crypto_simd atkbd cryptd glue_helper
serio_raw ata_generic pata_acpi i2c_piix4 floppy sch_fq_codel ip_tables
x_tables ipv6 [last unloaded: lm73] Dumping ftrace buffer:
  (ftrace buffer empty)
---[ end trace 770020de38961fd0 ]---
A new dir entry can be created in get_subdir and its 'header->parent' is
set to NULL.  Only after insert_header success, it will be set to 'dir',
otherwise 'header->parent' is set to NULL and drop_sysctl_table is
called. However in err handling path of get_subdir, drop_sysctl_table
also be called on 'new->header' regardless its value of parent pointer.
Then put_links is called, which triggers NULL-ptr deref when access
member of header->parent.
In fact we have multiple error paths which call drop_sysctl_table()
there, upon failure on insert_links() we also call
drop_sysctl_table().And even in the successful case on
__register_sysctl_table() we still always call drop_sysctl_table().This
patch fix it.
Link:
http://lkml.kernel.org/r/20190314085527.13244-1-yuehaibing@huawei.com
Fixes: 0e47c99d7fe25 ("sysctl: Replace root_list with links between
sysctl_table_sets") Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Reported-by: Hulk Robot <hulkci@huawei.com> Acked-by: Luis Chamberlain
<mcgrof@kernel.org> Cc: Kees Cook <keescook@chromium.org> Cc: Alexey
Dobriyan <adobriyan@gmail.com> Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: Al Viro
<viro@zeniv.linux.org.uk> Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: <stable@vger.kernel.org>    [3.4+] 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>
The file was modifiedfs/proc/proc_sysctl.c (diff)
Commit 50076360f4a068e019576d60615b452d314e5c11 by gregkh
drivers/block/zram/zram_drv.c: fix idle/writeback string compare
commit 0bc9f5d14a93971c6cd9c0d81b0fc154fc54c65d upstream.
Makoto report a below KASAN error: zram does out-of-bounds read.
Because strscpy copies from source up to count bytes unconditionally.
It could cause out-of-bounds read on next object in slab.
To prevent it, use strlcpy which checks source's length automatically.
   BUG: KASAN: slab-out-of-bounds in strscpy+0x68/0x154
  Read of size 8 at addr ffffffc0c3495a00 by task system_server/1314
  ..
  Call trace:
    strscpy+0x68/0x154
    idle_store+0xc4/0x34c
    dev_attr_store+0x50/0x6c
    sysfs_kf_write+0x98/0xb4
    kernfs_fop_write+0x198/0x260
    __vfs_write+0x10c/0x338
    vfs_write+0x114/0x238
    SyS_write+0xc8/0x168
    __sys_trace_return+0x0/0x4
   Allocated by task 1314:
   __kmalloc+0x280/0x318
   kernfs_fop_write+0xac/0x260
   __vfs_write+0x10c/0x338
   vfs_write+0x114/0x238
   SyS_write+0xc8/0x168
   __sys_trace_return+0x0/0x4
   Freed by task 2855:
   kfree+0x138/0x630
   kernfs_put_open_node+0x10c/0x124
   kernfs_fop_release+0xd8/0x114
   __fput+0x130/0x2a4
   ____fput+0x1c/0x28
   task_work_run+0x16c/0x1c8
   do_notify_resume+0x2bc/0x107c
   work_pending+0x8/0x10
   The buggy address belongs to the object at ffffffc0c3495a00
   which belongs to the cache kmalloc-128 of size 128
  The buggy address is located 0 bytes inside of
   128-byte region [ffffffc0c3495a00, ffffffc0c3495a80)
  The buggy address belongs to the page:
  page:ffffffbf030d2500 count:1 mapcount:0 mapping:          (null)
index:0x0 compound_mapcount: 0
  flags: 0x4000000000010200(slab|head)
  page dumped because: kasan: bad access detected
   Memory state around the buggy address:
   ffffffc0c3495900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
   ffffffc0c3495980: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
  >ffffffc0c3495a00: 04 fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                     ^
   ffffffc0c3495a80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
   ffffffc0c3495b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Link:
http://lkml.kernel.org/r/20190319231911.145968-1-minchan@kernel.org Cc:
<stable@vger.kernel.org> [5.0] Signed-off-by: Minchan Kim
<minchan@kernel.org> Reported-by: Makoto Wu <makotowu@google.com>
Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
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>
The file was modifieddrivers/block/zram/zram_drv.c (diff)
Commit 0dcb45879a5f6bbb412e232adf2d29a98119c889 by gregkh
blk-mq: fix sbitmap ws_active for shared tags
commit e861857545567adec8da3bdff728efdf7db12285 upstream.
We now wrap sbitmap waitqueues in an active counter, so we can avoid
iterating wakeups unless we have waiters there. This works as long as
everyone that's manipulating the waitqueues use the proper helpers. For
the tag wait case for shared tags, however, we add ourselves to the
waitqueue without incrementing/decrementing the ->ws_active count. This
means that wakeups can take a long time to happen.
Fix this by manually doing the inc/dec as needed for the wait queue
handling.
Reported-by: Michael Leun <kbug@newton.leun.net> Tested-by: Michael Leun
<kbug@newton.leun.net> Cc: stable@vger.kernel.org Reviewed-by: Omar
Sandoval <osandov@fb.com> Fixes: 5d2ee7122c73 ("sbitmap: optimize wakeup
check") Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedblock/blk-mq.c (diff)
Commit 7466a2abe75765daf7d00ada675d2f082f5ece2c by gregkh
cpufreq: intel_pstate: Also use CPPC nominal_perf for base_frequency
commit 92a3e426ec06e72b1c363179c79d30712447ff76 upstream.
The ACPI specification states that if the "Guaranteed Performance
Register" is not implemented, the OSPM assumes guaranteed performance to
always be equal to nominal performance.
So for invalid or unimplemented guaranteed performance register, use
nominal performance as guaranteed performance.
This change will fall back to nominal_perf when guranteed_perf is
invalid.  If nominal_perf is also invalid or not present, fall back to
the existing implementation, which is to read from HWP Capabilities MSR.
Fixes: 86d333a8cc7f ("cpufreq: intel_pstate: Add base_frequency
attribute") Suggested-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Cc: 4.20+ <stable@vger.kernel.org> # 4.20+ Signed-off-by: Rafael J.
Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/cpufreq/intel_pstate.c (diff)
Commit 5f0bf5cd357db62bbbd2b7ba046dbf8b95ea47b6 by gregkh
cpufreq: scpi: Fix use after free
commit 31d4c528cea4023cf36f6148c03bb960cedefeef upstream.
Free the priv structure only after we are done using it.
Fixes: 1690d8bb91e370ab ("cpufreq: scpi/scmi: Fix freeing of dynamic
OPPs") Signed-off-by: Vincent Stehlé <vincent.stehle@laposte.net> Cc:
4.20+ <stable@vger.kernel.org> # 4.20+ Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/cpufreq/scpi-cpufreq.c (diff)
Commit 18e8f0f379a58a7d5aa61da50e201861dfe8554d by gregkh
drm/vgem: fix use-after-free when drm_gem_handle_create() fails
commit 21d2b122732318b48c10b7262e15595ce54511d3 upstream.
If drm_gem_handle_create() fails in vgem_gem_create(), then the
drm_vgem_gem_object is freed twice: once when the reference is dropped
by drm_gem_object_put_unlocked(), and again by __vgem_gem_destroy().
This was hit by syzkaller using fault injection.
Fix it by skipping the second free.
Reported-by: syzbot+e73f2fb5ed5a5df36d33@syzkaller.appspotmail.com
Fixes: af33a9190d02 ("drm/vgem: Enable dmabuf import interfaces")
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Laura Abbott
<labbott@redhat.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc:
stable@vger.kernel.org Signed-off-by: Eric Biggers <ebiggers@google.com>
Acked-by: Laura Abbott <labbott@redhat.com> Signed-off-by: Rodrigo
Siqueira <rodrigosiqueiramelo@gmail.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190226214451.195123-1-ebiggers@kernel.org
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/vgem/vgem_drv.c (diff)
Commit 0baddc2099dd1a7f6f5a8696da46f3839faf04a4 by gregkh
drm/vkms: fix use-after-free when drm_gem_handle_create() fails
commit 36b6c9ed45afe89045973e8dee1b004dd5372d40 upstream.
If drm_gem_handle_create() fails in vkms_gem_create(), then the
vkms_gem_object is freed twice: once when the reference is dropped by
drm_gem_object_put_unlocked(), and again by the extra calls to
drm_gem_object_release() and kfree().
Fix it by skipping the second release and free.
This bug was originally found in the vgem driver by syzkaller using
fault injection, but I noticed it's also present in the vkms driver.
Fixes: 559e50fd34d1 ("drm/vkms: Add dumb operations") Cc: Rodrigo
Siqueira <rodrigosiqueiramelo@gmail.com> Cc: Haneen Mohammed
<hamohammed.sa@gmail.com> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc:
Chris Wilson <chris@chris-wilson.co.uk> Cc: stable@vger.kernel.org
Signed-off-by: Eric Biggers <ebiggers@google.com> Reviewed-by: Chris
Wilson <chris@chris-wilson.co.uk> Reviewed-by: Rodrigo Siqueira
<rodrigosiqueiramelo@gmail.com> Signed-off-by: Rodrigo Siqueira
<rodrigosiqueiramelo@gmail.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190226220858.214438-1-ebiggers@kernel.org
Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/vkms/vkms_gem.c (diff)
Commit 9241bd9b6401d901f29c2625a00cf6df18d45fc9 by gregkh
drm/i915: Mark AML 0x87CA as ULX
commit 4b9a3932e7ba929baa231231e61874c7a56f8959 upstream.
If I'm reading the spec right AML 0x87CA is a Y SKU, so it should be
marked as ULX in our old style terminology.
Cc: stable@vger.kernel.org Cc: José Roberto de Souza
<jose.souza@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc:
Tvrtko Ursulin <tvrtko.ursulin@intel.com> Fixes: c0c46ca461f1
("drm/i915/aml: Add new Amber Lake PCI ID") Signed-off-by: Ville Syrjälä
<ville.syrjala@linux.intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190322204944.23613-1-ville.syrjala@linux.intel.com
Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
(cherry picked from commit 57b1c4460dc46a00f6ec439f3f11d670736b0209)
Signed-off-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/i915/i915_drv.h (diff)
Commit 25c939a9a594a1afd4de1dfc85a22cd9de0b73be by gregkh
drm/i915/gvt: Fix MI_FLUSH_DW parsing with correct index check
commit 13bcb80b7ee79431fce361e060611134cb19e209 upstream.
When MI_FLUSH_DW post write hw status page in index mode, the index
value is in dword step and turned into address offset in cmd dword1. As
status page size is 4K, so can't exceed that.
This fixed upper bound check in cmd parser code which incorrectly
stopped VM for reason of invalid MI_FLUSH_DW write index.
v2:
- Fix upper bound as 4K page size because index value is address offset.
Fixes: be1da7070aea ("drm/i915/gvt: vGPU command scanner") Cc:
stable@vger.kernel.org # v4.10+ Cc: "Zhao, Yan Y" <yan.y.zhao@intel.com>
Reviewed-by: Yan Zhao <yan.y.zhao@intel.com> Signed-off-by: Zhenyu Wang
<zhenyuw@linux.intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/i915/gvt/cmd_parser.c (diff)
Commit 673bc99a67087ef7189724ae59cc73da16ccb65c by gregkh
drm/i915/icl: Fix the TRANS_DDI_FUNC_CTL2 bitfield macro
commit 69903dfae0310afe8a15f5cd4e376ebb7c6da1d2 upstream.
This patch fixes the PORT_SYNC_MODE_MASTER_SELECT macro to correctly do
the left shifting to set the port sync master select correctly. I have
tested this fix on ICL.
Fixes: 49edbd49786e ("drm/i915/icl: Define TRANS_DDI_FUNC_CTL DSI
registers") Cc: Madhav Chauhan <madhav.chauhan@intel.com> Cc: Jani
Nikula <jani.nikula@intel.com> Cc: <stable@vger.kernel.org> # v5.0+
Signed-off-by: Manasi Navare <manasi.d.navare@intel.com> Reviewed-by:
Jani Nikula <jani.nikula@intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190319221847.21311-1-manasi.d.navare@intel.com
(cherry picked from commit 7264aebb81d15aa6bbed650c816bba90f026bc35)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/i915/i915_reg.h (diff)
Commit aa2250dec6ee534dc977d24557c27de80e5604ad by gregkh
gpio: exar: add a check for the return value of ida_simple_get fails
commit 7ecced0934e574b528a1ba6c237731e682216a74 upstream.
ida_simple_get may fail and return a negative error number. The fix
checks its return value; if it fails, go to err_destroy.
Cc: <stable@vger.kernel.org> Signed-off-by: Kangjie Lu <kjlu@umn.edu>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpio/gpio-exar.c (diff)
Commit 494d26aa39158a67e6cb4af4a7aa11f1d172dac9 by gregkh
gpio: adnp: Fix testing wrong value in adnp_gpio_direction_input
commit c5bc6e526d3f217ed2cc3681d256dc4a2af4cc2b upstream.
Current code test wrong value so it does not verify if the written data
is correctly read back. Fix it. Also make it return -EPERM if read value
does not match written bit, just like it done for
adnp_gpio_direction_output().
Fixes: 5e969a401a01 ("gpio: Add Avionic Design N-bit GPIO expander
support") Cc: <stable@vger.kernel.org> Signed-off-by: Axel Lin
<axel.lin@ingics.com> Reviewed-by: Thierry Reding
<thierry.reding@gmail.com> Signed-off-by: Bartosz Golaszewski
<bgolaszewski@baylibre.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpio/gpio-adnp.c (diff)
Commit dbc206874d67cd713103bac0124974e34311aad1 by gregkh
phy: sun4i-usb: Support set_mode to USB_HOST for non-OTG PHYs
commit 1396929e8a903db80425343cacca766a18ad6409 upstream.
While only the first PHY supports mode switching, the remaining PHYs
work in USB host mode. They should support set_mode with mode=USB_HOST
instead of failing. This is especially needed now that the USB core does
set_mode for all USB ports, which was added in commit b97a31348379
("usb: core: comply to PHY framework").
Make set_mode with mode=USB_HOST a no-op instead of failing for the
non-OTG USB PHYs.
Fixes: 6ba43c291961 ("phy-sun4i-usb: Add support for phy_set_mode")
Signed-off-by: Chen-Yu Tsai <wens@csie.org> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/phy/allwinner/phy-sun4i-usb.c (diff)
Commit 8f00b32d3991124e31212f32791ed9024fb26b56 by gregkh
usb: mtu3: fix EXTCON dependency
commit 3d54d10c6afed34fd45b852bf76f55e8da31d8ef upstream.
When EXTCON is a loadable module, mtu3 fails to link as built-in:
drivers/usb/mtu3/mtu3_plat.o: In function `mtu3_probe':
mtu3_plat.c:(.text+0x690): undefined reference to
`extcon_get_edev_by_phandle'
Add a Kconfig dependency to force mtu3 also to be a loadable module if
extconn is, but still allow it to be built without extcon.
Fixes: d0ed062a8b75 ("usb: mtu3: dual-role mode support") Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/mtu3/Kconfig (diff)
Commit 80ff12631ba5589cbfbfa8ee8b965cc1787cb0e0 by gregkh
USB: gadget: f_hid: fix deadlock in f_hidg_write()
commit 072684e8c58d17e853f8e8b9f6d9ce2e58d2b036 upstream.
In f_hidg_write() the write_spinlock is acquired before calling
usb_ep_queue() which causes a deadlock when dummy_hcd is being used.
This is because dummy_queue() callbacks into f_hidg_req_complete() which
tries to acquire the same spinlock. This is (part of) the backtrace when
the deadlock occurs:
  0xffffffffc06b1410 in f_hidg_req_complete
0xffffffffc06a590a in usb_gadget_giveback_request
0xffffffffc06cfff2 in dummy_queue
0xffffffffc06a4b96 in usb_ep_queue
0xffffffffc06b1eb6 in f_hidg_write
0xffffffff8127730b in __vfs_write
0xffffffff812774d1 in vfs_write
0xffffffff81277725 in SYSC_write
Fix this by releasing the write_spinlock before calling usb_ep_queue()
Reviewed-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Tested-by: James Bottomley <James.Bottomley@HansenPartnership.com> Cc:
stable@vger.kernel.org # 4.11+ Fixes: 749494b6bdbb ("usb: gadget: f_hid:
fix: Move IN request allocation to set_alt()") Signed-off-by: Radoslav
Gerganov <rgerganov@vmware.com> Signed-off-by: Felipe Balbi
<felipe.balbi@linux.intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/gadget/function/f_hid.c (diff)
Commit 08213ad7465f5b91937370d1e2b32d9c0425fe7f by gregkh
usb: common: Consider only available nodes for dr_mode
commit 238e0268c82789e4c107a37045d529a6dbce51a9 upstream.
There are cases where multiple device tree nodes point to the same phy
node by means of the "phys" property, but we should only consider those
nodes that are marked as available rather than just any node.
Fixes: 98bfb3946695 ("usb: of: add an api to get dr_mode by the phy
node") Cc: stable@vger.kernel.org # v4.4+ Signed-off-by: Fabrizio Castro
<fabrizio.castro@bp.renesas.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/common/common.c (diff)
Commit 40b8282f9009a97c87c453ec9da4274ad4f761a9 by gregkh
mm/memory.c: fix modifying of page protection by insert_pfn()
commit cae85cb8add35f678cf487139d05e083ce2f570a upstream.
Aneesh has reported that PPC triggers the following warning when
excercising DAX code:
  IP set_pte_at+0x3c/0x190
LR insert_pfn+0x208/0x280
Call Trace:
    insert_pfn+0x68/0x280
    dax_iomap_pte_fault.isra.7+0x734/0xa40
    __xfs_filemap_fault+0x280/0x2d0
    do_wp_page+0x48c/0xa40
    __handle_mm_fault+0x8d0/0x1fd0
    handle_mm_fault+0x140/0x250
    __do_page_fault+0x300/0xd60
    handle_page_fault+0x18
Now that is WARN_ON in set_pte_at which is
        VM_WARN_ON(pte_hw_valid(*ptep) && !pte_protnone(*ptep));
The problem is that on some architectures set_pte_at() cannot cope with
a situation where there is already some (different) valid entry present.
Use ptep_set_access_flags() instead to modify the pfn which is built to
deal with modifying existing PTE.
Link: http://lkml.kernel.org/r/20190311084537.16029-1-jack@suse.cz
Fixes: b2770da64254 "mm: add vm_insert_mixed_mkwrite()" Signed-off-by:
Jan Kara <jack@suse.cz> Reported-by: "Aneesh Kumar K.V"
<aneesh.kumar@linux.ibm.com> Reviewed-by: Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> Acked-by: Dan Williams
<dan.j.williams@intel.com> Cc: Chandan Rajendra <chandan@linux.ibm.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>
The file was modifiedmm/memory.c (diff)
Commit 8e70eae1816b96cee4b4ea35c2efed79a3f671fd by gregkh
usb: host: xhci-rcar: Add XHCI_TRUST_TX_LENGTH quirk
commit 40fc165304f0faaae78b761f8ee30b5d216b1850 upstream.
When plugging BUFFALO LUA4-U3-AGT USB3.0 to Gigabit Ethernet LAN
Adapter, warning messages filled up dmesg.
[  101.098287] xhci-hcd ee000000.usb: WARN Successful completion on
short TX for slot 1 ep 4: needs XHCI_TRUST_TX_LENGTH quirk?
[  101.117463] xhci-hcd ee000000.usb: WARN Successful completion on
short TX for slot 1 ep 4: needs XHCI_TRUST_TX_LENGTH quirk?
[  101.136513] xhci-hcd ee000000.usb: WARN Successful completion on
short TX for slot 1 ep 4: needs XHCI_TRUST_TX_LENGTH quirk?
Adding the XHCI_TRUST_TX_LENGTH quirk resolves the issue.
Signed-off-by: Yasushi Asano <yasano@jp.adit-jv.com> Signed-off-by:
Spyridon Papageorgiou <spapageorgiou@de.adit-jv.com> Acked-by: Yoshihiro
Shimoda <yoshihiro.shimoda.uh@renesas.com> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/host/xhci-rcar.c (diff)
Commit c08a998dec55453b0e2f649d97ce5704dceeb4d4 by gregkh
xhci: Fix port resume done detection for SS ports with LPM enabled
commit 6cbcf596934c8e16d6288c7cc62dfb7ad8eadf15 upstream.
A suspended SS port in U3 link state will go to U0 when resumed, but can
almost immediately after that enter U1 or U2 link power save states
before host controller driver reads the port status.
Host controller driver only checks for U0 state, and might miss the
finished resume, leaving flags unclear and skip notifying usb code of
the wake.
Add U1 and U2 to the possible link states when checking for finished
port resume.
Cc: stable <stable@vger.kernel.org> Signed-off-by: Mathias Nyman
<mathias.nyman@linux.intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/host/xhci-ring.c (diff)
Commit 448c39c360ef7493a6d4aecd1f1650a80c754081 by gregkh
usb: xhci: dbc: Don't free all memory with spinlock held
commit 8867ea262196a6945c24a0fb739575af646ec0e9 upstream.
The xhci debug capability (DbC) feature did its memory cleanup with
spinlock held. dma_free_coherent() warns if called with interrupts
disabled
move the memory cleanup outside the spinlock
Cc: stable <stable@vger.kernel.org> Signed-off-by: Mathias Nyman
<mathias.nyman@linux.intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/host/xhci-dbgcap.c (diff)
Commit c7a5ef0d64f42d09843e023a82d5ed1e4a495d6e by gregkh
xhci: Don't let USB3 ports stuck in polling state prevent suspend
commit d92f2c59cc2cbca6bfb2cc54882b58ba76b15fd4 upstream.
Commit 2f31a67f01a8 ("usb: xhci: Prevent bus suspend if a port connect
change or polling state is detected") was intended to prevent ports that
were still link training from being forced to U3 suspend state mid
enumeration. This solved enumeration issues for devices with slow link
training.
Turns out some devices are stuck in the link training/polling state, and
thus that patch will prevent suspend completely for these devices. This
is seen with USB3 card readers in some MacBooks.
Instead of preventing suspend, give some time to complete the link
training. On successful training the port will end up as connected and
enabled. If port instead is stuck in link training the bus suspend will
continue suspending after 360ms (10 * 36ms) timeout
(tPollingLFPSTimeout).
Original patch was sent to stable, this one should go there as well
Fixes: 2f31a67f01a8 ("usb: xhci: Prevent bus suspend if a port connect
change or polling state is detected") Cc: stable@vger.kernel.org
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/host/xhci-hub.c (diff)
The file was modifieddrivers/usb/host/xhci.h (diff)
Commit 402f57808b9ab2e0183c8a7feb7a74f090a12395 by gregkh
usb: cdc-acm: fix race during wakeup blocking TX traffic
commit 93e1c8a638308980309e009cc40b5a57ef87caf1 upstream.
When the kernel is compiled with preemption enabled, the URB completion
handler can run in parallel with the work responsible for waking up the
tty layer. If the URB handler sets the EVENT_TTY_WAKEUP bit during the
call to tty_port_tty_wakeup() to signal that there is room for
additional input, it will be cleared at the end of this call. As a
result, TX traffic on the upper layer will be blocked.
This can be seen with a kernel configured with CONFIG_PREEMPT, and a
fast modem connected with PPP running over a USB CDC-ACM port.
Use test_and_clear_bit() instead, which ensures that each wakeup
requested by the URB completion code will trigger a call to
tty_port_tty_wakeup().
Fixes: 1aba579f3cf5 cdc-acm: handle read pipe errors Signed-off-by:
Romain Izard <romain.izard.pro@gmail.com> Cc: stable
<stable@vger.kernel.org> Acked-by: Oliver Neukum <oneukum@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/class/cdc-acm.c (diff)
Commit a3bed8b549ec88b0cb39fb901cbd6dd3addb6566 by gregkh
usb: typec: tcpm: Try PD-2.0 if sink does not respond to 3.0 source-caps
commit 976daf9d1199932df80e7b04546d1a1bd4ed5ece upstream.
PD 2.0 sinks are supposed to accept src-capabilities with a 3.0 header
and simply ignore any src PDOs which the sink does not understand such
as PPS but some 2.0 sinks instead ignore the entire PD_DATA_SOURCE_CAP
message, causing contract negotiation to fail.
This commit fixes such sinks not working by re-trying the contract
negotiation with PD-2.0 source-caps messages if we don't have a contract
after PD_N_HARD_RESET_COUNT hard-reset attempts.
The problem fixed by this commit was noticed with a Type-C to VGA
dongle.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Guenter
Roeck <linux@roeck-us.net> Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/typec/tcpm/tcpm.c (diff)
Commit d26254c4e7cac57dba44b8f3091bbda098a9bc32 by gregkh
usb: typec: Fix unchecked return value
commit e82adc1074a7356f1158233551df9e86b7ebfb82 upstream.
Currently there is no check on platform_get_irq() return value in case
it fails, hence never actually reporting any errors and causing
unexpected behavior when using such value as argument for function
regmap_irq_get_virq().
Fix this by adding a proper check, a message error and return
*irq* in case platform_get_irq() fails.
Addresses-Coverity-ID: 1443899 ("Improper use of negative value") Fixes:
d2061f9cc32d ("usb: typec: add driver for Intel Whiskey Cove PMIC USB
Type-C PHY") Cc: stable@vger.kernel.org Signed-off-by: Gustavo A. R.
Silva <gustavo@embeddedor.com> Reviewed-by: Guenter Roeck
<linux@roeck-us.net> Acked-by: Heikki Krogerus
<heikki.krogerus@linux.intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/typec/tcpm/wcove.c (diff)
Commit eef9dbbad03f3d83ea3bbfb3da249c60d6798a41 by gregkh
mm/hotplug: fix offline undo_isolate_page_range()
commit 9b7ea46a82b31c74a37e6ff1c2a1df7d53e392ab upstream.
Commit f1dd2cd13c4b ("mm, memory_hotplug: do not associate hotadded
memory to zones until online") introduced move_pfn_range_to_zone() which
calls memmap_init_zone() during onlining a memory block.
memmap_init_zone() will reset pagetype flags and makes migrate type to
be MOVABLE.
However, in __offline_pages(), it also call undo_isolate_page_range()
after offline_isolated_pages() to do the same thing.  Due to commit
2ce13640b3f4 ("mm: __first_valid_page skip over offline pages") changed
__first_valid_page() to skip offline pages, undo_isolate_page_range()
here just waste CPU cycles looping around the offlining PFN range while
doing nothing, because __first_valid_page() will return NULL as
offline_isolated_pages() has already marked all memory sections within
the pfn range as offline via offline_mem_sections().
Also, after calling the "useless" undo_isolate_page_range() here, it
reaches the point of no returning by notifying MEM_OFFLINE.  Those pages
will be marked as MIGRATE_MOVABLE again once onlining.  The only thing
left to do is to decrease the number of isolated pageblocks zone counter
which would make some paths of the page allocation slower that the above
commit introduced.
Even if alloc_contig_range() can be used to isolate 16GB-hugetlb pages
on ppc64, an "int" should still be enough to represent the number of
pageblocks there.  Fix an incorrect comment along the way.
[cai@lca.pw: v4]
Link: http://lkml.kernel.org/r/20190314150641.59358-1-cai@lca.pw Link:
http://lkml.kernel.org/r/20190313143133.46200-1-cai@lca.pw Fixes:
2ce13640b3f4 ("mm: __first_valid_page skip over offline pages")
Signed-off-by: Qian Cai <cai@lca.pw> Acked-by: Michal Hocko
<mhocko@suse.com> Reviewed-by: Oscar Salvador <osalvador@suse.de> Cc:
Vlastimil Babka <vbabka@suse.cz> Cc: <stable@vger.kernel.org>
[4.13+] 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>
The file was modifiedinclude/linux/page-isolation.h (diff)
The file was modifiedmm/page_alloc.c (diff)
The file was modifiedmm/sparse.c (diff)
The file was modifiedmm/memory_hotplug.c (diff)
The file was modifiedmm/page_isolation.c (diff)
Commit ed3886c7d9f214a55bf0410bbca3c77001236b5d by gregkh
mm: add support for kmem caches in DMA32 zone
commit 6d6ea1e967a246f12cfe2f5fb743b70b2e608d4a upstream.
Patch series "iommu/io-pgtable-arm-v7s: Use DMA32 zone for page tables",
v6.
This is a followup to the discussion in [1], [2].
IOMMUs using ARMv7 short-descriptor format require page tables (level 1
and 2) to be allocated within the first 4GB of RAM, even on 64-bit
systems.
For L1 tables that are bigger than a page, we can just use
__get_free_pages with GFP_DMA32 (on arm64 systems only, arm would still
use GFP_DMA).
For L2 tables that only take 1KB, it would be a waste to allocate a full
page, so we considered 3 approaches:
1. This series, adding support for GFP_DMA32 slab caches.
2. genalloc, which requires pre-allocating the maximum number of L2 page
   tables (4096, so 4MB of memory).
3. page_frag, which is not very memory-efficient as it is unable to
reuse
   freed fragments until the whole page is freed. [3]
This series is the most memory-efficient approach.
stable@ note:
We confirmed that this is a regression, and IOMMU errors happen on 4.19
and linux-next/master on MT8173 (elm, Acer Chromebook R13). The issue
most likely starts from commit ad67f5a6545f ("arm64: replace ZONE_DMA
with ZONE_DMA32"), i.e. 4.15, and presumably breaks a number of
Mediatek
platforms (and maybe others?).
[1]
https://lists.linuxfoundation.org/pipermail/iommu/2018-November/030876.html
[2]
https://lists.linuxfoundation.org/pipermail/iommu/2018-December/031696.html
[3] https://patchwork.codeaurora.org/patch/671639/
This patch (of 3):
IOMMUs using ARMv7 short-descriptor format require page tables to be
allocated within the first 4GB of RAM, even on 64-bit systems.  On
arm64, this is done by passing GFP_DMA32 flag to memory allocation
functions.
For IOMMU L2 tables that only take 1KB, it would be a waste to allocate
a full page using get_free_pages, so we considered 3 approaches:
1. This patch, adding support for GFP_DMA32 slab caches.
2. genalloc, which requires pre-allocating the maximum number of L2
   page tables (4096, so 4MB of memory).
3. page_frag, which is not very memory-efficient as it is unable
   to reuse freed fragments until the whole page is freed.
This change makes it possible to create a custom cache in DMA32 zone
using kmem_cache_create, then allocate memory using kmem_cache_alloc.
We do not create a DMA32 kmalloc cache array, as there are currently no
users of kmalloc(..., GFP_DMA32).  These calls will continue to trigger
a warning, as we keep GFP_DMA32 in GFP_SLAB_BUG_MASK.
This implies that calls to kmem_cache_*alloc on a SLAB_CACHE_DMA32
kmem_cache must _not_ use GFP_DMA32 (it is anyway redundant and
unnecessary).
Link:
http://lkml.kernel.org/r/20181210011504.122604-2-drinkcat@chromium.org
Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Acked-by:
Vlastimil Babka <vbabka@suse.cz> Acked-by: Will Deacon
<will.deacon@arm.com> Cc: Robin Murphy <robin.murphy@arm.com> Cc: Joerg
Roedel <joro@8bytes.org> 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: Michal Hocko <mhocko@suse.com>
Cc: Mel Gorman <mgorman@techsingularity.net> Cc: Sasha Levin
<Alexander.Levin@microsoft.com> Cc: Huaisheng Ye <yehs1@lenovo.com> Cc:
Mike Rapoport <rppt@linux.vnet.ibm.com> Cc: Yong Wu
<yong.wu@mediatek.com> Cc: Matthias Brugger <matthias.bgg@gmail.com> Cc:
Tomasz Figa <tfiga@google.com> Cc: Yingjoe Chen
<yingjoe.chen@mediatek.com> Cc: Christoph Hellwig <hch@infradead.org>
Cc: Matthew Wilcox <willy@infradead.org> Cc: Hsin-Yi Wang
<hsinyi@chromium.org> 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>
The file was modifiedmm/slab_common.c (diff)
The file was modifiedinclude/linux/slab.h (diff)
The file was modifiedmm/slub.c (diff)
The file was modifiedmm/slab.c (diff)
The file was modifiedmm/slab.h (diff)
Commit 467c01f2deea01553509f687bd29148d73f7bb8d by gregkh
iommu/io-pgtable-arm-v7s: request DMA32 memory, and improve debugging
commit 0a352554da69b02f75ca3389c885c741f1f63235 upstream.
IOMMUs using ARMv7 short-descriptor format require page tables (level 1
and 2) to be allocated within the first 4GB of RAM, even on 64-bit
systems.
For level 1/2 pages, ensure GFP_DMA32 is used if CONFIG_ZONE_DMA32 is
defined (e.g.  on arm64 platforms).
For level 2 pages, allocate a slab cache in SLAB_CACHE_DMA32.  Note that
we do not explicitly pass GFP_DMA[32] to kmem_cache_zalloc, as this is
not strictly necessary, and would cause a warning in mm/sl*b.c, as we
did not update GFP_SLAB_BUG_MASK.
Also, print an error when the physical address does not fit in 32-bit,
to make debugging easier in the future.
Link:
http://lkml.kernel.org/r/20181210011504.122604-3-drinkcat@chromium.org
Fixes: ad67f5a6545f ("arm64: replace ZONE_DMA with ZONE_DMA32")
Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Acked-by: Will
Deacon <will.deacon@arm.com> Cc: Christoph Hellwig <hch@infradead.org>
Cc: Christoph Lameter <cl@linux.com> Cc: David Rientjes
<rientjes@google.com> Cc: Hsin-Yi Wang <hsinyi@chromium.org> Cc:
Huaisheng Ye <yehs1@lenovo.com> Cc: Joerg Roedel <joro@8bytes.org> Cc:
Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Matthew Wilcox
<willy@infradead.org> Cc: Matthias Brugger <matthias.bgg@gmail.com> Cc:
Mel Gorman <mgorman@techsingularity.net> Cc: Michal Hocko
<mhocko@suse.com> Cc: Mike Rapoport <rppt@linux.vnet.ibm.com> Cc: Pekka
Enberg <penberg@kernel.org> Cc: Robin Murphy <robin.murphy@arm.com> Cc:
Sasha Levin <Alexander.Levin@microsoft.com> Cc: Tomasz Figa
<tfiga@google.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Yingjoe Chen
<yingjoe.chen@mediatek.com> Cc: Yong Wu <yong.wu@mediatek.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>
The file was modifieddrivers/iommu/io-pgtable-arm-v7s.c (diff)
Commit 8b2f31de5d159d93cd8c1bf7491c2fcc0e9b4777 by gregkh
mm: mempolicy: make mbind() return -EIO when MPOL_MF_STRICT is specified
commit a7f40cfe3b7ada57af9b62fd28430eeb4a7cfcb7 upstream.
When MPOL_MF_STRICT was specified and an existing page was already on a
node that does not follow the policy, mbind() should return -EIO.  But
commit 6f4576e3687b ("mempolicy: apply page table walker on
queue_pages_range()") broke the rule.
And commit c8633798497c ("mm: mempolicy: mbind and migrate_pages support
thp migration") didn't return the correct value for THP mbind() too.
If MPOL_MF_STRICT is set, ignore vma_migratable() to make sure it
reaches queue_pages_to_pte_range() or queue_pages_pmd() to check if an
existing page was already on a node that does not follow the policy.
And, non-migratable vma may be used, return -EIO too if MPOL_MF_MOVE or
MPOL_MF_MOVE_ALL was specified.
Tested with
https://github.com/metan-ucw/ltp/blob/master/testcases/kernel/syscalls/mbind/mbind02.c
[akpm@linux-foundation.org: tweak code comment] Link:
http://lkml.kernel.org/r/1553020556-38583-1-git-send-email-yang.shi@linux.alibaba.com
Fixes: 6f4576e3687b ("mempolicy: apply page table walker on
queue_pages_range()") Signed-off-by: Yang Shi
<yang.shi@linux.alibaba.com> Signed-off-by: Oscar Salvador
<osalvador@suse.de> Reported-by: Cyril Hrubis <chrubis@suse.cz>
Suggested-by: Kirill A. Shutemov <kirill@shutemov.name> Acked-by: Rafael
Aquini <aquini@redhat.com> Reviewed-by: Oscar Salvador
<osalvador@suse.de> Acked-by: David Rientjes <rientjes@google.com> Cc:
Vlastimil Babka <vbabka@suse.cz> 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>
The file was modifiedmm/mempolicy.c (diff)
Commit 2b57282beb606fc14ff67ff569bf0280cf0eb9c4 by gregkh
mm/debug.c: fix __dump_page when mapping->host is not set
commit 5ae2efb1dea9f537453e841714e3ee2757595aec upstream.
While debugging something, I added a dump_page() into do_swap_page(),
and I got the splat from below.  The issue happens when dereferencing
mapping->host in __dump_page():
  ...
else if (mapping) {
pr_warn("%ps ", mapping->a_ops);
if (mapping->host->i_dentry.first) {
struct dentry *dentry;
dentry = container_of(mapping->host->i_dentry.first, struct dentry,
d_u.d_alias);
pr_warn("name:\"%pd\" ", dentry);
}
}
...
Swap address space does not contain an inode information, and so
mapping->host equals NULL.
Although the dump_page() call was added artificially into
do_swap_page(), I am not sure if we can hit this from any other path, so
it looks worth fixing it.  We can easily do that by checking
mapping->host first.
Link: http://lkml.kernel.org/r/20190318072931.29094-1-osalvador@suse.de
Fixes: 1c6fb1d89e73c ("mm: print more information about mapping in
__dump_page") Signed-off-by: Oscar Salvador <osalvador@suse.de>
Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Hugh Dickins
<hughd@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>
The file was modifiedmm/debug.c (diff)
Commit 77a5258a57e76fa444c018ef796e67eeee334128 by gregkh
mm/memory_hotplug.c: fix notification in offline error path
commit c4efe484b5f0d768e23c9731082fec827723e738 upstream.
When start_isolate_page_range() returned -EBUSY in __offline_pages(), it
calls memory_notify(MEM_CANCEL_OFFLINE, &arg) with an uninitialized
"arg".  As the result, it triggers warnings below.  Also, it is only
necessary to notify MEM_CANCEL_OFFLINE after MEM_GOING_OFFLINE.
  page:ffffea0001200000 count:1 mapcount:0 mapping:0000000000000000
index:0x0
flags: 0x3fffe000001000(reserved)
raw: 003fffe000001000 ffffea0001200008 ffffea0001200008
0000000000000000
raw: 0000000000000000 0000000000000000 00000001ffffffff
0000000000000000
page dumped because: unmovable page
WARNING: CPU: 25 PID: 1665 at mm/kasan/common.c:665
kasan_mem_notifier+0x34/0x23b
CPU: 25 PID: 1665 Comm: bash Tainted: G        W         5.0.0+ #94
Hardware name: HP ProLiant DL180 Gen9/ProLiant DL180 Gen9, BIOS U20
10/25/2017
RIP: 0010:kasan_mem_notifier+0x34/0x23b
RSP: 0018:ffff8883ec737890 EFLAGS: 00010206
RAX: 0000000000000246 RBX: ff10f0f4435f1000 RCX: f887a7a21af88000
RDX: dffffc0000000000 RSI: 0000000000000020 RDI: ffff8881f221af88
RBP: ffff8883ec737898 R08: ffff888000000000 R09: ffffffffb0bddcd0
R10: ffffed103e857088 R11: ffff8881f42b8443 R12: dffffc0000000000
R13: 00000000fffffff9 R14: dffffc0000000000 R15: 0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000560fbd31d730 CR3: 00000004049c6003 CR4: 00000000001606a0
Call Trace:
  notifier_call_chain+0xbf/0x130
  __blocking_notifier_call_chain+0x76/0xc0
  blocking_notifier_call_chain+0x16/0x20
  memory_notify+0x1b/0x20
  __offline_pages+0x3e2/0x1210
  offline_pages+0x11/0x20
  memory_block_action+0x144/0x300
  memory_subsys_offline+0xe5/0x170
  device_offline+0x13f/0x1e0
  state_store+0xeb/0x110
  dev_attr_store+0x3f/0x70
  sysfs_kf_write+0x104/0x150
  kernfs_fop_write+0x25c/0x410
  __vfs_write+0x66/0x120
  vfs_write+0x15a/0x4f0
  ksys_write+0xd2/0x1b0
  __x64_sys_write+0x73/0xb0
  do_syscall_64+0xeb/0xb78
  entry_SYSCALL_64_after_hwframe+0x44/0xa9
RIP: 0033:0x7f14f75cc3b8
RSP: 002b:00007ffe84d01d68 EFLAGS: 00000246 ORIG_RAX: 0000000000000001
RAX: ffffffffffffffda RBX: 0000000000000008 RCX: 00007f14f75cc3b8
RDX: 0000000000000008 RSI: 0000563f8e433d70 RDI: 0000000000000001
RBP: 0000563f8e433d70 R08: 000000000000000a R09: 00007ffe84d018f0
R10: 000000000000000a R11: 0000000000000246 R12: 00007f14f789e780
R13: 0000000000000008 R14: 00007f14f7899740 R15: 0000000000000008
Link: http://lkml.kernel.org/r/20190320204255.53571-1-cai@lca.pw Fixes:
7960509329c2 ("mm, memory_hotplug: print reason for the offlining
failure") Reviewed-by: Oscar Salvador <osalvador@suse.de> Acked-by:
Michal Hocko <mhocko@suse.com> Signed-off-by: Qian Cai <cai@lca.pw>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org> Cc:
<stable@vger.kernel.org> [5.0.x] 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>
The file was modifiedmm/memory_hotplug.c (diff)
Commit 8a86a416c9483d8d08a90f7e8916ced7694941d9 by gregkh
mm/page_isolation.c: fix a wrong flag in set_migratetype_isolate()
commit f5777bc2d9cf0712554228b1a7927b6f13f5c1f0 upstream.
Due to has_unmovable_pages() taking an incorrect irqsave flag instead of
the isolation flag in set_migratetype_isolate(), there are issues with
HWPOSION and error reporting where dump_page() is not called when there
is an unmovable page.
Link: http://lkml.kernel.org/r/20190320204941.53731-1-cai@lca.pw Fixes:
d381c54760dc ("mm: only report isolation failures when offlining
memory") Acked-by: Michal Hocko <mhocko@suse.com> Reviewed-by: Oscar
Salvador <osalvador@suse.de> Signed-off-by: Qian Cai <cai@lca.pw> Cc:
<stable@vger.kernel.org> [5.0.x] 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>
The file was modifiedmm/page_isolation.c (diff)
Commit 8ad454a831e0da58230d4e2a1cd8c685f50f3d46 by gregkh
mm/migrate.c: add missing flush_dcache_page for non-mapped page migrate
commit d2b2c6dd227ba5b8a802858748ec9a780cb75b47 upstream.
Our MIPS 1004Kc SoCs were seeing random userspace crashes with SIGILL
and SIGSEGV that could not be traced back to a userspace code bug.  They
had all the magic signs of an I/D cache coherency issue.
Now recently we noticed that the /proc/sys/vm/compact_memory interface
was quite efficient at provoking this class of userspace crashes.
Studying the code in mm/migrate.c there is a distinction made between
migrating a page that is mapped at the instant of migration and one that
is not mapped.  Our problem turned out to be the non-mapped pages.
For the non-mapped page the code performs a copy of the page content and
all relevant meta-data of the page without doing the required D-cache
maintenance.  This leaves dirty data in the D-cache of the CPU and on
the 1004K cores this data is not visible to the I-cache.  A subsequent
page-fault that triggers a mapping of the page will happily serve the
process with potentially stale code.
What about ARM then, this bug should have seen greater exposure? Well
ARM became immune to this flaw back in 2010, see commit c01778001a4f
("ARM: 6379/1: Assume new page cache pages have dirty D-cache").
My proposed fix moves the D-cache maintenance inside move_to_new_page to
make it common for both cases.
Link: http://lkml.kernel.org/r/20190315083502.11849-1-larper@axis.com
Fixes: 97ee0524614 ("flush cache before installing new page at
migraton") Signed-off-by: Lars Persson <larper@axis.com> Reviewed-by:
Paul Burton <paul.burton@mips.com> Acked-by: Mel Gorman
<mgorman@techsingularity.net> Cc: Ralf Baechle <ralf@linux-mips.org> 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>
The file was modifiedmm/migrate.c (diff)
Commit c9418d0addb0ddd91d14f3f86ce826af77945c3b by gregkh
perf pmu: Fix parser error for uncore event alias
commit e94d6b7f615e6dfbaf9fba7db6011db561461d0c upstream.
Perf fails to parse uncore event alias, for example:
  # perf stat -e unc_m_clockticks -a --no-merge sleep 1
event syntax error: 'unc_m_clockticks'
                      \___ parser error
Current code assumes that the event alias is from one specific PMU.
To find the PMU, perf strcmps the PMU name of event alias with the real
PMU name on the system.
However, the uncore event alias may be from multiple PMUs with common
prefix. The PMU name of uncore event alias is the common prefix.
For example, UNC_M_CLOCKTICKS is clock event for iMC, which include 6
PMUs with the same prefix "uncore_imc" on a skylake server.
The real PMU names on the system for iMC are uncore_imc_0 ...
uncore_imc_5.
The strncmp is used to only check the common prefix for uncore event
alias.
With the patch:
  # perf stat -e unc_m_clockticks -a --no-merge sleep 1
Performance counter stats for 'system wide':
       723,594,722      unc_m_clockticks [uncore_imc_5]
      724,001,954      unc_m_clockticks [uncore_imc_3]
      724,042,655      unc_m_clockticks [uncore_imc_1]
      724,161,001      unc_m_clockticks [uncore_imc_4]
      724,293,713      unc_m_clockticks [uncore_imc_2]
      724,340,901      unc_m_clockticks [uncore_imc_0]
       1.002090060 seconds time elapsed
Signed-off-by: Kan Liang <kan.liang@linux.intel.com> Acked-by: Jiri Olsa
<jolsa@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc: Thomas
Richter <tmricht@linux.ibm.com> Cc: stable@vger.kernel.org Fixes:
ea1fa48c055f ("perf stat: Handle different PMU names with common
prefix") Link:
http://lkml.kernel.org/r/1552672814-156173-1-git-send-email-kan.liang@linux.intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/pmu.c (diff)
Commit a0de19f1c307e8e82add7660632857759a4ab814 by gregkh
perf intel-pt: Fix TSC slip
commit f3b4e06b3bda759afd042d3d5fa86bea8f1fe278 upstream.
A TSC packet can slip past MTC packets so that the timestamp appears to
go backwards. One estimate is that can be up to about 40 CPU cycles,
which is certainly less than 0x1000 TSC ticks, but accept slippage an
order of magnitude more to be on the safe side.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: stable@vger.kernel.org Fixes: 79b58424b821c
("perf tools: Add Intel PT support for decoding MTC packets") Link:
http://lkml.kernel.org/r/20190325135135.18348-1-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/intel-pt-decoder/intel-pt-decoder.c (diff)
Commit 8f84f7daabb2fddfc5f81e9257e8c465b2a0caef by gregkh
objtool: Query pkg-config for libelf location
commit 056d28d135bca0b1d0908990338e00e9dadaf057 upstream.
If it is not in the default location, compilation fails at several
points.
Signed-off-by: Rolf Eike Beer <eb@emlix.com> Signed-off-by: Josh
Poimboeuf <jpoimboe@redhat.com> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/91a25e992566a7968fedc89ec80e7f4c83ad0548.1553622500.git.jpoimboe@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedMakefile (diff)
The file was modifiedtools/objtool/Makefile (diff)
Commit e92932ef286281c11d40b75b5a6cd64107ac8e8e by gregkh
powerpc/pseries/energy: Use OF accessor functions to read
ibm,drc-indexes
commit ce9afe08e71e3f7d64f337a6e932e50849230fc2 upstream.
In cpu_to_drc_index() in the case when FW_FEATURE_DRC_INFO is absent, we
currently use of_read_property() to obtain the pointer to the array
corresponding to the property "ibm,drc-indexes". The elements of this
array are of type __be32, but are accessed without any conversion to the
OS-endianness, which is buggy on a Little Endian OS.
Fix this by using of_property_read_u32_index() accessor function to
safely read the elements of the array.
Fixes: e83636ac3334 ("pseries/drc-info: Search DRC properties for CPU
indexes") Cc: stable@vger.kernel.org # v4.16+ Reported-by: Pavithra R.
Prakash <pavrampu@in.ibm.com> Signed-off-by: Gautham R. Shenoy
<ego@linux.vnet.ibm.com> Reviewed-by: Vaidyanathan Srinivasan
<svaidy@linux.vnet.ibm.com>
[mpe: Make the WARN_ON a WARN_ON_ONCE so it's not retriggerable]
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/pseries/pseries_energy.c (diff)
Commit 4a2b2d5dc8fae21a52f86f9abc0857dfe6c88cb4 by gregkh
powerpc/64: Fix memcmp reading past the end of src/dest
commit d9470757398a700d9450a43508000bcfd010c7a4 upstream.
Chandan reported that fstests' generic/026 test hit a crash:
  BUG: Unable to handle kernel data access at 0xc00000062ac40000
Faulting instruction address: 0xc000000000092240
Oops: Kernel access of bad area, sig: 11 [#1]
LE SMP NR_CPUS=2048 DEBUG_PAGEALLOC NUMA pSeries
CPU: 0 PID: 27828 Comm: chacl Not tainted
5.0.0-rc2-next-20190115-00001-g6de6dba64dda #1
NIP:  c000000000092240 LR: c00000000066a55c CTR: 0000000000000000
REGS: c00000062c0c3430 TRAP: 0300   Not tainted
(5.0.0-rc2-next-20190115-00001-g6de6dba64dda)
MSR:  8000000002009033 <SF,VEC,EE,ME,IR,DR,RI,LE>  CR: 44000842  XER:
20000000
CFAR: 00007fff7f3108ac DAR: c00000062ac40000 DSISR: 40000000 IRQMASK: 0
GPR00: 0000000000000000 c00000062c0c36c0 c0000000017f4c00
c00000000121a660
GPR04: c00000062ac3fff9 0000000000000004 0000000000000020
00000000275b19c4
GPR08: 000000000000000c 46494c4500000000 5347495f41434c5f
c0000000026073a0
GPR12: 0000000000000000 c0000000027a0000 0000000000000000
0000000000000000
GPR16: 0000000000000000 0000000000000000 0000000000000000
0000000000000000
GPR20: c00000062ea70020 c00000062c0c38d0 0000000000000002
0000000000000002
GPR24: c00000062ac3ffe8 00000000275b19c4 0000000000000001
c00000062ac30000
GPR28: c00000062c0c38d0 c00000062ac30050 c00000062ac30058
0000000000000000
NIP memcmp+0x120/0x690
LR  xfs_attr3_leaf_lookup_int+0x53c/0x5b0
Call Trace:
   xfs_attr3_leaf_lookup_int+0x78/0x5b0 (unreliable)
   xfs_da3_node_lookup_int+0x32c/0x5a0
   xfs_attr_node_addname+0x170/0x6b0
   xfs_attr_set+0x2ac/0x340
   __xfs_set_acl+0xf0/0x230
   xfs_set_acl+0xd0/0x160
   set_posix_acl+0xc0/0x130
   posix_acl_xattr_set+0x68/0x110
   __vfs_setxattr+0xa4/0x110
   __vfs_setxattr_noperm+0xac/0x240
   vfs_setxattr+0x128/0x130
   setxattr+0x248/0x600
   path_setxattr+0x108/0x120
   sys_setxattr+0x28/0x40
   system_call+0x5c/0x70
Instruction dump:
7d201c28 7d402428 7c295040 38630008 38840008 408201f0 4200ffe8 2c050000
4182ff6c 20c50008 54c61838 7d201c28 <7d402428> 7d293436 7d4a3436
7c295040
The instruction dump decodes as:
subfic  r6,r5,8
rlwinm  r6,r6,3,0,28
ldbrx   r9,0,r3
ldbrx   r10,0,r4      <-
Which shows us doing an 8 byte load from c00000062ac3fff9, which crosses
the page boundary at c00000062ac40000 and faults.
It's not OK for memcmp to read past the end of the source or destination
buffers if that would cross a page boundary, because we don't know that
the next page is mapped.
As pointed out by Segher, we can read past the end of the source or
destination as long as we don't cross a 4K boundary, because that's our
minimum page size on all platforms.
The bug is in the code at the .Lcmp_rest_lt8bytes label. When we get
there we know that s1 is 8-byte aligned and we have at least 1 byte to
read, so a single 8-byte load won't read past the end of s1 and cross a
page boundary.
But we have to be more careful with s2. So check if it's within 8 bytes
of a 4K boundary and if so go to the byte-by-byte loop.
Fixes: 2d9ee327adce ("powerpc/64: Align bytes before fall back to
.Lshort in powerpc64 memcmp()") Cc: stable@vger.kernel.org # v4.19+
Reported-by: Chandan Rajendra <chandan@linux.ibm.com> Signed-off-by:
Michael Ellerman <mpe@ellerman.id.au> Reviewed-by: Segher Boessenkool
<segher@kernel.crashing.org> Tested-by: Chandan Rajendra
<chandan@linux.ibm.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/lib/memcmp_64.S (diff)
Commit 1a0ecfd4e633a3fb2e8914f73e599fbb775ad1d5 by gregkh
powerpc/pseries/mce: Fix misleading print for TLB mutlihit
commit 6f845ebec2706841d15831fab3ffffcfd9e676fa upstream.
On pseries, TLB multihit are reported as D-Cache Multihit. This is
because the wrongly populated mc_err_types[] array. Per PAPR, TLB error
type is 0x04 and mc_err_types[4] points to "D-Cache" instead of "TLB"
string. Fixup the mc_err_types[] array.
Machine check error type per PAPR:
0x00 = Uncorrectable Memory Error (UE)
0x01 = SLB error
0x02 = ERAT Error
0x04 = TLB error
0x05 = D-Cache error
0x07 = I-Cache error
Fixes: 8f0b80561f21 ("powerpc/pseries: Display machine check error
details.") Cc: stable@vger.kernel.org # v4.20+ Reported-by: Aneesh Kumar
K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Mahesh Salgaonkar
<mahesh@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/pseries/ras.c (diff)
Commit 53464ca9130be5466ada7b9dd653059c3a26cad9 by gregkh
watchdog: Respect watchdog cpumask on CPU hotplug
commit 7dd47617114921fdd8c095509e5e7b4373cc44a1 upstream.
The rework of the watchdog core to use cpu_stop_work broke the watchdog
cpumask on CPU hotplug.
The watchdog_enable/disable() functions are now called unconditionally
from the hotplug callback, i.e. even on CPUs which are not in the
watchdog cpumask. As a consequence the watchdog can become unstoppable.
Only invoke them when the plugged CPU is in the watchdog cpumask.
Fixes: 9cf57731b63e ("watchdog/softlockup: Replace "watchdog/%u" threads
with cpu_stop_work") Reported-by: Maxime Coquelin
<maxime.coquelin@redhat.com> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Tested-by: Maxime Coquelin
<maxime.coquelin@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Oleg Nesterov <oleg@redhat.com> Cc: Michael Ellerman
<mpe@ellerman.id.au> Cc: Nicholas Piggin <npiggin@gmail.com> Cc: Don
Zickus <dzickus@redhat.com> Cc: Ricardo Neri
<ricardo.neri-calderon@linux.intel.com> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/alpine.DEB.2.21.1903262245490.1789@nanos.tec.linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/watchdog.c (diff)
Commit c3bcf031466592a5d58eafae1d8df5bc4448122c by gregkh
cpu/hotplug: Prevent crash when CPU bringup fails on
CONFIG_HOTPLUG_CPU=n
commit 206b92353c839c0b27a0b9bec24195f93fd6cf7a upstream.
Tianyu reported a crash in a CPU hotplug teardown callback when booting
a kernel which has CONFIG_HOTPLUG_CPU disabled with the 'nosmt' boot
parameter.
It turns out that the SMP=y CONFIG_HOTPLUG_CPU=n case has been broken
forever in case that a bringup callback fails. Unfortunately this issue
was not recognized when the CPU hotplug code was reworked, so the
shortcoming just stayed in place.
When a bringup callback fails, the CPU hotplug code rolls back the
operation and takes the CPU offline.
The 'nosmt' command line argument uses a bringup failure to abort the
bringup of SMT sibling CPUs. This partial bringup is required due to the
MCE misdesign on Intel CPUs.
With CONFIG_HOTPLUG_CPU=y the rollback works perfectly fine, but
CONFIG_HOTPLUG_CPU=n lacks essential mechanisms to exercise the low
level teardown of a CPU including the synchronizations in various
facilities like RCU, NOHZ and others.
As a consequence the teardown callbacks which must be executed on the
outgoing CPU within stop machine with interrupts disabled are executed
on the control CPU in interrupt enabled and preemptible context causing
the kernel to crash and burn. The pre state machine code has a different
failure mode which is more subtle and resulting in a less obvious use
after free crash because the control side frees resources which are
still in use by the undead CPU.
But this is not a x86 only problem. Any architecture which supports the
SMP=y HOTPLUG_CPU=n combination suffers from the same issue. It's just
less likely to be triggered because in 99.99999% of the cases all
bringup callbacks succeed.
The easy solution of making HOTPLUG_CPU mandatory for SMP is not working
on all architectures as the following architectures have either no
hotplug support at all or not all subarchitectures support it:
alpha, arc, hexagon, openrisc, riscv, sparc (32bit), mips (partial).
Crashing the kernel in such a situation is not an acceptable state
either.
Implement a minimal rollback variant by limiting the teardown to the
point where all regular teardown callbacks have been invoked and leave
the CPU in the 'dead' idle state. This has the following consequences:
- the CPU is brought down to the point where the stop_machine takedown
  would happen.
- the CPU stays there forever and is idle
- The CPU is cleared in the CPU active mask, but not in the CPU online
  mask which is a legit state.
- Interrupts are not forced away from the CPU
- All facilities which only look at online mask would still see it, but
  that is the case during normal hotplug/unplug operations as well. It's
  just a (way) longer time frame.
This will expose issues, which haven't been exposed before or only
seldom, because now the normally transient state of being non active but
online is a permanent state. In testing this exposed already an issue
vs. work queues where the vmstat code schedules work on the almost dead
CPU which ends up in an unbound workqueue and triggers 'preemtible
context' warnings. This is not a problem of this change, it merily
exposes an already existing issue. Still this is better than crashing
fully without a chance to debug it.
This is mainly thought as workaround for those architectures which do
not support HOTPLUG_CPU. All others should enforce HOTPLUG_CPU for SMP.
Fixes: 2e1a3483ce74 ("cpu/hotplug: Split out the state walk into
functions") Reported-by: Tianyu Lan <Tianyu.Lan@microsoft.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Tianyu
Lan <Tianyu.Lan@microsoft.com> Acked-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: Konrad Wilk <konrad.wilk@oracle.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Mukesh Ojha
<mojha@codeaurora.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
Jiri Kosina <jkosina@suse.cz> Cc: Rik van Riel <riel@surriel.com> Cc:
Andy Lutomirski <luto@kernel.org> Cc: Micheal Kelley
<michael.h.kelley@microsoft.com> Cc: "K. Y. Srinivasan"
<kys@microsoft.com> Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Borislav Petkov <bp@alien8.de> Cc: K. Y. Srinivasan
<kys@microsoft.com> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190326163811.503390616@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/cpu.c (diff)
Commit 8c0823aa123b7b4cd5ebc9fbed324dbe4a37755d by gregkh
x86/smp: Enforce CONFIG_HOTPLUG_CPU when SMP=y
commit bebd024e4815b1a170fcd21ead9c2222b23ce9e6 upstream.
The SMT disable 'nosmt' command line argument is not working properly
when CONFIG_HOTPLUG_CPU is disabled. The teardown of the sibling CPUs
which are required to be brought up due to the MCE issues, cannot work.
The CPUs are then kept in a half dead state.
As the 'nosmt' functionality has become popular due to the speculative
hardware vulnerabilities, the half torn down state is not a proper
solution to the problem.
Enforce CONFIG_HOTPLUG_CPU=y when SMP is enabled so the full operation
is possible.
Reported-by: Tianyu Lan <Tianyu.Lan@microsoft.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Acked-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: Konrad Wilk <konrad.wilk@oracle.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com> Cc: Mukesh Ojha
<mojha@codeaurora.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
Jiri Kosina <jkosina@suse.cz> Cc: Rik van Riel <riel@surriel.com> Cc:
Andy Lutomirski <luto@kernel.org> Cc: Micheal Kelley
<michael.h.kelley@microsoft.com> Cc: "K. Y. Srinivasan"
<kys@microsoft.com> Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Borislav Petkov <bp@alien8.de> Cc: K. Y. Srinivasan
<kys@microsoft.com> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190326163811.598166056@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/Kconfig (diff)
Commit d50d46e303d49c7a7283c94cac1e576e479e4a27 by gregkh
KVM: Reject device ioctls from processes other than the VM's creator
commit ddba91801aeb5c160b660caed1800eb3aef403f8 upstream.
KVM's API requires thats ioctls must be issued from the same process
that created the VM.  In other words, userspace can play games with a
VM's file descriptors, e.g. fork(), SCM_RIGHTS, etc..., but only the
creator can do anything useful.  Explicitly reject device ioctls that
are issued by a process other than the VM's creator, and update KVM's
API documentation to extend its requirements to device ioctls.
Fixes: 852b6d57dc7f ("kvm: add device control API") Cc:
<stable@vger.kernel.org> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedDocumentation/virtual/kvm/api.txt (diff)
The file was modifiedvirt/kvm/kvm_main.c (diff)
Commit cc3f680dd076706dd19c19af4a40f007ac55a2da by gregkh
KVM: x86: Emulate MSR_IA32_ARCH_CAPABILITIES on AMD hosts
commit 0cf9135b773bf32fba9dd8e6699c1b331ee4b749 upstream.
The CPUID flag ARCH_CAPABILITIES is unconditioinally exposed to host
userspace for all x86 hosts, i.e. KVM advertises ARCH_CAPABILITIES
regardless of hardware support under the pretense that KVM fully
emulates MSR_IA32_ARCH_CAPABILITIES.  Unfortunately, only VMX hosts
handle accesses to MSR_IA32_ARCH_CAPABILITIES (despite KVM_GET_MSRS also
reporting MSR_IA32_ARCH_CAPABILITIES for all hosts).
Move the MSR_IA32_ARCH_CAPABILITIES handling to common x86 code so that
it's emulated on AMD hosts.
Fixes: 1eaafe91a0df4 ("kvm: x86: IA32_ARCH_CAPABILITIES is always
supported") Cc: stable@vger.kernel.org Reported-by: Xiaoyao Li
<xiaoyao.li@linux.intel.com> Cc: Jim Mattson <jmattson@google.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/include/asm/kvm_host.h (diff)
The file was modifiedarch/x86/kvm/x86.c (diff)
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
The file was modifiedarch/x86/kvm/vmx/vmx.h (diff)
Commit b54f0c4976e7fbf89246e3d298042992e7186c7c by gregkh
KVM: x86: update %rip after emulating IO
commit 45def77ebf79e2e8942b89ed79294d97ce914fa0 upstream.
Most (all?) x86 platforms provide a port IO based reset mechanism, e.g.
OUT 92h or CF9h.  Userspace may emulate said mechanism, i.e. reset a
vCPU in response to KVM_EXIT_IO, without explicitly announcing to KVM
that it is doing a reset, e.g. Qemu jams vCPU state and resumes running.
To avoid corruping %rip after such a reset, commit 0967b7bf1c22 ("KVM:
Skip pio instruction when it is emulated, not executed") changed the
behavior of PIO handlers, i.e. today's "fast" PIO handling to skip the
instruction prior to exiting to userspace.  Full emulation doesn't need
such tricks becase re-emulating the instruction will naturally handle
%rip being changed to point at the reset vector.
Updating %rip prior to executing to userspace has several drawbacks:
  - Userspace sees the wrong %rip on the exit, e.g. if PIO emulation
   fails it will likely yell about the wrong address.
- Single step exits to userspace for are effectively dropped as
   KVM_EXIT_DEBUG is overwritten with KVM_EXIT_IO.
- Behavior of PIO emulation is different depending on whether it
   goes down the fast path or the slow path.
Rather than skip the PIO instruction before exiting to userspace,
snapshot the linear %rip and cancel PIO completion if the current value
does not match the snapshot.  For a 64-bit vCPU, i.e. the most common
scenario, the snapshot and comparison has negligible overhead as
VMCS.GUEST_RIP will be cached regardless, i.e. there is no extra VMREAD
in this case.
All other alternatives to snapshotting the linear %rip that don't rely
on an explicit reset announcenment suffer from one corner case or
another.  For example, canceling PIO completion on any write to
%rip fails if userspace does a save/restore of %rip, and attempting to
avoid that issue by canceling PIO only if %rip changed then fails if PIO
collides with the reset %rip.  Attempting to zero in on the exact reset
vector won't work for APs, which means adding more hooks such as the
vCPU's MP_STATE, and so on and so forth.
Checking for a linear %rip match technically suffers from corner cases,
e.g. userspace could theoretically rewrite the underlying code page and
expect a different instruction to execute, or the guest hardcodes a PIO
reset at 0xfffffff0, but those are far, far outside of what can be
considered normal operation.
Fixes: 432baf60eee3 ("KVM: VMX: use kvm_fast_pio_in for handling IN
I/O") Cc: <stable@vger.kernel.org> Reported-by: Jim Mattson
<jmattson@google.com> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/x86.c (diff)
The file was modifiedarch/x86/include/asm/kvm_host.h (diff)
Commit 046098f056e2ac1a2e4fe5545b66a7024ef8a306 by gregkh
bpf: do not restore dst_reg when cur_state is freed
commit 0803278b0b4d8eeb2b461fb698785df65a725d9e upstream.
Syzkaller hit 'KASAN: use-after-free Write in sanitize_ptr_alu' bug.
Call trace:
  dump_stack+0xbf/0x12e
print_address_description+0x6a/0x280
kasan_report+0x237/0x360
sanitize_ptr_alu+0x85a/0x8d0
adjust_ptr_min_max_vals+0x8f2/0x1ca0
adjust_reg_min_max_vals+0x8ed/0x22e0
do_check+0x1ca6/0x5d00
bpf_check+0x9ca/0x2570
bpf_prog_load+0xc91/0x1030
__se_sys_bpf+0x61e/0x1f00
do_syscall_64+0xc8/0x550
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Fault injection trace:
 kfree+0xea/0x290
 free_func_state+0x4a/0x60
 free_verifier_state+0x61/0xe0
 push_stack+0x216/0x2f0           <- inject failslab
 sanitize_ptr_alu+0x2b1/0x8d0
 adjust_ptr_min_max_vals+0x8f2/0x1ca0
 adjust_reg_min_max_vals+0x8ed/0x22e0
 do_check+0x1ca6/0x5d00
 bpf_check+0x9ca/0x2570
 bpf_prog_load+0xc91/0x1030
 __se_sys_bpf+0x61e/0x1f00
 do_syscall_64+0xc8/0x550
 entry_SYSCALL_64_after_hwframe+0x49/0xbe
When kzalloc() fails in push_stack(), free_verifier_state() will free
current verifier state. As push_stack() returns, dst_reg was restored if
ptr_is_dst_reg is false. However, as member of the cur_state, dst_reg is
also freed, and error occurs when dereferencing dst_reg. Simply fix it
by testing ret of push_stack() before restoring dst_reg.
Fixes: 979d63d50c0c ("bpf: prevent out of bounds speculation on pointer
arithmetic") Signed-off-by: Xu Yu <xuyu@linux.alibaba.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/bpf/verifier.c (diff)
Commit debaa517c16c65247ec753324e16ccd7c26e858c by gregkh
mt76x02u: use usb_bulk_msg to upload firmware
commit 5de4db8fcb6d6fc7d9064c22841211790c0ab81b upstream.
We don't need to send firmware data asynchronously, much simpler is just
use synchronous usb_bulk_msg().
[ stable note: this patch was originally developed as cleanup, but it
remove incorrect usage of page_frag_alloc(): alloc more than PAGE_SIZE
and create not ARCH_DMA_MINALIGN dma buffers needed at least for
performance reason. Was tested on 5.0 and 4.20, see
https://bugzilla.kernel.org/show_bug.cgi?id=202673 and
https://bugzilla.kernel.org/show_bug.cgi?id=202241 ]
Tested-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by:
Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Felix Fietkau
<nbd@nbd.name> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/wireless/mediatek/mt76/mt76.h (diff)
The file was modifieddrivers/net/wireless/mediatek/mt76/mt76x02_usb_mcu.c (diff)
The file was modifieddrivers/net/wireless/mediatek/mt76/usb.c (diff)
The file was modifiedMakefile (diff)
Commit dc2b4d4ab0aea9434d3fafef8c59d8f8825e1903 by gregkh
ext4: cleanup bh release code in ext4_ind_remove_space()
commit 5e86bdda41534e17621d5a071b294943cae4376e upstream.
Currently, we are releasing the indirect buffer where we are done with
it in ext4_ind_remove_space(), so we can see the brelse() and
BUFFER_TRACE() everywhere.  It seems fragile and hard to read, and we
may probably forget to release the buffer some day.  This patch cleans
up the code by putting of the code which releases the buffers to the end
of the function.
Signed-off-by: zhangyi (F) <yi.zhang@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Reviewed-by: Jan Kara <jack@suse.cz> Cc: Jari Ruusu
<jari.ruusu@gmail.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/indirect.c (diff)
Commit fae38f280334107cd396ea456e3bf90e25b0f3d8 by gregkh
CIFS: fix POSIX lock leak and invalid ptr deref
[ Upstream commit bc31d0cdcfbadb6258b45db97e93b1c83822ba33 ]
We have a customer reporting crashes in lock_get_status() with many
"Leaked POSIX lock" messages preceeding the crash.
Leaked POSIX lock on dev=0x0:0x56 ...
Leaked POSIX lock on dev=0x0:0x56 ...
Leaked POSIX lock on dev=0x0:0x56 ...
Leaked POSIX lock on dev=0x0:0x53 ...
Leaked POSIX lock on dev=0x0:0x53 ...
Leaked POSIX lock on dev=0x0:0x53 ...
Leaked POSIX lock on dev=0x0:0x53 ...
POSIX: fl_owner=ffff8900e7b79380 fl_flags=0x1 fl_type=0x1 fl_pid=20709
Leaked POSIX lock on dev=0x0:0x4b ino...
Leaked locks on dev=0x0:0x4b ino=0xf911400000029:
POSIX: fl_owner=ffff89f41c870e00 fl_flags=0x1 fl_type=0x1 fl_pid=19592
stack segment: 0000 [#1] SMP
Modules linked in: binfmt_misc msr tcp_diag udp_diag inet_diag unix_diag
af_packet_diag netlink_diag rpcsec_gss_krb5 arc4 ecb auth_rpcgss nfsv4
md4 nfs nls_utf8 lockd grace cifs sunrpc ccm dns_resolver fscache
af_packet iscsi_ibft iscsi_boot_sysfs vmw_vsock_vmci_transport vsock xfs
libcrc32c sb_edac edac_core crct10dif_pclmul crc32_pclmul
ghash_clmulni_intel drbg ansi_cprng vmw_balloon aesni_intel aes_x86_64
lrw gf128mul glue_helper ablk_helper cryptd joydev pcspkr vmxnet3
i2c_piix4 vmw_vmci shpchp fjes processor button ac btrfs xor raid6_pq
sr_mod cdrom ata_generic sd_mod ata_piix vmwgfx crc32c_intel
drm_kms_helper syscopyarea sysfillrect sysimgblt fb_sys_fops ttm
serio_raw ahci libahci drm libata vmw_pvscsi sg dm_multipath dm_mod
scsi_dh_rdac scsi_dh_emc scsi_dh_alua scsi_mod autofs4
Supported: Yes
CPU: 6 PID: 28250 Comm: lsof Not tainted 4.4.156-94.64-default #1
Hardware name: VMware, Inc. VMware Virtual Platform/440BX Desktop
Reference Platform, BIOS 6.00 04/05/2016
task: ffff88a345f28740 ti: ffff88c74005c000 task.ti: ffff88c74005c000
RIP: 0010:[<ffffffff8125dcab>]  [<ffffffff8125dcab>]
lock_get_status+0x9b/0x3b0
RSP: 0018:ffff88c74005fd90  EFLAGS: 00010202
RAX: ffff89bde83e20ae RBX: ffff89e870003d18 RCX: 0000000049534f50
RDX: ffffffff81a3541f RSI: ffffffff81a3544e RDI: ffff89bde83e20ae
RBP: 0026252423222120 R08: 0000000020584953 R09: 000000000000ffff
R10: 0000000000000000 R11: ffff88c74005fc70 R12: ffff89e5ca7b1340
R13: 00000000000050e5 R14: ffff89e870003d30 R15: ffff89e5ca7b1340
FS:  00007fafd64be800(0000) GS:ffff89f41fd00000(0000)
knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000001c80018 CR3: 000000a522048000 CR4: 0000000000360670
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
Stack:
0000000000000208 ffffffff81a3d6b6 ffff89e870003d30 ffff89e870003d18
ffff89e5ca7b1340 ffff89f41738d7c0 ffff89e870003d30 ffff89e5ca7b1340
ffffffff8125e08f 0000000000000000 ffff89bc22b67d00 ffff88c74005ff28
Call Trace:
[<ffffffff8125e08f>] locks_show+0x2f/0x70
[<ffffffff81230ad1>] seq_read+0x251/0x3a0
[<ffffffff81275bbc>] proc_reg_read+0x3c/0x70
[<ffffffff8120e456>] __vfs_read+0x26/0x140
[<ffffffff8120e9da>] vfs_read+0x7a/0x120
[<ffffffff8120faf2>] SyS_read+0x42/0xa0
[<ffffffff8161cbc3>] entry_SYSCALL_64_fastpath+0x1e/0xb7
When Linux closes a FD (close(), close-on-exec, dup2(), ...) it calls
filp_close() which also removes all posix locks.
The lock struct is initialized like so in filp_close() and passed down
to cifs
...
       lock.fl_type = F_UNLCK;
       lock.fl_flags = FL_POSIX | FL_CLOSE;
       lock.fl_start = 0;
       lock.fl_end = OFFSET_MAX;
...
Note the FL_CLOSE flag, which hints the VFS code that this unlocking is
done for closing the fd.
filp_close()
locks_remove_posix(filp, id);
   vfs_lock_file(filp, F_SETLK, &lock, NULL);
     return filp->f_op->lock(filp, cmd, fl) => cifs_lock()
       rc = cifs_setlk(file, flock, type, wait_flag, posix_lck, lock,
unlock, xid);
         rc = server->ops->mand_unlock_range(cfile, flock, xid);
         if (flock->fl_flags & FL_POSIX && !rc)
                 rc = locks_lock_file_wait(file, flock)
Notice how we don't call locks_lock_file_wait() which does the generic
VFS lock/unlock/wait work on the inode if rc != 0.
If we are closing the handle, the SMB server is supposed to remove any
locks associated with it. Similarly, cifs.ko frees and wakes up any lock
and lock waiter when closing the file:
cifs_close()
cifsFileInfo_put(file->private_data)
/*
* Delete any outstanding lock records. We'll lose them when the file
* is closed anyway.
*/
down_write(&cifsi->lock_sem);
list_for_each_entry_safe(li, tmp, &cifs_file->llist->locks, llist) {
list_del(&li->llist);
cifs_del_lock_waiters(li);
kfree(li);
}
list_del(&cifs_file->llist->llist);
kfree(cifs_file->llist);
up_write(&cifsi->lock_sem);
So we can safely ignore unlocking failures in cifs_lock() if they happen
with the FL_CLOSE flag hint set as both the server and the client take
care of it during the actual closing.
This is not a proper fix for the unlocking failure but it's safe and it
seems to prevent the lock leakages and crashes the customer experiences.
Signed-off-by: Aurelien Aptel <aaptel@suse.com> Signed-off-by: NeilBrown
<neil@brown.name> Signed-off-by: Steve French <stfrench@microsoft.com>
Acked-by: Pavel Shilovsky <pshilov@microsoft.com> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedfs/cifs/file.c (diff)
Commit 32b73dc525a1b25d825d84869a03abbce5a84fa2 by gregkh
nvme-fc: fix numa_node when dev is null
[ Upstream commit 06f3d71ea071b70e62bcc146cd9ff7ed1f9d4e43 ]
A recent change added a numa_node field to the nvme controller and has
the transport assign the node using dev_to_node(). However, fcloop
registers with a NULL device struct, so the dev_to_node() call oops.
Revise the assignment to assign no node when device struct is null.
Fixes: 103e515efa89b ("nvme: add a numa_node field to struct nvme_ctrl")
Reported-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: James
Smart <jsmart2021@gmail.com> Reviewed-by: Sagi Grimberg
<sagi@grimberg.me> Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Mike Snitzer <snitzer@redhat.com>
[hch: small coding style fixup] Signed-off-by: Christoph Hellwig
<hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/nvme/host/fc.c (diff)
Commit 1eaf6713c5b3f355b3256cee2c7888b2f831d994 by gregkh
nvme-loop: init nvmet_ctrl fatal_err_work when allocate
[ Upstream commit d11de63f2b519f0a162b834013b6d3a46dbf3886 ]
After commit 4d43d395fe (workqueue: Try to catch flush_work() without
INIT_WORK()), it can cause warning when delete nvme-loop device, trace
like:
[   76.601272] Call Trace:
[   76.601646]  ? del_timer+0x72/0xa0
[   76.602156]  __cancel_work_timer+0x1ae/0x270
[   76.602791]  cancel_work_sync+0x14/0x20
[   76.603407]  nvmet_ctrl_free+0x1b7/0x2f0 [nvmet]
[   76.604091]  ? free_percpu+0x168/0x300
[   76.604652]  nvmet_sq_destroy+0x106/0x240 [nvmet]
[   76.605346]  nvme_loop_destroy_admin_queue+0x30/0x60 [nvme_loop]
[   76.606220]  nvme_loop_shutdown_ctrl+0xc3/0xf0 [nvme_loop]
[   76.607026]  nvme_loop_delete_ctrl_host+0x19/0x30 [nvme_loop]
[   76.607871]  nvme_do_delete_ctrl+0x75/0xb0
[   76.608477]  nvme_sysfs_delete+0x7d/0xc0
[   76.609057]  dev_attr_store+0x24/0x40
[   76.609603]  sysfs_kf_write+0x4c/0x60
[   76.610144]  kernfs_fop_write+0x19a/0x260
[   76.610742]  __vfs_write+0x1c/0x60
[   76.611246]  vfs_write+0xfa/0x280
[   76.611739]  ksys_write+0x6e/0x120
[   76.612238]  __x64_sys_write+0x1e/0x30
[   76.612787]  do_syscall_64+0xbf/0x3a0
[   76.613329]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
We fix it by moving fatal_err_work init to nvmet_alloc_ctrl(), which may
more reasonable.
Signed-off-by: Yufen Yu <yuyufen@huawei.com> Reviewed-by: Sagi Grimberg
<sagi@grimberg.me> Reviewed-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe
<axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/nvme/target/core.c (diff)
Commit e56d6fa7acf3524efcd71a16600d70661e98d748 by gregkh
h8300: use cc-cross-prefix instead of hardcoding h8300-unknown-linux-
[ Upstream commit fc2b47b55f17fd996f7a01975ce1c33c2f2513f6 ]
It believe it is a bad idea to hardcode a specific compiler prefix that
may or may not be installed on a user's system. It is annoying when
testing features that should not require compilers at all.
For example, mrproper, headers_install, etc. should work without any
compiler.
They look like follows on my machine.
$ make ARCH=h8300 mrproper
./scripts/gcc-version.sh: line 26: h8300-unknown-linux-gcc: command not
found
./scripts/gcc-version.sh: line 27: h8300-unknown-linux-gcc: command not
found make: h8300-unknown-linux-gcc: Command not found make:
h8300-unknown-linux-gcc: Command not found
[ a bunch of the same error messages continue ]
$ make ARCH=h8300 headers_install
./scripts/gcc-version.sh: line 26: h8300-unknown-linux-gcc: command not
found
./scripts/gcc-version.sh: line 27: h8300-unknown-linux-gcc: command not
found make: h8300-unknown-linux-gcc: Command not found
HOSTCC  scripts/basic/fixdep make: h8300-unknown-linux-gcc: Command not
found
WRAP    arch/h8300/include/generated/uapi/asm/kvm_para.h
[ snip ]
The solution is to delete this line, or to use cc-cross-prefix like some
architectures do. I chose the latter as a moderate fixup.
I added an alternative 'h8300-linux-' because it is available at:
https://mirrors.edge.kernel.org/pub/tools/crosstool/files/bin/x86_64/8.1.0/
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedarch/h8300/Makefile (diff)
Commit 8d661a6630488d5c48f1f2473224d5334e1c12a4 by gregkh
f2fs: fix to adapt small inline xattr space in __find_inline_xattr()
[ Upstream commit 2c28aba8b2e2a51749fa66e01b68e1cd5b53e022 ]
With below testcase, we will fail to find existed xattr entry:
1. mkfs.f2fs -O extra_attr -O flexible_inline_xattr /dev/zram0 2. mount
-t f2fs -o inline_xattr_size=1 /dev/zram0 /mnt/f2fs/ 3. touch
/mnt/f2fs/file 4. setfattr -n "user.name" -v 0 /mnt/f2fs/file 5.
getfattr -n "user.name" /mnt/f2fs/file
/mnt/f2fs/file: user.name: No such attribute
The reason is for inode which has very small inline xattr size,
__find_inline_xattr() will fail to traverse any entry due to first entry
may not be loaded from xattr node yet, later, we may skip to check
entire xattr datas in __find_xattr(), result in such wrong condition.
This patch adds condition to check such case to avoid this issue.
Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim
<jaegeuk@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/f2fs/xattr.c (diff)
Commit a98984da006bc63b78f5c78e7227c5e33dc9b034 by gregkh
f2fs: fix to avoid deadlock in f2fs_read_inline_dir()
[ Upstream commit aadcef64b22f668c1a107b86d3521d9cac915c24 ]
As Jiqun Li reported in bugzilla:
https://bugzilla.kernel.org/show_bug.cgi?id=202883
sometimes, dead lock when make system call SYS_getdents64 with fsync()
is called by another process.
monkey running on android9.0
1.  task 9785 held sbi->cp_rwsem and waiting lock_page() 2.  task 10349
held mm_sem and waiting sbi->cp_rwsem 3. task 9709 held lock_page() and
waiting mm_sem
so this is a dead lock scenario.
task stack is show by crash tools as following
crash_arm64> bt ffffffc03c354080 PID: 9785   TASK: ffffffc03c354080
CPU: 1   COMMAND: "RxIoScheduler-3"
>> #7 [ffffffc01b50fac0] __lock_page at ffffff80081b11e8
crash-arm64> bt 10349 PID: 10349  TASK: ffffffc018b83080  CPU: 1 
COMMAND: "BUGLY_ASYNC_UPL"
>> #3 [ffffffc01f8cfa40] rwsem_down_read_failed at ffffff8008a93afc
    PC: 00000033  LR: 00000000  SP: 00000000  PSTATE: ffffffffffffffff
crash-arm64> bt 9709 PID: 9709   TASK: ffffffc03e7f3080  CPU: 1 
COMMAND: "IntentService[A"
>> #3 [ffffffc001e67850] rwsem_down_read_failed at ffffff8008a93afc
>> #8 [ffffffc001e67b80] el1_ia at ffffff8008084fc4
    PC: ffffff8008274114  [compat_filldir64+120]
    LR: ffffff80083584d4  [f2fs_fill_dentries+448]
    SP: ffffffc001e67b80  PSTATE: 80400145
   X29: ffffffc001e67b80  X28: 0000000000000000  X27: 000000000000001a
   X26: 00000000000093d7  X25: ffffffc070d52480  X24: 0000000000000008
   X23: 0000000000000028  X22: 00000000d43dfd60  X21: ffffffc001e67e90
   X20: 0000000000000011  X19: ffffff80093a4000  X18: 0000000000000000
   X17: 0000000000000000  X16: 0000000000000000  X15: 0000000000000000
   X14: ffffffffffffffff  X13: 0000000000000008  X12: 0101010101010101
   X11: 7f7f7f7f7f7f7f7f  X10: 6a6a6a6a6a6a6a6a   X9: 7f7f7f7f7f7f7f7f
    X8: 0000000080808000   X7: ffffff800827409c   X6: 0000000080808000
    X5: 0000000000000008   X4: 00000000000093d7   X3: 000000000000001a
    X2: 0000000000000011   X1: ffffffc070d52480   X0: 0000000000800238
>> #9 [ffffffc001e67be0] f2fs_fill_dentries at ffffff80083584d0
    PC: 0000003c  LR: 00000000  SP: 00000000  PSTATE: 000000d9
   X12: f48a02ff X11: d4678960 X10: d43dfc00  X9: d4678ae4
    X8: 00000058  X7: d4678994  X6: d43de800  X5: 000000d9
    X4: d43dfc0c  X3: d43dfc10  X2: d46799c8  X1: 00000000
    X0: 00001068
Below potential deadlock will happen between three threads: Thread A
Thread B Thread C
- f2fs_do_sync_file
- f2fs_write_checkpoint
- down_write(&sbi->node_change) -- 1)
- do_page_fault
- down_write(&mm->mmap_sem) -- 2)
  - do_wp_page
   - f2fs_vm_page_mkwrite
- getdents64
- f2fs_read_inline_dir
  - lock_page -- 3)
- f2fs_sync_node_pages
  - lock_page -- 3)
    - __do_map_lock
     - down_read(&sbi->node_change) -- 1)
  - f2fs_fill_dentries
   - dir_emit
    - compat_filldir64
     - do_page_fault
      - down_read(&mm->mmap_sem) --
2)
Since f2fs_readdir is protected by inode.i_rwsem, there should not be
any updates in inode page, we're safe to lookup dents in inode page
without its lock held, so taking off the lock to improve concurrency of
readdir and avoid potential deadlock.
Reported-by: Jiqun Li <jiqun.li@unisoc.com> Signed-off-by: Chao Yu
<yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/f2fs/inline.c (diff)
Commit 4c6df358aa872d4c29956c18a8a09e55f48e732c by gregkh
apparmor: fix double free when unpack of secmark rules fails
[ Upstream commit d8dbb581d4f86a2ac669c056fc71a28ebeb367f4 ]
if secmark rules fail to unpack a double free happens resulting in the
following oops
[ 1295.584074] audit: type=1400 audit(1549970525.256:51):
apparmor="STATUS" info="failed to unpack profile secmark rules"
error=-71 profile="unconfined" name="/root/test" pid=29882
comm="apparmor_parser" name="/root/test" offset=120
[ 1374.042334] ------------[ cut here ]------------
[ 1374.042336] kernel BUG at mm/slub.c:294!
[ 1374.042404] invalid opcode: 0000 [#1] SMP PTI
[ 1374.042436] CPU: 0 PID: 29921 Comm: apparmor_parser Not tainted
4.20.7-042007-generic #201902061234
[ 1374.042461] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS 1.10.2-1ubuntu1 04/01/2014
[ 1374.042489] RIP: 0010:kfree+0x164/0x180
[ 1374.042502] Code: 74 05 41 0f b6 72 51 4c 89 d7 e8 37 cd f8 ff eb 8b
41 b8 01 00 00 00 48 89 d9 48 89 da 4c 89 d6 e8 11 f6 ff ff e9 72 ff ff
ff <0f> 0b 49 8b 42 08 a8 01 75 c2 0f 0b 48 8b 3d a9 f4 19 01 e9 c5 fe
[ 1374.042552] RSP: 0018:ffffaf7b812d7b90 EFLAGS: 00010246
[ 1374.042568] RAX: ffff91e437679200 RBX: ffff91e437679200 RCX:
ffff91e437679200
[ 1374.042589] RDX: 00000000000088b6 RSI: ffff91e43da27060 RDI:
ffff91e43d401a80
[ 1374.042609] RBP: ffffaf7b812d7ba8 R08: 0000000000027080 R09:
ffffffffa6627a6d
[ 1374.042629] R10: ffffd3af41dd9e40 R11: ffff91e43a1740dc R12:
ffff91e3f52e8000
[ 1374.042650] R13: ffffffffa6627a6d R14: ffffffffffffffb9 R15:
0000000000000001
[ 1374.042675] FS:  00007f928df77740(0000) GS:ffff91e43da00000(0000)
knlGS:0000000000000000
[ 1374.042697] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 1374.042714] CR2: 000055a0c3ab6b50 CR3: 0000000079ed8004 CR4:
0000000000360ef0
[ 1374.042737] Call Trace:
[ 1374.042750]  kzfree+0x2d/0x40
[ 1374.042763]  aa_free_profile+0x12b/0x270
[ 1374.042776]  unpack_profile+0xc1/0xf10
[ 1374.042790]  aa_unpack+0x115/0x4e0
[ 1374.042802]  aa_replace_profiles+0x8e/0xcc0
[ 1374.042817]  ? kvmalloc_node+0x6d/0x80
[ 1374.042831]  ? __check_object_size+0x166/0x192
[ 1374.042845]  policy_update+0xcf/0x1b0
[ 1374.042858]  profile_load+0x7d/0xa0
[ 1374.042871]  __vfs_write+0x3a/0x190
[ 1374.042883]  ? apparmor_file_permission+0x1a/0x20
[ 1374.042899]  ? security_file_permission+0x31/0xc0
[ 1374.042918]  ? _cond_resched+0x19/0x30
[ 1374.042931]  vfs_write+0xab/0x1b0
[ 1374.042963]  ksys_write+0x55/0xc0
[ 1374.043004]  __x64_sys_write+0x1a/0x20
[ 1374.043046]  do_syscall_64+0x5a/0x110
[ 1374.043087]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
Fixes: 9caafbe2b4cf ("apparmor: Parse secmark policy") Reported-by: Alex
Murray <alex.murray@canonical.com> Signed-off-by: John Johansen
<john.johansen@canonical.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedsecurity/apparmor/policy_unpack.c (diff)
Commit 043a440018e36403c3cb95620771541de93155d8 by gregkh
tracing: kdb: Fix ftdump to not sleep
[ Upstream commit 31b265b3baaf55f209229888b7ffea523ddab366 ]
As reported back in 2016-11 [1], the "ftdump" kdb command triggers a BUG
for "sleeping function called from invalid context".
kdb's "ftdump" command wants to call ring_buffer_read_prepare() in
atomic context.  A very simple solution for this is to add allocation
flags to ring_buffer_read_prepare() so kdb can call it without
triggering the allocation error.  This patch does that.
Note that in the original email thread about this, it was suggested that
perhaps the solution for kdb was to either preallocate the buffer ahead
of time or create our own iterator.  I'm hoping that this alternative of
adding allocation flags to ring_buffer_read_prepare() can be considered
since it means I don't need to duplicate more of the core trace code
into "trace_kdb.c" (for either creating my own iterator or re-preparing
a ring allocator whose memory was already allocated).
NOTE: another option for kdb is to actually figure out how to make it
reuse the existing ftrace_dump() function and totally eliminate the
duplication.  This sounds very appealing and actually works (the "sr z"
command can be seen to properly dump the ftrace buffer).  The downside
here is that ftrace_dump() fully consumes the trace buffer. Unless that
is changed I'd rather not use it because it means "ftdump
| grep xyz" won't be very useful to search the ftrace buffer since it
will throw away the whole trace on the first grep.  A future patch to
dump only the last few lines of the buffer will also be hard to
implement.
[1] https://lkml.kernel.org/r/20161117191605.GA21459@google.com
Link:
http://lkml.kernel.org/r/20190308193205.213659-1-dianders@chromium.org
Reported-by: Brian Norris <briannorris@chromium.org> Signed-off-by:
Douglas Anderson <dianders@chromium.org> Signed-off-by: Steven Rostedt
(VMware) <rostedt@goodmis.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedinclude/linux/ring_buffer.h (diff)
The file was modifiedkernel/trace/ring_buffer.c (diff)
The file was modifiedkernel/trace/trace.c (diff)
The file was modifiedkernel/trace/trace_kdb.c (diff)
Commit d1e83bda0c304bc42b44f6219e19530934392970 by gregkh
net/mlx5e: Fix access to non-existing receive queue
[ Upstream commit c475e11e82d16133304321bae285c5c1d4cfc856 ]
In case number of channels is changed while interface is down, RSS
indirection table is mistakenly not modified accordingly, causing access
to out-of-range non-existing object.
Fix by updating the RSS indireciton table also in the early return flow
of interface down.
Fixes: fb35c534b788 ("net/mlx5e: Fix NULL pointer derefernce in set
channels error flow") Fixes: bbeb53b8b2c9 ("net/mlx5e: Move RSS params
to a dedicated struct") Reported-by: Or Gerlitz <ogerlitz@mellanox.com>
Tested-by: Maria Pasechnik <mariap@mellanox.com> Signed-off-by: Tariq
Toukan <tariqt@mellanox.com> Reviewed-by: Eran Ben Elisha
<eranbe@mellanox.com> Signed-off-by: Saeed Mahameed
<saeedm@mellanox.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c (diff)
Commit a1126c2008a321cce067d8ecb882ca6cedca35f4 by gregkh
net/mlx5: Avoid panic when setting vport rate
[ Upstream commit 24319258660a84dd77f4be026a55b10a12524919 ]
If we try to set VFs rate on a VF (not PF) net device, the kernel will
be crash. The commands are show as below:
$ echo 2 > /sys/class/net/$MLX_PF0/device/sriov_numvfs
$ ip link set $MLX_VF0 vf 0 max_tx_rate 2 min_tx_rate 1
If not applied the first patch ("net/mlx5: Avoid panic when setting
vport mac, getting vport config"), the command:
$ ip link set $MLX_VF0 vf 0 rate 100
can also crash the kernel.
[ 1650.006388] RIP: 0010:mlx5_eswitch_set_vport_rate+0x1f/0x260
[mlx5_core]
[ 1650.007092]  do_setlink+0x982/0xd20
[ 1650.007129]  __rtnl_newlink+0x528/0x7d0
[ 1650.007374]  rtnl_newlink+0x43/0x60
[ 1650.007407]  rtnetlink_rcv_msg+0x2a2/0x320
[ 1650.007484]  netlink_rcv_skb+0xcb/0x100
[ 1650.007519]  netlink_unicast+0x17f/0x230
[ 1650.007554]  netlink_sendmsg+0x2d2/0x3d0
[ 1650.007592]  sock_sendmsg+0x36/0x50
[ 1650.007625]  ___sys_sendmsg+0x280/0x2a0
[ 1650.007963]  __sys_sendmsg+0x58/0xa0
[ 1650.007998]  do_syscall_64+0x5b/0x180
[ 1650.009438]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
Fixes: c9497c98901c ("net/mlx5: Add support for setting VF min rate")
Cc: Mohamad Haj Yahia <mohamad@mellanox.com> Signed-off-by: Tonghao
Zhang <xiangxia.m.yue@gmail.com> Reviewed-by: Roi Dayan
<roid@mellanox.com> Acked-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/eswitch.c (diff)
Commit 3cac5ce088c2f9a947f61e05806db7086a52701c by gregkh
net/mlx5: Avoid panic when setting vport mac, getting vport config
[ Upstream commit 6e77c413e8e73d0f36b5358b601389d75ec4451c ]
If we try to set VFs mac address on a VF (not PF) net device, the kernel
will be crash. The commands are show as below:
$ echo 2 > /sys/class/net/$MLX_PF0/device/sriov_numvfs
$ ip link set $MLX_VF0 vf 0 mac 00:11:22:33:44:00
[exception RIP: mlx5_eswitch_set_vport_mac+41]
[ffffb8b7079e3688] do_setlink at ffffffff8f67f85b
[ffffb8b7079e37a8] __rtnl_newlink at ffffffff8f683778
[ffffb8b7079e3b68] rtnl_newlink at ffffffff8f683a63
[ffffb8b7079e3b90] rtnetlink_rcv_msg at ffffffff8f67d812
[ffffb8b7079e3c10] netlink_rcv_skb at ffffffff8f6b88ab
[ffffb8b7079e3c60] netlink_unicast at ffffffff8f6b808f
[ffffb8b7079e3ca0] netlink_sendmsg at ffffffff8f6b8412
[ffffb8b7079e3d18] sock_sendmsg at ffffffff8f6452f6
[ffffb8b7079e3d30] ___sys_sendmsg at ffffffff8f645860
[ffffb8b7079e3eb0] __sys_sendmsg at ffffffff8f647a38
[ffffb8b7079e3f38] do_syscall_64 at ffffffff8f00401b
[ffffb8b7079e3f50] entry_SYSCALL_64_after_hwframe at ffffffff8f80008c
and
[exception RIP: mlx5_eswitch_get_vport_config+12]
[ffffa70607e57678] mlx5e_get_vf_config at ffffffffc03c7f8f [mlx5_core]
[ffffa70607e57688] do_setlink at ffffffffbc67fa59
[ffffa70607e577a8] __rtnl_newlink at ffffffffbc683778
[ffffa70607e57b68] rtnl_newlink at ffffffffbc683a63
[ffffa70607e57b90] rtnetlink_rcv_msg at ffffffffbc67d812
[ffffa70607e57c10] netlink_rcv_skb at ffffffffbc6b88ab
[ffffa70607e57c60] netlink_unicast at ffffffffbc6b808f
[ffffa70607e57ca0] netlink_sendmsg at ffffffffbc6b8412
[ffffa70607e57d18] sock_sendmsg at ffffffffbc6452f6
[ffffa70607e57d30] ___sys_sendmsg at ffffffffbc645860
[ffffa70607e57eb0] __sys_sendmsg at ffffffffbc647a38
[ffffa70607e57f38] do_syscall_64 at ffffffffbc00401b
[ffffa70607e57f50] entry_SYSCALL_64_after_hwframe at ffffffffbc80008c
Fixes: a8d70a054a718 ("net/mlx5: E-Switch, Disallow vlan/spoofcheck
setup if not being esw manager") Cc: Eli Cohen <eli@mellanox.com>
Signed-off-by: Tonghao Zhang <xiangxia.m.yue@gmail.com> Reviewed-by: Roi
Dayan <roid@mellanox.com> Acked-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/eswitch.c (diff)
Commit b48475a66ef541b7550ed62b52f665e81652786d by gregkh
xsk: fix to reject invalid flags in xsk_bind
[ Upstream commit f54ba391d88f5a5d032175b4c308c176e34b80b7 ]
Passing a non-existing flag in the sxdp_flags member of struct
sockaddr_xdp was, incorrectly, silently ignored. This patch addresses
that behavior, and rejects any non-existing flags.
We have examined existing user space code, and to our best knowledge, no
one is relying on the current incorrect behavior. AF_XDP is still in its
infancy, so from our perspective, the risk of breakage is very low, and
addressing this problem now is important.
Fixes: 965a99098443 ("xsk: add support for bind for Rx") Signed-off-by:
Björn Töpel <bjorn.topel@intel.com> Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiednet/xdp/xsk.c (diff)
Commit 90833d08ffa572c51abe91b283f2920c6518bfe6 by gregkh
clk: ti: clkctrl: Fix clkdm_name regression for TI_CLK_CLKCTRL_COMPAT
[ Upstream commit d17a718db40df2548e99a62dc3d7e5e2b38143cc ]
Commit a72d785021cb ("clk: ti: Prepare for remove of OF node name")
changed the code to use kasprintf() for provider->clkdm_name but also
changed the offset used later on by three. We don't need to change the
offset as we already have the extra three characters in the format for
kasprintf with "%pOFnxxx".
This caused the clocks with TI_CLK_CLKCTRL_COMPAT to have NULL
clk->clkdm_name for omap4 and 5. And null clkdm_name can cause module
reset, enable, and idle to fail.
The issue can also be seen also when enabling DEBUG for clkctrl.c and
then we start seeing "clock: could not associate" messages for omap4 and
5 as the generated name is something like "l4_wkclkdm" instead of
"l4_wkup_clkdm" that's needed.
Let's fix the issue with a partial revert of commit a72d785021cb ("clk:
ti: Prepare for remove of OF node name").
ALso note that in general code should not depend on the dts node names.
And the node names should be generic types like clock-domain in this
case. This could be fixed later by using separate compatible properties
for the clockdomains, or by adding soc_device_match() table with reg
offsets to the driver. But let's fix the regression first.
Fixes: a72d785021cb ("clk: ti: Prepare for remove of OF node name") Cc:
Tero Kristo <t-kristo@ti.com> Signed-off-by: Tony Lindgren
<tony@atomide.com> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/clk/ti/clkctrl.c (diff)
Commit c7c82cea6985121dcf82fdab1408cb318f5c7c97 by gregkh
gpio: gpio-omap: fix level interrupt idling
[ Upstream commit d01849f7deba81f4959fd9e51bf20dbf46987d1c ]
Tony notes that the GPIO module does not idle when level interrupts are
in use, as the wakeup appears to get stuck.
After extensive investigation, it appears that the wakeup will only be
cleared if the interrupt status register is cleared while the interrupt
is enabled. However, we are currently clearing it with the interrupt
disabled for level-based interrupts.
It is acknowledged that this observed behaviour conflicts with a
statement in the TRM:
CAUTION
After servicing the interrupt, the status bit in the interrupt status
register (GPIOi.GPIO_IRQSTATUS_0 or GPIOi.GPIO_IRQSTATUS_1) must be
reset and the interrupt line released (by setting the corresponding
bit of the interrupt status register to 1) before enabling an
interrupt for the GPIO channel in the interrupt-enable register
(GPIOi.GPIO_IRQSTATUS_SET_0 or GPIOi.GPIO_IRQSTATUS_SET_1) to prevent
the occurrence of unexpected interrupts when enabling an interrupt
for the GPIO channel.
However, this does not appear to be a practical problem.
Further, as reported by Grygorii Strashko <grygorii.strashko@ti.com>,
the TI Android kernel tree has an earlier similar patch as "GPIO: OMAP:
Fix the sequence to clear the IRQ status" saying:
if the status is cleared after disabling the IRQ then sWAKEUP will not
be cleared and gates the module transition
When we unmask the level interrupt after the interrupt has been handled,
enable the interrupt and only then clear the interrupt. If the interrupt
is still pending, the hardware will re-assert the interrupt status.
Should the caution note in the TRM prove to be a problem, we could use a
clear-enable-clear sequence instead.
Cc: Aaro Koskinen <aaro.koskinen@iki.fi> Cc: Keerthy <j-keerthy@ti.com>
Cc: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by: Russell King
<rmk+kernel@armlinux.org.uk>
[tony@atomide.com: updated comments based on an earlier TI patch]
Signed-off-by: Tony Lindgren <tony@atomide.com> Acked-by: Grygorii
Strashko <grygorii.strashko@ti.com> Signed-off-by: Linus Walleij
<linus.walleij@linaro.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/gpio/gpio-omap.c (diff)
Commit fd9317a3e2a0345b1c559eb997fdcf6435117f8c by gregkh
include/linux/relay.h: fix percpu annotation in struct rchan
[ Upstream commit 62461ac2e5b6520b6d65fc6d7d7b4b8df4b848d8 ]
The percpu member of this structure is declared as:
struct ... ** __percpu member; So its type is:
__percpu pointer to pointer to struct ...
But looking at how it's used, its type should be:
pointer to __percpu pointer to struct ... and it should thus be declared
as:
struct ... * __percpu *member;
So fix the placement of '__percpu' in the definition of this structures.
This silents a few Sparse's warnings like:
warning: incorrect type in initializer (different address spaces)
  expected void const [noderef] <asn:3> *__vpp_verify
  got struct sched_domain **
Link:
http://lkml.kernel.org/r/20190118144902.79065-1-luc.vanoostenryck@gmail.com
Fixes: 017c59c042d01 ("relay: Use per CPU constructs for the relay
channel buffer pointers") Signed-off-by: Luc Van Oostenryck
<luc.vanoostenryck@gmail.com> Cc: Jens Axboe <axboe@suse.de> Cc: Thomas
Gleixner <tglx@linutronix.de> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedinclude/linux/relay.h (diff)
Commit 4e4d49798d865cbc804f16bf8bff0b9a2e69ffc8 by gregkh
sysctl: handle overflow for file-max
[ Upstream commit 32a5ad9c22852e6bd9e74bdec5934ef9d1480bc5 ]
Currently, when writing
  echo 18446744073709551616 > /proc/sys/fs/file-max
/proc/sys/fs/file-max will overflow and be set to 0.  That quickly
crashes the system.
This commit sets the max and min value for file-max.  The max value is
set to long int.  Any higher value cannot currently be used as the
percpu counters are long ints and not unsigned integers.
Note that the file-max value is ultimately parsed via
__do_proc_doulongvec_minmax().  This function does not report error when
min or max are exceeded.  Which means if a value largen that long int is
written userspace will not receive an error instead the old value will
be kept.  There is an argument to be made that this should be changed
and
__do_proc_doulongvec_minmax() should return an error when a dedicated
min or max value are exceeded.  However this has the potential to break
userspace so let's defer this to an RFC patch.
Link:
http://lkml.kernel.org/r/20190107222700.15954-3-christian@brauner.io
Signed-off-by: Christian Brauner <christian@brauner.io> Acked-by: Kees
Cook <keescook@chromium.org> Cc: Alexey Dobriyan <adobriyan@gmail.com>
Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Dominik Brodowski
<linux@dominikbrodowski.net> Cc: "Eric W. Biederman"
<ebiederm@xmission.com> Cc: Joe Lawrence <joe.lawrence@redhat.com> Cc:
Luis Chamberlain <mcgrof@kernel.org> Cc: Waiman Long
<longman@redhat.com>
[christian@brauner.io: v4]
Link:
http://lkml.kernel.org/r/20190210203943.8227-3-christian@brauner.io
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedkernel/sysctl.c (diff)
Commit aaad69802e170f5992557edf8f26a6f708113470 by gregkh
net: stmmac: Avoid sometimes uninitialized Clang warnings
[ Upstream commit df103170854e87124ee7bdd2bca64b178e653f97 ]
When building with -Wsometimes-uninitialized, Clang warns:
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:495:3: warning:
variable 'ns' is used uninitialized whenever 'if' condition is false
[-Wsometimes-uninitialized]
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:495:3: warning:
variable 'ns' is used uninitialized whenever '&&' condition is false
[-Wsometimes-uninitialized]
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:532:3: warning:
variable 'ns' is used uninitialized whenever 'if' condition is false
[-Wsometimes-uninitialized]
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:532:3: warning:
variable 'ns' is used uninitialized whenever '&&' condition is false
[-Wsometimes-uninitialized]
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:741:3: warning:
variable 'sec_inc' is used uninitialized whenever 'if' condition is
false [-Wsometimes-uninitialized]
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c:741:3: warning:
variable 'sec_inc' is used uninitialized whenever '&&' condition is
false [-Wsometimes-uninitialized]
Clang is concerned with the use of stmmac_do_void_callback (which
stmmac_get_timestamp and stmmac_config_sub_second_increment wrap), as it
may fail to initialize these values if the if condition was ever false
(meaning the callbacks don't exist). It's not wrong because the
callbacks (get_timestamp and config_sub_second_increment respectively)
are the ones that initialize the variables. While it's unlikely that the
callbacks are ever going to disappear and make that condition false, we
can easily avoid this warning by zero initialize the variables.
Link: https://github.com/ClangBuiltLinux/linux/issues/384 Suggested-by:
Nick Desaulniers <ndesaulniers@google.com> Reviewed-by: Nick Desaulniers
<ndesaulniers@google.com> Signed-off-by: Nathan Chancellor
<natechancellor@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/stmmac_main.c (diff)
Commit 267f65c94fb7bd962e9b2e7dd5f009c934100d24 by gregkh
enic: fix build warning without CONFIG_CPUMASK_OFFSTACK
[ Upstream commit 43d281662fdb46750d49417559b71069f435298d ]
The enic driver relies on the CONFIG_CPUMASK_OFFSTACK feature to
dynamically allocate a struct member, but this is normally intended for
local variables.
Building with clang, I get a warning for a few locations that check the
address of the cpumask_var_t:
drivers/net/ethernet/cisco/enic/enic_main.c:122:22: error: address of
array 'enic->msix[i].affinity_mask' will always evaluate to 'true'
[-Werror,-Wpointer-bool-conversion]
As far as I can tell, the code is still correct, as the truth value of
the pointer is what we need in this configuration. To get rid of the
warning, use cpumask_available() instead of checking the pointer
directly.
Fixes: 322cf7e3a4e8 ("enic: assign affinity hint to interrupts")
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Nathan
Chancellor <natechancellor@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/net/ethernet/cisco/enic/enic_main.c (diff)
Commit c5021aa17b05c584b3c7aacde59fc5727fa97ce4 by gregkh
libbpf: force fixdep compilation at the start of the build
[ Upstream commit 8e2688876c7f7073d925e1f150e86b8ed3338f52 ]
libbpf targets don't explicitly depend on fixdep target, so when we do
'make -j$(nproc)', there is a high probability, that some objects will
be built before fixdep binary is available.
Fix this by running sub-make; this makes sure that fixdep dependency is
properly accounted for.
For the same issue in perf, see commit abb26210a395 ("perf tools: Force
fixdep compilation at the start of the build").
Before:
$ rm -rf /tmp/bld; mkdir /tmp/bld; make -j$(nproc) O=/tmp/bld -C
tools/lib/bpf/
Auto-detecting system features:
...                        libelf: [ on  ]
...                           bpf: [ on  ]
  HOSTCC   /tmp/bld/fixdep.o
CC       /tmp/bld/libbpf.o
CC       /tmp/bld/bpf.o
CC       /tmp/bld/btf.o
CC       /tmp/bld/nlattr.o
CC       /tmp/bld/libbpf_errno.o
CC       /tmp/bld/str_error.o
CC       /tmp/bld/netlink.o
CC       /tmp/bld/bpf_prog_linfo.o
CC       /tmp/bld/libbpf_probes.o
CC       /tmp/bld/xsk.o
HOSTLD   /tmp/bld/fixdep-in.o
LINK     /tmp/bld/fixdep
LD       /tmp/bld/libbpf-in.o
LINK     /tmp/bld/libbpf.a
LINK     /tmp/bld/libbpf.so
LINK     /tmp/bld/test_libbpf
$ head /tmp/bld/.libbpf.o.cmd
# cannot find fixdep (/usr/local/google/home/sdf/src/linux/xxx//fixdep)
# using basic dep data
/tmp/bld/libbpf.o: libbpf.c /usr/include/stdc-predef.h \
/usr/include/stdlib.h /usr/include/features.h \
/usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
/usr/include/x86_64-linux-gnu/gnu/stubs.h \
/usr/include/x86_64-linux-gnu/gnu/stubs-64.h \
/usr/lib/gcc/x86_64-linux-gnu/7/include/stddef.h \
After:
$ rm -rf /tmp/bld; mkdir /tmp/bld; make -j$(nproc) O=/tmp/bld -C
tools/lib/bpf/
Auto-detecting system features:
...                        libelf: [ on  ]
...                           bpf: [ on  ]
  HOSTCC   /tmp/bld/fixdep.o
HOSTLD   /tmp/bld/fixdep-in.o
LINK     /tmp/bld/fixdep
CC       /tmp/bld/libbpf.o
CC       /tmp/bld/bpf.o
CC       /tmp/bld/nlattr.o
CC       /tmp/bld/btf.o
CC       /tmp/bld/libbpf_errno.o
CC       /tmp/bld/str_error.o
CC       /tmp/bld/netlink.o
CC       /tmp/bld/bpf_prog_linfo.o
CC       /tmp/bld/libbpf_probes.o
CC       /tmp/bld/xsk.o
LD       /tmp/bld/libbpf-in.o
LINK     /tmp/bld/libbpf.a
LINK     /tmp/bld/libbpf.so
LINK     /tmp/bld/test_libbpf
$ head /tmp/bld/.libbpf.o.cmd cmd_/tmp/bld/libbpf.o := gcc
-Wp,-MD,/tmp/bld/.libbpf.o.d -Wp,-MT,/tmp/bld/libbpf.o -g -Wall
-DHAVE_LIBELF_MMAP_SUPPORT -DCOMPAT_NEED_REALLOCARRAY
-Wbad-function-cast -Wdeclaration-after-statement -Wformat-security
-Wformat-y2k -Winit-self -Wmissing-declarations -Wmissing-prototypes
-Wnested-externs -Wno-system-headers -Wold-style-definition -Wpacked
-Wredundant-decls -Wshadow -Wstrict-prototypes -Wswitch-default
-Wswitch-enum -Wundef -Wwrite-strings -Wformat -Wstrict-aliasing=3
-Werror -Wall -fPIC -I.
-I/usr/local/google/home/sdf/src/linux/tools/include
-I/usr/local/google/home/sdf/src/linux/tools/arch/x86/include/uapi
-I/usr/local/google/home/sdf/src/linux/tools/include/uapi
-fvisibility=hidden -D"BUILD_STR(s)=$(pound)s" -c -o /tmp/bld/libbpf.o
libbpf.c
source_/tmp/bld/libbpf.o := libbpf.c
deps_/tmp/bld/libbpf.o := \
/usr/include/stdc-predef.h \
/usr/include/stdlib.h \
/usr/include/features.h \
/usr/include/x86_64-linux-gnu/sys/cdefs.h \
/usr/include/x86_64-linux-gnu/bits/wordsize.h \
Fixes: 7c422f557266 ("tools build: Build fixdep helper from perf and
basic libs") Reported-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Stanislav Fomichev <sdf@google.com> Acked-by: Yonghong
Song <yhs@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedtools/lib/bpf/Makefile (diff)
Commit 776de12b9f8f28a8bee3ef4421684eadb327e723 by gregkh
scsi: hisi_sas: Set PHY linkrate when disconnected
[ Upstream commit efdcad62e7b8a02fcccc5ccca57806dce1482ac8 ]
When the PHY comes down, we currently do not set the negotiated
linkrate:
root@(none)$ pwd
/sys/class/sas_phy/phy-0:0 root@(none)$ more enable 1 root@(none)$ more
negotiated_linkrate 12.0 Gbit root@(none)$ echo 0 > enable root@(none)$
more negotiated_linkrate 12.0 Gbit root@(none)$
This patch fixes the driver code to set it properly when the PHY comes
down.
If the PHY had been enabled, then set unknown; otherwise, flag as
disabled.
The logical place to set the negotiated linkrate for this scenario is
PHY down routine, which is called from the PHY down ISR.
However, it is not possible to know if the PHY comes down due to PHY
disable or loss of link, as sas_phy.enabled member is not set until
after the transport disable routine is complete, which races with the
PHY down ISR.
As an imperfect solution, use sas_phy_data.enable as the flag to know if
the PHY is down due to disable. It's imperfect, as sas_phy_data is
internal to libsas.
I can't see another way without adding a new field to hisi_sas_phy and
managing it, or changing SCSI SAS transport.
Signed-off-by: John Garry <john.garry@huawei.com> Signed-off-by: Martin
K. Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/scsi/hisi_sas/hisi_sas_main.c (diff)
Commit 86aad65625cf244a672904c4ac4361c15f820384 by gregkh
scsi: hisi_sas: Fix a timeout race of driver internal and SMP IO
[ Upstream commit 4790595723d4b833b18c994973d39f9efb842887 ]
For internal IO and SMP IO, there is a time-out timer for them. In the
timer handler, it checks whether IO is done according to the flag
task->task_state_lock.
There is an issue which may cause system suspended: internal IO or SMP
IO is sent, but at that time because of hardware exception (such as
inject 2Bit ECC error), so IO is not completed and also not timeout.
But, at that time, the SAS controller reset occurs to recover system. It
will release the resource and set the status of IO to be
SAS_TASK_STATE_DONE, so when IO timeout, it will never complete the
completion of IO and wait for ever.
[  729.123632] Call trace:
[  729.126791] [<ffff00000808655c>] __switch_to+0x94/0xa8
[  729.133106] [<ffff000008d96e98>] __schedule+0x1e8/0x7fc
[  729.138975] [<ffff000008d974e0>] schedule+0x34/0x8c
[  729.144401] [<ffff000008d9b000>] schedule_timeout+0x1d8/0x3cc
[  729.150690] [<ffff000008d98218>] wait_for_common+0xdc/0x1a0
[  729.157101] [<ffff000008d98304>] wait_for_completion+0x28/0x34
[  729.165973] [<ffff000000dcefb4>]
hisi_sas_internal_task_abort+0x2a0/0x424 [hisi_sas_test_main]
[  729.176447] [<ffff000000dd18f4>] hisi_sas_abort_task+0x244/0x2d8
[hisi_sas_test_main]
[  729.185258] [<ffff000008971714>] sas_eh_handle_sas_errors+0x1c8/0x7b8
[  729.192391] [<ffff000008972774>] sas_scsi_recover_host+0x130/0x398
[  729.199237] [<ffff00000894d8a8>] scsi_error_handler+0x148/0x5c0
[  729.206009] [<ffff0000080f4118>] kthread+0x10c/0x138
[  729.211563] [<ffff0000080855dc>] ret_from_fork+0x10/0x18
To solve the issue, callback function task_done of those IOs need to be
called when on SAS controller reset.
Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com> Signed-off-by:
John Garry <john.garry@huawei.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/scsi/hisi_sas/hisi_sas_main.c (diff)
Commit 34555ccacf94a0c677b8bc658b67e7866a530bef by gregkh
iio: adc: fix warning in Qualcomm PM8xxx HK/XOADC driver
[ Upstream commit e0f0ae838a25464179d37f355d763f9ec139fc15 ]
The pm8xxx_get_channel() implementation is unclear, and causes gcc to
suddenly generate odd warnings.  The trigger for the warning (at least
for me) was the entirely unrelated commit 79a4e91d1bb2 ("device.h: Add
__cold to dev_<level> logging functions"), which apparently changes gcc
code generation in the caller function enough to cause this:
  drivers/iio/adc/qcom-pm8xxx-xoadc.c: In function ‘pm8xxx_xoadc_probe’:
drivers/iio/adc/qcom-pm8xxx-xoadc.c:633:8: warning: ‘ch’ may be used
uninitialized in this function [-Wmaybe-uninitialized]
   ret = pm8xxx_read_channel_rsv(adc, ch, AMUX_RSV4,
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            &read_nomux_rsv4, true);
            ~~~~~~~~~~~~~~~~~~~~~~~
drivers/iio/adc/qcom-pm8xxx-xoadc.c:426:27: note: ‘ch’ was declared
here
   struct pm8xxx_chan_info *ch;
                            ^~
because gcc for some reason then isn't able to see that the termination
condition for the "for( )" loop in that function is also the condition
for returning NULL.
So it's not _actually_ uninitialized, but the function is admittedly
just unnecessarily oddly written.
Simplify and clarify the function, making gcc also see that it always
returns a valid initialized value.
Cc: Joe Perches <joe@perches.com> Cc: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: Andy Gross <andy.gross@linaro.org> Cc:
David Brown <david.brown@linaro.org> Cc: Jonathan Cameron
<jic23@kernel.org> Cc: Hartmut Knaack <knaack.h@gmx.de> Cc: Lars-Peter
Clausen <lars@metafoo.de> Cc: Peter Meerwald-Stadler <pmeerw@pmeerw.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/iio/adc/qcom-pm8xxx-xoadc.c (diff)
Commit 11304c4b4ee411ed53c3e3cc0e689610910faeb7 by gregkh
x86/hyperv: Fix kernel panic when kexec on HyperV
[ Upstream commit 179fb36abb097976997f50733d5b122a29158cba ]
After commit 68bb7bfb7985 ("X86/Hyper-V: Enable IPI enlightenments"),
kexec fails with a kernel panic:
kexec_core: Starting new kernel BUG: unable to handle kernel NULL
pointer dereference at 0000000000000000 Hardware name: Microsoft
Corporation Virtual Machine/Virtual Machine, BIOS Hyper-V UEFI Release
v3.0 03/02/2018 RIP: 0010:0xffffc9000001d000
Call Trace:
? __send_ipi_mask+0x1c6/0x2d0
? hv_send_ipi_mask_allbutself+0x6d/0xb0
? mp_save_irq+0x70/0x70
? __ioapic_read_entry+0x32/0x50
? ioapic_read_entry+0x39/0x50
? clear_IO_APIC_pin+0xb8/0x110
? native_stop_other_cpus+0x6e/0x170
? native_machine_shutdown+0x22/0x40
? kernel_kexec+0x136/0x156
That happens if hypercall based IPIs are used because the hypercall page
is reset very early upon kexec reboot, but kexec sends IPIs to stop
CPUs, which invokes the hypercall and dereferences the unusable page.
To fix his, reset hv_hypercall_pg to NULL before the page is reset to
avoid any misuse, IPI sending will fall back to the non hypercall based
method. This only happens on kexec / kdump so just setting the pointer
to NULL is good enough.
Fixes: 68bb7bfb7985 ("X86/Hyper-V: Enable IPI enlightenments")
Signed-off-by: Kairui Song <kasong@redhat.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Cc: "K. Y. Srinivasan" <kys@microsoft.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com> Cc: Stephen Hemminger
<sthemmin@microsoft.com> Cc: Sasha Levin <sashal@kernel.org> Cc:
Borislav Petkov <bp@alien8.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc:
Vitaly Kuznetsov <vkuznets@redhat.com> Cc: Dave Young
<dyoung@redhat.com> Cc: devel@linuxdriverproject.org Link:
https://lkml.kernel.org/r/20190306111827.14131-1-kasong@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedarch/x86/hyperv/hv_init.c (diff)
Commit 60c86431ca4cf8245a76c30f3b865929e9e692c9 by gregkh
perf c2c: Fix c2c report for empty numa node
[ Upstream commit e34c940245437f36d2c492edd1f8237eff391064 ]
Ravi Bangoria reported that we fail with an empty NUMA node with the
following message:
  $ lscpu
NUMA node0 CPU(s):
NUMA node1 CPU(s):   0-4
  $ sudo ./perf c2c report
node/cpu topology bugFailed setup nodes
Fix this by detecting the empty node and keeping its CPU set empty.
Reported-by: Nageswara R Sastry <nasastry@in.ibm.com> Signed-off-by:
Jiri Olsa <jolsa@kernel.org> Tested-by: Ravi Bangoria
<ravi.bangoria@linux.ibm.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jonas Rabenstein <jonas.rabenstein@studium.uni-erlangen.de> Cc:
Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra
<peterz@infradead.org> Link:
http://lkml.kernel.org/r/20190305152536.21035-2-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/builtin-c2c.c (diff)
Commit 90a70109697c5f66d19934dc22ed3ab788c03705 by gregkh
mm/sparse: fix a bad comparison
[ Upstream commit d778015ac95bc036af73342c878ab19250e01fe1 ]
next_present_section_nr() could only return an unsigned number -1, so
just check it specifically where compilers will convert -1 to unsigned
if needed.
  mm/sparse.c: In function 'sparse_init_nid':
mm/sparse.c:200:20: warning: comparison of unsigned expression >= 0 is
always true [-Wtype-limits]
        ((section_nr >= 0) &&    \
                     ^~
mm/sparse.c:478:2: note: in expansion of macro
'for_each_present_section_nr'
   for_each_present_section_nr(pnum_begin, pnum) {
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
mm/sparse.c:200:20: warning: comparison of unsigned expression >= 0 is
always true [-Wtype-limits]
        ((section_nr >= 0) &&    \
                     ^~
mm/sparse.c:497:2: note: in expansion of macro
'for_each_present_section_nr'
   for_each_present_section_nr(pnum_begin, pnum) {
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
mm/sparse.c: In function 'sparse_init':
mm/sparse.c:200:20: warning: comparison of unsigned expression >= 0 is
always true [-Wtype-limits]
        ((section_nr >= 0) &&    \
                     ^~
mm/sparse.c:520:2: note: in expansion of macro
'for_each_present_section_nr'
   for_each_present_section_nr(pnum_begin + 1, pnum_end) {
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Link: http://lkml.kernel.org/r/20190228181839.86504-1-cai@lca.pw Fixes:
c4e1be9ec113 ("mm, sparsemem: break out of loops early") Signed-off-by:
Qian Cai <cai@lca.pw> Reviewed-by: Andrew Morton
<akpm@linux-foundation.org> Cc: Dave Hansen
<dave.hansen@linux.intel.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedmm/sparse.c (diff)
Commit 93b7ebef7ee3f95e27d67c6e9fb5ab363de05e5a by gregkh
mm/cma.c: cma_declare_contiguous: correct err handling
[ Upstream commit 0d3bd18a5efd66097ef58622b898d3139790aa9d ]
In case cma_init_reserved_mem failed, need to free the memblock
allocated by memblock_reserve or memblock_alloc_range.
Quote Catalin's comments:
https://lkml.org/lkml/2019/2/26/482
Kmemleak is supposed to work with the memblock_{alloc,free} pair and it
ignores the memblock_reserve() as a memblock_alloc() implementation
detail. It is, however, tolerant to memblock_free() being called on a
sub-range or just a different range from a previous memblock_alloc(). So
the original patch looks fine to me. FWIW:
Link: http://lkml.kernel.org/r/20190227144631.16708-1-peng.fan@nxp.com
Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Catalin Marinas
<catalin.marinas@arm.com> Reviewed-by: Mike Rapoport
<rppt@linux.ibm.com> Cc: Laura Abbott <labbott@redhat.com> Cc: Joonsoo
Kim <iamjoonsoo.kim@lge.com> Cc: Michal Hocko <mhocko@suse.com> Cc:
Vlastimil Babka <vbabka@suse.cz> Cc: Marek Szyprowski
<m.szyprowski@samsung.com> Cc: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedmm/cma.c (diff)
Commit 57f5b77e9f46dfb9a15f2bf63eed140ef55738f1 by gregkh
mm/page_ext.c: fix an imbalance with kmemleak
[ Upstream commit 0c81585499601acd1d0e1cbf424cabfaee60628c ]
After offlining a memory block, kmemleak scan will trigger a crash, as
it encounters a page ext address that has already been freed during
memory offlining.  At the beginning in alloc_page_ext(), it calls
kmemleak_alloc(), but it does not call kmemleak_free() in
free_page_ext().
    BUG: unable to handle kernel paging request at ffff888453d00000
   PGD 128a01067 P4D 128a01067 PUD 128a04067 PMD 47e09e067 PTE
800ffffbac2ff060
   Oops: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI
   CPU: 1 PID: 1594 Comm: bash Not tainted 5.0.0-rc8+ #15
   Hardware name: HP ProLiant DL180 Gen9/ProLiant DL180 Gen9, BIOS U20
10/25/2017
   RIP: 0010:scan_block+0xb5/0x290
   Code: 85 6e 01 00 00 48 b8 00 00 30 f5 81 88 ff ff 48 39 c3 0f 84 5b
01 00 00 48 89 d8 48 c1 e8 03 42 80 3c 20 00 0f 85 87 01 00 00 <4c> 8b
3b e8 f3 0c fa ff 4c 39 3d 0c 6b 4c 01 0f 87 08 01 00 00 4c
   RSP: 0018:ffff8881ec57f8e0 EFLAGS: 00010082
   RAX: 0000000000000000 RBX: ffff888453d00000 RCX: ffffffffa61e5a54
   RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffff888453d00000
   RBP: ffff8881ec57f920 R08: fffffbfff4ed588d R09: fffffbfff4ed588c
   R10: fffffbfff4ed588c R11: ffffffffa76ac463 R12: dffffc0000000000
   R13: ffff888453d00ff9 R14: ffff8881f80cef48 R15: ffff8881f80cef48
   FS:  00007f6c0e3f8740(0000) GS:ffff8881f7680000(0000)
knlGS:0000000000000000
   CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
   CR2: ffff888453d00000 CR3: 00000001c4244003 CR4: 00000000001606a0
   Call Trace:
    scan_gray_list+0x269/0x430
    kmemleak_scan+0x5a8/0x10f0
    kmemleak_write+0x541/0x6ca
    full_proxy_write+0xf8/0x190
    __vfs_write+0xeb/0x980
    vfs_write+0x15a/0x4f0
    ksys_write+0xd2/0x1b0
    __x64_sys_write+0x73/0xb0
    do_syscall_64+0xeb/0xaaa
    entry_SYSCALL_64_after_hwframe+0x44/0xa9
   RIP: 0033:0x7f6c0dad73b8
   Code: 89 02 48 c7 c0 ff ff ff ff eb b3 0f 1f 80 00 00 00 00 f3 0f 1e
fa 48 8d 05 65 63 2d 00 8b 00 85 c0 75 17 b8 01 00 00 00 0f 05 <48> 3d
00 f0 ff ff 77 58 c3 0f 1f 80 00 00 00 00 41 54 49 89 d4 55
   RSP: 002b:00007ffd5b863cb8 EFLAGS: 00000246 ORIG_RAX:
0000000000000001
   RAX: ffffffffffffffda RBX: 0000000000000005 RCX: 00007f6c0dad73b8
   RDX: 0000000000000005 RSI: 000055a9216e1710 RDI: 0000000000000001
   RBP: 000055a9216e1710 R08: 000000000000000a R09: 00007ffd5b863840
   R10: 000000000000000a R11: 0000000000000246 R12: 00007f6c0dda9780
   R13: 0000000000000005 R14: 00007f6c0dda4740 R15: 0000000000000005
   Modules linked in: nls_iso8859_1 nls_cp437 vfat fat kvm_intel kvm
irqbypass efivars ip_tables x_tables xfs sd_mod ahci libahci igb
i2c_algo_bit libata i2c_core dm_mirror dm_region_hash dm_log dm_mod
efivarfs
   CR2: ffff888453d00000
   ---[ end trace ccf646c7456717c5 ]---
   Kernel panic - not syncing: Fatal exception
   Shutting down cpus with NMI
   Kernel Offset: 0x24c00000 from 0xffffffff81000000 (relocation range:
   0xffffffff80000000-0xffffffffbfffffff)
   ---[ end Kernel panic - not syncing: Fatal exception ]---
Link: http://lkml.kernel.org/r/20190227173147.75650-1-cai@lca.pw
Signed-off-by: Qian Cai <cai@lca.pw> Reviewed-by: Catalin Marinas
<catalin.marinas@arm.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedmm/page_ext.c (diff)
Commit 34fa723765cfb43a03ab33a4e7739e3280a88416 by gregkh
mm, swap: bounds check swap_info array accesses to avoid NULL derefs
[ Upstream commit c10d38cc8d3e43f946b6c2bf4602c86791587f30 ]
Dan Carpenter reports a potential NULL dereference in
get_swap_page_of_type:
  Smatch complains that the NULL checks on "si" aren't consistent.  This
seems like a real bug because we have not ensured that the type is
valid and so "si" can be NULL.
Add the missing check for NULL, taking care to use a read barrier to
ensure CPU1 observes CPU0's updates in the correct order:
     CPU0                           CPU1
    alloc_swap_info()              if (type >= nr_swapfiles)
      swap_info[type] = p              /* handle invalid entry */
      smp_wmb()                    smp_rmb()
      ++nr_swapfiles               p = swap_info[type]
Without smp_rmb, CPU1 might observe CPU0's write to nr_swapfiles before
CPU0's write to swap_info[type] and read NULL from swap_info[type].
Ying Huang noticed other places in swapfile.c don't order these reads
properly.  Introduce swap_type_to_swap_info to encourage correct usage.
Use READ_ONCE and WRITE_ONCE to follow the Linux Kernel Memory Model
(see tools/memory-model/Documentation/explanation.txt).
This ordering need not be enforced in places where swap_lock is held
(e.g.  si_swapinfo) because swap_lock serializes updates to nr_swapfiles
and the swap_info array.
Link:
http://lkml.kernel.org/r/20190131024410.29859-1-daniel.m.jordan@oracle.com
Fixes: ec8acf20afb8 ("swap: add per-partition lock for swapfile")
Signed-off-by: Daniel Jordan <daniel.m.jordan@oracle.com> Reported-by:
Dan Carpenter <dan.carpenter@oracle.com> Suggested-by: "Huang, Ying"
<ying.huang@intel.com> Reviewed-by: Andrea Parri
<andrea.parri@amarulasolutions.com> Acked-by: Peter Zijlstra (Intel)
<peterz@infradead.org> Cc: Alan Stern <stern@rowland.harvard.edu> Cc:
Andi Kleen <ak@linux.intel.com> Cc: Dave Hansen
<dave.hansen@linux.intel.com> Cc: Omar Sandoval <osandov@fb.com> Cc:
Paul McKenney <paulmck@linux.vnet.ibm.com> Cc: Shaohua Li
<shli@kernel.org> Cc: Stephen Rothwell <sfr@canb.auug.org.au> Cc: Tejun
Heo <tj@kernel.org> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedmm/swapfile.c (diff)
Commit 66a4d4d03b7eff1f24a0d0ad643c4e1deb40909a by gregkh
docs/core-api/mm: fix user memory accessors formatting
[ Upstream commit bc8ff3ca6589d63c6d10f5ee8bed38f74851b469 ]
The descriptions of userspace memory access functions had minor issues
with formatting that made kernel-doc unable to properly detect the
function/macro names and the return value sections:
./arch/x86/include/asm/uaccess.h:80: info: Scanning doc for
./arch/x86/include/asm/uaccess.h:139: info: Scanning doc for
./arch/x86/include/asm/uaccess.h:231: info: Scanning doc for
./arch/x86/include/asm/uaccess.h:505: info: Scanning doc for
./arch/x86/include/asm/uaccess.h:530: info: Scanning doc for
./arch/x86/lib/usercopy_32.c:58: info: Scanning doc for
./arch/x86/lib/usercopy_32.c:69: warning: No description found for
return value of 'clear_user'
./arch/x86/lib/usercopy_32.c:78: info: Scanning doc for
./arch/x86/lib/usercopy_32.c:90: warning: No description found for
return value of '__clear_user'
Fix the formatting.
Link:
http://lkml.kernel.org/r/1549549644-4903-3-git-send-email-rppt@linux.ibm.com
Signed-off-by: Mike Rapoport <rppt@linux.ibm.com> Reviewed-by: Andrew
Morton <akpm@linux-foundation.org> Cc: Jonathan Corbet <corbet@lwn.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedarch/x86/include/asm/uaccess.h (diff)
The file was modifiedarch/x86/lib/usercopy_32.c (diff)
Commit db5d8675b14afa4081360972571aa7c071266542 by gregkh
mm,oom: don't kill global init via memory.oom.group
[ Upstream commit d342a0b38674867ea67fde47b0e1e60ffe9f17a2 ]
Since setting global init process to some memory cgroup is technically
possible, oom_kill_memcg_member() must check it.
  Tasks in /test1 are going to be killed due to memory.oom.group set
Memory cgroup out of memory: Killed process 1 (systemd)
total-vm:43400kB, anon-rss:1228kB, file-rss:3992kB, shmem-rss:0kB
oom_reaper: reaped process 1 (systemd), now anon-rss:0kB, file-rss:0kB,
shmem-rss:0kB
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000008b
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
static char buffer[10485760];
static int pipe_fd[2] = { EOF, EOF };
unsigned int i;
int fd;
char buf[64] = { };
if (pipe(pipe_fd))
return 1;
if (chdir("/sys/fs/cgroup/"))
return 1;
fd = open("cgroup.subtree_control", O_WRONLY);
write(fd, "+memory", 7);
close(fd);
mkdir("test1", 0755);
fd = open("test1/memory.oom.group", O_WRONLY);
write(fd, "1", 1);
close(fd);
fd = open("test1/cgroup.procs", O_WRONLY);
write(fd, "1", 1);
snprintf(buf, sizeof(buf) - 1, "%d", getpid());
write(fd, buf, strlen(buf));
close(fd);
snprintf(buf, sizeof(buf) - 1, "%lu", sizeof(buffer) * 5);
fd = open("test1/memory.max", O_WRONLY);
write(fd, buf, strlen(buf));
close(fd);
for (i = 0; i < 10; i++)
if (fork() == 0) {
char c;
close(pipe_fd[1]);
read(pipe_fd[0], &c, 1);
memset(buffer, 0, sizeof(buffer));
sleep(3);
_exit(0);
}
close(pipe_fd[0]);
close(pipe_fd[1]);
sleep(3);
return 0;
}
[   37.052923][ T9185] a.out invoked oom-killer:
gfp_mask=0xcc0(GFP_KERNEL), order=0, oom_score_adj=0
[   37.056169][ T9185] CPU: 4 PID: 9185 Comm: a.out Kdump: loaded Not
tainted 5.0.0-rc4-next-20190131 #280
[   37.059205][ T9185] Hardware name: VMware, Inc. VMware Virtual
Platform/440BX Desktop Reference Platform, BIOS 6.00 04/13/2018
[   37.062954][ T9185] Call Trace:
[   37.063976][ T9185]  dump_stack+0x67/0x95
[   37.065263][ T9185]  dump_header+0x51/0x570
[   37.066619][ T9185]  ? trace_hardirqs_on+0x3f/0x110
[   37.068171][ T9185]  ? _raw_spin_unlock_irqrestore+0x3d/0x70
[   37.069967][ T9185]  oom_kill_process+0x18d/0x210
[   37.071515][ T9185]  out_of_memory+0x11b/0x380
[   37.072936][ T9185]  mem_cgroup_out_of_memory+0xb6/0xd0
[   37.074601][ T9185]  try_charge+0x790/0x820
[   37.076021][ T9185]  mem_cgroup_try_charge+0x42/0x1d0
[   37.077629][ T9185]  mem_cgroup_try_charge_delay+0x11/0x30
[   37.079370][ T9185]  do_anonymous_page+0x105/0x5e0
[   37.080939][ T9185]  __handle_mm_fault+0x9cb/0x1070
[   37.082485][ T9185]  handle_mm_fault+0x1b2/0x3a0
[   37.083819][ T9185]  ? handle_mm_fault+0x47/0x3a0
[   37.085181][ T9185]  __do_page_fault+0x255/0x4c0
[   37.086529][ T9185]  do_page_fault+0x28/0x260
[   37.087788][ T9185]  ? page_fault+0x8/0x30
[   37.088978][ T9185]  page_fault+0x1e/0x30
[   37.090142][ T9185] RIP: 0033:0x7f8b183aefe0
[   37.091433][ T9185] Code: 20 f3 44 0f 7f 44 17 d0 f3 44 0f 7f 47 30
f3 44 0f 7f 44 17 c0 48 01 fa 48 83 e2 c0 48 39 d1 74 a3 66 0f 1f 84 00
00 00 00 00 <66> 44 0f 7f 01 66 44 0f 7f 41 10 66 44 0f 7f 41 20 66 44
0f 7f 41
[   37.096917][ T9185] RSP: 002b:00007fffc5d329e8 EFLAGS: 00010206
[   37.098615][ T9185] RAX: 00000000006010e0 RBX: 0000000000000008 RCX:
0000000000c30000
[   37.100905][ T9185] RDX: 00000000010010c0 RSI: 0000000000000000 RDI:
00000000006010e0
[   37.103349][ T9185] RBP: 0000000000000000 R08: 00007f8b188f4740 R09:
0000000000000000
[   37.105797][ T9185] R10: 00007fffc5d32420 R11: 00007f8b183aef40 R12:
0000000000000005
[   37.108228][ T9185] R13: 0000000000000000 R14: ffffffffffffffff R15:
0000000000000000
[   37.110840][ T9185] memory: usage 51200kB, limit 51200kB, failcnt 125
[   37.113045][ T9185] memory+swap: usage 0kB, limit 9007199254740988kB,
failcnt 0
[   37.115808][ T9185] kmem: usage 0kB, limit 9007199254740988kB,
failcnt 0
[   37.117660][ T9185] Memory cgroup stats for /test1: cache:0KB
rss:49484KB rss_huge:30720KB shmem:0KB mapped_file:0KB dirty:0KB
writeback:0KB inactive_anon:0KB active_anon:49700KB inactive_file:0KB
active_file:0KB unevictable:0KB
[   37.123371][ T9185]
oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0,oom_memcg=/test1,task_memcg=/test1,task=a.out,pid=9188,uid=0
[   37.128158][ T9185] Memory cgroup out of memory: Killed process 9188
(a.out) total-vm:14456kB, anon-rss:10324kB, file-rss:504kB,
shmem-rss:0kB
[   37.132710][ T9185] Tasks in /test1 are going to be killed due to
memory.oom.group set
[   37.132833][   T54] oom_reaper: reaped process 9188 (a.out), now
anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[   37.135498][ T9185] Memory cgroup out of memory: Killed process 1
(systemd) total-vm:43400kB, anon-rss:1228kB, file-rss:3992kB,
shmem-rss:0kB
[   37.143434][ T9185] Memory cgroup out of memory: Killed process 9182
(a.out) total-vm:14456kB, anon-rss:76kB, file-rss:588kB, shmem-rss:0kB
[   37.144328][   T54] oom_reaper: reaped process 1 (systemd), now
anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[   37.147585][ T9185] Memory cgroup out of memory: Killed process 9183
(a.out) total-vm:14456kB, anon-rss:6228kB, file-rss:512kB, shmem-rss:0kB
[   37.157222][ T9185] Memory cgroup out of memory: Killed process 9184
(a.out) total-vm:14456kB, anon-rss:6228kB, file-rss:508kB, shmem-rss:0kB
[   37.157259][ T9185] Memory cgroup out of memory: Killed process 9185
(a.out) total-vm:14456kB, anon-rss:6228kB, file-rss:512kB, shmem-rss:0kB
[   37.157291][ T9185] Memory cgroup out of memory: Killed process 9186
(a.out) total-vm:14456kB, anon-rss:4180kB, file-rss:508kB, shmem-rss:0kB
[   37.157306][   T54] oom_reaper: reaped process 9183 (a.out), now
anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[   37.157328][ T9185] Memory cgroup out of memory: Killed process 9187
(a.out) total-vm:14456kB, anon-rss:4180kB, file-rss:512kB, shmem-rss:0kB
[   37.157452][ T9185] Memory cgroup out of memory: Killed process 9189
(a.out) total-vm:14456kB, anon-rss:6228kB, file-rss:512kB, shmem-rss:0kB
[   37.158733][ T9185] Memory cgroup out of memory: Killed process 9190
(a.out) total-vm:14456kB, anon-rss:552kB, file-rss:512kB, shmem-rss:0kB
[   37.160083][   T54] oom_reaper: reaped process 9186 (a.out), now
anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[   37.160187][   T54] oom_reaper: reaped process 9189 (a.out), now
anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[   37.206941][   T54] oom_reaper: reaped process 9185 (a.out), now
anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[   37.212300][ T9185] Memory cgroup out of memory: Killed process 9191
(a.out) total-vm:14456kB, anon-rss:4180kB, file-rss:512kB, shmem-rss:0kB
[   37.212317][   T54] oom_reaper: reaped process 9190 (a.out), now
anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[   37.218860][ T9185] Memory cgroup out of memory: Killed process 9192
(a.out) total-vm:14456kB, anon-rss:1080kB, file-rss:512kB, shmem-rss:0kB
[   37.227667][   T54] oom_reaper: reaped process 9192 (a.out), now
anon-rss:0kB, file-rss:0kB, shmem-rss:0kB
[   37.292323][ T9193] abrt-hook-ccpp (9193) used greatest stack depth:
10480 bytes left
[   37.351843][    T1] Kernel panic - not syncing: Attempted to kill
init! exitcode=0x0000008b
[   37.354833][    T1] CPU: 7 PID: 1 Comm: systemd Kdump: loaded Not
tainted 5.0.0-rc4-next-20190131 #280
[   37.357876][    T1] Hardware name: VMware, Inc. VMware Virtual
Platform/440BX Desktop Reference Platform, BIOS 6.00 04/13/2018
[   37.361685][    T1] Call Trace:
[   37.363239][    T1]  dump_stack+0x67/0x95
[   37.365010][    T1]  panic+0xfc/0x2b0
[   37.366853][    T1]  do_exit+0xd55/0xd60
[   37.368595][    T1]  do_group_exit+0x47/0xc0
[   37.370415][    T1]  get_signal+0x32a/0x920
[   37.372449][    T1]  ? _raw_spin_unlock_irqrestore+0x3d/0x70
[   37.374596][    T1]  do_signal+0x32/0x6e0
[   37.376430][    T1]  ? exit_to_usermode_loop+0x26/0x9b
[   37.378418][    T1]  ? prepare_exit_to_usermode+0xa8/0xd0
[   37.380571][    T1]  exit_to_usermode_loop+0x3e/0x9b
[   37.382588][    T1]  prepare_exit_to_usermode+0xa8/0xd0
[   37.384594][    T1]  ? page_fault+0x8/0x30
[   37.386453][    T1]  retint_user+0x8/0x18
[   37.388160][    T1] RIP: 0033:0x7f42c06974a8
[   37.389922][    T1] Code: Bad RIP value.
[   37.391788][    T1] RSP: 002b:00007ffc3effd388 EFLAGS: 00010213
[   37.394075][    T1] RAX: 000000000000000e RBX: 00007ffc3effd390 RCX:
0000000000000000
[   37.396963][    T1] RDX: 000000000000002a RSI: 00007ffc3effd390 RDI:
0000000000000004
[   37.399550][    T1] RBP: 00007ffc3effd680 R08: 0000000000000000 R09:
0000000000000000
[   37.402334][    T1] R10: 00000000ffffffff R11: 0000000000000246 R12:
0000000000000001
[   37.404890][    T1] R13: ffffffffffffffff R14: 0000000000000884 R15:
000056460b1ac3b0
Link:
http://lkml.kernel.org/r/201902010336.x113a4EO027170@www262.sakura.ne.jp
Fixes: 3d8b38eb81cac813 ("mm, oom: introduce memory.oom.group")
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Acked-by: Michal Hocko <mhocko@suse.com> Cc: Roman Gushchin
<guro@fb.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedmm/oom_kill.c (diff)
Commit c59c60824a9a55cb1d18114d6e22f7317d0533fa by gregkh
memcg: killed threads should not invoke memcg OOM killer
[ Upstream commit 7775face207922ea62a4e96b9cd45abfdc7b9840 ]
If a memory cgroup contains a single process with many threads
(including different process group sharing the mm) then it is possible
to trigger a race when the oom killer complains that there are no oom
elible tasks and complain into the log which is both annoying and
confusing because there is no actual problem.  The race looks as
follows:
P1 oom_reaper P2 try_charge
try_charge
mem_cgroup_out_of_memory
   mutex_lock(oom_lock)
     out_of_memory
       oom_kill_process(P1,P2)
        wake_oom_reaper
   mutex_unlock(oom_lock)
   oom_reap_task
  mutex_lock(oom_lock)
    select_bad_process # no
victim
The problem is more visible with many threads.
Fix this by checking for fatal_signal_pending from
mem_cgroup_out_of_memory when the oom_lock is already held.
The oom bypass is safe because we do the same early in the try_charge
path already.  The situation migh have changed in the mean time.  It
should be safe to check for fatal_signal_pending and tsk_is_oom_victim
but for a better code readability abstract the current charge bypass
condition into should_force_charge and reuse it from that path.  "
Link:
http://lkml.kernel.org/r/01370f70-e1f6-ebe4-b95e-0df21a0bc15e@i-love.sakura.ne.jp
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Acked-by: Michal Hocko <mhocko@suse.com> Acked-by: Johannes Weiner
<hannes@cmpxchg.org> Cc: David Rientjes <rientjes@google.com> Cc: Kirill
Tkhai <ktkhai@virtuozzo.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedmm/memcontrol.c (diff)
Commit 03bccbc025ed13dddc4fece2ee2ad9d2a70e65f8 by gregkh
mm, mempolicy: fix uninit memory access
[ Upstream commit 2e25644e8da4ed3a27e7b8315aaae74660be72dc ]
Syzbot with KMSAN reports (excerpt):
================================================================== BUG:
KMSAN: uninit-value in mpol_rebind_policy mm/mempolicy.c:353 [inline]
BUG: KMSAN: uninit-value in mpol_rebind_mm+0x249/0x370
mm/mempolicy.c:384 CPU: 1 PID: 17420 Comm: syz-executor4 Not tainted
4.20.0-rc7+ #15 Hardware name: Google Google Compute Engine/Google
Compute Engine, BIOS Google 01/01/2011 Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x173/0x1d0 lib/dump_stack.c:113
kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:613
__msan_warning+0x82/0xf0 mm/kmsan/kmsan_instr.c:295
mpol_rebind_policy mm/mempolicy.c:353 [inline]
mpol_rebind_mm+0x249/0x370 mm/mempolicy.c:384
update_tasks_nodemask+0x608/0xca0 kernel/cgroup/cpuset.c:1120
update_nodemasks_hier kernel/cgroup/cpuset.c:1185 [inline]
update_nodemask kernel/cgroup/cpuset.c:1253 [inline]
cpuset_write_resmask+0x2a98/0x34b0 kernel/cgroup/cpuset.c:1728
...
Uninit was created at:
kmsan_save_stack_with_flags mm/kmsan/kmsan.c:204 [inline]
kmsan_internal_poison_shadow+0x92/0x150 mm/kmsan/kmsan.c:158
kmsan_kmalloc+0xa6/0x130 mm/kmsan/kmsan_hooks.c:176
kmem_cache_alloc+0x572/0xb90 mm/slub.c:2777
mpol_new mm/mempolicy.c:276 [inline]
do_mbind mm/mempolicy.c:1180 [inline]
kernel_mbind+0x8a7/0x31a0 mm/mempolicy.c:1347
__do_sys_mbind mm/mempolicy.c:1354 [inline]
As it's difficult to report where exactly the uninit value resides in
the mempolicy object, we have to guess a bit.  mm/mempolicy.c:353
contains this part of mpol_rebind_policy():
        if (!mpol_store_user_nodemask(pol) &&
           nodes_equal(pol->w.cpuset_mems_allowed, *newmask))
"mpol_store_user_nodemask(pol)" is testing pol->flags, which I couldn't
ever see being uninitialized after leaving mpol_new().  So I'll guess
it's actually about accessing pol->w.cpuset_mems_allowed on line 354,
but still part of statement starting on line 353.
For w.cpuset_mems_allowed to be not initialized, and the nodes_equal()
reachable for a mempolicy where mpol_set_nodemask() is called in
do_mbind(), it seems the only possibility is a MPOL_PREFERRED policy
with empty set of nodes, i.e.  MPOL_LOCAL equivalent, with MPOL_F_LOCAL
flag.  Let's exclude such policies from the nodes_equal() check.  Note
the uninit access should be benign anyway, as rebinding this kind of
policy is always a no-op.  Therefore no actual need for stable
inclusion.
Link:
http://lkml.kernel.org/r/a71997c3-e8ae-a787-d5ce-3db05768b27c@suse.cz
Link:
http://lkml.kernel.org/r/73da3e9c-cc84-509e-17d9-0c434bb9967d@suse.cz
Signed-off-by: Vlastimil Babka <vbabka@suse.cz> Reported-by:
syzbot+b19c2dc2c990ea657a71@syzkaller.appspotmail.com Cc: Alexander
Potapenko <glider@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc:
Andrea Arcangeli <aarcange@redhat.com> Cc: "Kirill A. Shutemov"
<kirill.shutemov@linux.intel.com> Cc: Michal Hocko <mhocko@suse.com> Cc:
David Rientjes <rientjes@google.com> Cc: Yisheng Xie
<xieyisheng1@huawei.com> Cc: zhong jiang <zhongjiang@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedmm/mempolicy.c (diff)
Commit f67cd526ce1d11c1236c3d93a811c79f5b41d29d by gregkh
mm/vmalloc.c: fix kernel BUG at mm/vmalloc.c:512!
[ Upstream commit afd07389d3f4933c7f7817a92fb5e053d59a3182 ]
One of the vmalloc stress test case triggers the kernel BUG():
  <snip>
[60.562151] ------------[ cut here ]------------
[60.562154] kernel BUG at mm/vmalloc.c:512!
[60.562206] invalid opcode: 0000 [#1] PREEMPT SMP PTI
[60.562247] CPU: 0 PID: 430 Comm: vmalloc_test/0 Not tainted 4.20.0+
#161
[60.562293] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.10.2-1 04/01/2014
[60.562351] RIP: 0010:alloc_vmap_area+0x36f/0x390
<snip>
it can happen due to big align request resulting in overflowing of
calculated address, i.e.  it becomes 0 after ALIGN()'s fixup.
Fix it by checking if calculated address is within vstart/vend range.
Link: http://lkml.kernel.org/r/20190124115648.9433-2-urezki@gmail.com
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> Reviewed-by:
Andrew Morton <akpm@linux-foundation.org> Cc: Ingo Molnar
<mingo@elte.hu> Cc: Joel Fernandes <joelaf@google.com> Cc: Matthew
Wilcox <willy@infradead.org> Cc: Michal Hocko <mhocko@suse.com> Cc:
Oleksiy Avramchenko <oleksiy.avramchenko@sonymobile.com> Cc: Steven
Rostedt <rostedt@goodmis.org> Cc: Tejun Heo <tj@kernel.org> Cc: Thomas
Garnier <thgarnie@google.com> Cc: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedmm/vmalloc.c (diff)
Commit 8783c35917b607eed944957f1befbefa55e1b697 by gregkh
mm/slab.c: kmemleak no scan alien caches
[ Upstream commit 92d1d07daad65c300c7d0b68bbef8867e9895d54 ]
Kmemleak throws endless warnings during boot due to in
__alloc_alien_cache(),
    alc = kmalloc_node(memsize, gfp, node);
   init_arraycache(&alc->ac, entries, batch);
   kmemleak_no_scan(ac);
Kmemleak does not track the array cache (alc->ac) but the alien cache
(alc) instead, so let it track the latter by lifting kmemleak_no_scan()
out of init_arraycache().
There is another place that calls init_arraycache(), but
alloc_kmem_cache_cpus() uses the percpu allocation where will never be
considered as a leak.
  kmemleak: Found object by alias at 0xffff8007b9aa7e38
CPU: 190 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc2+ #2
Call trace:
  dump_backtrace+0x0/0x168
  show_stack+0x24/0x30
  dump_stack+0x88/0xb0
  lookup_object+0x84/0xac
  find_and_get_object+0x84/0xe4
  kmemleak_no_scan+0x74/0xf4
  setup_kmem_cache_node+0x2b4/0x35c
  __do_tune_cpucache+0x250/0x2d4
  do_tune_cpucache+0x4c/0xe4
  enable_cpucache+0xc8/0x110
  setup_cpu_cache+0x40/0x1b8
  __kmem_cache_create+0x240/0x358
  create_cache+0xc0/0x198
  kmem_cache_create_usercopy+0x158/0x20c
  kmem_cache_create+0x50/0x64
  fsnotify_init+0x58/0x6c
  do_one_initcall+0x194/0x388
  kernel_init_freeable+0x668/0x688
  kernel_init+0x18/0x124
  ret_from_fork+0x10/0x18
kmemleak: Object 0xffff8007b9aa7e00 (size 256):
kmemleak:   comm "swapper/0", pid 1, jiffies 4294697137
kmemleak:   min_count = 1
kmemleak:   count = 0
kmemleak:   flags = 0x1
kmemleak:   checksum = 0
kmemleak:   backtrace:
      kmemleak_alloc+0x84/0xb8
      kmem_cache_alloc_node_trace+0x31c/0x3a0
      __kmalloc_node+0x58/0x78
      setup_kmem_cache_node+0x26c/0x35c
      __do_tune_cpucache+0x250/0x2d4
      do_tune_cpucache+0x4c/0xe4
      enable_cpucache+0xc8/0x110
      setup_cpu_cache+0x40/0x1b8
      __kmem_cache_create+0x240/0x358
      create_cache+0xc0/0x198
      kmem_cache_create_usercopy+0x158/0x20c
      kmem_cache_create+0x50/0x64
      fsnotify_init+0x58/0x6c
      do_one_initcall+0x194/0x388
      kernel_init_freeable+0x668/0x688
      kernel_init+0x18/0x124
kmemleak: Not scanning unknown object at 0xffff8007b9aa7e38
CPU: 190 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc2+ #2
Call trace:
  dump_backtrace+0x0/0x168
  show_stack+0x24/0x30
  dump_stack+0x88/0xb0
  kmemleak_no_scan+0x90/0xf4
  setup_kmem_cache_node+0x2b4/0x35c
  __do_tune_cpucache+0x250/0x2d4
  do_tune_cpucache+0x4c/0xe4
  enable_cpucache+0xc8/0x110
  setup_cpu_cache+0x40/0x1b8
  __kmem_cache_create+0x240/0x358
  create_cache+0xc0/0x198
  kmem_cache_create_usercopy+0x158/0x20c
  kmem_cache_create+0x50/0x64
  fsnotify_init+0x58/0x6c
  do_one_initcall+0x194/0x388
  kernel_init_freeable+0x668/0x688
  kernel_init+0x18/0x124
  ret_from_fork+0x10/0x18
Link: http://lkml.kernel.org/r/20190129184518.39808-1-cai@lca.pw Fixes:
1fe00d50a9e8 ("slab: factor out initialization of array cache")
Signed-off-by: Qian Cai <cai@lca.pw> Reviewed-by: Andrew Morton
<akpm@linux-foundation.org> 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> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedmm/slab.c (diff)
Commit e92a6db0970079b7f64e251801e18a5aaab1f260 by gregkh
ocfs2: fix a panic problem caused by o2cb_ctl
[ Upstream commit cc725ef3cb202ef2019a3c67c8913efa05c3cce6 ]
In the process of creating a node, it will cause NULL pointer
dereference in kernel if o2cb_ctl failed in the interval (mkdir,
o2cb_set_node_attribute(node_num)] in function o2cb_add_node.
The node num is initialized to 0 in function o2nm_node_group_make_item,
o2nm_node_group_drop_item will mistake the node number 0 for a valid
node number when we delete the node before the node number is set
correctly.  If the local node number of the current host happens to be
0, cluster->cl_local_node will be set to O2NM_INVALID_NODE_NUM while
o2hb_thread still running.  The panic stack is generated as follows:
  o2hb_thread
     \-o2hb_do_disk_heartbeat
         \-o2hb_check_own_slot
             |-slot = &reg->hr_slots[o2nm_this_node()];
             //o2nm_this_node() return O2NM_INVALID_NODE_NUM
We need to check whether the node number is set when we delete the node.
Link:
http://lkml.kernel.org/r/133d8045-72cc-863e-8eae-5013f9f6bc51@huawei.com
Signed-off-by: Jia Guo <guojia12@huawei.com> Reviewed-by: Joseph Qi
<jiangqi903@gmail.com> Acked-by: Jun Piao <piaojun@huawei.com> Cc: Mark
Fasheh <mark@fasheh.com> Cc: Joel Becker <jlbec@evilplan.org> Cc:
Junxiao Bi <junxiao.bi@oracle.com> Cc: Changwei Ge <ge.changwei@h3c.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedfs/ocfs2/cluster/nodemanager.c (diff)
Commit 3667215198eb43b7e1283caf816947ccd2daf242 by gregkh
f2fs: do not use mutex lock in atomic context
[ Upstream commit 9083977dabf3833298ddcd40dee28687f1e6b483 ]
Fix below warning coming because of using mutex lock in atomic context.
BUG: sleeping function called from invalid context at
kernel/locking/mutex.c:98 in_atomic(): 1, irqs_disabled(): 0, pid: 585,
name: sh Preemption disabled at: __radix_tree_preload+0x28/0x130 Call
trace:
dump_backtrace+0x0/0x2b4
show_stack+0x20/0x28
dump_stack+0xa8/0xe0
___might_sleep+0x144/0x194
__might_sleep+0x58/0x8c
mutex_lock+0x2c/0x48
f2fs_trace_pid+0x88/0x14c
f2fs_set_node_page_dirty+0xd0/0x184
Do not use f2fs_radix_tree_insert() to avoid doing cond_resched() with
spin_lock() acquired.
Signed-off-by: Sahitya Tummala <stummala@codeaurora.org> Reviewed-by:
Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim
<jaegeuk@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/f2fs/trace.c (diff)
Commit 902507dada434961e1877d3cde12cd02eace528b by gregkh
f2fs: fix to data block override node segment by mistake
[ Upstream commit a0770e13c8da83bdb64738c0209ab02dd3cfff8b ]
v4: Rearrange the previous three versions.
The following scenario could lead to data block override by mistake.
TASK A            |  TASK kworker                                      
    |     TASK B                                            |       TASK
C
                 |                                                     
   |                                                       | open      
      |                                                          |     
                                                | write             |  
                                                      |                
                                     | close             |             
                                           |                           
                          |
                 |  f2fs_write_data_pages                              
   |                                                       |
                 |    f2fs_write_cache_pages                           
   |                                                       |
                 |      f2fs_outplace_write_data                       
   |                                                       |
                 |        f2fs_allocate_data_block (get block in seg S,
   |                                                       |
                 |                                  S is full, and only
   |                                                       |
                 |                                  have this valid data
   |                                                       |
                 |                                  block)             
   |                                                       |
                 |          allocate_segment                           
   |                                                       |
                 |          locate_dirty_segment (mark S as PRE)       
   |                                                       |
                 |        f2fs_submit_page_write (submit but is not    
   |                                                       |
                 |                                written on dev)      
   |                                                       | unlink    
      |                                                          |     
                                                |
iput_final       |                                                     
   |                                                       |
f2fs_drop_inode |                                                     
   |                                                       |
   f2fs_truncate |                                                     
   |                                                       |
(not evict)      |                                                     
   |                                                       |
                 |                                                     
   | write_checkpoint                                      |
                 |                                                     
   |  flush merged bio but not wait file data writeback    |
                 |                                                     
   |  set_prefree_as_free (mark S as FREE)                 |
                 |                                                     
   |                                                       | update
NODE/DATA
                 |                                                     
   |                                                       |
allocate_segment (select S)
                 |     writeback done                                  
   |                                                       |
So we need to guarantee io complete before truncate inode in
f2fs_drop_inode.
Reviewed-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Zheng Liang
<zhengliang6@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/f2fs/super.c (diff)
Commit 0326696a67695eec42dfdddaa81ed52d8bb9b08d by gregkh
fs/file.c: initialize init_files.resize_wait
[ Upstream commit 5704a06810682683355624923547b41540e2801a ]
(Taken from https://bugzilla.kernel.org/show_bug.cgi?id=200647)
'get_unused_fd_flags' in kthread cause kernel crash.  It works fine on
4.1, but causes crash after get 64 fds.  It also cause crash on
ubuntu1404/1604/1804, centos7.5, and the crash messages are almost the
same.
The crash message on centos7.5 shows below:
  start fd 61
start fd 62
start fd 63
BUG: unable to handle kernel NULL pointer dereference at         
(null)
IP: __wake_up_common+0x2e/0x90
PGD 0
Oops: 0000 [#1] SMP
Modules linked in: test(OE) xt_CHECKSUM iptable_mangle ipt_MASQUERADE
nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4
nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT nf_reject_ipv4 tun
bridge stp llc ebtable_filter ebtables ip6table_filter ip6_tables
iptable_filter devlink sunrpc kvm_intel kvm irqbypass crc32_pclmul
ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper
cryptd sg ppdev pcspkr virtio_balloon parport_pc parport i2c_piix4
joydev ip_tables xfs libcrc32c sr_mod cdrom sd_mod crc_t10dif
crct10dif_generic ata_generic pata_acpi virtio_scsi virtio_console
virtio_net cirrus drm_kms_helper syscopyarea sysfillrect sysimgblt
fb_sys_fops ttm crct10dif_pclmul crct10dif_common crc32c_intel drm
ata_piix serio_raw libata virtio_pci virtio_ring i2c_core
  virtio floppy dm_mirror dm_region_hash dm_log dm_mod
CPU: 2 PID: 1820 Comm: test_fd Kdump: loaded Tainted: G           OE
------------   3.10.0-862.3.3.el7.x86_64 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
rel-1.10.2-0-g5f4c7b1-prebuilt.qemu-project.org 04/01/2014
task: ffff8e92b9431fa0 ti: ffff8e94247a0000 task.ti: ffff8e94247a0000
RIP: 0010:__wake_up_common+0x2e/0x90
RSP: 0018:ffff8e94247a2d18  EFLAGS: 00010086
RAX: 0000000000000000 RBX: ffffffff9d09daa0 RCX: 0000000000000000
RDX: 0000000000000000 RSI: 0000000000000003 RDI: ffffffff9d09daa0
RBP: ffff8e94247a2d50 R08: 0000000000000000 R09: ffff8e92b95dfda8
R10: 0000000000000000 R11: 0000000000000000 R12: ffffffff9d09daa8
R13: 0000000000000003 R14: 0000000000000000 R15: 0000000000000003
FS:  0000000000000000(0000) GS:ffff8e9434e80000(0000)
knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 000000017c686000 CR4: 00000000000207e0
Call Trace:
   __wake_up+0x39/0x50
   expand_files+0x131/0x250
   __alloc_fd+0x47/0x170
   get_unused_fd_flags+0x30/0x40
   test_fd+0x12a/0x1c0 [test]
   kthread+0xd1/0xe0
   ret_from_fork_nospec_begin+0x21/0x21
Code: 66 90 55 48 89 e5 41 57 41 89 f7 41 56 41 89 ce 41 55 41 54 49 89
fc 49 83 c4 08 53 48 83 ec 10 48 8b 47 08 89 55 cc 4c 89 45 d0 <48> 8b
08 49 39 c4 48 8d 78 e8 4c 8d 69 e8 75 08 eb 3b 4c 89 ef
RIP   __wake_up_common+0x2e/0x90
  RSP <ffff8e94247a2d18>
CR2: 0000000000000000
This issue exists since CentOS 7.5 3.10.0-862 and CentOS 7.4
(3.10.0-693.21.1 ) is ok.  Root cause: the item 'resize_wait' is not
initialized before being used.
Reported-by: Richard Zhang <zhang.zijian@h3c.com> Reviewed-by: Andrew
Morton <akpm@linux-foundation.org> Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedfs/file.c (diff)
Commit 326ce03840eb845a5f9978a6f4398cc0ba87eddc by gregkh
page_poison: play nicely with KASAN
[ Upstream commit 4117992df66a26fa33908b4969e04801534baab1 ]
KASAN does not play well with the page poisoning
(CONFIG_PAGE_POISONING). It triggers false positives in the allocation
path:
  BUG: KASAN: use-after-free in memchr_inv+0x2ea/0x330
Read of size 8 at addr ffff88881f800000 by task swapper/0
CPU: 0 PID: 0 Comm: swapper Not tainted 5.0.0-rc1+ #54
Call Trace:
  dump_stack+0xe0/0x19a
  print_address_description.cold.2+0x9/0x28b
  kasan_report.cold.3+0x7a/0xb5
  __asan_report_load8_noabort+0x19/0x20
  memchr_inv+0x2ea/0x330
  kernel_poison_pages+0x103/0x3d5
  get_page_from_freelist+0x15e7/0x4d90
because KASAN has not yet unpoisoned the shadow page for allocation
before it checks memchr_inv() but only found a stale poison pattern.
Also, false positives in free path,
  BUG: KASAN: slab-out-of-bounds in kernel_poison_pages+0x29e/0x3d5
Write of size 4096 at addr ffff8888112cc000 by task swapper/0/1
CPU: 5 PID: 1 Comm: swapper/0 Not tainted 5.0.0-rc1+ #55
Call Trace:
  dump_stack+0xe0/0x19a
  print_address_description.cold.2+0x9/0x28b
  kasan_report.cold.3+0x7a/0xb5
  check_memory_region+0x22d/0x250
  memset+0x28/0x40
  kernel_poison_pages+0x29e/0x3d5
  __free_pages_ok+0x75f/0x13e0
due to KASAN adds poisoned redzones around slab objects, but the page
poisoning needs to poison the whole page.
Link: http://lkml.kernel.org/r/20190114233405.67843-1-cai@lca.pw
Signed-off-by: Qian Cai <cai@lca.pw> Acked-by: Andrey Ryabinin
<aryabinin@virtuozzo.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedmm/page_poison.c (diff)
The file was modifiedmm/page_alloc.c (diff)
Commit 64f336255228d05a64c49f63d088a9d85a8e2e8e by gregkh
kasan: fix kasan_check_read/write definitions
[ Upstream commit bcf6f55a0d05eedd8ebb6ecc60ae3f93205ad833 ]
Building little-endian allmodconfig kernels on arm64 started failing
with the generated atomic.h implementation, since we now try to call
kasan helpers from the EFI stub:
  aarch64-linux-gnu-ld: drivers/firmware/efi/libstub/arm-stub.stub.o: in
function `atomic_set':
include/generated/atomic-instrumented.h:44: undefined reference to
`__efistub_kasan_check_write'
I suspect that we get similar problems in other files that explicitly
disable KASAN for some reason but call atomic_t based helper functions.
We can fix this by checking the predefined __SANITIZE_ADDRESS__ macro
that the compiler sets instead of checking CONFIG_KASAN, but this in
turn requires a small hack in mm/kasan/common.c so we do see the extern
declaration there instead of the inline function.
Link: http://lkml.kernel.org/r/20181211133453.2835077-1-arnd@arndb.de
Fixes: b1864b828644 ("locking/atomics: build atomic headers as
required") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reported-by:
Anders Roxell <anders.roxell@linaro.org> Acked-by: Andrey Ryabinin
<aryabinin@virtuozzo.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Will Deacon <will.deacon@arm.com> Cc: Mark Rutland
<mark.rutland@arm.com> Cc: Alexander Potapenko <glider@google.com> Cc:
Dmitry Vyukov <dvyukov@google.com> Cc: Andrey Konovalov
<andreyknvl@google.com> Cc: Stephen Rothwell <sfr@canb.auug.org.au>,
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedmm/kasan/common.c (diff)
The file was modifiedinclude/linux/kasan-checks.h (diff)
Commit f2e34b4ff47e696c32c652dca22a65f13476c8e4 by gregkh
cifs: use correct format characters
[ Upstream commit 259594bea574e515a148171b5cd84ce5cbdc028a ]
When compiling with -Wformat, clang emits the following warnings:
fs/cifs/smb1ops.c:312:20: warning: format specifies type 'unsigned
short' but the argument has type 'unsigned int' [-Wformat]
                        tgt_total_cnt, total_in_tgt);
                                       ^~~~~~~~~~~~
fs/cifs/cifs_dfs_ref.c:289:4: warning: format specifies type 'short' but
the argument has type 'int' [-Wformat]
                ref->flags, ref->server_type);
                ^~~~~~~~~~
fs/cifs/cifs_dfs_ref.c:289:16: warning: format specifies type 'short'
but the argument has type 'int' [-Wformat]
                ref->flags, ref->server_type);
                            ^~~~~~~~~~~~~~~~
fs/cifs/cifs_dfs_ref.c:291:4: warning: format specifies type 'short' but
the argument has type 'int' [-Wformat]
                ref->ref_flag, ref->path_consumed);
                ^~~~~~~~~~~~~
fs/cifs/cifs_dfs_ref.c:291:19: warning: format specifies type 'short'
but the argument has type 'int' [-Wformat]
                ref->ref_flag, ref->path_consumed);
                               ^~~~~~~~~~~~~~~~~~ The types of these
arguments are unconditionally defined, so this patch updates the format
character to the correct ones for ints and unsigned ints.
Link: https://github.com/ClangBuiltLinux/linux/issues/378
Signed-off-by: Louis Taylor <louis@kragniz.eu> Signed-off-by: Steve
French <stfrench@microsoft.com> Reviewed-by: Nick Desaulniers
<ndesaulniers@google.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/cifs/cifs_dfs_ref.c (diff)
The file was modifiedfs/cifs/smb1ops.c (diff)
Commit e3eea74f61a8f136b3bbaba8ba051ef1e1352082 by gregkh
dm thin: add sanity checks to thin-pool and external snapshot creation
[ Upstream commit 70de2cbda8a5d788284469e755f8b097d339c240 ]
Invoking dm_get_device() twice on the same device path with different
modes is dangerous.  Because in that case, upgrade_mode() will alloc a
new 'dm_dev' and free the old one, which may be referenced by a previous
caller.  Dereferencing the dangling pointer will trigger kernel NULL
pointer dereference.
The following two cases can reproduce this issue.  Actually, they are
invalid setups that must be disallowed, e.g.:
1. Creating a thin-pool with read_only mode, and the same device as both
metadata and data.
dmsetup create thinp --table \
   "0 41943040 thin-pool /dev/vdb /dev/vdb 128 0 1 read_only"
BUG: unable to handle kernel NULL pointer dereference at
0000000000000080
... Call Trace:
new_read+0xfb/0x110 [dm_bufio]
dm_bm_read_lock+0x43/0x190 [dm_persistent_data]
? kmem_cache_alloc_trace+0x15c/0x1e0
__create_persistent_data_objects+0x65/0x3e0 [dm_thin_pool]
dm_pool_metadata_open+0x8c/0xf0 [dm_thin_pool]
pool_ctr.cold.79+0x213/0x913 [dm_thin_pool]
? realloc_argv+0x50/0x70 [dm_mod]
dm_table_add_target+0x14e/0x330 [dm_mod]
table_load+0x122/0x2e0 [dm_mod]
? dev_status+0x40/0x40 [dm_mod]
ctl_ioctl+0x1aa/0x3e0 [dm_mod]
dm_ctl_ioctl+0xa/0x10 [dm_mod]
do_vfs_ioctl+0xa2/0x600
? handle_mm_fault+0xda/0x200
? __do_page_fault+0x26c/0x4f0
ksys_ioctl+0x60/0x90
__x64_sys_ioctl+0x16/0x20
do_syscall_64+0x55/0x150
entry_SYSCALL_64_after_hwframe+0x44/0xa9
2. Creating a external snapshot using the same thin-pool device.
dmsetup create thinp --table \
   "0 41943040 thin-pool /dev/vdc /dev/vdb 128 0 2 ignore_discard"
dmsetup message /dev/mapper/thinp 0 "create_thin 0" dmsetup create snap
--table \
           "0 204800 thin /dev/mapper/thinp 0 /dev/mapper/thinp"
BUG: unable to handle kernel NULL pointer dereference at
0000000000000000
... Call Trace:
? __alloc_pages_nodemask+0x13c/0x2e0 retrieve_status+0xa5/0x1f0 [dm_mod]
? dm_get_live_or_inactive_table.isra.7+0x20/0x20 [dm_mod]
table_status+0x61/0xa0 [dm_mod]
ctl_ioctl+0x1aa/0x3e0 [dm_mod]
dm_ctl_ioctl+0xa/0x10 [dm_mod]
do_vfs_ioctl+0xa2/0x600
ksys_ioctl+0x60/0x90
? ksys_write+0x4f/0xb0
__x64_sys_ioctl+0x16/0x20
do_syscall_64+0x55/0x150
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Signed-off-by: Jason Cai (Xiang Feng) <jason.cai@linux.alibaba.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/md/dm-thin.c (diff)
Commit 88596e78dae4896cd740c1ad4544f14318594087 by gregkh
f2fs: fix to check inline_xattr_size boundary correctly
[ Upstream commit 500e0b28ecd3c5aade98f3c3a339d18dcb166bb6 ]
We use below condition to check inline_xattr_size boundary:
if (!F2FS_OPTION(sbi).inline_xattr_size ||
F2FS_OPTION(sbi).inline_xattr_size >=
DEF_ADDRS_PER_INODE -
F2FS_TOTAL_EXTRA_ATTR_SIZE -
DEF_INLINE_RESERVED_SIZE -
DEF_MIN_INLINE_SIZE)
There is there problems in that check:
- we should allow inline_xattr_size equaling to min size of inline
{data,dentry} area.
- F2FS_TOTAL_EXTRA_ATTR_SIZE and inline_xattr_size are based on
different size unit, previous one is 4 bytes, latter one is 1 bytes.
- DEF_MIN_INLINE_SIZE only indicate min size of inline data area,
however, we need to consider min size of inline dentry area as well,
minimal inline dentry should at least contain two entries: '.' and
'..', so that min inline_dentry size is 40 bytes.
.bitmap 1 * 1 = 1
.reserved 1 * 1 = 1
.dentry 11 * 2 = 22
.filename 8 * 2 = 16 total 40
Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim
<jaegeuk@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedinclude/linux/f2fs_fs.h (diff)
The file was modifiedfs/f2fs/f2fs.h (diff)
The file was modifiedfs/f2fs/super.c (diff)
Commit bcb99efab24814da4a5f5fea13f71b960fcc81a3 by gregkh
cifs: Accept validate negotiate if server return NT_STATUS_NOT_SUPPORTED
[ Upstream commit 969ae8e8d4ee54c99134d3895f2adf96047f5bee ]
Old windows version or Netapp SMB server will return
NT_STATUS_NOT_SUPPORTED since they do not allow or implement
FSCTL_VALIDATE_NEGOTIATE_INFO. The client should accept the response
provided it's properly signed.
See
https://blogs.msdn.microsoft.com/openspecification/2012/06/28/smb3-secure-dialect-negotiation/
and
MS-SMB2 validate negotiate response processing:
https://msdn.microsoft.com/en-us/library/hh880630.aspx
Samba client had already handled it.
https://bugzilla.samba.org/attachment.cgi?id=13285&action=edit
Signed-off-by: Namjae Jeon <linkinjeon@gmail.com> Signed-off-by: Steve
French <stfrench@microsoft.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedfs/cifs/smb2pdu.c (diff)
Commit d6dd80425f5d1498fb8b8565842ccda16205c3f9 by gregkh
cifs: Fix NULL pointer dereference of devname
[ Upstream commit 68e2672f8fbd1e04982b8d2798dd318bf2515dd2 ]
There is a NULL pointer dereference of devname in strspn()
The oops looks something like:
  CIFS: Attempting to mount (null)
BUG: unable to handle kernel NULL pointer dereference at
0000000000000000
...
RIP: 0010:strspn+0x0/0x50
...
Call Trace:
  ? cifs_parse_mount_options+0x222/0x1710 [cifs]
  ? cifs_get_volume_info+0x2f/0x80 [cifs]
  cifs_setup_volume_info+0x20/0x190 [cifs]
  cifs_get_volume_info+0x50/0x80 [cifs]
  cifs_smb3_do_mount+0x59/0x630 [cifs]
  ? ida_alloc_range+0x34b/0x3d0
  cifs_do_mount+0x11/0x20 [cifs]
  mount_fs+0x52/0x170
  vfs_kern_mount+0x6b/0x170
  do_mount+0x216/0xdc0
  ksys_mount+0x83/0xd0
  __x64_sys_mount+0x25/0x30
  do_syscall_64+0x65/0x220
  entry_SYSCALL_64_after_hwframe+0x49/0xbe
Fix this by adding a NULL check on devname in cifs_parse_devname()
Signed-off-by: Yao Liu <yotta.liu@ucloud.cn> Signed-off-by: Steve French
<stfrench@microsoft.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/cifs/connect.c (diff)
Commit dc8d8f83ea52967e5a74c871c2b3f1ba93b82228 by gregkh
perf beauty msg_flags: Add missing %s lost when adding prefix
suppression logic
[ Upstream commit c3b81a500f35241a4c16febe0a015e572cf2c492 ]
When the prefix suppresion/enabling logic was added, I forgot to add an
extra %, which ended up chopping off the strings:
Before:
  # perf trace -e *mmsg --map-dump syscalls
[299] = 1,
[307] = 1,
DNS Res~ver #3/14587 sendmmsg(106<socket:[3462393]>, 0x7f252b0fcaf0, 2,
MSG_) = 2
chronyd/1053 recvmmsg(4, 0x558542ca5740, 4, MSG_, NULL) = 1
DNS Res~ver #2/14445 sendmmsg(106<socket:[3461475]>, 0x7f252ab09af0, 2,
MSG_) = 2
DNS Res~ver #2/14444 sendmmsg(146<socket:[3457863]>, 0x7f2521a7aaf0, 2,
MSG_) = 2
DNS Res~ver #2/14445 sendmmsg(106<socket:[3461475]>, 0x7f252ab09af0, 2,
MSG_) = 2
DNS Res~ver #3/14587 sendmmsg(148<socket:[3460636]>, 0x7f252b0fcaf0, 2,
MSG_) = 2
DNS Res~ver #2/14444 sendmmsg(146<socket:[3457863]>, 0x7f2521a7aaf0, 2,
MSG_) = 2
^C#
After:
  # perf trace -e *mmsg --map-dump syscalls
[299] = 1,
[307] = 1,
NetworkManager/17467 sendmmsg(22<socket:[3466493]>, 0x7f28927f9bb0, 2,
MSG_NOSIGNAL) = 2
pool/17478 sendmmsg(10<socket:[3466523]>, 0x7f2769f95e90, 2,
MSG_NOSIGNAL) = 2
DNS Res~ver #3/14587 sendmmsg(121<socket:[3466132]>, 0x7f252b0fcaf0, 2,
MSG_NOSIGNAL) = 2
chronyd/1053 recvmmsg(4, 0x558542ca5740, 4, MSG_DONTWAIT, NULL) = 1
Socket Thread/17433 sendmmsg(121<socket:[3460903]>, 0x7f252668baf0, 2,
MSG_NOSIGNAL) = 2
^C#
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@kernel.org> Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com> Cc:
Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com>
Fixes: c65c83ffe904 ("perf trace: Allow asking for not suppressing
common string prefixes") Link:
https://lkml.kernel.org/n/tip-t2eu1rqx710k6jr4814mlzg7@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/trace/beauty/msg_flags.c (diff)
Commit fdb08cf7dbeed2dcab5bdcdfb873529f6d554226 by gregkh
netfilter: nf_tables: check the result of dereferencing
base_chain->stats
[ Upstream commit a9f5e78c403d2d62ade4f4c85040efc85f4049b8 ]
Check the result of dereferencing base_chain->stats, instead of result
of this_cpu_ptr with NULL.
base_chain->stats maybe be changed to NULL when a chain is updated and a
new NULL counter can be attached.
And we do not need to check returning of this_cpu_ptr since
base_chain->stats is from percpu allocator if it is non-NULL,
this_cpu_ptr returns a valid value.
And fix two sparse error by replacing rcu_access_pointer and
rcu_dereference with READ_ONCE under rcu_read_lock.
Thanks for Eric's help to finish this patch.
Fixes: 009240940e84c1 ("netfilter: nf_tables: don't assume chain stats
are set when jumplabel is set") Signed-off-by: Eric Dumazet
<eric.dumazet@gmail.com> Signed-off-by: Zhang Yu <zhangyu31@baidu.com>
Signed-off-by: Li RongQing <lirongqing@baidu.com> Signed-off-by: Pablo
Neira Ayuso <pablo@netfilter.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiednet/netfilter/nf_tables_core.c (diff)
Commit 8a0f1351bac10979dabaca300df736346046574e by gregkh
PCI: mediatek: Fix memory mapped IO range size computation
[ Upstream commit c61df57343bf05743f8abbb31eec9a6f05820dd1 ]
Mediatek's HW assigns a MMIO address range (typically starts from
0x20000000 to 0x2fffffff for both mt2712 and mt7622) for PCI usage.
This MMIO address space represents the address space that can be
allocated to PCI devices through Base Address Registers.
Even though the full MMIO address range is available to be allocated, it
should be enabled by the PCIE_AHB_TRANS_BASE register in the host
controller and the size that is enabled is determined by AHB2PCIE_SIZE
bits in this register.
Owing to a bug in the MMIO window size computation, current code does
not enable the full size of the available MMIO address range in the PCI
host controller; if the PCI devices BARs requested size exceeds the size
enabled through the PCIE_AHB_TRANS_BASE register the requests targeting
the disabled address address space will be blocked by the root complex
causing a system error.
Existing code has never run into a system error in production because
even half of the enabled MMIO range (128MB) is big enough for typical
devices BAR requests (4MB) but the full MMIO address range should be
enabled regardless.
Fix the MMIO window size computation by using resource_size(mem) instead
of mem->end - mem->start.
Since the MMIO window size for both MT2712 and MT7622 is 0x10000000,
this change will update the parameter passed to fls() from 0xfffffff to
0x10000000 and calculate the whole memory mapped IO range size
correctly.
Detected through coccinelle semantic patch (and related warning):
scripts/coccinelle/api/resource_size.cocci:
pcie-mediatek.c:720:13-16: WARNING: Suspicious code. resource_size is
maybe missing with mem
Signed-off-by: Honghui Zhang <honghui.zhang@mediatek.com>
[lorenzo.pieralisi@arm.com: rewrote the commit log] Signed-off-by:
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/pci/controller/pcie-mediatek.c (diff)
Commit b39898beee9da20b279c3daf073b42045b3d35d6 by gregkh
netfilter: conntrack: tcp: only close if RST matches exact sequence
[ Upstream commit be0502a3f2e94211a8809a09ecbc3a017189b8fb ]
TCP resets cause instant transition from established to closed state
provided the reset is in-window.  Endpoints that implement RFC 5961
require resets to match the next expected sequence number. RST segments
that are in-window (but that do not match RCV.NXT) are ignored, and a
"challenge ACK" is sent back.
Main problem for conntrack is that its a middlebox, i.e.  whereas an end
host might have ACK'd SEQ (and would thus accept an RST with this
sequence number), conntrack might not have seen this ACK (yet).
Therefore we can't simply flag RSTs with non-exact match as invalid.
This updates RST processing as follows:
1. If the connection is in a state other than ESTABLISHED, nothing is
  changed, RST is subject to normal in-window check.
2. If the RSTs sequence number either matches exactly RCV.NXT,
  connection state moves to CLOSE.
3. The same applies if the RST sequence number aligns with a previous
  packet in the same direction.
In all other cases, the connection remains in ESTABLISHED state. If the
normal-in-window check passes, the timeout will be lowered to that of
CLOSE.
If the peer sends a challenge ack, connection timeout will be reset.
If the challenge ACK triggers another RST (RST was valid after all),
this 2nd RST will match expected sequence and conntrack state changes to
CLOSE.
If no challenge ACK is received, the connection will time out after
CLOSE seconds (10 seconds by default), just like without this patch.
Packetdrill test case:
0.000 socket(..., SOCK_STREAM, IPPROTO_TCP) = 3 0.000 setsockopt(3,
SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0 0.000 bind(3, ..., ...) = 0 0.000
listen(3, 1) = 0
0.100 < S 0:0(0) win 32792 <mss 1460,sackOK,nop,nop,nop,wscale 7> 0.100
> S. 0:0(0) ack 1 win 64240 <mss 1460,nop,nop,sackOK,nop,wscale 7> 0.200
< . 1:1(0) ack 1 win 257 0.200 accept(3, ..., ...) = 4
// Receive a segment. 0.210 < P. 1:1001(1000) ack 1 win 46 0.210 > .
1:1(0) ack 1001
// Application writes 1000 bytes. 0.250 write(4, ..., 1000) = 1000 0.250
> P. 1:1001(1000) ack 1001
// First reset, old sequence. Conntrack (correctly) considers this
// invalid due to failed window validation (regardless of this patch).
0.260 < R  2:2(0) ack 1001 win 260
// 2nd reset, but too far ahead sequence.  Same: correctly handled
// as invalid. 0.270 < R 99990001:99990001(0) ack 1001 win 260
// in-window, but not exact sequence.
// Current Linux kernels might reply with a challenge ack, and do not
// remove connection.
// Without this patch, conntrack state moves to CLOSE.
// With patch, timeout is lowered like CLOSE, but connection stays
// in ESTABLISHED state. 0.280 < R 1010:1010(0) ack 1001 win 260
// Expect challenge ACK 0.281 > . 1001:1001(0) ack 1001 win 501
// With or without this patch, RST will cause connection
// to move to CLOSE (sequence number matches)
// 0.282 < R 1001:1001(0) ack 1001 win 260
// ACK 0.300 < . 1001:1001(0) ack 1001 win 257
// more data could be exchanged here, connection
// is still established
// Client closes the connection. 0.610 < F. 1001:1001(0) ack 1001 win
260 0.650 > . 1001:1001(0) ack 1002
// Close the connection without reading outstanding data 0.700 close(4)
= 0
// so one more reset.  Will be deemed acceptable with patch as well:
// connection is already closing. 0.701 > R. 1001:1001(0) ack 1002 win
501
// End packetdrill test case.
With patch, this generates following conntrack events:
  [NEW] 120 SYN_SENT src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80
[UNREPLIED]
[UPDATE] 60 SYN_RECV src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80
[UPDATE] 432000 ESTABLISHED src=10.0.2.1 dst=10.0.0.1 sport=5437
dport=80 [ASSURED]
[UPDATE] 120 FIN_WAIT src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80
[ASSURED]
[UPDATE] 60 CLOSE_WAIT src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80
[ASSURED]
[UPDATE] 10 CLOSE src=10.0.2.1 dst=10.0.0.1 sport=5437 dport=80
[ASSURED]
Without patch, first RST moves connection to close, whereas socket state
does not change until FIN is received.
  [NEW] 120 SYN_SENT src=10.0.2.1 dst=10.0.0.1 sport=5141 dport=80
[UNREPLIED]
[UPDATE] 60 SYN_RECV src=10.0.2.1 dst=10.0.0.1 sport=5141 dport=80
[UPDATE] 432000 ESTABLISHED src=10.0.2.1 dst=10.0.0.1 sport=5141
dport=80 [ASSURED]
[UPDATE] 10 CLOSE src=10.0.2.1 dst=10.0.0.1 sport=5141 dport=80
[ASSURED]
Cc: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Signed-off-by: Florian
Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso
<pablo@netfilter.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiednet/netfilter/nf_conntrack_proto_tcp.c (diff)
Commit 87f8ad583c7942cc185e7d51da163112d534f79f by gregkh
iommu/vt-d: Disable ATS support on untrusted devices
[ Upstream commit d8b8591054575f33237556c32762d54e30774d28 ]
Commit fb58fdcd295b9 ("iommu/vt-d: Do not enable ATS for untrusted
devices") disables ATS support on the devices which have been marked as
untrusted. Unfortunately this is not enough to fix the DMA attack
vulnerabiltiies because IOMMU driver allows translated requests as long
as a device advertises the ATS capability. Hence a malicious peripheral
device could use this to bypass IOMMU.
This disables the ATS support on untrusted devices by clearing the
internal per-device ATS mark. As the result, IOMMU driver will block any
translated requests from any device marked as untrusted.
Cc: Jacob Pan <jacob.jun.pan@linux.intel.com> Cc: Mika Westerberg
<mika.westerberg@linux.intel.com> Suggested-by: Kevin Tian
<kevin.tian@intel.com> Suggested-by: Ashok Raj <ashok.raj@intel.com>
Fixes: fb58fdcd295b9 ("iommu/vt-d: Do not enable ATS for untrusted
devices") Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/iommu/intel-iommu.c (diff)
Commit 1d62e75a00bb1f7f240bee26e9b8a67eb2933cff by gregkh
jbd2: fix invalid descriptor block checksum
[ Upstream commit 6e876c3dd205d30b0db6850e97a03d75457df007 ]
In jbd2_journal_commit_transaction(), if we are in abort mode, we may
flush the buffer without setting descriptor block checksum by goto
start_journal_io. Then fs is mounted,
jbd2_descriptor_block_csum_verify() failed.
[  271.379811] EXT4-fs (vdd): shut down requested (2)
[  271.381827] Aborting journal on device vdd-8.
[  271.597136] JBD2: Invalid checksum recovering block 22199 in log
[  271.598023] JBD2: recovery failed
[  271.598484] EXT4-fs (vdd): error loading journal
Fix this problem by keep setting descriptor block checksum if the
descriptor buffer is not NULL.
This checksum problem can be reproduced by xfstests generic/388.
Signed-off-by: luojiajun <luojiajun3@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedfs/jbd2/commit.c (diff)
Commit dee200aba7dce342ecf4c1eda87e16b894a927cb by gregkh
ext4: fix bigalloc cluster freeing when hole punching under load
[ Upstream commit 7bd75230b43727b258a4f7a59d62114cffe1b6c8 ]
Ext4 may not free clusters correctly when punching holes in bigalloc
file systems under high load conditions.  If it's not possible to extend
and restart the journal in ext4_ext_rm_leaf() when preparing to remove
blocks from a punched region, a retry of the entire punch operation is
triggered in ext4_ext_remove_space().  This causes a partial cluster to
be set to the first cluster in the extent found to the right of the
punched region.  However, if the punch operation prior to the retry had
made enough progress to delete one or more extents and a partial cluster
candidate for freeing had already been recorded, the retry would
overwrite the partial cluster.  The loss of this information makes it
impossible to correctly free the original partial cluster in all cases.
This bug can cause generic/476 to fail when run as part of
xfstests-bld's bigalloc and bigalloc_1k test cases.  The failure is
reported when e2fsck detects bad iblocks counts greater than expected in
units of whole clusters and also detects a number of negative block
bitmap differences equal to the iblocks discrepancy in cluster units.
Signed-off-by: Eric Whitney <enwlinux@gmail.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/ext4/extents.c (diff)
Commit a1d9d2145c5069732cb9ff5bddda2dfb2fc4707c by gregkh
fs: fix guard_bio_eod to check for real EOD errors
[ Upstream commit dce30ca9e3b676fb288c33c1f4725a0621361185 ]
guard_bio_eod() can truncate a segment in bio to allow it to do IO on
odd last sectors of a device.
It already checks if the IO starts past EOD, but it does not consider
the possibility of an IO request starting within device boundaries can
contain more than one segment past EOD.
In such cases, truncated_bytes can be bigger than PAGE_SIZE, and will
underflow bvec->bv_len.
Fix this by checking if truncated_bytes is lower than PAGE_SIZE.
This situation has been found on filesystems such as isofs and vfat,
which doesn't check the device size before mount, if the device is
smaller than the filesystem itself, a readahead on such filesystem,
which spans EOD, can trigger this situation, leading a call to
zero_user() with a wrong size possibly corrupting memory.
I didn't see any crash, or didn't let the system run long enough to
check if memory corruption will be hit somewhere, but adding
instrumentation to guard_bio_end() to check truncated_bytes size, was
enough to see the error.
The following script can trigger the error.
MNT=/mnt IMG=./DISK.img DEV=/dev/loop0
mkfs.vfat $IMG mount $IMG $MNT cp -R /etc $MNT &> /dev/null umount $MNT
losetup -D
losetup --find --show --sizelimit 16247280 $IMG mount $DEV $MNT
find $MNT -type f -exec cat {} + >/dev/null
Kudos to Eric Sandeen for coming up with the reproducer above
Reviewed-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Carlos
Maiolino <cmaiolino@redhat.com> Signed-off-by: Jens Axboe
<axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/buffer.c (diff)
Commit 6e33632946e4aa6c111ba52e1aaf0d0aa323a94f by gregkh
tools lib traceevent: Fix buffer overflow in arg_eval
[ Upstream commit 7c5b019e3a638a5a290b0ec020f6ca83d2ec2aaa ]
Fix buffer overflow observed when running perf test.
The overflow is when trying to evaluate "1ULL << (64 - 1)" which is
resulting in -9223372036854775808 which overflows the 20 character
buffer.
If is possible this bug has been reported before but I still don't see
any fix checked in:
See: https://www.spinics.net/lists/linux-perf-users/msg07714.html
Reported-by: Michael Sartain <mikesart@fastmail.com> Reported-by:
Mathias Krause <minipli@googlemail.com> Signed-off-by: Tony Jones
<tonyj@suse.de> Acked-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Cc: Frederic Weisbecker <fweisbec@gmail.com> Fixes: f7d82350e597
("tools/events: Add files to create libtraceevent.a") Link:
http://lkml.kernel.org/r/20190228015532.8941-1-tonyj@suse.de
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/lib/traceevent/event-parse.c (diff)
Commit 88f0ced0d75f7eb731f1640454e1ced816b322a0 by gregkh
mm/resource: Return real error codes from walk failures
[ Upstream commit 5cd401ace914dc68556c6d2fcae0c349444d5f86 ]
walk_system_ram_range() can return an error code either becuase
*it* failed, or because the 'func' that it calls returned an error.  The
memory hotplug does the following:
ret = walk_system_ram_range(..., func);
       if (ret)
return ret;
and 'ret' makes it out to userspace, eventually.  The problem s,
walk_system_ram_range() failues that result from *it* failing
(as opposed to 'func') return -1.  That leads to a very odd
-EPERM (-1) return code out to userspace.
Make walk_system_ram_range() return -EINVAL for internal failures to
keep userspace less confused.
This return code is compatible with all the callers that I audited.
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com> Reviewed-by:
Bjorn Helgaas <bhelgaas@google.com> Acked-by: Michael Ellerman
<mpe@ellerman.id.au> (powerpc) Cc: Dan Williams
<dan.j.williams@intel.com> Cc: Dave Jiang <dave.jiang@intel.com> Cc:
Ross Zwisler <zwisler@kernel.org> Cc: Vishal Verma
<vishal.l.verma@intel.com> Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Michal Hocko
<mhocko@suse.com> Cc: linux-nvdimm@lists.01.org Cc:
linux-kernel@vger.kernel.org Cc: linux-mm@kvack.org Cc: Huang Ying
<ying.huang@intel.com> Cc: Fengguang Wu <fengguang.wu@intel.com> Cc:
Borislav Petkov <bp@suse.de> Cc: Yaowei Bai
<baiyaowei@cmss.chinamobile.com> Cc: Takashi Iwai <tiwai@suse.de> Cc:
Jerome Glisse <jglisse@redhat.com> Cc: Benjamin Herrenschmidt
<benh@kernel.crashing.org> Cc: Paul Mackerras <paulus@samba.org> Cc:
linuxppc-dev@lists.ozlabs.org Cc: Keith Busch <keith.busch@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedkernel/resource.c (diff)
Commit d8f775092499f1afdfa0de0c7d99d0a8bcfc7891 by gregkh
PCI/PME: Fix hotplug/sysfs remove deadlock in pcie_pme_remove()
[ Upstream commit 95c80bc6952b6a5badc7b702d23e5bf14d251e7c ]
Dongdong reported a deadlock triggered by a hotplug event during a sysfs
"remove" operation:
  pciehp 0000:00:0c.0:pcie004: Slot(0-1): Link Up
# echo 1 > 0000:00:0c.0/remove
  PME and hotplug share an MSI/MSI-X vector.  The sysfs "remove" side
is:
    remove_store
      pci_stop_and_remove_bus_device_locked
pci_lock_rescan_remove
pci_stop_and_remove_bus_device
   ...
   pcie_pme_remove
     pcie_pme_suspend
       synchronize_irq        # wait for hotplug IRQ handler
pci_unlock_rescan_remove
  The hotplug side is:
    pciehp_ist
      pciehp_handle_presence_or_link_change
pciehp_configure_device
   pci_lock_rescan_remove     # wait for pci_unlock_rescan_remove()
  INFO: task bash:10913 blocked for more than 120 seconds.
  # ps -ax |grep D
  PID TTY      STAT   TIME COMMAND
10913 ttyAMA0  Ds+    0:00 -bash
14022 ?        D      0:00 [irq/745-pciehp]
  # cat /proc/14022/stack
__switch_to+0x94/0xd8
pci_lock_rescan_remove+0x20/0x28
pciehp_configure_device+0x30/0x140
pciehp_handle_presence_or_link_change+0x324/0x458
pciehp_ist+0x1dc/0x1e0
  # cat /proc/10913/stack
__switch_to+0x94/0xd8
synchronize_irq+0x8c/0xc0
pcie_pme_suspend+0xa4/0x118
pcie_pme_remove+0x20/0x40
pcie_port_remove_service+0x3c/0x58
...
pcie_port_device_remove+0x2c/0x48
pcie_portdrv_remove+0x68/0x78
pci_device_remove+0x48/0x120
...
pci_stop_bus_device+0x84/0xc0
pci_stop_and_remove_bus_device_locked+0x24/0x40
remove_store+0xa4/0xb8
dev_attr_store+0x44/0x60
sysfs_kf_write+0x58/0x80
It is incorrect to call pcie_pme_suspend() from pcie_pme_remove() for
two reasons.
First, pcie_pme_suspend() calls synchronize_irq(), which will wait for
the native hotplug interrupt handler as well as for the PME one, because
they share one IRQ (as per the spec).  That may deadlock if hotplug is
signaled while pcie_pme_remove() is running and the latter calls
pci_lock_rescan_remove() before the former.
Second, if pcie_pme_suspend() figures out that wakeup needs to be
enabled for the port, it will return without disabling the interrupt as
expected by pcie_pme_remove() which was overlooked by commit
c7b5a4e6e8fb ("PCI / PM: Fix native PME handling during system
suspend/resume").
To fix that, rework pcie_pme_remove() to disable the PME interrupt,
clear its status and prevent the PME worker function from re-enabling it
before calling free_irq() on it, which should be sufficient.
Fixes: c7b5a4e6e8fb ("PCI / PM: Fix native PME handling during system
suspend/resume") Link:
https://lore.kernel.org/linux-pci/c7697e7c-e1af-13e4-8491-0a3996e6ab5d@huawei.com
Reported-by: Dongdong Liu <liudongdong3@huawei.com> Signed-off-by:
Rafael J. Wysocki <rafael.j.wysocki@intel.com>
[bhelgaas: add URL and deadlock details from Dongdong] Signed-off-by:
Bjorn Helgaas <bhelgaas@google.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/pci/pcie/pme.c (diff)
Commit 96e2fec0fd8cf9e8b6d9fff087d2e40d4d9ab71b by gregkh
wil6210: check null pointer in _wil_cfg80211_merge_extra_ies
[ Upstream commit de77a53c2d1e8fb3621e63e8e1f0f0c9a1a99ff7 ]
ies1 or ies2 might be null when code inside
_wil_cfg80211_merge_extra_ies access them. Add explicit check for null
and make sure ies1/ies2 are not accessed in such a case.
spos might be null and be accessed inside
_wil_cfg80211_merge_extra_ies. Add explicit check for null in the while
condition statement and make sure spos is not accessed in such a case.
Signed-off-by: Alexei Avshalom Lazar <ailizaro@codeaurora.org>
Signed-off-by: Maya Erez <merez@codeaurora.org> Signed-off-by: Kalle
Valo <kvalo@codeaurora.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/wireless/ath/wil6210/cfg80211.c (diff)
Commit e486c95f5d50df00b00c597a60cb030479994dac by gregkh
mt76: fix a leaked reference by adding a missing of_node_put
[ Upstream commit 34e022d8b780a03902d82fb3997ba7c7b1f40c81 ]
The call to of_find_node_by_phandle returns a node pointer with refcount
incremented thus it must be explicitly decremented after the last usage.
Detected by coccinelle with the following warnings:
./drivers/net/wireless/mediatek/mt76/eeprom.c:58:2-8: ERROR: missing
of_node_put; acquired a node pointer with refcount incremented on line
48, but without a corresponding object release within this function.
./drivers/net/wireless/mediatek/mt76/eeprom.c:61:2-8: ERROR: missing
of_node_put; acquired a node pointer with refcount incremented on line
48, but without a corresponding object release within this function.
./drivers/net/wireless/mediatek/mt76/eeprom.c:67:2-8: ERROR: missing
of_node_put; acquired a node pointer with refcount incremented on line
48, but without a corresponding object release within this function.
./drivers/net/wireless/mediatek/mt76/eeprom.c:70:2-8: ERROR: missing
of_node_put; acquired a node pointer with refcount incremented on line
48, but without a corresponding object release within this function.
./drivers/net/wireless/mediatek/mt76/eeprom.c:72:1-7: ERROR: missing
of_node_put; acquired a node pointer with refcount incremented on line
48, but without a corresponding object release within this function.
Signed-off-by: Wen Yang <wen.yang99@zte.com.cn> Cc: Felix Fietkau
<nbd@nbd.name> Cc: Lorenzo Bianconi <lorenzo.bianconi83@gmail.com> Cc:
Kalle Valo <kvalo@codeaurora.org> Cc: "David S. Miller"
<davem@davemloft.net> Cc: Matthias Brugger <matthias.bgg@gmail.com> Cc:
linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org Cc:
linux-arm-kernel@lists.infradead.org Cc:
linux-mediatek@lists.infradead.org Cc: linux-kernel@vger.kernel.org
Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/net/wireless/mediatek/mt76/eeprom.c (diff)
Commit a73713e533230b82122579e7d004ad26984dd48e by gregkh
ath10k: Fix the wrong updation of BW in tx_stats debugfs entry
[ Upstream commit ef9051c72ab7bc664e8047c55ac74bdb1c7fa3ee ]
Currently, the bandwidth is updated wrongly in BW table in tx_stats
debugfs per sta as there is difference in number of bandwidth type in
mac80211 and driver stats table. This leads to bandwidth getting updated
at wrong index in bandwidth table in tx_stats.
Fix this index mismatch between mac80211 and driver stats table (BW
table) by making the number of bandwidth type in driver compatible with
mac80211.
Tested HW: WCN3990 Tested FW: WLAN.HL.3.1-00784-QCAHLSWMTPLZ-1
Fixes: a904417fc876 ("ath10k: add extended per sta tx statistics
support") Signed-off-by: Surabhi Vishnoi <svishnoi@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/net/wireless/ath/ath10k/debugfs_sta.c (diff)
The file was modifieddrivers/net/wireless/ath/ath10k/wmi.h (diff)
Commit 2b52034346cd6cc6f24ab4de2544c8017253c2c0 by gregkh
lockdep/lib/tests: Fix run_tests.sh
[ Upstream commit d93ac78bf7b37db36fa00225f8e9a14c7ed1b2ba ]
Apparently the execute bits were set for the tests/*.sh scripts on my
test setup but these are not set in the kernel tree. Fix this by adding
the interpreter path in front of the script paths.
Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Peter
Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton
<akpm@linux-foundation.org> Cc: Johannes Berg
<johannes@sipsolutions.net> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Paul E. McKenney
<paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Waiman Long
<longman@redhat.com> Cc: Will Deacon <will.deacon@arm.com> Cc:
johannes.berg@intel.com Cc: tj@kernel.org Fixes: 5ecb8e94b494
("tools/lib/lockdep/tests: Improve testing accuracy") # v5.0-rc1 Link:
https://lkml.kernel.org/r/20190214230058.196511-23-bvanassche@acm.org
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedtools/lib/lockdep/run_tests.sh (diff)
Commit 1ee9d34d686180e0ddf8944425cdc5f3ce3810d0 by gregkh
crypto: crypto4xx - add missing of_node_put after of_device_is_available
[ Upstream commit 8c2b43d2d85b48a97d2f8279278a4aac5b45f925 ]
Add an of_node_put when a tested device node is not available.
The semantic patch that fixes this problem is as follows
(http://coccinelle.lip6.fr):
// <smpl>
@@ identifier f; local idexpression e; expression x;
@@
e = f(...);
... when != of_node_put(e)
   when != x = e
   when != e = x
   when any if (<+...of_device_is_available(e)...+>) {
... when != of_node_put(e)
(
return e;
|
+ of_node_put(e);
return ...;
)
}
// </smpl>
Fixes: 5343e674f32fb ("crypto4xx: integrate ppc4xx-rng into crypto4xx")
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/crypto/amcc/crypto4xx_trng.c (diff)
Commit 547272b44afa53e000afa5a5992f2a691e171aed by gregkh
crypto: cavium/zip - fix collision with generic cra_driver_name
[ Upstream commit 41798036430015ad45137db2d4c213cd77fd0251 ]
The cavium/zip implementation of the deflate compression algorithm is
incorrectly being registered under the generic driver name, which
prevents the generic implementation from being registered with the
crypto API when CONFIG_CRYPTO_DEV_CAVIUM_ZIP=y.  Similarly the lzs
algorithm (which does not currently have a generic implementation...) is
incorrectly being registered as lzs-generic.
Fix the naming collision by adding a suffix "-cavium" to the
cra_driver_name of the cavium/zip algorithms.
Fixes: 640035a2dc55 ("crypto: zip - Add ThunderX ZIP driver core") Cc:
Mahipal Challa <mahipalreddy2006@gmail.com> Cc: Jan Glauber
<jglauber@cavium.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/crypto/cavium/zip/zip_main.c (diff)
Commit a133f9f7f96ad2b6d44d825e038d003db9b38dc3 by gregkh
tools/bpf: selftests: add map lookup to test_map_in_map bpf prog
[ Upstream commit 9eca5083757b679b37f210092c871916c2c222d0 ]
The bpf_map_lookup_elem is added in the bpf program. Without previous
patch, the test change will trigger the following error:
$ ./test_maps
...
; value_p = bpf_map_lookup_elem(map, &key);
20: (bf) r1 = r7
21: (bf) r2 = r8
22: (85) call bpf_map_lookup_elem#1
; if (!value_p || *value_p != 123)
23: (15) if r0 == 0x0 goto pc+16
  R0=map_value(id=2,off=0,ks=4,vs=4,imm=0) R6=inv1
R7=map_ptr(id=0,off=0,ks=4,vs=4,imm=0)
  R8=fp-8,call_-1 R10=fp0,call_-1 fp-8=mmmmmmmm
; if (!value_p || *value_p != 123)
24: (61) r1 = *(u32 *)(r0 +0)
  R0=map_value(id=2,off=0,ks=4,vs=4,imm=0) R6=inv1
R7=map_ptr(id=0,off=0,ks=4,vs=4,imm=0)
  R8=fp-8,call_-1 R10=fp0,call_-1 fp-8=mmmmmmmm
bpf_spin_lock cannot be accessed directly by load/store
With the kernel fix in the previous commit, the error goes away.
Signed-off-by: Yonghong Song <yhs@fb.com> Acked-by: Andrii Nakryiko
<andriin@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedtools/testing/selftests/bpf/test_map_in_map.c (diff)
Commit 7fe45a018fb3b3fcb1d6ae08f28c849cd6795409 by gregkh
usb: chipidea: Grab the (legacy) USB PHY by phandle first
[ Upstream commit 68ef236274793066b9ba3154b16c0acc1c891e5c ]
According to the chipidea driver bindings, the USB PHY is specified via
the "phys" phandle node. However, this only takes effect for USB PHYs
that use the common PHY framework. For legacy USB PHYs, a simple lookup
based on the USB PHY type is done instead.
This does not play out well when more than one USB PHY is registered,
since the first registered PHY matching the type will always be returned
regardless of what the driver was bound to.
Fix this by looking up the PHY based on the "phys" phandle node.
Although generic PHYs are rather matched by their "phys-name" and not
the "phys" phandle directly, there is no helper for similar lookup on
legacy PHYs and it's probably not worth the effort to add it.
When no legacy USB PHY is found by phandle, fallback to grabbing any
registered USB2 PHY. This ensures backward compatibility if some users
were actually relying on this mechanism.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: Peter Chen <peter.chen@nxp.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/usb/chipidea/core.c (diff)
Commit b17b4bd79afc187234f0215d9c84aaf59d44f8c7 by gregkh
powerpc/powernv/ioda: Fix locked_vm counting for memory used by IOMMU
tables
[ Upstream commit 11f5acce2fa43b015a8120fa7620fa4efd0a2952 ]
We store 2 multilevel tables in iommu_table - one for the hardware and
one with the corresponding userspace addresses. Before allocating the
tables, the iommu_table_group_ops::get_table_size() hook returns the
combined size of the two and VFIO SPAPR TCE IOMMU driver adjusts the
locked_vm counter correctly. When the table is actually allocated, the
amount of allocated memory is stored in iommu_table::it_allocated_size
and used to decrement the locked_vm counter when we release the memory
used by the table; .get_table_size() and .create_table() calculate it
independently but the result is expected to be the same.
However the allocator does not add the userspace table size to
.it_allocated_size so when we destroy the table because of VFIO PCI
unplug (i.e. VFIO container is gone but the userspace keeps running), we
decrement locked_vm by just a half of size of memory we are releasing.
To make things worse, since we enabled on-demand allocation of indirect
levels, it_allocated_size contains only the amount of memory actually
allocated at the table creation time which can just be a fraction. It is
not a problem with incrementing locked_vm (as get_table_size() value is
used) but it is with decrementing.
As the result, we leak locked_vm and may not be able to allocate more
IOMMU tables after few iterations of hotplug/unplug.
This sets it_allocated_size in the pnv_pci_ioda2_ops::create_table()
hook to what pnv_pci_ioda2_get_table_size() returns so from now on we
have a single place which calculates the maximum memory a table can
occupy. The original meaning of it_allocated_size is somewhat lost now
though.
We do not ditch it_allocated_size whatsoever here and we do not call
get_table_size() from vfio_iommu_spapr_tce.c when decrementing locked_vm
as we may have multiple IOMMU groups per container and even though they
all are supposed to have the same get_table_size() implementation, there
is a small chance for failure or confusion.
Fixes: 090bad39b237 ("powerpc/powernv: Add indirect levels to
it_userspace") Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by:
Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedarch/powerpc/platforms/powernv/pci-ioda-tce.c (diff)
The file was modifiedarch/powerpc/platforms/powernv/pci-ioda.c (diff)
Commit 22efb9f2aeff8be9b23912b142e3d4b77479e7b8 by gregkh
scsi: core: replace GFP_ATOMIC with GFP_KERNEL in scsi_scan.c
[ Upstream commit 1749ef00f7312679f76d5e9104c5d1e22a829038 ]
We had a test-report where, under memory pressure, adding LUNs to the
systems would fail (the tests add LUNs strictly in sequence):
[ 5525.853432] scsi 0:0:1:1088045124: Direct-Access     IBM      2107900
         .148 PQ: 0 ANSI: 5
[ 5525.853826] scsi 0:0:1:1088045124: alua: supports implicit TPGS
[ 5525.853830] scsi 0:0:1:1088045124: alua: device
naa.6005076303ffd32700000000000044da port group 0 rel port 43
[ 5525.853931] sd 0:0:1:1088045124: Attached scsi generic sg10 type 0
[ 5525.854075] sd 0:0:1:1088045124: [sdk] Disabling DIF Type 1
protection
[ 5525.855495] sd 0:0:1:1088045124: [sdk] 2097152 512-byte logical
blocks: (1.07 GB/1.00 GiB)
[ 5525.855606] sd 0:0:1:1088045124: [sdk] Write Protect is off
[ 5525.855609] sd 0:0:1:1088045124: [sdk] Mode Sense: ed 00 00 08
[ 5525.855795] sd 0:0:1:1088045124: [sdk] Write cache: enabled, read
cache: enabled, doesn't support DPO or FUA
[ 5525.857838]  sdk: sdk1
[ 5525.859468] sd 0:0:1:1088045124: [sdk] Attached SCSI disk
[ 5525.865073] sd 0:0:1:1088045124: alua: transition timeout set to 60
seconds
[ 5525.865078] sd 0:0:1:1088045124: alua: port group 00 state A
preferred supports tolusnA
[ 5526.015070] sd 0:0:1:1088045124: alua: port group 00 state A
preferred supports tolusnA
[ 5526.015213] sd 0:0:1:1088045124: alua: port group 00 state A
preferred supports tolusnA
[ 5526.587439] scsi_alloc_sdev: Allocation failure during SCSI scanning,
some SCSI devices might not be configured
[ 5526.588562] scsi_alloc_sdev: Allocation failure during SCSI scanning,
some SCSI devices might not be configured
Looking at the code of scsi_alloc_sdev(), and all the calling contexts,
there seems to be no reason to use GFP_ATMOIC here. All the different
call-contexts use a mutex at some point, and nothing in between that
requires no sleeping, as far as I could see. Additionally, the code that
later allocates the block queue for the device (scsi_mq_alloc_queue())
already uses GFP_KERNEL.
There are similar allocations in two other functions:
scsi_probe_and_add_lun(), and scsi_add_lun(),; that can also be done
with GFP_KERNEL.
Here is the contexts for the three functions so far:
    scsi_alloc_sdev()
       scsi_probe_and_add_lun()
           scsi_sequential_lun_scan()
               __scsi_scan_target()
                   scsi_scan_target()
                       mutex_lock()
                   scsi_scan_channel()
                       scsi_scan_host_selected()
                           mutex_lock()
           scsi_report_lun_scan()
               __scsi_scan_target()
               ...
           __scsi_add_device()
               mutex_lock()
           __scsi_scan_target()
               ...
       scsi_report_lun_scan()
           ...
       scsi_get_host_dev()
           mutex_lock()
    scsi_probe_and_add_lun()
       ...
    scsi_add_lun()
       scsi_probe_and_add_lun()
           ...
So replace all these, and give them a bit of a better chance to succeed,
with more chances of reclaim.
Signed-off-by: Benjamin Block <bblock@linux.ibm.com> Reviewed-by: Bart
Van Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/scsi/scsi_scan.c (diff)
Commit 366a5ee958d0847541446c1d967854561e74aaa3 by gregkh
kbuild: invoke syncconfig if include/config/auto.conf.cmd is missing
[ Upstream commit 9390dff66a52d1a60c6e517d8fa6cdbdffc83cb1 ]
If include/config/auto.conf.cmd is lost for some reasons, it is not
self-healing, so the top Makefile misses to run syncconfig. Move
include/config/auto.conf.cmd to the target side.
I used a pattern rule instead of a normal rule here although it is a bit
gross.
If the rule were written with a normal rule like this,
  include/config/auto.conf \
include/config/auto.conf.cmd \
include/config/tristate.conf: $(KCONFIG_CONFIG)
         $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig
... syncconfig would be executed per target.
Using a pattern rule makes sure that syncconfig is executed just once
because Make assumes the recipe will create all of the targets.
Here is a quote from the GNU Make manual [1]:
"Pattern rules may have more than one target. Unlike normal rules, this
does not act as many different rules with the same prerequisites and
recipe. If a pattern rule has multiple targets, make knows that the
rule's recipe is responsible for making all of the targets. The recipe
is executed only once to make all the targets. When searching for a
pattern rule to match a target, the target patterns of a rule other than
the one that matches the target in need of a rule are incidental: make
worries only about giving a recipe and prerequisites to the file
presently in question. However, when this file's recipe is run, the
other targets are marked as having been updated themselves."
[1]:
https://www.gnu.org/software/make/manual/html_node/Pattern-Intro.html
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedMakefile (diff)
Commit e3e9d97396cde9d626c7da381e47ac5ee676876c by gregkh
kbuild: make -r/-R effective in top Makefile for old Make versions
[ Upstream commit 3812b8c5c5d527239ac015f1f2c7654da7fcfbba ]
Adding -rR to MAKEFLAGS is important because we do not want to be
bothered by built-in implicit rules or variables.
One problem that used to exist in older GNU Make versions is
  MAKEFLAGS += -rR
... does not become effective in the current Makefile. When you are
building with O= option, it becomes effective in the top Makefile since
it recurses via 'sub-make' target. Otherwise, the top Makefile tries
implicit rules. That is why we explicitly add empty rules for Makefiles,
but we often miss to do that.
In fact, adding -d option to older GNU Make versions shows it is trying
a bunch of implicit pattern rules.
Considering target file `scripts/Makefile.kcov'.
Looking for an implicit rule for `scripts/Makefile.kcov'.
Trying pattern rule with stem `Makefile.kcov'.
Trying implicit prerequisite `scripts/Makefile.kcov.o'.
Trying pattern rule with stem `Makefile.kcov'.
Trying implicit prerequisite `scripts/Makefile.kcov.c'.
Trying pattern rule with stem `Makefile.kcov'.
Trying implicit prerequisite `scripts/Makefile.kcov.cc'.
Trying pattern rule with stem `Makefile.kcov'.
Trying implicit prerequisite `scripts/Makefile.kcov.C'.
...
This issue was fixed by GNU Make commit 58dae243526b ("[Savannah #20501]
Handle adding -r/-R to MAKEFLAGS in the makefile"). So, it is no longer
a problem if you use GNU Make 4.0 or later. However, older versions are
still widely used.
So, I decided to patch the kernel Makefile to invoke sub-make regardless
of O= option. This will allow further cleanups.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedMakefile (diff)
Commit 29b55af8a429e2ccbf35e68d3ea6593825d4153c by gregkh
btrfs: save drop_progress if we drop refs at all
[ Upstream commit aea6f028d01d629eda2e958ccd1133e805cda159 ]
Previously we only updated the drop_progress key if we were in the
DROP_REFERENCE stage of snapshot deletion.  This is because the
UPDATE_BACKREF stage checks the flags of the blocks it's converting to
FULL_BACKREF, so if we go over a block we processed before it doesn't
matter, we just don't do anything.
The problem is in do_walk_down() we will go ahead and drop the roots
reference to any blocks that we know we won't need to walk into.
Given subvolume A and snapshot B.  The root of B points to all of the
nodes that belong to A, so all of those nodes have a refcnt > 1.  If B
did not modify those blocks it'll hit this condition in do_walk_down
if (!wc->update_ref ||
   generation <= root->root_key.offset)
goto skip;
and in "goto skip" we simply do a btrfs_free_extent() for that bytenr
that we point at.
Now assume we modified some data in B, and then took a snapshot of B and
call it C.  C points to all the nodes in B, making every node the root
of B points to have a refcnt > 1.  This assumes the root level is 2 or
higher.
We delete snapshot B, which does the above work in do_walk_down,
free'ing our ref for nodes we share with A that we didn't modify.  Now
we hit a node we _did_ modify, thus we own.  We need to walk down into
this node and we set wc->stage == UPDATE_BACKREF.  We walk down to level
0 which we also own because we modified data.  We can't walk any further
down and thus now need to walk up and start the next part of the
deletion.  Now walk_up_proc is supposed to put us back into
DROP_REFERENCE, but there's an exception to this
if (level < wc->shared_level)
goto out;
we are at level == 0, and our shared_level == 1.  We skip out of this
one and go up to level 1.  Since path->slots[1] < nritems we
path->slots[1]++ and break out of walk_up_tree to stop our transaction
and loop back around.  Now in btrfs_drop_snapshot we have this snippet
if (wc->stage == DROP_REFERENCE) {
level = wc->level;
btrfs_node_key(path->nodes[level],
       &root_item->drop_progress,
       path->slots[level]);
root_item->drop_level = level;
}
our stage == UPDATE_BACKREF still, so we don't update the drop_progress
key.  This is a problem because we would have done btrfs_free_extent()
for the nodes leading up to our current position.  If we crash or
unmount here and go to remount we'll start over where we were before and
try to free our ref for blocks we've already freed, and thus abort()
out.
Fix this by keeping track of the last place we dropped a reference for
our block in do_walk_down.  Then if wc->stage == UPDATE_BACKREF we know
we'll start over from a place we meant to, and otherwise things continue
to work as they did before.
I have a complicated reproducer for this problem, without this patch
we'll fail to fsck the fs when replaying the log writes log.  With this
patch we can replay the whole log without any fsck or mount failures.
The steps to reproduce this easily are sort of tricky, I had to add a
couple of debug patches to the kernel in order to make it easy,
basically I just needed to make sure we did actually commit the
transaction every time we finished a walk_down_tree/walk_up_tree combo.
The reproducer:
1) Creates a base subvolume. 2) Creates 100k files in the subvolume. 3)
Snapshots the base subvolume (snap1). 4) Touches files 5000-6000 in
snap1. 5) Snapshots snap1 (snap2). 6) Deletes snap1.
I do this with dm-log-writes, and then replay to every FUA in the log
and fsck the fs.
Reviewed-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: Josef
Bacik <josef@toxicpanda.com>
[ copy reproducer steps ] Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/btrfs/extent-tree.c (diff)
Commit 33cb50fa0930fa61b7fb70e74f549438b4be2688 by gregkh
drm/amd/display: Fix reference counting for struct dc_sink.
[ Upstream commit dcd5fb82ffb484124203aa339733663ac0b059f3 ]
Reference counting in amdgpu_dm_connector for
amdgpu_dm_connector::dc_sink and amdgpu_dm_connector::dc_em_sink as well
as in dc_link::local_sink seems to be out of shape. Thus make reference
counting consistent for these members and just plain increment the
reference count when the variable gets assigned and decrement when the
pointer is set to zero or replaced. Also simplify reference counting in
selected function sopes to be sure the reference is released in any
case. In some cases add NULL pointer check before dereferencing. At a
hand full of places a comment is placed to stat that the reference
increment happened already somewhere else.
This actually fixes the following kernel bug on my system when enabling
display core in amdgpu. There are some more similar bug reports around,
so it probably helps at more places.
   kernel BUG at mm/slub.c:294!
  invalid opcode: 0000 [#1] SMP PTI
  CPU: 9 PID: 1180 Comm: Xorg Not tainted 5.0.0-rc1+ #2
  Hardware name: Supermicro X10DAi/X10DAI, BIOS 3.0a 02/05/2018
  RIP: 0010:__slab_free+0x1e2/0x3d0
  Code: 8b 54 24 30 48 89 4c 24 28 e8 da fb ff ff 4c 8b 54 24 28 85 c0
0f 85 67 fe ff ff 48 8d 65 d8 5b 41 5c 41 5d 41 5e 41 5f 5d c3 <0f> 0b
49 3b 5c 24 28 75 ab 48 8b 44 24 30 49 89 4c 24 28 49 89 44
  RSP: 0018:ffffb0978589fa90 EFLAGS: 00010246
  RAX: ffff92f12806c400 RBX: 0000000080200019 RCX: ffff92f12806c400
  RDX: ffff92f12806c400 RSI: ffffdd6421a01a00 RDI: ffff92ed2f406e80
  RBP: ffffb0978589fb40 R08: 0000000000000001 R09: ffffffffc0ee4748
  R10: ffff92f12806c400 R11: 0000000000000001 R12: ffffdd6421a01a00
  R13: ffff92f12806c400 R14: ffff92ed2f406e80 R15: ffffdd6421a01a20
  FS:  00007f4170be0ac0(0000) GS:ffff92ed2fb40000(0000)
knlGS:0000000000000000
  CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
  CR2: 0000562818aaa000 CR3: 000000045745a002 CR4: 00000000003606e0
  DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
  DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
  Call Trace:
   ? drm_dbg+0x87/0x90 [drm]
   dc_stream_release+0x28/0x50 [amdgpu]
   amdgpu_dm_connector_mode_valid+0xb4/0x1f0 [amdgpu]
   drm_helper_probe_single_connector_modes+0x492/0x6b0 [drm_kms_helper]
   drm_mode_getconnector+0x457/0x490 [drm]
   ? drm_connector_property_set_ioctl+0x60/0x60 [drm]
   drm_ioctl_kernel+0xa9/0xf0 [drm]
   drm_ioctl+0x201/0x3a0 [drm]
   ? drm_connector_property_set_ioctl+0x60/0x60 [drm]
   amdgpu_drm_ioctl+0x49/0x80 [amdgpu]
   do_vfs_ioctl+0xa4/0x630
   ? __sys_recvmsg+0x83/0xa0
   ksys_ioctl+0x60/0x90
   __x64_sys_ioctl+0x16/0x20
   do_syscall_64+0x5b/0x160
   entry_SYSCALL_64_after_hwframe+0x44/0xa9
  RIP: 0033:0x7f417110809b
  Code: 0f 1e fa 48 8b 05 ed bd 0c 00 64 c7 00 26 00 00 00 48 c7 c0 ff
ff ff ff c3 66 0f 1f 44 00 00 f3 0f 1e fa b8 10 00 00 00 0f 05 <48> 3d
01 f0 ff ff 73 01 c3 48 8b 0d bd bd 0c 00 f7 d8 64 89 01 48
  RSP: 002b:00007ffdd8d1c268 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
  RAX: ffffffffffffffda RBX: 0000562818a8ebc0 RCX: 00007f417110809b
  RDX: 00007ffdd8d1c2a0 RSI: 00000000c05064a7 RDI: 0000000000000012
  RBP: 00007ffdd8d1c2a0 R08: 0000562819012280 R09: 0000000000000007
  R10: 0000000000000000 R11: 0000000000000246 R12: 00000000c05064a7
  R13: 0000000000000012 R14: 0000000000000012 R15: 00007ffdd8d1c2a0
  Modules linked in: nfsv4 dns_resolver nfs lockd grace fscache fuse
vfat fat amdgpu intel_rapl sb_edac x86_pkg_temp_thermal intel_powerclamp
coretemp kvm_intel kvm irqbypass crct10dif_pclmul chash gpu_sched
crc32_pclmul snd_hda_codec_realtek ghash_clmulni_intel amd_iommu_v2
iTCO_wdt iTCO_vendor_support ttm snd_hda_codec_generic
snd_hda_codec_hdmi ledtrig_audio snd_hda_intel drm_kms_helper
snd_hda_codec intel_cstate snd_hda_core drm snd_hwdep snd_seq
snd_seq_device intel_uncore snd_pcm intel_rapl_perf snd_timer snd
soundcore ioatdma pcspkr intel_wmi_thunderbolt mxm_wmi i2c_i801 lpc_ich
pcc_cpufreq auth_rpcgss sunrpc igb crc32c_intel i2c_algo_bit dca wmi
hid_cherry analog gameport joydev
This patch is based on agd5f/drm-next-5.1-wip. This patch does not
require all of that, but agd5f/drm-next-5.1-wip contains at least one
more dc_sink counting fix that I could spot.
Signed-off-by: Mathias Fröhlich <Mathias.Froehlich@web.de> Reviewed-by:
Leo Li <sunpeng.li@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/gpu/drm/amd/display/dc/core/dc_link.c (diff)
The file was modifieddrivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c (diff)
The file was modifieddrivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c (diff)
Commit 5e91baea2c1fc8568fa149445e7714dcefb6cde5 by gregkh
ath10k: don't report unset rssi values to mac80211
[ Upstream commit 7d444522303177f3a3c09b9abb104ddeea470a70 ]
The SDIO firmware does not provide RSSI value to the host, it's only set
to zero. In that case don't report the value to mac80211. One risk here
is that value zero might be a valid value with other firmware, currently
there's no way to detect that.
Without the fix, the rssi value indicated by iw changes between the
actual value and -95.
Tested with QCA6174 SDIO with firmware WLAN.RMH.4.4.1-00005-QCARMSWP-1.
Co-developed-by: Wen Gong <wgong@codeaurora.org> Signed-off-by: Alagu
Sankar <alagusankar@silex-india.com> Signed-off-by: Wen Gong
<wgong@codeaurora.org> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/net/wireless/ath/ath10k/htt_rx.c (diff)
Commit 8e28ed0b7b8dc9ce7e642b72309291ef90dc7c2c by gregkh
powerpc/xmon: Fix opcode being uninitialized in print_insn_powerpc
[ Upstream commit e7140639b1de65bba435a6bd772d134901141f86 ]
When building with -Wsometimes-uninitialized, Clang warns:
  arch/powerpc/xmon/ppc-dis.c:157:7: warning: variable 'opcode' is used
uninitialized whenever 'if' condition is false
[-Wsometimes-uninitialized]
   if (cpu_has_feature(CPU_FTRS_POWER9))
       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/xmon/ppc-dis.c:167:7: note: uninitialized use occurs here
   if (opcode == NULL)
       ^~~~~~
arch/powerpc/xmon/ppc-dis.c:157:3: note: remove the 'if' if its
condition is always true
   if (cpu_has_feature(CPU_FTRS_POWER9))
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/powerpc/xmon/ppc-dis.c:132:38: note: initialize the variable
'opcode' to silence this warning
   const struct powerpc_opcode *opcode;
                                      ^
                                       = NULL
1 warning generated.
This warning seems to make no sense on the surface because opcode is set
to NULL right below this statement. However, there is a comma instead of
semicolon to end the dialect assignment, meaning that the opcode
assignment only happens in the if statement. Properly terminate that
line so that Clang no longer warns.
Fixes: 5b102782c7f4 ("powerpc/xmon: Enable disassembly files
(compilation changes)") Signed-off-by: Nathan Chancellor
<natechancellor@gmail.com> Reviewed-by: Nick Desaulniers
<ndesaulniers@google.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedarch/powerpc/xmon/ppc-dis.c (diff)
Commit 1e084b9e2037489865c7ee18dd4e3c19b958904f by gregkh
coresight: etm4x: Add support to enable ETMv4.2
[ Upstream commit 5666dfd1d8a45a167f0d8b4ef47ea7f780b1f24a ]
SDM845 has ETMv4.2 and can use the existing etm4x driver. But the
current etm driver checks only for ETMv4.0 and errors out for other
etm4x versions. This patch adds this missing support to enable SoC's
with ETMv4x to use same driver by checking only the ETM architecture
major version number.
Without this change, we get below error during etm probe:
/ # dmesg | grep etm
[    6.660093] coresight-etm4x: probe of 7040000.etm failed with error
-22
[    6.666902] coresight-etm4x: probe of 7140000.etm failed with error
-22
[    6.673708] coresight-etm4x: probe of 7240000.etm failed with error
-22
[    6.680511] coresight-etm4x: probe of 7340000.etm failed with error
-22
[    6.687313] coresight-etm4x: probe of 7440000.etm failed with error
-22
[    6.694113] coresight-etm4x: probe of 7540000.etm failed with error
-22
[    6.700914] coresight-etm4x: probe of 7640000.etm failed with error
-22
[    6.707717] coresight-etm4x: probe of 7740000.etm failed with error
-22
With this change, etm probe is successful:
/ # dmesg | grep etm
[    6.659198] coresight-etm4x 7040000.etm: CPU0: ETM v4.2 initialized
[    6.665848] coresight-etm4x 7140000.etm: CPU1: ETM v4.2 initialized
[    6.672493] coresight-etm4x 7240000.etm: CPU2: ETM v4.2 initialized
[    6.679129] coresight-etm4x 7340000.etm: CPU3: ETM v4.2 initialized
[    6.685770] coresight-etm4x 7440000.etm: CPU4: ETM v4.2 initialized
[    6.692403] coresight-etm4x 7540000.etm: CPU5: ETM v4.2 initialized
[    6.699024] coresight-etm4x 7640000.etm: CPU6: ETM v4.2 initialized
[    6.705646] coresight-etm4x 7740000.etm: CPU7: ETM v4.2 initialized
Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com> Signed-off-by:
Mathieu Poirier <mathieu.poirier@linaro.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/hwtracing/coresight/coresight-etm4x.c (diff)
Commit 8cada074059ffc05a34b1268b349efa8f38f5199 by gregkh
serial: 8250_pxa: honor the port number from devicetree
[ Upstream commit fe9ed6d2483fda55465f32924fb15bce0fac3fac ]
Like the other OF-enabled drivers, use the port number from the firmware
if the devicetree specifies an alias:
  aliases {
     ...
     serial2 = &uart2; /* Should be ttyS2 */
}
This is how the deprecated pxa.c driver behaved, switching to 8250_pxa
messes up the numbering.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/tty/serial/8250/8250_pxa.c (diff)
Commit dbda5b6625bda33a1369a6aadf756287fd70c1d8 by gregkh
ARM: 8840/1: use a raw_spinlock_t in unwind
[ Upstream commit 74ffe79ae538283bbf7c155e62339f1e5c87b55a ]
Mostly unwind is done with irqs enabled however SLUB may call it with
irqs disabled while creating a new SLUB cache.
I had system freeze while loading a module which called
kmem_cache_create() on init. That means SLUB's __slab_alloc() disabled
interrupts and then
->new_slab_objects()
->new_slab()
->setup_object()
  ->setup_object_debug()
   ->init_tracking()
    ->set_track()
     ->save_stack_trace()
      ->save_stack_trace_tsk()
       ->walk_stackframe()
        ->unwind_frame()
         ->unwind_find_idx()
          =>spin_lock_irqsave(&unwind_lock);
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedarch/arm/kernel/unwind.c (diff)
Commit af6366bb82e6d5d6cd705d4f85378ea036b1a3c6 by gregkh
ARM: 8845/1: use unified assembler in c files
[ Upstream commit b7e8c9397cd4efe6567d2728f091f1b728025533 ]
Use unified assembler syntax (UAL) in inline assembler. Divided syntax
is considered deprecated. This will also allow to build the kernel using
LLVM's integrated assembler.
When compiling non-Thumb2 GCC always emits a ".syntax divided" at the
beginning of the inline assembly which makes the assembler fail. Since
GCC 5 there is the -masm-syntax-unified GCC option which make GCC assume
unified syntax asm and hence emits ".syntax unified" even in ARM mode.
However, the option is broken since GCC version 6 (see GCC PR88648 [1]).
Work around by adding ".syntax unified" as part of the inline assembly.
[0]
https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html#index-masm-syntax-unified
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88648
Signed-off-by: Stefan Agner <stefan@agner.ch> Acked-by: Nicolas Pitre
<nico@linaro.org> Signed-off-by: Russell King
<rmk+kernel@armlinux.org.uk> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedarch/arm/mm/copypage-v4mc.c (diff)
The file was modifiedarch/arm/mm/copypage-v4wt.c (diff)
The file was modifiedarch/arm/mm/copypage-v4wb.c (diff)
Commit 957b2d2317e99b7e4af0a1203a0ebbb1f8267cd7 by gregkh
iommu/io-pgtable-arm-v7s: Only kmemleak_ignore L2 tables
[ Upstream commit 032ebd8548c9d05e8d2bdc7a7ec2fe29454b0ad0 ]
L1 tables are allocated with __get_dma_pages, and therefore already
ignored by kmemleak.
Without this, the kernel would print this error message on boot, when
the first L1 table is allocated:
[    2.810533] kmemleak: Trying to color unknown object at
0xffffffd652388000 as Black
[    2.818190] CPU: 5 PID: 39 Comm: kworker/5:0 Tainted: G S           
   4.19.16 #8
[    2.831227] Workqueue: events deferred_probe_work_func
[    2.836353] Call trace:
...
[    2.852532]  paint_ptr+0xa0/0xa8
[    2.855750]  kmemleak_ignore+0x38/0x6c
[    2.859490]  __arm_v7s_alloc_table+0x168/0x1f4
[    2.863922]  arm_v7s_alloc_pgtable+0x114/0x17c
[    2.868354]  alloc_io_pgtable_ops+0x3c/0x78
...
Fixes: e5fc9753b1a8314 ("iommu/io-pgtable: Add ARMv7 short descriptor
support") Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Joerg Roedel
<jroedel@suse.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/iommu/io-pgtable-arm-v7s.c (diff)
Commit 13fe58e28c216dd09793c23fbe7645c4db9a3470 by gregkh
powerpc/hugetlb: Handle mmap_min_addr correctly in get_unmapped_area
callback
[ Upstream commit 5330367fa300742a97e20e953b1f77f48392faae ]
After we ALIGN up the address we need to make sure we didn't overflow
and resulted in zero address. In that case, we need to make sure that
the returned address is greater than mmap_min_addr.
This fixes selftest va_128TBswitch --run-hugetlb reporting failures when
run as non root user for
mmap(-1, MAP_HUGETLB)
The bug is that a non-root user requesting address -1 will be given
address 0 which will then fail, whereas they should have been given
something else that would have succeeded.
We also avoid the first mmap(-1, MAP_HUGETLB) returning NULL address as
mmap address with this change. So we think this is not a security issue,
because it only affects whether we choose an address below
mmap_min_addr, not whether we actually allow that address to be mapped.
ie. there are existing capability checks to prevent a user mapping below
mmap_min_addr and those will still be honoured even without this fix.
Fixes: 484837601d4d ("powerpc/mm: Add radix support for hugetlb")
Reviewed-by: Laurent Dufour <ldufour@linux.vnet.ibm.com> Signed-off-by:
Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Michael
Ellerman <mpe@ellerman.id.au> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedarch/powerpc/mm/hugetlbpage-radix.c (diff)
Commit b3425e19f61492291de9abe2b987aed167982973 by gregkh
net: dsa: mv88e6xxx: Default CMODE to 1000BaseX only on 6390X
[ Upstream commit 65b034cf5c1766492aa107958149b440889480be ]
Commit 787799a9d555 sets the SERDES interfaces of 6390 and 6390X to
1000BaseX, but this is only needed on 6390X, since there are SERDES
interfaces which can be used on lower ports on 6390.
This commit fixes this by returning to previous behaviour on 6390.
(Previous behaviour means that CMODE is not set at all if requested mode
is NA).
This is needed on Turris MOX, where the 88e6190 is connected to CPU in
2500BaseX mode.
Fixes: 787799a9d555 ("net: dsa: mv88e6xxx: Default ports 9/10 6390X
CMODE to 1000BaseX") Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/dsa/mv88e6xxx/port.c (diff)
Commit 565e4ecefeae67d0b1575dd6016b161deda00db5 by gregkh
ice: fix ice_remove_rule_internal vsi_list handling
[ Upstream commit f9264dd687f8d3f9104c9900f8f3e5e419f27c55 ]
When adding multiple VLANs to the same VSI, the ice_add_vlan code will
share the VSI list, so as not to create multiple unnecessary VSI lists.
Consider the following flow
  ice_add_vlan(hw, <VSI 0 VID 7, VSI 0 VID 8, VSI 0 VID 9>)
Where we add three VLAN filters for VIDs 7, 8, and 9, all for VSI 0.
The ice_add_vlan will create a single vsi_list and share it among all
the filters.
Later, if we try to remove a VLAN,
  ice_remove_vlan(hw, <VSI 0 VID 7>)
Then the removal code will update the vsi_list and remove VSI 0 from it.
But, since the vsi_list is shared, this breaks the list for the other
users who reference it. We actually even free the VSI list memory, and
may result in segmentation faults.
This is due to the way that VLAN rule share VSI lists with reference
counts, and is caused because we call ice_rem_update_vsi_list even when
the ref_cnt is greater than one.
To fix this, handle the case where ref_cnt is greater than one
separately. In this case, we need to remove the associated rule without
modifying the vsi_list, since it is currently being referenced by
another rule. Instead, we just need to decrement the VSI list ref_cnt.
The case for handling sharing of VSI lists with multiple VSIs is not
currently supported by this code. No such rules will be created today,
and this code will require changes if/when such code is added.
Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Reviewed-by:
Bruce Allan <bruce.w.allan@intel.com> Signed-off-by: Anirudh
Venkataramanan <anirudh.venkataramanan@intel.com> Tested-by: Andrew
Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher
<jeffrey.t.kirsher@intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/ethernet/intel/ice/ice_switch.c (diff)
Commit 9a27e9ef2338f5dfdb039a3ce8aa3b4c11c7caca by gregkh
perf script: Handle missing fields with -F +..
[ Upstream commit 4b6ac811bce46c83811b83cdf87b41251596b9fc ]
When using -F + syntax to add a field the existing defaults are
currently all marked user_set. This can cause errors when some field is
missing in the perf.data
This patch tracks the actually user set fields separately, so that we
don't error out in this case.
Before:
  % perf record true
% perf script -F +metric
Samples for 'cycles:ppp' event do not have CPU attribute set. Cannot
print 'cpu' field.
%
After:
  5 perf record true
% perf script -F +metric
             perf 28936 278636.237688:          1 cycles:ppp:
ffffffff8117da99 perf_event_exec+0x59
(/lib/modules/4.20.0-odilo/build/vmlinux)
...
%
Signed-off-by: Andi Kleen <ak@linux.intel.com> Tested-by: Arnaldo
Carvalho de Melo <acme@redhat.com> Acked-by: Jiri Olsa
<jolsa@kernel.org> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Stephane Eranian <eranian@google.com> Link:
http://lkml.kernel.org/r/20190224153722.27020-2-andi@firstfloor.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/builtin-script.c (diff)
Commit 8f6019b404c89400fdffd186d17ffcf42973e2b8 by gregkh
btrfs: qgroup: Make qgroup async transaction commit more aggressive
[ Upstream commit f5fef4593653dfa2a865c485bb81415de51d5c99 ]
[BUG] Btrfs qgroup will still hit EDQUOT under the following case:
  $ dev=/dev/test/test
$ mnt=/mnt/btrfs
$ umount $mnt &> /dev/null
$ umount $dev &> /dev/null
  $ mkfs.btrfs -f $dev
$ mount $dev $mnt -o nospace_cache
  $ btrfs subv create $mnt/subv
$ btrfs quota enable $mnt
$ btrfs quota rescan -w $mnt
$ btrfs qgroup limit -e 1G $mnt/subv
  $ fallocate -l 900M $mnt/subv/padding
$ sync
  $ rm $mnt/subv/padding
  # Hit EDQUOT
$ xfs_io -f -c "pwrite 0 512M" $mnt/subv/real_file
[CAUSE] Since commit a514d63882c3 ("btrfs: qgroup: Commit transaction in
advance to reduce early EDQUOT"), btrfs is not forced to commit
transaction to reclaim more quota space.
Instead, we just check pertrans metadata reservation against some
threshold and try to do asynchronously transaction commit.
However in above case, the pertrans metadata reservation is pretty small
thus it will never trigger asynchronous transaction commit.
[FIX] Instead of only accounting pertrans metadata reservation, we
calculate how much free space we have, and if there isn't much free
space left, commit transaction asynchronously to try to free some space.
This may slow down the fs when we have less than 32M free qgroup space,
but should reduce a lot of false EDQUOT, so the cost should be
acceptable.
Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba
<dsterba@suse.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/btrfs/qgroup.c (diff)
Commit 895927dc1c6aaab1a49b2ce936ee9140593d06c3 by gregkh
btrfs: don't enospc all tickets on flush failure
[ Upstream commit f91587e4151e84f798f37839dddd3e4152fb4c76 ]
With the introduction of the per-inode block_rsv it became possible to
have really really large reservation requests made because of data
fragmentation.  Since the ticket stuff assumed that we'd always have
relatively small reservation requests it just killed all tickets if we
were unable to satisfy the current request.
However, this is generally not the case anymore.  So fix this logic to
instead see if we had a ticket that we were able to give some
reservation to, and if we were continue the flushing loop again.
Likewise we make the tickets use the space_info_add_old_bytes() method
of returning what reservation they did receive in hopes that it could
satisfy reservations down the line.
Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Josef
Bacik <josef@toxicpanda.com> Signed-off-by: David Sterba
<dsterba@suse.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/btrfs/extent-tree.c (diff)
Commit f9cf94eca1be344a6bdbd6fcd70873a851d52f07 by gregkh
mmc: omap: fix the maximum timeout setting
[ Upstream commit a6327b5e57fdc679c842588c3be046c0b39cc127 ]
When running OMAP1 kernel on QEMU, MMC access is annoyingly noisy:
MMC: CTO of 0xff and 0xfe cannot be used!
MMC: CTO of 0xff and 0xfe cannot be used!
MMC: CTO of 0xff and 0xfe cannot be used!
[ad inf.]
Emulator warnings appear to be valid. The TI document SPRU680 [1]
("OMAP5910 Dual-Core Processor MultiMedia Card/Secure Data Memory Card
(MMC/SD) Reference Guide") page 36 states that the maximum timeout is
253 cycles and "0xff and 0xfe cannot be used".
Fix by using 0xfd as the maximum timeout.
Tested using QEMU 2.5 (Siemens SX1 machine, OMAP310), and also checked
on real hardware using Palm TE (OMAP310), Nokia 770 (OMAP1710) and Nokia
N810
(OMAP2420) that MMC works as before.
[1] http://www.ti.com/lit/ug/spru680/spru680.pdf
Fixes: 730c9b7e6630f ("[MMC] Add OMAP MMC host driver") Signed-off-by:
Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Ulf Hansson
<ulf.hansson@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/mmc/host/omap.c (diff)
Commit 660b8b783aed59c72aeac5bb0394983f74e90fab by gregkh
net: dsa: mv88e6xxx: Add lockdep classes to fix false positive splat
[ Upstream commit f6d9758b12660484b6639364cc406da92a918c96 ]
The following false positive lockdep splat has been observed.
====================================================== WARNING: possible
circular locking dependency detected 4.20.0+ #302 Not tainted
------------------------------------------------------ systemd-udevd/160
is trying to acquire lock: edea6080 (&chip->reg_lock){+.+.}, at:
__setup_irq+0x640/0x704
but task is already holding lock: edff0340 (&desc->request_mutex){+.+.},
at: __setup_irq+0xa0/0x704
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (&desc->request_mutex){+.+.}:
      mutex_lock_nested+0x1c/0x24
      __setup_irq+0xa0/0x704
      request_threaded_irq+0xd0/0x150
      mv88e6xxx_probe+0x41c/0x694 [mv88e6xxx]
      mdio_probe+0x2c/0x54
      really_probe+0x200/0x2c4
      driver_probe_device+0x5c/0x174
      __driver_attach+0xd8/0xdc
      bus_for_each_dev+0x58/0x7c
      bus_add_driver+0xe4/0x1f0
      driver_register+0x7c/0x110
      mdio_driver_register+0x24/0x58
      do_one_initcall+0x74/0x2e8
      do_init_module+0x60/0x1d0
      load_module+0x1968/0x1ff4
      sys_finit_module+0x8c/0x98
      ret_fast_syscall+0x0/0x28
      0xbedf2ae8
-> #0 (&chip->reg_lock){+.+.}:
      __mutex_lock+0x50/0x8b8
      mutex_lock_nested+0x1c/0x24
      __setup_irq+0x640/0x704
      request_threaded_irq+0xd0/0x150
      mv88e6xxx_g2_irq_setup+0xcc/0x1b4 [mv88e6xxx]
      mv88e6xxx_probe+0x44c/0x694 [mv88e6xxx]
      mdio_probe+0x2c/0x54
      really_probe+0x200/0x2c4
      driver_probe_device+0x5c/0x174
      __driver_attach+0xd8/0xdc
      bus_for_each_dev+0x58/0x7c
      bus_add_driver+0xe4/0x1f0
      driver_register+0x7c/0x110
      mdio_driver_register+0x24/0x58
      do_one_initcall+0x74/0x2e8
      do_init_module+0x60/0x1d0
      load_module+0x1968/0x1ff4
      sys_finit_module+0x8c/0x98
      ret_fast_syscall+0x0/0x28
      0xbedf2ae8
other info that might help us debug this:
Possible unsafe locking scenario:
       CPU0                    CPU1
      ----                    ----
lock(&desc->request_mutex);
                              lock(&chip->reg_lock);
                              lock(&desc->request_mutex);
lock(&chip->reg_lock);
&desc->request_mutex refer to two different mutex. #1 is the GPIO for
the chip interrupt. #2 is the chained interrupt between global 1 and
global 2.
Add lockdep classes to the GPIO interrupt to avoid this.
Reported-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by:
Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller
<davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.c (diff)
Commit dd8ab7cdbcda54e49a9d466e6c7fbed54a288762 by gregkh
net: hns3: fix setting of the hns reset_type for rdma hw errors
[ Upstream commit eb4c2ccbad6c688be791e0c08640a40124558c03 ]
Presently the hns reset_type for the roce errors is set in the
hclge_log_and_clear_rocee_ras_error function. This function is also
called to detect and clear roce errors while enabling the rdma error
interrupts. However there is no hns reset requested for this case. This
can cause issue of wrong reset_type used with subsequent hns reset as
the reset_type set in the above case was not cleared.
This patch moves setting of hns reset_type for the roce errors from
hclge_log_and_clear_rocee_ras_error function to
hclge_handle_rocee_ras_error.
Fixes: 630ba007f475 ("net: hns3: add handling of RDMA RAS errors")
Reported-by: Huazhong Tan <tanhuazhong@huawei.com> Reported-by: Xiaofei
Tan <tanxiaofei@huawei.com> Signed-off-by: Shiju Jose
<shiju.jose@huawei.com> Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c (diff)
Commit cae3c93ad96b7e25817563d8c7c969de074a0ebb by gregkh
veth: Fix -Wformat-truncation
[ Upstream commit abdf47aab4123ece48877cab4153db44fe4dc340 ]
Provide a precision hint to snprintf() in order to eliminate a
-Wformat-truncation warning provided below. A maximum of 11 characters
is allowed to reach a maximum of 32 - 1 characters given a possible
maximum value of queues using up to UINT_MAX which occupies 10
characters. Incidentally 11 is the number of characters for
"xdp_packets" which is the largest string we append.
drivers/net/veth.c: In function 'veth_get_strings':
drivers/net/veth.c:118:47: warning: '%s' directive output may be
truncated writing up to 31 bytes into a region of size between 12 and 21
[-Wformat-truncation=]
    snprintf(p, ETH_GSTRING_LEN, "rx_queue_%u_%s",
                                              ^~
drivers/net/veth.c:118:5: note: 'snprintf' output between 12 and 52
bytes into a destination of size 32
    snprintf(p, ETH_GSTRING_LEN, "rx_queue_%u_%s",
    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      i, veth_rq_stats_desc[j].desc);
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/veth.c (diff)
Commit a782956c2a305551a49962ad6bd784d14af769e7 by gregkh
e1000e: Fix -Wformat-truncation warnings
[ Upstream commit 135e7245479addc6b1f5d031e3d7e2ddb3d2b109 ]
Provide precision hints to snprintf() since we know the destination
buffer size of the RX/TX ring names are IFNAMSIZ + 5 - 1. This fixes the
following warnings:
drivers/net/ethernet/intel/e1000e/netdev.c: In function
'e1000_request_msix':
drivers/net/ethernet/intel/e1000e/netdev.c:2109:13: warning: 'snprintf'
output may be truncated before the last format character
[-Wformat-truncation=]
    "%s-rx-0", netdev->name);
            ^ drivers/net/ethernet/intel/e1000e/netdev.c:2107:3: note:
'snprintf' output between 6 and 21 bytes into a destination of size 20
  snprintf(adapter->rx_ring->name,
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    sizeof(adapter->rx_ring->name) - 1,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    "%s-rx-0", netdev->name);
    ~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/intel/e1000e/netdev.c:2125:13: warning: 'snprintf'
output may be truncated before the last format character
[-Wformat-truncation=]
    "%s-tx-0", netdev->name);
            ^ drivers/net/ethernet/intel/e1000e/netdev.c:2123:3: note:
'snprintf' output between 6 and 21 bytes into a destination of size 20
  snprintf(adapter->tx_ring->name,
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    sizeof(adapter->tx_ring->name) - 1,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    "%s-tx-0", netdev->name);
    ~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/ethernet/intel/e1000e/netdev.c (diff)
Commit 6f93033d93d12b3947177d5059bbca9a7d7f9cd9 by gregkh
mlxsw: spectrum: Avoid -Wformat-truncation warnings
[ Upstream commit ab2c4e2581ad32c28627235ff0ae8c5a5ea6899f ]
Give precision identifiers to the two snprintf() formatting the priority
and TC strings to avoid producing these two warnings:
drivers/net/ethernet/mellanox/mlxsw/spectrum.c: In function
'mlxsw_sp_port_get_prio_strings':
drivers/net/ethernet/mellanox/mlxsw/spectrum.c:2132:37: warning: '%d'
directive output may be truncated writing between 1 and 3 bytes into a
region of size between 0 and 31 [-Wformat-truncation=]
  snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
                                    ^~
drivers/net/ethernet/mellanox/mlxsw/spectrum.c:2132:3: note: 'snprintf'
output between 3 and 36 bytes into a destination of size 32
  snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    mlxsw_sp_port_hw_prio_stats[i].str, prio);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/ethernet/mellanox/mlxsw/spectrum.c: In function
'mlxsw_sp_port_get_tc_strings':
drivers/net/ethernet/mellanox/mlxsw/spectrum.c:2143:37: warning: '%d'
directive output may be truncated writing between 1 and 11 bytes into a
region of size between 0 and 31 [-Wformat-truncation=]
  snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
                                    ^~
drivers/net/ethernet/mellanox/mlxsw/spectrum.c:2143:3: note: 'snprintf'
output between 3 and 44 bytes into a destination of size 32
  snprintf(*p, ETH_GSTRING_LEN, "%s_%d",
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    mlxsw_sp_port_hw_tc_stats[i].str, tc);
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Reviewed-by: Ido
Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/spectrum.c (diff)
Commit e2427570b374a58f24f7d9eba7269cef0481f4d5 by gregkh
i2c: Allow recovery of the initial IRQ by an I2C client device.
[ Upstream commit 93b6604c5a669d84e45fe5129294875bf82eb1ff ]
A previous change allowed I2C client devices to discover new IRQs upon
reprobe by clearing the IRQ in i2c_device_remove. However, if an IRQ was
assigned in i2c_new_device, that information is lost.
For example, the touchscreen and trackpad devices on a Dell Inspiron
laptop are I2C devices whose IRQs are defined by ACPI extended IRQ
types. The client device structures are initialized during an ACPI walk.
After removing the i2c_hid device, modprobe fails.
This change caches the initial IRQ value in i2c_new_device and then
resets the client device IRQ to the initial value in i2c_device_remove.
Fixes: 6f108dd70d30 ("i2c: Clear client->irq in i2c_device_remove")
Signed-off-by: Jim Broadus <jbroadus@gmail.com> Reviewed-by: Benjamin
Tissoires <benjamin.tissoires@redhat.com> Reviewed-by: Charles Keepax
<ckeepax@opensource.cirrus.com>
[wsa: this is an easy to backport fix for the regression. We will
refactor the code to handle irq assignments better in general.]
Signed-off-by: Wolfram Sang <wsa@the-dreams.de> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/i2c/i2c-core-base.c (diff)
The file was modifiedinclude/linux/i2c.h (diff)
Commit a21f5c44cb8e6b5ecd0bc3592bc4984ca98a1020 by gregkh
platform/x86: ideapad-laptop: Fix no_hw_rfkill_list for Lenovo RESCUER
R720-15IKBN
[ Upstream commit 4d9b2864a415fec39150bc13efc730c7eb88711e ]
Commit ae7c8cba3221 ("platform/x86: ideapad-laptop: add lenovo RESCUER
R720-15IKBN to no_hw_rfkill_list") added
   DMI_MATCH(DMI_BOARD_NAME, "80WW") for Lenovo RESCUER R720-15IKBN.
But DMI_BOARD_NAME does not match 80WW on Lenovo RESCUER R720-15IKBN,
thus cause Wireless LAN still be hard blocked.
On Lenovo RESCUER R720-15IKBN:
   ~$ cat /sys/class/dmi/id/sys_vendor
   LENOVO
   ~$ cat /sys/class/dmi/id/board_name
   Provence-5R3
   ~$ cat /sys/class/dmi/id/product_name
   80WW
   ~$ cat /sys/class/dmi/id/product_version
   Lenovo R720-15IKBN
So on Lenovo RESCUER R720-15IKBN:
   DMI_SYS_VENDOR should match "LENOVO",
   DMI_BOARD_NAME should match "Provence-5R3",
   DMI_PRODUCT_NAME should match "80WW",
   DMI_PRODUCT_VERSION should match "Lenovo R720-15IKBN".
Fix it, and in according with other entries in no_hw_rfkill_list, use
DMI_PRODUCT_VERSION instead of DMI_BOARD_NAME.
Fixes: ae7c8cba3221 ("platform/x86: ideapad-laptop: add lenovo RESCUER
R720-15IKBN to no_hw_rfkill_list") Signed-off-by: Yang Fan
<nullptr.cpp@gmail.com> Signed-off-by: Darren Hart (VMware)
<dvhart@infradead.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/platform/x86/ideapad-laptop.c (diff)
Commit 540f120998dff8c22e4a5ff734732f4550f2765b by gregkh
platform/mellanox: mlxreg-hotplug: Fix KASAN warning
[ Upstream commit e4c275f77624961b56cce397814d9d770a45ac59 ]
Fix the following KASAN warning produced when booting a 64-bit kernel:
[   13.334750] BUG: KASAN: stack-out-of-bounds in
find_first_bit+0x19/0x70
[   13.342166] Read of size 8 at addr ffff880235067178 by task
kworker/2:1/42
[   13.342176] CPU: 2 PID: 42 Comm: kworker/2:1 Not tainted 4.20.0-rc1+
#106
[   13.342179] Hardware name: Mellanox Technologies Ltd.
MSN2740/Mellanox x86 SFF board, BIOS 5.6.5 06/07/2016
[   13.342190] Workqueue: events deferred_probe_work_func
[   13.342194] Call Trace:
[   13.342206]  dump_stack+0xc7/0x15b
[   13.342214]  ? show_regs_print_info+0x5/0x5
[   13.342220]  ? kmsg_dump_rewind_nolock+0x59/0x59
[   13.342234]  ? _raw_write_lock_irqsave+0x100/0x100
[   13.351593]  print_address_description+0x73/0x260
[   13.351603]  kasan_report+0x260/0x380
[   13.351611]  ? find_first_bit+0x19/0x70
[   13.351619]  find_first_bit+0x19/0x70
[   13.351630]  mlxreg_hotplug_work_handler+0x73c/0x920 [mlxreg_hotplug]
[   13.351639]  ? __lock_text_start+0x8/0x8
[   13.351646]  ? _raw_write_lock_irqsave+0x80/0x100
[   13.351656]  ? mlxreg_hotplug_remove+0x1e0/0x1e0 [mlxreg_hotplug]
[   13.351663]  ? regmap_volatile+0x40/0xb0
[   13.351668]  ? regcache_write+0x4c/0x90
[   13.351676]  ? mlxplat_mlxcpld_reg_write+0x24/0x30 [mlx_platform]
[   13.351681]  ? _regmap_write+0xea/0x220
[   13.351688]  ? __mutex_lock_slowpath+0x10/0x10
[   13.351696]  ? devm_add_action+0x70/0x70
[   13.351701]  ? mutex_unlock+0x1d/0x40
[   13.351710]  mlxreg_hotplug_probe+0x82e/0x989 [mlxreg_hotplug]
[   13.351723]  ? mlxreg_hotplug_work_handler+0x920/0x920
[mlxreg_hotplug]
[   13.351731]  ? sysfs_do_create_link_sd.isra.2+0xf4/0x190
[   13.351737]  ? sysfs_rename_link_ns+0xf0/0xf0
[   13.351743]  ? devres_close_group+0x2b0/0x2b0
[   13.351749]  ? pinctrl_put+0x20/0x20
[   13.351755]  ? acpi_dev_pm_attach+0x2c/0xd0
[   13.351763]  platform_drv_probe+0x70/0xd0
[   13.351771]  really_probe+0x480/0x6e0
[   13.351778]  ? device_attach+0x10/0x10
[   13.351784]  ? __lock_text_start+0x8/0x8
[   13.351790]  ? _raw_write_lock_irqsave+0x80/0x100
[   13.351797]  ? _raw_write_lock_irqsave+0x80/0x100
[   13.351806]  ? __driver_attach+0x190/0x190
[   13.351812]  driver_probe_device+0x17d/0x1a0
[   13.351819]  ? __driver_attach+0x190/0x190
[   13.351825]  bus_for_each_drv+0xd6/0x130
[   13.351831]  ? bus_rescan_devices+0x20/0x20
[   13.351837]  ? __mutex_lock_slowpath+0x10/0x10
[   13.351845]  __device_attach+0x18c/0x230
[   13.351852]  ? device_bind_driver+0x70/0x70
[   13.351859]  ? __mutex_lock_slowpath+0x10/0x10
[   13.351866]  bus_probe_device+0xea/0x110
[   13.351874]  deferred_probe_work_func+0x1c9/0x290
[   13.351882]  ? driver_deferred_probe_add+0x1d0/0x1d0
[   13.351889]  ? preempt_notifier_dec+0x20/0x20
[   13.351897]  ? read_word_at_a_time+0xe/0x20
[   13.351904]  ? strscpy+0x151/0x290
[   13.351912]  ? set_work_pool_and_clear_pending+0x9c/0xf0
[   13.351918]  ? __switch_to_asm+0x34/0x70
[   13.351924]  ? __switch_to_asm+0x40/0x70
[   13.351929]  ? __switch_to_asm+0x34/0x70
[   13.351935]  ? __switch_to_asm+0x40/0x70
[   13.351942]  process_one_work+0x5cc/0xa00
[   13.351952]  ? pwq_dec_nr_in_flight+0x1e0/0x1e0
[   13.351960]  ? pci_mmcfg_check_reserved+0x80/0xb8
[   13.351967]  ? run_rebalance_domains+0x250/0x250
[   13.351980]  ? stack_access_ok+0x35/0x80
[   13.351986]  ? deref_stack_reg+0xa1/0xe0
[   13.351994]  ? schedule+0xcd/0x250
[   13.352000]  ? worker_enter_idle+0x2d6/0x330
[   13.352006]  ? __schedule+0xeb0/0xeb0
[   13.352014]  ? fork_usermode_blob+0x130/0x130
[   13.352019]  ? mutex_lock+0xa7/0x100
[   13.352026]  ? _raw_spin_lock_irq+0x98/0xf0
[   13.352032]  ? _raw_read_unlock_irqrestore+0x30/0x30
[   13.352037] i2c i2c-2: Added multiplexed i2c bus 11
[   13.352043]  worker_thread+0x181/0xa80
[   13.352052]  ? __switch_to_asm+0x34/0x70
[   13.352058]  ? __switch_to_asm+0x40/0x70
[   13.352064]  ? process_one_work+0xa00/0xa00
[   13.352070]  ? __switch_to_asm+0x34/0x70
[   13.352076]  ? __switch_to_asm+0x40/0x70
[   13.352081]  ? __switch_to_asm+0x34/0x70
[   13.352086]  ? __switch_to_asm+0x40/0x70
[   13.352092]  ? __switch_to_asm+0x34/0x70
[   13.352097]  ? __switch_to_asm+0x40/0x70
[   13.352105]  ? __schedule+0x3d6/0xeb0
[   13.352112]  ? migrate_swap_stop+0x470/0x470
[   13.352119]  ? save_stack+0x89/0xb0
[   13.352127]  ? kmem_cache_alloc_trace+0xe5/0x570
[   13.352132]  ? kthread+0x59/0x1d0
[   13.352138]  ? ret_from_fork+0x35/0x40
[   13.352154]  ? __schedule+0xeb0/0xeb0
[   13.352161]  ? remove_wait_queue+0x150/0x150
[   13.352169]  ? _raw_write_lock_irqsave+0x80/0x100
[   13.352175]  ? __lock_text_start+0x8/0x8
[   13.352183]  ? process_one_work+0xa00/0xa00
[   13.352188]  kthread+0x1a4/0x1d0
[   13.352195]  ? kthread_create_worker_on_cpu+0xc0/0xc0
[   13.352202]  ret_from_fork+0x35/0x40
[   13.353879] The buggy address belongs to the page:
[   13.353885] page:ffffea0008d419c0 count:0 mapcount:0
mapping:0000000000000000 index:0x0
[   13.353890] flags: 0x2ffff8000000000()
[   13.353897] raw: 02ffff8000000000 ffffea0008d419c8 ffffea0008d419c8
0000000000000000
[   13.353903] raw: 0000000000000000 0000000000000000 00000000ffffffff
0000000000000000
[   13.353905] page dumped because: kasan: bad access detected
[   13.353908] Memory state around the buggy address:
[   13.353912]  ffff880235067000: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
[   13.353917]  ffff880235067080: 00 00 00 00 00 00 00 00 00 00 00 f1 f1
f1 f1 04
[   13.353921] >ffff880235067100: f2 f2 f2 f2 f2 f2 f2 04 f2 f2 f2 f2 f2
f2 f2 04
[   13.353923]                                                         
      ^
[   13.353927]  ffff880235067180: f2 f2 f2 f2 f2 f2 f2 04 f2 f2 f2 00 00
00 00 00
[   13.353931]  ffff880235067200: 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00
[   13.353933]
==================================================================
The warning is caused by the below loop:
for_each_set_bit(bit, (unsigned long *)&asserted, 8) { while "asserted"
is declared as 'unsigned'.
The casting of 32-bit unsigned integer pointer to a 64-bit unsigned long
pointer. There are two problems here. It causes the access of four extra
byte, which can corrupt memory The 32-bit pointer address may not be
64-bit aligned.
The fix changes variable "asserted" to "unsigned long".
Fixes: 1f976f6978bf ("platform/x86: Move Mellanox platform hotplug
driver to platform/mellanox") Signed-off-by: Vadim Pasternak
<vadimp@mellanox.com> Signed-off-by: Darren Hart (VMware)
<dvhart@infradead.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/platform/mellanox/mlxreg-hotplug.c (diff)
Commit 600c30ca6124929eff74dd5c2c12e6e50dedaebf by gregkh
loop: set GENHD_FL_NO_PART_SCAN after blkdev_reread_part()
[ Upstream commit 758a58d0bc67457f1215321a536226654a830eeb ]
Commit 0da03cab87e6
("loop: Fix deadlock when calling blkdev_reread_part()") moves
blkdev_reread_part() out of the loop_ctl_mutex. However,
GENHD_FL_NO_PART_SCAN is set before __blkdev_reread_part(). As a result,
__blkdev_reread_part() will fail the check of GENHD_FL_NO_PART_SCAN and
will not rescan the loop device to delete all partitions.
Below are steps to reproduce the issue:
step1 # dd if=/dev/zero of=tmp.raw bs=1M count=100 step2 # losetup -P
/dev/loop0 tmp.raw step3 # parted /dev/loop0 mklabel gpt step4 # parted
-a none -s /dev/loop0 mkpart primary 64s 1 step5 # losetup -d /dev/loop0
Step5 will not be able to delete /dev/loop0p1 (introduced by step4) and
there is below kernel warning message:
[  464.414043] __loop_clr_fd: partition scan of loop0 failed (rc=-22)
This patch sets GENHD_FL_NO_PART_SCAN after blkdev_reread_part().
Fixes: 0da03cab87e6 ("loop: Fix deadlock when calling
blkdev_reread_part()") Signed-off-by: Dongli Zhang
<dongli.zhang@oracle.com> Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/block/loop.c (diff)
Commit 55bbe8fa7bfdd4230fb2731a66d9ecedab49d62b by gregkh
i2c: designware: Do not allow i2c_dw_xfer() calls while suspended
[ Upstream commit 2751541555382dfa7661bcfaac3ee0fac49f505d ]
On most Intel Bay- and Cherry-Trail systems the PMIC is connected over
I2C and the PMIC is accessed through various means by the _PS0 and _PS3
ACPI methods (power on / off methods) of various devices.
This leads to suspend/resume ordering problems where a device may be
resumed and get its _PS0 method executed before the I2C controller is
resumed. On Cherry Trail this leads to errors like these:
     i2c_designware 808622C1:06: controller timed out
    ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
    ACPI Error: Method parse/execution failed \_SB.P18W._ON, AE_ERROR
    video LNXVIDEO:00: Failed to change power state to D0
But on Bay Trail this caused I2C reads to seem to succeed, but they end
up returning wrong data, which ends up getting written back by the
typical read-modify-write cycle done to turn on various power-resources.
Debugging the problems caused by this silent data corruption is quite
nasty. This commit adds a check which disallows i2c_dw_xfer() calls to
happen until the controller's resume method has completed.
Which turns the silent data corruption into getting these errors in
dmesg instead:
    i2c_designware 80860F41:04: Error i2c_dw_xfer call while suspended
   ACPI Error: AE_ERROR, Returned by Handler for [UserDefinedRegion]
   ACPI Error: Method parse/execution failed \_SB.PCI0.GFX0._PS0,
AE_ERROR
Which is much better.
Note the above errors are an example of issues which this patch will
help to debug, the actual fix requires fixing the suspend order and this
has been fixed by a different commit.
Note the setting / clearing of the suspended flag in the suspend /
resume methods is NOT protected by i2c_lock_bus(). This is intentional
as these methods get called from i2c_dw_xfer() (through
pm_runtime_get/put) a nd i2c_dw_xfer() is called with the i2c_bus_lock
held, so otherwise we would deadlock. This means that there is a
theoretical race between a non runtime suspend and the suspended check
in i2c_dw_xfer(), this is not a problem since normally we should not hit
the race and this check is primarily a debugging tool so hitting the
check if there are suspend/resume ordering problems does not need to be
100% reliable.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Reviewed-by: Andy
Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Wolfram
Sang <wsa@the-dreams.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/i2c/busses/i2c-designware-core.h (diff)
The file was modifieddrivers/i2c/busses/i2c-designware-pcidrv.c (diff)
The file was modifieddrivers/i2c/busses/i2c-designware-master.c (diff)
The file was modifieddrivers/i2c/busses/i2c-designware-platdrv.c (diff)
Commit 869a72e08b8688f730e717d71d8d01869bca6e64 by gregkh
IB/mlx4: Increase the timeout for CM cache
[ Upstream commit 2612d723aadcf8281f9bf8305657129bd9f3cd57 ]
Using CX-3 virtual functions, either from a bare-metal machine or
pass-through from a VM, MAD packets are proxied through the PF driver.
Since the VF drivers have separate name spaces for MAD Transaction Ids
(TIDs), the PF driver has to re-map the TIDs and keep the book keeping
in a cache.
Following the RDMA Connection Manager (CM) protocol, it is clear when an
entry has to evicted form the cache. But life is not perfect, remote
peers may die or be rebooted. Hence, it's a timeout to wipe out a cache
entry, when the PF driver assumes the remote peer has gone.
During workloads where a high number of QPs are destroyed concurrently,
excessive amount of CM DREQ retries has been observed
The problem can be demonstrated in a bare-metal environment, where two
nodes have instantiated 8 VFs each. This using dual ported HCAs, so we
have 16 vPorts per physical server.
64 processes are associated with each vPort and creates and destroys one
QP for each of the remote 64 processes. That is, 1024 QPs per vPort, all
in all 16K QPs. The QPs are created/destroyed using the CM.
When tearing down these 16K QPs, excessive CM DREQ retries (and
duplicates) are observed. With some cat/paste/awk wizardry on the
infiniband_cm sysfs, we observe as sum of the 16 vPorts on one of the
nodes:
cm_rx_duplicates:
     dreq  2102 cm_rx_msgs:
     drep  1989
     dreq  6195
      rep  3968
      req  4224
      rtu  4224 cm_tx_msgs:
     drep  4093
     dreq 27568
      rep  4224
      req  3968
      rtu  3968 cm_tx_retries:
     dreq 23469
Note that the active/passive side is equally distributed between the two
nodes.
Enabling pr_debug in cm.c gives tons of:
[171778.814239] <mlx4_ib> mlx4_ib_multiplex_cm_handler: id{slave:
1,sl_cm_id: 0xd393089f} is NULL!
By increasing the CM_CLEANUP_CACHE_TIMEOUT from 5 to 30 seconds, the
tear-down phase of the application is reduced from approximately 90 to
50 seconds. Retries/duplicates are also significantly reduced:
cm_rx_duplicates:
     dreq  2460
[] cm_tx_retries:
     dreq  3010
      req    47
Increasing the timeout further didn't help, as these duplicates and
retries stems from a too short CMA timeout, which was 20 (~4 seconds) on
the systems. By increasing the CMA timeout to 22 (~17 seconds), the
numbers fell down to about 10 for both of them.
Adjustment of the CMA timeout is not part of this commit.
Signed-off-by: Håkon Bugge <haakon.bugge@oracle.com> Acked-by: Jack
Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/infiniband/hw/mlx4/cm.c (diff)
Commit 1a4faefc4680025d13f02c3ea8051498b0151099 by gregkh
clk: fractional-divider: check parent rate only if flag is set
[ Upstream commit d13501a2bedfbea0983cc868d3f1dc692627f60d ]
Custom approximation of fractional-divider may not need parent clock
rate checking. For example Rockchip SoCs work fine using grand parent
clock rate even if target rate is greater than parent.
This patch checks parent clock rate only if CLK_SET_RATE_PARENT flag is
set.
For detailed example, clock tree of Rockchip I2S audio hardware.
- Clock rate of CPLL is 1.2GHz, GPLL is 491.52MHz.
- i2s1_div is integer divider can divide N (N is 1~128).
   Input clock is CPLL or GPLL. Initial divider value is N = 1.
   Ex) PLL = CPLL, N = 10, i2s1_div output rate is
     CPLL / 10 = 1.2GHz / 10 = 120MHz
- i2s1_frac is fractional divider can divide input to x/y, x and
   y are 16bit integer.
CPLL --> | selector | ---> i2s1_div -+--> | selector | --> I2S1 MCLK
GPLL --> |          | ,--------------'    |          |
                     `--> i2s1_frac ---> |          |
Clock mux system try to choose suitable one from i2s1_div and i2s1_frac
for master clock (MCLK) of I2S1.
Bad scenario as follows:
- Try to set MCLK to 8.192MHz (32kHz audio replay)
   Candidate setting is
   - i2s1_div: GPLL / 60 = 8.192MHz
   i2s1_div candidate is exactly same as target clock rate, so mux
   choose this clock source. i2s1_div output rate is changed
   491.52MHz -> 8.192MHz
  - After that try to set to 11.2896MHz (44.1kHz audio replay)
   Candidate settings are
   - i2s1_div : CPLL / 107 = 11.214945MHz
   - i2s1_frac: i2s1_div   = 8.192MHz
     This is because clk_fd_round_rate() thinks target rate
     (11.2896MHz) is higher than parent rate (i2s1_div = 8.192MHz)
     and returns parent clock rate.
Above is current upstreamed behavior. Clock mux system choose i2s1_div,
but this clock rate is not acceptable for I2S driver, so users cannot
replay audio.
Expected behavior is:
- Try to set master clock to 11.2896MHz (44.1kHz audio replay)
   Candidate settings are
   - i2s1_div : CPLL / 107          = 11.214945MHz
   - i2s1_frac: i2s1_div * 147/6400 = 11.2896MHz
                Change i2s1_div to GPLL / 1 = 491.52MHz at same
                time.
If apply this commit, clk_fd_round_rate() calls custom approximate
function of Rockchip even if target rate is higher than parent. Custom
function changes both grand parent (i2s1_div) and parent
(i2s_frac) settings at same time. Clock mux system can choose i2s1_frac
and audio works fine.
Signed-off-by: Katsuhiro Suzuki <katsuhiro@katsuster.net> Reviewed-by:
Heiko Stuebner <heiko@sntech.de>
[sboyd@kernel.org: Make function into a macro instead] Signed-off-by:
Stephen Boyd <sboyd@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedinclude/linux/clk-provider.h (diff)
The file was modifieddrivers/clk/clk-fractional-divider.c (diff)
Commit 4974ca47f15c7320208ae4ac99da83edf4385c4a by gregkh
perf annotate: Fix getting source line failure
[ Upstream commit 11db1ad4513d6205d2519e1a30ff4cef746e3243 ]
The output of "perf annotate -l --stdio xxx" changed since commit
425859ff0de33
("perf annotate: No need to calculate notes->start twice") removed
notes->start assignment in symbol__calc_lines(). It will get failed in
find_address_in_section() from symbol__tty_annotate() subroutine as the
a2l->addr is wrong. So the annotate summary doesn't report the line
number of source code correctly.
Before fix:
  liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ cat
common_while_1.c
void hotspot_1(void)
{
volatile int i;
for (i = 0; i < 0x10000000; i++);
for (i = 0; i < 0x10000000; i++);
for (i = 0; i < 0x10000000; i++);
}
  int main(void)
{
hotspot_1();
return 0;
}
liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ gcc common_while_1.c
-g -o common_while_1
  liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ sudo ./perf record
./common_while_1
[ perf record: Woken up 2 times to write data ]
[ perf record: Captured and wrote 0.488 MB perf.data (12498 samples) ]
liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ sudo ./perf annotate
-l -s hotspot_1 --stdio
  Sorted summary for file
/home/liwei/main_code/hulk_work/hulk/tools/perf/common_while_1
----------------------------------------------
   19.30 common_while_1[32]
  19.03 common_while_1[4e]
  19.01 common_while_1[16]
   5.04 common_while_1[13]
   4.99 common_while_1[4b]
   4.78 common_while_1[2c]
   4.77 common_while_1[10]
   4.66 common_while_1[2f]
   4.59 common_while_1[51]
   4.59 common_while_1[35]
   4.52 common_while_1[19]
   4.20 common_while_1[56]
   0.51 common_while_1[48]
  Percent |      Source code & Disassembly of common_while_1 for
cycles:ppp (12480 samples, percent: local period)

-----------------------------------------------------------------------------------------------------------------
        :
        :
        :
        :         Disassembly of section .text:
        :
        :         00000000000005fa <hotspot_1>:
        :         hotspot_1():
        :         void hotspot_1(void)
        :         {
   0.00 :   5fa:   push   %rbp
   0.00 :   5fb:   mov    %rsp,%rbp
        :                 volatile int i;
        :
        :                 for (i = 0; i < 0x10000000; i++);
   0.00 :   5fe:   movl   $0x0,-0x4(%rbp)
   0.00 :   605:   jmp    610 <hotspot_1+0x16>
   0.00 :   607:   mov    -0x4(%rbp),%eax
  common_while_1[10]    4.77 :   60a:   add    $0x1,%eax
  common_while_1[13]    5.04 :   60d:   mov    %eax,-0x4(%rbp)
  common_while_1[16]   19.01 :   610:   mov    -0x4(%rbp),%eax
  common_while_1[19]    4.52 :   613:   cmp    $0xfffffff,%eax
     0.00 :   618:   jle    607 <hotspot_1+0xd>
          :                 for (i = 0; i < 0x10000000; i++);
...
After fix:
  liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ sudo ./perf record
./common_while_1
[ perf record: Woken up 2 times to write data ]
[ perf record: Captured and wrote 0.488 MB perf.data (12500 samples) ]
liwei@euler:~/main_code/hulk_work/hulk/tools/perf$ sudo ./perf annotate
-l -s hotspot_1 --stdio
  Sorted summary for file
/home/liwei/main_code/hulk_work/hulk/tools/perf/common_while_1
----------------------------------------------
   33.34 common_while_1.c:5
  33.34 common_while_1.c:6
  33.32 common_while_1.c:7
  Percent |      Source code & Disassembly of common_while_1 for
cycles:ppp (12482 samples, percent: local period)

-----------------------------------------------------------------------------------------------------------------
        :
        :
        :
        :         Disassembly of section .text:
        :
        :         00000000000005fa <hotspot_1>:
        :         hotspot_1():
        :         void hotspot_1(void)
        :         {
   0.00 :   5fa:   push   %rbp
   0.00 :   5fb:   mov    %rsp,%rbp
        :                 volatile int i;
        :
        :                 for (i = 0; i < 0x10000000; i++);
   0.00 :   5fe:   movl   $0x0,-0x4(%rbp)
   0.00 :   605:   jmp    610 <hotspot_1+0x16>
   0.00 :   607:   mov    -0x4(%rbp),%eax
  common_while_1.c:5    4.70 :   60a:   add    $0x1,%eax
   4.89 :   60d:   mov    %eax,-0x4(%rbp)
  common_while_1.c:5   19.03 :   610:   mov    -0x4(%rbp),%eax
  common_while_1.c:5    4.72 :   613:   cmp    $0xfffffff,%eax
   0.00 :   618:   jle    607 <hotspot_1+0xd>
        :                 for (i = 0; i < 0x10000000; i++);
   0.00 :   61a:   movl   $0x0,-0x4(%rbp)
   0.00 :   621:   jmp    62c <hotspot_1+0x32>
   0.00 :   623:   mov    -0x4(%rbp),%eax
  common_while_1.c:6    4.54 :   626:   add    $0x1,%eax
   4.73 :   629:   mov    %eax,-0x4(%rbp)
  common_while_1.c:6   19.54 :   62c:   mov    -0x4(%rbp),%eax
  common_while_1.c:6    4.54 :   62f:   cmp    $0xfffffff,%eax
...
Signed-off-by: Wei Li <liwei391@huawei.com> Acked-by: Jiri Olsa
<jolsa@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jin Yao
<yao.jin@linux.intel.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc:
Peter Zijlstra <peterz@infradead.org> Fixes: 425859ff0de33 ("perf
annotate: No need to calculate notes->start twice") Link:
http://lkml.kernel.org/r/20190221095716.39529-1-liwei391@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/util/annotate.c (diff)
Commit a332ad5f006fee3ff35883d38424a164da02a73f by gregkh
powerpc/44x: Force PCI on for CURRITUCK
[ Upstream commit aa7150ba378650d0e9d84b8e4d805946965a5926 ]
The recent rework of PCI kconfig symbols exposed an existing bug in the
CURRITUCK kconfig logic.
It selects PPC4xx_PCI_EXPRESS which depends on PCI, but PCI is user
selectable and might be disabled, leading to a warning:
  WARNING: unmet direct dependencies detected for PPC4xx_PCI_EXPRESS
   Depends on [n]: PCI [=n] && 4xx [=y]
   Selected by [y]:
   - CURRITUCK [=y] && PPC_47x [=y]
Prior to commit eb01d42a7778 ("PCI: consolidate PCI config entry in
drivers/pci") PCI was enabled by default for currituck_defconfig so we
didn't see the warning. The bad logic was still there, it just required
someone disabling PCI in their .config to hit it.
Fix it by forcing PCI on for CURRITUCK, which seems was always the
expectation anyway.
Fixes: eb01d42a7778 ("PCI: consolidate PCI config entry in drivers/pci")
Reported-by: Randy Dunlap <rdunlap@infradead.org> Reviewed-by: Christoph
Hellwig <hch@lst.de> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedarch/powerpc/platforms/44x/Kconfig (diff)
Commit 4e7b5f9dc7a7db4e8ea36ae9f9ef266cf5f62fb8 by gregkh
ASoC: qcom: Fix of-node refcount unbalance in qcom_snd_parse_of()
[ Upstream commit 70b773219a32c7b8f3e53e041bc023ad99fd81f4 ]
Although qcom_snd_parse_of() tries to manage the of-node refcount, there
are still a few places that lead to the unblanced refcount in the error
code path.  Namely,
- for_each_child_of_node() needs to unreference the iterator node if
aborting the loop in the middle,
- cpu, codec and platform node objects have to be unreferenced at each
iteration,
- platform and codec node objects have to be referred before jumping
to the error handling code that unreference them unconditionally.
This patch tries to address these by moving the assignment of platform
and codec node objects to the beginning of the loop and adding the
of_node_put() calls adequately.
Fixes: c25e295cd77b ("ASoC: qcom: Add support to parse common audio
device nodes") Cc: Patrick Lai <plai@codeaurora.org> Cc: Banajit Goswami
<bgoswami@codeaurora.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedsound/soc/qcom/common.c (diff)
Commit 99bb2d19853aa7039fa13d4f61c1affdb41f88d2 by gregkh
cpufreq: acpi-cpufreq: Report if CPU doesn't support boost technologies
[ Upstream commit 1222d527f314c86a3b59a522115d62facc5a7965 ]
There is some rare cases where CPB (and possibly IDA) are missing on
processors.
This is the case fixed by commit f7f3dc00f612 ("x86/cpu/AMD: Fix erratum
1076 (CPB bit)") and following.
In such context, the boost status isn't reported by
/sys/devices/system/cpu/cpufreq/boost.
This commit is about printing a message to report that the CPU doesn't
expose the boost capabilities.
This message could help debugging platforms hit by this phenomena.
Signed-off-by: Erwan Velu <e.velu@criteo.com>
[ rjw: Change the message text somewhat ] Signed-off-by: Rafael J.
Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/cpufreq/acpi-cpufreq.c (diff)
Commit 5d1db4825e3c55ccf162f92eb1bcbd12f77c6a67 by gregkh
efi: cper: Fix possible out-of-bounds access
[ Upstream commit 45b14a4ffcc1e0b5caa246638f942cbe7eaea7ad ]
When checking a generic status block, we iterate over all the generic
data blocks. The loop condition only checks that the start of the
generic data block is valid (within estatus->data_length) but not the
whole block. Because the size of data blocks (excluding error data) may
vary depending on the revision and the revision is contained within the
data block, ensure that enough of the current data block is valid before
dereferencing any members otherwise an out-of-bounds access may occur if
estatus->data_length is invalid.
This relies on the fact that struct acpi_hest_generic_data_v300 is a
superset of the earlier version.  Also rework the other checks to avoid
potential underflow.
Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com> Acked-by:
Borislav Petkov <bp@suse.de> Tested-by: Tyler Baicar
<baicar.tyler@gmail.com> Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/firmware/efi/cper.c (diff)
Commit a3c1a668a01458ec9d638a1d89eba85a20b7bfad by gregkh
s390/ism: ignore some errors during deregistration
[ Upstream commit 0ff06c44efeede4acd068847d3bf8cf894b6c664 ]
Prior to dma unmap/free operations the ism driver tries to ensure that
the memory is no longer accessed by the HW. When errors during
deregistration of memory regions from the HW occur the ism driver will
not unmap/free this memory.
When we receive notification from the hypervisor that a PCI function has
been detached we can no longer access the device and would never
unmap/free these memory regions which led to complaints by the DMA debug
API.
Treat this kind of errors during the deregistration of memory regions
from the HW as success since it is already ensured that the memory is no
longer accessed by HW.
Reported-by: Karsten Graul <kgraul@linux.ibm.com> Reported-by: Hans
Wippel <hwippel@linux.ibm.com> Signed-off-by: Sebastian Ott
<sebott@linux.ibm.com> Signed-off-by: Martin Schwidefsky
<schwidefsky@de.ibm.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/s390/net/ism_drv.c (diff)
Commit 952613125def6dc9b33982f84c497a3f00aac601 by gregkh
scsi: megaraid_sas: return error when create DMA pool failed
[ Upstream commit bcf3b67d16a4c8ffae0aa79de5853435e683945c ]
when create DMA pool for cmd frames failed, we should return -ENOMEM,
instead of 0. In some case in:
    megasas_init_adapter_fusion()
    -->megasas_alloc_cmds()
      -->megasas_create_frame_pool
         create DMA pool failed,
       --> megasas_free_cmds() [1]
    -->megasas_alloc_cmds_fusion()
      failed, then goto fail_alloc_cmds.
   -->megasas_free_cmds() [2]
we will call megasas_free_cmds twice, [1] will kfree cmd_list,
[2] will use cmd_list.it will cause a problem:
Unable to handle kernel NULL pointer dereference at virtual address
00000000 pgd = ffffffc000f70000
[00000000] *pgd=0000001fbf893003, *pud=0000001fbf893003,
*pmd=0000001fbf894003, *pte=006000006d000707 Internal error: Oops:
96000005 [#1] SMP
Modules linked in:
CPU: 18 PID: 1 Comm: swapper/0 Not tainted
task: ffffffdfb9290000 ti: ffffffdfb923c000 task.ti: ffffffdfb923c000
PC is at megasas_free_cmds+0x30/0x70
LR is at megasas_free_cmds+0x24/0x70
...
Call trace:
[<ffffffc0005b779c>] megasas_free_cmds+0x30/0x70
[<ffffffc0005bca74>] megasas_init_adapter_fusion+0x2f4/0x4d8
[<ffffffc0005b926c>] megasas_init_fw+0x2dc/0x760
[<ffffffc0005b9ab0>] megasas_probe_one+0x3c0/0xcd8
[<ffffffc0004a5abc>] local_pci_probe+0x4c/0xb4
[<ffffffc0004a5c40>] pci_device_probe+0x11c/0x14c
[<ffffffc00053a5e4>] driver_probe_device+0x1ec/0x430
[<ffffffc00053a92c>] __driver_attach+0xa8/0xb0
[<ffffffc000538178>] bus_for_each_dev+0x74/0xc8
[<ffffffc000539e88>] driver_attach+0x28/0x34
[<ffffffc000539a18>] bus_add_driver+0x16c/0x248
[<ffffffc00053b234>] driver_register+0x6c/0x138
[<ffffffc0004a5350>] __pci_register_driver+0x5c/0x6c
[<ffffffc000ce3868>] megasas_init+0xc0/0x1a8
[<ffffffc000082a58>] do_one_initcall+0xe8/0x1ec
[<ffffffc000ca7be8>] kernel_init_freeable+0x1c8/0x284
[<ffffffc0008d90b8>] kernel_init+0x1c/0xe4
Signed-off-by: Jason Yan <yanaijie@huawei.com> Acked-by: Sumit Saxena
<sumit.saxena@broadcom.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/scsi/megaraid/megaraid_sas_base.c (diff)
Commit 456736ab1b7879b719b3d34ddfe78666789eab31 by gregkh
scsi: fcoe: make use of fip_mode enum complete
[ Upstream commit 8beb90aaf334a6efa3e924339926b5f93a234dbb ]
commit 1917d42d14b7 ("fcoe: use enum for fip_mode") introduces a
separate enum for the fip_mode that shall be used during initialisation
handling until it is passed to fcoe_ctrl_link_up to set the initial
fip_state.  That change was incomplete and gcc quietly converted in
various places between the fip_mode and the fip_state enum values with
implicit enum conversions, which fortunately cannot cause any issues in
the actual code's execution.
clang however warns about these implicit enum conversions in the scsi
drivers. This commit consolidates the use of the two enums, guided by
clang's enum-conversion warnings.
This commit now completes the use of the fip_mode: It expects and uses
fip_mode in {bnx2fc,fcoe}_interface_create and fcoe_ctlr_init, and it
calls fcoe_ctrl_set_set() with the correct values in
fcoe_ctlr_link_up().  It also breaks the association between
FIP_MODE_AUTO and FIP_ST_AUTO to indicate these two enums are distinct.
Link: https://github.com/ClangBuiltLinux/linux/issues/151 Fixes:
1917d42d14b7 ("fcoe: use enum for fip_mode") Reported-by: Dmitry Golovin
<dima@golovin.in> Original-by: Lukas Bulwahn <lukas.bulwahn@gmail.com>
CC: Lukas Bulwahn <lukas.bulwahn@gmail.com> CC: Nick Desaulniers
<ndesaulniers@google.com> CC: Nathan Chancellor
<natechancellor@gmail.com> Reviewed-by: Nathan Chancellor
<natechancellor@gmail.com> Tested-by: Nathan Chancellor
<natechancellor@gmail.com> Suggested-by: Johannes Thumshirn
<jthumshirn@suse.de> Signed-off-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Martin K.
Petersen <martin.petersen@oracle.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/scsi/qedf/qedf_main.c (diff)
The file was modifieddrivers/scsi/fcoe/fcoe_ctlr.c (diff)
The file was modifieddrivers/scsi/bnx2fc/bnx2fc_fcoe.c (diff)
The file was modifieddrivers/scsi/fcoe/fcoe_transport.c (diff)
The file was modifiedinclude/scsi/libfcoe.h (diff)
The file was modifieddrivers/scsi/fcoe/fcoe.c (diff)
Commit 16a94480fb03646424ce7db0c26f73fa3b24a5ce by gregkh
drm/amd/display: Clear stream->mode_changed after commit
[ Upstream commit d8d2f174bcc2c26c3485c70e0c6fe22b27bce739 ]
[Why] The stream->mode_changed flag can persist in the following
sequence of atomic commits:
Commit 1: Enable CRTC0 (mode_changed = true), Enable CRTC1 (mode_changed
= true)
Commit 2: Disable CRTC1 (mode_changed = false)
In this sequence we want to keep the exiting CRTC0 but it's not in the
atomic state for the commit since it hasn't been modified. In this case
the stream->mode_changed flag persists as true and we don't re-program
the planes for the existing stream.
[How] The flag needs to be cleared and it makes the most sense to do it
within DC after the state has been committed. Nothing following
dc_commit_state should think that the stream's mode has changed.
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Leo Li <sunpeng.li@amd.com> Acked-by: Tony Cheng
<Tony.Cheng@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/gpu/drm/amd/display/dc/core/dc.c (diff)
Commit aa8c73c8682f54d327b3ca6b936f097ce88f8f3a by gregkh
perf test: Fix failure of 'evsel-tp-sched' test on s390
[ Upstream commit 03d309711d687460d1345de8a0363f45b1c8cd11 ]
Commit 489338a717a0 ("perf tests evsel-tp-sched: Fix bitwise operator")
causes test case 14 "Parse sched tracepoints fields" to fail on s390.
This test succeeds on x86.
In fact this test now fails on all architectures with type char treated
as type unsigned char.
The root cause is the signed-ness of character arrays in the tracepoints
sched_switch for structure members prev_comm and next_comm.
On s390 the output of:
[root@m35lp76 perf]# cat
/sys/kernel/debug/tracing/events/sched/sched_switch/format
name: sched_switch
ID: 287
format:
  field:unsigned short common_type; offset:0; size:2; signed:0;
  ...
  field:char prev_comm[16]; offset:8; size:16; signed:0;
  ...
  field:char next_comm[16]; offset:40; size:16; signed:0;
reveals the character arrays prev_comm and next_comm are per default
unsigned char and have values in the range of 0..255.
On x86 both fields are signed as this output shows:
[root@f29]# cat
/sys/kernel/debug/tracing/events/sched/sched_switch/format
name: sched_switch
ID: 287
format:
  field:unsigned short common_type; offset:0; size:2; signed:0;
  ...
  field:char prev_comm[16]; offset:8; size:16; signed:1;
  ...
  field:char next_comm[16]; offset:40; size:16; signed:1;
and the character arrays prev_comm and next_comm are per default signed
char and have values in the range of -1..127.  The implementation of
type char is architecture specific.
Since the character arrays in both tracepoints sched_switch and
sched_wakeup should contain ascii characters, simply omit the check for
signedness in the test case.
Output before:
  [root@m35lp76 perf]# ./perf test -F 14
14: Parse sched tracepoints fields                        :
--- start ---
sched:sched_switch: "prev_comm" signedness(0) is wrong, should be 1
sched:sched_switch: "next_comm" signedness(0) is wrong, should be 1
sched:sched_wakeup: "comm" signedness(0) is wrong, should be 1
---- end ----
14: Parse sched tracepoints fields                        : FAILED!
[root@m35lp76 perf]#
Output after:
  [root@m35lp76 perf]# ./perf test -Fv 14
14: Parse sched tracepoints fields                        :
--- start ---
---- end ----
Parse sched tracepoints fields: Ok
[root@m35lp76 perf]#
Fixes: 489338a717a0 ("perf tests evsel-tp-sched: Fix bitwise operator")
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> Cc: Heiko Carstens
<heiko.carstens@de.ibm.com> Cc: Hendrik Brueckner
<brueckner@linux.vnet.ibm.com> Cc: Martin Schwidefsky
<schwidefsky@de.ibm.com> Link:
http://lkml.kernel.org/r/20190219153639.31267-1-tmricht@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/tests/evsel-tp-sched.c (diff)
Commit c3a8705881ccd39b813ca5ed7af25859a7f6625b by gregkh
mwifiex: don't advertise IBSS features without FW support
[ Upstream commit 6f21ab30469d670de620f758330aca9f3433f693 ]
As it is, doing something like
  # iw phy phy0 interface add foobar type ibss
on a firmware that doesn't have ad-hoc support just yields failures of
HostCmd_CMD_SET_BSS_MODE, which happened to return a '-1' error code
(-EPERM? not really right...) and sometimes may even crash the firmware
along the way.
Let's parse the firmware capability flag while registering the wiphy, so
we don't allow attempting IBSS at all, and we get a proper -EOPNOTSUPP
from nl80211 instead.
Fixes: e267e71e68ae ("mwifiex: Disable adhoc feature based on firmware
capability") Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/net/wireless/marvell/mwifiex/cfg80211.c (diff)
Commit a75ad663203b761996cf0f2b7724f5e00de5bf24 by gregkh
perf report: Don't shadow inlined symbol with different addr range
[ Upstream commit 7346195e8643482968f547483e0d823ec1982fab ]
We can't assume inlined symbols with the same name are equal, because
their address range may be different. This will cause the symbols with
different addresses be shadowed when adding to the hist entry, and lead
to ERANGE error when checking the symbol address during sample parse,
the addr should be within the range of [sym.start, sym.end].
The error message is like: "0x36aea60 [0x8]: failed to process type:
68".
The second parameter of symbol__new() is the length of the fake symbol
for the inline frame, which is the subtraction of the end and start
address of base_sym.
Signed-off-by: He Kuang <hekuang@huawei.com> Acked-by: Jiri Olsa
<jolsa@kernel.org> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Milian Wolff
<milian.wolff@kdab.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter
Zijlstra <peterz@infradead.org> Fixes: aa441895f7b4 ("perf report:
Compare symbol name for inlined frames when sorting") Link:
http://lkml.kernel.org/r/20190219130531.15692-1-hekuang@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/util/sort.c (diff)
The file was modifiedtools/perf/util/srcline.c (diff)
Commit ed83655ce8c29ac61a0d0b73aef5faea02b397cf by gregkh
SoC: imx-sgtl5000: add missing put_device()
[ Upstream commit 8fa857da9744f513036df1c43ab57f338941ae7d ]
The of_find_device_by_node() takes a reference to the underlying device
structure, we should release that reference.
Detected by coccinelle with the following warnings:
./sound/soc/fsl/imx-sgtl5000.c:169:1-7: ERROR: missing put_device; call
of_find_device_by_node on line 105, but without a corresponding object
release within this function.
./sound/soc/fsl/imx-sgtl5000.c:177:1-7: ERROR: missing put_device; call
of_find_device_by_node on line 105, but without a corresponding object
release within this function.
Signed-off-by: Wen Yang <yellowriver2010@hotmail.com> Cc: Timur Tabi
<timur@kernel.org> Cc: Nicolin Chen <nicoleotsuka@gmail.com> Cc: Xiubo
Li <Xiubo.Lee@gmail.com> Cc: Fabio Estevam <festevam@gmail.com> Cc: Liam
Girdwood <lgirdwood@gmail.com> Cc: Mark Brown <broonie@kernel.org> Cc:
Jaroslav Kysela <perex@perex.cz> Cc: Takashi Iwai <tiwai@suse.com> Cc:
Shawn Guo <shawnguo@kernel.org> Cc: Sascha Hauer
<s.hauer@pengutronix.de> Cc: Pengutronix Kernel Team
<kernel@pengutronix.de> Cc: NXP Linux Team <linux-imx@nxp.com> Cc:
alsa-devel@alsa-project.org Cc: linuxppc-dev@lists.ozlabs.org Cc:
linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org
Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedsound/soc/fsl/imx-sgtl5000.c (diff)
Commit a6d9661c5d1614d0de3d6dab93e18e109fb0d9f6 by gregkh
media: ov7740: fix runtime pm initialization
[ Upstream commit 12aceee1f412c3ddc7750155fec06c906f14ab51 ]
The runtime PM of this device is enabled after
v4l2_ctrl_handler_setup(), and this makes this device's runtime PM usage
count a negative value.
The ov7740_set_ctrl() tries to do something only if the device's runtime
PM usage counter is nonzero.
ov7740_set_ctrl()
{
if (!pm_runtime_get_if_in_use(&client->dev))
return 0;
<do something>;
pm_runtime_put(&client->dev);
return ret;
}
However, the ov7740_set_ctrl() is called by v4l2_ctrl_handler_setup()
while the runtime PM of this device is not yet enabled.  In this case,
the pm_runtime_get_if_in_use() returns -EINVAL (!= 0).
Therefore we can't bail out of this function and the usage count is
decreased by pm_runtime_put() without increment.
This fixes this problem by enabling the runtime PM of this device before
v4l2_ctrl_handler_setup() so that the ov7740_set_ctrl() is always called
when the runtime PM is enabled.
Cc: Wenyou Yang <wenyou.yang@microchip.com> Signed-off-by: Akinobu Mita
<akinobu.mita@gmail.com> Tested-by: Eugen Hristev
<eugen.hristev@microchip.com> Signed-off-by: Sakari Ailus
<sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/media/i2c/ov7740.c (diff)
Commit 21ad47c398359a91b52865a9c61853fc612f161f by gregkh
media: sh_veu: Correct return type for mem2mem buffer helpers
[ Upstream commit 43c145195c7fc3025ee7ecfc67112ac1c82af7c2 ]
Fix the assigned type of mem2mem buffer handling API. Namely, these
functions:
v4l2_m2m_next_buf
v4l2_m2m_last_buf
v4l2_m2m_buf_remove
v4l2_m2m_next_src_buf
v4l2_m2m_next_dst_buf
v4l2_m2m_last_src_buf
v4l2_m2m_last_dst_buf
v4l2_m2m_src_buf_remove
v4l2_m2m_dst_buf_remove
return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
Fixing this is necessary to fix the mem2mem buffer handling API,
changing the return to the correct struct vb2_v4l2_buffer instead of a
void pointer.
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by:
Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho
Chehab <mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/media/platform/sh_veu.c (diff)
Commit 9f31e32fd5a5e68b450715d7eaf737cd91ac0aeb by gregkh
media: s5p-jpeg: Correct return type for mem2mem buffer helpers
[ Upstream commit 4a88f89885c7cf65c62793f385261a6e3315178a ]
Fix the assigned type of mem2mem buffer handling API. Namely, these
functions:
v4l2_m2m_next_buf
v4l2_m2m_last_buf
v4l2_m2m_buf_remove
v4l2_m2m_next_src_buf
v4l2_m2m_next_dst_buf
v4l2_m2m_last_src_buf
v4l2_m2m_last_dst_buf
v4l2_m2m_src_buf_remove
v4l2_m2m_dst_buf_remove
return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
Fixing this is necessary to fix the mem2mem buffer handling API,
changing the return to the correct struct vb2_v4l2_buffer instead of a
void pointer.
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by:
Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho
Chehab <mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/media/platform/s5p-jpeg/jpeg-core.c (diff)
Commit 8852dab94f0450ba7e265a9f8044e4f17e55d5b7 by gregkh
media: rockchip/rga: Correct return type for mem2mem buffer helpers
[ Upstream commit da2d3a4e4adabc6ccfb100bc9abd58ee9cd6c4b7 ]
Fix the assigned type of mem2mem buffer handling API. Namely, these
functions:
v4l2_m2m_next_buf
v4l2_m2m_last_buf
v4l2_m2m_buf_remove
v4l2_m2m_next_src_buf
v4l2_m2m_next_dst_buf
v4l2_m2m_last_src_buf
v4l2_m2m_last_dst_buf
v4l2_m2m_src_buf_remove
v4l2_m2m_dst_buf_remove
return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
Fixing this is necessary to fix the mem2mem buffer handling API,
changing the return to the correct struct vb2_v4l2_buffer instead of a
void pointer.
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by:
Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho
Chehab <mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/media/platform/rockchip/rga/rga.c (diff)
Commit 76499752191f6190a13909261f6cdb96cb4e4b57 by gregkh
media: s5p-g2d: Correct return type for mem2mem buffer helpers
[ Upstream commit 30fa627b32230737bc3f678067e2adfecf956987 ]
Fix the assigned type of mem2mem buffer handling API. Namely, these
functions:
v4l2_m2m_next_buf
v4l2_m2m_last_buf
v4l2_m2m_buf_remove
v4l2_m2m_next_src_buf
v4l2_m2m_next_dst_buf
v4l2_m2m_last_src_buf
v4l2_m2m_last_dst_buf
v4l2_m2m_src_buf_remove
v4l2_m2m_dst_buf_remove
return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
Fixing this is necessary to fix the mem2mem buffer handling API,
changing the return to the correct struct vb2_v4l2_buffer instead of a
void pointer.
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by:
Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho
Chehab <mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/media/platform/s5p-g2d/g2d.c (diff)
Commit 569ce17b4cd9508451cff9caa14b0b9e47c4f61c by gregkh
media: mx2_emmaprp: Correct return type for mem2mem buffer helpers
[ Upstream commit 8d20dcefe471763f23ad538369ec65b51993ffff ]
Fix the assigned type of mem2mem buffer handling API. Namely, these
functions:
v4l2_m2m_next_buf
v4l2_m2m_last_buf
v4l2_m2m_buf_remove
v4l2_m2m_next_src_buf
v4l2_m2m_next_dst_buf
v4l2_m2m_last_src_buf
v4l2_m2m_last_dst_buf
v4l2_m2m_src_buf_remove
v4l2_m2m_dst_buf_remove
return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
Fixing this is necessary to fix the mem2mem buffer handling API,
changing the return to the correct struct vb2_v4l2_buffer instead of a
void pointer.
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by:
Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho
Chehab <mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/media/platform/mx2_emmaprp.c (diff)
Commit d544b0856f3f88de078066e135fbfb0398fdf7ed by gregkh
media: mtk-jpeg: Correct return type for mem2mem buffer helpers
[ Upstream commit 1b275e4e8b70dbff9850874b30831c1bd8d3c504 ]
Fix the assigned type of mem2mem buffer handling API. Namely, these
functions:
v4l2_m2m_next_buf
v4l2_m2m_last_buf
v4l2_m2m_buf_remove
v4l2_m2m_next_src_buf
v4l2_m2m_next_dst_buf
v4l2_m2m_last_src_buf
v4l2_m2m_last_dst_buf
v4l2_m2m_src_buf_remove
v4l2_m2m_dst_buf_remove
return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
Fixing this is necessary to fix the mem2mem buffer handling API,
changing the return to the correct struct vb2_v4l2_buffer instead of a
void pointer.
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by:
Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho
Chehab <mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/media/platform/mtk-jpeg/mtk_jpeg_core.c (diff)
Commit af1ef012b95f522f81a5d9b3c33361a0e2400972 by gregkh
media: rockchip/vpu: Correct return type for mem2mem buffer helpers
[ Upstream commit 29701c3612fa025d5e8dc64c7a4ae8dc4763912e ]
Fix the assigned type of mem2mem buffer handling API. Namely, these
functions:
v4l2_m2m_next_buf
v4l2_m2m_last_buf
v4l2_m2m_buf_remove
v4l2_m2m_next_src_buf
v4l2_m2m_next_dst_buf
v4l2_m2m_last_src_buf
v4l2_m2m_last_dst_buf
v4l2_m2m_src_buf_remove
v4l2_m2m_dst_buf_remove
return a struct vb2_v4l2_buffer, and not a struct vb2_buffer.
Fixing this is necessary to fix the mem2mem buffer handling API,
changing the return to the correct struct vb2_v4l2_buffer instead of a
void pointer.
Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by:
Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho
Chehab <mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/staging/media/rockchip/vpu/rk3399_vpu_hw_jpeg_enc.c (diff)
The file was modifieddrivers/staging/media/rockchip/vpu/rk3288_vpu_hw_jpeg_enc.c (diff)
Commit 7d361b8dbafe46eb5669e30dafe1a73baa2ee835 by gregkh
mt76: usb: do not run mt76u_queues_deinit twice
[ Upstream commit b3098121c42caaf3aea239b8655cf52d45be116f ]
Do not call mt76u_queues_deinit routine in mt76u_alloc_queues error path
since it will be run in mt76x0u_register_device or
mt76x2u_register_device error path. Current implementation triggers the
following kernel warning:
[   67.005516] WARNING: CPU: 2 PID: 761 at lib/refcount.c:187
refcount_sub_and_test_checked+0xa4/0xb8
[   67.019513] refcount_t: underflow; use-after-free.
[   67.099872] Hardware name: BCM2835
[   67.106268] Backtrace:
[   67.111584] [<8010c91c>] (dump_backtrace) from [<8010cc00>]
(show_stack+0x20/0x24)
[   67.124974]  r6:60000013 r5:ffffffff r4:00000000 r3:a50bade6
[   67.132226] [<8010cbe0>] (show_stack) from [<807ca5f4>]
(dump_stack+0xc8/0x114)
[   67.141225] [<807ca52c>] (dump_stack) from [<8011e65c>]
(__warn+0xf4/0x120)
[   67.149849]  r9:000000bb r8:804d0138 r7:00000009 r6:8099dc84
r5:00000000 r4:b66c7b58
[   67.160767] [<8011e568>] (__warn) from [<8011e6d0>]
(warn_slowpath_fmt+0x48/0x50)
[   67.171436]  r9:7f65e128 r8:80d1419c r7:80c0bac4 r6:b97b3044
r5:b7368e00 r4:00000000
[   67.182433] [<8011e68c>] (warn_slowpath_fmt) from [<804d0138>]
(refcount_sub_and_test_checked+0xa4/0xb8)
[   67.195221]  r3:80c91c25 r2:8099dc94
[   67.200370]  r4:00000000
[   67.204397] [<804d0094>] (refcount_sub_and_test_checked) from
[<804d0164>] (refcount_dec_and_test_checked+0x18/0x1c)
[   67.218046]  r4:b7368e00 r3:00000001
[   67.223125] [<804d014c>] (refcount_dec_and_test_checked) from
[<805db49c>] (usb_free_urb+0x20/0x4c)
[   67.235358] [<805db47c>] (usb_free_urb) from [<7f639804>]
(mt76u_buf_free+0x98/0xac [mt76_usb])
[   67.247302]  r4:00000001 r3:00000001
[   67.252468] [<7f63976c>] (mt76u_buf_free [mt76_usb]) from
[<7f639ef8>] (mt76u_queues_deinit+0x44/0x100 [mt76_usb])
[   67.266102]  r8:b8fe8600 r7:b5dac480 r6:b5dace20 r5:00000001
r4:00000000 r3:00000080
[   67.277132] [<7f639eb4>] (mt76u_queues_deinit [mt76_usb]) from
[<7f65c040>] (mt76x0u_cleanup+0x40/0x4c [mt76x0u])
[   67.290737]  r7:b5dac480 r6:b8fe8600 r5:ffffffea r4:b5dace20
[   67.298069] [<7f65c000>] (mt76x0u_cleanup [mt76x0u]) from
[<7f65c564>] (mt76x0u_probe+0x1f0/0x354 [mt76x0u])
[   67.311174]  r4:b5dace20 r3:00000000
[   67.316312] [<7f65c374>] (mt76x0u_probe [mt76x0u]) from [<805e0b6c>]
(usb_probe_interface+0x104/0x240)
[   67.328915]  r7:00000000 r6:7f65e034 r5:b6634800 r4:b8fe8620
[   67.336276] [<805e0a68>] (usb_probe_interface) from [<8056a8bc>]
(really_probe+0x224/0x2f8)
[   67.347965]  r10:b65f0a00 r9:00000019 r8:7f65e034 r7:80d3e124
r6:00000000 r5:80d3e120
[   67.359175]  r4:b8fe8620 r3:805e0a68
[   67.364384] [<8056a698>] (really_probe) from [<8056ab60>]
(driver_probe_device+0x6c/0x180)
[   67.375974]  r10:b65f0a00 r9:7f65e2c0 r8:b8fe8620 r7:00000000
r6:7f65e034 r5:7f65e034
[   67.387170]  r4:b8fe8620 r3:00000000
[   67.392378] [<8056aaf4>] (driver_probe_device) from [<8056ad54>]
(__driver_attach+0xe0/0xe4)
[   67.404097]  r9:7f65e2c0 r8:7f65d22c r7:00000000 r6:b8fe8654
r5:7f65e034 r4:b8fe8620
[   67.415122] [<8056ac74>] (__driver_attach) from [<8056880c>]
(bus_for_each_dev+0x68/0xa0)
[   67.426628]  r6:8056ac74 r5:7f65e034 r4:00000000 r3:00000027
[   67.434017] [<805687a4>] (bus_for_each_dev) from [<8056a1cc>]
(driver_attach+0x28/0x30)
[   67.445394]  r6:80c6ddc8 r5:b7368f80 r4:7f65e034
[   67.451703] [<8056a1a4>] (driver_attach) from [<80569c24>]
(bus_add_driver+0x194/0x21c)
[   67.463081] [<80569a90>] (bus_add_driver) from [<8056b504>]
(driver_register+0x8c/0x124)
[   67.474560]  r7:80c6ddc8 r6:7f65e034 r5:00000000 r4:7f65e034
[   67.481964] [<8056b478>] (driver_register) from [<805df510>]
(usb_register_driver+0x74/0x140)
[   67.493901]  r5:00000000 r4:7f65e000
[   67.499131] [<805df49c>] (usb_register_driver) from [<7f661024>]
(mt76x0_driver_init+0x24/0x1000 [mt76x0u])
[   67.512258]  r9:00000001 r8:7f65e308 r7:00000000 r6:80c08d48
r5:7f661000 r4:7f65e2c0
[   67.523404] [<7f661000>] (mt76x0_driver_init [mt76x0u]) from
[<80102f6c>] (do_one_initcall+0x4c/0x210)
[   67.536142] [<80102f20>] (do_one_initcall) from [<801ae63c>]
(do_init_module+0x6c/0x21c)
[   67.547639]  r8:7f65e308 r7:80c08d48 r6:b65f0ac0 r5:7f65e2c0
r4:7f65e2c0
[   67.556129] [<801ae5d0>] (do_init_module) from [<801ad68c>]
(load_module+0x1d10/0x2304)
Fixes: b40b15e1521f ("mt76: add usb support to mt76 layer")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/wireless/mediatek/mt76/usb.c (diff)
Commit d6318df6b0cc3cf97faa498bee488603a5476553 by gregkh
gpio: of: Apply regulator-gpio quirk only to enable-gpios
[ Upstream commit 0e7d6f94016407fd7e1ae472e254d64d4454e9c8 ]
Since commit d6cd33ad7102 ("regulator: gpio: Convert to use
descriptors") the GPIO regulator had inverted the polarity of the
control GPIO. This problem manifested itself on systems with DT
containing the following description (snippet from
salvator-common.dtsi):
gpios = <&gpio5 1 GPIO_ACTIVE_HIGH>;
gpios-states = <1>;
states = <3300000 1
  1800000 0>;
Prior to the aforementioned commit, the gpio-regulator code used
gpio_request_array() to claim the GPIO(s) specified in the "gpios" DT
node, while the commit changed that to devm_gpiod_get_index().
The legacy gpio_request_array() calls gpio_request_one() and then
gpiod_request(), which parses the DT flags of the "gpios" node and
populates the GPIO descriptor flags field accordingly.
The new devm_gpiod_get_index() calls gpiod_get_index(), then
of_find_gpio(), of_get_named_gpiod_flags() with flags != NULL, and then
of_gpio_flags_quirks(). Since commit a603a2b8d86e
("gpio: of: Add special quirk to parse regulator flags"),
of_gpio_flags_quirks() contains a quirk for regulator-gpio which was
never triggered by the legacy gpio_request_array() code path, but is
triggered by devm_gpiod_get_index() code path.
This quirk checks whether a GPIO is associated with a fixed or
gpio-regulator and if so, checks two additional conditions. First,
whether such GPIO is active-low, and if so, ignores the active-low flag.
Second, whether the regulator DT node does have an "enable-active-high"
property and if the property is NOT present, sets the GPIO flags as
active-low.
The second check triggers a problem, since it is applied to all GPIOs
associated with a gpio-regulator, rather than only on the
"enable" GPIOs, as the old code did. This changes the way the
gpio-regulator interprets the DT description of the control GPIOs.
The old code using gpio_request_array() explicitly parsed the
"enable-active-high" DT property and only applied it to the GPIOs
described in the "enable-gpios" DT node, and only if those were present.
This patch fixes the quirk code by only applying the quirk to
"enable-gpios", thus restoring the old behavior.
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Geert
Uytterhoeven <geert+renesas@glider.be> Cc: Jan Kotas <jank@cadence.com>
Cc: Linus Walleij <linus.walleij@linaro.org> Cc: Mark Brown
<broonie@kernel.org> Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>
Cc: linux-renesas-soc@vger.kernel.org To: linux-gpio@vger.kernel.org
Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpio/gpiolib-of.c (diff)
Commit a8254b01ca211c784019d8d2ad3da1238a32a0e5 by gregkh
xen/gntdev: Do not destroy context while dma-bufs are in use
[ Upstream commit fa13e665e02874c0a5f4d06d6967ae34a6cb3d6a ]
If there are exported DMA buffers which are still in use and grant
device is closed by either normal user-space close or by a signal this
leads to the grant device context to be destroyed, thus making it not
possible to correctly destroy those exported buffers when they are
returned back to gntdev and makes the module crash:
[  339.617540] [<ffff00000854c0d8>] dmabuf_exp_ops_release+0x40/0xa8
[  339.617560] [<ffff00000867a6e8>] dma_buf_release+0x60/0x190
[  339.617577] [<ffff0000082211f0>] __fput+0x88/0x1d0
[  339.617589] [<ffff000008221394>] ____fput+0xc/0x18
[  339.617607] [<ffff0000080ed4e4>] task_work_run+0x9c/0xc0
[  339.617622] [<ffff000008089714>] do_notify_resume+0xfc/0x108
Fix this by referencing gntdev on each DMA buffer export and
unreferencing on buffer release.
Signed-off-by: Oleksandr Andrushchenko
<oleksandr_andrushchenko@epam.com> Reviewed-by: Boris
Ostrovsky@oracle.com> Signed-off-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/xen/gntdev-dmabuf.h (diff)
The file was modifieddrivers/xen/gntdev.c (diff)
The file was modifieddrivers/xen/gntdev-dmabuf.c (diff)
Commit e6eef52400547322907c2e5e4eb8a825f8ed4e59 by gregkh
vfs: fix preadv64v2 and pwritev64v2 compat syscalls with offset == -1
[ Upstream commit cc4b1242d7e3b42eed73881fc749944146493e4f ]
The preadv2 and pwritev2 syscalls are supposed to emulate the readv and
writev syscalls when offset == -1. Therefore the compat code should
check for offset before calling do_compat_preadv64 and
do_compat_pwritev64. This is the case for the preadv2 and pwritev2
syscalls, but handling of offset == -1 is missing in their 64-bit
equivalent.
This patch fixes that, calling do_compat_readv and do_compat_writev when
offset == -1. This fixes the following glibc tests on x32:
- misc/tst-preadvwritev2
- misc/tst-preadvwritev64v2
Cc: Alexander Viro <viro@zeniv.linux.org.uk> Cc: H.J. Lu
<hjl.tools@gmail.com> Signed-off-by: Aurelien Jarno
<aurelien@aurel32.net> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/read_write.c (diff)
Commit 2fe8be270932ea0ab076aa42c0ecc914f6ae1753 by gregkh
HID: intel-ish-hid: avoid binding wrong ishtp_cl_device
[ Upstream commit 0d28f49412405d87d3aae83da255070a46e67627 ]
When performing a warm reset in ishtp bus driver, the ishtp_cl_device
will not be removed, its fw_client still points to the already freed
ishtp_device.fw_clients array.
Later after driver finishing ishtp client enumeration, this dangling
pointer may cause driver to bind the wrong ishtp_cl_device to the new
client, causing wrong callback to be called for messages intended for
the new client.
This helps in development of firmware where frequent switching of
firmwares is required without Linux reboot.
Signed-off-by: Hong Liu <hong.liu@intel.com> Tested-by: Hongyan Song
<hongyan.song@intel.com> Acked-by: Srinivas Pandruvada
<srinivas.pandruvada@linux.intel.com> Signed-off-by: Jiri Kosina
<jkosina@suse.cz> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/hid/intel-ish-hid/ishtp/bus.c (diff)
Commit 55d7152d37dccfa9add45df82fd45c373e032f46 by gregkh
cgroup, rstat: Don't flush subtree root unless necessary
[ Upstream commit b4ff1b44bcd384d22fcbac6ebaf9cc0d33debe50 ]
cgroup_rstat_cpu_pop_updated() is used to traverse the updated cgroups
on flush.  While it was only visiting updated ones in the subtree, it
was visiting @root unconditionally.  We can easily check whether @root
is updated or not by looking at its ->updated_next just as with the
cgroups in the subtree.
* Remove the unnecessary cgroup_parent() test.  The system root cgroup
is never updated and thus its ->updated_next is always NULL.  No
need to test whether cgroup_parent() exists in addition to
->updated_next.
* Terminate traverse if ->updated_next is NULL.  This can only happen
for subtree @root and there's no reason to visit it if it's not
marked updated.
This reduces cpu consumption when reading a lot of rstat backed files.
In a micro benchmark reading stat from ~1600 cgroups, the sys time was
lowered by >40%.
Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedkernel/cgroup/rstat.c (diff)
Commit aa6c9fcac011bf67a43bb36bccb54aebd69fff83 by gregkh
efi: Fix build error due to enum collision between efi.h and ima.h
[ Upstream commit 5c418dc789a3898717ebf2caa5716ba91a7150b2 ]
The following commit:
  a893ea15d764 ("tpm: move tpm_chip definition to include/linux/tpm.h")
introduced a build error when both IMA and EFI are enabled:
    In file included from ../security/integrity/ima/ima_fs.c:30:
   ../security/integrity/ima/ima.h:176:7: error: redeclaration of
enumerator "NONE"
What happens is that both headers (ima.h and efi.h) defines the same
'NONE' constant, and it broke when they started getting included from
the same file:
Rework to prefix the EFI enum with 'EFI_*'.
Signed-off-by: Anders Roxell <anders.roxell@linaro.org> Signed-off-by:
Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc:
linux-efi@vger.kernel.org Link:
http://lkml.kernel.org/r/20190215165551.12220-2-ard.biesheuvel@linaro.org
[ Cleaned up the changelog a bit. ] Signed-off-by: Ingo Molnar
<mingo@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedinclude/linux/efi.h (diff)
The file was modifieddrivers/firmware/efi/runtime-wrappers.c (diff)
The file was modifiedarch/x86/platform/efi/quirks.c (diff)
Commit 7440c206c38fd91956cbc2f36942e38a29ad193c by gregkh
drm/sched: Fix entities with 0 rqs.
[ Upstream commit 1decbf6bb0b4dc56c9da6c5e57b994ebfc2be3aa ]
Some blocks in amdgpu can have 0 rqs.
Job creation already fails with -ENOENT when entity->rq is NULL, so jobs
cannot be pushed. Without a rq there is no scheduler to pop jobs, and rq
selection already does the right thing with a list of length 0.
So the operations we need to fix are:
- Creation, do not set rq to rq_list[0] if the list can have length 0.
- Do not flush any jobs when there is no rq.
- On entity destruction handle the rq = NULL case.
- on set_priority, do not try to change the rq if it is NULL.
Signed-off-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Reviewed-by:
Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/gpu/drm/scheduler/sched_entity.c (diff)
Commit 9489ac42680c7dc5ea1a4410bf136336397b1fee by gregkh
regulator: core: Take lock before applying system load
[ Upstream commit e5e21f70bfd3a201e627b48aed82793d1bcd6f78 ]
Take the regulator lock before applying system load.
Fixes the following lockdep splat:
[    5.583581] WARNING: CPU: 1 PID: 16 at drivers/regulator/core.c:925
drms_uA_update+0x114/0x360
[    5.588467] Modules linked in:
[    5.596833] CPU: 1 PID: 16 Comm: kworker/1:0 Not tainted
5.0.0-rc6-next-20190213-00002-g0fce66ab480f #18
[    5.599933] Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC
(DT)
[    5.609544] Workqueue: events qcom_channel_state_worker
[    5.616209] pstate: 60000005 (nZCv daif -PAN -UAO)
[    5.621152] pc : drms_uA_update+0x114/0x360
[    5.626006] lr : drms_uA_update+0x110/0x360
[    5.630084] sp : ffff0000124b3490
[    5.634242] x29: ffff0000124b3490 x28: ffff800005326e00
[    5.637735] x27: ffff0000124b35f8 x26: 000000000032bc48
[    5.643117] x25: ffff800004c7e800 x24: ffff800004c6d500
[    5.648411] x23: ffff800004c38a80 x22: 00000000000000d1
[    5.653706] x21: 00000000001ab3f0 x20: ffff800004c7e800
[    5.659001] x19: ffff0000114c3000 x18: ffffffffffffffff
[    5.664297] x17: 0000000000000000 x16: 0000000000000000
[    5.669592] x15: ffff0000114c3808 x14: 0720072007200720
[    5.674888] x13: 00000000199c9b28 x12: ffff80002bcccc40
[    5.680183] x11: ffff000012286000 x10: ffff0000114c3808
[    5.685477] x9 : 0720072007200720 x8 : ffff000010e9e808
[    5.690772] x7 : ffff0000106da568 x6 : 0000000000000000
[    5.696067] x5 : 0000000000000000 x4 : 0000000000000000
[    5.701362] x3 : 0000000000000004 x2 : 0000000000000000
[    5.706658] x1 : 0000000000000000 x0 : 0000000000000000
[    5.711952] Call trace:
[    5.717223]  drms_uA_update+0x114/0x360
[    5.719405]  regulator_register+0xb30/0x1140
[    5.723230]  devm_regulator_register+0x4c/0xa8
[    5.727745]  rpm_reg_probe+0xfc/0x1b0
[    5.731992]  platform_drv_probe+0x50/0xa0
[    5.735727]  really_probe+0x20c/0x2b8
[    5.739718]  driver_probe_device+0x58/0x100
[    5.743368]  __device_attach_driver+0x90/0xd0
[    5.747363]  bus_for_each_drv+0x64/0xc8
[    5.751870]  __device_attach+0xd8/0x138
[    5.755516]  device_initial_probe+0x10/0x18
[    5.759341]  bus_probe_device+0x98/0xa0
[    5.763502]  device_add+0x3d0/0x640
[    5.767319]  of_device_add+0x48/0x58
[    5.770793]  of_platform_device_create_pdata+0xb0/0x128
[    5.774629]  of_platform_bus_create+0x174/0x370
[    5.779569]  of_platform_populate+0x78/0xe0
[    5.784082]  qcom_smd_rpm_probe+0x80/0xa0
[    5.788245]  rpmsg_dev_probe+0x114/0x1a0
[    5.792411]  really_probe+0x20c/0x2b8
[    5.796401]  driver_probe_device+0x58/0x100
[    5.799964]  __device_attach_driver+0x90/0xd0
[    5.803960]  bus_for_each_drv+0x64/0xc8
[    5.808468]  __device_attach+0xd8/0x138
[    5.812115]  device_initial_probe+0x10/0x18
[    5.815936]  bus_probe_device+0x98/0xa0
[    5.820099]  device_add+0x3d0/0x640
[    5.823916]  device_register+0x1c/0x28
[    5.827391]  rpmsg_register_device+0x4c/0x90
[    5.831216]  qcom_channel_state_worker+0x170/0x298
[    5.835651]  process_one_work+0x294/0x6e8
[    5.840241]  worker_thread+0x40/0x450
[    5.844318]  kthread+0x11c/0x120
[    5.847961]  ret_from_fork+0x10/0x18
[    5.851260] irq event stamp: 9090
[    5.854820] hardirqs last  enabled at (9089): [<ffff000010160798>]
console_unlock+0x3e0/0x5b0
[    5.858086] hardirqs last disabled at (9090): [<ffff0000100817cc>]
do_debug_exception+0x104/0x140
[    5.866596] softirqs last  enabled at (9086): [<ffff000010082024>]
__do_softirq+0x474/0x574
[    5.875446] softirqs last disabled at (9079): [<ffff0000100f2254>]
irq_exit+0x13c/0x148
[    5.883598] ---[ end trace 6984ef7f081afa21 ]---
Fixes: fa94e48e13a1 ("regulator: core: Apply system load even if no
consumer loads") Signed-off-by: Niklas Cassel <niklas.cassel@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/regulator/core.c (diff)
Commit 34cbc429c56d8c93ba60c7fa0a437005903bce13 by gregkh
jbd2: fix race when writing superblock
[ Upstream commit 538bcaa6261b77e71d37f5596c33127c1a3ec3f7 ]
The jbd2 superblock is lockless now, so there is probably a race
condition between writing it so disk and modifing contents of it, which
may lead to checksum error. The following race is the one case that we
have captured.
jbd2                                fsstress
jbd2_journal_commit_transaction
jbd2_journal_update_sb_log_tail
jbd2_write_superblock
  jbd2_superblock_csum_set         jbd2_journal_revoke
                                    jbd2_journal_set_features(revork)
                                    modify superblock
  submit_bh(checksum incorrect)
Fix this by locking the buffer head before modifing it.  We always write
the jbd2 superblock after we modify it, so this just means calling the
lock_buffer() a little earlier.
This checksum corruption problem can be reproduced by xfstests
generic/475.
Reported-by: zhangyi (F) <yi.zhang@huawei.com> Suggested-by: Jan Kara
<jack@suse.cz> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/jbd2/journal.c (diff)
Commit 1cbdd24017989710d64ffdaa070aa8c9d8e7b6e0 by gregkh
leds: lp55xx: fix null deref on firmware load failure
[ Upstream commit 5ddb0869bfc1bca6cfc592c74c64a026f936638c ]
I've stumbled upon a kernel crash and the logs pointed me towards the
lp5562 driver:
> <4>[306013.841294] lp5562 0-0030: Direct firmware load for lp5562
failed with error -2
> <4>[306013.894990] lp5562 0-0030: Falling back to user helper
> ...
> <3>[306073.924886] lp5562 0-0030: firmware request failed
> <1>[306073.939456] Unable to handle kernel NULL pointer dereference at
virtual address 00000000
> <4>[306074.251011] PC is at _raw_spin_lock+0x1c/0x58
> <4>[306074.255539] LR is at release_firmware+0x6c/0x138
> ...
After taking a look I noticed firmware_release() could be called with
either NULL or a dangling pointer.
Fixes: 10c06d178df11 ("leds-lp55xx: support firmware interface")
Signed-off-by: Michal Kazior <michal@plume.com> Signed-off-by: Jacek
Anaszewski <jacek.anaszewski@gmail.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/leds/leds-lp55xx-common.c (diff)
Commit 17e987679232684ef2668016a4bf66646d9547fa by gregkh
tools build: Add -lrt to FEATURE_CHECK_LDFLAGS-libaio
[ Upstream commit aa8f9c517ebce7a0959da064ef2660ea03f133f8 ]
Since we need it to resolve the AIO symbols, otherwise we fail with:
  $ cat /tmp/build/perf/feature/test-all.make.output
/usr/bin/ld: /tmp/ccEqrj36.o: undefined reference to symbol
'aio_return64@@GLIBC_2.2.5'
/usr/bin/ld: //usr/lib64/librt.so.1: error adding symbols: DSO missing
from command line
collect2: error: ld returned 1 exit status
$
When we added the aio support in 'perf record' only the test-libaio.bin
target got the -lrt, i.e. the feature detection slow path. Fix it.
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Alexey Budankov
<alexey.budankov@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com>
Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org> Fixes: 2a07d814747b ("tools
build feature: Check if libaio is available") Signed-off-by: Arnaldo
Carvalho de Melo <acme@redhat.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedtools/perf/Makefile.config (diff)
Commit 336eb093ba1635bb50f117eeb85a16ab40d37afb by gregkh
tools build: Add test-reallocarray.c to test-all.c to fix the build
[ Upstream commit a96c03e8cdcf123384319f312d0a08a7a760bb35 ]
When a test is in the FEATURE_TESTS_BASIC list in
tools/build/Makefile.feature must be added to
tools/build/feature/test-all.c, because the successfull compilation and
linking of that test-all.bin file means that all the features listed in
FEATURE_TESTS_BASIC are present in the system, so we don't have to go on
feature by feature test building them.
Since reallocarray() is expected to be present in modern systems, it has
a place in FEATURE_TESTS_BASIC, so that we speed up the build process
building just that file.
For older systems, such as ubuntu:16.04 (build failure reported by Jin
Yao) debian:8, and for the current flagship RHEL distro, RHEL7, the
build will fail as test-all.bin (without test-reallocarray.c included)
passes but reallocarray() isn't present, making the build fail with:
    CC       /tmp/build/perf/libbpf.o
   MKDIR    /tmp/build/perf/fs/
   CC       /tmp/build/perf/fs/tracing_path.o
   LD       /tmp/build/perf/fd/libapi-in.o
   CC       /tmp/build/perf/bpf.o
libbpf.c: In function 'bpf_object__add_program':
libbpf.c:367:10: error: implicit declaration of function 'reallocarray'
[-Werror=implicit-function-declaration]
   progs = reallocarray(progs, nr_progs + 1, sizeof(progs[0]));
           ^
libbpf.c:367:2: error: nested extern declaration of 'reallocarray'
[-Werror=nested-externs]
   progs = reallocarray(progs, nr_progs + 1, sizeof(progs[0]));
   ^
libbpf.c:367:8: error: assignment makes pointer from integer without a
cast [-Werror=int-conversion]
   progs = reallocarray(progs, nr_progs + 1, sizeof(progs[0]));
         ^
libbpf.c: In function 'bpf_object__elf_collect':
libbpf.c:887:10: error: assignment makes pointer from integer without a
cast [-Werror=int-conversion]
     reloc = reallocarray(reloc, nr_reloc,
           ^
libbpf.c: In function 'bpf_program__reloc_text':
libbpf.c:1394:12: error: assignment makes pointer from integer without
a cast [-Werror=int-conversion]
    new_insn = reallocarray(prog->insns, new_cnt, sizeof(*insn));
             ^
   CC       /tmp/build/perf/nlattr.o
Even with:
  $ grep reallocarray /tmp/build/perf/FEATURE-DUMP
feature-reallocarray=1
$
Which ubuntu:16.04.5 LTS doesn't have:
  perfbuilder@38a153a1bba8:/$ head -2 /etc/os-release
NAME="Ubuntu"
VERSION="16.04.5 LTS (Xenial Xerus)"
perfbuilder@38a153a1bba8:/$ find /usr/include/ -name "*.h" | xargs grep
-w reallocarray
perfbuilder@38a153a1bba8:/$
Fix it by including it to test-all.c, which ends up forcing the
individual tests to be triggered and for the build process to notice
that indeed reallocarray() is not there:
  perfbuilder@38a153a1bba8:/$ cat
/tmp/build/perf/feature/test-all.make.output
In file included from test-all.c:178:0:
test-reallocarray.c: In function 'main_test_reallocarray':
test-reallocarray.c:7:11: error: implicit declaration of function
'reallocarray' [-Werror=implicit-function-declaration]
   return !!reallocarray(NULL, 1, 1);
            ^
cc1: all warnings being treated as errors
perfbuilder@38a153a1bba8:/$
That is the only test that is failing on Ubuntu 16.03.5 LTS, so all
tests are forced:
  perfbuilder@38a153a1bba8:/tmp/build/perf/feature$ ls -lSr
*.make.output
<SNIP successful tests>
-rw-r--r--. 1 perfbuilder perfbuilder   0 Feb 14 15:00
test-dwarf.make.output
-rw-r--r--. 1 perfbuilder perfbuilder   0 Feb 14 14:16
test-cplus-demangle.make.output
-rw-r--r--. 1 perfbuilder perfbuilder   0 Feb 14 15:00
test-bpf.make.output
-rw-r--r--. 1 perfbuilder perfbuilder   0 Feb 14 15:00
test-backtrace.make.output
-rw-r--r--. 1 perfbuilder perfbuilder 104 Feb 14 15:00
test-bionic.make.output
-rw-r--r--. 1 perfbuilder perfbuilder 107 Feb 14 15:00
test-libunwind-x86.make.output
-rw-r--r--. 1 perfbuilder perfbuilder 115 Feb 14 15:00
test-libunwind-aarch64.make.output
-rw-r--r--. 1 perfbuilder perfbuilder 122 Feb 14 15:00
test-libbabeltrace.make.output
-rw-r--r--. 1 perfbuilder perfbuilder 254 Feb 14 15:00
test-reallocarray.make.output
-rw-r--r--. 1 perfbuilder perfbuilder 312 Feb 14 15:00
test-all.make.output
perfbuilder@38a153a1bba8:/tmp/build/perf/feature$
And that reallocarray() one shows:
  perfbuilder@38a153a1bba8:/tmp/build/perf/feature$ cat
test-reallocarray.make.output
test-reallocarray.c: In function 'main':
test-reallocarray.c:7:11: error: implicit declaration of function
'reallocarray' [-Werror=implicit-function-declaration]
   return !!reallocarray(NULL, 1, 1);
            ^
cc1: all warnings being treated as errors
perfbuilder@38a153a1bba8:/tmp/build/perf/feature$
Which now generates the expected result:
  perfbuilder@38a153a1bba8:~$ grep reallocarray
/tmp/build/perf/FEATURE-DUMP
feature-reallocarray=0
perfbuilder@38a153a1bba8:~$
The fallback mechanism kicks in and libbpf and perf are again buildable
in systems without reallocarray():
  $ cat tools/include/tools/libc_compat.h
// SPDX-License-Identifier: (LGPL-2.0+ OR BSD-2-Clause)
/* Copyright (C) 2018 Netronome Systems, Inc. */
  #ifndef __TOOLS_LIBC_COMPAT_H
#define __TOOLS_LIBC_COMPAT_H
  #include <stdlib.h>
#include <linux/overflow.h>
  #ifdef COMPAT_NEED_REALLOCARRAY
static inline void *reallocarray(void *ptr, size_t nmemb, size_t size)
{
  size_t bytes;
  if (unlikely(check_mul_overflow(nmemb, size, &bytes)))
  return NULL;
  return realloc(ptr, bytes);
}
#endif
#endif
$
Reported-by: Jin Yao <yao.jin@linux.intel.com> Acked-by: Jiri Olsa
<jolsa@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc:
Alexei Starovoitov <ast@fb.com> Cc: Andrii Nakryiko
<andrii.nakryiko@gmail.com> Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Jakub Kicinski <jakub.kicinski@netronome.com> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Song Liu <songliubraving@fb.com> Cc: Yonghong
Song <yhs@fb.com> Fixes: 531b014e7a2f ("tools: bpf: make use of
reallocarray") Link:
https://lkml.kernel.org/n/tip-aonqku8axii8rxki5g11w40b@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/build/feature/test-reallocarray.c (diff)
The file was modifiedtools/build/feature/test-all.c (diff)
Commit 8b4fdbce8ca4f96ea707bd8355fb9df87796be31 by gregkh
perf beauty waitid options: Fix up prefix showing logic
[ Upstream commit 1da7e0022784b0e05b49bf73521fa2cc4633af85 ]
When introducing the possibility for selecting if the common prefix to
options such as the waitid ones, i.e. all 'waitid' options start with
'W', so, to make it make it more compact if configured to suppress it,
'perf trace' will do so, other examples include mmap's PROT_ prefix for
its 'prot' argument, etc, which, when showing the syscall argument name
ends up producing duplicated info that clutters the screen, i.e.:
  # perf trace -e mmap --max-events 2 sleep 1
    0.000 ( 0.014 ms): sleep/20886 mmap(len: 112595, prot: PROT_READ,
flags: MAP_PRIVATE, fd: 3) = 0x7f3e986d2000
    0.041 ( 0.005 ms): sleep/20886 mmap(len: 8192, prot:
PROT_READ|PROT_WRITE, flags: MAP_PRIVATE|MAP_ANONYMOUS) = 0x7f3e986d0000
#
So it is possible to suppress that and make it more compact by having
this in your ~/.perfconfig:
  # cat ~/.perfconfig
[trace]
show_prefix = no
#
  # perf trace -e mmap --max-events 2 sleep 1
    0.000 ( 0.014 ms): sleep/8009 mmap(len: 112595, prot: READ, flags:
PRIVATE, fd: 3) = 0x7ff2373de000
    0.040 ( 0.005 ms): sleep/8009 mmap(len: 8192, prot: READ|WRITE,
flags: PRIVATE|ANONYMOUS) = 0x7ff2373dc000
#
To have it look more like strace's output, we instead want to suppress
the arg name and show the prefix, so use:
  # cat ~/.perfconfig
[trace]
show_prefix = yes
show_arg_names = no
#
# perf trace -e mmap --max-events 2 sleep 1
    0.000 ( 0.006 ms): sleep/15513 mmap(NULL, 112595, PROT_READ,
MAP_PRIVATE, 3, 0) = 0x7f7a9b6d3000
    0.020 ( 0.002 ms): sleep/15513 mmap(NULL, 8192,
PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS) = 0x7f7a9b6d1000
#
When this logic was introduced a bug came with it when processing the
waitid 'option' arg that ended up expecting 3 strings when just two were
being provided, fix it.
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@kernel.org> Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com> Cc:
Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com>
Fixes: c65c83ffe904 ("perf trace: Allow asking for not suppressing
common string prefixes") Signed-off-by: Arnaldo Carvalho de Melo
<acme@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/trace/beauty/waitid_options.c (diff)
Commit 59c09689808e1f4a67cf9e884a955c9d251ee5d8 by gregkh
perf trace: Check if the 'fd' is negative when mapping it to pathname
[ Upstream commit 051074867434cc520c08f188479d4757dcfdaef8 ]
We were crashing when processing a negative fd:
  Program received signal SIGSEGV, Segmentation fault.
0x0000000000609bbf in syscall_arg__scnprintf_ioctl_cmd (bf=0x1172eca
"", size=2038, arg=0x7fffffff8360) at trace/beauty/ioctl.c:182
182 if (file->dev_maj == USB_DEVICE_MAJOR)
Missing separate debuginfos, use: dnf debuginfo-install
bzip2-libs-1.0.6-28.fc29.x86_64 elfutils-libelf-0.174-5.fc29.x86_64
elfutils-libs-0.174-5.fc29.x86_64 glib2-2.58.3-1.fc29.x86_64
libbabeltrace-1.5.6-1.fc29.x86_64 libunwind-1.2.1-6.fc29.x86_64
libuuid-2.32.1-1.fc29.x86_64 libxcrypt-4.4.3-2.fc29.x86_64
numactl-libs-2.0.12-1.fc29.x86_64 openssl-libs-1.1.1a-1.fc29.x86_64
pcre-8.42-6.fc29.x86_64 perl-libs-5.28.1-427.fc29.x86_64
popt-1.16-15.fc29.x86_64 python2-libs-2.7.15-11.fc29.x86_64
slang-2.3.2-4.fc29.x86_64 xz-libs-5.2.4-3.fc29.x86_64
(gdb) bt
#0  0x0000000000609bbf in syscall_arg__scnprintf_ioctl_cmd
(bf=0x1172eca "", size=2038, arg=0x7fffffff8360) at
trace/beauty/ioctl.c:182
#1  0x000000000048e295 in syscall__scnprintf_val (sc=0x123b500,
bf=0x1172eca "", size=2038, arg=0x7fffffff8360, val=21519)
     at builtin-trace.c:1594
#2  0x000000000048e60d in syscall__scnprintf_args (sc=0x123b500,
bf=0x1172ec6 "-1, ", size=2042, args=0x7ffff6a7c034 "\377\377\377\377",
     augmented_args=0x7ffff6a7c064, augmented_args_size=4,
trace=0x7fffffffa8d0, thread=0x1175cd0) at builtin-trace.c:1661
#3  0x000000000048f04e in trace__sys_enter (trace=0x7fffffffa8d0,
evsel=0xb260b0, event=0x7ffff6a7bfe8, sample=0x7fffffff84f0)
     at builtin-trace.c:1880
#4  0x00000000004915a4 in trace__handle_event (trace=0x7fffffffa8d0,
event=0x7ffff6a7bfe8, sample=0x7fffffff84f0) at builtin-trace.c:2590
#5  0x0000000000491eed in __trace__deliver_event (trace=0x7fffffffa8d0,
event=0x7ffff6a7bfe8) at builtin-trace.c:2818
#6  0x0000000000492030 in trace__deliver_event (trace=0x7fffffffa8d0,
event=0x7ffff6a7bfe8) at builtin-trace.c:2845
#7  0x0000000000492896 in trace__run (trace=0x7fffffffa8d0, argc=0,
argv=0x7fffffffdb58) at builtin-trace.c:3040
#8  0x000000000049603a in cmd_trace (argc=0, argv=0x7fffffffdb58) at
builtin-trace.c:3952
#9  0x00000000004d5103 in main (argc=1, argv=0x7fffffffdb58) at
perf.c:474
(gdb) p fd
$1 = -1
(gdb) p file
$7 = (struct file *) 0xfffffffffffffff0
(gdb) p ((struct thread_trace *)arg->thread)->files.table + fd
$8 = (struct file *) 0xfffffffffffffff0
(gdb)
Check for that and return NULL instead.
This problem was introduced recently, the other codepaths leading to
thread_trace__files_entry() check for negative fds, like
thread__fd_path(), but we need to do it at thread_trace__files_entry()
as more users are now calling it directly.
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@kernel.org> Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com> Cc:
Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com>
Fixes: 2d473389f87a ("perf trace beauty: Export function to get the
files for a thread") Link:
https://lkml.kernel.org/n/tip-oq7bvaaf07gsd4yqty3107u2@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/builtin-trace.c (diff)
Commit 528033f554c805b987a6a9f0661c55b2d95b6785 by gregkh
perf report: Add s390 diagnosic sampling descriptor size
[ Upstream commit 2187d87eacd46f6214ce3dc9cfd7a558375a4153 ]
On IBM z13 machine types 2964 and 2965 the descriptor sizes for sampling
and diagnostic sampling entries might be missing in the trailer entry
and are set to zero.
This leads to a perf report failure when processing diagnostic sampling
entries.
This patch adds missing descriptor sizes when the trailer entry contains
zero for these fields.
Output before:
[root@s38lp82 perf]#  ./perf report --stdio | fgrep Samples
0xabbf0 [0x8]: failed to process type: 68
Error:
failed to process sample
[root@s38lp82 perf]#
Output after:
[root@s38lp82 perf]#  ./perf report --stdio | fgrep Samples
# Total Lost Samples: 0
# Samples: 3K of event 'SF_CYCLES_BASIC_DIAG'
# Samples: 162  of event 'CF_DIAG'
[root@s38lp82 perf]#
Fixes: 2b1444f2e28b ("perf report: Add raw report support for s390
auxiliary trace")
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> Reviewed-by:
Hendrik Brueckner <brueckner@linux.ibm.com> Cc: Heiko Carstens
<heiko.carstens@de.ibm.com> Cc: Martin Schwidefsky
<schwidefsky@de.ibm.com> Link:
http://lkml.kernel.org/r/20190211100627.85714-1-tmricht@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/util/s390-cpumsf.c (diff)
Commit 2392dcb54ad2512d67e11e6669aaa0e12048f427 by gregkh
perf coresight: Do not test for libopencsd by default
[ Upstream commit 1c3b28fd7ae80c8f6bf1a09e1848e20a953c9ce4 ]
Since it is not yet that generally available, avoid testing for the
presence of libcoresight in the fast path test-all.bin feature test.
  # dnf search opencsd
No matches found.
# dnf search OpenCSD
No matches found.
# cat /etc/fedora-release
Fedora release 29 (Twenty Nine)
#
I.e. right now, in my system test-all.bin is failing all the time since
Fedora29 doesn't have libopencsd available:
  $ cat /tmp/build/perf/feature/test-all.make.output
In file included from test-all.c:174:
test-libopencsd.c:2:10: fatal error: opencsd/c_api/opencsd_c_api.h: No
such file or directory
  #include <opencsd/c_api/opencsd_c_api.h>
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
See:
  6ab2b762befd ("perf build: Disable libbabeltrace check by default")
For the rationale, as soon as libopencsd becomes more generally packaged
and available, we do the same thing we did with babeltrace, enabling it
by default, as done in:
  24787afbcd01 ("perf tools: Enable LIBBABELTRACE by default")
For now, to explicitely ask for opencsd, make sure you have it installed
and use:
   make -C tools/perf CORESIGHT=1
The feature test output will be there as an empty file:
  $ ls -la /tmp/build/perf/feature/test-libopencsd.make.output
Because the binary used for the feature check was successfully built:
  $ ls -la /tmp/build/perf/feature/test-libopencsd.bin
-rwxrwxr-x. 1 acme acme 18336 Feb 12 14:49
/tmp/build/perf/feature/test-libopencsd.bin
$ ldd /tmp/build/perf/feature/test-libopencsd.bin
linux-vdso.so.1 (0x00007fffe18cc000)
libopencsd_c_api.so.0 => /lib64/libopencsd_c_api.so.0
(0x00007fb8e67f6000)
libopencsd.so.0 => /lib64/libopencsd.so.0 (0x00007fb8e676f000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb8e65a9000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fb8e6411000)
libm.so.6 => /lib64/libm.so.6 (0x00007fb8e628d000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fb8e6272000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb8e6828000)
$
And the resulting perf binary will be linked with it:
  -rw-rw-r--. 1 acme acme 0 Feb 12 14:49
/tmp/build/perf/feature/test-libopencsd.make.output
$ ldd ~/bin/perf | grep opencsd
libopencsd_c_api.so.0 => /lib64/libopencsd_c_api.so.0
(0x00007fd43097f000)
libopencsd.so.0 => /lib64/libopencsd.so.0 (0x00007fd4308f8000)
$
To make sure this gets built before pushing things upstream I have a
ubuntu:19.04-x-arm64 container that has:
  [root@quaco x-arm64]# grep CORESIGHT Dockerfile
ENV EXTRA_MAKE_ARGS=CORESIGHT=1
[root@quaco x-arm64]#
So that I always build with libopencsd before pushing things upstream.
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kim Phillips <kim.phillips@arm.com> Cc:
linux-arm-kernel@lists.infradead.org Cc: Mathieu Poirier
<mathieu.poirier@linaro.org> Cc: Mike Leach <mike.leach@arm.com> Cc:
Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
Link:
https://lkml.kernel.org/n/tip-20vyy39jw9jgrijesi30fgox@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/Makefile.perf (diff)
The file was modifiedtools/build/feature/test-all.c (diff)
The file was modifiedtools/build/Makefile.feature (diff)
The file was modifiedtools/perf/Makefile.config (diff)
Commit 4f9f04ca4f832c1f017256e2b95880644b88f6a9 by gregkh
iwlwifi: pcie: fix emergency path
[ Upstream commit c6ac9f9fb98851f47b978a9476594fc3c477a34d ]
Allocator swaps the pending requests with 0 when it starts working. This
means that relying on it n RX path to decide if to move to emergency is
not always a good idea, since it may be zero, but there are still a lot
of unallocated RBs in the system. Change allocator to decrement the
pending requests on real time. It is more expensive since it accesses
the atomic variable more times, but it gives the RX path a better idea
of the system's status.
Reported-by: Ilan Peer <ilan.peer@intel.com> Signed-off-by: Sara Sharon
<sara.sharon@intel.com> Fixes: 868a1e863f95 ("iwlwifi: pcie: avoid empty
free RB queue") Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/net/wireless/intel/iwlwifi/pcie/rx.c (diff)
Commit 7b27cb19942eb4ea77e3e291168b788d2cfa4003 by gregkh
ACPI / video: Refactor and fix dmi_is_desktop()
[ Upstream commit cecf3e3e0803462335e25d083345682518097334 ]
This commit refactors the chassis-type detection introduced by commit
53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true on Win8-ready
_desktops_") (where desktop means anything without a builtin screen).
The DMI chassis_type is an unsigned integer, so rather then doing a
whole bunch of string-compares on it, convert it to an int and feed the
result to a switch case.
Note the switch case uses hex values, this is done because the spec uses
hex values too. This changes the check for "Main Server Chassis" from
checking for 11 decimal to 11 hexadecimal, this is a bug fix, the
original check for 11 decimal was wrong.
Fixes: 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true ...")
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
[ rjw: Drop redundant return statements ] Signed-off-by: Rafael J.
Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/acpi/acpi_video.c (diff)
Commit 7981a5b4df776ca9be9747266784ebfc9fb7ad8a by gregkh
selftests: ir: fix warning: "%s" directive output may be truncated ’
directive output may be truncated
[ Upstream commit ed675ed9da6d951322efd72d739d6b5ce1c18f02 ]
Fix the following warning by sizing the buffer to max. of sysfs path
max. size + d_name max. size.
gcc -Wall -O2 -I../../../include/uapi ir_loopback.c  -o
../tools/testing/selftests/ir/ir_loopback ir_loopback.c: In function
‘lirc_open’: ir_loopback.c:71:37: warning: ‘%s’ directive output may be
truncated writing up to 255 bytes into a region of size 95
[-Wformat-truncation=]
   snprintf(buf, sizeof(buf), "/dev/%s", dent->d_name);
                                    ^~ In file included from
/usr/include/stdio.h:862:0,
                from ir_loopback.c:14:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:64:10: note:
‘__builtin___snprintf_chk’ output between 6 and 261 bytes into a
destination of size 100
  return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       __bos (__s), __fmt, __va_arg_pack ());
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Shuah Khan <shuah@kernel.org> Acked-by: Sean Young
<sean@mess.org> Signed-off-by: Shuah Khan <shuah@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedtools/testing/selftests/ir/ir_loopback.c (diff)
Commit 34968a446c4ee2163c129c27154fd88940c2c3ca by gregkh
selftests: skip seccomp get_metadata test if not real root
[ Upstream commit 3aa415dd2128e478ea3225b59308766de0e94d6b ]
The get_metadata() test requires real root, so let's skip it if we're
not real root.
Note that I used XFAIL here because that's what the test does later if
CONFIG_CHEKCKPOINT_RESTORE happens to not be enabled. After looking at
the code, there doesn't seem to be a nice way to skip tests defined as
TEST(), since there's no return code (I tried exit(KSFT_SKIP), but that
didn't work either...). So let's do it this way to be consistent, and
easier to fix when someone comes along and fixes it.
Signed-off-by: Tycho Andersen <tycho@tycho.ws> Acked-by: Kees Cook
<keescook@chromium.org> Signed-off-by: Shuah Khan <shuah@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedtools/testing/selftests/seccomp/seccomp_bpf.c (diff)
Commit 170d4294760489519bc657a7bcbb0160da8f5b4c by gregkh
kprobes: Prohibit probing on bsearch()
[ Upstream commit 02106f883cd745523f7766d90a739f983f19e650 ]
Since kprobe breakpoing handler is using bsearch(), probing on this
routine can cause recursive breakpoint problem.
int3
->do_int3()
  ->ftrace_int3_handler()
    ->ftrace_location()
      ->ftrace_location_range()
        ->bsearch() -> int3
Prohibit probing on bsearch().
Signed-off-by: Andrea Righi <righi.andrea@gmail.com> Acked-by: Masami
Hiramatsu <mhiramat@kernel.org> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo
<acme@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Mathieu Desnoyers
<mathieu.desnoyers@efficios.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc:
Thomas Gleixner <tglx@linutronix.de> Link:
http://lkml.kernel.org/r/154998813406.31052.8791425358974650922.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedlib/bsearch.c (diff)
Commit c4ea4a79f8b229bc3d318944e27618e1b05492b5 by gregkh
kprobes: Prohibit probing on RCU debug routine
[ Upstream commit a39f15b9644fac3f950f522c39e667c3af25c588 ]
Since kprobe itself depends on RCU, probing on RCU debug routine can
cause recursive breakpoint bugs.
Prohibit probing on RCU debug routines.
int3
->do_int3()
  ->ist_enter()
    ->RCU_LOCKDEP_WARN()
      ->debug_lockdep_rcu_enabled() -> int3
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Cc: Alexander
Shishkin <alexander.shishkin@linux.intel.com> Cc: Andrea Righi
<righi.andrea@gmail.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Mathieu Desnoyers
<mathieu.desnoyers@efficios.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc:
Thomas Gleixner <tglx@linutronix.de> Link:
http://lkml.kernel.org/r/154998807741.31052.11229157537816341591.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedkernel/rcu/update.c (diff)
Commit f74b0a4bf14c15d6bef9d3bdfe90512a6652599e by gregkh
netfilter: conntrack: fix cloned unconfirmed skb->_nfct race in
__nf_conntrack_confirm
[ Upstream commit 13f5251fd17088170c18844534682d9cab5ff5aa ]
For bridge(br_flood) or broadcast/multicast packets, they could clone
skb with unconfirmed conntrack which break the rule that unconfirmed
skb->_nfct is never shared.  With nfqueue running on my system, the race
can be easily reproduced with following warning calltrace:
[13257.707525] CPU: 0 PID: 12132 Comm: main Tainted: P        W     
4.4.60 #7744
[13257.707568] Hardware name: Qualcomm (Flattened Device Tree)
[13257.714700] [<c021f6dc>] (unwind_backtrace) from [<c021bce8>]
(show_stack+0x10/0x14)
[13257.720253] [<c021bce8>] (show_stack) from [<c0449e10>]
(dump_stack+0x94/0xa8)
[13257.728240] [<c0449e10>] (dump_stack) from [<c022a7e0>]
(warn_slowpath_common+0x94/0xb0)
[13257.735268] [<c022a7e0>] (warn_slowpath_common) from [<c022a898>]
(warn_slowpath_null+0x1c/0x24)
[13257.743519] [<c022a898>] (warn_slowpath_null) from [<c06ee450>]
(__nf_conntrack_confirm+0xa8/0x618)
[13257.752284] [<c06ee450>] (__nf_conntrack_confirm) from [<c0772670>]
(ipv4_confirm+0xb8/0xfc)
[13257.761049] [<c0772670>] (ipv4_confirm) from [<c06e7a60>]
(nf_iterate+0x48/0xa8)
[13257.769725] [<c06e7a60>] (nf_iterate) from [<c06e7af0>]
(nf_hook_slow+0x30/0xb0)
[13257.777108] [<c06e7af0>] (nf_hook_slow) from [<c07f20b4>]
(br_nf_post_routing+0x274/0x31c)
[13257.784486] [<c07f20b4>] (br_nf_post_routing) from [<c06e7a60>]
(nf_iterate+0x48/0xa8)
[13257.792556] [<c06e7a60>] (nf_iterate) from [<c06e7af0>]
(nf_hook_slow+0x30/0xb0)
[13257.800458] [<c06e7af0>] (nf_hook_slow) from [<c07e5580>]
(br_forward_finish+0x94/0xa4)
[13257.808010] [<c07e5580>] (br_forward_finish) from [<c07f22ac>]
(br_nf_forward_finish+0x150/0x1ac)
[13257.815736] [<c07f22ac>] (br_nf_forward_finish) from [<c06e8df0>]
(nf_reinject+0x108/0x170)
[13257.824762] [<c06e8df0>] (nf_reinject) from [<c06ea854>]
(nfqnl_recv_verdict+0x3d8/0x420)
[13257.832924] [<c06ea854>] (nfqnl_recv_verdict) from [<c06e940c>]
(nfnetlink_rcv_msg+0x158/0x248)
[13257.841256] [<c06e940c>] (nfnetlink_rcv_msg) from [<c06e5564>]
(netlink_rcv_skb+0x54/0xb0)
[13257.849762] [<c06e5564>] (netlink_rcv_skb) from [<c06e4ec8>]
(netlink_unicast+0x148/0x23c)
[13257.858093] [<c06e4ec8>] (netlink_unicast) from [<c06e5364>]
(netlink_sendmsg+0x2ec/0x368)
[13257.866348] [<c06e5364>] (netlink_sendmsg) from [<c069fb8c>]
(sock_sendmsg+0x34/0x44)
[13257.874590] [<c069fb8c>] (sock_sendmsg) from [<c06a03dc>]
(___sys_sendmsg+0x1ec/0x200)
[13257.882489] [<c06a03dc>] (___sys_sendmsg) from [<c06a11c8>]
(__sys_sendmsg+0x3c/0x64)
[13257.890300] [<c06a11c8>] (__sys_sendmsg) from [<c0209b40>]
(ret_fast_syscall+0x0/0x34)
The original code just triggered the warning but do nothing. It will
caused the shared conntrack moves to the dying list and the packet be
droppped (nf_ct_resolve_clash returns NF_DROP for dying conntrack).
- Reproduce steps:
+----------------------------+
|          br0(bridge)       |
|                            |
+-+---------+---------+------+
| eth0|   | eth1|   | eth2|
|     |   |     |   |     |
+--+--+   +--+--+   +---+-+
    |         |          |
    |         |          |
+--+-+     +-+--+    +--+-+
| PC1|     | PC2|    | PC3|
+----+     +----+    +----+
iptables -A FORWARD -m mark --mark 0x1000000/0x1000000 -j NFQUEUE
--queue-num 100 --queue-bypass
ps: Our nfq userspace program will set mark on packets whose connection
has already been processed.
PC1 sends broadcast packets simulated by hping3:
hping3 --rand-source --udp 192.168.1.255 -i u100
- Broadcast racing flow chart is as follow:
br_handle_frame
BR_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING, br_handle_frame_finish)
// skb->_nfct (unconfirmed conntrack) is constructed at PRE_ROUTING
stage
br_handle_frame_finish
   // check if this packet is broadcast
   br_flood_forward
     br_flood
       list_for_each_entry_rcu(p, &br->port_list, list) // iterate
through each port
         maybe_deliver
           deliver_clone
             skb = skb_clone(skb)
             __br_forward
               BR_HOOK(NFPROTO_BRIDGE, NF_BR_FORWARD,...)
               // queue in our nfq and received by our userspace program
               // goto __nf_conntrack_confirm with process context on
CPU 1
   br_pass_frame_up
     BR_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN,...)
     // goto __nf_conntrack_confirm with softirq context on CPU 0
Because conntrack confirm can happen at both INPUT and POSTROUTING
stage.  So with NFQUEUE running, skb->_nfct with the same unconfirmed
conntrack could race on different core.
This patch fixes a repeating kernel splat, now it is only displayed
once.
Signed-off-by: Chieh-Min Wang <chiehminw@synology.com> Signed-off-by:
Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiednet/netfilter/nf_conntrack_core.c (diff)
Commit c716b08e06cafe9e6b713cd5e34dc8cf2286dab8 by gregkh
ARM: 8833/1: Ensure that NEON code always compiles with Clang
[ Upstream commit de9c0d49d85dc563549972edc5589d195cd5e859 ]
While building arm32 allyesconfig, I ran into the following errors:
  arch/arm/lib/xor-neon.c:17:2: error: You should compile this file with
'-mfloat-abi=softfp -mfpu=neon'
  In file included from lib/raid6/neon1.c:27:
/home/nathan/cbl/prebuilt/lib/clang/8.0.0/include/arm_neon.h:28:2:
error: "NEON support not enabled"
Building V=1 showed NEON_FLAGS getting passed along to Clang but
__ARM_NEON__ was not getting defined. Ultimately, it boils down to Clang
only defining __ARM_NEON__ when targeting armv7, rather than armv6k,
which is the '-march' value for allyesconfig.
>From lib/Basic/Targets/ARM.cpp in the Clang source:
  // This only gets set when Neon instructions are actually available,
unlike
// the VFP define, hence the soft float and arch check. This is subtly
// different from gcc, we follow the intent which was that it should be
set
// when Neon instructions are actually available.
if ((FPU & NeonFPU) && !SoftFloat && ArchVersion >= 7) {
   Builder.defineMacro("__ARM_NEON", "1");
   Builder.defineMacro("__ARM_NEON__");
   // current AArch32 NEON implementations do not support
double-precision
   // floating-point even when it is present in VFP.
   Builder.defineMacro("__ARM_NEON_FP",
                       "0x" + Twine::utohexstr(HW_FP & ~HW_FP_DP));
}
Ard Biesheuvel recommended explicitly adding '-march=armv7-a' at the
beginning of the NEON_FLAGS definitions so that __ARM_NEON__ always gets
definined by Clang. This doesn't functionally change anything because
that code will only run where NEON is supported, which is implicitly
armv7.
Link: https://github.com/ClangBuiltLinux/linux/issues/287
Suggested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by:
Nathan Chancellor <natechancellor@gmail.com> Acked-by: Nicolas Pitre
<nico@linaro.org> Reviewed-by: Nick Desaulniers
<ndesaulniers@google.com> Reviewed-by: Stefan Agner <stefan@agner.ch>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedarch/arm/lib/xor-neon.c (diff)
The file was modifiedarch/arm/lib/Makefile (diff)
The file was modifiedlib/raid6/Makefile (diff)
The file was modifiedDocumentation/arm/kernel_mode_neon.txt (diff)
Commit 6c896df369d1ab1189fdbb58272652f1b7f1ffe9 by gregkh
ARM: dts: meson8b: fix the Ethernet data line signals in eth_rgmii_pins
[ Upstream commit 29f0023d01f063feacfc404f0446905aee4f82ee ]
According to the Odroid-C1+ schematics the Ethernet TXD1 signal is
routed to GPIOH_5 and the TXD0 signal is routed to GPIOH_6. The public
S805 datasheet shows that TXD0 can be routed to DIF_2_P and TXD1 can be
routed to DIF_2_N instead.
The pin groups eth_txd0_0 (GPIOH_6) and eth_txd0_1 (DIF_2_P) are both
configured as Ethernet TXD0 and TXD1 data lines in meson8b.dtsi. At the
same time eth_txd1_0 (GPIOH_5) and eth_txd1_1 (DIF_2_N) are configured
as TXD0 and TXD1 data lines as well. This results in a bad Ethernet
receive performance. Presumably this is due to the eth_txd0 and eth_txd1
signal being routed to the wrong pins. As a result of that data can only
be transmitted on eth_txd2 and eth_txd3. However, I have no scope to
fully confirm this assumption.
The vendor u-boot sources for Odroid-C1 use the following Ethernet
pinmux configuration:
SET_CBUS_REG_MASK(PERIPHS_PIN_MUX_6, 0x3f4f);
SET_CBUS_REG_MASK(PERIPHS_PIN_MUX_7, 0xf00000); This translates to the
following pin groups in the mainline kernel:
- register 6 bit  0: eth_rxd1 (DIF_0_P)
- register 6 bit  1: eth_rxd0 (DIF_0_N)
- register 6 bit  2: eth_rx_dv (DIF_1_P)
- register 6 bit  3: eth_rx_clk (DIF_1_N)
- register 6 bit  6: eth_tx_en (DIF_3_P)
- register 6 bit  8: eth_ref_clk (DIF_3_N)
- register 6 bit  9: eth_mdc (DIF_4_P)
- register 6 bit 10: eth_mdio_en (DIF_4_N)
- register 6 bit 11: eth_tx_clk (GPIOH_9)
- register 6 bit 12: eth_txd2 (GPIOH_8)
- register 6 bit 13: eth_txd3 (GPIOH_7)
- register 7 bit 20: eth_txd0_0 (GPIOH_6)
- register 7 bit 21: eth_txd1_0 (GPIOH_5)
- register 7 bit 22: eth_rxd3 (DIF_2_P)
- register 7 bit 23: eth_rxd2 (DIF_2_N)
Drop the eth_txd0_1 and eth_txd1_1 groups from eth_rgmii_pins to fix the
Ethernet transmit performance on Odroid-C1. Also add the eth_rxd2 and
eth_rxd3 groups so we don't rely on the bootloader to set them up.
iperf3 statistics before this change:
- transmitting from Odroid-C1: 741 Mbits/sec (0 retries)
- receiving on Odroid-C1: 199 Mbits/sec (1713 retries)
iperf3 statistics after this change:
- transmitting from Odroid-C1: 667 Mbits/sec (0 retries)
- receiving on Odroid-C1: 750 Mbits/sec (0 retries)
Fixes: b96446541d8390 ("ARM: dts: meson8b: extend ethernet controller
description") Signed-off-by: Martin Blumenstingl
<martin.blumenstingl@googlemail.com> Cc: Emiliano Ingrassia
<ingrassia@epigenesys.com> Cc: Linus Lüssing <linus.luessing@c0d3.blue>
Tested-by: Emiliano Ingrassia <ingrassia@epigenesys.com> Reviewed-by:
Emiliano Ingrassia <ingrassia@epigenesys.com> Signed-off-by: Kevin
Hilman <khilman@baylibre.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedarch/arm/boot/dts/meson8b.dtsi (diff)
Commit 31f3d84c6d9f3339ba2ac42f873306b2495ddf5f by gregkh
ALSA: PCM: check if ops are defined before suspending PCM
[ Upstream commit d9c0b2afe820fa3b3f8258a659daee2cc71ca3ef ]
BE dai links only have internal PCM's and their substream ops may not be
set. Suspending these PCM's will result in their
ops->trigger() being invoked and cause a kernel oops. So skip suspending
PCM's if their ops are NULL.
[ NOTE: this change is required now for following the recent PCM core
change to get rid of snd_pcm_suspend() call.  Since DPCM BE takes
the runtime carried from FE while keeping NULL ops, it can hit this
bug.  See details at:
    https://github.com/thesofproject/linux/pull/582
-- tiwai ]
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart
<pierre-louis.bossart@linux.intel.com> Signed-off-by: Takashi Iwai
<tiwai@suse.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedsound/core/pcm_native.c (diff)
Commit db5177729062ed8d38a6646ffdf94313e605b204 by gregkh
ath10k: fix shadow register implementation for WCN3990
[ Upstream commit 1863008369ae0407508033b4b00f98b985adeb15 ]
WCN3990 supports shadow registers write operation support for copy
engine for regular operation in powersave mode.
Since WCN3990 is a 64-bit target, the shadow register implementation
needs to be done in the copy engine handlers for 64-bit target.
Currently the shadow register implementation is present in the 32-bit
target handlers of copy engine.
Fix the shadow register copy engine write operation implementation for
64-bit target(WCN3990).
Tested HW: WCN3990 Tested FW: WLAN.HL.2.0-01188-QCAHLSWMTPLZ-1
Fixes: b7ba83f7c414 ("ath10k: add support for shadow register for
WNC3990") Signed-off-by: Rakesh Pillai <pillair@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/net/wireless/ath/ath10k/ce.c (diff)
The file was modifieddrivers/net/wireless/ath/ath10k/ce.h (diff)
Commit 9738742e4e3852ba69a93aa26a00c88dbe61ff08 by gregkh
usb: f_fs: Avoid crash due to out-of-scope stack ptr access
[ Upstream commit 54f64d5c983f939901dacc8cfc0983727c5c742e ]
Since the 5.0 merge window opened, I've been seeing frequent crashes on
suspend and reboot with the trace:
[   36.911170] Unable to handle kernel paging request at virtual address
ffffff801153d660
[   36.912769] Unable to handle kernel paging request at virtual address
ffffff800004b564
...
[   36.950666] Call trace:
[   36.950670]  queued_spin_lock_slowpath+0x1cc/0x2c8
[   36.950681]  _raw_spin_lock_irqsave+0x64/0x78
[   36.950692]  complete+0x28/0x70
[   36.950703]  ffs_epfile_io_complete+0x3c/0x50
[   36.950713]  usb_gadget_giveback_request+0x34/0x108
[   36.950721]  dwc3_gadget_giveback+0x50/0x68
[   36.950723]  dwc3_thread_interrupt+0x358/0x1488
[   36.950731]  irq_thread_fn+0x30/0x88
[   36.950734]  irq_thread+0x114/0x1b0
[   36.950739]  kthread+0x104/0x130
[   36.950747]  ret_from_fork+0x10/0x1c
I isolated this down to in ffs_epfile_io():
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/usb/gadget/function/f_fs.c#n1065
Where the completion done is setup on the stack:
DECLARE_COMPLETION_ONSTACK(done);
Then later we setup a request and queue it, and wait for it:
if (unlikely(wait_for_completion_interruptible(&done))) {
   /*
   * To avoid race condition with ffs_epfile_io_complete,
   * dequeue the request first then check
   * status. usb_ep_dequeue API should guarantee no race
   * condition with req->complete callback.
   */
   usb_ep_dequeue(ep->ep, req);
   interrupted = ep->status < 0;
}
The problem is, that we end up being interrupted, dequeue the request,
and exit.
But then the irq triggers and we try calling complete() on the context
pointer which points to now random stack space, which results in the
panic.
Alan Stern pointed out there is a bug here, in that the snippet above
"assumes that usb_ep_dequeue() waits until the request has been
completed." And that:
    wait_for_completion(&done);
Is needed right after the usb_ep_dequeue().
Thus this patch implements that change. With it I no longer see the
crashes on suspend or reboot.
This issue seems to have been uncovered by behavioral changes in the
dwc3 driver in commit fec9095bdef4e ("usb: dwc3: gadget: remove
wait_end_transfer").
Cc: Alan Stern <stern@rowland.harvard.edu> Cc: Felipe Balbi
<balbi@kernel.org> Cc: Zeng Tao <prime.zeng@hisilicon.com> Cc: Jack Pham
<jackp@codeaurora.org> Cc: Thinh Nguyen <thinh.nguyen@synopsys.com> Cc:
Chen Yu <chenyu56@huawei.com> Cc: Jerry Zhang <zhangjerry@google.com>
Cc: Lars-Peter Clausen <lars@metafoo.de> Cc: Vincent Pelletier
<plr.vincent@gmail.com> Cc: Andrzej Pietrasiewicz
<andrzej.p@samsung.com> Cc: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: Linux USB List
<linux-usb@vger.kernel.org> Suggested-by: Alan Stern
<stern@rowland.harvard.edu> Signed-off-by: John Stultz
<john.stultz@linaro.org> Signed-off-by: Felipe Balbi
<felipe.balbi@linux.intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/usb/gadget/function/f_fs.c (diff)
Commit 83a6f919bbb75b381a9b306f0444c798f2f893d4 by gregkh
sched/topology: Fix percpu data types in struct sd_data & struct s_data
[ Upstream commit 99687cdbb3f6c8e32bcc7f37496e811f30460e48 ]
The percpu members of struct sd_data and s_data are declared as:
struct ... ** __percpu member;
So their type is:
__percpu pointer to pointer to struct ...
But looking at how they're used, their type should be:
pointer to __percpu pointer to struct ...
and they should thus be declared as:
struct ... * __percpu *member;
So fix the placement of '__percpu' in the definition of these
structures.
This addresses a bunch of Sparse's warnings like:
warning: incorrect type in initializer (different address spaces)
  expected void const [noderef] <asn:3> *__vpp_verify
  got struct sched_domain **
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Linus
Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link:
https://lkml.kernel.org/r/20190118144936.79158-1-luc.vanoostenryck@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedkernel/sched/topology.c (diff)
The file was modifiedinclude/linux/sched/topology.h (diff)
Commit f48bb10d7615020d04bf527cb3b3e7a41288fac5 by gregkh
bcache: fix input overflow to cache set sysfs file io_error_halflife
[ Upstream commit a91fbda49f746119828f7e8ad0f0aa2ab0578f65 ]
Cache set sysfs entry io_error_halflife is used to set c->error_decay.
c->error_decay is in type unsigned int, and it is converted by
strtoul_or_return(), therefore overflow to c->error_decay is possible
for a large input value.
This patch fixes the overflow by using strtoul_safe_clamp() to convert
input string to an unsigned long value in range [0, UINT_MAX], then
divides by 88 and set it to c->error_decay.
Signed-off-by: Coly Li <colyli@suse.de> Signed-off-by: Jens Axboe
<axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/md/bcache/sysfs.c (diff)
Commit d4db0c5ee0b4c21c36b3556a20e44d5e1a372e2b by gregkh
bcache: fix input overflow to sequential_cutoff
[ Upstream commit 8c27a3953e92eb0b22dbb03d599f543a05f9574e ]
People may set sequential_cutoff of a cached device via sysfs file, but
current code does not check input value overflow. E.g. if value
4294967295 (UINT_MAX) is written to file sequential_cutoff, its value is
4GB, but if 4294967296 (UINT_MAX + 1) is written into, its value will be
0. This is an unexpected behavior.
This patch replaces d_strtoi_h() by sysfs_strtoul_clamp() to convert
input string to unsigned integer value, and limit its range in
[0, UINT_MAX]. Then the input overflow can be fixed.
Signed-off-by: Coly Li <colyli@suse.de> Signed-off-by: Jens Axboe
<axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/md/bcache/sysfs.c (diff)
Commit 5db086d7c05f3e0b35d1cec0aab9f003f261cc5e by gregkh
bcache: fix potential div-zero error of writeback_rate_i_term_inverse
[ Upstream commit c3b75a2199cdbfc1c335155fe143d842604b1baa ]
dc->writeback_rate_i_term_inverse can be set via sysfs interface. It is
in type unsigned int, and convert from input string by d_strtoul(). The
problem is d_strtoul() does not check valid range of the input, if
4294967296 is written into sysfs file writeback_rate_i_term_inverse, an
overflow of unsigned integer will happen and value 0 is set to
dc->writeback_rate_i_term_inverse.
In writeback.c:__update_writeback_rate(), there are following lines of
code,
     integral_scaled = div_s64(dc->writeback_rate_integral,
                     dc->writeback_rate_i_term_inverse); If
dc->writeback_rate_i_term_inverse is set to 0 via sysfs interface, a
div-zero error might be triggered in the above code.
Therefore we need to add a range limitation in the sysfs interface, this
is what this patch does, use sysfs_stroul_clamp() to replace d_strtoul()
and restrict the input range in [1, UINT_MAX].
Signed-off-by: Coly Li <colyli@suse.de> Signed-off-by: Jens Axboe
<axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/md/bcache/sysfs.c (diff)
Commit c984b1e68b0cc31ca8620467ffeb74ef9f98f2f7 by gregkh
bcache: improve sysfs_strtoul_clamp()
[ Upstream commit 596b5a5dd1bc2fa019fdaaae522ef331deef927f ]
Currently sysfs_strtoul_clamp() is defined as,
82 #define sysfs_strtoul_clamp(file, var, min, max)                   \
83 do {                                                               \
84         if (attr == &sysfs_ ## file)                               \
85                 return strtoul_safe_clamp(buf, var, min, max)      \
86                         ?: (ssize_t) size;                         \
87 } while (0)
The problem is, if bit width of var is less then unsigned long, min and
max may not protect var from integer overflow, because overflow happens
in strtoul_safe_clamp() before checking min and max.
To fix such overflow in sysfs_strtoul_clamp(), to make min and max take
effect, this patch adds an unsigned long variable, and uses it to macro
strtoul_safe_clamp() to convert an unsigned long value in range defined
by [min, max]. Then assign this value to var. By this method, if bit
width of var is less than unsigned long, integer overflow won't happen
before min and max are checking.
Now sysfs_strtoul_clamp() can properly handle smaller data type like
unsigned int, of cause min and max should be defined in range of
unsigned int too.
Signed-off-by: Coly Li <colyli@suse.de> Signed-off-by: Jens Axboe
<axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/md/bcache/sysfs.h (diff)
Commit c0ed048685060a00a74e983f5359a6c3e3f0fe9d by gregkh
genirq: Avoid summation loops for /proc/stat
[ Upstream commit 1136b0728969901a091f0471968b2b76ed14d9ad ]
Waiman reported that on large systems with a large amount of interrupts
the readout of /proc/stat takes a long time to sum up the interrupt
statistics. In principle this is not a problem. but for unknown reasons
some enterprise quality software reads /proc/stat with a high frequency.
The reason for this is that interrupt statistics are accounted per cpu.
So the /proc/stat logic has to sum up the interrupt stats for each
interrupt.
This can be largely avoided for interrupts which are not marked as
'PER_CPU' interrupts by simply adding a per interrupt summation counter
which is incremented along with the per interrupt per cpu counter.
The PER_CPU interrupts need to avoid that and use only per cpu
accounting because they share the interrupt number and the interrupt
descriptor and concurrent updates would conflict or require unwanted
synchronization.
Reported-by: Waiman Long <longman@redhat.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Reviewed-by: Waiman Long
<longman@redhat.com> Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Reviewed-by: Davidlohr Bueso <dbueso@suse.de> Cc: Matthew Wilcox
<willy@infradead.org> Cc: Andrew Morton <akpm@linux-foundation.org> Cc:
Alexey Dobriyan <adobriyan@gmail.com> Cc: Kees Cook
<keescook@chromium.org> Cc: linux-fsdevel@vger.kernel.org Cc: Davidlohr
Bueso <dave@stgolabs.net> Cc: Miklos Szeredi <miklos@szeredi.hu> Cc:
Daniel Colascione <dancol@google.com> Cc: Dave Chinner
<david@fromorbit.com> Cc: Randy Dunlap <rdunlap@infradead.org> Link:
https://lkml.kernel.org/r/20190208135020.925487496@linutronix.de
8<-------------
v2: Undo the unintentional layout change of struct irq_desc.
include/linux/irqdesc.h |    1 +
kernel/irq/chip.c       |   12 ++++++++++--
kernel/irq/internals.h  |    8 +++++++-
kernel/irq/irqdesc.c    |    7 ++++++-
4 files changed, 24 insertions(+), 4 deletions(-)
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedinclude/linux/irqdesc.h (diff)
The file was modifiedkernel/irq/chip.c (diff)
The file was modifiedkernel/irq/internals.h (diff)
The file was modifiedkernel/irq/irqdesc.c (diff)
Commit 3e45ebf5a16c140c73d6d895fc347f1f224ecdc8 by gregkh
net: marvell: mvpp2: fix stuck in-band SGMII negotiation
[ Upstream commit 316734fdcf70900a83065360cff11a5826919067 ]
It appears that the mvpp22 can get stuck with SGMII negotiation.  The
symptoms are that in-band negotiation never completes and the partner
(eg, PHY) never reports SGMII link up, or if it supports negotiation
bypass, goes into negotiation bypass mode (which will happen when the
PHY sees that the MAC is alive but gets no response.)
Triggering the PHY end of the link to re-negotiate results in the bypass
bit clearing on the PHY, and then re-setting - indicating that the
problem is at the mvpp22 GMAC end.
Asserting the GMAC reset and de-asserting it resolves the issue. Arrange
to assert the GMAC reset at probe time, and deassert it only after we
have configured the GMAC for the appropriate mode.  This resolves the
issue.
Tested-by: Sven Auhagen <sven.auhagen@voleatech.de> Signed-off-by:
Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/net/ethernet/marvell/mvpp2/mvpp2_main.c (diff)
Commit c230484a376754802038f8650b1d5c2951831bd1 by gregkh
iw_cxgb4: fix srqidx leak during connection abort
[ Upstream commit f368ff188ae4b3ef6f740a15999ea0373261b619 ]
When an application aborts the connection by moving QP from RTS to
ERROR, then iw_cxgb4's modify_rc_qp() RTS->ERROR logic sets the
*srqidxp to 0 via t4_set_wq_in_error(&qhp->wq, 0), and aborts the
connection by calling c4iw_ep_disconnect().
c4iw_ep_disconnect() does the following:
1. sends up a close_complete_upcall(ep, -ECONNRESET) to libcxgb4.
2. sends abort request CPL to hw.
But, since the close_complete_upcall() is sent before sending the
ABORT_REQ to hw, libcxgb4 would fail to release the srqidx if the
connection holds one. Because, the srqidx is passed up to libcxgb4 only
after corresponding ABORT_RPL is processed by kernel in abort_rpl().
This patch handle the corner-case by moving the call to
close_complete_upcall() from c4iw_ep_disconnect() to abort_rpl().  So
that libcxgb4 is notified about the -ECONNRESET only after abort_rpl(),
and libcxgb4 can relinquish the srqidx properly.
Signed-off-by: Raju Rangoju <rajur@chelsio.com> Signed-off-by: Jason
Gunthorpe <jgg@mellanox.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/infiniband/hw/cxgb4/cm.c (diff)
Commit 8e48664da19f78ce1d3f6aad2acc4513da9da76f by gregkh
net: phy: consider latched link-down status in polling mode
[ Upstream commit 93c0970493c71f264e6c3c7caf1ff24a9e1de786 ]
The link status value latches link-down events. To get the current
status we read the register twice in genphy_update_link(). There's a
potential risk that we miss a link-down event in polling mode. This may
cause issues if the user e.g. connects his machine to a different
network.
On the other hand reading the latched value may cause issues in
interrupt mode. Following scenario:
- After boot link goes up
- phy_start() is called triggering an aneg restart, hence link goes
down and link-down info is latched.
- After aneg has finished link goes up and triggers an interrupt.
Interrupt handler reads link status, means it reads the latched
"link is down" info. But there won't be another interrupt as long
as link stays up, therefore phylib will never recognize that link
is up.
Deal with both scenarios by reading the register twice in interrupt mode
only.
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/phy/phy-c45.c (diff)
The file was modifieddrivers/net/phy/phy_device.c (diff)
Commit e00ff3abfaafe750e768bab36dc8d0ee0b09df22 by gregkh
fbdev: fbmem: fix memory access if logo is bigger than the screen
[ Upstream commit a5399db139cb3ad9b8502d8b1bd02da9ce0b9df0 ]
There is no clipping on the x or y axis for logos larger that the
framebuffer size. Therefore: a logo bigger than screen size leads to
invalid memory access:
[    1.254664] Backtrace:
[    1.254728] [<c02714e0>] (cfb_imageblit) from [<c026184c>]
(fb_show_logo+0x620/0x684)
[    1.254763]  r10:00000003 r9:00027fd8 r8:c6a40000 r7:c6a36e50
r6:00000000 r5:c06b81e4
[    1.254774]  r4:c6a3e800
[    1.254810] [<c026122c>] (fb_show_logo) from [<c026c1e4>]
(fbcon_switch+0x3fc/0x46c)
[    1.254842]  r10:c6a3e824 r9:c6a3e800 r8:00000000 r7:c6a0c000
r6:c070b014 r5:c6a3e800
[    1.254852]  r4:c6808c00
[    1.254889] [<c026bde8>] (fbcon_switch) from [<c029c8f8>]
(redraw_screen+0xf0/0x1e8)
[    1.254918]  r10:00000000 r9:00000000 r8:00000000 r7:00000000
r6:c070d5a0 r5:00000080
[    1.254928]  r4:c6808c00
[    1.254961] [<c029c808>] (redraw_screen) from [<c029d264>]
(do_bind_con_driver+0x194/0x2e4)
[    1.254991]  r9:00000000 r8:00000000 r7:00000014 r6:c070d5a0
r5:c070d5a0 r4:c070d5a0
So prevent displaying a logo bigger than screen size and avoid invalid
memory access.
Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com> Cc:
Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Bartlomiej
Zolnierkiewicz <b.zolnierkie@samsung.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/video/fbdev/core/fbmem.c (diff)
Commit 7208136a41f9282e7f6853fc44d3b22398366b91 by gregkh
cdrom: Fix race condition in cdrom_sysctl_register
[ Upstream commit f25191bb322dec8fa2979ecb8235643aa42470e1 ]
The following traceback is sometimes seen when booting an image in qemu:
[   54.608293] cdrom: Uniform CD-ROM driver Revision: 3.20
[   54.611085] Fusion MPT base driver 3.04.20
[   54.611877] Copyright (c) 1999-2008 LSI Corporation
[   54.616234] Fusion MPT SAS Host driver 3.04.20
[   54.635139] sysctl duplicate entry: /dev/cdrom//info
[   54.639578] CPU: 0 PID: 266 Comm: kworker/u4:5 Not tainted 5.0.0-rc5
#1
[   54.639578] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
0.0.0 02/06/2015
[   54.641273] Workqueue: events_unbound async_run_entry_fn
[   54.641273] Call Trace:
[   54.641273]  dump_stack+0x67/0x90
[   54.641273]  __register_sysctl_table+0x50b/0x570
[   54.641273]  ? rcu_read_lock_sched_held+0x6f/0x80
[   54.641273]  ? kmem_cache_alloc_trace+0x1c7/0x1f0
[   54.646814]  __register_sysctl_paths+0x1c8/0x1f0
[   54.646814]  cdrom_sysctl_register.part.7+0xc/0x5f
[   54.646814]  register_cdrom.cold.24+0x2a/0x33
[   54.646814]  sr_probe+0x4bd/0x580
[   54.646814]  ? __driver_attach+0xd0/0xd0
[   54.646814]  really_probe+0xd6/0x260
[   54.646814]  ? __driver_attach+0xd0/0xd0
[   54.646814]  driver_probe_device+0x4a/0xb0
[   54.646814]  ? __driver_attach+0xd0/0xd0
[   54.646814]  bus_for_each_drv+0x73/0xc0
[   54.646814]  __device_attach+0xd6/0x130
[   54.646814]  bus_probe_device+0x9a/0xb0
[   54.646814]  device_add+0x40c/0x670
[   54.646814]  ? __pm_runtime_resume+0x4f/0x80
[   54.646814]  scsi_sysfs_add_sdev+0x81/0x290
[   54.646814]  scsi_probe_and_add_lun+0x888/0xc00
[   54.646814]  ? scsi_autopm_get_host+0x21/0x40
[   54.646814]  __scsi_add_device+0x116/0x130
[   54.646814]  ata_scsi_scan_host+0x93/0x1c0
[   54.646814]  async_run_entry_fn+0x34/0x100
[   54.646814]  process_one_work+0x237/0x5e0
[   54.646814]  worker_thread+0x37/0x380
[   54.646814]  ? rescuer_thread+0x360/0x360
[   54.646814]  kthread+0x118/0x130
[   54.646814]  ? kthread_create_on_node+0x60/0x60
[   54.646814]  ret_from_fork+0x3a/0x50
The only sensible explanation is that cdrom_sysctl_register() is called
twice, once from the module init function and once from
register_cdrom(). cdrom_sysctl_register() is not mutex protected and may
happily execute twice if the second call is made before the first call
is complete.
Use a static atomic to ensure that the function is executed exactly
once.
Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Jens
Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/cdrom/cdrom.c (diff)
Commit ada81ebc5f35b0d31b2978fb56a8bd5c6c360717 by gregkh
drm: rcar-du: add missing of_node_put
[ Upstream commit 4c6d8fc20b09f9684743afd72e4dbc3f15524479 ]
Add an of_node_put when the result of of_graph_get_remote_port_parent is
not available.
Add a second of_node_put if no encoder is selected (encoder remains
NULL).
The semantic match that finds the first problem is as follows
(http://coccinelle.lip6.fr):
// <smpl>
@r exists@ local idexpression e; expression x;
@@ e = of_graph_get_remote_port_parent(...);
... when != x = e
   when != true e == NULL
   when != of_node_put(e)
   when != of_fwnode_handle(e)
( return e;
|
*return ...;
)
// </smpl>
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Reviewed-by: Laurent
Pinchart <laurent.pinchart+renesas@ideasonboard.com> Reviewed-by: Kieran
Bingham <kieran.bingham+renesas@ideasonboard.com> Signed-off-by: Laurent
Pinchart <laurent.pinchart+renesas@ideasonboard.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/rcar-du/rcar_du_kms.c (diff)
Commit c60bf6e7594c838225f7b014da899c415a45f91c by gregkh
drm/amd/display: Don't re-program planes for DPMS changes
[ Upstream commit 5062b797db4103218fa00ee254417b8ecaab7401 ]
[Why] There are opt1c lock warnings and CRTC read timeouts when running
the
"igt@kms_plane@plane-position-hole-dpms-pipe-*" tests. These are caused
by trying to reprogram planes that are not in the current context.
DPMS off removes the stream from the context. In this case:
new_crtc_state->active_changed = true new_crtc_state->mode_changed =
false
The planes are reprogrammed before the stream is removed from the
context because stream_state->mode_changed = false.
For DPMS adds the stream and planes back to the context:
new_crtc_state->active_changed = true new_crtc_state->mode_changed =
false
The planes are also reprogrammed here before the stream is added to the
context because stream_state->mode_changed = true. They were not
previously in the current context so warnings occur here.
[How] Set stream_state->mode_changed = true when
new_crtc_state->active_changed = true too.
This prevents reprogramming before the context is applied in DC. The
programming will be done after the context is applied.
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Sun peng Li <Sunpeng.Li@amd.com> Acked-by: Bhawanpreet
Lakha <Bhawanpreet.Lakha@amd.com> Acked-by: Tony Cheng
<Tony.Cheng@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c (diff)
Commit 90c93fbede11ba262bea4e377b0c65a9d6f72d4e by gregkh
bpf: test_maps: fix possible out of bound access warning
[ Upstream commit dd9cef43c222df7c0d76d34451808e789952379d ]
When compiling test_maps selftest with GCC-8, it warns that an array
might be indexed with a negative value, which could cause a negative out
of bound access, depending on parameters of the function. This is the
GCC-8 warning:
gcc -Wall -O2 -I../../../include/uapi -I../../../lib
-I../../../lib/bpf -I../../../../include/generated -DHAVE_GENHDR
-I../../../include    test_maps.c
/home/breno/Devel/linux/tools/testing/selftests/bpf/libbpf.a -lcap -lelf
-lrt -lpthread -o
/home/breno/Devel/linux/tools/testing/selftests/bpf/test_maps
In file included from test_maps.c:16:
test_maps.c: In function ‘run_all_tests’:
test_maps.c:1079:10: warning: array subscript -1 is below array bounds
of ‘pid_t[<Ube20> + 1]’ [-Warray-bounds]
   assert(waitpid(pid[i], &status, 0) == pid[i]);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~
test_maps.c:1059:6: warning: array subscript -1 is below array bounds of
‘pid_t[<Ube20> + 1]’ [-Warray-bounds]
   pid[i] = fork();
   ~~~^~~
This patch simply guarantees that the task(s) variables are unsigned,
thus, they could never be a negative number (which they are not in
current code anyway), hence avoiding an out of bound access warning.
Signed-off-by: Breno Leitao <leitao@debian.org> Signed-off-by: Daniel
Borkmann <daniel@iogearbox.net> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedtools/testing/selftests/bpf/test_maps.c (diff)
Commit 8e74000fd6563fe882c9a7780bc4f6a989c7affe by gregkh
x86/kexec: Fill in acpi_rsdp_addr from the first kernel
[ Upstream commit ccec81e4251f5a5421e02874e394338a897056ca ]
When efi=noruntime or efi=oldmap is used on the kernel command line, EFI
services won't be available in the second kernel, therefore the second
kernel will not be able to get the ACPI RSDP address from firmware by
calling EFI services and so it won't boot.
Commit
  e6e094e053af ("x86/acpi, x86/boot: Take RSDP address from boot params
if available")
added an acpi_rsdp_addr field to boot_params which stores the RSDP
address for other kernel users.
Recently, after
  3a63f70bf4c3 ("x86/boot: Early parse RSDP and save it in boot_params")
the acpi_rsdp_addr will always be filled with a valid RSDP address.
So fill in that value into the second kernel's boot_params thus ensuring
that the second kernel receives the RSDP value from the first kernel.
[ bp: massage commit message. ]
Signed-off-by: Kairui Song <kasong@redhat.com> Signed-off-by: Borislav
Petkov <bp@suse.de> Cc: AKASHI Takahiro <takahiro.akashi@linaro.org> Cc:
Andrew Morton <akpm@linux-foundation.org> Cc: Baoquan He
<bhe@redhat.com> Cc: Chao Fan <fanc.fnst@cn.fujitsu.com> Cc: Dave Young
<dyoung@redhat.com> Cc: David Howells <dhowells@redhat.com> Cc: "H.
Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@redhat.com> Cc:
kexec@lists.infradead.org Cc: Philipp Rudo <prudo@linux.vnet.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de> Cc: x86-ml <x86@kernel.org> Cc:
Yannik Sembritzki <yannik@sembritzki.me> Link:
https://lkml.kernel.org/r/20190204173852.4863-1-kasong@redhat.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedarch/x86/kernel/kexec-bzimage64.c (diff)
Commit c730d6c156c61ec425b3771c5d70a63fb3a75e32 by gregkh
powerpc/ptrace: Mitigate potential Spectre v1
[ Upstream commit ebb0e13ead2ddc186a80b1b0235deeefc5a1a667 ]
'regno' is directly controlled by user space, hence leading to a
potential exploitation of the Spectre variant 1 vulnerability.
On PTRACE_SETREGS and PTRACE_GETREGS requests, user space passes the
register number that would be read or written. This register number is
called 'regno' which is part of the 'addr' syscall parameter.
This 'regno' value is checked against the maximum pt_regs structure
size, and then used to dereference it, which matches the initial part of
a Spectre v1 (and Spectre v1.1) attack. The dereferenced value, then, is
returned to userspace in the GETREGS case.
This patch sanitizes 'regno' before using it to dereference pt_reg.
Notice that given that speculation windows are large, the policy is to
kill the speculation on the first load and not worry if it can be
completed with a dependent load/store [1].
[1] https://marc.info/?l=linux-kernel&m=152449131114778&w=2
Signed-off-by: Breno Leitao <leitao@debian.org> Acked-by: Gustavo A. R.
Silva <gustavo@embeddedor.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedarch/powerpc/kernel/ptrace.c (diff)
Commit 81ee4eab3117dc40e655a45c82cf13854b46076b by gregkh
drm/amd/display: Disconnect mpcc when changing tg
[ Upstream commit 77476360f173c127c191bfe8ca8113130ef283b8 ]
[Why] This fixes an mpc programming error for the following sequence of
atomic commits when pipe split is enabled:
Commit 1: CRTC0 (plane 4, plane 3)
Pipe 0: old_plane_state = A0, new_plane_state = A1,   new_tg = T0 Pipe
1: old_plane_state = B0, new_plane_state = B1,   new_tg = T0 Pipe 2:
old_plane_state = A0, new_plane_state = A1,   new_tg = T0 Pipe 3:
old_plane_state = B0, new_plane_state = B1,   new_tg = T0
Commit 2: CRTC0 (plane 3), CRTC1 (plane 2)
Pipe 0: old_plane_state = A1, new_plane_state = A2,   new_tg = T0 Pipe
1: old_plane_state = B1, new_plane_state = B2,   new_tg = T1 Pipe 2:
old_plane_state = A1, new_plane_state = NULL, new_tg = NULL Pipe 3:
old_plane_state = B1, new_plane_state = NULL, new_tg = NULL
In the second commit the assertion for mpcc in use is hit because mpcc
disconnect never occurs for pipe 1. This is because the stream changes
for pipe 1 and the opp_list is empty.
This sequence occurs when running the
"igt@kms_plane_multiple@atomic-pipe-A-tiling-none" test with two
displays connected.
[How] Expand the reset condition to include:
"old_pipe_ctx->stream_res.tg != new_pipe_ctx->stream_res.tg"
...but only when the plane state is non-NULL for both old and new.
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Bhawanpreet Lakha
<Bhawanpreet.Lakha@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c (diff)
Commit 4e4fba6d30f830fec0bc40cbb174b3af86370f95 by gregkh
perf/aux: Make perf_event accessible to setup_aux()
[ Upstream commit 840018668ce2d96783356204ff282d6c9b0e5f66 ]
When pmu::setup_aux() is called the coresight PMU needs to know which
sink to use for the session by looking up the information in the event's
attr::config2 field.
As such simply replace the cpu information by the complete perf_event
structure and change all affected customers.
Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> Reviewed-by:
Suzuki Poulouse <suzuki.poulose@arm.com> Acked-by: Peter Zijlstra
<peterz@infradead.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc:
Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexei
Starovoitov <ast@kernel.org> Cc: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: H. Peter Anvin <hpa@zytor.com> Cc:
Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Martin
Schwidefsky <schwidefsky@de.ibm.com> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will
Deacon <will.deacon@arm.com> Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-s390@vger.kernel.org Link:
http://lkml.kernel.org/r/20190131184714.20388-2-mathieu.poirier@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedarch/s390/kernel/perf_cpum_sf.c (diff)
The file was modifiedarch/x86/events/intel/bts.c (diff)
The file was modifieddrivers/perf/arm_spe_pmu.c (diff)
The file was modifiedarch/x86/events/intel/pt.c (diff)
The file was modifieddrivers/hwtracing/coresight/coresight-etm-perf.c (diff)
The file was modifiedinclude/linux/perf_event.h (diff)
The file was modifiedkernel/events/ring_buffer.c (diff)
Commit 7f0a3a436e88a71b96694c029f01a9a8eade3d5d by gregkh
e1000e: fix cyclic resets at link up with active tx
[ Upstream commit 0f9e980bf5ee1a97e2e401c846b2af989eb21c61 ]
I'm seeing series of e1000e resets (sometimes endless) at system boot if
something generates tx traffic at this time. In my case this is
netconsole who sends message "e1000e 0000:02:00.0: Some CPU C-states
have been disabled in order to enable jumbo frames" from e1000e itself.
As result e1000_watchdog_task sees used tx buffer while carrier is off
and start this reset cycle again.
[   17.794359] e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow
Control: None
[   17.794714] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
[   22.936455] e1000e 0000:02:00.0 eth1: changing MTU from 1500 to 9000
[   23.033336] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   26.102364] e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow
Control: None
[   27.174495] 8021q: 802.1Q VLAN Support v1.8
[   27.174513] 8021q: adding VLAN 0 to HW filter on device eth1
[   30.671724] cgroup: cgroup: disabling cgroup2 socket matching due to
net_prio or net_cls activation
[   30.898564] netpoll: netconsole: local port 6666
[   30.898566] netpoll: netconsole: local IPv6 address
2a02:6b8:0:80b:beae:c5ff:fe28:23f8
[   30.898567] netpoll: netconsole: interface 'eth1'
[   30.898568] netpoll: netconsole: remote port 6666
[   30.898568] netpoll: netconsole: remote IPv6 address
2a02:6b8:b000:605c:e61d:2dff:fe03:3790
[   30.898569] netpoll: netconsole: remote ethernet address
b0:a8:6e:f4:ff:c0
[   30.917747] console [netcon0] enabled
[   30.917749] netconsole: network logging started
[   31.453353] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   34.185730] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   34.321840] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   34.465822] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   34.597423] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   34.745417] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   34.877356] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   35.005441] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   35.157376] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   35.289362] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   35.417441] e1000e 0000:02:00.0: Some CPU C-states have been disabled
in order to enable jumbo frames
[   37.790342] e1000e: eth1 NIC Link is Up 1000 Mbps Full Duplex, Flow
Control: None
This patch flushes tx buffers only once when carrier is off rather than
at each watchdog iteration.
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff
Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/ethernet/intel/e1000e/netdev.c (diff)
Commit b503ea08fe0dcf03a5e78a558ea0bd7b5dcbd164 by gregkh
e1000e: Exclude device from suspend direct complete optimization
[ Upstream commit 59f58708c5047289589cbf6ee95146b76cf57d1e ]
e1000e sets different WoL settings in system suspend callback and
runtime suspend callback.
The suspend direct complete optimization leaves e1000e in runtime
suspended state with wrong WoL setting during system suspend.
To fix this, we need to disable suspend direct complete optimization to
let e1000e always use suspend callback to set correct WoL during system
suspend.
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> Tested-by:
Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher
<jeffrey.t.kirsher@intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/ethernet/intel/e1000e/netdev.c (diff)
Commit c1ac30ee10cf3d08ed8eba7df8f8c3b2c3eef1b9 by gregkh
platform/x86: intel_pmc_core: Fix PCH IP sts reading
[ Upstream commit 0e68eeea9894feeba2edf7ec63e4551b87f39621 ]
A previous commit "platform/x86: intel_pmc_core: Make the driver PCH
family agnostic <c977b98bbef5898ed3d30b08ea67622e9e82082a>" provided
better abstraction to this driver but has some fundamental issues.
e.g. the following condition
for (index = 0; index < pmcdev->map->ppfear_buckets &&
index < PPFEAR_MAX_NUM_ENTRIES; index++, iter++)
is wrong because for CNL, PPFEAR_MAX_NUM_ENTRIES is hardcoded as 5 which
is _wrong_ and even though ppfear_buckets is 8, the loop fails to read
all eight registers needed for CNL PCH i.e. PPFEAR0 and PPFEAR1. This
patch refactors the pfear show logic to correctly read PCH IP power
gating status for Cannonlake and beyond.
Cc: "David E. Box" <david.e.box@intel.com> Cc: Srinivas Pandruvada
<srinivas.pandruvada@linux.intel.com> Fixes: c977b98bbef5
("platform/x86: intel_pmc_core: Make the driver PCH family agnostic")
Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@linux.intel.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/platform/x86/intel_pmc_core.h (diff)
The file was modifieddrivers/platform/x86/intel_pmc_core.c (diff)
Commit 3aa0518aacaa545e4778e7efb160c70d34984a3a by gregkh
i2c: of: Try to find an I2C adapter matching the parent
[ Upstream commit e814e688413aabd7b0d75e2a8ed1caa472951dec ]
If an I2C adapter doesn't match the provided device tree node, also try
matching the parent's device tree node. This allows finding an adapter
based on the device node of the parent device that was used to register
it.
This fixes a regression on Tegra124-based Chromebooks (Nyan) where the
eDP controller registers an I2C adapter that is used to read to EDID.
After commit 993a815dcbb2 ("dt-bindings: panel: Add missing .txt
suffix") this stopped working because the I2C adapter could no longer be
found. The approach in this patch fixes the regression without
introducing the issues that the above commit solved.
Fixes: 17ab7806de0c ("drm: don't link DP aux i2c adapter to the hardware
device node") Signed-off-by: Thierry Reding <treding@nvidia.com>
Tested-by: Tristan Bastian <tristan-c.bastian@gmx.de> Signed-off-by:
Wolfram Sang <wsa@the-dreams.de> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/i2c/i2c-core-of.c (diff)
Commit 9bd4debdd54474e3147b40675c705a88ff9a976b by gregkh
staging: spi: mt7621: Add return code check on device_reset()
[ Upstream commit 46c337872f34bc6387b0c29a4964f562c70139e3 ]
This patch adds a return code check on device_reset() and removes the
compile warning.
Signed-off-by: Stefan Roese <sr@denx.de> Cc: Mark Brown
<broonie@kernel.org> Cc: Sankalp Negi <sankalpnegi2310@gmail.com> Cc:
Chuanhong Guo <gch981213@gmail.com> Cc: John Crispin <john@phrozen.org>
Reviewed-by: NeilBrown <neil@brown.name> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/staging/mt7621-spi/spi-mt7621.c (diff)
Commit 8a838b44f70f349dfa1ee7f4fa9c1d65cc17f397 by gregkh
iwlwifi: mvm: fix RFH config command with >=10 CPUs
[ Upstream commit dbf592f3d14fb7d532cb7c820b1065cf33e02aaa ]
If we have >=10 (logical) CPUs, our command size exceeds the internal
buffer size and the command fails; fix that by using IWL_HCMD_DFL_NOCOPY
for the command that's allocated anyway.
While at it, also fix the leak of cmd, and use struct_size() to
calculate its size.
Signed-off-by: Johannes Berg <johannes.berg@intel.com> Fixes:
8edbfaa19835 ("iwlwifi: mvm: configure multi RX queue") Signed-off-by:
Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/wireless/intel/iwlwifi/mvm/fw.c (diff)
Commit 0da521452109f8ed6a75bee4d19973dcc71a6b85 by gregkh
ASoC: fsl-asoc-card: fix object reference leaks in fsl_asoc_card_probe
[ Upstream commit 11907e9d3533648615db08140e3045b829d2c141 ]
The of_find_device_by_node() takes a reference to the underlying device
structure, we should release that reference.
Signed-off-by: Wen Yang <yellowriver2010@hotmil.com> Cc: Timur Tabi
<timur@kernel.org> Cc: Nicolin Chen <nicoleotsuka@gmail.com> Cc: Xiubo
Li <Xiubo.Lee@gmail.com> Cc: Fabio Estevam <festevam@gmail.com> Cc: Liam
Girdwood <lgirdwood@gmail.com> Cc: Mark Brown <broonie@kernel.org> Cc:
Jaroslav Kysela <perex@perex.cz> Cc: Takashi Iwai <tiwai@suse.com> Cc:
alsa-devel@alsa-project.org Cc: linuxppc-dev@lists.ozlabs.org Cc:
linux-kernel@vger.kernel.org Signed-off-by: Mark Brown
<broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedsound/soc/fsl/fsl-asoc-card.c (diff)
Commit dd288d329d1796d6f4e328803e487af97f7f81e9 by gregkh
sched/debug: Initialize sd_sysctl_cpus if !CONFIG_CPUMASK_OFFSTACK
[ Upstream commit 1ca4fa3ab604734e38e2a3000c9abf788512ffa7 ]
register_sched_domain_sysctl() copies the cpu_possible_mask into
sd_sysctl_cpus, but only if sd_sysctl_cpus hasn't already been allocated
(ie, CONFIG_CPUMASK_OFFSTACK is set).  However, when
CONFIG_CPUMASK_OFFSTACK is not set, sd_sysctl_cpus is left uninitialized
(all zeroes) and the kernel may fail to initialize sched_domain sysctl
entries for all possible CPUs.
This is visible to the user if the kernel is booted with maxcpus=n, or
if ACPI tables have been modified to leave CPUs offline, and then
checking for missing /proc/sys/kernel/sched_domain/cpu* entries.
Fix this by separating the allocation and initialization, and adding a
flag to initialize the possible CPU entries while system booting only.
Tested-by: Syuuichirou Ishii <ishii.shuuichir@jp.fujitsu.com> Tested-by:
Tarumizu, Kohei <tarumizu.kohei@jp.fujitsu.com> Signed-off-by: Hidetoshi
Seto <seto.hidetoshi@jp.fujitsu.com> Signed-off-by: Peter Zijlstra
(Intel) <peterz@infradead.org> Reviewed-by: Masayoshi Mizuma
<m.mizuma@jp.fujitsu.com> Acked-by: Joe Lawrence
<joe.lawrence@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Masayoshi Mizuma
<msys.mizuma@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de>
Link:
https://lkml.kernel.org/r/20190129151245.5073-1-msys.mizuma@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedkernel/sched/debug.c (diff)
Commit 4e634952fe7446732f00c91d27e559e81895ff38 by gregkh
efi/memattr: Don't bail on zero VA if it equals the region's PA
[ Upstream commit 5de0fef0230f3c8d75cff450a71740a7bf2db866 ]
The EFI memory attributes code cross-references the EFI memory map with
the more granular EFI memory attributes table to ensure that they are in
sync before applying the strict permissions to the regions it describes.
Since we always install virtual mappings for the EFI runtime regions to
which these strict permissions apply, we currently perform a sanity
check on the EFI memory descriptor, and ensure that the
EFI_MEMORY_RUNTIME bit is set, and that the virtual address has been
assigned.
However, in cases where a runtime region exists at physical address 0x0,
and the virtual mapping equals the physical mapping, e.g., when running
in mixed mode on x86, we encounter a memory descriptor with the runtime
attribute and virtual address 0x0, and incorrectly draw the conclusion
that a runtime region exists for which no virtual mapping was installed,
and give up altogether. The consequence of this is that firmware
mappings retain their read-write-execute permissions, making the system
more vulnerable to attacks.
So let's only bail if the virtual address of 0x0 has been assigned to a
physical region that does not reside at address 0x0.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Sai
Praneeth Prakhya <sai.praneeth.prakhya@intel.com> Cc: AKASHI Takahiro
<takahiro.akashi@linaro.org> Cc: Alexander Graf <agraf@suse.de> Cc:
Bjorn Andersson <bjorn.andersson@linaro.org> Cc: Borislav Petkov
<bp@alien8.de> Cc: Heinrich Schuchardt <xypron.glpk@gmx.de> Cc: Jeffrey
Hugo <jhugo@codeaurora.org> Cc: Lee Jones <lee.jones@linaro.org> Cc:
Leif Lindholm <leif.lindholm@linaro.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Matt Fleming
<matt@codeblueprint.co.uk> Cc: Peter Jones <pjones@redhat.com> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-efi@vger.kernel.org Fixes: 10f0d2f577053 ("efi: Implement
generic support for the Memory ...") Link:
http://lkml.kernel.org/r/20190202094119.13230-4-ard.biesheuvel@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/firmware/efi/memattr.c (diff)
Commit 5ca05ecd29548658b35935632a39bf8cd1899afc by gregkh
sched/core: Use READ_ONCE()/WRITE_ONCE() in
move_queued_task()/task_rq_lock()
[ Upstream commit c546951d9c9300065bad253ecdf1ac59ce9d06c8 ]
move_queued_task() synchronizes with task_rq_lock() as follows:
move_queued_task() task_rq_lock()
[S] ->on_rq = MIGRATING [L] rq = task_rq()
WMB (__set_task_cpu()) ACQUIRE (rq->lock);
[S] ->cpu = new_cpu [L] ->on_rq
where "[L] rq = task_rq()" is ordered before "ACQUIRE (rq->lock)" by an
address dependency and, in turn, "ACQUIRE (rq->lock)" is ordered before
"[L] ->on_rq" by the ACQUIRE itself.
Use READ_ONCE() to load ->cpu in task_rq() (c.f., task_cpu()) to honor
this address dependency.  Also, mark the accesses to ->cpu and ->on_rq
with READ_ONCE()/WRITE_ONCE() to comply with the LKMM.
Signed-off-by: Andrea Parri <andrea.parri@amarulasolutions.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Alan
Stern <stern@rowland.harvard.edu> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Mike Galbraith <efault@gmx.de> Cc:
Paul E. McKenney <paulmck@linux.ibm.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will
Deacon <will.deacon@arm.com> Link:
https://lkml.kernel.org/r/20190121155240.27173-1-andrea.parri@amarulasolutions.com
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedkernel/sched/sched.h (diff)
The file was modifiedinclude/linux/sched.h (diff)
The file was modifiedkernel/sched/core.c (diff)
Commit 1c76c3cf30609b0dca9fb421fefcf9f7dab3ef52 by gregkh
drm/vkms: Bugfix racing hrtimer vblank handle
[ Upstream commit ba420afab565bdc7b028ddd4f222260f2de7a1db ]
When the vblank irq happens, kernel time subsystem executes
`vkms_vblank_simulate`. In parallel or not, it prepares all stuff
necessary to the next vblank with arm, and it must flush these stuff
before the next vblank irq. However, vblank counter is ahead when arm is
executed in parallel with handle vblank.
CPU 0: CPU 1:
| | atomic_commit_tail is ongoing
|
| |
| hrtimer: vkms_vblank_simulate()
| |
| drm_crtc_handle_vblank()
| | drm_crtc_arm_vblank()
|
| |
->get_vblank_timestamp() |
| |
| hrtimer_forward_now()
Then, we should guarantee that the vblank interval time is correct (not
changed) before finish the vblank handle.
Fix the bug including the call to `hrtimer_forward_now()` in the same
lock of `drm_crtc_handle_vblank()` to ensure that the timestamp update
is correct when finish the vblank handle.
Signed-off-by: Shayenne Moura <shayenneluzmoura@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Reviewed-by:
Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com> Signed-off-by: Rodrigo
Siqueira <rodrigosiqueiramelo@gmail.com> Link:
https://patchwork.freedesktop.org/patch/msgid/e2e4b8f3a5cab7b2dba75bf1930f86b0a4ee08c9.1548856186.git.shayenneluzmoura@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/vkms/vkms_crtc.c (diff)
Commit 897a3b9ef31d839b8f48d50bce2112de3e6e0fe7 by gregkh
drm/vkms: Bugfix extra vblank frame
[ Upstream commit def35e7c592616bc09be328de8795e5e624a3cf8 ]
kms_flip tests are breaking on vkms when simulate vblank because vblank
event sequence count returns one extra frame after arm vblank event to
make a page flip.
When vblank interrupt happens, userspace processes the vblank event and
issues the next page flip command. Kernel calls queue_work to call
commit_planes and arm the new page flip. The next vblank picks up the
newly armed vblank event and vblank interrupt happens again.
The arm and vblank event are asynchronous, then, on the next vblank, we
receive x+2 from `get_vblank_timestamp`, instead x+1, although timestamp
and vblank seqno matches.
Function `get_vblank_timestamp` is reached by 2 ways:
  - from `drm_mode_page_flip_ioctl`: driver is doing one atomic
   operation to synchronize planes in the same output. There is no
   vblank simulation, the `drm_crtc_arm_vblank_event` function adds 1
   on vblank count, and the variable in_vblank_irq is false
- from `vkms_vblank_simulate`: since the driver is doing a vblank
   simulation, the variable in_vblank_irq is true.
Fix this problem subtracting one vblank period from vblank_time when
`get_vblank_timestamp` is called from trace `drm_mode_page_flip_ioctl`,
i.e., is not a real vblank interrupt, and getting the timestamp and
vblank seqno when it is a real vblank interrupt.
The reason for all this is that get_vblank_timestamp always supplies the
timestamp for the next vblank event. The hrtimer is the vblank
simulator, and it needs the correct previous value to present the next
vblank. Since this is how hw timestamp registers work and what the
vblank core expects.
Signed-off-by: Shayenne Moura <shayenneluzmoura@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Reviewed-by:
Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com> Signed-off-by: Rodrigo
Siqueira <rodrigosiqueiramelo@gmail.com> Link:
https://patchwork.freedesktop.org/patch/msgid/171e6e1c239cbca0c3df7183ed8acdfeeace9cf4.1548856186.git.shayenneluzmoura@gmail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/vkms/vkms_crtc.c (diff)
Commit 6416e05b81903221eef92be91af916b28b2c64a0 by gregkh
ARM: dts: lpc32xx: Remove leading 0x and 0s from bindings notation
[ Upstream commit 3e3380d0675d5e20b0af067d60cb947a4348bf9b ]
Improve the DTS files by removing all the leading "0x" and zeros to fix
the following dtc warnings:
Warning (unit_address_format): Node /XXX unit name should not have
leading "0x"
and
Warning (unit_address_format): Node /XXX unit name should not have
leading 0s
Converted using the following command:
find . -type f \( -iname *.dts -o -iname *.dtsi \) -exec sed -i -e
"s/@\([0-9a-fA-FxX\.;:#]+\)\s*{/@\L\1 {/g" -e "s/@0x\(.*\) {/@\1 {/g" -e
"s/@0+\(.*\) {/@\1 {/g" {} +
For simplicity, two sed expressions were used to solve each warnings
separately.
To make the regex expression more robust a few other issues were
resolved, namely setting unit-address to lower case, and adding a
whitespace before the opening curly brace:
https://elinux.org/Device_Tree_Linux#Linux_conventions
This will solve as a side effect warning:
Warning (simple_bus_reg): Node /XXX@<UPPER> simple-bus unit address
format error, expected "<lower>"
This is a follow up to commit 4c9847b7375a ("dt-bindings: Remove leading
0x from bindings notation")
Reported-by: David Daney <ddaney@caviumnetworks.com> Suggested-by: Rob
Herring <robh@kernel.org> Signed-off-by: Mathieu Malaterre
<malat@debian.org>
[vzapolskiy: fixed commit message to pass checkpatch.pl test]
Signed-off-by: Vladimir Zapolskiy <vz@mleia.com> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedarch/arm/boot/dts/lpc32xx.dtsi (diff)
Commit 65ae5c0808c7441bf50658803e1731ebe269b738 by gregkh
efi/arm/arm64: Allow SetVirtualAddressMap() to be omitted
[ Upstream commit 4e46c2a956215482418d7b315749fb1b6c6bc224 ]
The UEFI spec revision 2.7 errata A section 8.4 has the following to say
about the virtual memory runtime services:
  "This section contains function definitions for the virtual memory
support that may be optionally used by an operating system at runtime.
If an operating system chooses to make EFI runtime service calls in a
virtual addressing mode instead of the flat physical mode, then the
operating system must use the services in this section to switch the
EFI runtime services from flat physical addressing to virtual
addressing."
So it is pretty clear that calling SetVirtualAddressMap() is entirely
optional, and so there is no point in doing so unless it achieves
anything useful for us.
This is not the case for 64-bit ARM. The identity mapping used by the
firmware is arbitrarily converted into another permutation of userland
addresses (i.e., bits [63:48] cleared), and the runtime code could
easily deal with the original layout in exactly the same way as it deals
with the converted layout. However, due to constraints related to page
size differences if the OS is not running with 4k pages, and related to
systems that may expose the individual sections of PE/COFF runtime
modules as different memory regions, creating the virtual layout is a
bit fiddly, and requires us to sort the memory map and reason about
adjacent regions with identical memory types etc etc.
So the obvious fix is to stop calling SetVirtualAddressMap() altogether
on arm64 systems. However, to avoid surprises, which are notoriously
hard to diagnose when it comes to OS<->firmware interactions, let's
start by making it an opt-out feature, and implement support for the
'efi=novamap' kernel command line parameter on ARM and arm64 systems.
( Note that 32-bit ARM generally does require SetVirtualAddressMap() to
be
used, given that the physical memory map and the kernel virtual address
map are not guaranteed to be non-overlapping like on arm64. However,
having support for efi=novamap,noruntime on 32-bit ARM, combined with
the recently proposed support for earlycon=efifb, is likely to be
useful
to diagnose boot issues on such systems if they have no accessible
serial
port. )
Tested-by: Jeffrey Hugo <jhugo@codeaurora.org> Tested-by: Bjorn
Andersson <bjorn.andersson@linaro.org> Tested-by: Lee Jones
<lee.jones@linaro.org> Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Cc: AKASHI Takahiro
<takahiro.akashi@linaro.org> Cc: Alexander Graf <agraf@suse.de> Cc:
Borislav Petkov <bp@alien8.de> Cc: Heinrich Schuchardt
<xypron.glpk@gmx.de> Cc: Leif Lindholm <leif.lindholm@linaro.org> Cc:
Linus Torvalds <torvalds@linux-foundation.org> Cc: Matt Fleming
<matt@codeblueprint.co.uk> Cc: Peter Jones <pjones@redhat.com> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Sai Praneeth Prakhya
<sai.praneeth.prakhya@intel.com> Cc: Thomas Gleixner
<tglx@linutronix.de> Cc: linux-efi@vger.kernel.org Link:
http://lkml.kernel.org/r/20190202094119.13230-8-ard.biesheuvel@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/firmware/efi/libstub/efi-stub-helper.c (diff)
The file was modifieddrivers/firmware/efi/libstub/efistub.h (diff)
The file was modifieddrivers/firmware/efi/libstub/arm-stub.c (diff)
The file was modifieddrivers/firmware/efi/libstub/fdt.c (diff)
Commit e0442dc492e57c39ca41d672aef0a041137aa182 by gregkh
soc: qcom: gsbi: Fix error handling in gsbi_probe()
[ Upstream commit 8cd09a3dd3e176c62da67efcd477a44a8d87185e ]
If of_platform_populate() fails in gsbi_probe(), gsbi->hclk is left
undisabled.
Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Signed-off-by:
Bjorn Andersson <bjorn.andersson@linaro.org> Signed-off-by: Andy Gross
<andy.gross@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/soc/qcom/qcom_gsbi.c (diff)
Commit a1fc3215635411abc5843b607895592c705742b6 by gregkh
drm/msm/dpu: Convert to a chained irq chip
[ Upstream commit 070e64dc1bbc879b7e0e9fffccd9dd139baf89f0 ]
Devices that make up DPU, i.e. graphics card, request their interrupts
from this "virtual" interrupt chip. The interrupt chip builds upon a GIC
SPI interrupt that raises high when any of the interrupts in the DPU's
irq status register are triggered. From the kernel's perspective this is
a chained irq chip, so requesting a flow handler for the GIC SPI and
then calling generic IRQ handling code from that irq handler is not
completely proper. It's better to convert this to a chained irq so that
the GIC SPI irq doesn't appear in /proc/interrupts, can't have CPU
affinity changed, and won't be accounted for with irq stats. Doing this
also silences a recursive lockdep warning because we can specify a
different lock class for the chained interrupts, silencing a warning
that is easy to see with 'threadirqs' on the kernel commandline.
WARNING: inconsistent lock state
4.19.10 #76 Tainted: G        W
--------------------------------
inconsistent {IN-HARDIRQ-W} -> {HARDIRQ-ON-W} usage.
irq/40-dpu_mdss/203 [HC0[0]:SC0[2]:HE1:SE0] takes:
0000000053ea9021 (&irq_desc_lock_class){?.-.}, at:
handle_level_irq+0x34/0x26c
{IN-HARDIRQ-W} state was registered at:
  lock_acquire+0x244/0x360
  _raw_spin_lock+0x64/0xa0
  handle_fasteoi_irq+0x54/0x2ec
  generic_handle_irq+0x44/0x5c
  __handle_domain_irq+0x9c/0x11c
  gic_handle_irq+0x208/0x260
  el1_irq+0xb4/0x130
  arch_cpu_idle+0x178/0x3cc
  default_idle_call+0x3c/0x54
  do_idle+0x1a8/0x3dc
  cpu_startup_entry+0x24/0x28
  rest_init+0x240/0x270
  start_kernel+0x5a8/0x6bc
irq event stamp: 18
hardirqs last  enabled at (17): [<ffffff9042385e80>]
_raw_spin_unlock_irq+0x40/0xc0
hardirqs last disabled at (16): [<ffffff904237a1f4>]
__schedule+0x20c/0x1bbc
softirqs last  enabled at (0): [<ffffff9040f318d0>]
copy_process+0xb50/0x3964
softirqs last disabled at (18): [<ffffff9041036364>]
local_bh_disable+0x8/0x20
other info that might help us debug this:
Possible unsafe locking scenario:
        CPU0
       ----
  lock(&irq_desc_lock_class);
  <Interrupt>
    lock(&irq_desc_lock_class);
  *** DEADLOCK ***
no locks held by irq/40-dpu_mdss/203.
stack backtrace:
CPU: 0 PID: 203 Comm: irq/40-dpu_mdss Tainted: G        W       
4.19.10 #76
Call trace:
dump_backtrace+0x0/0x2f8
show_stack+0x20/0x2c
__dump_stack+0x20/0x28
dump_stack+0xcc/0x10c
mark_lock+0xbe0/0xe24
__lock_acquire+0x4cc/0x2708
lock_acquire+0x244/0x360
_raw_spin_lock+0x64/0xa0
handle_level_irq+0x34/0x26c
generic_handle_irq+0x44/0x5c
dpu_mdss_irq+0x64/0xec
irq_forced_thread_fn+0x58/0x9c
irq_thread+0x120/0x1dc
kthread+0x248/0x260
ret_from_fork+0x10/0x18
------------[ cut here ]------------
irq 169 handler irq_default_primary_handler+0x0/0x18 enabled interrupts
Cc: Sean Paul <seanpaul@chromium.org> Cc: Jordan Crouse
<jcrouse@codeaurora.org> Cc: Jayant Shekhar <jshekhar@codeaurora.org>
Cc: Rajesh Yadav <ryadav@codeaurora.org> Cc: Jeykumar Sankaran
<jsanka@codeaurora.org> Signed-off-by: Stephen Boyd
<swboyd@chromium.org> Signed-off-by: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/msm/disp/dpu1/dpu_mdss.c (diff)
Commit f7a2659378e7740f586038b5f1e02b15669cacdd by gregkh
mt7601u: bump supported EEPROM version
[ Upstream commit 3bd1505fed71d834f45e87b32ff07157fdda47e0 ]
As reported by Michael eeprom 0d is supported and work with the driver.
Dump of /sys/kernel/debug/ieee80211/phy1/mt7601u/eeprom_param with 0d
EEPORM looks like this:
RSSI offset: 0 0 Reference temp: f9 LNA gain: 8 Reg channels: 1-14 Per
rate power:
raw:05 bw20:05 bw40:05
raw:05 bw20:05 bw40:05
raw:03 bw20:03 bw40:03
raw:03 bw20:03 bw40:03
raw:04 bw20:04 bw40:04
raw:00 bw20:00 bw40:00
raw:00 bw20:00 bw40:00
raw:00 bw20:00 bw40:00
raw:02 bw20:02 bw40:02
raw:00 bw20:00 bw40:00 Per channel power:
tx_power  ch1:09 ch2:09
tx_power  ch3:0a ch4:0a
tx_power  ch5:0a ch6:0a
tx_power  ch7:0b ch8:0b
tx_power  ch9:0b ch10:0b
tx_power  ch11:0b ch12:0b
tx_power  ch13:0b ch14:0b
Reported-and-tested-by: Michael <ZeroBeat@gmx.de> Signed-off-by:
Stanislaw Gruszka <sgruszka@redhat.com> Acked-by: Jakub Kicinski
<kubakici@wp.pl> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/net/wireless/mediatek/mt7601u/eeprom.h (diff)
Commit 34164dfc56a4c0b23c1f921ceef9cdc4402731eb by gregkh
ARM: 8830/1: NOMMU: Toggle only bits in EXC_RETURN we are really care of
[ Upstream commit 72cd4064fccaae15ab84d40d4be23667402df4ed ]
ARMv8M introduces support for Security extension to M class, among other
things it affects exception handling, especially, encoding of
EXC_RETURN.
The new bits have been added:
Bit [6] Secure or Non-secure stack Bit [5] Default callee
register stacking Bit [0] Exception Secure
which conflicts with hard-coded value of EXC_RETURN:
In fact, we only care of few bits:
Bit [3] Mode (0 - Handler, 1 - Thread) Bit [2] Stack pointer
selection (0 - Main, 1 - Process)
We can toggle only those bits and left other bits as they were on
exception entry.
It is basically, what patch does - saves EXC_RETURN when we do
transition form Thread to Handler mode (it is first svc), so later saved
value is used instead of EXC_RET_THREADMODE_PROCESSSTACK.
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com> Signed-off-by:
Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedarch/arm/kernel/entry-header.S (diff)
The file was modifiedarch/arm/kernel/entry-v7m.S (diff)
The file was modifiedarch/arm/mm/proc-v7m.S (diff)
The file was modifiedarch/arm/include/asm/v7m.h (diff)
Commit 721360c972a3c84a9cf00cd6fc5231360fa6e435 by gregkh
ARM: avoid Cortex-A9 livelock on tight dmb loops
[ Upstream commit 5388a5b82199facacd3d7ac0d05aca6e8f902fed ]
machine_crash_nonpanic_core() does this:
while (1)
cpu_relax();
because the kernel has crashed, and we have no known safe way to deal
with the CPU.  So, we place the CPU into an infinite loop which we
expect it to never exit - at least not until the system as a whole is
reset by some method.
In the absence of erratum 754327, this code assembles to:
b .
In other words, an infinite loop.  When erratum 754327 is enabled, this
becomes:
1: dmb
b 1b
It has been observed that on some systems (eg, OMAP4) where, if a crash
is triggered, the system tries to kexec into the panic kernel, but fails
after taking the secondary CPU down - placing it into one of these
loops.  This causes the system to livelock, and the most noticable
effect is the system stops after issuing:
Loading crashdump kernel...
to the system console.
The tested as working solution I came up with was to add wfe() to these
infinite loops thusly:
while (1) {
cpu_relax();
wfe();
}
which, without 754327 builds to:
1: wfe
b 1b
or with 754327 is enabled:
1: dmb
wfe
b 1b
Adding "wfe" does two things depending on the environment we're running
under:
- where we're running on bare metal, and the processor implements
"wfe", it stops us spinning endlessly in a loop where we're never
going to do any useful work.
- if we're running in a VM, it allows the CPU to be given back to the
hypervisor and rescheduled for other purposes (maybe a different VM)
rather than wasting CPU cycles inside a crashed VM.
However, in light of erratum 794072, Will Deacon wanted to see 10 nops
as well - which is reasonable to cover the case where we have erratum
754327 enabled _and_ we have a processor that doesn't implement the wfe
hint.
So, we now end up with:
1:      wfe
       b       1b
when erratum 754327 is disabled, or:
1:      dmb
       nop
       nop
       nop
       nop
       nop
       nop
       nop
       nop
       nop
       nop
       wfe
       b       1b
when erratum 754327 is enabled.  We also get the dmb + 10 nop sequence
elsewhere in the kernel, in terminating loops.
This is reasonable - it means we get the workaround for erratum 794072
when erratum 754327 is enabled, but still relinquish the dead processor
- either by placing it in a lower power mode when wfe is implemented as
such or by returning it to the hypervisior, or in the case where wfe is
a no-op, we use the workaround specified in erratum 794072 to avoid the
problem.
These as two entirely orthogonal problems - the 10 nops addresses
erratum 794072, and the wfe is an optimisation that makes the system
more efficient when crashed either in terms of power consumption or by
allowing the host/other VMs to make use of the CPU.
I don't see any reason not to use kexec() inside a VM - it has the
potential to provide automated recovery from a failure of the VMs kernel
with the opportunity for saving a crashdump of the failure. A panic()
with a reboot timeout won't do that, and reading the libvirt
documentation, setting on_reboot to "preserve" won't either
(the documentation states "The preserve action for an on_reboot event is
treated as a destroy".)  Surely it has to be a good thing to avoiding
having CPUs spinning inside a VM that is doing no useful work.
Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Russell King
<rmk+kernel@armlinux.org.uk> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedarch/arm/include/asm/barrier.h (diff)
The file was modifiedarch/arm/kernel/machine_kexec.c (diff)
The file was modifiedarch/arm/mach-omap2/prm_common.c (diff)
The file was modifiedarch/arm/kernel/smp.c (diff)
The file was modifiedarch/arm/include/asm/processor.h (diff)
Commit c581587af7177800ccbfea087c4ec22f781d9f14 by gregkh
block, bfq: fix in-service-queue check for queue merging
[ Upstream commit 058fdecc6de7cdecbf4c59b851e80eb2d6c5295f ]
When a new I/O request arrives for a bfq_queue, say Q, bfq checks
whether that request is close to
(a) the head request of some other queue waiting to be served, or
(b) the last request dispatched for the in-service queue (in case Q
itself is not the in-service queue)
If a queue, say Q2, is found for which the above condition holds, then
bfq merges Q and Q2, to hopefully get a more sequential I/O in the
resulting merged queue, and thus a possibly higher throughput.
Case (b) is checked by comparing the new request for Q with the last
request dispatched, assuming that the latter necessarily belonged to the
in-service queue. Unfortunately, this assumption is no longer always
correct, since commit d0edc2473be9 ("block, bfq: inject other-queue I/O
into seeky idle queues on NCQ flash").
When the assumption does not hold, queues that must not be merged may be
merged, causing unexpected loss of control on per-queue service
guarantees.
This commit solves this problem by adding an extra field, which stores
the actual last request dispatched for the in-service queue, and by
using this new field to correctly check case (b).
Signed-off-by: Paolo Valente <paolo.valente@linaro.org> Signed-off-by:
Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedblock/bfq-iosched.c (diff)
The file was modifiedblock/bfq-iosched.h (diff)
Commit 8b3b22aa7c558e713a179710a6f1e2fdbef44b20 by gregkh
block, bfq: fix queue removal from weights tree
[ Upstream commit 9dee8b3b057e1da26f85f1842f2aaf3bb200fb94 ]
bfq maintains an ordered list, through a red-black tree, of unique
weights of active bfq_queues. This list is used to detect whether there
are active queues with differentiated weights. The weight of a queue is
removed from the list when both the following two conditions become
true:
(1) the bfq_queue is flagged as inactive
(2) the has no in-flight request any longer;
Unfortunately, in the rare cases where condition (2) becomes true before
condition (1), the removal fails, because the function to remove the
weight of the queue (bfq_weights_tree_remove) is rightly invoked in the
path that deactivates the bfq_queue, but mistakenly invoked *before* the
function that actually performs the deactivation (bfq_deactivate_bfqq).
This commits moves the invocation of bfq_weights_tree_remove for
condition (1) to after bfq_deactivate_bfqq. As a consequence of this
move, it is necessary to add a further reference to the queue when the
weight of a queue is added, because the queue might otherwise be freed
before bfq_weights_tree_remove is invoked. This commit adds this
reference and makes all related modifications.
Signed-off-by: Paolo Valente <paolo.valente@linaro.org> Signed-off-by:
Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedblock/bfq-iosched.c (diff)
The file was modifiedblock/bfq-wf2q.c (diff)
Commit 08619450dbfe30bacc1816cb9083bb09b7f9315b by gregkh
bpf: fix missing prototype warnings
[ Upstream commit 116bfa96a255123ed209da6544f74a4f2eaca5da ]
Compiling with W=1 generates warnings:
  CC      kernel/bpf/core.o kernel/bpf/core.c:721:12: warning: no
previous prototype for ?bpf_jit_alloc_exec_limit? [-Wmissing-prototypes]
721 | u64 __weak bpf_jit_alloc_exec_limit(void)
     |            ^~~~~~~~~~~~~~~~~~~~~~~~ kernel/bpf/core.c:757:14:
warning: no previous prototype for ?bpf_jit_alloc_exec?
[-Wmissing-prototypes]
757 | void *__weak bpf_jit_alloc_exec(unsigned long size)
     |              ^~~~~~~~~~~~~~~~~~ kernel/bpf/core.c:762:13:
warning: no previous prototype for ?bpf_jit_free_exec?
[-Wmissing-prototypes]
762 | void __weak bpf_jit_free_exec(void *addr)
     |             ^~~~~~~~~~~~~~~~~
All three are weak functions that archs can override, provide proper
prototypes for when a new arch provides their own.
Signed-off-by: Valdis Kletnieks <valdis.kletnieks@vt.edu> Acked-by: Song
Liu <songliubraving@fb.com> Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedinclude/linux/filter.h (diff)
Commit cf651d7007c17bf1bb23fa3a2cb5d1dd2e301c65 by gregkh
selftests/bpf: skip verifier tests for unsupported program types
[ Upstream commit 8184d44c9a577a2f1842ed6cc844bfd4a9981d8e ]
Use recently introduced bpf_probe_prog_type() to skip tests in the
test_verifier() if bpf_verify_program() fails. The skipped test is
indicated in the output.
Example:
... 679/p bpf_get_stack return R0 within range SKIP (unsupported program
type 5) 680/p ld_abs: invalid op 1 OK
... Summary: 863 PASSED, 165 SKIPPED, 3 FAILED
Signed-off-by: Stanislav Fomichev <sdf@google.com> Signed-off-by: Daniel
Borkmann <daniel@iogearbox.net> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedtools/testing/selftests/bpf/test_verifier.c (diff)
Commit 07232db69580586fa82740f6a50d15012d9ed244 by gregkh
powerpc/64s: Clear on-stack exception marker upon exception return
[ Upstream commit eddd0b332304d554ad6243942f87c2fcea98c56b ]
The ppc64 specific implementation of the reliable stacktracer,
save_stack_trace_tsk_reliable(), bails out and reports an "unreliable
trace" whenever it finds an exception frame on the stack. Stack frames
are classified as exception frames if the STACK_FRAME_REGS_MARKER magic,
as written by exception prologues, is found at a particular location.
However, as observed by Joe Lawrence, it is possible in practice that
non-exception stack frames can alias with prior exception frames and
thus, that the reliable stacktracer can find a stale
STACK_FRAME_REGS_MARKER on the stack. It in turn falsely reports an
unreliable stacktrace and blocks any live patching transition to finish.
Said condition lasts until the stack frame is overwritten/initialized by
function call or other means.
In principle, we could mitigate this by making the exception frame
classification condition in save_stack_trace_tsk_reliable() stronger: in
addition to testing for STACK_FRAME_REGS_MARKER, we could also take into
account that for all exceptions executing on the kernel stack
- their stack frames's backlink pointers always match what is saved
   in their pt_regs instance's ->gpr[1] slot and that
- their exception frame size equals STACK_INT_FRAME_SIZE, a value
   uncommonly large for non-exception frames.
However, while these are currently true, relying on them would make the
reliable stacktrace implementation more sensitive towards future changes
in the exception entry code. Note that false negatives, i.e. not
detecting exception frames, would silently break the live patching
consistency model.
Furthermore, certain other places (diagnostic stacktraces, perf, xmon)
rely on STACK_FRAME_REGS_MARKER as well.
Make the exception exit code clear the on-stack STACK_FRAME_REGS_MARKER
for those exceptions running on the "normal" kernel stack and returning
to kernelspace: because the topmost frame is ignored by the reliable
stack tracer anyway, returns to userspace don't need to take care of
clearing the marker.
Furthermore, as I don't have the ability to test this on Book 3E or 32
bits, limit the change to Book 3S and 64 bits.
Fixes: df78d3f61480 ("powerpc/livepatch: Implement reliable stack
tracing for the consistency model") Reported-by: Joe Lawrence
<joe.lawrence@redhat.com> Signed-off-by: Nicolai Stange
<nstange@suse.de> Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedarch/powerpc/kernel/entry_64.S (diff)
Commit b8498a26ffdbc37d8e42010d2f0c5a624222c64e by gregkh
cgroup/pids: turn cgroup_subsys->free() into cgroup_subsys->release() to
fix the accounting
[ Upstream commit 51bee5abeab2058ea5813c5615d6197a23dbf041 ]
The only user of cgroup_subsys->free() callback is pids_cgrp_subsys
which needs pids_free() to uncharge the pid.
However, ->free() is called from __put_task_struct()->cgroup_free() and
this is too late. Even the trivial program which does
for (;;) {
int pid = fork();
assert(pid >= 0);
if (pid)
wait(NULL);
else
exit(0);
}
can run out of limits because
release_task()->call_rcu(delayed_put_task_struct) implies an RCU gp
after the task/pid goes away and before the final put().
Test-case:
mkdir -p /tmp/CG
mount -t cgroup2 none /tmp/CG
echo '+pids' > /tmp/CG/cgroup.subtree_control
mkdir /tmp/CG/PID
echo 2 > /tmp/CG/PID/pids.max
perl -e 'while ($p = fork) { wait; } $p // die "fork failed: $!\n"'
&
echo $! > /tmp/CG/PID/cgroup.procs
Without this patch the forking process fails soon after migration.
Rename cgroup_subsys->free() to cgroup_subsys->release() and move the
callsite into the new helper, cgroup_release(), called by release_task()
which actually frees the pid(s).
Reported-by: Herton R. Krzesinski <hkrzesin@redhat.com> Reported-by: Jan
Stancek <jstancek@redhat.com> Signed-off-by: Oleg Nesterov
<oleg@redhat.com> Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedkernel/cgroup/pids.c (diff)
The file was modifiedkernel/cgroup/cgroup.c (diff)
The file was modifiedinclude/linux/cgroup.h (diff)
The file was modifiedkernel/exit.c (diff)
The file was modifiedinclude/linux/cgroup-defs.h (diff)
Commit d9c61474aa777169923f7d62f1830c655d859064 by gregkh
backlight: pwm_bl: Use gpiod_get_value_cansleep() to get initial state
[ Upstream commit cec2b18832e26bc866bef2be22eff4e25bbc4034 ]
gpiod_get_value() gives out a warning if access to the underlying
gpiochip requires sleeping, which is common for I2C based chips:
    WARNING: CPU: 0 PID: 77 at drivers/gpio/gpiolib.c:2500
gpiod_get_value+0xd0/0x100
   Modules linked in:
   CPU: 0 PID: 77 Comm: kworker/0:2 Not tainted
4.14.0-rc3-00589-gf32897915d48-dirty #90
   Hardware name: Allwinner sun4i/sun5i Families
   Workqueue: events deferred_probe_work_func
   [<c010ec50>] (unwind_backtrace) from [<c010b784>]
(show_stack+0x10/0x14)
   [<c010b784>] (show_stack) from [<c0797224>] (dump_stack+0x88/0x9c)
   [<c0797224>] (dump_stack) from [<c0125b08>] (__warn+0xe8/0x100)
   [<c0125b08>] (__warn) from [<c0125bd0>]
(warn_slowpath_null+0x20/0x28)
   [<c0125bd0>] (warn_slowpath_null) from [<c037069c>]
(gpiod_get_value+0xd0/0x100)
   [<c037069c>] (gpiod_get_value) from [<c03778d0>]
(pwm_backlight_probe+0x238/0x508)
   [<c03778d0>] (pwm_backlight_probe) from [<c0411a2c>]
(platform_drv_probe+0x50/0xac)
   [<c0411a2c>] (platform_drv_probe) from [<c0410224>]
(driver_probe_device+0x238/0x2e8)
   [<c0410224>] (driver_probe_device) from [<c040e820>]
(bus_for_each_drv+0x44/0x94)
   [<c040e820>] (bus_for_each_drv) from [<c040ff0c>]
(__device_attach+0xb0/0x114)
   [<c040ff0c>] (__device_attach) from [<c040f4f8>]
(bus_probe_device+0x84/0x8c)
   [<c040f4f8>] (bus_probe_device) from [<c040f944>]
(deferred_probe_work_func+0x50/0x14c)
   [<c040f944>] (deferred_probe_work_func) from [<c013be84>]
(process_one_work+0x1ec/0x414)
   [<c013be84>] (process_one_work) from [<c013ce5c>]
(worker_thread+0x2b0/0x5a0)
   [<c013ce5c>] (worker_thread) from [<c0141908>] (kthread+0x14c/0x154)
   [<c0141908>] (kthread) from [<c0107ab0>] (ret_from_fork+0x14/0x24)
This was missed in commit 0c9501f823a4 ("backlight: pwm_bl: Handle gpio
that can sleep"). The code was then moved to a separate function in
commit 7613c922315e ("backlight: pwm_bl: Move the checks for initial
power state to a separate function").
The only usage of gpiod_get_value() is during the probe stage, which is
safe to sleep in. Switch to gpiod_get_value_cansleep().
Fixes: 0c9501f823a4 ("backlight: pwm_bl: Handle gpio that can sleep")
Signed-off-by: Chen-Yu Tsai <wens@csie.org> Acked-by: Maxime Ripard
<maxime.ripard@bootlin.com> Acked-by: Daniel Thompson
<daniel.thompson@linaro.org> Signed-off-by: Lee Jones
<lee.jones@linaro.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/video/backlight/pwm_bl.c (diff)
Commit 9ee0088f920b1862f998542228572729bb19dce8 by gregkh
tty: increase the default flip buffer limit to 2*640K
[ Upstream commit 7ab57b76ebf632bf2231ccabe26bea33868118c6 ]
We increase the default limit for buffer memory allocation by a factor
of 10 to 640K to prevent data loss when using fast serial interfaces.
For example when using RS485 without flow-control at speeds of 1Mbit/s
an upwards we've run into problems such as applications being too slow
to read out this buffer (on embedded devices based on imx53 or imx6).
If you want to write transmitted data to a slow SD card and thus have
realtime requirements, this limit can become a problem.
That shouldn't be the case and 640K buffers fix such problems for us.
This value is a maximum limit for allocation only. It has no effect on
systems that currently run fine. When transmission is slow enough
applications and hardware can keep up and increasing this limit doesn't
change anything.
It only _allows_ to allocate more than 2*64K in cases we currently fail
to allocate memory despite having some.
Signed-off-by: Manfred Schlaegl <manfred.schlaegl@ginzinger.com>
Signed-off-by: Martin Kepplinger <martin.kepplinger@ginzinger.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/tty/tty_buffer.c (diff)
Commit b32cff3dd08623589da4c175e2de459131f6e6d9 by gregkh
powerpc/pseries: Perform full re-add of CPU for topology update
post-migration
[ Upstream commit 81b61324922c67f73813d8a9c175f3c153f6a1c6 ]
On pseries systems, performing a partition migration can result in
altering the nodes a CPU is assigned to on the destination system. For
exampl, pre-migration on the source system CPUs are in node 1 and 3,
post-migration on the destination system CPUs are in nodes 2 and 3.
Handling the node change for a CPU can cause corruption in the slab
cache if we hit a timing where a CPUs node is changed while cache_reap()
is invoked. The corruption occurs because the slab cache code appears to
rely on the CPU and slab cache pages being on the same node.
The current dynamic updating of a CPUs node done in
arch/powerpc/mm/numa.c does not prevent us from hitting this scenario.
Changing the device tree property update notification handler that
recognizes an affinity change for a CPU to do a full DLPAR remove and
add of the CPU instead of dynamically changing its node resolves this
issue.
Signed-off-by: Nathan Fontenot <nfont@linux.vnet.ibm.com> Signed-off-by:
Michael W. Bringmann <mwb@linux.vnet.ibm.com> Tested-by: Michael W.
Bringmann <mwb@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedarch/powerpc/mm/numa.c (diff)
The file was modifiedarch/powerpc/platforms/pseries/hotplug-cpu.c (diff)
The file was modifiedarch/powerpc/include/asm/topology.h (diff)
Commit 504dfdea9c398c42005864c9b18fc8bacf232577 by gregkh
drm/amd/display: Enable vblank interrupt during CRC capture
[ Upstream commit 428da2bdb05d76c48d0bd8fbfa2e4c102685be08 ]
[Why] In order to read CRC events when CRC capture is enabled the vblank
interrput handler needs to be running for the CRTC. The handler is
enabled while there is an active vblank reference.
When running IGT tests there will often be no active vblank reference
but the test expects to read a CRC value. This is valid usage (and works
on i915 since they have a CRC interrupt handler) so the reference to the
vblank should be grabbed while capture is active.
This issue was found running:
igt@kms_plane_multiple@atomic-pipe-b-tiling-none
The pipe-b is the only one in the initial commit and was not previously
active so no vblank reference is grabbed. The vblank interrupt is not
enabled and the test times out.
[How] Keep a reference to the vblank as long as CRC capture is enabled.
If userspace never explicitly disables it then the reference is also
dropped when removing the CRTC from the context (stream = NULL).
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Harry Wentland <Harry.Wentland@amd.com> Reviewed-by: Sun
peng Li <Sunpeng.Li@amd.com> Acked-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_crc.c (diff)
The file was modifieddrivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c (diff)
Commit f8d78138dd5555ecc5a9303e2e5a56c0ca303641 by gregkh
ALSA: dice: add support for Solid State Logic Duende Classic/Mini
[ Upstream commit b2e9e1c8810ee05c95f4d55800b8afae70ab01b4 ]
Duende Classic was produced by Solid State Logic in 2006, as a first
model of Duende DSP series. The following model, Duende Mini was
produced in 2008. They are designed to receive isochronous packets for
PCM frames via IEEE 1394 bus, perform signal processing by downloaded
program, then transfer isochronous packets for converted PCM frames.
These two models includes the same embedded board, consists of several
ICs below:
- Texus Instruments Inc, TSB41AB3 for physical layer of IEEE 1394 bus
- WaveFront semiconductor, DICE II STD ASIC for link/protocol layer
- Altera MAX 3000A CPLD for programs
- Analog devices, SHARC ADSP-21363 for signal processing (4 chips)
This commit adds support for the two models to ALSA dice driver. Like
support for the other devices, packet streaming is just available.
Userspace applications should be developed if full features became
available; e.g. program uploader and parameter controller.
$ ./hinawa-config-rom-printer /dev/fw1
{ 'bus-info': { 'adj': False,
               'bmc': False,
               'chip_ID': 349771402425,
               'cmc': True,
               'cyc_clk_acc': 255,
               'generation': 1,
               'imc': True,
               'isc': True,
               'link_spd': 2,
               'max_ROM': 1,
               'max_rec': 512,
               'name': '1394',
               'node_vendor_ID': 20674,
               'pmc': False},
'root-directory': [ ['VENDOR', 20674],
                     ['DESCRIPTOR', 'Solid State Logic'],
                     ['MODEL', 112],
                     ['DESCRIPTOR', 'Duende board'],
                     [ 'NODE_CAPABILITIES',
                       { 'addressing': {'64': True, 'fix': True, 'prv':
True},
                         'misc': {'int': False, 'ms': False, 'spt':
True},
                         'state': { 'atn': False,
                                    'ded': False,
                                    'drq': True,
                                    'elo': False,
                                    'init': False,
                                    'lst': True,
                                    'off': False},
                         'testing': {'bas': False, 'ext': False}}],
                     [ 'UNIT',
                       [ ['SPECIFIER_ID', 20674],
                         ['VERSION', 1],
                         ['MODEL', 112],
                         ['DESCRIPTOR', 'Duende board']]]]}
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedsound/firewire/dice/dice.c (diff)
Commit bce56838a25d9fd4aade72874e28c741d7cc9c14 by gregkh
regulator: mcp16502: Include linux/gpio/consumer.h to fix build error
[ Upstream commit f3c6a1a194317f3a31ee2b2067bb0a41de64bc8b ]
Fix below build error: drivers/regulator/mcp16502.c: In function
‘mcp16502_gpio_set_mode’: drivers/regulator/mcp16502.c:135:3: error:
implicit declaration of function ‘gpiod_set_value’; did you mean
‘gpio_set_value’? [-Werror=implicit-function-declaration]
  gpiod_set_value(mcp->lpm, 0);
  ^~~~~~~~~~~~~~~
  gpio_set_value drivers/regulator/mcp16502.c: In function
‘mcp16502_probe’: drivers/regulator/mcp16502.c:486:13: error: implicit
declaration of function ‘devm_gpiod_get’; did you mean ‘devm_gpio_free’?
[-Werror=implicit-function-declaration]
mcp->lpm = devm_gpiod_get(dev, "lpm", GPIOD_OUT_LOW);
            ^~~~~~~~~~~~~~
            devm_gpio_free drivers/regulator/mcp16502.c:486:40: error:
‘GPIOD_OUT_LOW’ undeclared (first use in this function); did you mean
‘GPIOF_INIT_LOW’?
mcp->lpm = devm_gpiod_get(dev, "lpm", GPIOD_OUT_LOW);
                                       ^~~~~~~~~~~~~
                                       GPIOF_INIT_LOW
Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Nicolas Ferre
<nicolas.ferre@microchip.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/regulator/mcp16502.c (diff)
Commit 3ea0a48aa0809fe64b6004383cc669200d3c1a4b by gregkh
usb: dwc3: gadget: Fix OTG events when gadget driver isn't loaded
[ Upstream commit 169e3b68cadb5775daca009ced4faf01ffd97dcf ]
On v3.10a in dual-role mode, if port is in device mode and gadget driver
isn't loaded, the OTG event interrupts don't come through.
It seems that if the core is configured to be OTG2.0 only, then we can't
leave the DCFG.DEVSPD at Super-speed (default) if we expect OTG to work
properly. It must be set to High-speed.
Fix this issue by configuring DCFG.DEVSPD to the supported maximum speed
at gadget init. Device tree still needs to provide correct supported
maximum speed for this to work.
This issue wasn't present on v2.40a but is seen on v3.10a. It doesn't
cause any side effects on v2.40a.
Signed-off-by: Roger Quadros <rogerq@ti.com> Signed-off-by: Sekhar Nori
<nsekhar@ti.com> Signed-off-by: Felipe Balbi
<felipe.balbi@linux.intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/usb/dwc3/gadget.c (diff)
Commit 631e6859c9ac9bfd8de67e211adcad2ac6f4bc73 by gregkh
platform/x86: intel-hid: Missing power button release on some Dell
models
[ Upstream commit e97a34563d18606ee5db93e495382a967f999cd4 ]
Power button suspend for some Dell models was added in:
commit 821b85366284 ("platform/x86: intel-hid: Power button suspend on
Dell Latitude 7275")
by checking against the power button press notification (0xCE) to report
the power button press event. The corresponding power button release
notification (0xCF) was caught and ignored to stop it from being
reported as an "unknown event" in the logs.
The missing button release event is creating issues on Android-x86, as
reported on the project mailing list for a Dell Latitude 5175 model,
since the events are expected in down/up pairs.
Report the power button release event to fix this issue.
Link: https://groups.google.com/forum/#!topic/android-x86/aSwZK9Nf9Ro
Tested-by: Tristian Celestin <tristian.celestin@outlook.com> Tested-by:
Jérôme de Bretagne <jerome.debretagne@gmail.com> Signed-off-by: Jérôme
de Bretagne <jerome.debretagne@gmail.com> Reviewed-by: Mario Limonciello
<mario.limonciello@dell.com>
[dvhart: corrected commit reference format per checkpatch]
Signed-off-by: Darren Hart (VMware) <dvhart@infradead.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/platform/x86/intel-hid.c (diff)
Commit 8f4264f58eb8e429f89a7b70b5787c6531083d46 by gregkh
perf trace: Fixup etcsnoop example
[ Upstream commit 1d59cb1bbd4cbe5a8f8032242cdacea5658129cf ]
Where we don't have "raw_syscalls:sys_enter", so we need to look for a
"*syscalls:sys_enter*" to initialize the offsets for the
__augmented_syscalls__ evsel, which is the case with etcsnoop, that was
segfaulting, fixed:
  # trace -e /home/acme/git/perf/tools/perf/examples/bpf/etcsnoop.c
    0.000 (         ): gnome-shell/2105 openat(dfd: CWD, filename:
"/etc/localtime")                       ...
  631.834 (         ): cat/6521 openat(dfd: CWD, filename:
"/etc/ld.so.cache", flags: RDONLY|CLOEXEC) ...
  632.637 (         ): bash/6521 openat(dfd: CWD, filename:
"/etc/passwd")                          ...
^C#
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@kernel.org> Cc: Luis Cláudio Gonçalves <lclaudio@redhat.com> Cc:
Namhyung Kim <namhyung@kernel.org> Cc: Wang Nan <wangnan0@huawei.com>
Fixes: b9b6a2ea2baf ("perf trace: Do not hardcode the size of the
tracepoint common_ fields") Link:
https://lkml.kernel.org/n/tip-0tjwcit8qitsmh4nyvf2b0jo@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/builtin-trace.c (diff)
Commit 8febc5d310326bd0b7c601eef4526ebdc5d08ecd by gregkh
perf script python: Use PyBytes for attr in trace-event-python
[ Upstream commit 72e0b15cb24a497d7d0d4707cf51ff40c185ae8c ]
With Python3.  PyUnicode_FromStringAndSize is unsafe to call on attr and
will return NULL.  Use _PyBytes_FromStringAndSize (as with raw_buf).
Below is the observed behavior without the fix.  Note it is first
necessary to apply the prior fix (Add trace_context extension module to
sys,modules):
  # ldd /usr/bin/perf | grep -i python
         libpython3.6m.so.1.0 => /usr/lib64/libpython3.6m.so.1.0
(0x00007f8e1dfb2000)
  # perf record -e raw_syscalls:sys_enter /bin/false
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.018 MB perf.data (21 samples) ]
  # perf script -g python | cat
generated Python script: perf-script.py
  # perf script -s ./perf-script.py
in trace_begin
Segmentation fault (core dumped)
Signed-off-by: Tony Jones <tonyj@suse.de> Acked-by: Jiri Olsa
<jolsa@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jaroslav Škarvada <jskarvad@redhat.com> Cc: Jonathan Corbet
<corbet@lwn.net> Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Cc:
Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com> Fixes: 66dfdff03d19
("perf tools: Add Python 3 support") Link:
http://lkml.kernel.org/r/20190124005229.16146-3-tonyj@suse.de
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/util/scripting-engines/trace-event-python.c (diff)
Commit 9acd16abab2347753bafd7ff322721c6bcd997f1 by gregkh
perf script python: Add trace_context extension module to sys.modules
[ Upstream commit cc437642255224e4140fed1f3e3156fc8ad91903 ]
In Python3, the result of PyModule_Create (called from
scripts/python/Perf-Trace-Util/Context.c) is not automatically added to
sys.modules.  See: https://bugs.python.org/issue4592
Below is the observed behavior without the fix:
  # ldd /usr/bin/perf | grep -i python
libpython3.6m.so.1.0 => /usr/lib64/libpython3.6m.so.1.0
(0x00007f8e1dfb2000)
  # perf record /bin/false
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.015 MB perf.data (17 samples) ]
  # perf script -g python | cat
generated Python script: perf-script.py
  # perf script -s ./perf-script.py
Traceback (most recent call last):
   File "./perf-script.py", line 18, in <module>
     from perf_trace_context import *
ModuleNotFoundError: No module named 'perf_trace_context'
Error running python script ./perf-script.py
#
Committer notes:
To build with python3 use:
  $ make -C tools/perf PYTHON=python3
Use a non-const variable to pass the 'name' arg to
PyImport_AppendInittab(), as python2.6 has that as 'char *', which ends
up trowing this in some environments:
   CC       /tmp/build/perf/util/parse-branch-options.o
util/scripting-engines/trace-event-python.c: In function
'python_start_script':
util/scripting-engines/trace-event-python.c:1520:2: error: passing
argument 1 of 'PyImport_AppendInittab' discards 'const' qualifier from
pointer target type [-Werror]
   PyImport_AppendInittab("perf_trace_context", initfunc);
   ^
In file included from /usr/include/python2.6/Python.h:130:0,
                  from util/scripting-engines/trace-event-python.c:22:
/usr/include/python2.6/import.h:54:17: note: expected 'char *' but
argument is of type 'const char *'
  PyAPI_FUNC(int) PyImport_AppendInittab(char *name, void
(*initfunc)(void));
                  ^
cc1: all warnings being treated as errors
Signed-off-by: Tony Jones <tonyj@suse.de> Acked-by: Jiri Olsa
<jolsa@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jaroslav Škarvada <jskarvad@redhat.com> Cc: Jonathan Corbet
<corbet@lwn.net> Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Cc:
Seeteena Thoufeek <s1seetee@linux.vnet.ibm.com> Fixes: 66dfdff03d19
("perf tools: Add Python 3 support") Link:
http://lkml.kernel.org/r/20190124005229.16146-2-tonyj@suse.de
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Sasha Levin <sashal@kernel.org>
The file was modifiedtools/perf/util/scripting-engines/trace-event-python.c (diff)
Commit 64ef5941a6f844831188df020f2de258adbac278 by gregkh
media: mt9m111: set initial frame size other than 0x0
[ Upstream commit 29856308137de1c21eda89411695f4fc6e9780ff ]
This driver sets initial frame width and height to 0x0, which is
invalid. So set it to selection rectangle bounds instead.
This is detected by v4l2-compliance detected.
Cc: Enrico Scholz <enrico.scholz@sigma-chemnitz.de> Cc: Michael
Grzeschik <m.grzeschik@pengutronix.de> Cc: Marco Felsch
<m.felsch@pengutronix.de> Signed-off-by: Akinobu Mita
<akinobu.mita@gmail.com> Signed-off-by: Sakari Ailus
<sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/media/i2c/mt9m111.c (diff)
Commit bf381e06af420236e34f34b8264a9cd3b2fed11a by gregkh
hwrng: virtio - Avoid repeated init of completion
[ Upstream commit aef027db48da56b6f25d0e54c07c8401ada6ce21 ]
The virtio-rng driver uses a completion called have_data to wait for a
virtio read to be fulfilled by the hypervisor. The completion is reset
before placing a buffer on the virtio queue and completed by the virtio
callback once data has been written into the buffer.
Prior to this commit, the driver called init_completion on this
completion both during probe as well as when registering virtio buffers
as part of a hwrng read operation. The second of these init_completion
calls should instead be reinit_completion because the have_data
completion has already been inited by probe. As described in
Documentation/scheduler/completion.txt, "Calling init_completion() twice
on the same completion object is most likely a bug".
This bug was present in the initial implementation of virtio-rng in
f7f510ec1957 ("virtio: An entropy device, as suggested by hpa"). Back
then the have_data completion was a single static completion rather than
a member of one of potentially multiple virtrng_info structs as
implemented later by 08e53fbdb85c ("virtio-rng: support multiple
virtio-rng devices"). The original driver incorrectly used
init_completion rather than INIT_COMPLETION to reset have_data during
read.
Tested by running `head -c48 /dev/random | hexdump` within crosvm, the
Chrome OS virtual machine monitor, and confirming that the virtio-rng
driver successfully produces random bytes from the host.
Signed-off-by: David Tolnay <dtolnay@gmail.com> Tested-by: David Tolnay
<dtolnay@gmail.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/char/hw_random/virtio-rng.c (diff)
Commit e01bc8baa867eb574fa31f712cd8d5a5012f88a6 by gregkh
soc/tegra: fuse: Fix illegal free of IO base address
[ Upstream commit 51294bf6b9e897d595466dcda5a3f2751906a200 ]
On cases where device tree entries for fuse and clock provider are in
different order, fuse driver needs to defer probing. This leads to
freeing incorrect IO base address as the fuse->base variable gets
overwritten once during first probe invocation. This leads to the
following spew during boot:
[    3.082285] Trying to vfree() nonexistent vm area (00000000cfe8fd94)
[    3.082308] WARNING: CPU: 5 PID: 126 at
/hdd/l4t/kernel/stable/mm/vmalloc.c:1511 __vunmap+0xcc/0xd8
[    3.082318] Modules linked in:
[    3.082330] CPU: 5 PID: 126 Comm: kworker/5:1 Tainted: G S          
    4.19.7-tegra-gce119d3 #1
[    3.082340] Hardware name: quill (DT)
[    3.082353] Workqueue: events deferred_probe_work_func
[    3.082364] pstate: 40000005 (nZcv daif -PAN -UAO)
[    3.082372] pc : __vunmap+0xcc/0xd8
[    3.082379] lr : __vunmap+0xcc/0xd8
[    3.082385] sp : ffff00000a1d3b60
[    3.082391] x29: ffff00000a1d3b60 x28: 0000000000000000
[    3.082402] x27: 0000000000000000 x26: ffff000008e8b610
[    3.082413] x25: 0000000000000000 x24: 0000000000000009
[    3.082423] x23: ffff000009221a90 x22: ffff000009f6d000
[    3.082432] x21: 0000000000000000 x20: 0000000000000000
[    3.082442] x19: ffff000009f6d000 x18: ffffffffffffffff
[    3.082452] x17: 0000000000000000 x16: 0000000000000000
[    3.082462] x15: ffff0000091396c8 x14: 0720072007200720
[    3.082471] x13: 0720072007200720 x12: 0720072907340739
[    3.082481] x11: 0764076607380765 x10: 0766076307300730
[    3.082491] x9 : 0730073007300730 x8 : 0730073007280720
[    3.082501] x7 : 0761076507720761 x6 : 0000000000000102
[    3.082510] x5 : 0000000000000000 x4 : 0000000000000000
[    3.082519] x3 : ffffffffffffffff x2 : ffff000009150ff8
[    3.082528] x1 : 3d95b1429fff5200 x0 : 0000000000000000
[    3.082538] Call trace:
[    3.082545]  __vunmap+0xcc/0xd8
[    3.082552]  vunmap+0x24/0x30
[    3.082561]  __iounmap+0x2c/0x38
[    3.082569]  tegra_fuse_probe+0xc8/0x118
[    3.082577]  platform_drv_probe+0x50/0xa0
[    3.082585]  really_probe+0x1b0/0x288
[    3.082593]  driver_probe_device+0x58/0x100
[    3.082601]  __device_attach_driver+0x98/0xf0
[    3.082609]  bus_for_each_drv+0x64/0xc8
[    3.082616]  __device_attach+0xd8/0x130
[    3.082624]  device_initial_probe+0x10/0x18
[    3.082631]  bus_probe_device+0x90/0x98
[    3.082638]  deferred_probe_work_func+0x74/0xb0
[    3.082649]  process_one_work+0x1e0/0x318
[    3.082656]  worker_thread+0x228/0x450
[    3.082664]  kthread+0x128/0x130
[    3.082672]  ret_from_fork+0x10/0x18
[    3.082678] ---[ end trace 0810fe6ba772c1c7 ]---
Fix this by retaining the value of fuse->base until driver has
successfully probed.
Signed-off-by: Timo Alho <talho@nvidia.com> Acked-by: Jon Hunter
<jonathanh@nvidia.com> Signed-off-by: Thierry Reding
<treding@nvidia.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/soc/tegra/fuse/fuse-tegra.c (diff)
Commit 931480457bb363aa6390cbb2eaa1dfac4b38ec44 by gregkh
selftests/bpf: suppress readelf stderr when probing for BTF support
[ Upstream commit 2f0921262ba943fe9d9f59037a033927d8c4789b ]
Before:
$ make -s -C tools/testing/selftests/bpf readelf: Error: Missing
knowledge of 32-bit reloc types used in DWARF sections of machine number
247 readelf: Warning: unable to apply unsupported reloc type 10 to
section
.debug_info readelf: Warning: unable to apply unsupported reloc type 1
to section
.debug_info readelf: Warning: unable to apply unsupported reloc type 10
to section
.debug_info
After:
$ make -s -C tools/testing/selftests/bpf
v2:
* use llvm-readelf instead of redirecting binutils' readelf stderr to
/dev/null
Signed-off-by: Stanislav Fomichev <sdf@google.com> Acked-by: Song Liu
<songliubraving@fb.com> Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedtools/testing/selftests/bpf/Makefile (diff)
Commit d9f59ff251b4efcc16ea2de9ef17e60f77a25b08 by gregkh
HID: intel-ish: ipc: handle PIMR before ish_wakeup also clear PISR
busy_clear bit
[ Upstream commit 2edefc056e4f0e6ec9508dd1aca2c18fa320efef ]
Host driver should handle interrupt mask register earlier than wake up
ish FW else there will be conditions when FW interrupt comes, host PIMR
register still not set ready, so move the interrupt mask setting before
ish_wakeup.
Clear PISR busy_clear bit in ish_irq_handler. If not clear, there will
be conditions host driver received a busy_clear interrupt (before the
busy_clear mask bit is ready), it will return IRQ_NONE after
check_generated_interrupt, the interrupt will never be cleared, causing
the DEVICE not sending following IRQ.
Since PISR clear should not be called for the CHV device we do this
change. After the change, both ISH2HOST interrupt and busy_clear
interrupt will be considered as interrupt from ISH, busy_clear interrupt
will return IRQ_HANDLED from IPC_IS_BUSY check.
Signed-off-by: Song Hongyan <hongyan.song@intel.com> Acked-by: Srinivas
Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Jiri
Kosina <jkosina@suse.cz> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/hid/intel-ish-hid/ipc/ipc.c (diff)
Commit 3d1a731bcec75fd433bd22d3176b43a5385572c1 by gregkh
f2fs: UBSAN: set boolean value iostat_enable correctly
[ Upstream commit ac92985864e187a1735502f6a02f54eaa655b2aa ]
When setting /sys/fs/f2fs/<DEV>/iostat_enable with non-bool value, UBSAN
reports the following warning.
[ 7562.295484]
================================================================================
[ 7562.296531] UBSAN: Undefined behaviour in fs/f2fs/f2fs.h:2776:10
[ 7562.297651] load of value 64 is not a valid value for type '_Bool'
[ 7562.298642] CPU: 1 PID: 7487 Comm: dd Not tainted 4.20.0-rc4+ #79
[ 7562.298653] Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS
VirtualBox 12/01/2006
[ 7562.298662] Call Trace:
[ 7562.298760]  dump_stack+0x46/0x5b
[ 7562.298811]  ubsan_epilogue+0x9/0x40
[ 7562.298830]  __ubsan_handle_load_invalid_value+0x72/0x90
[ 7562.298863]  f2fs_file_write_iter+0x29f/0x3f0
[ 7562.298905]  __vfs_write+0x115/0x160
[ 7562.298922]  vfs_write+0xa7/0x190
[ 7562.298934]  ksys_write+0x50/0xc0
[ 7562.298973]  do_syscall_64+0x4a/0xe0
[ 7562.298992]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[ 7562.299001] RIP: 0033:0x7fa45ec19c00
[ 7562.299004] Code: 73 01 c3 48 8b 0d 88 92 2c 00 f7 d8 64 89 01 48 83
c8 ff c3 66 0f 1f 44 00 00 83 3d dd eb 2c 00 00 75 10 b8 01 00 00 00 0f
05 <48> 3d 01 f0 ff ff 73 31 c3 48 83 ec 08 e8 ce 8f 01 00 48 89 04 24
[ 7562.299044] RSP: 002b:00007ffca52b49e8 EFLAGS: 00000246 ORIG_RAX:
0000000000000001
[ 7562.299052] RAX: ffffffffffffffda RBX: 0000000000000000 RCX:
00007fa45ec19c00
[ 7562.299059] RDX: 0000000000000400 RSI: 000000000093f000 RDI:
0000000000000001
[ 7562.299065] RBP: 000000000093f000 R08: 0000000000000004 R09:
0000000000000000
[ 7562.299071] R10: 00007ffca52b47b0 R11: 0000000000000246 R12:
0000000000000400
[ 7562.299077] R13: 000000000093f000 R14: 000000000093f400 R15:
0000000000000000
[ 7562.299091]
================================================================================
So, if iostat_enable is enabled, set its value as true.
Signed-off-by: Sheng Yong <shengyong1@huawei.com> Reviewed-by: Chao Yu
<yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedfs/f2fs/sysfs.c (diff)
Commit 283a29de66c328cbab7e64bb876f3199d5f0edab by gregkh
f2fs: fix to initialize variable to avoid UBSAN/smatch warning
[ Upstream commit f9aa52a8cbe09fe25244d59c29660bbe635df613 ]
As Dan Carpenter as below:
The patch df634f444ee9: "f2fs: use rb_*_cached friends" from Oct 4,
2018, leads to the following static checker warning:
fs/f2fs/extent_cache.c:606 f2fs_update_extent_tree_range()
error: uninitialized symbol 'leftmost'.
And also Eric Biggers, and Kyungtae Kim reported, there is an UBSAN
warning described as below:
We report a bug in linux-4.20.2: "UBSAN: Undefined behaviour in
fs/f2fs/extent_cache.c"
kernel config: https://kt0755.github.io/etc/config_v4.20_stable repro:
https://kt0755.github.io/etc/repro.4a3e7.c (f2fs is mounted on
/mnt/f2fs/)
This arose in f2fs_update_extent_tree_range
(fs/f2fs/extent_cache.c:605). It seems that, for some reason, its last
argument became "24" although that was supposed to be bool type.
========================================= UBSAN: Undefined behaviour in
fs/f2fs/extent_cache.c:605:4 load of value 24 is not a valid value for
type '_Bool' CPU: 0 PID: 6774 Comm: syz-executor5 Not tainted 4.20.2 #1
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Bochs
01/01/2011 Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0xb1/0x118 lib/dump_stack.c:113
ubsan_epilogue+0x12/0x94 lib/ubsan.c:159
__ubsan_handle_load_invalid_value+0x17a/0x1be lib/ubsan.c:457
f2fs_update_extent_tree_range+0x1d4a/0x1d50 fs/f2fs/extent_cache.c:605
f2fs_update_extent_cache+0x2b6/0x350 fs/f2fs/extent_cache.c:804
f2fs_update_data_blkaddr+0x61/0x70 fs/f2fs/data.c:656
f2fs_outplace_write_data+0x1d6/0x4b0 fs/f2fs/segment.c:3140
f2fs_convert_inline_page+0x86d/0x2060 fs/f2fs/inline.c:163
f2fs_convert_inline_inode+0x6b5/0xad0 fs/f2fs/inline.c:208
f2fs_preallocate_blocks+0x78b/0xb00 fs/f2fs/data.c:982
f2fs_file_write_iter+0x31b/0xf40 fs/f2fs/file.c:3062
call_write_iter include/linux/fs.h:1857 [inline]
new_sync_write fs/read_write.c:474 [inline]
__vfs_write+0x538/0x6e0 fs/read_write.c:487
vfs_write+0x1b3/0x520 fs/read_write.c:549
ksys_write+0xde/0x1c0 fs/read_write.c:598
__do_sys_write fs/read_write.c:610 [inline]
__se_sys_write fs/read_write.c:607 [inline]
__x64_sys_write+0x7e/0xc0 fs/read_write.c:607
do_syscall_64+0xbe/0x4f0 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x4497b9 Code: e8 8c
9f 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 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 0f
83 9b 6b fc ff c3 66 2e 0f 1f 84 00 00 00 00 RSP: 002b:00007f1ea15edc68
EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX:
00007f1ea15ee6cc RCX: 00000000004497b9 RDX: 0000000000001000 RSI:
0000000020000140 RDI: 0000000000000013 RBP: 000000000071bea0 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00000000ffffffff R13: 000000000000bb50 R14:
00000000006f4bf0 R15: 00007f1ea15ee700
=========================================
As I checked, this uninitialized variable won't cause extent cache
corruption, but in order to avoid such kind of warning of both UBSAN and
smatch, fix to initialize related variable.
Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Reported-by: Eric
Biggers <ebiggers@google.com> Reported-by: Kyungtae Kim
<kt0755@gmail.com> Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedfs/f2fs/extent_cache.c (diff)
Commit e17a340f9598595eaaaff9ed5327dc912585ed68 by gregkh
hpet: Fix missing '=' character in the __setup() code of
hpet_mmap_enable
[ Upstream commit 24d48a61f2666630da130cc2ec2e526eacf229e3 ]
Commit '3d035f580699 ("drivers/char/hpet.c: allow user controlled mmap
for user processes")' introduced a new kernel command line parameter
hpet_mmap, that is required to expose the memory map of the HPET
registers to user-space. Unfortunately the kernel command line parameter
'hpet_mmap' is broken and never takes effect due to missing '='
character in the __setup() code of hpet_mmap_enable.
Before this patch:
dmesg output with the kernel command line parameter hpet_mmap=1
[    0.204152] HPET mmap disabled
dmesg output with the kernel command line parameter hpet_mmap=0
[    0.204192] HPET mmap disabled
After this patch:
dmesg output with the kernel command line parameter hpet_mmap=1
[    0.203945] HPET mmap enabled
dmesg output with the kernel command line parameter hpet_mmap=0
[    0.204652] HPET mmap disabled
Fixes: 3d035f580699 ("drivers/char/hpet.c: allow user controlled mmap
for user processes") Signed-off-by: Buland Singh <bsingh@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/char/hpet.c (diff)
Commit 9d7ff2ae8fd6a95b1d04a7cf67b5644df03664c7 by gregkh
pinctrl: meson: fix G12A ao pull registers base address
[ Upstream commit e66dd48e8b0dee104d16417d30361074b08baca8 ]
Since Meson G12A SoC, Introduce new ao registers AO_RTI_PULL_UP_EN_REG
and AO_GPIO_O.
These bits of controlling output level are remapped to the new register
AO_GPIO_O, and the AO_GPIO_O_EN_N support only controlling output
enable.
These bits of controlling pull enable are remapped to the new register
AO_RTI_PULL_UP_EN_REG, and the AO_RTI_PULL_UP_REG support only
controlling pull type(up/down).
The new layout of ao gpio/pull registers is as follows:
- AO_GPIO_O_EN_N        [offset: 0x9 << 2]
- AO_GPIO_I             [offset: 0xa << 2]
- AO_RTI_PULL_UP_REG    [offset: 0xb << 2]
- AO_RTI_PULL_UP_EN_REG [offset: 0xc << 2]
- AO_GPIO_O             [offset: 0xd << 2]
From above, we can see ao GPIO registers region has been separated by
the ao pull registers. In order to ensure the continuity of the region
on software, the ao GPIO and ao pull registers use the same base
address, but can be identified by the offset.
Fixes: 29ae0952e85f ("pinctrl: meson-g12a: add pinctrl driver support")
Signed-off-by: Xingyu Chen <xingyu.chen@amlogic.com> Signed-off-by:
Jianxin Pan <jianxin.pan@amlogic.com> Signed-off-by: Jerome Brunet
<jbrunet@baylibre.com> Signed-off-by: Linus Walleij
<linus.walleij@linaro.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/pinctrl/meson/pinctrl-meson.c (diff)
Commit e848354f28b7bfc4419af2fcee45503282a8edbd by gregkh
pinctrl: sh-pfc: r8a77990: Fix MOD_SEL bit numbering
[ Upstream commit 3e3eebeacad79bda8a9664c86c04f5201e86fece ]
MOD_SEL register bit numbering was different from R-Car E3 SoC and R-Car
H3/M3-[WN] SoCs.
MOD_SEL 1-bit      H3/M3-[WN]  E3
===============    ==========  ===== Set Value = H'0    b'0         b'0
Set Value = H'1    b'1         b'1
MOD_SEL 2-bits     H3/M3-[WN]  E3
===============    ==========  ===== Set Value = H'0    b'00        b'00
Set Value = H'1    b'01        b'10 Set Value = H'2    b'10        b'01
Set Value = H'3    b'11        b'11
MOD_SEL 3-bits     H3/M3-[WN]  E3
===============    ==========  ===== Set Value = H'0    b'000     
b'000 Set Value = H'1    b'001       b'100 Set Value = H'2    b'010    
b'010 Set Value = H'3    b'011       b'110 Set Value = H'4    b'100   
  b'001 Set Value = H'5    b'101       b'101 Set Value = H'6    b'110  
   b'011 Set Value = H'7    b'111       b'111
This patch replaces the #define name and value of MOD_SEL.
Signed-off-by: Takeshi Kihara <takeshi.kihara.df@renesas.com> Fixes:
6d4036a1e3b3 ("pinctrl: sh-pfc: Initial R8A77990 PFC support")
[shimoda: Split a patch per SoC and revise the commit log]
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
[geert: Use macros to do the actual reordering] Signed-off-by: Geert
Uytterhoeven <geert+renesas@glider.be> Reviewed-by: Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/pinctrl/sh-pfc/pfc-r8a77990.c (diff)
Commit 8376acca6f18200f68945548c59a9518c80e25e0 by gregkh
pinctrl: sh-pfc: r8a77995: Fix MOD_SEL bit numbering
[ Upstream commit 5219aa33caec2f7b68eda2b7e4ab8e276f323254 ]
MOD_SEL register bit numbering was different from R-Car D3 SoC and R-Car
H3/M3-[WN] SoCs.
MOD_SEL 1-bit      H3/M3-[WN]  D3
===============    ==========  ===== Set Value = H'0    b'0         b'0
Set Value = H'1    b'1         b'1
MOD_SEL 2-bits     H3/M3-[WN]  D3
===============    ==========  ===== Set Value = H'0    b'00        b'00
Set Value = H'1    b'01        b'10 Set Value = H'2    b'10        b'01
Set Value = H'3    b'11        b'11
MOD_SEL 3-bits     H3/M3-[WN]  D3
===============    ==========  ===== Set Value = H'0    b'000     
b'000 Set Value = H'1    b'001       b'100 Set Value = H'2    b'010    
b'010 Set Value = H'3    b'011       b'110 Set Value = H'4    b'100   
  b'001 Set Value = H'5    b'101       b'101 Set Value = H'6    b'110  
   b'011 Set Value = H'7    b'111       b'111
This patch replaces the #define name and value of MOD_SEL.
Signed-off-by: Takeshi Kihara <takeshi.kihara.df@renesas.com> Fixes:
794a67117646 ("pinctrl: sh-pfc: Initial R8A77995 PFC support")
[shimoda: split a patch per SoC and revise the commit log]
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
[geert: Use a macro to do the actual reordering] Signed-off-by: Geert
Uytterhoeven <geert+renesas@glider.be> Reviewed-by: Simon Horman
<horms+renesas@verge.net.au> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/pinctrl/sh-pfc/pfc-r8a77995.c (diff)
Commit 964065d234c7f52f8e6ab26ee96bf928bf064999 by gregkh
cpu/hotplug: Mute hotplug lockdep during init
[ Upstream commit ce48c457b95316b9a01b5aa9d4456ce820df94b4 ]
Since we've had:
  commit cb538267ea1e ("jump_label/lockdep: Assert we hold the hotplug
lock for _cpuslocked() operations")
we've been getting some lockdep warnings during init, such as on
HiKey960:
[    0.820495] WARNING: CPU: 4 PID: 0 at kernel/cpu.c:316
lockdep_assert_cpus_held+0x3c/0x48
[    0.820498] Modules linked in:
[    0.820509] CPU: 4 PID: 0 Comm: swapper/4 Tainted: G S              
4.20.0-rc5-00051-g4cae42a #34
[    0.820511] Hardware name: HiKey960 (DT)
[    0.820516] pstate: 600001c5 (nZCv dAIF -PAN -UAO)
[    0.820520] pc : lockdep_assert_cpus_held+0x3c/0x48
[    0.820523] lr : lockdep_assert_cpus_held+0x38/0x48
[    0.820526] sp : ffff00000a9cbe50
[    0.820528] x29: ffff00000a9cbe50 x28: 0000000000000000
[    0.820533] x27: 00008000b69e5000 x26: ffff8000bff4cfe0
[    0.820537] x25: ffff000008ba69e0 x24: 0000000000000001
[    0.820541] x23: ffff000008fce000 x22: ffff000008ba70c8
[    0.820545] x21: 0000000000000001 x20: 0000000000000003
[    0.820548] x19: ffff00000a35d628 x18: ffffffffffffffff
[    0.820552] x17: 0000000000000000 x16: 0000000000000000
[    0.820556] x15: ffff00000958f848 x14: 455f3052464d4d34
[    0.820559] x13: 00000000769dde98 x12: ffff8000bf3f65a8
[    0.820564] x11: 0000000000000000 x10: ffff00000958f848
[    0.820567] x9 : ffff000009592000 x8 : ffff00000958f848
[    0.820571] x7 : ffff00000818ffa0 x6 : 0000000000000000
[    0.820574] x5 : 0000000000000000 x4 : 0000000000000001
[    0.820578] x3 : 0000000000000000 x2 : 0000000000000001
[    0.820582] x1 : 00000000ffffffff x0 : 0000000000000000
[    0.820587] Call trace:
[    0.820591]  lockdep_assert_cpus_held+0x3c/0x48
[    0.820598]  static_key_enable_cpuslocked+0x28/0xd0
[    0.820606]  arch_timer_check_ool_workaround+0xe8/0x228
[    0.820610]  arch_timer_starting_cpu+0xe4/0x2d8
[    0.820615]  cpuhp_invoke_callback+0xe8/0xd08
[    0.820619]  notify_cpu_starting+0x80/0xb8
[    0.820625]  secondary_start_kernel+0x118/0x1d0
We've also had a similar warning in sched_init_smp() for every
asymmetric system that would enable the sched_asym_cpucapacity static
key, although that was singled out in:
  commit 40fa3780bac2 ("sched/core: Take the hotplug lock in
sched_init_smp()")
Those warnings are actually harmless, since we cannot have hotplug
operations at the time they appear. Instead of starting to sprinkle
useless hotplug lock operations in the init codepaths, mute the warnings
until they start warning about real problems.
Suggested-by: Peter Zijlstra <peterz@infradead.org> Signed-off-by:
Valentin Schneider <valentin.schneider@arm.com> Signed-off-by: Peter
Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton
<akpm@linux-foundation.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Paul E. McKenney
<paulmck@linux.vnet.ibm.com> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will.deacon@arm.com> Cc: cai@gmx.us Cc:
daniel.lezcano@linaro.org Cc: dietmar.eggemann@arm.com Cc:
linux-arm-kernel@lists.infradead.org Cc: longman@redhat.com Cc:
marc.zyngier@arm.com Cc: mark.rutland@arm.com Link:
https://lkml.kernel.org/r/1545243796-23224-2-git-send-email-valentin.schneider@arm.com
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedkernel/cpu.c (diff)
Commit 56d276b536141152bb4c6d2e58248d28296553c4 by gregkh
dmaengine: imx-dma: fix warning comparison of distinct pointer types
[ Upstream commit 9227ab5643cb8350449502dd9e3168a873ab0e3b ]
The warning got introduced by commit 930507c18304 ("arm64: add basic
Kconfig symbols for i.MX8"). Since it got enabled for arm64. The warning
haven't been seen before since size_t was 'unsigned int' when built on
arm32.
../drivers/dma/imx-dma.c: In function ‘imxdma_sg_next’:
../include/linux/kernel.h:846:29: warning: comparison of distinct
pointer types lacks a cast
  (!!(sizeof((typeof(x) *)1 == (typeof(y) *)1)))
                            ^~
../include/linux/kernel.h:860:4: note: in expansion of macro
‘__typecheck’
  (__typecheck(x, y) && __no_side_effects(x, y))
   ^~~~~~~~~~~
../include/linux/kernel.h:870:24: note: in expansion of macro
‘__safe_cmp’
__builtin_choose_expr(__safe_cmp(x, y), \
                       ^~~~~~~~~~
../include/linux/kernel.h:879:19: note: in expansion of macro
‘__careful_cmp’
#define min(x, y) __careful_cmp(x, y, <)
                  ^~~~~~~~~~~~~
../drivers/dma/imx-dma.c:288:8: note: in expansion of macro ‘min’
now = min(d->len, sg_dma_len(sg));
       ^~~
Rework so that we use min_t and pass in the size_t that returns the
minimum of two values, using the specified type.
Signed-off-by: Anders Roxell <anders.roxell@linaro.org> Acked-by: Olof
Johansson <olof@lixom.net> Reviewed-by: Fabio Estevam
<festevam@gmail.com> Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/dma/imx-dma.c (diff)
Commit 1bac8b82d95cfe1d43fc30236f99da224ceccc2a by gregkh
dmaengine: qcom_hidma: assign channel cookie correctly
[ Upstream commit 546c0547555efca8ba8c120716c325435e29df1b ]
When dma_cookie_complete() is called in hidma_process_completed(),
dma_cookie_status() will return DMA_COMPLETE in hidma_tx_status(). Then,
hidma_txn_is_success() will be called to use channel cookie
mchan->last_success to do additional DMA status check. Current code
assigns mchan->last_success after dma_cookie_complete(). This causes a
race condition of dma_cookie_status() returns DMA_COMPLETE before
mchan->last_success is assigned correctly. The race will cause
hidma_tx_status() return DMA_ERROR but the transaction is actually a
success. Moreover, in async_tx case, it will cause a timeout panic in
async_tx_quiesce().
Kernel panic - not syncing: async_tx_quiesce: DMA error waiting for
transaction
...
Call trace:
[<ffff000008089994>] dump_backtrace+0x0/0x1f4
[<ffff000008089bac>] show_stack+0x24/0x2c
[<ffff00000891e198>] dump_stack+0x84/0xa8
[<ffff0000080da544>] panic+0x12c/0x29c
[<ffff0000045d0334>] async_tx_quiesce+0xa4/0xc8 [async_tx]
[<ffff0000045d03c8>] async_trigger_callback+0x70/0x1c0 [async_tx]
[<ffff0000048b7d74>] raid_run_ops+0x86c/0x1540 [raid456]
[<ffff0000048bd084>] handle_stripe+0x5e8/0x1c7c [raid456]
[<ffff0000048be9ec>] handle_active_stripes.isra.45+0x2d4/0x550 [raid456]
[<ffff0000048beff4>] raid5d+0x38c/0x5d0 [raid456]
[<ffff000008736538>] md_thread+0x108/0x168
[<ffff0000080fb1cc>] kthread+0x10c/0x138
[<ffff000008084d34>] ret_from_fork+0x10/0x18
Cc: Joey Zheng <yu.zheng@hxt-semitech.com> Reviewed-by: Sinan Kaya
<okaya@kernel.org> Signed-off-by: Shunyong Yang
<shunyong.yang@hxt-semitech.com> Signed-off-by: Vinod Koul
<vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/dma/qcom/hidma.c (diff)
Commit d7e6e93b95f2ba9f328f1976c4ada11548eb15fa by gregkh
dmaengine: qcom_hidma: initialize tx flags in hidma_prep_dma_*
[ Upstream commit 875aac8a46424e5b73a9ff7f40b83311b609e407 ]
In async_tx_test_ack(), it uses flags in struct dma_async_tx_descriptor
to check the ACK status. As hidma reuses the descriptor in a free list
when hidma_prep_dma_*(memcpy/memset) is called, the flag will keep ACKed
if the descriptor has been used before. This will cause a BUG_ON in
async_tx_quiesce().
  kernel BUG at crypto/async_tx/async_tx.c:282!
Internal error: Oops - BUG: 0 1 SMP
...
task: ffff8017dd3ec000 task.stack: ffff8017dd3e8000
PC is at async_tx_quiesce+0x54/0x78 [async_tx]
LR is at async_trigger_callback+0x98/0x110 [async_tx]
This patch initializes flags in dma_async_tx_descriptor by the flags
passed from the caller when hidma_prep_dma_*(memcpy/memset) is called.
Cc: Joey Zheng <yu.zheng@hxt-semitech.com> Reviewed-by: Sinan Kaya
<okaya@kernel.org> Signed-off-by: Shunyong Yang
<shunyong.yang@hxt-semitech.com> Signed-off-by: Vinod Koul
<vkoul@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/dma/qcom/hidma.c (diff)
Commit ebd0f3066c35bd27d3a4b224135e638eeaf70b8d by gregkh
netfilter: physdev: relax br_netfilter dependency
[ Upstream commit 8e2f311a68494a6677c1724bdcb10bada21af37c ]
Following command:
iptables -D FORWARD -m physdev ... causes connectivity loss in some
setups.
Reason is that iptables userspace will probe kernel for the module
revision of the physdev patch, and physdev has an artificial dependency
on br_netfilter (xt_physdev use makes no sense unless a br_netfilter
module is loaded).
This causes the "phydev" module to be loaded, which in turn enables the
"call-iptables" infrastructure.
bridged packets might then get dropped by the iptables ruleset.
The better fix would be to change the "call-iptables" defaults to 0 and
enforce explicit setting to 1, but that breaks backwards compatibility.
This does the next best thing: add a request_module call to checkentry.
This was a stray '-D ... -m physdev' won't activate br_netfilter
anymore.
Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo
Neira Ayuso <pablo@netfilter.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedinclude/net/netfilter/br_netfilter.h (diff)
The file was modifiednet/bridge/br_netfilter_hooks.c (diff)
The file was modifiednet/netfilter/xt_physdev.c (diff)
Commit 68ec6a13ef0d745d7e6f962df4f09f2b215a676e by gregkh
media: rcar-vin: Allow independent VIN link enablement
[ Upstream commit c5ff0edb8e2270a75935c73217fb0de1abd2d910 ]
There is a block of code in rvin_group_link_notify() that prevents
enabling a link to a VIN node if any entity in the media graph is in
use. This prevents enabling a VIN link even if there is an in-use entity
somewhere in the graph that is independent of the link's pipeline.
For example, the code block will prevent enabling a link from the first
rcar-csi2 receiver to a VIN node even if there is an enabled link
somewhere far upstream on the second independent rcar-csi2 receiver
pipeline.
If this code block is meant to prevent modifying a link if any entity in
the graph is actively involved in streaming (because modifying the CHSEL
register fields can disrupt any/all running streams), then the entities
stream counts should be checked rather than the use counts.
(There is already such a check in __media_entity_setup_link() that
verifies the stream_count of the link's source and sink entities are
both zero, but that is insufficient, since there should be no running
streams in the entire graph).
Modify the code block to check the entity stream_count instead of the
use_count (and elaborate on the comment). VIN node links can now be
enabled even if there are other independent in-use entities that are not
streaming.
Fixes: c0cc5aef31 ("media: rcar-vin: add link notify for Gen3")
Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com> Reviewed-by:
Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se> Signed-off-by:
Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho
Chehab <mchehab+samsung@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/media/platform/rcar-vin/rcar-core.c (diff)
Commit e5d1f1c0148de0d484941a661cb2f99534be4b1f by gregkh
media: s5p-jpeg: Check for fmt_ver_flag when doing fmt enumeration
[ Upstream commit 49710c32cd9d6626a77c9f5f978a5f58cb536b35 ]
Previously when doing format enumeration, it was returning all
formats supported by driver, even if they're not supported by hw. Add
missing check for fmt_ver_flag, so it'll be fixed and only those
supported by hw will be returned. Similar thing is already done
in s5p_jpeg_find_format.
It was found by using v4l2-compliance tool and checking result
of VIDIOC_ENUM_FMT/FRAMESIZES/FRAMEINTERVALS test and using v4l2-ctl to
get list of all supported formats.
Tested on s5pv210-galaxys (Samsung i9000 phone).
Fixes: bb677f3ac434 ("[media] Exynos4 JPEG codec v4l2 driver")
Signed-off-by: Pawe? Chmiel <pawel.mikolaj.chmiel@gmail.com>
Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
[hverkuil-cisco@xs4all.nl: fix a few alignment issues] Signed-off-by:
Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifieddrivers/media/platform/s5p-jpeg/jpeg-core.c (diff)
Commit a43ea8ca186574f871c79f05fa7d04fad173d731 by gregkh
PCI: pciehp: Assign ctrl->slot_ctrl before writing it to hardware
[ Upstream commit 25bd879ec16ad3b83a5b1c3f16faa55e696bfccb ]
Shameerali reported that running v4.20-rc1 as QEMU guest, the PCIe
hotplug port times out during boot:
  pciehp 0000:00:01.0:pcie004: Timeout on hotplug command 0x03f1 (issued
1016 msec ago)
pciehp 0000:00:01.0:pcie004: Timeout on hotplug command 0x03f1 (issued
1024 msec ago)
pciehp 0000:00:01.0:pcie004: Failed to check link status
pciehp 0000:00:01.0:pcie004: Timeout on hotplug command 0x02f1 (issued
2520 msec ago)
The issue was bisected down to commit 720d6a671a6e ("PCI: pciehp: Do not
handle events if interrupts are masked") and was further analyzed by the
reporter to be caused by the fact that pciehp first updates the hardware
and only then cache the ctrl->slot_ctrl in pcie_do_write_cmd().  If the
interrupt happens before we cache the value, pciehp_isr() reads value 0
and decides that the interrupt was not meant for it causing the above
timeout to trigger.
Fix by moving ctrl->slot_ctrl assignment to happen before it is written
to the hardware.
Fixes: 720d6a671a6e ("PCI: pciehp: Do not handle events if interrupts
are masked") Link:
https://lore.kernel.org/linux-pci/5FC3163CFD30C246ABAA99954A238FA8387DD344@FRAEML521-MBX.china.huawei.com
Reported-by: Shameerali Kolothum Thodi
<shameerali.kolothum.thodi@huawei.com> Signed-off-by: Mika Westerberg
<mika.westerberg@linux.intel.com> Signed-off-by: Bjorn Helgaas
<bhelgaas@google.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/pci/hotplug/pciehp_hpc.c (diff)
Commit e78d5e16f1d6ea80c67c0eb1631f86add4896c26 by gregkh
audit: hand taken context to audit_kill_trees for syscall logging
[ Upstream commit 9e36a5d49c3a6fc4a2e0ba2dc11b27c4a8ae6303 ]
Since the context is derived from the task parameter handed to
__audit_free(), hand the context to audit_kill_trees() so it can be used
to associate with a syscall record.  This requires adding the context
parameter to kill_rules() rather than using the current audit_context.
The callers of trim_marked() and evict_chunk() still have their context.
The EOE record was being issued prior to the pruning of the killed_tree
list.
Move the kill_trees call before the audit_log_exit call in
__audit_free() and __audit_syscall_exit() so that any pruned trees
CONFIG_CHANGE records are included with the associated syscall event by
the user library due to the EOE record flagging the end of the event.
See: https://github.com/linux-audit/audit-kernel/issues/50 See:
https://github.com/linux-audit/audit-kernel/issues/59
Signed-off-by: Richard Guy Briggs <rgb@redhat.com>
[PM: fixed merge fuzz in kernel/audit_tree.c] Signed-off-by: Paul Moore
<paul@paul-moore.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedkernel/auditsc.c (diff)
The file was modifiedkernel/audit_tree.c (diff)
The file was modifiedkernel/audit.h (diff)
Commit 1048bfd8bf67f889efd67090fdf08489a835a06b by gregkh
regulator: act8865: Fix act8600_sudcdc_voltage_ranges setting
[ Upstream commit f01a7beb6791f1c419424c1a6958b7d0a289c974 ]
The act8600_sudcdc_voltage_ranges setting does not match the datasheet.
The problems in below entry:
REGULATOR_LINEAR_RANGE(19000000, 191, 255, 400000),
1. The off-by-one min_sel causes wrong volatage calculation.
  The min_sel should be 192. 2. According to the datasheet[1] Table 7.
(on page 43):
  The selector 248 (0b11111000) ~ 255 (0b11111111) are 41.400V.
Also fix off-by-one for ACT8600_SUDCDC_VOLTAGE_NUM.
[1] https://active-semi.com/wp-content/uploads/ACT8600_Datasheet.pdf
Fixes: df3a950e4e73 ("regulator: act8865: Add act8600 support")
Signed-off-by: Axel Lin <axel.lin@ingics.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/regulator/act8865-regulator.c (diff)
Commit 778c82db727adb780bbfcbc303149bd7b764194c by gregkh
pinctrl: meson: meson8b: add the eth_rxd2 and eth_rxd3 pins
[ Upstream commit 6daae00243e622dd3feec7965bfe421ad6dd317e ]
Gigabit Ethernet requires the Ethernet TXD0..3 and RXD0..3 data lines.
Add the missing eth_rxd2 and eth_rxd3 definitions so we don't have to
rely on the bootloader to set them up correctly.
The vendor u-boot sources for Odroid-C1 use the following Ethernet
pinmux configuration:
SET_CBUS_REG_MASK(PERIPHS_PIN_MUX_6, 0x3f4f);
SET_CBUS_REG_MASK(PERIPHS_PIN_MUX_7, 0xf00000); This translates to the
following pin groups in the mainline kernel:
- register 6 bit  0: eth_rxd1 (DIF_0_P)
- register 6 bit  1: eth_rxd0 (DIF_0_N)
- register 6 bit  2: eth_rx_dv (DIF_1_P)
- register 6 bit  3: eth_rx_clk (DIF_1_N)
- register 6 bit  6: eth_tx_en (DIF_3_P)
- register 6 bit  8: eth_ref_clk (DIF_3_N)
- register 6 bit  9: eth_mdc (DIF_4_P)
- register 6 bit 10: eth_mdio_en (DIF_4_N)
- register 6 bit 11: eth_tx_clk (GPIOH_9)
- register 6 bit 12: eth_txd2 (GPIOH_8)
- register 6 bit 13: eth_txd3 (GPIOH_7)
- register 7 bit 20: eth_txd0_0 (GPIOH_6)
- register 7 bit 21: eth_txd1_0 (GPIOH_5)
- register 7 bit 22: eth_rxd3 (DIF_2_P)
- register 7 bit 23: eth_rxd2 (DIF_2_N)
All functions except eth_rxd2 and eth_rxd3 are already supported by the
pinctrl-meson8b driver.
Suggested-by: Jianxin Pan <jianxin.pan@amlogic.com> Signed-off-by:
Martin Blumenstingl <martin.blumenstingl@googlemail.com> Reviewed-by:
Kevin Hilman <khilman@baylibre.com> Tested-by: Emiliano Ingrassia
<ingrassia@epigenesys.com> Reviewed-by: Emiliano Ingrassia
<ingrassia@epigenesys.com> Signed-off-by: Linus Walleij
<linus.walleij@linaro.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/pinctrl/meson/pinctrl-meson8b.c (diff)
Commit bfb59eabe2c940c6869f128200f2047d46215845 by gregkh
drm: Auto-set allow_fb_modifiers when given modifiers at plane init
[ Upstream commit 890880ddfdbe256083170866e49c87618b706ac7 ]
When drivers pass non-empty lists of modifiers for initializing their
planes, we can infer that they allow framebuffer modifiers and set the
driver's allow_fb_modifiers mode config element.
In case the allow_fb_modifiers element was not set (some drivers tend to
set them after registering planes), the modifiers will still be
registered but won't be available to userspace unless the flag is set
later. However in that case, the IN_FORMATS blob won't be created.
In order to avoid this case and generally reduce the trouble associated
with the flag, always set allow_fb_modifiers when a non-empty list of
format modifiers is passed at plane init.
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paul
Kocialkowski <paul.kocialkowski@bootlin.com> Signed-off-by: Maxime
Ripard <maxime.ripard@bootlin.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190104085610.5829-1-paul.kocialkowski@bootlin.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/drm_plane.c (diff)
Commit 16d4d75d8b6e5262ca65710620f421975f889555 by gregkh
drm/nouveau: Stop using drm_crtc_force_disable
[ Upstream commit 934c5b32a5e43d8de2ab4f1566f91d7c3bf8cb64 ]
The correct way for legacy drivers to update properties that need to do
a full modeset, is to do a full modeset.
Note that we don't need to call the drm_mode_config_internal helper
because we're not changing any of the refcounted paramters.
v2: Fixup error handling (Ville). Since the old code didn't bother I
decided to just delete it instead of adding even more code for just
error handling.
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Alex
Deucher <alexander.deucher@amd.com> (v1) Cc: Sean Paul
<seanpaul@chromium.org> Signed-off-by: Daniel Vetter
<daniel.vetter@intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20181217194303.14397-2-daniel.vetter@ffwll.ch
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/nouveau/dispnv04/tvnv17.c (diff)
Commit 993f96415a72731d8f3b7211dee44cefc47d44ff by gregkh
x86/build: Specify elf_i386 linker emulation explicitly for i386 objects
[ Upstream commit 927185c124d62a9a4d35878d7f6d432a166b74e3 ]
The kernel uses the OUTPUT_FORMAT linker script command in it's linker
scripts. Most of the time, the -m option is passed to the linker with
correct architecture, but sometimes (at least for x86_64) the -m option
contradicts the OUTPUT_FORMAT directive.
Specifically, arch/x86/boot and arch/x86/realmode/rm produce i386 object
files, but are linked with the -m elf_x86_64 linker flag when building
for x86_64.
The GNU linker manpage doesn't explicitly state any tie-breakers between
-m and OUTPUT_FORMAT. But with BFD and Gold linkers, OUTPUT_FORMAT
overrides the emulation value specified with the -m option.
LLVM lld has a different behavior, however. When supplied with
contradicting -m and OUTPUT_FORMAT values it fails with the following
error message:
  ld.lld: error: arch/x86/realmode/rm/header.o is incompatible with
elf_x86_64
Therefore, just add the correct -m after the incorrect one (it overrides
it), so the linker invocation looks like this:
  ld -m elf_x86_64 -z max-page-size=0x200000 -m elf_i386 --emit-relocs
-T \
   realmode.lds header.o trampoline_64.o stack.o reboot.o -o
realmode.elf
This is not a functional change for GNU ld, because (although not
explicitly documented) OUTPUT_FORMAT overrides -m EMULATION.
Tested by building x86_64 kernel with GNU gcc/ld toolchain and booting
it in QEMU.
[ bp: massage and clarify text. ]
Suggested-by: Dmitry Golovin <dima@golovin.in> Signed-off-by: George
Rimar <grimar@accesssoftek.com> Signed-off-by: Tri Vo
<trong@android.com> Signed-off-by: Borislav Petkov <bp@suse.de>
Tested-by: Tri Vo <trong@android.com> Tested-by: Nick Desaulniers
<ndesaulniers@google.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo
Molnar <mingo@redhat.com> Cc: Michael Matz <matz@suse.de> Cc: Thomas
Gleixner <tglx@linutronix.de> Cc: morbo@google.com Cc:
ndesaulniers@google.com Cc: ruiu@google.com Cc: x86-ml <x86@kernel.org>
Link: https://lkml.kernel.org/r/20190111201012.71210-1-trong@android.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedarch/x86/boot/Makefile (diff)
The file was modifiedarch/x86/realmode/rm/Makefile (diff)
Commit f836093a2eeb48e565d2484523b5aceda072da72 by gregkh
selinux: do not override context on context mounts
[ Upstream commit 53e0c2aa9a59a48e3798ef193d573ade85aa80f5 ]
Ignore all selinux_inode_notifysecctx() calls on mounts with SBLABEL_MNT
flag unset. This is achived by returning -EOPNOTSUPP for this case in
selinux_inode_setsecurtity() (because that function should not be called
in such case anyway) and translating this error to 0 in
selinux_inode_notifysecctx().
This fixes behavior of kernfs-based filesystems when mounted with the
'context=' option. Before this patch, if a node's context had been
explicitly set to a non-default value and later the filesystem has been
remounted with the 'context=' option, then this node would show up as
having the manually-set context and not the mount-specified one.
Steps to reproduce:
   # mount -t cgroup2 cgroup2 /sys/fs/cgroup/unified
   # chcon unconfined_u:object_r:user_home_t:s0
/sys/fs/cgroup/unified/cgroup.stat
   # ls -lZ /sys/fs/cgroup/unified
   total 0
   -r--r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13
10:41 cgroup.controllers
   -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13
10:41 cgroup.max.depth
   -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13
10:41 cgroup.max.descendants
   -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13
10:41 cgroup.procs
   -r--r--r--. 1 root root unconfined_u:object_r:user_home_t:s0 0 Dec 13
10:41 cgroup.stat
   -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13
10:41 cgroup.subtree_control
   -rw-r--r--. 1 root root system_u:object_r:cgroup_t:s0        0 Dec 13
10:41 cgroup.threads
   # umount /sys/fs/cgroup/unified
   # mount -o context=system_u:object_r:tmpfs_t:s0 -t cgroup2 cgroup2
/sys/fs/cgroup/unified
Result before:
   # ls -lZ /sys/fs/cgroup/unified
   total 0
   -r--r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13
10:41 cgroup.controllers
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13
10:41 cgroup.max.depth
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13
10:41 cgroup.max.descendants
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13
10:41 cgroup.procs
   -r--r--r--. 1 root root unconfined_u:object_r:user_home_t:s0 0 Dec 13
10:41 cgroup.stat
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13
10:41 cgroup.subtree_control
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0         0 Dec 13
10:41 cgroup.threads
Result after:
   # ls -lZ /sys/fs/cgroup/unified
   total 0
   -r--r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41
cgroup.controllers
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41
cgroup.max.depth
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41
cgroup.max.descendants
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41
cgroup.procs
   -r--r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41
cgroup.stat
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41
cgroup.subtree_control
   -rw-r--r--. 1 root root system_u:object_r:tmpfs_t:s0 0 Dec 13 10:41
cgroup.threads
Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com> Reviewed-by:
Stephen Smalley <sds@tycho.nsa.gov> Signed-off-by: Paul Moore
<paul@paul-moore.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedsecurity/selinux/hooks.c (diff)
Commit ab79dc3ef0244c9b3d712d0cef17b74c363d6069 by gregkh
brcmfmac: Use firmware_request_nowarn for the clm_blob
[ Upstream commit 4ad0be160544ffbdafb7cec39bb8e6dd0a97317a ]
The linux-firmware brcmfmac firmware files contain an embedded table
with per country allowed channels and strength info.
For recent hardware these versions of the firmware are specially build
for linux-firmware, the firmware files directly available from Cypress
rely on a separate clm_blob file for this info.
For some unknown reason Cypress refuses to provide the standard firmware
files + clm_blob files it uses elsewhere for inclusion into
linux-firmware, instead relying on these special builds with the
clm_blob info embedded. This means that the linux-firmware firmware
versions often lag behind, but I digress.
The brcmfmac driver does support the separate clm_blob file and always
tries to load this. Currently we use request_firmware for this. This
means that on any standard install, using the standard combo of
linux-kernel + linux-firmware, we will get a warning:
"Direct firmware load for ... failed with error -2"
On top of this, brcmfmac itself prints: "no clm_blob available (err=-2),
device may have limited channels available".
This commit switches to firmware_request_nowarn, fixing almost any
brcmfmac device logging the warning (it leaves the brcmfmac info message
in place).
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Kalle
Valo <kvalo@codeaurora.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c (diff)
Commit 38af5462fa5179ede1f63b88d3c2e8201392cca1 by gregkh
wlcore: Fix memory leak in case wl12xx_fetch_firmware failure
[ Upstream commit ba2ffc96321c8433606ceeb85c9e722b8113e5a7 ]
Release fw_status, raw_fw_status, and tx_res_if when
wl12xx_fetch_firmware failed instead of meaningless goto out to avoid
the following memory leak reports(Only the last one listed):
unreferenced object 0xc28a9a00 (size 512):
comm "kworker/0:4", pid 31298, jiffies 2783204 (age 203.290s)
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:
   [<6624adab>] kmemleak_alloc+0x40/0x74
   [<500ddb31>] kmem_cache_alloc_trace+0x1ac/0x270
   [<db4d731d>] wl12xx_chip_wakeup+0xc4/0x1fc [wlcore]
   [<76c5db53>] wl1271_op_add_interface+0x4a4/0x8f4 [wlcore]
   [<cbf30777>] drv_add_interface+0xa4/0x1a0 [mac80211]
   [<65bac325>] ieee80211_reconfig+0x9c0/0x1644 [mac80211]
   [<2817c80e>] ieee80211_restart_work+0x90/0xc8 [mac80211]
   [<7e1d425a>] process_one_work+0x284/0x42c
   [<55f9432e>] worker_thread+0x2fc/0x48c
   [<abb582c6>] kthread+0x148/0x160
   [<63144b13>] ret_from_fork+0x14/0x2c
   [< (null)>] (null)
   [<1f6e7715>] 0xffffffff
Signed-off-by: Zumeng Chen <zumeng.chen@gmail.com> Signed-off-by: Kalle
Valo <kvalo@codeaurora.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/wireless/ti/wlcore/main.c (diff)
Commit c8a8dd1d85ca715ec65169feac54a7a06b8d2a29 by gregkh
x86/build: Mark per-CPU symbols as absolute explicitly for LLD
[ Upstream commit d071ae09a4a1414c1433d5ae9908959a7325b0ad ]
Accessing per-CPU variables is done by finding the offset of the
variable in the per-CPU block and adding it to the address of the
respective CPU's block.
Section 3.10.8 of ld.bfd's documentation states:
  For expressions involving numbers, relative addresses and absolute
addresses, ld follows these rules to evaluate terms:
  Other binary operations, that is, between two relative addresses
not in the same section, or between a relative address and an
absolute address, first convert any non-absolute term to an
absolute address before applying the operator."
Note that LLVM's linker does not adhere to the GNU ld's implementation
and as such requires implicitly-absolute terms to be explicitly marked
as absolute in the linker script. If not, it fails currently with:
  ld.lld: error: ./arch/x86/kernel/vmlinux.lds:153: at least one side of
the expression must be absolute
ld.lld: error: ./arch/x86/kernel/vmlinux.lds:154: at least one side of
the expression must be absolute
Makefile:1040: recipe for target 'vmlinux' failed
This is not a functional change for ld.bfd which converts the term to an
absolute symbol anyways as specified above.
Based on a previous submission by Tri Vo <trong@android.com>.
Reported-by: Dmitry Golovin <dima@golovin.in> Signed-off-by: Rafael
Ávila de Espíndola <rafael@espindo.la>
[ Update commit message per Boris' and Michael's suggestions. ]
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
[ Massage commit message more, fix typos. ] Signed-off-by: Borislav
Petkov <bp@suse.de> Tested-by: Dmitry Golovin <dima@golovin.in> Cc: "H.
Peter Anvin" <hpa@zytor.com> Cc: Andy Lutomirski <luto@kernel.org> Cc:
Brijesh Singh <brijesh.singh@amd.com> Cc: Cao Jin
<caoj.fnst@cn.fujitsu.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Joerg
Roedel <jroedel@suse.de> Cc: Masahiro Yamada
<yamada.masahiro@socionext.com> Cc: Masami Hiramatsu
<mhiramat@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tri
Vo <trong@android.com> Cc: dima@golovin.in Cc: morbo@google.com Cc:
x86-ml <x86@kernel.org> Link:
https://lkml.kernel.org/r/20181219190145.252035-1-ndesaulniers@google.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifiedarch/x86/kernel/vmlinux.lds.S (diff)
Commit a644d2d28baf8472368903b28823cf85c9a13a1d by gregkh
drm/fb-helper: fix leaks in error path of drm_fb_helper_fbdev_setup
[ Upstream commit 00eb5b0da8d27b3c944bfc959c3344d665caae26 ]
After drm_fb_helper_fbdev_setup calls drm_fb_helper_init,
"dev->fb_helper" will be initialized (and thus drm_fb_helper_fini will
have some effect). After that, drm_fb_helper_initial_config is called
which may call the "fb_probe" driver callback.
This driver callback may call drm_fb_helper_defio_init (as is done by
drm_fb_helper_generic_probe) or set a framebuffer (as is done by bochs)
as documented. These are normally cleaned up on exit by
drm_fb_helper_fbdev_teardown which also calls drm_fb_helper_fini.
If an error occurs after "fb_probe", but before setup is complete, then
calling just drm_fb_helper_fini will leak resources. This was triggered
by df2052cc922 ("bochs: convert to drm_fb_helper_fbdev_setup/teardown"):
    [   50.008030] bochsdrmfb: enable CONFIG_FB_LITTLE_ENDIAN to support
this framebuffer
   [   50.009436] bochs-drm 0000:00:02.0:
[drm:drm_fb_helper_fbdev_setup] *ERROR* fbdev: Failed to set
configuration (ret=-38)
   [   50.011456] [drm] Initialized bochs-drm 1.0.0 20130925 for
0000:00:02.0 on minor 2
   [   50.013604] WARNING: CPU: 1 PID: 1 at
drivers/gpu/drm/drm_mode_config.c:477
drm_mode_config_cleanup+0x280/0x2a0
   [   50.016175] CPU: 1 PID: 1 Comm: swapper/0 Tainted: G             
T 4.20.0-rc7 #1
   [   50.017732] EIP: drm_mode_config_cleanup+0x280/0x2a0
   ...
   [   50.023155] Call Trace:
   [   50.023155]  ? bochs_kms_fini+0x1e/0x30
   [   50.023155]  ? bochs_unload+0x18/0x40
This can be reproduced with QEMU and CONFIG_FB_LITTLE_ENDIAN=n.
Link: https://lkml.kernel.org/r/20181221083226.GI23332@shao2-debian
Link: https://lkml.kernel.org/r/20181223004315.GA11455@al Fixes:
8741216396b2 ("drm/fb-helper: Add drm_fb_helper_fbdev_setup/teardown()")
Reported-by: kernel test robot <rong.a.chen@intel.com> Cc: Noralf
Trønnes <noralf@tronnes.org> Signed-off-by: Peter Wu
<peter@lekensteyn.nl> Reviewed-by: Noralf Trønnes <noralf@tronnes.org>
Signed-off-by: Noralf Trønnes <noralf@tronnes.org> Link:
https://patchwork.freedesktop.org/patch/msgid/20181223005507.28328-1-peter@lekensteyn.nl
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/drm_fb_helper.c (diff)
Commit 9b0f430450cf230e736bc40f95bf34fbdb99cead by gregkh
clk: meson: clean-up clock registration
[ Upstream commit 8d9981efbcab066d17af4d3c85c169200f6f78df ]
Order, ids and size  between the table of regmap clocks and the onecell
data table could be different.
Set regmap pointer in all the regmap clocks before starting the
registration using the onecell data, to make sure we don't get into an
incoherent situation.
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> Acked-by: Neil
Armstrong <narmstrong@baylibre.com> Signed-off-by: Neil Armstrong
<narmstrong@baylibre.com> Link:
https://lkml.kernel.org/r/20181221160239.26265-3-jbrunet@baylibre.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/clk/meson/meson-aoclk.c (diff)
Commit 25fb6c323b55dbb7ec9227a174c36a13697bcb5d by gregkh
ARM: shmobile: Fix R-Car Gen2 regulator quirk
[ Upstream commit 5347a0203709d5039a74d7c94e23519eee478094 ]
The quirk code currently detects all compatible I2C chips with a shared
IRQ line on all I2C busses, adds them into a list, and registers a bus
notifier. For every chip for which the bus notifier triggers, the quirk
code performs I2C transfer on that I2C bus for all addresses in the
list. The problem is that this may generate transfers to non-existing
chips on systems with multiple I2C busses.
This patch adds a check to verify that the I2C bus to which the chip
with shared IRQ is attached to matches the I2C bus of the chip which
triggered the bus notifier and only starts the I2C transfer if they
match.
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Tested-by:
Nguyen Viet Dung <dung.nguyen.aj@renesas.com> Signed-off-by: Simon
Horman <horms+renesas@verge.net.au> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedarch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c (diff)
Commit e84e0a8c3f22dba823b33cfd38c65c3fe6e35dd5 by gregkh
clk: rockchip: fix frac settings of GPLL clock for rk3328
[ Upstream commit a0e447b0c50240a90ab84b7126b3c06b0bab4adc ]
This patch fixes settings of GPLL frequency in fractional mode for
rk3328. In this mode, FOUTVCO is calcurated by following formula:
FOUTVCO = FREF * FBDIV / REFDIV + ((FREF * FRAC / REFDIV) >> 24)
The problem is in FREF * FRAC >> 24 term. This result always lacks one
from target value is specified by rate member. For example first itme of
rk3328_pll_frac_rate originally has
- rate  : 1016064000
- refdiv: 3
- fbdiv : 127
- frac  : 134217
- FREF * FBDIV / REFDIV        = 1016000000
- (FREF * FRAC / REFDIV) >> 24 = 63999 Thus calculated rate is
1016063999. It seems wrong.
If frac has 134218 (it is increased 1 from original value), second term
is 64000. All other items have same situation. So this patch adds 1 to
frac member in all items of rk3328_pll_frac_rate.
Signed-off-by: Katsuhiro Suzuki <katsuhiro@katsuster.net> Acked-by:
Elaine Zhang <zhangqing@rock-chips.com> Signed-off-by: Heiko Stuebner
<heiko@sntech.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/clk/rockchip/clk-rk3328.c (diff)
Commit 2bece1d313aa1c05e10f827b2c797589fdc985ec by gregkh
dmaengine: tegra: avoid overflow of byte tracking
[ Upstream commit e486df39305864604b7e25f2a95d51039517ac57 ]
The dma_desc->bytes_transferred counter tracks the number of bytes moved
by the DMA channel. This is then used to calculate the information
passed back in the in the tegra_dma_tx_status callback, which is usually
fine.
When the DMA channel is configured as continous, then the
bytes_transferred counter will increase over time and eventually
overflow to become negative so the residue count will become invalid and
the ALSA sound-dma code will report invalid hardware pointer values to
the application. This results in some users becoming confused about the
playout position and putting audio data in the wrong place.
To fix this issue, always ensure the bytes_transferred field is modulo
the size of the request. We only do this for the case of the cyclic
transfer done ISR as anyone attempting to move 2GiB of DMA data in one
transfer is unlikely.
Note, we don't fix the issue that we should /never/ transfer a negative
number of bytes so we could make those fields unsigned.
Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Ben Dooks
<ben.dooks@codethink.co.uk> Acked-by: Jon Hunter <jonathanh@nvidia.com>
Signed-off-by: Vinod Koul <vkoul@kernel.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/dma/tegra20-apb-dma.c (diff)
Commit 1ad62489b25aa992113813447657ef5192a93b96 by gregkh
staging: iio: adt7316: fix dac_bits assignment
[ Upstream commit e9de475723de5bf207a5b7b88bdca863393e42c8 ]
The value of dac_bits is used in adt7316_show_DAC() and
adt7316_store_DAC(), and it should be either 8, 10, or 12 bits depending
on the device in use. The driver currently only assigns a value to
dac_bits in adt7316_store_da_high_resolution(). The purpose of the dac
high resolution option is not to change dac resolution for normal
operation. Instead, it is specific to an optional feature where one or
two of the four dacs can be set to output voltage proportional to
temperature. If the user chooses to set dac a and/or dac b to output
voltage proportional to temperature, the da_high_resolution attribute
can optionally be enabled to use 10 bit resolution rather than the
default 8 bits. This is only available on the 10 and 12 bit dac devices.
If the user attempts to read or write dacs a or b under these settings,
the driver's current behaviour is to return an error. Dacs c and d
continue to operate normally under these conditions. With the above in
mind, remove the dac_bits assignments from this function since the value
of dac_bits as used in the driver is not dependent on this dac high
resolution option.
Since the dac_bits assignments discussed above are currently the only
ones in this driver, the default value of dac_bits is 0. This results in
incorrect calculations when the dacs are read or written in
adt7316_show_DAC() and adt7316_store_DAC(). To correct this, assign a
value to dac_bits in adt7316_probe() to ensure correct operation as soon
as the device is registered and available to userspace.
Fixes: 35f6b6b86ede ("staging: iio: new ADT7316/7/8 and ADT7516/7/9
driver") Signed-off-by: Jeremy Fertic <jeremyfertic@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/staging/iio/addac/adt7316.c (diff)
Commit 45040e92500cb70bcb906dc6aa0427166097871c by gregkh
Input: soc_button_array - fix mapping of the 5th GPIO in a PNP0C40
device
[ Upstream commit e9eb788f9442d1b5d93efdb30c3be071ce8a22b1 ]
The Microsoft documenation for the PNP0C40 device aka the
"Windows-compatible button array" describes the 5th GpioInt listed in
the resources as: '5. Interrupt corresponding to the "Rotation Lock"
button, if supported'.
Notice this describes the 5th entry as a button while we sofar have been
mapping it to EV_SW, SW_ROTATE_LOCK. On my Point of View TAB P1006W-232
which actually comes with a rotation-lock button, the button indeed is a
button and not a slider/switch. An image search for other Windows
tablets has found 2 more models with a rotation-lock button and on both
of those it too is a push-button and not a slider/switch.
Further evidence can be found in the HUT extension HUTRR52 from
Microsoft which adds rotation lock support to the HUT, which describes 2
different usages: "0xC9 System Display Rotation Lock Button" and
"0xCA System Display Rotation Lock Slider Switch" note that switch is
seen as a separate thing here and the non switch wording is an exact
match for the "Windows-compatible button array" spec wording.
TL;DR: our current mapping of the 5th GPIO to SW_ROTATE_LOCK is wrong
because the 5th GPIO is for a push-button not a switch.
This commit fixes this by maping the 5th GPIO to KEY_ROTATE_LOCK_TOGGLE.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Dmitry
Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/input/misc/soc_button_array.c (diff)
Commit 0a2e1a5b583b8564834cdbc161cd1614cc834e59 by gregkh
ASoC: simple-card-utils: check "reg" property on
asoc_simple_card_get_dai_id()
[ Upstream commit a0c426fe143328760c9fd565cd203a37a7b4fde8 ]
We will get DAI ID from "reg" property if it has on DT, otherwise get it
by counting port/endpoint.
But in below case, we need to get DAI ID = 0 via port reg = <0>, but
current implementation returns ID = 1, because it can't judge ID = 0 was
from "non reg" or "reg = <0>". Thus, it will count port/endpoint number
as "non reg" case.
of_graph_parse_endpoint() implementation itself is not a problem, but
because asoc_simple_card_get_dai_id() need to count port/endpoint number
when "non reg" case, it need to know ID = 0 was from
"non reg" or "reg = <0>". This patch fix this issue.
port {
reg = <0>;
xxxx: endpoint@0 {
};
=> xxxx: endpoint@1 {
};
};
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Sasha
Levin <sashal@kernel.org>
The file was modifiedsound/soc/generic/simple-card-utils.c (diff)
Commit 8826838f43fe879eba8df230e93e2f43ab0b3081 by gregkh
drm: Reorder set_property_atomic to avoid returning with an active
ww_ctx
[ Upstream commit 227ad6d957898a88b1746e30234ece64d305f066 ]
Delay the drm_modeset_acquire_init() until after we check for an
allocation failure so that we can return immediately upon error without
having to unwind.
WARNING: lock held when returning to user space! 4.20.0+ #174 Not
tainted
------------------------------------------------ syz-executor556/8153 is
leaving the kernel with locks still held! 1 lock held by
syz-executor556/8153:
#0: 000000005100c85c (crtc_ww_class_acquire){+.+.}, at:
set_property_atomic+0xb3/0x330 drivers/gpu/drm/drm_mode_object.c:462
Reported-by: syzbot+6ea337c427f5083ebdf2@syzkaller.appspotmail.com
Fixes: 144a7999d633 ("drm: Handle properties in the core for atomic
drivers") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc:
Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Maarten Lankhorst
<maarten.lankhorst@linux.intel.com> Cc: Sean Paul <sean@poorly.run> Cc:
David Airlie <airlied@linux.ie> Cc: <stable@vger.kernel.org> # v4.14+
Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20181230122842.21917-1-chris@chris-wilson.co.uk
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/drm_mode_object.c (diff)
Commit 36b39631cc851b6b90b22a3aa4a09ee79b0718de by gregkh
drm/dp/mst: Configure no_stop_bit correctly for remote i2c xfers
[ Upstream commit c978ae9bde582e82a04c63a4071701691dd8b35c ]
We aren't supposed to force a stop+start between every i2c msg when
performing multi message transfers. This should eg. cause the DDC
segment address to be reset back to 0 between writing the segment
address and reading the actual EDID extension block.
To quote the E-DDC spec:
"... this standard requires that the segment pointer be
reset to 00h when a NO ACK or a STOP condition is received."
Since we're going to touch this might as well consult the I2C_M_STOP
flag to determine whether we want to force the stop or not.
Cc: Brian Vincent <brainn@gmail.com> References:
https://bugs.freedesktop.org/show_bug.cgi?id=108081 Signed-off-by: Ville
Syrjälä <ville.syrjala@linux.intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20180928180403.22499-1-ville.syrjala@linux.intel.com
Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/gpu/drm/drm_dp_mst_topology.c (diff)
Commit a84b7c68966a91f937d609786fd8968dc2b5f085 by gregkh
net: stmmac: Avoid one more sometimes uninitialized Clang warning
[ Upstream commit 1f5d861f7fefa971b2c6e766f77932c86419a319 ]
When building with -Wsometimes-uninitialized, Clang warns:
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c:111:2: error: variable
'ns' is used uninitialized whenever 'if' condition is false
[-Werror,-Wsometimes-uninitialized]
drivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c:111:2: error: variable
'ns' is used uninitialized whenever '&&' condition is false
[-Werror,-Wsometimes-uninitialized]
Clang is concerned with the use of stmmac_do_void_callback (which
stmmac_get_systime wraps), as it may fail to initialize these values if
the if condition was ever false (meaning the callback doesn't exist).
It's not wrong because the callback is what initializes ns. While it's
unlikely that the callback is going to disappear at some point and make
that condition false, we can easily avoid this warning by zero
initializing the variable.
Link: https://github.com/ClangBuiltLinux/linux/issues/384 Fixes:
df103170854e ("net: stmmac: Avoid sometimes uninitialized Clang
warnings") Suggested-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Nathan Chancellor <natechancellor@gmail.com> Reviewed-by:
Nick Desaulniers <ndesaulniers@google.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/stmmac_ptp.c (diff)
Commit ae42fc868cd5fca29f6f31487dc7d016c923f8fa by gregkh
appletalk: Fix compile regression
[ Upstream commit 27da0d2ef998e222a876c0cec72aa7829a626266 ]
A bugfix just broke compilation of appletalk when CONFIG_SYSCTL is
disabled:
In file included from net/appletalk/ddp.c:65: net/appletalk/ddp.c: In
function 'atalk_init': include/linux/atalk.h:164:34: error: expected
expression before 'do'
#define atalk_register_sysctl()  do { } while(0)
                                 ^~ net/appletalk/ddp.c:1934:7: note: in
expansion of macro 'atalk_register_sysctl'
rc = atalk_register_sysctl();
This is easier to avoid by using conventional inline functions as stubs
rather than macros. The header already has inline functions for other
purposes, so I'm changing over all the macros for consistency.
Fixes: 6377f787aeb9 ("appletalk: Fix use-after-free in atalk_proc_exit")
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedinclude/linux/atalk.h (diff)
Commit 3e033b1b435a47b16d63ff6bd5159f699b8bf173 by gregkh
gpio: of: Restrict enable-gpio quirk to regulator-gpio
[ Upstream commit 692ef26e72fcce0c1e73c41683fd3512f3719d55 ]
Commit 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to
enable-gpios") breaks the device tree ABI specified in the device tree
bindings for fixed regulators (compatible "regulator-fixed"). According
to these bindings the polarity of the GPIO is exclusively controlled by
the presence or absence of the enable-active-high property. As such the
polarity quirk implemented in of_gpio_flags_quirks() must be applied to
the GPIO specified for fixed regulators.
However, commit 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only
to enable-gpios") restricted the quirk to the enable-gpios property for
fixed regulators as well, whereas according to the commit message itself
it should only apply to "regulator-gpio" compatible device tree nodes.
Fix this by actually implementing what the offending commit intended,
which is to ensure that the quirk is applied to the GPIO specified by
the "enable-gpio" property for the "regulator-gpio" bindings only.
This fixes a regression on Jetson TX1 where the fixed regulator for the
HDMI +5V pin relies on the flags quirk for the proper polarity.
Fixes: 0e7d6f940164 ("gpio: of: Apply regulator-gpio quirk only to
enable-gpios") Signed-off-by: Thierry Reding <treding@nvidia.com>
Tested-by: Marek Vasut <marek.vasut@gmail.com> Signed-off-by: Linus
Walleij <linus.walleij@linaro.org> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/gpio/gpiolib-of.c (diff)
Commit ae050638bc97083f43e13186087626754d658cb9 by gregkh
ACPI / video: Extend chassis-type detection with a "Lunch Box" check
[ Upstream commit d693c008e3ca04db5916ff72e68ce661888a913b ]
Commit 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true on
Win8-ready _desktops_") introduced chassis type detection, limiting the
lcd_only check for the backlight to devices where the chassis-type
indicates their is no builtin LCD panel.
The purpose of the lcd_only check is to avoid advertising a backlight
interface on desktops, since skylake and newer machines seem to always
have a backlight interface even if there is no LCD panel. The limiting
of this check to desktops only was done to avoid breaking backlight
support on some laptops which do not have the lcd flag set.
The Fujitsu ESPRIMO Q910 which is a compact (NUC like) desktop machine
has a chassis type of 0x10 aka "Lunch Box". Without the lcd_only check
we end up falsely advertising backlight/brightness control on this
device. This commit extend the dmi_is_desktop check to return true for
type 0x10 to fix this.
Fixes: 53fa1f6e8a59 ("ACPI / video: Only default only_lcd to true ...")
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Rafael
J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifieddrivers/acpi/acpi_video.c (diff)
Commit 38d2286e52ea5f06fa5a1692fad36db043456291 by gregkh
bcache: fix potential div-zero error of writeback_rate_p_term_inverse
[ Upstream commit 5b5fd3c94eef69dcfaa8648198e54c92e5687d6d ]
Current code already uses d_strtoul_nonzero() to convert input string to
an unsigned integer, to make sure writeback_rate_p_term_inverse won't be
zero value. But overflow may happen when converting input string to an
unsigned integer value by d_strtoul_nonzero(), then
dc->writeback_rate_p_term_inverse can still be set to 0 even if the
sysfs file input value is not zero, e.g. 4294967296 (a.k.a UINT_MAX+1).
If dc->writeback_rate_p_term_inverse is set to 0, it might cause a
dev-zero error in following code from __update_writeback_rate(),
int64_t proportional_scaled =
div_s64(error, dc->writeback_rate_p_term_inverse);
This patch replaces d_strtoul_nonzero() by sysfs_strtoul_clamp() and
limit the value range in [1, UINT_MAX]. Then the unsigned integer
overflow and dev-zero error can be avoided.
Signed-off-by: Coly Li <colyli@suse.de> Signed-off-by: Jens Axboe
<axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
The file was modifieddrivers/md/bcache/sysfs.c (diff)
Commit d972d1c0d76da4a04ea9c0a35a3fb853fb141248 by gregkh
kbuild: add workaround for Debian make-kpkg
commit 2b50f7ab63685cd247e32ad321f7338ed130d3d5 upstream.
Since commit 3812b8c5c5d5 ("kbuild: make -r/-R effective in top Makefile
for old Make versions"), make-kpkg is not working.
make-kpkg directly includes the top Makefile of Linux kernel, and
appends some debian_* targets.
  /usr/share/kernel-package/ruleset/kernel_version.mk:
    # Include the kernel makefile
   override dot-config := 1
   include Makefile
   dot-config := 1
I did not know the kernel Makefile was used in that way, and it is hard
to guarantee the behavior when the kernel Makefile is included by
another Makefile from a different project.
It looks like Debian Stretch stopped providing make-kpkg. Maybe it is
obsolete and being replaced with 'make deb-pkg' etc. but still widely
used.
This commit adds a workaround; if the top Makefile is included by
another Makefile, skip sub-make in order to make the main part visible.
'MAKEFLAGS += -rR' does not become effective for GNU Make < 4.0, but
Debian/Ubuntu is already using newer versions.
The effect of this commit:
  Debian 8 (Jessie)  : Fixed
Debian 9 (Stretch) : make-kpkg (kernel-package) is not provided
Ubuntu 14.04 LTS   : NOT Fixed
Ubuntu 16.04 LTS   : Fixed
Ubuntu 18.04 LTS   : Fixed
This commit cannot fix Ubuntu 14.04 because it installs GNU Make 3.81,
but its support will end in Apr 2019, which is before the Linux v5.1
release.
I added warning so that nobody would try to include the top Makefile.
Fixes: 3812b8c5c5d5 ("kbuild: make -r/-R effective in top Makefile for
old Make versions") Reported-by: Liz Zhang <lizzha@microsoft.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Tested-by: Lili Deng <v-lide@microsoft.com> Cc: Manoj Srivastava
<srivasta@debian.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedMakefile (diff)
Commit e73f145543fa6e1ce0b7a9d99c65caa1b422aac9 by gregkh
kbuild: skip sub-make for in-tree build with GNU Make 4.x
commit 688931a5ad4e55ba0c215248ba510cd67bc3afb4 upstream.
Commit 2b50f7ab6368 ("kbuild: add workaround for Debian make-kpkg")
annoyed people who want to wrap the top Makefile with GNUmakefile to
customize it for their use.
On second thought, we do not need to run the sub-make for in-tree build
with Make 4.x because the 'MAKEFLAGS += -rR' issue only happens on GNU
Make 3.x.
With this commit, people will get back their workflow, and the Debian
make-kpkg will still work.
Fixes: 2b50f7ab6368 ("kbuild: add workaround for Debian make-kpkg")
Reported-by: Andreas Schwab <schwab@suse.de> Reported-by: David Howells
<dhowells@redhat.com> Signed-off-by: Masahiro Yamada
<yamada.masahiro@socionext.com> Tested-by: Andreas Schwab
<schwab@suse.de> Tested-by: David Howells <dhowells@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedMakefile (diff)
The file was modifiedMakefile (diff)
Commit 8b22f80358f160f3b122565723c2f84046033b79 by Arthur D.
gpu: pvr: Add PVR GPU driver
Patch-Mainline: not sure Add the SGX PVR driver.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Signed-off-by: Felipe
Balbi <felipe.balbi@nokia.com> Signed-off-by: Topi Pohjolainen
<topi.pohjolainen@nokia.com> Signed-off-by: Ville Syrjälä
<ville.syrjala@nokia.com> Signed-off-by: Mark Underwood
<mark.underwood@imgtec.com> Signed-off-by: Phil Carmody
<ext-phil.2.carmody@nokia.com> Signed-off-by: Tomi Valkeinen
<tomi.valkeinen@nokia.com> Signed-off-by: Sami Kyöstilä
<sami.kyostila@nokia.com> Signed-off-by: Mark Riding
<mark.riding@imgtec.com> Signed-off-by: Janusz Sobczak
<janusz.sobczak@imgtec.com> Signed-off-by: Roger Quadros
<roger.quadros@nokia.com>
The file was addeddrivers/gpu/pvr/bufferclass_example_linux.h
The file was addeddrivers/gpu/pvr/env_data.h
The file was addeddrivers/gpu/pvr/bridged_support.c
The file was addeddrivers/gpu/pvr/mem.c
The file was addeddrivers/gpu/pvr/mmap.c
The file was addeddrivers/gpu/pvr/power.h
The file was addeddrivers/gpu/pvr/ra.h
The file was addeddrivers/gpu/pvr/sgxmmu.h
The file was addeddrivers/gpu/pvr/proc.c
The file was addeddrivers/gpu/pvr/osperproc.c
The file was addeddrivers/gpu/pvr/pvr_bridge_k.c
The file was addeddrivers/gpu/pvr/proc.h
The file was addeddrivers/gpu/pvr/pdump_km.h
The file was addeddrivers/gpu/pvr/queue.c
The file was addeddrivers/gpu/pvr/sgxinit.c
The file was addeddrivers/gpu/pvr/devicemem.c
The file was addeddrivers/gpu/pvr/perproc.h
The file was addeddrivers/gpu/pvr/pvrsrv.c
The file was addeddrivers/gpu/pvr/tools/main.c
The file was addeddrivers/gpu/pvr/mmu.c
The file was addeddrivers/gpu/pvr/perproc.c
The file was addeddrivers/gpu/pvr/power.c
The file was addeddrivers/gpu/pvr/sgx_bridge.h
The file was addeddrivers/gpu/pvr/mmap.h
The file was addeddrivers/gpu/pvr/Kconfig
The file was addeddrivers/gpu/pvr/README
The file was addeddrivers/gpu/pvr/handle.c
The file was addeddrivers/gpu/pvr/pdumpdefs.h
The file was addeddrivers/gpu/pvr/dbgdrvif.h
The file was addeddrivers/gpu/pvr/tools/dbgdriv.c
The file was addeddrivers/gpu/pvr/bufferclass_example_private.h
The file was addeddrivers/gpu/pvr/bridged_sgx_bridge.h
The file was addeddrivers/gpu/pvr/bridged_pvr_bridge.c
The file was addeddrivers/gpu/pvr/pdump_common.c
The file was addeddrivers/gpu/pvr/sysutils.c
The file was addeddrivers/gpu/pvr/mutex.h
The file was addeddrivers/gpu/pvr/omaplfb_linux.c
The file was addeddrivers/gpu/pvr/tools/ioctl.h
The file was addeddrivers/gpu/pvr/pvrconfig.h
The file was addeddrivers/gpu/pvr/pvrversion.h
The file was addeddrivers/gpu/pvr/services.h
The file was addeddrivers/gpu/pvr/omaplfb.h
The file was addeddrivers/gpu/pvr/resman.c
The file was addeddrivers/gpu/pvr/tools/hotkey.h
The file was addeddrivers/gpu/pvr/pvr_bridge.h
The file was addeddrivers/gpu/pvr/bridged_pvr_bridge.h
The file was addeddrivers/gpu/pvr/bridged_sgx_bridge.c
The file was addeddrivers/gpu/pvr/img_defs.h
The file was addeddrivers/gpu/pvr/tools/hostfunc.h
The file was addeddrivers/gpu/pvr/sgxreset.c
The file was addeddrivers/gpu/pvr/sgxscript.h
The file was addeddrivers/gpu/pvr/tools/Makefile
The file was addeddrivers/gpu/pvr/private_data.h
The file was addeddrivers/gpu/pvr/sysconfig.c
The file was addeddrivers/gpu/pvr/sgxdefs.h
The file was addeddrivers/gpu/pvr/sysconfig.h
The file was addeddrivers/gpu/pvr/pvr_bridge_km.h
The file was addeddrivers/gpu/pvr/Makefile
The file was addeddrivers/gpu/pvr/mutils.h
The file was addeddrivers/gpu/pvr/tools/ioctl.c
The file was addeddrivers/gpu/pvr/tools/dbgdriv.h
The file was addeddrivers/gpu/pvr/mm.c
The file was addeddrivers/gpu/pvr/sgxinfokm.h
The file was addeddrivers/gpu/pvr/lock.h
The file was addeddrivers/gpu/pvr/deviceclass.c
The file was addeddrivers/gpu/pvr/sgxconfig.h
The file was addeddrivers/gpu/pvr/osfunc.h
The file was addedinclude/video/sgx-util.h
The file was addeddrivers/gpu/pvr/osperproc.h
The file was addeddrivers/gpu/pvr/syslocal.h
The file was addeddrivers/gpu/pvr/resman.h
The file was addeddrivers/gpu/pvr/hash.h
The file was addeddrivers/gpu/pvr/mm.h
The file was addeddrivers/gpu/pvr/bridged_support.h
The file was addeddrivers/gpu/pvr/pvr_debug.c
The file was addeddrivers/gpu/pvr/sgxcoretypes.h
The file was addeddrivers/gpu/pvr/hash.c
The file was addeddrivers/gpu/pvr/tools/hostfunc.c
The file was addeddrivers/gpu/pvr/syscommon.h
The file was addeddrivers/gpu/pvr/queue.h
The file was addeddrivers/gpu/pvr/sgxpower.c
The file was addeddrivers/gpu/pvr/sgxerrata.h
The file was addeddrivers/gpu/pvr/pdump.c
The file was addeddrivers/gpu/pvr/oemfuncs.h
The file was addeddrivers/gpu/pvr/env_perproc.h
The file was addeddrivers/gpu/pvr/img_types.h
The file was addeddrivers/gpu/pvr/services_headers.h
The file was addeddrivers/gpu/pvr/sgxinfo.h
The file was addeddrivers/gpu/pvr/ioctldef.h
The file was addeddrivers/gpu/pvr/sgxkick.c
The file was addeddrivers/gpu/pvr/bufferclass_example_private.c
The file was addeddrivers/gpu/pvr/pvr_debug.h
The file was addeddrivers/gpu/pvr/pvrmmap.h
The file was addeddrivers/gpu/pvr/pvrmodule.h
The file was modifieddrivers/gpu/Makefile (diff)
The file was addeddrivers/gpu/pvr/kernelbuffer.h
The file was addeddrivers/gpu/pvr/sgx_bridge_km.h
The file was addeddrivers/gpu/pvr/sysinfo.h
The file was modifieddrivers/video/Kconfig (diff)
The file was addeddrivers/gpu/pvr/bufferclass_example.c
The file was addeddrivers/gpu/pvr/bufferclass_example.h
The file was addeddrivers/gpu/pvr/sgx530defs.h
The file was addeddrivers/gpu/pvr/module.c
The file was addeddrivers/gpu/pvr/omaplfb_displayclass.c
The file was addeddrivers/gpu/pvr/sgxutils.c
The file was addeddrivers/gpu/pvr/osfunc.c
The file was addeddrivers/gpu/pvr/pb.c
The file was addeddrivers/gpu/pvr/COPYING
The file was addeddrivers/gpu/pvr/tools/hotkey.c
The file was addeddrivers/gpu/pvr/event.h
The file was addeddrivers/gpu/pvr/bufferclass_example_linux.c
The file was addeddrivers/gpu/pvr/sgxtransfer.c
The file was addeddrivers/gpu/pvr/handle.h
The file was addeddrivers/gpu/pvr/servicesint.h
The file was addeddrivers/gpu/pvr/device.h
The file was addeddrivers/gpu/pvr/kerneldisplay.h
The file was addeddrivers/gpu/pvr/mmu.h
The file was addeddrivers/gpu/pvr/ra.c
The file was addeddrivers/gpu/pvr/tools/linuxsrv.h
The file was addeddrivers/gpu/pvr/buffer_manager.c
The file was addeddrivers/gpu/pvr/sgxapi_km.h
The file was addeddrivers/gpu/pvr/srvkm.h
The file was addeddrivers/gpu/pvr/servicesext.h
The file was addeddrivers/gpu/pvr/buffer_manager.h
The file was addeddrivers/gpu/pvr/sgxutils.h
The file was addeddrivers/gpu/pvr/event.c
The file was addeddrivers/gpu/pvr/ocpdefs.h
The file was addeddrivers/gpu/pvr/sgx_options.h
The file was addeddrivers/gpu/pvr/sgxfeaturedefs.h
Commit 81fa508075ae159a90d514c62c694e838cd91d68 by Arthur D.
gpu: pvr: compilation fixes for kernel > 2.6.33
Signed-off-by: Ameya Palande <ameya.palande@nokia.com>
The file was modifieddrivers/gpu/pvr/resman.c (diff)
The file was modifieddrivers/gpu/pvr/mm.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 132497b2547a97f7043b9ebfad1252b55f738579 by Arthur D.
gpu: pvr: move device registration into board file
Needed by an upcoming patch adding board specific device parameters.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Signed-off-by: Tomi
Valkeinen <tomi.valkeinen@nokia.com>
Adapt for Nokia N900 MeeGo kernel
Signed-off-by: Carsten Munk <carsten@maemo.org>
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit ba02295d1e282022045d8911bce311f62bcca7b7 by Arthur D.
gpu: pvr: add support to set board specific max SGX functional clk rate
Signed-off-by: Imre Deak <imre.deak@nokia.com> Signed-off-by: Tomi
Valkeinen <tomi.valkeinen@nokia.com>
The file was modifieddrivers/gpu/pvr/syslocal.h (diff)
The file was addedinclude/linux/pvr.h
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit 1e8b66d0855a5ddb5abf4b1a71dabd2378fb31a4 by Arthur D.
gpu: pvr: add pvr_lock/remove unneeded lock headers
- Add a public interface for accessing this lock. It has been used
as a public interface anyway and an upcoming patch needs to access
it as well.
- Remove headers becoming unnecessary by this refactoring.
Note:
Currently this lock provides for a course level locking protecting
all HW and SW state tracking objects. We'll need to revise the use
of the following additional locks in the driver. Their existance
might not be justified, in which case we could just substitute
them with pvr_lock:
  PVRSRVDvfsLock
PVRSRVPowerLock
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/mm.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was removeddrivers/gpu/pvr/mutex.h
The file was removeddrivers/gpu/pvr/lock.h
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/event.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
Commit 114cd2c1cccc16a62fdd257f5967752409ea0b47 by Arthur D.
gpu: pvr: bail out from SGXOSTimer if it's been canceled
At the moment cancelling the timer is done in a synchronous way, so we
don't need to have the extra check. But a later patch will add
additional locking around the HW interrupt from where the timer can be
cancelled as well. Because of lock dependency issues described in that
patch we have to switch to an asynchronous way of cancelling this timer
and it means we need to have the extra check.
Also reset the flag indicating that the timer is cancelled when
destroying it. Currently we are both cancelling and destroying the
timer, but we really should just require calling the destroy function.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit b37ac191e5208e550257ddca4c7cab25025c6634 by Arthur D.
gpu: pvr: fix locking on the HW interrupt path
- take pvr_lock in the interrupt handling work (MISR) thread, as from
there we can call functions accessing HW and SW state tracking objects.
An example is the SGX HW recovery function.
- make SGXOSTimerCancel asynchronous. This is safe now as a previous
patch made sure that the timer will not run after cancelled. We can't
do synchronous cancellation, because there would be an ABBA lockdep
problem involving the SGXOSTimer's mutex and pvr_lock:
  MISR / IOCTL thread:
   1. pvr_lock in PVRSRV_BridgeDispatchKM
   2. timer's lock through SGXPrePowerState -> SGXOSTimerCancel
  SGXOSTimer's thread:
   1. timer's lock already taken when SGXOSTimer is called
   2. pvr_lock in SGXOSTimer
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit aa0b939ed1e70be1783bc29a604d45d24d0c475a by Arthur D.
gpu: pvr: acquire the pvr lock on the SGX HW recovery path
We need to take the lock protecting all SW and HW state tracking objects
on the recovery reset path, since we are accessing objects like the SGX
command queue, or the per process memory and resource management
contexts.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit dc2662b3cf20063f00ef1ac33e29bc6e83d351fa by Arthur D.
gpu: pvr: fix locking in pvr_dbg_reset
HWRecoverResetSGX needs to be called with the pvr_lock held.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit 95983893f1d64c4164fca9dd220012fb3e715c54 by Arthur D.
gpu: pvr: BUG if pvr_lock is not held in HWRecoveryResetSGX
Adding the check only to this one place, more can be added later.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
Commit edbe10976619862e298274e796e91df6e6d4600f by Arthur D.
gpu: pvr: fix indent error
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/omaplfb_displayclass.c (diff)
Commit ffe9b0fdc62a530eeb9e9cd4bc1070eeb77697d8 by Arthur D.
gpu: pvr: remove unused per device variable
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/queue.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
Commit f760b4274aa479ad6c90ac5ca3cf84fbe6bd37b0 by Arthur D.
gpu: pvr: make sure the device is powered on in SGX_MISRHandler
While SGX_MISRHandler is scheduled another code path of the driver
(IOCTL, SGXOSTimer) can race with it and turn the power off before it
starts to execute.
When this happens we get the following oops backtrace:
HWRecoveryResetSGX: SGX Hardware Recovery triggered
Unhandled fault: external abort on non-linefetch (0x1008)
PC is at HWRecoveryResetSGX+0x74/0x1b8 [pvrsrvkm]
LR is at preempt_schedule+0x44/0x54
(HWRecoveryResetSGX+0x0/0x1b8) from (SGX_MISRHandler+0x5c/0x60)
(SGX_MISRHandler+0x0/0x60) from (PVRSRVMISR+0x44/0xa0)
r5:bf0a29cc r4:dfbbbcc0
(PVRSRVMISR+0x0/0xa0) from (MISRWrapper+0x14/0x18)
r5:00000002 r4:00000000
(MISRWrapper+0x0/0x18) from (worker_thread+0x1d0/0x2cc)
(worker_thread+0x0/0x2cc) from (kthread+0x88/0x90)
(kthread+0x0/0x90) from (do_exit+0x0/0x680)
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit f7c182e0548f7a206038a468bae6a615922adb05 by Arthur D.
gpu: pvr: add support for finding the BM context from the DL
This allows us to find the BM context from the value of the directory
list. This is required for the next patch.
Signed-off-by: Mark Underwood <mark.underwood@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.h (diff)
The file was modifieddrivers/gpu/pvr/mmu.h (diff)
Commit ac81bfb25c41d98666292025524f268080b81e76 by Arthur D.
gpu: pvr: clean up FreeResourceByCriteria
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/resman.c (diff)
Commit 23cd80ecae1f5529e56961e095dad95c031ec7b7 by Arthur D.
gpu: pvr: add helpers to look up resource context and proc info
These are needed by an upcoming patch showing process info.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/resman.c (diff)
The file was modifieddrivers/gpu/pvr/resman.h (diff)
Commit 75ba2e4f3f5c363c0b04cd3c33a5225874629ebf by Arthur D.
gpu: pvr: dump process info at HW recovery reset
Print process ID and command name during HW recovery reset.
Based on a patch from Mark Underwood <mark.underwood@imgtec.com>.
Forward port to 2.6.35
Signed-off-by: Imre Deak <imre.deak@nokia.com> Signed-off-by: Carsten
Munk <carsten@maemo.org>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit a39a949fd0f7b3e9a2443bdb30b98651be70e140 by Arthur D.
gpu: pvr: add option for extra debugging information
This is basically a sed -i 's/\<DEBUG\>/CONFIG_PVR_DEBUG_EXTRA' *.[ch] .
Currently a driver built in debug mode will only work together with the
relevant PVR/OGLES user space libraries being built in debug mode too.
This is becuase the ABI is different in debug and release build.
This is not very flexible when one wants to only debug the kernel driver
and not care about the user space part, let alone figuring out where to
get the sources for that and rebuild it in debug mode too.
Mark the current user space dependent debug code parts with a new
CONFIG_PVR_DEBUG_EXTRA option instead of DEBUG, so that later we can
selectively add back basic debugging facilities like debug traces and
mark them with CONFIG_PVR_DEBUG.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/event.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/proc.c (diff)
The file was modifieddrivers/gpu/pvr/pvrconfig.h (diff)
The file was modifieddrivers/gpu/pvr/omaplfb.h (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/syslocal.h (diff)
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/pb.c (diff)
The file was modifieddrivers/gpu/pvr/ra.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_options.h (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/resman.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/bufferclass_example_linux.c (diff)
The file was modifieddrivers/gpu/pvr/mm.h (diff)
The file was modifieddrivers/gpu/pvr/handle.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit f4bb5d1b74eeb556a2931b82d9674e7b7a6637a1 by Arthur D.
gpu: pvr: enable debug trace for basic debug build
Enable debug messages for basic debug type builds.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/resman.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/handle.c (diff)
Commit 7cdaf0fa5c868081419c8abca85b50c075aaef22 by Arthur D.
gpu: pvr: fix locking on SGX load calculating thread
psDeviceNodeList et al is protected by pvr_lock, so we need to acquire
it here.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 51228320eff9e25847e5d4965a1f33a1f6a60cef by Arthur D.
gpu: pvr: fix locking on the DVFS path
The HW state is protected by pvr_lock(), so acquire it for the duration
of clock rate changes. We can also remove PVRSRVDvfsLock() that thus
becomes unneded.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/power.h (diff)
Commit 1d2014f7cce2fd0cbc0f99dcb8fc1392ad79e0ab by Arthur D.
gpu: pvr: remove PVRSRVPowerLock()
For the relevant paths we already hold pvr_lock(), so we this lock is
unnecessary.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/power.h (diff)
Commit ccd2cc0c96b8f918b7a0412a867c3277f7f5da3c by Arthur D.
gpu: pvr: remove sPowerStateChangeResource lock
This lock was only created / destroyed, but nowhere actually used.
Remove it.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
Commit 962b42c407bbe4a4165f5abe1feebdf20cf123f9 by Arthur D.
gpu: pvr: remove sQProcessResource/OSLockResource interface
The relevent parts are already protected by pvr_lock(), so no need for
sQProcessResource, which was anyway racy and required the occasional
retrying of any operations performed on the protected object.
The OSLockResource interface thus becomes unused, so remove it too.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/queue.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.h (diff)
Commit 353d63fea27b0a9d0df82d226e8a2cecac16191f by Arthur D.
gpu: pvr: remove unused function args from PVRSRVSetDevicePowerStateKM
The CallerID parameter was anyway a horrible concept in terms of
understanding what the function is supposed to do when ISR_ID, KERNEL_ID
or TIMER_ID is passed. Function arguments should never have such "high
level" meaning, but rather denote much more concrete things. In this
case for example whether we should mutex_lock() or mutex_trylock() for a
certain lock. Better yet we should have separate functions for the two
cases to keep the function body as simple as possible.
Happily the CallerID and RetainMutex arguments are unused now, so they
can be removed.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/power.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit fbd166c112663a2999bd3ee65a734a9ec7f4bc9f by Arthur D.
gpu: pvr: remove unused function args from PVRSRVProcessQueues
See the earlier commit with a similar change on why this is justified.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/deviceclass.c (diff)
The file was modifieddrivers/gpu/pvr/queue.h (diff)
The file was modifieddrivers/gpu/pvr/queue.c (diff)
Commit b98f1f0943e9f40e82d780b72e29de328194de5f by Arthur D.
gpu: pvr: no need to check for retry failures in PVRSRVMISR
ProcessQueues can't fail any more with a 'retry' error, so checking for
this is not needed. Previously ProcessQueues could fail if
sQProcessResource is locked by someone else. Since sQProcessResource is
removed by a previous change in this patchset that race condition can't
happen.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit ecdcec69193013a1976a655dda058cd005717f5d by Arthur D.
gpu: pvr: remove unused function args from HWRecoveryResetSGX
See the similar commits earlier in the patchset on why this is
justified.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 5b5736cb2cc468e8b020523be68d344eef4be7f4 by Arthur D.
gpu: pvr: no need to check for retry failures in SGXScheduleCCBCommandKM
Powering on the device can't fail any more with a 'retry' error so we
can't have the corresponding condition here. See the similar commit
earlier in the patchset for a more detailed explanation.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit 48dd2aca96c6e93930e4e74a96cdf3b1c870ec13 by Arthur D.
gpu: pvr: no need to check for IRQ context in SGXCommandComplete
This function isn't called in IRQ context from anywhere, so remove the
related checks.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/osfunc.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit fef092807e4b35113aa30512ef7c840490c170f7 by Arthur D.
gpu: pvr: no need to check for retry failures in SGXTestActivePowerEvent
Powering off can't fail now with a 'retry' error, so we can't have the
corresponding condition here. See the similar commits earlier in the
patchset for a more detailed explanation.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit 785fc781f29ca30d398f891f464a87cabbbeae72 by Arthur D.
gpu: pvr: no need to delay queue processing in SGXPostActivePowerEvent
At the moment processing of the command queue is delayed in case
SGXPostActivePowerEvent in the HW interrupt code path. This would be
only justified in case of being in interrupt context. This might have
been the case at one point in the history, but now HW interrupts result
in a work scheduled and thus calling the queue processing function is
safe in all cases.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit 8e0e5bdbfccb380d3ad7619fe630fda44e7bcea4 by Arthur D.
gpu: pvr: remove unused function args from SGXPostActivePowerEvent
See the similar commits earlier on why this is justified.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit 0081059a66e928eadb7481d07351443abc35e88b by Arthur D.
gpu: pvr: remove unused function args from SGXTestActivePowerEvent
See the similar commits earlier in the patchset to see why this is
justified.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.h (diff)
Commit 9d65d3e44dd6dd12d9488dae2942186a61be85aa by Arthur D.
gpu: pvr: remove unrelevant comments about caller ID
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit 4ae06cc44beda451a6489479aba700eea3014e56 by Arthur D.
gpu: pvr: fix PDUMP configuartion in release build
PDUMP can be enabled in release builds too, but so far it was only
enabled in debug builds, so fix this.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvrconfig.h (diff)
Commit f7645781416cdf482c7e7a707e6b113cc5e63c9d by Arthur D.
gpu: pvr: remove support for broken LINUX_MEM_AREAS_DEBUG
Since implementation of the relevant function is missing, enabling this
will lead to a build problem. Hence removing it.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/mm.h (diff)
Commit e3ac6537d18be7ebcc1a3b492c02a6d32bd7275c by Arthur D.
gpu: pvr: round the SGX fclock rate to the nearest supported
This is needed since clk_set_rate accepts only exact values.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 3f69a3f0318c97afee3f7c39f097e7e52e099793 by Arthur D.
gpu: pvr: replace boolean by flags in blits complete query
In preparation for adding third mode of query. In DRM one has a specific
IOCTL for requesting the DRM kernel driver to issue events when a
particular vertical blanking period passes. Here one aims to introduce
similar IOCTL for requesting PVR kernel driver to issue events whenever
a particular frame gets rendered in full. And instead of introducing
entirely new IOCTL, one instead aims to extend an existing call with a
new mode. This is accomplished by replacing the boolean selector with an
integer.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
Commit e5cef3c9a90a4caad0fd32d16b0104e6d14c17b6 by Arthur D.
gpu: pvr: support for events
In DRM vertical blank event style, introduce support for the driver to
issue and for the userspace to read events. Driver file node is extended
with a list holding unread events and with a wait queue representing
processes interested receiving events.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was addeddrivers/gpu/pvr/pvr_events.h
The file was modifieddrivers/gpu/pvr/private_data.h (diff)
The file was addeddrivers/gpu/pvr/pvr_events.c
Commit fe97b12046498f2255e3dcbfe1e7b9c190b75c7f by Arthur D.
gpu: pvr: support for polling events
In DRM style provide means for userspace to monitor availability of
events via the poll syscall.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit f5b15becb5079dd3f6b603bfdf38be429dd618be by Arthur D.
gpu: pvr: support for render complete events
In DRM vertical blank event style, add support for userspace to register
for events signaling completion of rendering. Driver is augmented with a
list of pending events each representing request to monitor a particular
render completion. Interrupt handler checks for the list and for the
corresponding state of the target surface. Once a complete render is
encountered, the handler simply moves the corresponding event from the
pending list to the unread list.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit a342808ea8e2934b8fcfa6d6f0e96312465ecbac by Arthur D.
gpu: pvr: enable render complete events
In DRM style events are associated with the driver private part of the
driver file descriptor. In order for the poll and read methods to access
the event list one needs to pass the file private through the IOCTL
stack.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit 101824510ed2f03c4dbaad98cecb3b846cf1f622 by Arthur D.
gpu: pvr: support for user data in events
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit f409e31381300d24dee90537ac2504f00968a198 by Arthur D.
gpu: pvr: more accurate error reporting when clk_set_rate fails
We reported a rounded-down MHz value when clk_set_rate failed, but this
didn't make the reason clear when the Hz value didn't match exactly any
supported rate. So report Hz values instead.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 58351087bfa924b71950f8807f282d3be9a92803 by Arthur D.
gpu: pvr: fix lockdep problem
On the CLK_PRE_RATE_CHANGE: 1. lock A           <-
__blocking_notifier_call_chain:nh->rwsem 2. lock B           <-
vdd2_pre_post_func:gPVRSRVLock 3. unlock A
On the CLK_POST_RATE_CHANGE/CLK_ABORT_RATE_CHANGE: 4. lock A 5. unlock B
6. unlock A
The above has an ABA lock pattern which triggers the warning. This can't
lead to a dead lock though since at 3. we always release A, before it's
again acquired at 4. To avoid the warning use a wait queue based
approach so that we can unlock B before 3.
Fixes: NB#166168 - PVR: possible circular locking dependency detected
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 79159a5cfbe0d6869468e0b2a9019d3fdf13fdd5 by Arthur D.
gpu: pvr: move ocp_cleanup() later during device deinit
Unmap the OCP register range only after it's not needed any more.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
Commit 6653e6aff7f7470277450aa6b478465b4d06e010 by Arthur D.
gpu: pvr: optimize pvr_lock() by inlining it
Also replace pvr_init_lock() by a static initializer.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit 6fc704bd8b866c94aaee8b1d4a3f89ec36a5b1fd by Arthur D.
gpu: pvr: Disable driver if SGX HW recovery fails
At the moment SGX HW recovery doesn't succeed always and keeps the
processes using the driver blocked. To avoid this give up after a number
of retries and disable further IOCTLs or interaction with the HW. This
would still allow a complete restart of the graphics stack including
reloading the drivers and restarting the relevant processes.
The final fix is of course to find out why the recovery doesn't succeed.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/event.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 2558c36ad0d0c21f3de7a9ab206083a103085785 by Arthur D.
gpu: pvr: Reuse the same syncobject across all wraps
Create a hash table and store all the syncobjects that we create for
wrapped memory using the address of the buffer as the key. When a wrap
happens we check the hash table to see if the buffer has already been
wrapped and if so we retrieve the sync object and reuse it. When the
last wrap that is using a syncobject is freed then we remove the
syncobject from the hash table and free it.
Signed-off-by: Mark Underwood <mark.underwood@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/devicemem.c (diff)
The file was modifieddrivers/gpu/pvr/device.h (diff)
The file was modifieddrivers/gpu/pvr/servicesint.h (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit 9a6cf4e87ac6812c7575ee9f200018f603fda119 by Arthur D.
gpu: pvr: fix handle allocation when sharing sync objects
This is needed by an upcoming patch fixing sync object sharing, which
requires support for multiple sync object handles pointing to the same
sync object. This will work if the handles are allocated in different
processes, but will fail if allocted within a single process. Fix this
by explicitly allowing the handle framework to allocate multiple handles
for the same object within a single process.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit bf69cf7c06946611351299ce44833ac4b4c938e1 by Arthur D.
gpu: pvr: Add support for flip complete events
Add framework for flip complete events. The events are supposed to
be signalled when a flip has completed. For now signal them immediately
to avoid clients blocking indefinitely.
Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
Commit eb8d6cc35a6d389ba78ec61e4e9d3c3de9684056 by Arthur D.
gpu: pvr: Reduce code duplication
pvr_signal_sync_event() can be used twice with just a tiny modification
to the list handling.
Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Reviewed-by: Topi
Pohjolainen <topi.pohjolainen@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit 11a4a921bcdd39699b76e98e81b70600160b73b7 by Arthur D.
gpu: pvr: Use DSS notifier to signal flip complete events
Utilize to the DSS GO notifier to get callbacks when the flip has
completed.
Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit 1b389c25a91f85345cd48331afa34797e7ab9724 by Arthur D.
gpu: pvr: omaplfb: remove unnecessary fb unblanking
This is unnecessary and is causing a lockdep problem with the DSS
driver.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/omaplfb_displayclass.c (diff)
Commit 003a839686a143b09eb6729780ad239a2ef1fa9c by Arthur D.
gpu: pvr: add SGXScheduleProcessQueues to prepare for pvr_dev_lock
This will be needed to do things done in SGXScheduleProcessQueuesKM
locklessly when pvr_dev_lock is added.
No functional change.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxutils.h (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit d80526c86d2324aed2f82ac0901d01b6c185a063 by Arthur D.
gpu: pvr: add dvfs lock
We need to protect the SGX HW access with a separate lock as the
pvr_lock. This is to overcome a lockdep issue between the clock change
notification lock and pvr_lock.
Fixes: NB#181087 - pvrsrvkm: possible circular locking dependency
detected
Signed-off-by: Imre Deak <imre.deak@gmail.com>
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit 2459b4ea91bbdb6ca03c45a9b2e11fc65a031462 by Arthur D.
gpu: pvr: rename pvr_dvfs_lock to pvr_dev_lock
The new name better reflects what is actually protected.
No fuctional change.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
Commit 539c4344c86d3b8e02282d4e75b797e59003fc7f by Arthur D.
gpu: pvr: fix locking around HWRecoveryResetSGX
On the MISR / HW recovery path the pvr_dev_lock was taken twice leading
to a dead-lock. This regression was introduced by commit
"gpu: pvr: add dvfs lock".
Spotted-by: Luc Verhaegen <luc.verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 26ce142aea7370f3ff86f8694b183be875c91e11 by Arthur D.
gpu: pvr: Remove needless NULL check in BM_ImportMemory.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit 361a60af1bfdedaa400e1c2f37c2eae9fa25547d by Arthur D.
gpu: pvr: Remove needless NULL check in BM_DestroyHeap.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit b5f442ead3242aafbf47f59606b74e3a1bda4fc1 by Arthur D.
gpu: pvr: Fixed formatting in buffer_manager.c
Fixed indentation and mixed code and declarations. No functional change.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit 6873052ddf795e2dfd678089eb63992760eea03b by Arthur D.
gpu: pvr: Remove needless NULL check in WrapMemory.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit 5e1fde643e9bc287fc1e5d750c28bd22c2d2c48c by Arthur D.
gpu: pvr: Remove needless NULL check in BM_CreateHeap.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit 68c16d7e423f92d686a542da34705c9ad884824d by Arthur D.
gpu: pvr: Remove needless NULL check in PVRSRVWrapExtMemoryKM.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/devicemem.c (diff)
Commit 05531805253a6091bd2db5e9d10dc65937982dfe by Arthur D.
gpu: pvr: Changed error-path condtion.
Changed the condition to equivalent but less confusing one.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/devicemem.c (diff)
Commit a028155fce54137df9e030ac7d072b0c1c98aa18 by Arthur D.
gpu: pvr: Changed ReallocMem.
A static analysis tool showed a possible defect in ReallocMem() -
derefencing a null pointer. It was a false positive.
This patch slightly modifies ReallocMem() to avoid this warning.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/handle.c (diff)
Commit ff695aed406ee5052c697c8e3bed76937f25a017 by Arthur D.
gpu: pvr: Check OSAllocMem return value.
Check OSAllocMem() return value instead of checking the pointer returned
as a positional parameter.
This change makes static analysis tool happy.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/hash.c (diff)
Commit d895643564ed0b4ce17de9ba7b8c72041d7de737 by Arthur D.
gpu: pvr: Check OSAllocMem return value.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/hash.c (diff)
Commit 03b3f2ac289d10009455d3e229c032cfa5ebdeae by Arthur D.
gpu: pvr: Remove FIRST_PHYSICAL_PFN define.
The unsigned comparison pfn >= 0 is always true. Removed
FIRST_PHYSICAL_PFN define and simplified the condition.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
Commit 32d23f3ec3f8b0bf50deebe35cb174039acab8ad by Arthur D.
gpu: pvr: Removed needless NULL check in MMU_BIFResetPDAlloc.
pui8MemBlock cannot be NULL, so remove the check.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
Commit 05ee7bf085896703114c1e3218367cf69bca215e by Arthur D.
gpu: pvr: Check OSAllocMem return value.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
Commit e03ab94679441bd9d88ed330a42b5e21e903b18b by Arthur D.
gpu: pvr: Check OSAllocMem return value.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
Commit 2497cf76a427beb614b3d588d14e482f7662bbdb by Arthur D.
gpu: pvr: Check OSAllocMem return value.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
Commit 9eaa91fe370ae32804a98120ca58755bda9d90d8 by Arthur D.
gpu: pvr: Remove SysAcquireData call in pvr_cleanup.
Remove obsolete SysAcquireData() call.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit cdc7c998848796933a2841e0fce7dafba7c52fb1 by Arthur D.
gpu: pvr: Check SysAcquireData return value.
SysAcquireData() could theoretically fail. This patch adds missing
return value check in SGXReadDiffCountersKM().
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 40e04f17c0c7a94f3e2563222bde461a1d288ed5 by Arthur D.
gpu: pvr: pass IOCTL in param size to dispatch func
This is needed by an upcoming patch that differentiates between IOCTL
parameter format based on it's size.
Also some ws change to silence checkpatch.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit 2914be8696d9ace0306717e98cd1057a1fec7406 by Arthur D.
gpu: pvr: Increase the max number of 3D TA status vals in kick requests
This is needed to support the to-be-added fence sync mechanism in the
user space part. The change involves an ABI change, to make the
transition smooth keep support for the old format as well.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinfo.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/sgxapi_km.h (diff)
Commit 2196dfbb30c2830b0c0f539fc44e3d7994de01c5 by Arthur D.
gpu: pvr: Fixed error path in cache flush function.
PVRSRVCacheFlushDRIBW returns in the error path without releasing
current->mm->mmap_sem semaphore. The client application stalls forever
and cannot be killed.
Signed-off-by: Janusz Sobczak <janusz.sobczak@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 6553847daa319ab991031a880399baa19197d4c6 by Arthur D.
gpu: pvr: fix locking on the HW recovery reset error path
pvr_dev_lock is unbalanced on the code path where HW recovery reset
fails.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 3a1e9dec16a1f9270173f0bca5815011b1ba5ef0 by Arthur D.
gpu: pvr: remove unnecessary udelay from the HW poll loop
At the moment the HW polling loop does a 50 usec delay between each
reading of the HW flag in question. Since this delay is no worse than
just reading the HW flag continuously, get rid of it.
This will reduce the wait time from 50 usec to 25 usec in the general
case.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit 62afbe4bd527a4667b2aec5c583e9bd650d73632 by Arthur D.
gpu: pvr: fix typo in SGXDoKickBW
This leads to the IOCTL failing in case the new structure format is used
with it. Also fixes bounds checking for the old format.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit 6c7aa1a9272eb85dc65358d4202e2c9ef7bd6c85 by Arthur D.
gpu: pvr: split out setting power down delay into its own function
This will be needed by an upcoming patch setting the power-down delay
dynamically.
No functional change.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <Luc.Verhaegen@basyskom.de>
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
Commit 2e4bbd0204af37a90db3d8dd4dc19bdd915380b6 by Arthur D.
gpu: pvr: fix SysGetSGXTimingInformation for cases when the HW is off
This function doesn't do anything that requires the HW to be on, so
remove the assert about it. This will be needed by an upcoming patch,
requiring this information with HW off.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <Luc.Verhaegen@basyskom.de>
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit d1a22c7d3fb03f0a57f369b170059c4961000878 by Arthur D.
gpu: pvr: add support for dynamic timing of SGX HW power down
This is needed by the next patch, which actually enables the support.
Currently the driver implements an aggressive power management policy
and powers down the HW very shortly (1 ms) after each completed command.
The resulting power-down and -up sequence between commands are
relatively long (~250usec), causing a delayed command execution and
unnecessary CPU load.
There is a deadline at the end of each display Vsync period, by which
all commands for the next frame must be completed. If the deadline is
missed FPS goes down. To increase the chance that we meet the deadline
we want to cut down on the above overhead.
One way to reduce the overhead is to get rid of the power-down/up
sequences between commands. The downside is the possibly higher power
consumption, so a solution has to minimize this side effect. Simply
increasing the power-down delay would result in a constant power
consumption increase. To see this let's consider the following two cases
given a 16 ms Vsync period.
Case a:
1.  SGX command#1 for frame#N    -  3 ms 2.  SGX idle                  
-  3 ms 3.  SGX command#2 for frame#N    -  3 ms 4.  SGX idle         
          -  3 ms 5.  SGX command#3 for frame#N    -  3 ms 6.  SGX idle
                   -  1 ms 7.  Vsync 8.  SGX command#1 for frame#N+1  -
3 ms 9.  SGX idle                     -  3 ms 10. SGX command#2 for
frame#N+1  -  3 ms 11. SGX idle                     -  3 ms 12. SGX
command#3 for frame#N+1  -  3 ms 13. SGX idle                     -  1
ms 14. Vsync
... same pattern repeating for several frames
Here we need to increase the power-down delay to 4 ms, to avoid the
overhead at 2.,4.,9.,11. and to increase the chance to meet the
deadlines at 7. and 14.
Case b:
1.  SGX command#1 for frame#N    -  1 ms 2.  SGX idle                  
-  1 ms 3.  SGX command#2 for frame#N    -  1 ms 4.  SGX idle         
          -  1 ms 5.  SGX command#3 for frame#N    -  1 ms 6.  SGX idle
                   - 11 ms 7.  Vsync 8.  SGX command#1 for frame#N+1  -
1 ms 9.  SGX idle                     -  1 ms 10. SGX command#2 for
frame#N+1  -  1 ms 11. SGX idle                     -  1 ms 12. SGX
command#3 for frame#N+1  -  1 ms 13. SGX idle                     - 11
ms 14. Vsync
... same pattern repeating for several frames
Here we don't have a risk of missing the deadlines, so we could
power-down immediately after 5. and 12. but we will delay the power-down
by 4 ms due to the constraint in case a. This energy waste will be
incured in each of the following frames having a similar command
scheduling pattern.
The solution in the following patch minimizes the energy waste while
achieving the original goal, by tracking "command bursts". In a burst
command execution periods are separated by idle periods of less than a
fixed amount of time (3 ms). Power-down is avoided between commands
within one burst, but it's performed immediately after the last command
of the burst. For example all commands in case a constitute one burst,
so we won't have any power-down there. In case b we have two bursts:
first burst consisting of 1.,3.,5. second burst consisting of
8.,10.,12., so we will power down immediately after 5. and 12.
In cases where commands are interleaved (well behaving applications)
we'll see power consumption decreasing due to the immediate power down
vs. the current 1ms delay. For other cases we might see a slight
increase in power consumption due to not powering down between commands,
but these are the very cases where we have a risk of not meeting the
frame deadlines, so the compromise looks like justified.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <Luc.Verhaegen@basyskom.de>
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
Commit 20e1703f89aeb3bc6b61ce67174ba04926fa3c15 by Arthur D.
gpu: pvr: wire in the dynamic power-down delay calculation
Support for this was added in the previous patch.
We're considering only the TA/3D and 2D blit commands to be part of a
command burst. The rest of the commands are power management related and
we can ignore them when detecting repeated burst patterns.
Fixes: NB#195379 - SGX sleep causes performance penalty
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <Luc.Verhaegen@basyskom.de>
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
The file was modifieddrivers/gpu/pvr/sgxtransfer.c (diff)
Commit 83092e6c3c83533febdd5875fef166aad328f85c by Arthur D.
gpu: pvr: Expose new display events to user space
This exposes the new dss event that can be used for more fine grained
synchronization with display updates.
This change is backward compatible with old user space.
Signed-off-by: Pauli Nieminen <ext-pauli.nieminen@nokia.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
Commit f13ed50aa352f12673530626cbd1dbd8e39cd8b2 by Arthur D.
gpu: pvr: Snapshot pending write ops during event request
The render sync event should only wait until write operations that are
pending when the event is requested have completed. New operations
started after requesting the event should not delay the event delivery,
nor should any read operations.
Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
Commit 52762d1343ccb9913a14a299bb16b576beaca75c by Arthur D.
gpu: pvr: remove build time ABI dependency on the EDM trace option
So that we can build user / kernel space independently on the EDM
tracing option being configured or not.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgx_options.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfo.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
Commit 52a1a40e5d07fa7e9d3da4037bffc51ff76facf9 by Arthur D.
gpu: pvr: make the IOCTL i/f compatible for old ABI users
The previous patch breaks the IOCTL i/f for current user space code.
This change will notice such calls based on the IOCTL parameter size and
fix up the param struct accordingly.
This patch can be reverted once applications are converted to use the
new ABI.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/perproc.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge_km.h (diff)
Commit 82cab60a914b89c8bab5c143078bc8f7e0d3a2ed by Arthur D.
gpu: pvr: fix Kconfig description for EDM tracing
We don't have a dependency on user space configuration any more, so fix
the description accordingly.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
Commit 46908e6ebc40f03414992244a049c5d8b4b8bd3a by Arthur D.
gpu: pvr: remove runtime dependency on the EDM trace option
So that we can use the same kernel driver with user space having the
option either configured or not.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 6916fce757da75e6ea87544ce9ca69278b522b39 by Arthur D.
gpu: pvr: move debugfs entries under a new pvr dir
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit ef7013af5ed82184c1fe8d4ee9c04f23a7785e63 by Arthur D.
gpu: pvr: make debugfs available in release build too
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
Commit 748f2d45b7bea0c69a88293209b298e18535a484 by Arthur D.
gpu: pvr: add snprint_edm_trace
Needed by an upcoming patch adding a debugfs entry to dump the trace.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 491d757712c11a62b8b2ae7fec2ae8e8916b4c77 by Arthur D.
gpu: pvr: add debugfs entry to read the EDM trace
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit 2e0545e53fc49b5c2d6c801c7156643be743b181 by Arthur D.
gpu: pvr: print some init failure messages in release mode too
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 2027d5c6340557b259202c3005c56633aecb4d63 by Arthur D.
gpu: pvr: remove ABI compatibility hack from SGXInitPart2 IOCTL
By now everyone should have a recent enough kernel/user space library,
so this isn't needed.
This reverts commit "gpu: pvr: make the IOCTL i/f compatible for old ABI
users".
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/perproc.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 311288582856c25196c6bfa727ead7d8c17fdbf7 by Arthur D.
gpu: pvr: remove ABI compatibility hack from SGXKick IOCTL
By now everyone should have a recent enough kernel/user space library,
so this isn't needed.
This will revert the compatibility fixup parts of the following commit:
"gpu: pvr: Increase the max number of 3D TA status vals in kick
requests"
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxapi_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfo.h (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
Commit d2e02dbe2efbd854e08115da09b73ffd45985f1e by Arthur D.
gpu: pvr: refactor dump_process_info
Split out from the function the part getting the process data based on
the current SHX HW memory context. This functionality will be needed by
an upcoming patch.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 6602d5f3f7ccd34f85e06b7857ca0441c39bc450 by Arthur D.
gpu: pvr: dump render status buffers during SGX HW recovery
To aid debugging, dump any status buffers that are provided by the ogles
user space library for the rendering context that was active at the time
of recovery. At the moment the USSE final patched versions of vertex and
fragment shaders that were bound within the frame causing the HWRec are
provided, but later on more types can be added.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxapi_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfo.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 3e838669a89adecee266583d6b0782bf20e848b5 by Arthur D.
gpu: pvr: improve per process procfs entry/dir handling
When building with full debug, a lot of "Resource Arena" (ra) data is
being made available in the rather painful procfs, including per process
ra info, kept in process specific subdirectories.
Adding and removing process specific entries from procfs took the PID of
the currently running process; which sometimes failed during cleanup,
when the current process might no longer be anything tracked by the
driver. This then resulted in some strange behaviour, where it was
impossible to cleanup a process specific procfs directory, resulting in
an endless loop.
Since process specific procfs entries are only created in the RA code,
we now track the pid in the RA struct. When we pass this pid to both the
procfs entry creation and removal functions, we now do reliably clean up
the procfs entries.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/ra.c (diff)
The file was modifieddrivers/gpu/pvr/proc.c (diff)
Commit 0cd0af1d76f8714ed432ce8a41090330ac158a95 by Arthur D.
gpu: pvr: disable sgx active power management while pvrtune is running
Disable sgx active power management while sgxPerfServer is running. This
enables pvrtune to run correctly without data loss.
Signed-off-by: Alex Crowther <alex.crowther@imgtec.com> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge_km.h (diff)
Commit fffb6aa727bfda9199b3b7094c33fb06f096f64c by Arthur D.
gpu: pvr: fix error path during SGX device initialization
This also fixes some coverity reports.
Fixes: NB#233667 - Dereferencing possibly NULL pointer in sgxinit.c
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 4b97de964f54359a17e146da7e659ad71cb131ba by Arthur D.
gpu: pvr: move debugfs infrastructure to its own files
pvr_debug.* originally only provided some contrived code (which needs
sanitation) to do debug printing.
Future HW Recovery code will also be using debugfs and it makes sense to
lump all of them together in pvr_debugfs.*
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was addeddrivers/gpu/pvr/pvr_debugfs.h
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was addeddrivers/gpu/pvr/pvr_debugfs.c
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit ccf18429c6fe4d7ecaafde3d2bd9e9e25f1f019e by Arthur D.
gpu: pvr: debugfs: add initial hwrec dumping infrastructure
Currently contains hwrec_event and hwrec_time.
hwrec_event blocks the reader until a hwrec event happens. This allows a
simple shell application to sleep until a hwrec happens.
hwrec_time contains a timestamp to enable a simple shell application to
create unique dumps.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 35beb6230b29913e7fb8e0a3d3808b41496b790c by Arthur D.
gpu: pvr: debugfs: add hwrec register dump
Full register dump available after hwrec event in the file hwrec_regs.
The full register page is read out, except [0xA08,0xA50] as this range
results in a SIGBUS.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 0f18536c08d9d0677e0d5c6202a3ea3301a656b7 by Arthur D.
gpu: pvr: debugfs: add hwrec context dump
A full context is now provided through hwrec_mem. This includes page
directory, page tables and all mapped pages.
This code is only built when debugfs is enabled, and when build type is
"Debug".
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/mmu.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 84c38a3ea186fe5371c3079689bf0182343dc2db by Arthur D.
gpu: pvr: debugfs: add hwrec edm trace
And move all edm trace printing code to pvr_debugfs.c; since now only
debugfs/pvr/edm_trace and debugfs/pvr/hwrec_edm use it.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 69f10e1125834da806b472a368a2069f541b45d7 by Arthur D.
gpu: pvr: debugfs: add hwrec status buffer dumping
Move code over from sgxinit.c, and dump status buffers in binary format
to a debugfs file instead of sending it as %08X's to syslog.
Shares process info from the top level now, instead of acquiring this
information several times. This now also prints the caller of the
HWRecovery routine.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 10b8c49d47eca4f3406fd96f418f950085b7ffc8 by Arthur D.
gpu: pvr: pdump: SYS_DATA::bPowerUpPDumped is unused
Nothing in the graphics stack uses this.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
Commit 9457760f8e4f7e1c9357622175d56890ae5a0318 by Arthur D.
gpu: pvr: pdump: consolidate some code inside PDUMP defines
No functional changes.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit 086a19f4e63ff7b2e126a12618685502a642000b by Arthur D.
gpu: pvr: pdump: remove unused bridge calls
Userspace never calls _PDUMP_DRIVERINFO, _PDUMP_DUMPREADREG,
_PDUMP_STARTINITPHASE, or _PDUMP_STOPINITPHASE. So remove the respective
handlers and the pdump code.
No functional change.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 30d23aa114bfb681573717053a61cdf90a7b729b by Arthur D.
gpu: pvr: pdump: remove unused pdump functions
Checked symbols and defines in pdump_km.h, and removed them when unused.
sparse then flagged the unused functions in pdump.c and pdump_common.c
No functional change.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump_common.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/dbgdrvif.h (diff)
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit 9f600a29e50448a97d8b6b7e79f3eb2d57454903 by Arthur D.
gpu: pvr: pdump: remove lastframe support
Userspace does not use this, so no functional change.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
Commit c1df85a34baa14ee0d18fbba4e18af38f2c21b8f by Arthur D.
gpu: pvr: pdump: stop depending on dbgdrvif.h
Stop including dbgdrvif.h in pdump.c and add empty skeleton for former
dbgdrv functionality.
So replace the pointer with callbacks with locally defined, mostly
empty, functions. Provide stripped down struct DBG_STREAM and define the
still referenced flags inside pdump.c.
Only functional change is that the dbgdrv module and the pdump userspace
utility are now completely useless.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit 0b49e0b730b58453d04d1bcff9847d6e10dc6c84 by Arthur D.
gpu: pvr: pdump: remove dbgdrv
Remove now unused dbgdrv files, and set the pdump Kconfig option to
bool.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was removeddrivers/gpu/pvr/tools/hotkey.h
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was removeddrivers/gpu/pvr/dbgdrvif.h
The file was removeddrivers/gpu/pvr/tools/ioctl.h
The file was removeddrivers/gpu/pvr/tools/Makefile
The file was modifieddrivers/gpu/pvr/pvrconfig.h (diff)
The file was removeddrivers/gpu/pvr/ioctldef.h
The file was removeddrivers/gpu/pvr/tools/dbgdriv.h
The file was removeddrivers/gpu/pvr/tools/dbgdriv.c
The file was removeddrivers/gpu/pvr/tools/main.c
The file was removeddrivers/gpu/pvr/tools/linuxsrv.h
The file was removeddrivers/gpu/pvr/tools/ioctl.c
The file was removeddrivers/gpu/pvr/tools/hostfunc.c
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
The file was removeddrivers/gpu/pvr/tools/hostfunc.h
The file was removeddrivers/gpu/pvr/tools/hotkey.c
Commit dde316952bcb950f272e247600675d7f1a79b977 by Arthur D.
gpu: pvr: pdump: remove wrapping of globals in pdump.c
The gsDBGPdumpState struct just clutters up the place.
No functional change.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit c0799f87015839de20110a7b7b00e1584e83b105 by Arthur D.
gpu: pvr: pdump: remove pdump marker code
This was used to signal to the userspace tool that the parameter stream
has grown beyond 1GB. We can handle files bigger than that in our world.
No functional change, as far as the services module is concerned.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit 53417ecd71f9e6d059b1064a77c227572cb8935e by Arthur D.
gpu: pvr: pdump: move functions around to better reflect dependencies
This way, no prototypes have to be provided, and the use of PDUMP macros
is also avoided.
No functional changes.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit 37104b474fae47743c4a03a0dac5cd7f1affc329 by Arthur D.
gpu: pvr: pdump: reduce error propagation from pdump to userspace
When pdump logging fails, the driver should, as much as possible,
continue working. Bad arguments should however be flagged.
This allows for a rewrite of DbgWrite()/PdumpWriteILock() to
pdump_write().
Also remove the parameter write in PDumpPDDevPAddrKM, this parameter
data is simply not referenced and the data sent to the script anyway.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/pdump_common.c (diff)
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 78075267de1556b7f584688c7e2c1025c4235a5d by Arthur D.
gpu: pvr: pdump: rewrite PDumpWriteString2() to pdump_print()
Making pdump_print accept variable arguments directly significantly
simplifies string printing to script, throughout the whole of pdump.c
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit 45e1efc929a8051b404386402a34a30a7cc3019d by Arthur D.
gpu: pvr: pdump: rewrite PDumpCommentKM
And turn some standard printing where the strings starts with "--" into
comments.
No functional change.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit 7afa94d62e3c36f27d02c05b53686da2cb5229c3 by Arthur D.
gpu: pvr: pdump: remove param offset handling
Currently, we are not storing any data, but in future, we will be
storing both script and param to the same stream. This removes the need
to reference the param stream from the script stream, and the logical
issues that arise from this, especially in light of frame based storage,
with frame culling happening.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit d7ecc103454d18833e7fae7b8c60c3a3ddda807f by Arthur D.
gpu: pvr: pdump: review use of PDumpSuspended
PDumpSuspended is handled by pdump_write() now.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit 67014bb6db13fdbc7deceb19695110eba5eb79ab by Arthur D.
gpu: pvr: pdump: assume that SGX_MMU_PAGE_SIZE equals PAGE_SIZE
This way, the address mangling code becomes a lot clearer.
The following changes are made: SGX_MMU_PAGE_SIZE -> PAGE_SIZE.
SGX_MMU_PDE_ADDR_MASK -> PAGE_MASK
~(PAGE_SIZE - 1) -> PAGE_MASK
(Address >> SGX_MMU_PAGE_SHIFT) * PAGE_SIZE -> Address & PAGE_MASK
A few functions which get SGX_MMU_PAGE_SIZE passed lose this argument
and use PAGE_SIZE internally.
No functional changes on machines where PAGE_SIZE is the same for the
host as for the sgx.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
Commit 01b98ec5ed1653e268fd80deae810b15c4084dd6 by Arthur D.
gpu: pvr: pdump: clean up logic across pdump.c
This patch is the least obvious of the set. It removes useless
variables, superfluous calculations, cleans up loops, and makes a few
functions wrap others instead of copying them.
Should be no functional change, but as said, very non-obvious.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit 98e6f86d9af6fae872225bf6642f96b32c344c01 by Arthur D.
gpu: pvr: pdump: remove page offset juggling
The offset from the start of the page never changes when changing
address spaces, just the page address changes.
If an out of place assert is removed, (as all it could change is the
address printed in an error message), then BM_GetPhysPageAddr() takes
any address, and returns the physical address of the page. It can deal
with an offset, and will return the page address without offset.
These two facts were used to reduce the address wrangling logic even
further.
An obviously wrong masking was fixed in PDumpMem2KM.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit d2679254b0ff19eeb9cd53f4a89d8339cf72c72b by Arthur D.
gpu: pvr: pdump: sanitise stream handling
Upper level pdump calls now have pdump_print and pdump_dump to their
disposal. The former dumps strings, the second dumps raw data to the
pdump stream.
This commit also sanitises debug mode handling to have disabled,
standard and full modes only.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit f7836b8e1e393847d00e9006daa00664bbf4ec07 by Arthur D.
gpu: pvr: pdump: rewrite PDumpMemUM()
Now that we have cleared up the streams, we can delay the
copy_from_user() until copying into the streams. This makes PDumpMemUM
highly similar to PDumpMemKM.
So, split out the printing part from PDumpMemKM, and handle parameter
stream dumping separately for PDumpMemKM and PDumpMemUM.
In turn, this allows the removal of the separate buffer which was the
heart of pdump_common.c, which is removed as well.
No functional change.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was removeddrivers/gpu/pvr/pdump_common.c
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 0531c38aa76b0dcd4a5a36558f1507056e68fb0b by Arthur D.
gpu: pvr: pdump: move pdump.c and pdump_km.h to pvr_pdump.[ch]
Also make pvr_pdump.c build fully conditional.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was addeddrivers/gpu/pvr/pvr_pdump.h
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was removeddrivers/gpu/pvr/pdump_km.h
The file was addeddrivers/gpu/pvr/pvr_pdump.c
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/devicemem.c (diff)
The file was removeddrivers/gpu/pvr/pdump.c
The file was modifieddrivers/gpu/pvr/sgxreset.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pb.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/sgxtransfer.c (diff)
Commit 732c833b4b748098127cdb42734fa2e813febe70 by Arthur D.
gpu: pvr: pdump: remove unused arguments
The eDeviceType passed to SysCpuPAddrToDevPAddr is not used by
SysCpuPAddrToDevPAddr at all. So stop passing eDeviceType to pdump
functions.
In the other cases, hUniqueTag is very unique indeed.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgxreset.c (diff)
Commit c47ff37d73fe5e868ec2eff3d5cbe24245465a80 by Arthur D.
gpu: pvr: pdump: rename PDumpMem2KM to PDumpPageTableKM
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.h (diff)
Commit 381fae35ecf8a9aadbafbac3a9d59f485e79bd21 by Arthur D.
gpu: pvr: pdump: silence sparse warnings in sgx_bridge pdump code
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
Commit 55888a2cc82541fadbf70bd52f176bab1ba20ab2 by Arthur D.
gpu: pvr: pdump: move empty back-end into pvr_pdumpfs.[ch]
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was addeddrivers/gpu/pvr/pvr_pdumpfs.c
The file was addeddrivers/gpu/pvr/pvr_pdumpfs.h
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
Commit cb3e9ae4191a88942ab5e55f75cf10ce32a972cb by Arthur D.
gpu: pvr: pdumpfs: add pdumpfs_mutex
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit 25536faf6531b094deda36692d4f8f5c1f574491 by Arthur D.
gpu: pvr: pdumpfs: add Kconfig and debugfs pdump mode handling
This adds the pvr/pdump debugfs subdirectory, and adds two files there:
mode and modes_possible. The modes_possible file is read-only and lists
the different modes (disabled, standard, full). The mode file is where
we read and set the current mode.
Kconfig now provides an option to select the initial mode pdump is in.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
Commit ea89578e38d4396af747fcaaf74d28bd66735ca6 by Arthur D.
gpu: pvr: pdumpfs: add frame struct and initial frame handling code
Now we are tracking frames correctly, but we are not accepting any data
yet. frame_current is the last of frame_stream, and the frame that we
would be writing to.
New frames are created when userspace flags the start of a new frame
with PDumpSetFrameKM. This is also where we deliberately change the
pdump content by adding two comments. One for flagging the end of the
previous frame, one for the start of the new frame.
We keep at most frame_count_max frames around, older frames will be
removed by frame_cull() which gets called when a new frame gets created.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdump.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.h (diff)
Commit e6811a1d808511548b4a1811d94b7465af2f4736 by Arthur D.
gpu: pvr: pdumpfs: make frame_count_max configurable
Both through a Kconfig option and through debugfs.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
Commit 2e5ab3f3d9e58cac2b4e6398babdc7d0ec46f326 by Arthur D.
gpu: pvr: pdumpfs: start storing pdump data
Page based allocation, with built in copy_from_user to minimise buffer
copies. Up to 2040 pages of data are kept per frame, if this amount is
exceeded, an error message is printed, and a new frame is created
automatically.
Parameter data is stored inside the same stream as script data, but is
encapsulated in "BIN %08X:"..."-- BIN END".
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit 458fa3e67aed6e1a5274d19ac5a4ef47a1a33143 by Arthur D.
gpu: pvr: pdumpfs: add initial frame handling and debugfs support
This adds the separate handling of the initial frame, and adds debugfs
support for this initial frame.
The initial frame is the frame started when the driver is initialised.
Once userspace flags the first frame, the initial frame is ended, and a
new frame started, but the initial frame is not part of the stream list.
The initial frame therefor does not get culled as part of standard frame
culling and is kept around for the life of the driver.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit 646342ff165587f2875ca9806ea4b75645de0c11 by Arthur D.
gpu: pvr: pdumpfs: add debugfs entries for the current frame
We keep another pointer to the current_frame around, so that the data in
our debugfs files is predictable.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit 90986e090ee40a1fa94886e81bf97ef05da14cbe by Arthur D.
gpu: pvr: pdumpfs: add stream offset tracking
Track the size of the stored data, this is split in start and end, so
that the next commit can use the start and end to read out the stream
correctly, even with vanishing frames (where the missing data can be
clearly marked).
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit 0b71a7b92a68c09e3975c9cc3472188a5e5859df by Arthur D.
gpu: pvr: pdumpfs: add stream_frames debugfs entry
A mechanism to read out this data reliably is put in place. And data is
only lost when the stream is no longer being read or when a hard limit
of 1024 frames has been reached when the stream is still open. In case
of missing data, the buffer is padded with "..." to make up for the
missing bytes and to clear mark them.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit 235557b773acd22548d1ec10ee88cf012dcc9281 by Arthur D.
gpu: pvr: pdumpfs: fix for imgtec simulator
When full dumping is enabled through init, the simulator throws in the
towel on the dumped CCB wait at the end of initialisation.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit 6a07184362ea2a9dd928b4524e77440bd0c76f17 by Arthur D.
gpu: pvr: change snprintf to scnprintf
snprintf returns how many characters _would_ have been written if there
had been enough space, whereas scnprintf returns the actual numer of
written characters. The latter fits better our use case.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 5c72e295c625a5d993455ccc760daedb34f87ed2 by Arthur D.
gpu: pvr: reinstate dumping EDM trace to syslog
Since at the moment we don't have any other means to get the EDM trace
for core-matic reports, dump the trace to syslog, which will be picked
up by the core-matic report generating tool.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 6dcba802adfa392c1cfee6acfed2651f8046a782 by Arthur D.
gpu: pvr: fix error path in PVRSRVRegisterBCDeviceKM
Fixing a free with incorrect size and converting another one to use
free(p, sizeof(*p)) instead of free(p, sizeof(typeof(*p)).
Reported-by: Coverity
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/deviceclass.c (diff)
Commit 4825a51c2e59b313995ca1f8bc7ae9ebf61e8d41 by Arthur D.
gpu: pvr: refactor error path in PVRSRVOpenBCDeviceKM
Needed by the next 2 patches fixing the error path.
No functional change.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/deviceclass.c (diff)
Commit 240a00d918a2a3c8d56de60a5d968f2ec2240279 by Arthur D.
gpu: pvr: fix incorrect free size in PVRSRVOpenBCDeviceKM
Also remove the always true condition.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/deviceclass.c (diff)
Commit 5c6b322873670cb97cfd4236ed21c80a1a03dbfe by Arthur D.
gpu: pvr: fix error path in PVRSRVOpenBCDeviceKM
Add missing frees / ref count rollback.
Reported-by: Coverity
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/deviceclass.c (diff)
Commit c087266b40e00dfbb13cd2018e85c5f761a6f9ae by Arthur D.
gpu: pvr: refactor error path in PVRSRVOpenDCDeviceKM
Needed by the next patch fixing the error path.
No functional change.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/deviceclass.c (diff)
Commit 63a0a42d8c7ca10ff975e92c87b5373e0c433ae2 by Arthur D.
gpu: pvr: fix error path in PVRSRVOpenDCDeviceKM
Add missing free.
Reported-by: Coverity
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/deviceclass.c (diff)
Commit f4cc4a2f53d1a23ab7c16f822e6e6516501b6828 by Arthur D.
gpu: pvr: fix PVRSRVWrapExtMemoryKM for user provided physical pages
Reported-by: Coverity
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/devicemem.c (diff)
Commit b2455ba6bbe9ba8085e5c914cf421231afd2cc81 by Arthur D.
gpu: pvr: fix error path in hash _Resize
Add missing free in case of _Rehash fails.
Reported-by: Coverity
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/hash.c (diff)
Commit aab4a5992d537a9229f593cdcd6dedf21d23c0af by Arthur D.
gpu: pvr: optimize mem clear in hash _Resize
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/hash.c (diff)
Commit 4d6f61898d530cdc72ec3ad52863d3ca32e7e7c5 by Arthur D.
gpu: pvr: fix error path in MMU_Initialise
Add missing frees / unmapping at various failure points.
Reported-by: Coverity
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
Commit 9db1e7afb9041ebe5b92891172c7a6939b497a66 by Arthur D.
gpu: pvr: fix state buffer validation
The incorrect comparison size could cause a corrupted buffer info to be
regarded as valid.
Reported-by: Coverity
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 3f411463ea4f10a78f56d9fe0d6818938ba6595b by Arthur D.
gpu: pvr: fix error path in SysInitialise
Add missing check for the mem allocation result.
Fixes: NB#241787 - missing check of return value of OSReservePhys()
Reported-by: Coverity
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
Commit d1499103d74e5945260faa497111dfc32dfd2be7 by Arthur D.
gpu: pvr: remove dead code from the PVRSRVGetFBStatsKM code path
Reported-by: Coverity
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Pauli
Nieminen <ext-pauli.nieminen@nokia.com>
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit 805a2602f9bb83ec86cf5f66ae0a5d27a1886801 by Arthur D.
gpu: pvr: get rid of unnecessary hash lookups for the proc object
We already are passed a pointer to the process specific data, so no need
to do an extra hash lookup just for this purpose.
Note that this lookup overhead was incured in each IOCTL command.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/private_data.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
Commit 4f937ccd7e1bce53a47cf38fb0c435ce0729faab by Arthur D.
gpu: pvr: add missing headers to osfunc.h
Headers should include all type info used within the header.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/osfunc.h (diff)
Commit ae89294b1beaa9e95f133061769e33383a6b552d by Arthur D.
gpu: pvr: get proc name during process attach time
This will be needed by the upcoming patches where we need a cheap way to
get to the current process name.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/perproc.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.h (diff)
The file was modifieddrivers/gpu/pvr/perproc.h (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
Commit 23e7fae8364ec5ad9e42a4a83779da2861401693 by Arthur D.
gpu: pvr: use already existing proc name in pr_err_process info
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 4979532e78fed234ee3a48f33d33e9110e707c54 by Arthur D.
gpu: pvr: add command tracing support
Add a lightweight tracer to track commands submitted by clients. This
can help for example to debug dead-lock situations where command
synchronization counters form a circular dependency.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was addeddrivers/gpu/pvr/pvr_trace_cmd.h
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was addeddrivers/gpu/pvr/pvr_trace_cmd.c
Commit 0834e38a2ead925f5bdd0891fcccbe15f81e96c6 by Arthur D.
gpu: pvr: pass proc info to sgxkick and sgxtransfer
Needed by the next patch adding tracing to these commands.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/sgxtransfer.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit 0cdd9f37750781cb0a4f8df182a3dd8bed32c317 by Arthur D.
gpu: pvr: add tracing to the SGX kick and transfer commands
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/sgxtransfer.c (diff)
Commit e2ce2f3e9993661c5a81263ec55bc5d3f79ff97f by Arthur D.
gpu: pvr: add tracing to the SGX queryblits command
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit 8a8baeffea0c252c86ee2476a470c40b30465cf9 by Arthur D.
gpu: pvr: add tracing for PVR events
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit f2b72778ff6671a6ed37b75c6c078431fc1709ac by Arthur D.
gpu: pvr: add debugfs interface for the command trace
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit e8444034defed79188a5fbe6ab88f1b1ee670769 by Arthur D.
gpu: pvr: print the command trace to syslog during HWrec
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 33fe6641a688aa9738a3b4e3cc93f21eb9ac2675 by Arthur D.
gpu: pvr: fix memory context refcount problem leading to leaked handle
Although there is an IOCTL interface for creating memory contexts, in
reality processes can create only a single context. Subsequent create
commands will return the same context _and_ the same handle, so this
resembles more of an 'open' command, except the somewhat orthodox way of
returning the same handle.
In addition there can be kernel only users of the context accounted for
by the current reference count of the context (ui32RefCount).
Removing the user handle should happen when the last process opening
(creating) the context calls the close (destroy) command on the handle.
At the moment the handle is removed only if there are no kernel side or
user space users of the context, which can lead to the handle being
leaked in the following case:
1. create memory context -> ctx_handle created, ctx_refcount=1 2. create
buffer -> ctx_refcount=2 3. destroy memory context -> ctx_refcount=1,
ctx_handle not removed 4. destroy buffer -> ctx_refcount=0, ctx_handle
not removed
To avoid this add a counter tracking the number of opens, so we know
when to remove the handle.
Fixes: NB#245525 - Return value of pvr_put_ctx is not checked
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/devicemem.c (diff)
Commit 0cf370d8643780653cbf948f23e8bf3e5bd2ef28 by Arthur D.
gpu: pvr: report IOCTL failures
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 9f601874e9ae838ee4391c9358ed5fc3721d4a00 by Arthur D.
gpu: pvr: remove CommonBridgeInit()
By dynamically assigning the function names in the BridgeDispatchTable,
an extra layer of potential errors (when CommonBridgeInit or
SetSGXDispatchTableEntry is not in full sync with the switch statement
in bridged_ioctl()) is removed.
/proc/pvr/bridge_stats now no longer shows IOCTL names and the function
they are supposed to be mapped to. It now shows actual IOCTL numbers,
and the functions called for them (when called at all). It can debated
which is more useful, but the removal of the extra layer of potential
errors wins.
Crucially though, we stop caring about "holes" in IOCTL assignment,
which makes it much easier for me to move pdump ioctls to their own
range.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit ab1b7c2a8b5680b55faa3caf500ac2378a08d265 by Arthur D.
gpu: pvr: move ioctl checking error messagess to pr_err()
This way, we get to actually see ioctls failing.
Also, a pointless check is removed: the switch statement that follows
will take care of unhandled cases for us anyway (and now complain about
them verbosely).
Fixes: NB#251136 - PVR: fix IOCTL command ID range checking
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 2cfce34bfa1fa7f6ce1ff1c1581e8d0204ec573b by Arthur D.
gpu: pvr: fix init script handling for pdump/non-pdump
A PDUMP enabled build has SGX_INIT_OP_HALT shift one up in the enum, as
its former position is replaced with SGX_INIT_OP_PDUMP_HW_REG. When
kernel and userspace are out of sync, this leads to rather interesting
results since the init script is run _before_ userspace build options
are compared with the kernel build options.
By moving SGX_INIT_OP_PDUMP_HW_REG, and not masking it behind #ifdef
PDUMP, we get around this issue for good, without in anyway altering the
behavior of a current non-pdump build.
Some extra checking of the init script is now also included to catch and
warn about all possible cases of kernel and userspace being out of sync,
with respect to pdump support (and the new difference in
OP_PDUMP_HW_REG). This way, even if we do not make it to the build
option checking, we still know what went wrong.
This patch requires matching userspace, but only when pdump is enabled.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgxscript.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 92cea94bc6f7708e421867f78975d3a6188b5184 by Arthur D.
gpu: pvr: move pdump ioctls to its own range at 192
This removes the shifting of ioctls when enabling pdump builds.
Fixes: NB#247418 - PVR kernel driver IOCTL IDs depend on build
configuration
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
Commit df3cb7f9697708894bee77d211abf5b005124407 by Arthur D.
gpu: pvr: debugfs: add registers file
Switches to power state D0 before capturing all registers on open.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit dbc239694e4b72a6f344494f7b5fa8785e73666c by Arthur D.
gpu: pvr: hwrec: fix hwrec_mem_pages type change warnings
Last minute change of hwrec_mem_pages, from u32 to unsigned long, was
not build tested due to hwrec_mem dumping now only happening inside
CONFIG_PVR_DEBUG, which was not given a spin before submission.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 54cf3b5d4c69729f806f6b7f632b846bab922b27 by Arthur D.
gpu: pvr: fix pdumpfs_stream_buffer_clear
Fix tmp[] filling loop so that size == sizeof(tmp) also functions
correctly.
Spotted-by: Phil Carmody <ext-phil.2.carmody@nokia.com> Signed-off-by:
Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre Deak
<imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit 449c50dc73aebc8770f8ca29dfacf0507a31f779 by Arthur D.
gpu: pvr: fix missing return value warning when CONFIG_BUG=n
Although the behaviour after these functions return in a BUG() condition
is undefined, we could still make things somewhat more predictable by
returning the same value every time. Also this way we get rid of the
warning.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
Commit dbdbbc41732575e9713698cade5a07a1fdf9d943 by Arthur D.
gpu: pvr: V2: Find and fix all incorrect sync counter completion checks
Bugfix for a very rare buffer wrap issue on sync counters though the use
of the wrap safe sync_cnt_after_eq function
Fixes: NB#233069 Signed-off-by: Alex Crowther <alex.crowther@imgtec.com>
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit f7964eb5f31b07fd90f6a0abb9d9ee751a0250fc by Arthur D.
gpu: pvr: kick: check for duplicate src syncs
When duplicate syncs are present, we deadlock; so check and throw an
error message. Was already fixed in userspace as part of #253237, this
now shores up the kernel too.
Fixes: NB#254225
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk>
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
Commit 913ef1fe8ad3f7f8578835a21d128966597cbbe8 by Arthur D.
gpu: pvr: add slab.h include in order to make driver build on 2.6.35.3
Forward port to 2.6.35.3
Signed-off-by: Carsten Munk <carsten@maemo.org>
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit 74aae263c497b49211271ed713f495962062bd21 by Arthur D.
SGX: display.h -> omapdss.h
Fix SGX PVR driver to use correct include with linux 3.0.
Signed-off-by: Kimmo Jukarainen <ext-kimmo.jukarainen@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/omaplfb_linux.c (diff)
Commit d06df829315a85449a939c2930945b282dff6df6 by Arthur D.
SGX: console_sem -> console_lock
Fix SGX PVR driver to use correct function names with linux 3.0.
Signed-off-by: Kimmo Jukarainen <ext-kimmo.jukarainen@nokia.com>
The file was modifieddrivers/gpu/pvr/omaplfb_displayclass.c (diff)
Commit c9708706298ce7435a7f6f936c7f543a75a5c61a by Arthur D.
SGX: clk_notifier_register -> cpufreq_register_notifier
Fix SGX PVR driver to use correct function names and macros with linux
3.0.
Signed-off-by: Kimmo Jukarainen <ext-kimmo.jukarainen@nokia.com>
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit e25c482c63af40ec7702c431195886c771b4b0ec by Arthur D.
SGX: Add export.h include to pvr_debugfs.c
Signed-off-by: Jarkko Nikula <jarkko.nikula@jollamobile.com>
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit db0af23de2895787f3590223379eda72ab483a96 by Arthur D.
gpu: pvr: Use DMA mapping API for cache invalidation
___dma_single_dev_to_cpu (and dma_cache_maint before it) is not
available anymore so use standard DMA mapping API methods for cache
invalidation.
Signed-off-by: Jarkko Nikula <jarkko.nikula@jollamobile.com>
The file was modifieddrivers/gpu/pvr/mm.c (diff)
Commit ef90e08def3480642c71a5fe9f90cdf7e22a9fbe by Arthur D.
gpu: pvr: update config dependency name
Renaming occured in commit 35b522cfb ("omapfb/dss: change CONFIG_OMAP*
to CONFIG_FB_OMAP*").
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
Commit afead61d5142969b33cf11e67e494396a5b2e88f by Arthur D.
gpu: pvr: use video/omapfb_dss.h header file
The header file name was changed after splitting omapdss to omapfb and
omapdrm. This driver uses omapfb.
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/omaplfb_linux.c (diff)
Commit d2f738da0dc3629b974daedaf309e40675b301fb by Arthur D.
gpu: pvr: remove includes for asm/system.h
The file was removed in commit 74c4137b2 ("ARM: 7989/1: Delete
asm/system.h").
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/event.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
Commit 3bf8574682c0175c0b26e60fa54300a3b7f96d26 by Arthur D.
gpu: pvr: convert file permissions to numeric
See https://lwn.net/Articles/696227/
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/proc.c (diff)
Commit e7f8a85b987239e8c5ad70ee31dd95a63c639983 by Arthur D.
gpu: pvr: convert proc files to seq_file interface
For good manual on using seq_files interface follow link:
https://www.linux.com/learn/kernel-newbie-corner-kernel-debugging-proc-sequence-files-part-3
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/queue.h (diff)
The file was modifieddrivers/gpu/pvr/queue.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/mm.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/proc.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/ra.c (diff)
Commit a1594ae3d88d674a2451709654288bcf53fa4c42 by Arthur D.
gpu: pvr: proc: use file_inode() macro
The file was modifieddrivers/gpu/pvr/proc.c (diff)
Commit e1ab15495ae7597ffc54510b5bde65b1b8281356 by Arthur D.
gpu: pvr: update write handlers for proc files
The file was modifieddrivers/gpu/pvr/proc.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
Commit f78e8b3c19879ce562d13baca900141604058ba3 by Arthur D.
gpu: pvr: convert timer to use timer_setup()
init_timer() interface was removed from kernel since v4.15 For
background check https://lwn.net/Articles/735887/
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
Commit 6e699401148644dc1bbf52d443b627077908e1b9 by Arthur D.
gpu: pvr: kill vma flag VM_RESERVED
The flag was removed in commit 314e51b98 ("mm: kill vma flag VM_RESERVED
and mm->reserved_vm counter").
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
Commit 10d2866b83d636f987f024398d955446c3b7912d by Arthur D.
gpu: pvr: remove the first parameter of OSAccessOK()
This function follows access_ok() kernel function which was changed by
commit 96d4f267e ("Remove 'type' argument from access_ok() function").
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.h (diff)
Commit 383bb8d41bdab8ef4792e16f344e4ca1cde1885f by Arthur D.
gpu: pvr: page_cache_release() -> put_page()
The function was dropped in commit 1fa64f198 ("mm: drop PAGE_CACHE_* and
page_cache_{get,release} definition").
Explanations can be found in commit 09cbfeaf1 ("mm, fs: get rid of
PAGE_CACHE_* and page_cache_{get,release} macros").
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
Commit 35c621d4f1ae5ff649a3df0942f4fb51737765a4 by Arthur D.
gpu: pvr: update get_user_pages() for changed API
The API changes were introduced in the following commits:
* c12d2da56 ("mm/gup: Remove the macro overload API migration helpers
from the get_user*() APIs")
* 768ae309a ("mm: replace get_user_pages() write/force parameters with
gup_flags")
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
Commit e3211072d082546c73395f69472dc36885e895e0 by Arthur D.
gpu: pvr: remove __dev* attributes
CONFIG_HOTPLUG is gone away as an option.  As a result, the __dev*
markings need to be removed.
Change forced by commit 54b956b90 ("Remove __dev* markings from init.h")
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit de2749644283b671879accec90d540c8f756c3d9 by Arthur D.
gpu: pvr: ignore return value of misc_deregister()
It returns nothing since commit f368ed608 ("char: make misc_deregister a
void function").
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit 75a2585d62758b2298f097da1880bdf98b8a3b2e by Arthur D.
gpu: pvr: proc: rename variables
The file was modifieddrivers/gpu/pvr/proc.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
Commit 25e66011d2befe973a0dd0ff99ef3c550b8e9e4c by Arthur D.
gpu: pvr: rewrite proc files write handling
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/proc.c (diff)
Commit a017455cf2446f1b64d71e5315328124d1b9c3f3 by Arthur D.
gpu: pvr: don't dereference pointers to proc_dir_entry
Members of struct proc_dir_entry are not public anymore. Trying to
dereference pointers to the structure produces compilation errors.
The file was modifieddrivers/gpu/pvr/proc.c (diff)
Commit fbb8cc44c855f04beeeeb7147463dfd80ee8eb0d by Arthur D.
gpu: pvr: include dma.h for dmac_map_area()
The file was addeddrivers/gpu/pvr/dma.h
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit e15787b35afa71bb739093a7fd4ba2bdfe955d01 by Arthur D.
ARM: export cache flush management symbols when !MULTI_CACHE
Fixes: ERROR: "v7_dma_map_area" [drivers/gpu/pvr/pvrsrvkm.ko] undefined!
Origin:
https://github.com/RobertCNelson/stable-kernel/commit/b00edc3576118e9ed3e987f9a2a3499b7dd792f5
http://www.spinics.net/lists/arm-kernel/msg214633.html
Author: Pantelis Antoniou <panto@antoniou-consulting.com>
The file was modifiedarch/arm/mm/dma-mapping.c (diff)
Commit 5d8330af30b7b3bd8369f2c893dca409109e25e3 by Arthur D.
gpu: pvr: remove unused omap_pm_set_min_bus_tput()
See commit 44773ba17 ("ARM: OMAP2+: Drop unused pm-noop").
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 306294b4d5f6a8aa762e1f1012b6615494184b37 by Arthur D.
gpu: pvr: make sysutils.o build
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was addeddrivers/gpu/pvr/mach-omap2
Commit 7177337ac4ba8f913d103d4e6ff42eb4ffe7f96e by Arthur D.
gpu: pvr: add header for cpu_clock()
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
Commit 918f15f8bed1c4e086dca4f31339e6ef642729b5 by Arthur D.
gpu: pvr: events: remove unused do_gettimeofday()
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit 50474b3b1437766a65e40454936c60a325e595cc by Arthur D.
gpu: pvr: debugfs: get rid of do_gettimeofday()
The function was removed in commit e4b92b108 ("timekeeping: remove
obsolete time accessors").
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit d83d1483dfa56637bd796b93901de9e813004b13 by Arthur D.
gpu: pvr: events: get rid of do_gettimeofday()
The function was removed in commit e4b92b108 ("timekeeping: remove
obsolete time accessors").
Use ktime_get_ts64() for monotonic timestamps.
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit 7c8e5525f47f6dbcfdc4af711cbc09558d2186d8 by Arthur D.
gpu: pvr: set proper SGX maximum clock rate
The value was taken from Maemo Fremantle kernel driver.
The file was modifieddrivers/gpu/pvr/sysconfig.h (diff)
Commit bb2482765ecdd2aca9540b0b09c67b569b60a92d by Arthur D.
gpu: pvr: add device tree support
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit 53476a794ba7f00e02ea8f42aef0025c06a3fbfc by Arthur D.
ARM: dts: omap34xx: add GPU entry
The file was modifiedarch/arm/boot/dts/omap34xx.dtsi (diff)
Commit aff66178173e6dcd5eb3bfb2aecf2fbbf87574d3 by Arthur D.
gpu: pvr: update for common clk framework
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 9723b6390afeba6d6914a46a60ba9b4d36dd6cb7 by Arthur D.
gpu: pvr: remove irrelevant clk_set_parent()
Clocks hierarchy is described in device tree file:
arch/arm/boot/dts/omap36xx-am35xx-omap3430es2plus-clocks.dtsi
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 6158771f6051e9b4bab306111b07517f9da6ebfd by Arthur D.
gpu: pvr: cpufreq_register_notifier -> clk_notifier_register
Revert commit "SGX: clk_notifier_register -> cpufreq_register_notifier"
and update for common clk framework.
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit be297ee9bfbd4095a7dec0f0c53a0e1490867e85 by Arthur D.
gpu: pvr: remove line wraps
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
Commit fef8ea5d085d43e63bc0577d8e41d6a7d60f89bb by Arthur D.
gpu: pvr: set FMODE_UNSIGNED_OFFSET
Since be83bbf80 ("mmap: introduce sane default mmap limits") there's
been checking of mmap size. Let's assume the client-side driver does it
correctly.
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit 0a34234a5ecb9f828311380f4eedc10ab5d8cfc0 by Arthur D.
gpu: pvr: debug: show memory stats in /proc/slabinfo
Separate constructors prevent cache merging.
That's how it works:
   kmem_cache_create() ->
-> kmem_cache_create_usercopy() ->
-> __kmem_cache_alias() ->
-> find_mergeable()
If constructor is NULL, find_mergeable() can return already registered
cache for merging. New cache is not created, therefore it's not
represented in /proc/slabinfo.
The file was modifieddrivers/gpu/pvr/mm.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
Commit c7f9656bb44f05ea6ed15bbe4d3f3eb182df3742 by Arthur D.
gpu: pvr: enhance debugging
Allow additional messages to be logged without enabling "Extra debugging
info" driver option.
Port some debugging messages from Maemo Fremantle driver.
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/resman.c (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
The file was modifieddrivers/gpu/pvr/syslocal.h (diff)
The file was modifieddrivers/gpu/pvr/sgxreset.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 50e2e318168605529a43d342273f33d9f6604a49 by Arthur D.
gpu: pvr: fix CONFIG_PVR_TRACE_CMD=y compilation
The file was modifieddrivers/gpu/pvr/pvr_trace_cmd.c (diff)
Commit eff56d36b7bf3e06f7dc2ab9e5e31dd630a5ef73 by Arthur D.
gpu: pvr: trace_cmd: fix empty buffer
Don't return -ENOMEM when the buffer is empty.
The file was modifieddrivers/gpu/pvr/pvr_trace_cmd.c (diff)
Commit 2801a92c1ba54c60d3968a84381563a09700aa26 by Arthur D.
gpu: pvr: trace_cmd: rewrite with seq_file
Fix system hangs when dumping traces longer than one page.
The file was modifieddrivers/gpu/pvr/pvr_trace_cmd.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_trace_cmd.c (diff)
Commit 473a2c734da85cff94c7f521afcb28079e6b239e by Arthur D.
OMAP: DSS2: apply patch from Nemo Adaptation
Consists of the following patches:
OMAP: DSS2: Fix notifiers when swapping managers OMAP: DSS2: Rename
pending_notify to requested_events OMAP: DSS2: Implement update notify
for manual update display OMAP: DSS2: Implement support for more
notification types. OMAP: DSS2: use atomic notifiers OMAP: DSS2: return
error values down to caller OMAP: DSS2: Rename notify_go to notify OMAP:
DSS2: Use GO notifiers for wait_for_go() OMAP: DSS2: Add GO notifiers
OMAP: DSS2: in_use flag for dss_data OMAP: DSS2: Keep track whether
overlay managers are enabled OMAP: DSS2: Use
spin_lock_irqsave/unlock_irqrestore in apply irq handler
The source:
http://releases.nemomobile.org/releases/latest/repos/hw/ti/omap3/n900/armv7hl/src/kernel-adaptation-n900-2.6.37-1.4.Nemo.Adaptation.N9xx.src.rpm
The file was modifieddrivers/video/fbdev/omap2/omapfb/dss/dss.h (diff)
The file was modifieddrivers/video/fbdev/omap2/omapfb/dss/apply.c (diff)
The file was modifiedinclude/video/omapfb_dss.h (diff)
Commit ce905ff88ad8bdebd5785ceb22e88aef27d28a8f by Arthur D.
OMAP: DSS2: fix state checking
dssdev->state is not synchronized with dssdev->dst->state, so we need to
use the latter explicitly
The file was modifieddrivers/video/fbdev/omap2/omapfb/dss/apply.c (diff)
Commit 9cbf5b83c9725dfbd289a0931c2e87cfd32f020e by Arthur D.
Input: tsc200x-core - add 'disable' sysfs attribute
We need 'disable' attribute to be able to control the power consumption
of touchscreen in user space.
This reverts commit 5cb81d19b. Thanks Pali Rohár.
The file was modifieddrivers/input/touchscreen/tsc200x-core.c (diff)
Commit 05554aab34169a80716298bc2cbac8dedd1ac476 by Arthur D.
ARM: dts: n900: remove rx51-battery
N900 has bq27200 chip, which provides much better functionality when
exposing battery properties.
No need to confuse userspace with two battery devices exposed by the
kernel at the same time.
The file was modifiedarch/arm/boot/dts/omap3-n900.dts (diff)
Commit cb1108562c363b3ff2a407a84431bb4a4daff0ee by Arthur D.
ARM: dts: n900: increase charge current limit to 950mA
That was default in Maemo Fremantle
The file was modifiedarch/arm/boot/dts/omap3-n900.dts (diff)
Commit dd70f614b57ad885db015b8b27e4404ac6d4ae33 by Arthur D.
bq27x00: use cached flags
The flags were just read by bq27xxx_battery_update(), no need to read
them again.
Signed-off-by: Arthur Demchenkov <spinal.by@gmail.com>
The file was modifieddrivers/power/supply/bq27xxx_battery.c (diff)
Commit 3049df1791aaee614157c03733e22b93e615b83f by Arthur D.
ARM: dts: n900: ignore mmc1 card detect gpio
Allow the device to boot from external MMC with back cover removed.
See https://github.com/maemo-leste/bugtracker/issues/225
The file was modifiedarch/arm/boot/dts/omap3-n900.dts (diff)
Commit 367b187a3fa157facf255338729231f2b124cf3d by Arthur D.
phy: phy-twl4030-usb: Fix cable state handling
With the recent regulator changes I noticed new warnings on doing rmmod
of phy-twl4030-usb:
WARNING: CPU: 0 PID: 1080 at drivers/regulator/core.c:2046
_regulator_put
...
Turns out we can currently miss disconnect at least for cases where
status is 0 and linkstat is 0. And in that case doing rmmod
phy-twl4030-usb will produce the regulator_put() warning.
This is because the missed disconnect causes unbalanced PM runtime calls
and the regulators will be on exit.
Let's fix the issue by using an atomic flag for the cable state to make
sure that PM runtime won't get out of sync with the cable state. That
way we can also simplify the code a bit.
Note that we can also drop the old comments, those relate to issues that
the battery charger driver and musb driver is dealing with rather than
the USB PHY driver.
Cc: NeilBrown <neilb@suse.com> Signed-off-by: Tony Lindgren
<tony@atomide.com>
The file was modifieddrivers/phy/ti/phy-twl4030-usb.c (diff)
Commit 8dd870e4c30cd0ddf355a5b8aecca569acd3119b by Arthur D.
usb: musb: omap2430: Add support for idling phy when musb is idle
I noticed that musb is blocking core retention for omap4 unlike for
omap3. This is because for omap3 we have phy-twl4030-usb implement it's
own PM runtime to handle errata "VUSB3V1 VBUS overvoltage debouncer not
working when the PHY is powered down". That is done in order to keep the
USB PHY powered when phy-twl4030-usb is loaded.
For the other USB PHYs, we need to enable and disable the PHY based on
musb PM runtime. With the session bit based PM runtime for musb core, we
can now idle the USB PHY always when musb is idle.
Note that adding these calls will not affect the twl4030 driver as it's
phy functions will just query the PHY state without powering the PHY on
or off.
Signed-off-by: Tony Lindgren <tony@atomide.com>
The file was modifieddrivers/usb/musb/omap2430.c (diff)
Commit d133034d94d3f7068b10bceca1d5f408ee90e205 by Arthur D.
ARM: n900_defconfig: rename omap2plus_defconfig
The file was addedarch/arm/configs/n900_defconfig
The file was removedarch/arm/configs/omap2plus_defconfig
Commit fa27e1c943252cd16ad93fcbb6334b242950df8e by Arthur D.
ARM: n900_defconfig: update for current kernel
The config file was updated using these commands: make ARCH=arm
n900_defconfig make ARCH=arm savedefconfig mv defconfig
arch/arm/configs/n900_defconfig
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit e5966571919572acf177b3efd6fa68634a9e4c12 by Arthur D.
ARM: n900_defconfig: disable lock debugging
These options are supposed to be used by kernel hackers who debug
drivers. Not recommended to be included in distro kernels.
WARNING: enabling CONFIG_DEBUG_LOCK_ALLOC causes LCD to be unusable. The
reason is not yet established.
Kernel hacking  --->
Lock Debugging (spinlocks, mutexes, etc...)  --->
  [ ] Lock debugging: prove locking correctness  
[CONFIG_PROVE_LOCKING]
  [ ] RT Mutex debugging, deadlock detection     
[CONFIG_DEBUG_RT_MUTEXES]
  [ ] Spinlock and rw-lock debugging: basic checks
[CONFIG_DEBUG_SPINLOCK]
  [ ] Mutex debugging: basic checks              
[CONFIG_DEBUG_MUTEXES]
  [ ] Wait/wound mutex debugging: Slowpath testing
[CONFIG_DEBUG_WW_MUTEX_SLOWPATH]
  [ ] Lock debugging: detect incorrect freeing ...
[CONFIG_DEBUG_LOCK_ALLOC]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 9e35be9eaccbabc215c200c78d1279ebd165339f by Arthur D.
ARM: n900_defconfig: disable SMP
We only have one CPU.
Kernel Features  --->
[ ] Symmetric Multi-Processing  [CONFIG_SMP]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 964c5115bc61493eb40737cf09011ebec66c0282 by Arthur D.
ARM: n900_defconfig: disable DRM
Current PowerVR SGX driver is tied to omapfb.
Device Drivers  --->
Graphics support  --->
  < > Direct Rendering Manager (XFree86 ... support)  [CONFIG_DRM]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 1050f7f88cebc01cc5903c8ac96f44f706c39ba6 by Arthur D.
ARM: n900_defconfig: make display work
Device Drivers  --->
Graphics support  --->
  Frame buffer Devices  --->
   <*> OMAP2+ frame buffer support ---> [CONFIG_FB_OMAP2]
    [ ] DPI support                     [CONFIG_FB_OMAP2_DSS_DPI]
    [ ] HDMI support for OMAP4          [CONFIG_FB_OMAP4_DSS_HDMI]
    [*] SDI support                     [CONFIG_FB_OMAP2_DSS_SDI]
    OMAPFB Panel and Encoder Drivers --->
     <*> Analog TV Connector          
[CONFIG_FB_OMAP2_CONNECTOR_ANALOG_TV]
     <*> ACX565AKM Panel              
[CONFIG_FB_OMAP2_PANEL_SONY_ACX565AKM]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 0ed05e0dcef46b9e42163a697ed7d14c6f0000f8 by Arthur D.
ARM: n900_defconfig: enable PowerVR SGX
Device Drivers  --->
Graphics support  --->
  <M> PowerVR Services  [PVR]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 797a7f772243534b5eb22d9dfd693265e6f9b018 by Arthur D.
ARM: n900_defconfig: enable WiFi
Device Drivers  --->
Network device support  --->
  Wireless LAN  --->
   [ ] ADMtek devices                   [CONFIG_WLAN_VENDOR_ADMTEK]
   [ ] Atheros/Qualcomm devices         [CONFIG_WLAN_VENDOR_ATH]
   [ ] Atmel devices                    [CONFIG_WLAN_VENDOR_ATMEL]
   [ ] Broadcom devices                 [CONFIG_WLAN_VENDOR_BROADCOM]
   [ ] Cisco devices                    [CONFIG_WLAN_VENDOR_CISCO]
   [ ] Intel devices                    [CONFIG_WLAN_VENDOR_INTEL]
   [ ] Intersil devices                 [CONFIG_WLAN_VENDOR_INTERSIL]
   [ ] Marvell devices                  [CONFIG_WLAN_VENDOR_MARVELL]
   [ ] MediaTek devices                 [CONFIG_WLAN_VENDOR_MEDIATEK]
   [ ] Ralink devices                   [CONFIG_WLAN_VENDOR_RALINK]
   [ ] Realtek devices                  [CONFIG_WLAN_VENDOR_REALTEK]
   [ ] Redpine Signals Inc devices      [CONFIG_WLAN_VENDOR_RSI]
   [ ] STMicroelectronics devices       [CONFIG_WLAN_VENDOR_ST]
   <M> TI wl1251 driver support         [CONFIG_WL1251]
   <M> TI wl1251 SPI support            [CONFIG_WL1251_SPI]
   < > TI wl12xx support                [CONFIG_WL12XX]
   < > TI wl18xx support                [CONFIG_WL18XX]
   < > TI wlcore support                [CONFIG_WLCORE]
   [ ] ZyDAS devices                    [CONFIG_WLAN_VENDOR_ZYDAS]
   [ ] Quantenna wireless cards support [CONFIG_WLAN_VENDOR_QUANTENNA]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 843ca43e63e5fcd337f095ab1e2e7c5edd88a6f3 by Arthur D.
ARM: n900_defconfig: set kernel compression mode to LZ4
This one is the fastest.
General setup  --->
Kernel compression mode (LZ4)  [CONFIG_KERNEL_LZ4]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 7e1eab20ab150ad6f9a771c3f7ac58a18e811d0d by Arthur D.
ARM: n900_defconfig: don't store .config in kernel
Three reasons:
- we are on low memory;
- it's default for current debian kernel config;
- there's no need to store config file in the kernel
General setup  --->
< > Kernel .config support  [CONFIG_IKCONFIG]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit cd8e73c26a34a98bd547da77e9cff2f40716b794 by Arthur D.
ARM: n900_defconfig: increase kernel log buffer size
Changed from 64KB to 256KB.
General setup  --->
(18) Kernel log buffer size (16 => 64KB, 17 => 128KB)
[CONFIG_LOG_BUF_SHIFT]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 8bc9821018f26b1f9aebc74e2437286a3330b0a6 by Arthur D.
ARM: n900_defconfig: disable swap controller (cgroup)
- Reduce kernel memory usage.
- This option is disabled in Debian kernels as well.
- Can be enabled at runtime.
General setup  --->
Control Group support  --->
  [ ] Swap controller enabled by default  [CONFIG_MEMCG_SWAP_ENABLED]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit c543eae373ba27b8c638806b6554c1158f103da7 by Arthur D.
ARM: n900_defconfig: remove obsolete sysfs syscall
- No longer supported in libc.
- This option is disabled in Debian kernel.
General setup  --->
Configure standard kernel features (expert users)  --->
  [ ] Sysfs syscall support  [CONFIG_SYSFS_SYSCALL]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 72046513df87d1dcd3fff17caf3d44d4ea5adf49 by Arthur D.
ARM: n900_defconfig: select SLUB as slab allocator
This one is stated to be the default by kernel documentation.
Check this link for some background:
https://stackoverflow.com/questions/15470560/what-to-choose-between-slab-and-slub-allocator-in-linux-kernel
General setup  --->
Choose SLAB allocator (SLUB (Unqueued Allocator))  [CONFIG_SLUB]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit bdd38688ad31dfd2dcffc2c762a456bd766505fb by Arthur D.
ARM: n900_defconfig: disable ARMv6
Nokia N900 is based on ARMv7.
System Type  --->
Multiple platform selection  --->
  [ ] ARMv6 based platforms (ARM11)  [ARCH_MULTI_V6]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 452b65cfb4d00f49fd12c5fd793b5b643d625ce5 by Arthur D.
ARM: n900_defconfig: remove excessive systems
We only need TI OMAP3 here.
System Type  --->
TI OMAP/AM/DM/DRA Family  --->
  [ ] TI OMAP4   [ARCH_OMAP4]
  [ ] TI OMAP5   [SOC_OMAP5]
  [ ] TI AM33XX  [SOC_AM33XX]
  [ ] TI AM43x   [SOC_AM43XX]
  [ ] TI DRA7XX  [SOC_DRA7XX]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 03e7769683a353b6b0409853227344162e6c7048 by Arthur D.
ARM: n900_defconfig: clean up SoC specific features
N900 is based on OMAP3430.
System Type  --->
TI OMAP/AM/DM/DRA Family  --->
  TI OMAP2/3/4 Specific Features --->
   [ ] TI81XX support              [SOC_TI81XX]
   [ ] OMAP3517/ AM3517 EVM board  [MACH_OMAP3517EVM]
   [ ] OMAP3 Pandora               [MACH_OMAP3_PANDORA]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 788dbedd23086ad173e9105e1c64401ae3201b60 by Arthur D.
ARM: n900_defconfig: clean up common clock framework
Device Drivers  --->
Common Clock Framework  --->
  < > Clock driver for dm814x ADPLL  [CONFIG_COMMON_CLK_TI_ADPLL]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 95f768e98ccaff8973f12dace21d472fdc6b19d7 by Arthur D.
ARM: n900_defconfig: disable extraneous erratas
N900 is based on Cortex-A8. Erratas below are for Cortex-A9.
System Type  --->
[ ] ARM errata: TLBIASIDIS and TLBIMVAIS ...
[CONFIG_ARM_ERRATA_720789]
[ ] ARM errata: possible faulty MMU trans...
[CONFIG_ARM_ERRATA_754322]
[ ] ARM errata: A data cache maintenance ...
[CONFIG_ARM_ERRATA_775420]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit b94602d66072e6b2aeaa4747f2a3081bcb1cf9c8 by Arthur D.
ARM: n900_defconfig: disable L2x0 PrimeCell
I didn't find mentions of this controller to be used in OMAP3430/ARMv7.
And its "Selected by" section doesn't show anything interesting for us.
System Type  --->
[ ] Enable the L2x0 outer cache controller  [CONFIG_CACHE_L2X0]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 80c0661ff30fb422eb679db5dc3d9a21eeb8d5d4 by Arthur D.
ARM: n900_defconfig: disable PCI
Obviously N900 doesn't have a PCI controller.
Device Drivers  --->
[ ] PCI support
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 8c7e814de500acc691c9517d53a9665f509c618c by Arthur D.
ARM: n900_defconfig: set preemption model to "Desktop"
It should give good performance and responsibility at the same time.
General setup  --->
Preemption Model (Voluntary Kernel Preemption (Desktop))
[CONFIG_PREEMPT_VOLUNTARY]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 274e0102cfac07205123a1332720b24b2f2ca7ca by Arthur D.
ARM: n900_defconfig: optimize kernel for size
General setup  --->
Compiler optimization level (Optimize for size)
[CONFIG_CC_OPTIMIZE_FOR_SIZE]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit cdcf5b31d24403f5402832c3b291cbfa0b5ea668 by Arthur D.
ARM: n900_defconfig: build in Thumb-2 mode
This should optimize kernel size and performance using ARMv7 thumb2
instructions set.
Kernel Features  --->
[*] Compile the kernel in Thumb-2 mode  [CONFIG_THUMB2_KERNEL]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit fbbf0270f8a28b9d24f744f8d9cba0fcd5867739 by Arthur D.
ARM: n900_defconfig: disable Thumb-2 bug workaround
Seems like the bug was fixed in 2011. Check
https://bugs.launchpad.net/binutils-linaro/+bug/725126
Kernel Features  --->
[ ] Work around buggy Thumb-2 short branch relocations in gas
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 3d8d9e3243c4a18eafac6f5d03a1b45ae0ca8718 by Arthur D.
ARM: n900_defconfig: set timer frequency to 200 Hz
This is default in Debian kernel.
Kernel Features  --->
Timer frequency (200 Hz)  [HZ_200]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 137e3961fcc5001d5294d879660b1fbfd5043ead by Arthur D.
ARM: n900_defconfig: disable highmem interaction code
We only have 256M of RAM (and some swap possible). The code for
interaction with 4G+ memory is excessive.
Kernel Features  --->
[ ] Allocate 2nd-level pagetables from highmem  [CONFIG_HIGHPTE]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 55d462db125e6e5917703753d49beb2175e7e3f5 by Arthur D.
ARM: n900_defconfig: disable ATAGS
We use device tree blob attached to the kernel for booting. Remove ATAGS
support to reduce the kernel code.
Boot options  --->
[ ] Support for the traditional ATAGS boot data passing  [CONFIG_ATAGS]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit df5c7d92a127538dbd09aca7c7a5de8e88d29f0e by Arthur D.
ARM: n900_defconfig: disable SATA/PATA
N900 doesn't have such controller.
Device Drivers  --->
< > Serial ATA and Parallel ATA drivers (libata)  [CONFIG_ATA]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 21bda1f37d1caf73e26b1e6a7be4f3eb91e213e6 by Arthur D.
ARM: n900_defconfig: clean up 'Power supply'
Device Drivers  --->
Power supply class support  --->
  < > Motorola CPCAP PMIC battery driver  [CONFIG_BATTERY_CPCAP]
  < > BQ27xxx HDQ support                 [CONFIG_BATTERY_BQ27XXX_HDQ]
  < > CPCAP PMIC Charger Driver           [CONFIG_CHARGER_CPCAP]
  < > OMAP TWL4030 BCI charger driver     [CONFIG_CHARGER_TWL4030]
  < > TI BQ24190 battery charger driver   [CONFIG_CHARGER_BQ24190]
  < > TI BQ24735 battery charger support  [CONFIG_CHARGER_BQ24735]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 9da71e0966a64c431123136a5e7bd2b73218d282 by Arthur D.
ARM: n900_defconfig: clean up 'Keyboards'
Device Drivers  --->
Input device support  --->
  Keyboards  --->
   < > AT keyboard                        [CONFIG_KEYBOARD_ATKBD]
   < > GPIO driven matrix keypad support  [CONFIG_KEYBOARD_MATRIX]
   < > TI OMAP4+ keypad support           [CONFIG_KEYBOARD_OMAP4]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 8fd955993730cf3be79d6633d0a99ba426362d98 by Arthur D.
ARM: n900_defconfig: clean up 'Touchscreens'
Device Drivers  --->
Input device support  --->
  Touchscreens  --->
   < > ADS7846/TSC2046/AD7873 ...   [CONFIG_TOUCHSCREEN_ADS7846]
   < > Atmel mXT I2C Touchscreen    [CONFIG_TOUCHSCREEN_ATMEL_MXT]
   < > EDT FocalTech FT5x06 I2C ... [CONFIG_TOUCHSCREEN_EDT_FT5X06]
   < > TI Touchscreen Interface     [CONFIG_TOUCHSCREEN_TI_AM335X_TSC]
   < > PIXCIR I2C touchscreens      [CONFIG_TOUCHSCREEN_PIXCIR]
   < > TSC2004 based touchscreens   [CONFIG_TOUCHSCREEN_TSC2004]
   < > TSC2007 based touchscreens   [CONFIG_TOUCHSCREEN_TSC2007]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 723d71fc1b6debd0230c80f27de128c3ee15dd9f by Arthur D.
ARM: n900_defconfig: clean up 'Real Time Clock'
Device Drivers  --->
Real Time Clock  --->
  < > Dallas/Maxim DS1307/37/38/39/40/41, ...   [CONFIG_RTC_DRV_DS1307]
  < > ST M41T62/65/M41T80/81/82/83/84/85/87 ... [CONFIG_RTC_DRV_M41T80]
  < > TI Palmas RTC driver                      [CONFIG_RTC_DRV_PALMAS]
  < > TI OMAP Real Time Clock                   [CONFIG_RTC_DRV_OMAP]
  < > Motorola CPCAP RTC                        [CONFIG_RTC_DRV_CPCAP]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit c9ac22c0a14470ee62c492a036d0e449cfaadc61 by Arthur D.
ARM: n900_defconfig: compile RTC driver in kernel
This prevents wrong timestamps on early kernel boot time and removes the
need to have a service/udev rule running 'hwclock --hctosys'. It also
allows to avoid unnecessary fsck runs at boot time.
Without this change, kernel options RTC_HCTOSYS=y and
RTC_HCTOSYS_DEVICE=rtc0 have no effect except errors in the logs.
Device Drivers  --->
Real Time Clock  --->
  <*> TI TWL4030/TWL5030/TWL6030/TPS659x0  [CONFIG_RTC_DRV_TWL4030]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 7c1242b79f8830124d5a91b42b0d8059098bbff8 by Arthur D.
ARM: n900_defconfig: compile watchdog drivers in kernel
This should prevent occasional shut downs on slow booting.
Device Drivers  --->
Watchdog Timer Support  --->
  <*> OMAP Watchdog     [CONFIG_OMAP_WATCHDOG]
  <*> TWL4030 Watchdog  [CONFIG_TWL4030_WATCHDOG]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 93a6cb83a2c4f58c1d3fe098e6a3534b35f6769d by Arthur D.
ARM: n900_defconfig: enable ZRAM
Memory Management options  --->
<M> Memory allocator for compressed pages         [CONFIG_ZSMALLOC]
[*]   Use page table mapping to access object ...
[CONFIG_PGTABLE_MAPPING] Device Drivers  --->
Block devices  --->
   <M> Compressed RAM block device support         [CONFIG_ZRAM]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 810d5b91ee41a265512ce5c32ebc44deeb0ba23d by Arthur D.
ARM: n900_defconfig: enable ZSWAP
Usage: https://wiki.archlinux.org/index.php/zswap
Memory Management options  --->
[*] Enable frontswap to cache swap pages if tmem is ...
[CONFIG_FRONTSWAP]
[*] Compressed cache for swap pages (EXPERIMENTAL)      [CONFIG_ZSWAP]
<M> Low (Up to 2x) density storage for compressed pages [CONFIG_ZBUD]
<M> Up to 3x density storage for compressed pages       [CONFIG_Z3FOLD]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 6e184a4766707577f5c5c1b3afbd017ed5aa6357 by Arthur D.
ARM: n900_defconfig: change cmdline 'console' param
Set console=tty1 for default kernel command line. This allows boot
messages to be displayed when kernel parameters are omitted. I.e. if you
do "run sdboot" from U-Boot console.
Boot options  --->
Default kernel command string  [CONFIG_CMDLINE]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 6e6bc6931b536c4a6dc44540b0379507d200a8d5 by Arthur D.
ARM: n900_defconfig: add common filesystems
File systems  --->
<M> Reiserfs support                         [CONFIG_REISERFS_FS]
<M> XFS filesystem support                   [CONFIG_XFS_FS]
<M> Btrfs filesystem support                 [CONFIG_BTRFS_FS]
<M> FUSE (Filesystem in Userspace) support   [CONFIG_FUSE_FS]
<M> Overlay filesystem support               [CONFIG_OVERLAY_FS]
CD-ROM/DVD Filesystems  --->
  <M> ISO 9660 CDROM file system support      [CONFIG_ISO9660_FS]
  <M> UDF file system support                 [CONFIG_UDF_FS]
DOS/FAT/NT Filesystems  --->
  <M> MSDOS fs support                        [CONFIG_MSDOS_FS]
  <M> VFAT (Windows-95) fs support            [CONFIG_VFAT_FS]
  <M> NTFS file system support                [CONFIG_NTFS_FS]
Miscellaneous filesystems  --->
  <M> Journalling Flash File System v2 ...    [CONFIG_JFFS2_FS]
  <M> Compressed ROM file system support ...  [CONFIG_CRAMFS]
  <M> SquashFS 4.0 - Squashed file system ... [CONFIG_SQUASHFS]
Network File Systems  --->
  <M> NFS client support  [CONFIG_NFS_FS]
  <M> SMB3 and CIFS support (advanced ... )   [CONFIG_CIFS]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 1816cdc900e51e08acc8221730f2870753df803f by Arthur D.
ARM: n900_defconfig: filesystems native language
File systems  --->
DOS/FAT/NT Filesystems  --->
  (ascii) Default iocharset for FAT      
[CONFIG_FAT_DEFAULT_IOCHARSET]
  [*] Enable FAT UTF-8 option by default   [CONFIG_FAT_DEFAULT_UTF8]
Native language support  --->
  (utf8) Default NLS Option                [CONFIG_NLS_DEFAULT]
  <M> Codepage 437 (United States, Canada) [CONFIG_NLS_CODEPAGE_437]
  <M> ASCII (United States)                [CONFIG_NLS_ASCII]
  <M> NLS ISO 8859-1  (Latin 1; ...)       [CONFIG_NLS_ISO8859_1]
  <M> NLS UTF-8                            [CONFIG_NLS_UTF8]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 730b6249fb00688ffe7aea1700ceefa8693f8671 by Arthur D.
ARM: n900_defconfig: systemd related options
The source: https://github.com/systemd/systemd/blob/master/README
General setup  --->
Control Group support  --->
  CPU controller  --->
   [ ] Group scheduling for SCHED_RR/FIFO       [CONFIG_RT_GROUP_SCHED]
Namespaces support  --->
  [*] User namespace                            [CONFIG_USER_NS]
[*] Checkpoint/restore support               
[CONFIG_CHECKPOINT_RESTORE] Enable the block layer  --->
[*] Block layer SG support v4                  [CONFIG_BLK_DEV_BSG]
Device Drivers  --->
Generic Driver Options  --->
  [ ] Support for uevent helper                 [CONFIG_UEVENT_HELPER]
File systems  --->
[*] Ext4 POSIX Access Control Lists          
[CONFIG_EXT4_FS_POSIX_ACL]
[*] XFS POSIX ACL support                      [CONFIG_XFS_POSIX_ACL]
[*] Btrfs POSIX Access Control Lists         
[CONFIG_BTRFS_FS_POSIX_ACL]
{*} Kernel automounter support (supports ... ) [AUTOFS_FS]
Cryptographic API  --->
{*}   HMAC support                             [CONFIG_CRYPTO_HMAC]
{*}   SHA224 and SHA256 digest algorithm       [CONFIG_CRYPTO_SHA256]
<*>   User-space interface for hash algorithms
[CONFIG_CRYPTO_USER_API_HASH]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit aa729ef333e57d4affd16b353f73ea58635349a2 by Arthur D.
ARM: n900_defconfig: PowerTOP related options
The source: https://wiki.gentoo.org/wiki/PowerTOP
CPU Power Management  --->
CPU Frequency scaling  --->
  [*] CPU frequency transition statistics   [CONFIG_CPU_FREQ_STAT]
Kernel hacking  --->
Tracers  --->
  [*] Support for tracing block IO actions  [CONFIG_BLK_DEV_IO_TRACE]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit bc747929e44a72bf799aecbae1c6cb7483095f07 by Arthur D.
ARM: n900_defconfig: disable ethernet drivers
This removes some drivers compiled in kernel. So the kernel will occupy
less memory.
Device Drivers  --->
Network device support  --->
  [ ] Ethernet driver support  [CONFIG_ETHERNET]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 94755e6092ec628ccaffb45cde2dd6eb24d9e2f9 by Arthur D.
ARM: n900_defconfig: compile PHY devices drivers as modules
Remove drivers from kernel, so the kernel will occupy less memory.
Device Drivers  --->
Network device support  --->
  {M} PHY Device support and infrastructure  [CONFIG_PHYLIB]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 2a4e248c77760ed184379afd7a348f86941a0d90 by Arthur D.
ARM: n900_defconfig: enable nokia modem
Device Drivers  --->
HSI support  --->
  <M> CMT speech                [CONFIG_CMT_SPEECH]
  <M> Nokia Modem               [CONFIG_NOKIA_MODEM]
  <M> HSI/SSI character driver  [CONFIG_HSI_CHAR]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 06450ec7cb40f928653c2773c5bdce928f78d2ff by Arthur D.
ARM: n900_defconfig: enable accelerometer
Device Drivers  --->
Misc devices  --->
  <M> STMicroeletronics LIS3LV02Dx three-axis ...
[CONFIG_SENSORS_LIS3_I2C]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 6f89da74b5d57b8814dcdf866469e66c10074a29 by Arthur D.
ARM: n900_defconfig: change compiler debug options
Set these options in similar way to Debian kernel.
Kernel hacking  --->
Compile-time checks and compiler options  --->
  [ ] Produce split debuginfo in .dwo files       
[CONFIG_DEBUG_INFO_SPLIT]
  [ ] Generate dwarf4 debuginfo                   
[CONFIG_DEBUG_INFO_DWARF4]
  [*] Strip assembler-generated symbols during link
[CONFIG_STRIP_ASM_SYMS]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 8d33e0db1486876e76fe3f23b33e6b132b5114d8 by Arthur D.
ARM: n900_defconfig: disable initramfs/initrd
We don't use initrd for booting, disable it to save memory.
General setup  --->
[ ] Initial RAM filesystem and RAM disk ...  [CONFIG_BLK_DEV_INITRD]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 238e737a797051f9d4fa951934038b826b44435c by Arthur D.
ARM: n900_defconfig: enable crypto accelerators
Cryptographic API  --->
Hardware crypto devices  --->
  <M> Support for OMAP crypto HW accelerators  [CONFIG_CRYPTO_DEV_OMAP]
  <M>   Support for OMAP MD5/SHA1/SHA2 hw ...
[CONFIG_CRYPTO_DEV_OMAP_SHAM]
  <M>   Support for OMAP AES hw engine       
[CONFIG_CRYPTO_DEV_OMAP_AES]
  <M>   Support for OMAP DES/3DES hw engine  
[CONFIG_CRYPTO_DEV_OMAP_DES]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit eaf53ce46c299de685b8370111cb6d413e540562 by Arthur D.
ARM: n900_defconfig: enable thermal driver
Device Drivers  --->
Generic Thermal sysfs driver  --->
  Texas Instruments thermal drivers  --->
   [*]   Texas Instruments OMAP3 thermal support  [CONFIG_OMAP3_THERMAL]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 6a50613e9ff93698adb6e6449430fa09d442628e by Arthur D.
ARM: n900_defconfig: enable light sensor
Device Drivers  --->
Industrial I/O support  --->
  Light sensors  --->
   <M> TAOS TSL2560, TSL2561, TSL2562 and TSL2563 ...
[CONFIG_SENSORS_TSL2563]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 785be5360899e725989f6e17c3d12511250e2645 by Arthur D.
ARM: n900_defconfig: analog to digital converters
Device Drivers  --->
Industrial I/O support  --->
  Analog to digital converters  --->
   < > Motorola CPCAP PMIC ADC driver           [CONFIG_CPCAP_ADC]
   < > TI's AM335X ADC driver                   [CONFIG_TI_AM335X_ADC]
   <M> TWL4030 MADC (Monitoring A/D Converter)  [CONFIG_TWL4030_MADC]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit fd51b85c09b5eb2ec5d64006183d890a2577c6da by Arthur D.
ARM: n900_defconfig: enable radio driver
Device Drivers  --->
Multimedia support  --->
  [*] AM/FM radio receivers/transmitters support
[CONFIG_MEDIA_RADIO_SUPPORT]
  Radio Adapters  --->
   <M> Silicon Labs Si4713 FM Radio with RDS ... [CONFIG_RADIO_SI4713]
   <M>   Silicon Labs Si4713 FM Radio ...      
[CONFIG_PLATFORM_SI4713]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit d4a05bb0b5999491f07c83080007d26962b38917 by Arthur D.
ARM: n900_defconfig: enable bluetooth radio
Device Drivers  --->
[*] Staging drivers  --->                        [CONFIG_STAGING]
  [*] Media staging drivers  --->                 [CONFIG_STAGING_MEDIA]
   <M> Broadcom BCM2048 FM Radio Receiver support [CONFIG_I2C_BCM2048]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 942f5692ec6c4e486faa56078d98ca5866df317d by Arthur D.
ARM: n900_defconfig: disable TV tuners
Device Drivers  --->
Multimedia support  --->
  Customize TV tuners  --->
     [ DISABLE ALL ]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit f25528d504731ccc6a349fbe310aded1740ef1fa by Arthur D.
ARM: n900_defconfig: enable front LED
Device Drivers  --->
LED Support  --->
  <M> LED Support for TI/National LP5523/55231 LED ...
[CONFIG_LEDS_LP5523]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit ee97cf1b357583addc45bbb93bd537cb4394fc03 by Arthur D.
ARM: n900_defconfig: enable flash LED
Device Drivers  --->
Multimedia support  --->
  I2C Encoders, decoders, sensors and other helper chips  --->
   <M> ADP1653 flash support  [CONFIG_VIDEO_ADP1653]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit a5935f44233b0613f1ddc193fbb89ffdafae90e7 by Arthur D.
ARM: n900_defconfig: enable front webcam
Device Drivers  --->
Multimedia support  --->
  I2C Encoders, decoders, sensors and other helper chips  --->
   <M> SMIA++/SMIA sensor support  [CONFIG_VIDEO_SMIAPP]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 37f89c2b4ea04d78177986448cfe83dbd5b69012 by Arthur D.
ARM: n900_defconfig: enable back camera
Device Drivers  --->
Multimedia support  --->
  I2C Encoders, decoders, sensors and other helper chips  --->
   <M> AD5820 lens voice coil support  [CONFIG_VIDEO_AD5820]
   <M> ET8EK8 camera sensor support    [CONFIG_VIDEO_ET8EK8]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit ef420dd8cb578ec6a421318ab7b111f9e0cee3ae by Arthur D.
ARM: n900_defconfig: expose thermal sensors as hwmon device
Device Drivers  --->
<*> Hardware Monitoring support              [CONFIG_HWMON]
Generic Thermal sysfs driver  --->
  [*] Expose thermal sensors as hwmon device  [CONFIG_THERMAL_HWMON]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 975ad1c1a7582fd0ad9bac20eec305ce7c121c82 by Arthur D.
ARM: n900_defconfig: build keyboard driver into kernel
Device Drivers  --->
Input device support  --->
Keyboards  --->
  <*> TI TWL4030/TWL5030/TPS659x0 keypad support
[CONFIG_KEYBOARD_TWL4030]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 36df64e54cbb338eeee1b6f04163adfb821fa04d by Arthur D.
ARM: n900_defconfig: enable in-kernel .config
Reason: asked by Wizzup in #maemo-leste IRC channel.
This partially reverts commit "ARM: n900_defconfig: don't store .config
in kernel"
General setup  --->
<M> Kernel .config support                 [CONFIG_IKCONFIG]
[*]   Enable access to .config through ... [CONFIG_IKCONFIG_PROC]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 290ba828ff0715dadc602be6edd2388712459758 by Arthur D.
debian: preserve /debian/ on 'make clean'
The file was modifiedscripts/package/Makefile (diff)
Commit ad02ea565a8d63e76c98d430a66652760798dd60 by Arthur D.
debian: remove /debian/ from .gitignore
The file was modified.gitignore (diff)
Commit 384ceffad55f8bc0e69e3852327c7495e455fb63 by Arthur D.
debian: fill /debian/ directory with content
The file was addeddebian/changelog
The file was addeddebian/compat
The file was addeddebian/README
The file was addeddebian/postinst.in
The file was addeddebian/source/format
The file was addeddebian/control
The file was addeddebian/clean
The file was addeddebian/copyright
The file was addeddebian/rules
Commit 639e29367321318e30d5ab3955cc9779f9d97777 by Arthur D.
debian: use linux native scripts for packaging
Packages added:
- linux-image-n900-dbg
- linux-headers-n900
This should allow to build kernel modules out of tree.
The file was removeddebian/postinst.in
The file was modifiedscripts/package/builddeb (diff)
The file was modifieddebian/rules (diff)
The file was modifieddebian/control (diff)
Commit 5d7a7c00bf8c2982e6dc3070c0b6d55de9e5bb63 by Arthur D.
Update debian/changelog (5.0.5-1)
The file was modifieddebian/changelog (diff)
Commit c3baf15aed8d449cb41fc90d51e3f6fed34107e6 by Arthur D.
debian: fix linux-headers-n900 when crossbuilding
Build kernel related binaries in target architecture format after cross
building. This allows to run DKMS on target device successfully.
The file was modifieddebian/rules (diff)
The file was modifieddebian/control (diff)
Commit dd22a878db11f4ce25c18c847cc8c7be9a65e95c by Arthur D.
debian: add gbp.conf needed by jenkins-debian-glue
The file was addeddebian/gbp.conf
Commit d4cd8a0a7c1012bcf255bd71e17a4113cf724190 by Arthur D.
debian: update README for default config management
The file was modifieddebian/README (diff)
Commit 6e0729d8f65144426587edfa670500b2899857ce by Arthur D.
debian: rules: fix warning: 'build-arch' is missing
The file was modifieddebian/rules (diff)
Commit b51387551895253fc934133141d40d1255e74493 by Arthur D.
Update debian/changelog (5.0.5-2)
The file was modifieddebian/changelog (diff)
Commit f76e427c5f838034654fdacd539051e522335724 by Arthur D.
Update debian/changelog (5.0.5-3)
The file was modifieddebian/changelog (diff)
Commit 9463f8c25bc25ef22a87ac1e8276fb091049b090 by Arthur D.
Update debian/changelog (5.0.7-1)
The file was modifieddebian/changelog (diff)