SuccessChanges

Summary

  1. arm/mach-at91/pm : fix possible object reference leak (details)
  2. mm/compaction.c: correct zone boundary handling when resetting pageblock (details)
  3. mm/compaction.c: abort search if isolation fails (details)
  4. ALSA: xen-front: Do not use stream buffer size before it is set (details)
  5. ptrace: Remove maxargs from task_current_syscall() (details)
  6. tracing/syscalls: Pass in hardcoded 6 into syscall_get_arguments() (details)
  7. flow_dissector: rst'ify documentation (details)
  8. riscv: Fix syscall_get_arguments() and syscall_set_arguments() (details)
  9. csky: Fix syscall_get_arguments() and syscall_set_arguments() (details)
  10. blk-mq: do not reset plug->rq_count before the list is sorted (details)
  11. arm64: fix wrong check of on_sdei_stack in nmi context (details)
  12. drm/amdkfd: Add picasso pci id (details)
  13. drm/amdgpu: Adjust IB test timeout for XGMI configuration (details)
  14. drm/amdgpu: amdgpu_device_recover_vram always failed if only one node in (details)
  15. drm/amd/display: fix cursor black issue (details)
  16. btrfs: prop: fix zstd compression parameter validation (details)
  17. btrfs: prop: fix vanished compression property after failed set (details)
  18. net: hns: fix KASAN: use-after-free in hns_nic_net_xmit_hw() (details)
  19. net: hns: Use NAPI_POLL_WEIGHT for hns driver (details)
  20. net: hns: Fix probabilistic memory overwrite when HNS driver initialized (details)
  21. net: hns: fix ICMP6 neighbor solicitation messages discard problem (details)
  22. net: hns: Fix WARNING when remove HNS driver with SMMU enabled (details)
  23. net: hns: Fix sparse: some warnings in HNS drivers (details)
  24. net: thunderx: fix NULL pointer dereference in nicvf_open/nicvf_stop (details)
  25. net/sched: act_sample: fix divide by zero in the traffic path (details)
  26. tcp: Ensure DCTCP reacts to losses (details)
  27. sch_cake: Use tc_skb_protocol() helper for getting packet protocol (details)
  28. sch_cake: Make sure we can write the IP header before changing DSCP bits (details)
  29. MIPS: generic: Add switchdev, pinctrl and fit to ocelot_defconfig (details)
  30. xtensa: fix return_address (details)
  31. dm: disable DISCARD if the underlying storage no longer supports it (details)
  32. mtd: cfi: fix deadloop in cfi_cmdset_0002.c do_write_buffer (details)
  33. aio: use kmem_cache_free() instead of kfree() (details)
  34. vlan: conditional inclusion of FCoE hooks to match netdevice.h and bnx2x (details)
  35. libcxgb: fix incorrect ppmax calculation (details)
  36. net: bridge: always clear mcast matching struct on reports and leaves (details)
  37. extcon: ptn5150: fix COMPILE_TEST dependencies (details)
  38. ipv6: sit: reset ip header pointer in ipip6_rcv (details)
  39. ibmvnic: Fix completion structure initialization (details)
  40. xtensa: fix format string warning in init_pmd (details)
  41. ASoC: cs35l35: Disable regulators on driver removal (details)
  42. ASoC: intel: skylake: add remove() callback for component driver (details)
  43. KVM: PPC: Book3S HV: Perserve PSSCR FAKE_SUSPEND bit on guest exit (details)
  44. KVM: PPC: Book3S: Protect memslots while validating user address (details)
  45. xen: use struct_size() helper in kzalloc() (details)
  46. xen: Prevent buffer overflow in privcmd ioctl (details)
  47. Revert "Documentation/gpu/meson: Remove link to meson_canvas.c" (details)
  48. drm/sun4i: DW HDMI: Lower max. supported rate for H6 (details)
  49. objtool: Add rewind_stack_do_exit() to the noreturn list (details)
  50. ALSA: seq: Fix OOB-reads from strlcpy (details)
  51. irqchip/irq-ls1x: Missing error code in ls1x_intc_of_init() (details)
  52. genirq: Initialize request_mutex if CONFIG_SPARSE_IRQ=n (details)
  53. syscalls: Remove start and number from syscall_get_arguments() args (details)
  54. syscalls: Remove start and number from syscall_set_arguments() args (details)
  55. paride/pcd: Fix potential NULL pointer dereference and mem leak (details)
  56. block: Revert v5.0 blk_mq_request_issue_directly() changes (details)
  57. genirq: Respect IRQCHIP_SKIP_SET_WAKE in irq_chip_set_wake_parent() (details)
  58. tty: mark Siemens R3964 line discipline as BROKEN (details)
  59. kvm: svm: fix potential get_num_contig_pages overflow (details)
  60. KVM: SVM: prevent DBG_DECRYPT and DBG_ENCRYPT overflow (details)
  61. KVM: x86: nVMX: close leak of L0's x2APIC MSRs (CVE-2019-3887) (details)
  62. KVM: x86: nVMX: fix x2APIC VTPR read intercept (details)
  63. PCI: Add function 1 DMA alias quirk for Marvell 9170 SATA controller (details)
  64. dm integrity: fix deadlock with overlapping I/O (details)
  65. sunrpc: don't mark uninitialised items as VALID. (details)
  66. nfsd/nfsd3_proc_readdir: fix buffer count and page pointers (details)
  67. lib/string.c: implement a basic bcmp (details)
  68. kmemleak: powerpc: skip scanning holes in the .bss section (details)
  69. include/linux/bitrev.h: fix constant bitrev (details)
  70. lib/lzo: fix bugs for very short or empty input (details)
  71. mm: fix vm_fault_t cast in VM_FAULT_GET_HINDEX() (details)
  72. hugetlbfs: fix memory leak for resv_map (details)
  73. mm/huge_memory.c: fix modifying of page protection by insert_pfn_pmd() (details)
  74. psi: clarify the units used in pressure files (details)
  75. mm: writeback: use exact memcg dirty counts (details)
  76. MAINTAINERS: fix bad pattern in ARM/NUVOTON NPCM (details)
  77. MAINTAINERS: add maintainer and replacing reviewer ARM/NUVOTON NPCM (details)
  78. sh: fix multiple function definition build errors (details)
  79. mm/util.c: fix strndup_user() comment (details)
  80. kernel/sysctl.c: fix out-of-bounds access when setting file-max (details)
  81. x86/asm: Use stricter assembly constraints in bitops (details)
  82. i2c: imx: don't leak the i2c adapter on error (details)
  83. null_blk: prevent crash from bad home_node value (details)
  84. xsysace: Fix error handling in ace_setup (details)
  85. fs: stream_open - opener for stream-like files so that read and write (details)
  86. Revert: parisc: Use F_EXTEND() macro in iosapic code (details)
  87. parisc: regs_return_value() should return gpr28 (details)
  88. parisc: also set iaoq_b in instruction_pointer_set() (details)
  89. parisc: Detect QEMU earlier in boot process (details)
  90. NFC: nci: Add some bounds checking in nci_hci_cmd_received() (details)
  91. nfc: nci: Potential off by one in ->pipes[] array (details)
  92. powerpc/vdso32: fix CLOCK_MONOTONIC on PPC64 (details)
  93. libnvdimm/pmem: fix a possible OOB access when read and write pmem (details)
  94. dt-bindings: cpu: Fix JSON schema (details)
  95. Revert "ARM: dts: nomadik: Fix polarity of SPI CS" (details)
  96. ARM: orion: don't use using 64-bit DMA masks (details)
  97. ARM: iop: don't use using 64-bit DMA masks (details)
  98. ARM: milbeaut: fix build with !CONFIG_HOTPLUG_CPU (details)
  99. Linux 5.1-rc4 (details)
  100. selftests: add a tc matchall test case (details)
  101. drm/i915/gvt: Annotate iomem usage (details)
  102. drm/i915/gvt: Prevent use-after-free in ppgtt_free_all_spt() (details)
  103. slab: fix a crash by reading /proc/slab_allocators (details)
  104. net: vrf: Fix ping failed when vrf mtu is set to 0 (details)
  105. drm/udl: add a release method and delay modeset teardown (details)
  106. ASoC: topology: Use the correct dobj to free enum control values and (details)
  107. ASoC: stm32: fix sai driver name initialisation (details)
  108. crypto: x86/poly1305 - fix overflow during partial reduction (details)
  109. ASoC: core: conditionally increase module refcount on component open (details)
  110. ASoC: pcm: update module refcount if module_get_upon_open is set (details)
  111. drm/sun4i: tcon top: Fix NULL/invalid pointer dereference in (details)
  112. cfg80211: add ratelimited variants of err and warn (details)
  113. mac80211_hwsim: calculate if_combination.max_interfaces (details)
  114. mac80211: make ieee80211_schedule_txq schedule empty TXQs (details)
  115. powerpc/64s/radix: Fix radix segment exception handling (details)
  116. ALSA: hda - Add two more machines to the power_save_blacklist (details)
  117. virtio_pci: fix a NULL pointer reference in vp_del_vqs (details)
  118. MAiNTAINERS: add Paolo, Stefan for virtio blk/scsi (details)
  119. block: don't use for-inside-for in bio_for_each_segment_all (details)
  120. drm/amd/display: Fix negative cursor pos programming (v2) (details)
  121. drm/i915: Fix pipe_bpp readout for BXT/GLK DSI (details)
  122. ARC: memset: fix build with L1_CACHE_SHIFT != 6 (details)
  123. arm64/ftrace: fix inadvertent BUG() in trampoline check (details)
  124. RDMA/vmw_pvrdma: Fix memory leak on pvrdma_pci_remove (details)
  125. RDMA/hns: Fix bug that caused srq creation to fail (details)
  126. tools/testing/nvdimm: Retain security state after overwrite (details)
  127. RDMA/hns: Bugfix for SCC hem free (details)
  128. nfsd: Don't release the callback slot unless it was actually held (details)
  129. tools/io_uring: remove IOCQE_FLAG_CACHEHIT (details)
  130. io_uring: restrict IORING_SETUP_SQPOLL to root (details)
  131. arm64: backtrace: Don't bother trying to unwind the userspace stack (details)
  132. MAINTAINERS: ieee802154: update documentation file pattern (details)
  133. virtio: Honour 'may_reduce_num' in vring_create_virtqueue (details)
  134. r8169: disable ASPM again (details)
  135. tpm: turn on TPM on suspend for TPM 1.x (details)
  136. tpm: fix an invalid condition in tpm_common_poll (details)
  137. KEYS: trusted: allow trusted.ko to initialize w/o a TPM (details)
  138. tpm: Fix the type of the return value in calc_tpm2_event_size() (details)
  139. KEYS: trusted: fix -Wvarags warning (details)
  140. selftests/tpm2: Extend tests to cover partial reads (details)
  141. selftests/tpm2: Open tpm dev in unbuffered mode (details)
  142. net: ip_gre: fix possible use-after-free in erspan_rcv (details)
  143. net: ip6_gre: fix possible use-after-free in ip6erspan_rcv (details)
  144. ethtool: avoid signed-unsigned comparison in ethtool_validate_speed() (details)
  145. broadcom: tg3: fix use of SPEED_UNKNOWN ethtool constant (details)
  146. qlogic: qlcnic: fix use of SPEED_UNKNOWN ethtool constant (details)
  147. net: macb driver, check for SKBTX_HW_TSTAMP (details)
  148. bnxt_en: Improve RX consumer index validity check. (details)
  149. bnxt_en: Reset device on RX buffer errors. (details)
  150. scsi: csiostor: fix missing data copy in csio_scsi_err_handler() (details)
  151. drm/i915: Get power refs in encoder->get_power_domains() (details)
  152. drm/mediatek: fix possible object reference leak (details)
  153. ACPICA: Namespace: remove address node from global list after method (details)
  154. drm/mediatek: fix the rate and divder of hdmi phy for MT2701 (details)
  155. drm/mediatek: make implementation of recalc_rate() for MT2701 hdmi phy (details)
  156. drm/mediatek: remove flag CLK_SET_RATE_PARENT for MT2701 hdmi phy (details)
  157. drm/mediatek: using new factor for tvdpll for MT2701 hdmi phy (details)
  158. drm/mediatek: no change parent rate in round_rate() for MT2701 hdmi phy (details)
  159. mac80211: Honor SW_CRYPTO_CONTROL for unicast keys in AP VLAN mode (details)
  160. RISC-V: Add separate defconfig for 32bit systems (details)
  161. net/mlx5: FPGA, tls, hold rcu read lock a bit longer (details)
  162. net/mlx5: FPGA, tls, idr remove on flow delete (details)
  163. net/mlx5e: Skip un-needed tx recover if interface state is down (details)
  164. net/mlx5e: Use fail-safe channels reopen in tx reporter recover (details)
  165. net/mlx5e: XDP, Avoid checksum complete when XDP prog is loaded (details)
  166. net/mlx5e: Rx, Fixup skb checksum for packets with tail padding (details)
  167. net/mlx5e: Rx, Check ip headers sanity (details)
  168. net/mlx5e: Protect against non-uplink representor for encap (details)
  169. Revert "net/mlx5e: Enable reporting checksum unnecessary also for L3 (details)
  170. net/mlx5e: Switch to Toeplitz RSS hash by default (details)
  171. power: supply: cpcap-battery: Fix division by zero (details)
  172. dt-bindings: clock: sifive: add FU540-C000 PRCI clock constants (details)
  173. Bluetooth: btusb: request wake pin with NOAUTOEN (details)
  174. powerpc/mm: Define MAX_PHYSMEM_BITS for all 64-bit configs (details)
  175. i3c: Fix the verification of random PID (details)
  176. i3c: dw: Fix dw_i3c_master_disable controller by using correct mask (details)
  177. MAINTAINERS: Fix the I3C entry (details)
  178. x86/perf/amd: Remove need to check "running" bit in NMI handler (details)
  179. ASoC: Intel: kbl: fix wrong number of channels (details)
  180. ASoC: stm32: sai: fix master clock management (details)
  181. apparmor: Restore Y/N in /sys for apparmor's "enabled" (details)
  182. ASoC: pcm: fix error handling when try_module_get() fails. (details)
  183. locking/lockdep: Zap lock classes even with lock debugging disabled (details)
  184. mac80211: fix RX STBC override byte order (details)
  185. alarmtimer: Return correct remaining time (details)
  186. ALSA: hda: Fix racy display power access (details)
  187. block, bfq: fix use after free in bfq_bfqq_expire (details)
  188. virtio-blk: limit number of hw queues by nr_cpu_ids (details)
  189. scsi: virtio_scsi: limit number of hw queues by nr_cpu_ids (details)
  190. s390/3270: fix lockdep false positive on view->lock (details)
  191. s390/zcrypt: fix possible deadlock situation on ap queue remove (details)
  192. blk-mq: introduce blk_mq_complete_request_sync() (details)
  193. nvme: cancel request synchronously (details)
  194. drm/i915/icl: Ungate ddi clocks before IO enable (details)
  195. drm/i915/icl: Fix port disable sequence for mipi-dsi (details)
  196. drm/i915/dp: revert back to max link rate and lane count on eDP (details)
  197. ASoC: wcd9335: Fix missing regmap requirement (details)
  198. RISC-V: Fix Maximum Physical Memory 2GiB option for 64bit systems (details)
  199. securityfs: fix use-after-free on symlink traversal (details)
  200. apparmorfs: fix use-after-free on symlink traversal (details)
  201. IB/hfi1: Do not flush send queue in the TID RDMA second leg (details)
  202. lightnvm: pblk: fix crash in pblk_end_partial_read due to multipage (details)
  203. mlxsw: spectrum_switchdev: Add MDB entries in prepare phase (details)
  204. mlxsw: core: Do not use WQ_MEM_RECLAIM for EMAD workqueue (details)
  205. mlxsw: core: Do not use WQ_MEM_RECLAIM for mlxsw ordered workqueue (details)
  206. mlxsw: core: Do not use WQ_MEM_RECLAIM for mlxsw workqueue (details)
  207. mlxsw: spectrum_router: Do not check VRF MAC address (details)
  208. selftests: mlxsw: Test VRF MAC vetoing (details)
  209. mlxsw: spectrum_buffers: Add a multicast pool for Spectrum-2 (details)
  210. MAINTAINERS: BMIPS: Add internal Broadcom mailing list (details)
  211. ibmvnic: Enable GRO (details)
  212. ibmvnic: Fix netdev feature clobbering during a reset (details)
  213. sparc64/pci_sun4v: fix ATU checks for large DMA masks (details)
  214. net/tls: fix the IV leaks (details)
  215. net/tls: don't leak partially sent record in device mode (details)
  216. net: strparser: partially revert "strparser: Call skb_unclone (details)
  217. PCI: pciehp: Ignore Link State Changes after powering off a slot (details)
  218. block: do not leak memory in bio_copy_user_iov() (details)
  219. clk: x86: Add system specific quirk to mark clocks as critical (details)
  220. net/tls: fix build without CONFIG_TLS_DEVICE (details)
  221. team: set slave to promisc if team is already in promisc mode (details)
  222. drm/i915/gvt: Roundup fb->height into tile's height at calucation (details)
  223. failover: allow name change on IFF_UP slave interfaces (details)
  224. net/tls: prevent bad memory access in tls_is_sk_tx_device_offloaded() (details)
  225. vhost: reject zero size iova range (details)
  226. tipc: missing entries in name table of publications (details)
  227. net: fou: do not use guehdr after iptunnel_pull_offloads in gue_udp_recv (details)
  228. gpu: host1x: Fix compile error when IOMMU API is not available (details)
  229. mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning (details)
  230. gpio: eic: sprd: Fix incorrect irq type setting for the sync EIC (details)
  231. drm/ttm: fix out-of-bounds read in ttm_put_pages() v2 (details)
  232. drm/ttm: fix start page for huge page check in ttm_put_pages() (details)
  233. drm/ttm: fix incrementing the page pointer for huge pages (details)
  234. drm/ttm: fix dma_fence refcount imbalance on error path (details)
  235. drm/amd/display: extending AUX SW Timeout (details)
  236. nvme-fc: correct csn initialization and increments on error (details)
  237. nvmet: fix discover log page when offsets are used (details)
  238. gpu: host1x: Program stream ID to bypass without SMMU (details)
  239. platform/x86: pmc_atom: Drop __initconst on dmi table (details)
  240. dma-debug: only skip one stackframe entry (details)
  241. net/smc: wait for pending work before clcsock release_sock (details)
  242. net/smc: fix a NULL pointer dereference (details)
  243. net/smc: propagate file from SMC to TCP socket (details)
  244. net/smc: fix return code from FLUSH command (details)
  245. net/smc: move unhash before release of clcsock (details)
  246. net: thunderx: raise XDP MTU to 1508 (details)
  247. net: thunderx: don't allow jumbo frames with XDP (details)
  248. net: bridge: multicast: use rcu to access port list from (details)
  249. NFS: Forbid setting AF_INET6 to "struct sockaddr_in"->sin_family. (details)
  250. NFS: Fix handling of reply page vector (details)
  251. xprtrdma: Fix helper that drains the transport (details)
  252. NFSv4.1 fix incorrect return value in copy_file_range (details)
  253. Revert "SUNRPC: Micro-optimise when the task is known not to be (details)
  254. clocksource/drivers/npcm: select TIMER_OF (details)
  255. clocksource/drivers/arm_arch_timer: Remove unneeded pr_fmt macro (details)
  256. clocksource/drivers/oxnas: Fix OX820 compatible (details)
  257. net: fec: manage ahb clock in runtime pm (details)
  258. net: netrom: Fix error cleanup path of nr_proto_init (details)
  259. selftests: fib_tests: Fix 'Command line is not complete' errors (details)
  260. block: fix the return errno for direct IO (details)
  261. dctcp: more accurate tracking of packets delivery (details)
  262. drm: bridge: dw-hdmi: Fix overflow workaround for Rockchip SoCs (details)
  263. perf/core: Fix perf_event_disable_inatomic() race (details)
  264. xfrm: update doc about xfrm[46]_gc_thresh (details)
  265. clang-format: Update with the latest for_each macro list (details)
  266. iommu/amd: Set exclusion range correctly (details)
  267. arm64: futex: Fix FUTEX_WAKE_OP atomic ops with non-zero result value (details)
  268. drm/amdgpu: shadow in shadow_list without tbo.mem.start cause page fault (details)
  269. drm/amdgpu/gmc9: fix VM_L2_CNTL3 programming (details)
  270. clk: mediatek: fix clk-gate flag setting (details)
  271. net/rds: Check address length before reading address family (details)
  272. mISDN: Check address length before reading address family (details)
  273. sctp: Check address length before reading address family (details)
  274. net: netlink: Check address length before reading groups field (details)
  275. rxrpc: Check address length before reading srx_service field (details)
  276. Bluetooth: Check address length before reading address field (details)
  277. llc: Check address length before reading address field (details)
  278. bpf: Check address length before reading address family (details)
  279. udpv6: Check address length before reading address family (details)
  280. mt76: mt7603: add missing initialization for dev->ps_lock (details)
  281. mt76: mt7603: fix sequence number assignment (details)
  282. mt76: mt7603: send BAR after powersave wakeup (details)
  283. rt2x00: do not increment sequence number while re-transmitting (details)
  284. mt76x02: avoid status_list.lock and sta->rate_ctrl_lock dependency (details)
  285. PCI: Fix issue with "pci=disable_acs_redir" parameter being ignored (details)
  286. clk: imx: Fix PLL_1416X not rounding rates (details)
  287. vxge: fix return of a free'd memblock on a failed dma mapping (details)
  288. qede: fix write to free'd pointer error and double free of ptp (details)
  289. rxrpc: Clear socket error (details)
  290. rxrpc: Make rxrpc_kernel_check_life() indicate if call completed (details)
  291. rxrpc: Allow errors to be returned from rxrpc_queue_packet() (details)
  292. afs: Check for rxrpc call completion in wait loop (details)
  293. rxrpc: Trace received connection aborts (details)
  294. rxrpc: Fix detection of out of order acks (details)
  295. ipv4: recompile ip options in ipv4_link_failure (details)
  296. afs: avoid deprecated get_seconds() (details)
  297. afs: Avoid section confusion in CM_NAME (details)
  298. afs: Differentiate abort due to unmarshalling from other errors (details)
  299. afs: Unlock pages for __pagevec_release() (details)
  300. afs: Fix in-progess ops to ignore server-level callback invalidation (details)
  301. ALSA: hda: Initialize power_state field properly (details)
  302. selftests: netfilter: check icmp pkttoobig errors are set as related (details)
  303. netfilter: conntrack: don't set related state for different outer (details)
  304. netfilter: conntrack: initialize ct->timeout (details)
  305. ipvs: do not schedule icmp errors from tunnels (details)
  306. io_uring: park SQPOLL thread if it's percpu (details)
  307. io_uring: only test SQPOLL cpu after we've verified it (details)
  308. bfq: update internal depth state when queue depth changes (details)
  309. io_uring: drop io_file_put() 'file' argument (details)
  310. x86/resctrl: Do not repeat rdtgroup mode initialization (details)
  311. mm: make page ref count overflow check tighter and more explicit (details)
  312. mm: add 'try_get_page()' helper function (details)
  313. mm: prevent get_user_pages() from overflowing page refcount (details)
  314. fs: prevent page refcount overflow in pipe_buf_get (details)
  315. ipv4: ensure rcu_read_lock() in ipv4_link_failure() (details)
  316. qed: Delete redundant doorbell recovery types (details)
  317. qed: Fix the doorbell address sanity check (details)
  318. qed: Fix missing DORQ attentions (details)
  319. qed: Fix the DORQ's attentions handling (details)
  320. x86/speculation: Prevent deadlock on ssb_state::lock (details)
  321. rtnetlink: fix rtnl_valid_stats_req() nlmsg_len check (details)
  322. Linux 5.1-rc5 (details)
  323. drm/amd/display: If one stream full updates, full update all planes (details)
  324. netfilter: ctnetlink: don't use conntrack/expect object addresses as id (details)
  325. netfilter: nf_tables: prevent shift wrap in nft_chain_parse_hook() (details)
  326. netfilter: nat: fix icmp id randomization (details)
  327. s390/pkey: add one more argument space for debug feature entry (details)
  328. drivers: power: supply: goldfish_battery: Fix bogus SPDX identifier (details)
  329. KVM: x86/mmu: Fix an inverted list_empty() check when zapping sptes (details)
  330. arch: add pidfd and io_uring syscalls everywhere (details)
  331. drm/i915: Do not enable FEC without DSC (details)
  332. drm/i915: Restore correct bxt_ddi_phy_calc_lane_lat_optim_mask() (details)
  333. io_uring: fix possible deadlock between io_uring_{enter,register} (details)
  334. MIPS: scall64-o32: Fix indirect syscall number load (details)
  335. Revert "net-sysfs: Fix memory leak in netdev_register_kobject" (details)
  336. bonding: fix event handling for stacked bonds (details)
  337. MAINTAINERS: normalize Woojung Huh's email address (details)
  338. route: Avoid crash from dereferencing NULL rt->from (details)
  339. bnx2x: fix spelling mistake "dicline" -> "decline" (details)
  340. scsi: core: set result when the command cannot be dispatched (details)
  341. x86/build/lto: Fix truncated .bss with -fdata-sections (details)
  342. locking/lockdep: Make lockdep_unregister_key() honor 'debug_locks' again (details)
  343. kprobes: Fix error check when reusing optimized probes (details)
  344. x86/mm: Prevent bogus warnings with "noexec=off" (details)
  345. x86/reboot, efi: Use EFI reboot for Acer TravelMate X514-51T (details)
  346. x86/mm/tlb: Revert "x86/mm: Align TLB invalidation info" (details)
  347. KVM: nVMX: allow tests to use bad virtual-APIC page address (details)
  348. IB/rdmavt: Fix frwr memory registration (details)
  349. perf/core: Fix the address filtering fix (details)
  350. perf/ring_buffer: Fix AUX record suppression (details)
  351. perf/x86: Fix incorrect PEBS_REGS (details)
  352. USB: core: Fix unterminated string returned by usb_string() (details)
  353. staging: comedi: vmk80xx: Fix use of uninitialized semaphore (details)
  354. staging: comedi: vmk80xx: Fix possible double-free of ->usb_rx_buf (details)
  355. x86/Kconfig: Fix spelling mistake "effectivness" -> "effectiveness" (details)
  356. staging: erofs: fix unexpected out-of-bound data access (details)
  357. clocksource/drivers/timer-ti-dm: Remove omap_dm_timer_set_load_start (details)
  358. serial: sh-sci: Fix HSCIF RX sampling point calculation (details)
  359. serial: sh-sci: Fix HSCIF RX sampling point adjustment (details)
  360. sc16is7xx: move label 'err_spi' to correct section (details)
  361. KVM: nVMX: always use early vmcs check when EPT is disabled (details)
  362. kvm: mmu: Fix overflow on kvm mmu page limit calculation (details)
  363. Revert "svm: Fix AVIC incomplete IPI emulation" (details)
  364. svm/avic: Fix invalidate logical APIC id entry (details)
  365. KVM: x86: svm: make sure NMI is injected after nmi_singlestep (details)
  366. x86/kvm: move kvm_load/put_guest_xcr0 into atomic context (details)
  367. KVM: x86: Raise #GP when guest vCPU do not support PMU (details)
  368. KVM: nVMX: Expose RDPMC-exiting only when guest supports PMU (details)
  369. KVM: x86: Load SMRAM in a single shot when leaving SMM (details)
  370. KVM: x86: Open code kvm_set_hflags (details)
  371. KVM: x86: clear SMM flags before loading state while leaving SMM (details)
  372. KVM: x86: Don't clear EFER during SMM transitions for 32-bit vCPU (details)
  373. KVM: x86: Always use 32-bit SMRAM save state for 32-bit kernels (details)
  374. selftests: kvm/evmcs_test: complete I/O before migrating guest state (details)
  375. selftests: kvm: fix for compilers that do not support -no-pie (details)
  376. selftests: kvm: add a selftest for SMM (details)
  377. KVM: x86: fix warning Using plain integer as NULL pointer (details)
  378. KVM: fix spectrev1 gadgets (details)
  379. KVM: x86: avoid misreporting level-triggered irqs as edge-triggered in (details)
  380. ALSA: info: Fix racy addition/deletion of nodes (details)
  381. perf header: Fix lock/unlock imbalances when processing BPF/BTF info (details)
  382. perf scripts python: export-to-sqlite.py: Fix use of parent_id in (details)
  383. perf stat: Disable DIR_FORMAT feature for 'perf stat record' (details)
  384. tools lib traceevent: Fix missing equality check for strcmp (details)
  385. perf evsel: Use hweight64() instead of (details)
  386. cifs: Fix use-after-free in SMB2_write (details)
  387. cifs: Fix use-after-free in SMB2_read (details)
  388. cifs: Fix lease buffer length error (details)
  389. cifs: fix handle leak in smb2_query_symlink() (details)
  390. CIFS: keep FileInfo handle live during oplock break (details)
  391. sched/fair: Limit sched_cfs_period_timer() loop to avoid hard lockup (details)
  392. sched/deadline: Correctly handle active 0-lag timers (details)
  393. ALSA: core: Fix card races between register and disconnect (details)
  394. perf top: Always sample time to satisfy needs of use of ordered queuing (details)
  395. tools include uapi: Sync sound/asound.h copy (details)
  396. ipmi: Fix failure on SMBIOS specified devices (details)
  397. ipmi: ipmi_si_hardcode.c: init si_type array to fix a crash (details)
  398. MIPS: perf: ath79: Fix perfcount IRQ assignment (details)
  399. net: bridge: fix per-port af_packet sockets (details)
  400. net/core: work around section mismatch warning for ptp_classifier (details)
  401. net: atm: Fix potential Spectre v1 vulnerabilities (details)
  402. net: Fix missing meta data in skb with vlan packet (details)
  403. tipc: fix link established but not in session (details)
  404. tipc: set sysctl_tipc_rmem and named_timeout right range (details)
  405. qed: fix spelling mistake "faspath" -> "fastpath" (details)
  406. net: bridge: fix netlink export of vlan_stats_per_port option (details)
  407. ocelot: Don't sleep in atomic context (irqs_disabled()) (details)
  408. ocelot: Clean up stats update deferred work (details)
  409. tcp: tcp_grow_window() needs to respect tcp_space() (details)
  410. socket: fix compat SO_RCVTIMEO_NEW/SO_SNDTIMEO_NEW (details)
  411. drm/tegra: hdmi: Setup audio only if configured (details)
  412. s390: correct some inline assembly constraints (details)
  413. ALSA: hda/realtek - add two more pin configuration sets to quirk table (details)
  414. powerpc/mm/radix: Make Radix require HUGETLB_PAGE (details)
  415. staging: comedi: ni_usb6501: Fix use of uninitialized mutex (details)
  416. staging: comedi: ni_usb6501: Fix possible double-free of ->usb_rx_buf (details)
  417. powerpc/mm_iommu: Fix potential deadlock (details)
  418. powerpc/mm_iommu: Allow pinning large regions (details)
  419. vt: fix cursor when clearing the screen (details)
  420. ipmi: fix sleep-in-atomic in free_user at cleanup SRCU (details)
  421. perf bpf: Return NULL when RB tree lookup fails in (details)
  422. perf tools: Check maps for bpf programs (details)
  423. perf evlist: Fix side band thread draining (details)
  424. perf tools: Fix map reference counting (details)
  425. perf bpf: Return NULL when RB tree lookup fails in perf_env__find_btf() (details)
  426. io_uring: fix CQ overflow condition (details)
  427. SUNRPC: Ignore queue transmission errors on successful transmission (details)
  428. ipv4: set the tcp_min_rtt_wlen range from 0 to one day (details)
  429. IB/mlx5: Fix scatter to CQE in DCT QP creation (details)
  430. net: stmmac: Use bfsize1 in ndesc_init_rx_desc (details)
  431. nfp: abm: fix spelling mistake "offseting" -> "offsetting" (details)
  432. s390: ctcm: fix ctcm_new_device error return code (details)
  433. x86/mm/KASLR: Fix the size of the direct mapping section (details)
  434. iwlwifi: don't panic in error path on non-msix systems (details)
  435. iwlwifi: mvm: don't attempt debug collection in rfkill (details)
  436. iwlwifi: dbg_ini: check debug TLV type explicitly (details)
  437. iwlwifi: mvm: properly check debugfs dentry before using it (details)
  438. iwlwifi: cfg: use family 22560 based_params for AX210 family (details)
  439. perf/x86/amd: Add event map for AMD Family 17h (details)
  440. timers/sched_clock: Prevent generic sched_clock wrap caused by (details)
  441. crypto: xts - Fix atomic sleep when walking skcipher (details)
  442. crypto: lrw - Fix atomic sleep when walking skcipher (details)
  443. drm/sun4i: Add missing drm_atomic_helper_shutdown at driver unbind (details)
  444. drm/sun4i: Set device driver data at bind time for use in unbind (details)
  445. drm/sun4i: Fix component unbinding and component master deletion (details)
  446. signal: use fdget() since we don't allow O_PATH (details)
  447. KVM: x86: Consider LAPIC TSC-Deadline timer expired if deadline too (details)
  448. x86: kvm: hyper-v: deal with buggy TLB flush requests from WS2012 (details)
  449. KVM: lapic: Disable timer advancement if adaptive tuning goes haywire (details)
  450. KVM: lapic: Track lapic timer advance per vCPU (details)
  451. KVM: lapic: Allow user to disable adaptive tuning of timer advancement (details)
  452. KVM: lapic: Convert guest TSC to host time domain if necessary (details)
  453. arm64: futex: Restore oldval initialization to work around buggy (details)
  454. mlxsw: spectrum: Put MC TCs into DWRR mode (details)
  455. mlxsw: pci: Reincrease PCI reset timeout (details)
  456. mlxsw: spectrum: Fix autoneg status in ethtool (details)
  457. net: ipv6: addrlabel: fix spelling mistake "requewst" -> "request" (details)
  458. firestream: fix spelling mistake "tramsitted" -> "transmitted" (details)
  459. stmmac: pci: Adjust IOT2000 matching (details)
  460. clkdev: Hold clocks_mutex while iterating clocks list (details)
  461. net/tls: fix refcount adjustment in fallback (details)
  462. Revert "scsi: fcoe: clear FC_RP_STARTED flags when receiving a LOGO" (details)
  463. scsi: aic7xxx: fix EISA support (details)
  464. sc16is7xx: put err_spi and err_i2c into correct #ifdef (details)
  465. USB: dummy-hcd: Fix failure to give back unlinked URBs (details)
  466. locking/atomics: Don't assume that scripts are executable (details)
  467. x86/kprobes: Verify stack frame on kretprobe (details)
  468. kprobes: Mark ftrace mcount handler functions nokprobe (details)
  469. x86/kprobes: Avoid kretprobe recursion bug (details)
  470. x86/cpu/bugs: Use __initconst for 'const' init data (details)
  471. drm/ttm: fix re-init of global structures (details)
  472. slab: store tagged freelist for off-slab slabmgmt (details)
  473. mm: swapoff: shmem_find_swap_entries() filter out other types (details)
  474. mm: swapoff: remove too limiting SWAP_UNUSE_MAX_TRIES (details)
  475. mm: swapoff: take notice of completion sooner (details)
  476. mm: swapoff: shmem_unuse() stop eviction without igrab() (details)
  477. mm/memory_hotplug: do not unlock after failing to take the (details)
  478. mm/vmstat.c: fix /proc/vmstat format for CONFIG_DEBUG_TLBFLUSH=y (details)
  479. proc: fix map_files test on F29 (details)
  480. proc: fixup proc-pid-vm test (details)
  481. mm/hotplug: treat CMA pages as unmovable (details)
  482. mm: fix inactive list balancing between NUMA nodes and cgroups (details)
  483. kcov: improve CONFIG_ARCH_HAS_KCOV help text (details)
  484. kernel/watchdog_hld.c: hard lockup message should end with a newline (details)
  485. init: initialize jump labels before command line option parsing (details)
  486. mm/kmemleak.c: fix unused-function warning (details)
  487. coredump: fix race condition between mmget_not_zero()/get_task_mm() and (details)
  488. x86/cpu/intel: Lower the "ENERGY_PERF_BIAS: Set to normal" message's log (details)
  489. block: kill all_q_node in request_queue (details)
  490. block: make sure that bvec length can't be overflow (details)
  491. of_net: Fix residues after of_get_nvmem_mac_address removal (details)
  492. USB: core: Fix bug caused by duplicate interface PM usage counter (details)
  493. net/mlx5e: Fix use-after-free after xdp_return_frame (details)
  494. net/mlx5e: Fix the max MTU check in case of XDP (details)
  495. net/mlx5e: ethtool, Remove unsupported SFP EEPROM high pages query (details)
  496. selftests/net: correct the return value for run_netsocktests (details)
  497. team: fix possible recursive locking when add slaves (details)
  498. selftests/net: correct the return value for run_afpackettests (details)
  499. net/tls: avoid potential deadlock in tls_set_device_offload_rx() (details)
  500. net/tls: don't leak IV and record seq when offload fails (details)
  501. Linux 5.1-rc6 (details)
  502. dt-bindings: add an explanation for internal phy-mode (details)
  503. Documentation: decnet: remove reference to CONFIG_DECNET_ROUTE_FWMARK (details)
  504. netfilter: ebtables: CONFIG_COMPAT: drop a bogus WARN_ON (details)
  505. netfilter: never get/set skb->tstamp (details)
  506. netfilter: fix nf_l4proto_log_invalid to log invalid packets (details)
  507. x86/boot: Disable RSDP parsing temporarily (details)
  508. io_uring: fail io_uring_register(2) on a dying io_uring instance (details)
  509. io_uring: fix race condition reading SQ entries (details)
  510. io_uring: fix race condition when sq threads goes sleeping (details)
  511. io_uring: fix poll full SQ detection (details)
  512. nfsd: wake waiters blocked on file_lock before deleting it (details)
  513. nfsd: wake blocked file lock waiters before sending callback (details)
  514. net: stmmac: move stmmac_check_ether_addr() to driver probe (details)
  515. dmaengine: bcm2835: Avoid GFP_KERNEL in device_prep_slave_sg (details)
  516. dmaengine: sh: rcar-dmac: With cyclic DMA residue 0 is valid (details)
  517. dmaengine: sh: rcar-dmac: Fix glitch in dmaengine_tx_status (details)
  518. arm64: mm: Ensure tail of unaligned initrd is reserved (details)
  519. mac80211: Fix kernel panic due to use of txq after free (details)
  520. cfg80211: Notify previous user request during self managed wiphy (details)
  521. mac80211: don't attempt to rename ERR_PTR() debugfs dirs (details)
  522. arm64/module: ftrace: deal with place relative nature of PLTs (details)
  523. gpu: ipu-v3: dp: fix CSC handling (details)
  524. drm/imx: don't skip DP channel disable for background plane (details)
  525. io_uring: remove 'state' argument from io_{read,write} path (details)
  526. drm/sched: Fix description of drm_sched_stop (details)
  527. ARM: fix function graph tracer and unwinder dependencies (details)
  528. ARM: 8856/1: NOMMU: Fix CCR register faulty initialization when MPU is (details)
  529. ARM: 8857/1: efi: enable CP15 DMB instructions before cleaning the cache (details)
  530. spi: Micrel eth switch: declare missing of table (details)
  531. spi: ST ST95HF NFC: declare missing of table (details)
  532. ceph: only use d_name directly when parent is locked (details)
  533. ceph: ensure d_name stability in ceph_dentry_hash() (details)
  534. ceph: handle the case where a dentry has been renamed on outstanding req (details)
  535. ceph: fix ci->i_head_snapc leak (details)
  536. i2c: imx: correct the method of getting private data in notifier_call (details)
  537. Revert "drm/i915/fbdev: Actually configure untiled displays" (details)
  538. Revert "drm/virtio: drop prime import/export callbacks" (details)
  539. net: atheros: fix spelling mistake "underun" -> "underrun" (details)
  540. net: socionext: replace napi_alloc_frag with the netdev variant on init (details)
  541. net/ncsi: handle overflow when incrementing mac address (details)
  542. drm/vc4: Fix memory leak during gpu reset. (details)
  543. x86/mm: Fix a crash with kmemleak_scan() (details)
  544. ALSA: hda/realtek - Add new Dell platform for headset mode (details)
  545. drm/sun4i: Unbind components before releasing DRM and memory (details)
  546. drm/vc4: Fix compilation error reported by kbuild test bot (details)
  547. RDMA/mlx5: Do not allow the user to write to the clock page (details)
  548. RDMA/mlx5: Use rdma_user_map_io for mapping BAR pages (details)
  549. Input: snvs_pwrkey - make it depend on ARCH_MXC (details)
  550. RDMA/ucontext: Fix regression with disassociate (details)
  551. Input: synaptics-rmi4 - fix possible double free (details)
  552. cifs: fix memory leak in SMB2_read (details)
  553. cifs: do not attempt cifs operation on smb2+ rename error (details)
  554. cifs: fix page reference leak with readv/writev (details)
  555. net: ieee802154: fix missing checks for regmap_update_bits (details)
  556. net: vrf: Fix operation not supported when set vrf mac (details)
  557. net: rds: exchange of 8K and 1M pool (details)
  558. MAINTAINERS: LEDs: Add designated reviewer for LED subsystem (details)
  559. rxrpc: fix race condition in rxrpc_input_packet() (details)
  560. net/rose: fix unbound loop in rose_loopback_timer() (details)
  561. ipv4: add sanity checks in ipv4_link_failure() (details)
  562. perf/x86/intel: Update KBL Package C-state events to also include (details)
  563. drm/vmwgfx: Fix dma API layer violation (details)
  564. gpio: Fix gpiochip_add_data_with_key() error path (details)
  565. drm/bridge: dw-hdmi: fix SCDC configuration for ddc-i2c-bus (details)
  566. usb: usbip: fix isoc packet num validation in get_pipe (details)
  567. USB: yurex: Fix protection fault after device removal (details)
  568. USB: w1 ds2490: Fix bug caused by improper use of altsetting array (details)
  569. KVM: arm/arm64: Ensure vcpu target is unset on reset failure (details)
  570. kvm: arm: Skip stage2 huge mappings for unaligned ipa backed by THP (details)
  571. mwifiex: Make resume actually do something useful again on SDIO cards (details)
  572. btrfs: Switch memory allocations in async csum calculation path to (details)
  573. KVM: arm/arm64: Don't emulate virtual timers on userspace ioctls (details)
  574. RDMA/hns: Bugfix for mapping user db (details)
  575. clk: Add missing stubs for a few functions (details)
  576. sched/numa: Fix a possible divide-by-zero (details)
  577. mtd: rawnand: marvell: Clean the controller state before each operation (details)
  578. power: supply: sysfs: prevent endless uevent loop with (details)
  579. selftests/seccomp: Prepare for exclusive seccomp flags (details)
  580. seccomp: Make NEW_LISTENER and TSYNC flags exclusive (details)
  581. MIPS: eBPF: Make ebpf_to_mips_reg() static (details)
  582. tools: bpftool: fix infinite loop in map create (details)
  583. libbpf: add binary to gitignore (details)
  584. bpf: mark registers in all frames after pkt/null checks (details)
  585. selftests/bpf: test cases for pkt/null checks in subprogs (details)
  586. bpf: Fix preempt_enable_no_resched() abuse (details)
  587. dmaengine: mediatek-cqdma: fix wrong register usage in mtk_cqdma_start (details)
  588. l2tp: use rcu_dereference_sk_user_data() in l2tp_udp_encap_recv() (details)
  589. net: ethernet: stmmac: manage the get_irq probe defer case (details)
  590. qmi_wwan: new Wistron, ZTE and D-Link devices (details)
  591. tracing: Fix buffer_ref pipe ops (details)
  592. tracing: Fix a memory leak by early error exit in trace_pid_write() (details)
  593. trace: Fix preempt_enable_no_resched() abuse (details)
  594. genetlink: use idr_alloc_cyclic for family->id assignment (details)
  595. net: phy: marvell: Fix buffer overrun with stats counters (details)
  596. mm/memory_hotplug.c: drop memory device reference after (details)
  597. zram: pass down the bvec we need to read into in the work struct (details)
  598. lib/Kconfig.debug: fix build error without CONFIG_BLOCK (details)
  599. lib/test_vmalloc.c: do not create cpumask_t variable on stack (details)
  600. mm: do not boost watermarks to avoid fragmentation for the DISCONTIG (details)
  601. mm, page_alloc: always use a captured page regardless of compaction (details)
  602. mm/page_alloc.c: avoid potential NULL pointer dereference (details)
  603. mm/page_alloc.c: fix never set ALLOC_NOFRAGMENT flag (details)
  604. fs/proc/proc_sysctl.c: Fix a NULL pointer dereference (details)
  605. Input: synaptics-rmi4 - write config register values to the right offset (details)
  606. slip: make slhc_free() silently accept an error pointer (details)
  607. KVM: VMX: Move RSB stuffing to before the first RET after VM-Exit (details)
  608. bnxt_en: Improve multicast address setup logic. (details)
  609. bnxt_en: Free short FW command HWRM memory in error path in (details)
  610. bnxt_en: Fix possible crash in bnxt_hwrm_ring_free() under error (details)
  611. bnxt_en: Pass correct extended TX port statistics size to firmware. (details)
  612. bnxt_en: Fix statistics context reservation logic. (details)
  613. bnxt_en: Fix uninitialized variable usage in bnxt_rx_pkt(). (details)
  614. net/tls: don't copy negative amounts of data in reencrypt (details)
  615. net/tls: fix copy to fragments in reencrypt (details)
  616. udp: fix GRO reception in case of length mismatch (details)
  617. ALSA: hda/realtek - Fixed Dell AIO speaker noise (details)
  618. iwlwifi: mvm: check for length correctness in iwl_mvm_create_skb() (details)
  619. iwlwifi: fix driver operation for 5350 (details)
  620. iwlwifi: mvm: fix merge damage in iwl_mvm_vif_dbgfs_register() (details)
  621. ALSA: line6: use dynamic buffers (details)
  622. fsnotify: Fix NULL ptr deref in fanotify_get_fsid() (details)
  623. Linux 5.1-rc7 (details)
  624. [fix] get rid of checking for absent device name in vfs_get_tree() (details)
  625. Abort file_remove_privs() for non-reg. files (details)
  626. Documentation: kvm: fix dirty log ioctl arch lists (details)
  627. ath10k: perform crash dump collection in workqueue (details)
  628. ath10k: Drop WARN_ON()s that always trigger during system resume (details)
  629. selinux: use kernel linux/socket.h for genheaders and mdp (details)
  630. rdma: fix build errors on s390 and MIPS due to bad ZERO_PAGE use (details)
  631. x86: make ZERO_PAGE() at least parse its argument (details)
  632. ipv6: invert flowlabel sharing check in process and user mode (details)
  633. tcp: add sanity tests in tcp_add_backlog() (details)
  634. vrf: Use orig netdev to count Ip6InNoRoutes and a fresh route lookup (details)
  635. ipv6/flowlabel: wait rcu grace period before put_pid() (details)
  636. sched/cpufreq: Fix kobject memleak (details)
  637. Revert "drm/qxl: drop prime import/export callbacks" (details)
  638. ALSA: hda/realtek - Apply the fixup for ASUS Q325UAR (details)
  639. rxrpc: Fix net namespace cleanup (details)
  640. net: dsa: bcm_sf2: fix buffer overflow doing set_rxnfc (details)
  641. appletalk: Set error code if register_snap_client failed (details)
  642. l2ip: fix possible use-after-free (details)
  643. io_uring: fix handling SQEs requesting NOWAIT (details)
  644. io_uring: fix notes on barriers (details)
  645. io_uring: remove unnecessary barrier before wq_has_sleeper (details)
  646. io_uring: remove unnecessary barrier before reading cq head (details)
  647. io_uring: remove unnecessary barrier after updating SQ head (details)
  648. io_uring: remove unnecessary barrier before reading SQ tail (details)
  649. io_uring: remove unnecessary barrier after incrementing dropped counter (details)
  650. io_uring: remove unnecessary barrier after unsetting (details)
  651. x86/mm/mem_encrypt: Disable all instrumentation for early SME setup (details)
  652. Revert "ACPICA: Clear status of GPEs before enabling them" (details)
  653. KVM: x86: Whitelist port 0x7e for pre-incrementing %rip (details)
  654. x86/kvm/mmu: reset MMU context when 32-bit guest switches PAE (details)
  655. KVM: fix KVM_CLEAR_DIRTY_LOG for memory slots of unaligned size (details)
  656. KVM: lapic: Check for in-kernel LAPIC before deferencing apic pointer (details)
  657. KVM: selftests: make hyperv_cpuid test pass on AMD (details)
  658. KVM: nVMX: Fix size checks in vmx_set_nested_state (details)
  659. ipv6: fix races in ip6_dst_destroy() (details)
  660. io_uring: have submission side sqe errors post a cqe (details)
  661. Documentation: fix netdev-FAQ.rst markup warning (details)
  662. stmmac: pci: Fix typo in IOT2000 comment (details)
  663. sctp: avoid running the sctp state machine recursively (details)
  664. io_uring: fix SQPOLL cpu validation (details)
  665. io_uring: free allocated io_memory once (details)
  666. io_uring: drop req submit reference always in async punt (details)
  667. block: fix handling for BIO_NO_PAGE_REF (details)
  668. iov_iter: fix iov_iter_type (details)
  669. packet: in recvmsg msg_name return at least sizeof sockaddr_ll (details)
  670. packet: validate msg_namelen in send directly (details)
  671. selftests: fib_rule_tests: Fix icmp proto with ipv6 (details)
  672. net/tls: avoid NULL pointer deref on nskb->sk in fallback (details)
  673. io_uring: avoid page allocation warnings (details)
  674. ipv4: ip_do_fragment: Preserve skb_iif during fragmentation (details)
  675. gcc-9: silence 'address-of-packed-member' warning (details)
  676. gcc-9: don't warn about uninitialized variable (details)
  677. gcc-9: properly declare the {pv,hv}clock_page storage (details)
  678. selftests: fib_rule_tests: print the result and return 1 if any tests (details)
  679. gcc-9: don't warn about uninitialized btrfs extent_type variable (details)
  680. PCI/portdrv: Use shared MSI/MSI-X vector for Bandwidth Management (details)
  681. rds: ib: force endiannes annotation (details)
  682. ipv6: A few fixes on dereferencing rt->from (details)
  683. udp: fix GRO packet of death (details)
  684. powerpc/32s: Fix BATs setting with CONFIG_STRICT_KERNEL_RWX (details)
  685. ufs: fix braino in ufs_get_inode_gid() for solaris UFS flavour (details)
  686. PCI/LINK: Add Kconfig option (default off) (details)
  687. i2c: designware: ratelimit 'transfer when suspended' errors (details)
  688. perf/x86/amd: Update generic hardware cache events for Family 17h (details)
  689. MAINTAINERS: Include vendor specific files under arch/*/events/* (details)
  690. MAINTAINERS: friendly takeover of i2c-gpio driver (details)
  691. i2c: synquacer: fix enumeration of slave devices (details)
  692. i2c: Prevent runtime suspend of adapter when Host Notify is required (details)
  693. perf bpf: Return value with unlocking in perf_env__find_btf() (details)
  694. tools uapi x86: Sync vmx.h with the kernel (details)
  695. perf annotate: Fix build on 32 bit for BPF annotation (details)
  696. tools lib traceevent: Change tag string for error (details)
  697. perf bench numa: Add define for RUSAGE_THREAD if not present (details)
  698. perf report: Report OOM in status line in the GTK UI (details)
  699. perf cs-etm: Don't check cs_etm_queue::prev_packet validity (details)
  700. perf cs-etm: Always allocate memory for cs_etm_queue::prev_packet (details)
  701. tools build: Add -ldl to the disassembler-four-args feature test (details)
  702. tools arch uapi: Copy missing unistd.h headers for arc, hexagon and (details)
  703. perf tools: Remove needless asm/unistd.h include fixing build in some (details)
  704. perf/ring_buffer: Fix AUX software double buffering (details)
  705. perf/x86/intel/pt: Remove software double buffering PMU capability (details)
  706. perf/x86/intel: Fix race in intel_pmu_disable_event() (details)
  707. Linux 5.1 (details)
  708. gpu: pvr: Add PVR GPU driver (details)
  709. gpu: pvr: compilation fixes for kernel > 2.6.33 (details)
  710. gpu: pvr: move device registration into board file (details)
  711. gpu: pvr: add support to set board specific max SGX functional clk rate (details)
  712. gpu: pvr: add pvr_lock/remove unneeded lock headers (details)
  713. gpu: pvr: bail out from SGXOSTimer if it's been canceled (details)
  714. gpu: pvr: fix locking on the HW interrupt path (details)
  715. gpu: pvr: acquire the pvr lock on the SGX HW recovery path (details)
  716. gpu: pvr: fix locking in pvr_dbg_reset (details)
  717. gpu: pvr: BUG if pvr_lock is not held in HWRecoveryResetSGX (details)
  718. gpu: pvr: fix indent error (details)
  719. gpu: pvr: remove unused per device variable (details)
  720. gpu: pvr: make sure the device is powered on in SGX_MISRHandler (details)
  721. gpu: pvr: add support for finding the BM context from the DL (details)
  722. gpu: pvr: clean up FreeResourceByCriteria (details)
  723. gpu: pvr: add helpers to look up resource context and proc info (details)
  724. gpu: pvr: dump process info at HW recovery reset (details)
  725. gpu: pvr: add option for extra debugging information (details)
  726. gpu: pvr: enable debug trace for basic debug build (details)
  727. gpu: pvr: fix locking on SGX load calculating thread (details)
  728. gpu: pvr: fix locking on the DVFS path (details)
  729. gpu: pvr: remove PVRSRVPowerLock() (details)
  730. gpu: pvr: remove sPowerStateChangeResource lock (details)
  731. gpu: pvr: remove sQProcessResource/OSLockResource interface (details)
  732. gpu: pvr: remove unused function args from PVRSRVSetDevicePowerStateKM (details)
  733. gpu: pvr: remove unused function args from PVRSRVProcessQueues (details)
  734. gpu: pvr: no need to check for retry failures in PVRSRVMISR (details)
  735. gpu: pvr: remove unused function args from HWRecoveryResetSGX (details)
  736. gpu: pvr: no need to check for retry failures in SGXScheduleCCBCommandKM (details)
  737. gpu: pvr: no need to check for IRQ context in SGXCommandComplete (details)
  738. gpu: pvr: no need to check for retry failures in SGXTestActivePowerEvent (details)
  739. gpu: pvr: no need to delay queue processing in SGXPostActivePowerEvent (details)
  740. gpu: pvr: remove unused function args from SGXPostActivePowerEvent (details)
  741. gpu: pvr: remove unused function args from SGXTestActivePowerEvent (details)
  742. gpu: pvr: remove unrelevant comments about caller ID (details)
  743. gpu: pvr: fix PDUMP configuartion in release build (details)
  744. gpu: pvr: remove support for broken LINUX_MEM_AREAS_DEBUG (details)
  745. gpu: pvr: round the SGX fclock rate to the nearest supported (details)
  746. gpu: pvr: replace boolean by flags in blits complete query (details)
  747. gpu: pvr: support for events (details)
  748. gpu: pvr: support for polling events (details)
  749. gpu: pvr: support for render complete events (details)
  750. gpu: pvr: enable render complete events (details)
  751. gpu: pvr: support for user data in events (details)
  752. gpu: pvr: more accurate error reporting when clk_set_rate fails (details)
  753. gpu: pvr: fix lockdep problem (details)
  754. gpu: pvr: move ocp_cleanup() later during device deinit (details)
  755. gpu: pvr: optimize pvr_lock() by inlining it (details)
  756. gpu: pvr: Disable driver if SGX HW recovery fails (details)
  757. gpu: pvr: Reuse the same syncobject across all wraps (details)
  758. gpu: pvr: fix handle allocation when sharing sync objects (details)
  759. gpu: pvr: Add support for flip complete events (details)
  760. gpu: pvr: Reduce code duplication (details)
  761. gpu: pvr: Use DSS notifier to signal flip complete events (details)
  762. gpu: pvr: omaplfb: remove unnecessary fb unblanking (details)
  763. gpu: pvr: add SGXScheduleProcessQueues to prepare for pvr_dev_lock (details)
  764. gpu: pvr: add dvfs lock (details)
  765. gpu: pvr: rename pvr_dvfs_lock to pvr_dev_lock (details)
  766. gpu: pvr: fix locking around HWRecoveryResetSGX (details)
  767. gpu: pvr: Remove needless NULL check in BM_ImportMemory. (details)
  768. gpu: pvr: Remove needless NULL check in BM_DestroyHeap. (details)
  769. gpu: pvr: Fixed formatting in buffer_manager.c (details)
  770. gpu: pvr: Remove needless NULL check in WrapMemory. (details)
  771. gpu: pvr: Remove needless NULL check in BM_CreateHeap. (details)
  772. gpu: pvr: Remove needless NULL check in PVRSRVWrapExtMemoryKM. (details)
  773. gpu: pvr: Changed error-path condtion. (details)
  774. gpu: pvr: Changed ReallocMem. (details)
  775. gpu: pvr: Check OSAllocMem return value. (details)
  776. gpu: pvr: Check OSAllocMem return value. (details)
  777. gpu: pvr: Remove FIRST_PHYSICAL_PFN define. (details)
  778. gpu: pvr: Removed needless NULL check in MMU_BIFResetPDAlloc. (details)
  779. gpu: pvr: Check OSAllocMem return value. (details)
  780. gpu: pvr: Check OSAllocMem return value. (details)
  781. gpu: pvr: Check OSAllocMem return value. (details)
  782. gpu: pvr: Remove SysAcquireData call in pvr_cleanup. (details)
  783. gpu: pvr: Check SysAcquireData return value. (details)
  784. gpu: pvr: pass IOCTL in param size to dispatch func (details)
  785. gpu: pvr: Increase the max number of 3D TA status vals in kick requests (details)
  786. gpu: pvr: Fixed error path in cache flush function. (details)
  787. gpu: pvr: fix locking on the HW recovery reset error path (details)
  788. gpu: pvr: remove unnecessary udelay from the HW poll loop (details)
  789. gpu: pvr: fix typo in SGXDoKickBW (details)
  790. gpu: pvr: split out setting power down delay into its own function (details)
  791. gpu: pvr: fix SysGetSGXTimingInformation for cases when the HW is off (details)
  792. gpu: pvr: add support for dynamic timing of SGX HW power down (details)
  793. gpu: pvr: wire in the dynamic power-down delay calculation (details)
  794. gpu: pvr: Expose new display events to user space (details)
  795. gpu: pvr: Snapshot pending write ops during event request (details)
  796. gpu: pvr: remove build time ABI dependency on the EDM trace option (details)
  797. gpu: pvr: make the IOCTL i/f compatible for old ABI users (details)
  798. gpu: pvr: fix Kconfig description for EDM tracing (details)
  799. gpu: pvr: remove runtime dependency on the EDM trace option (details)
  800. gpu: pvr: move debugfs entries under a new pvr dir (details)
  801. gpu: pvr: make debugfs available in release build too (details)
  802. gpu: pvr: add snprint_edm_trace (details)
  803. gpu: pvr: add debugfs entry to read the EDM trace (details)
  804. gpu: pvr: print some init failure messages in release mode too (details)
  805. gpu: pvr: remove ABI compatibility hack from SGXInitPart2 IOCTL (details)
  806. gpu: pvr: remove ABI compatibility hack from SGXKick IOCTL (details)
  807. gpu: pvr: refactor dump_process_info (details)
  808. gpu: pvr: dump render status buffers during SGX HW recovery (details)
  809. gpu: pvr: improve per process procfs entry/dir handling (details)
  810. gpu: pvr: disable sgx active power management while pvrtune is running (details)
  811. gpu: pvr: fix error path during SGX device initialization (details)
  812. gpu: pvr: move debugfs infrastructure to its own files (details)
  813. gpu: pvr: debugfs: add initial hwrec dumping infrastructure (details)
  814. gpu: pvr: debugfs: add hwrec register dump (details)
  815. gpu: pvr: debugfs: add hwrec context dump (details)
  816. gpu: pvr: debugfs: add hwrec edm trace (details)
  817. gpu: pvr: debugfs: add hwrec status buffer dumping (details)
  818. gpu: pvr: pdump: SYS_DATA::bPowerUpPDumped is unused (details)
  819. gpu: pvr: pdump: consolidate some code inside PDUMP defines (details)
  820. gpu: pvr: pdump: remove unused bridge calls (details)
  821. gpu: pvr: pdump: remove unused pdump functions (details)
  822. gpu: pvr: pdump: remove lastframe support (details)
  823. gpu: pvr: pdump: stop depending on dbgdrvif.h (details)
  824. gpu: pvr: pdump: remove dbgdrv (details)
  825. gpu: pvr: pdump: remove wrapping of globals in pdump.c (details)
  826. gpu: pvr: pdump: remove pdump marker code (details)
  827. gpu: pvr: pdump: move functions around to better reflect dependencies (details)
  828. gpu: pvr: pdump: reduce error propagation from pdump to userspace (details)
  829. gpu: pvr: pdump: rewrite PDumpWriteString2() to pdump_print() (details)
  830. gpu: pvr: pdump: rewrite PDumpCommentKM (details)
  831. gpu: pvr: pdump: remove param offset handling (details)
  832. gpu: pvr: pdump: review use of PDumpSuspended (details)
  833. gpu: pvr: pdump: assume that SGX_MMU_PAGE_SIZE equals PAGE_SIZE (details)
  834. gpu: pvr: pdump: clean up logic across pdump.c (details)
  835. gpu: pvr: pdump: remove page offset juggling (details)
  836. gpu: pvr: pdump: sanitise stream handling (details)
  837. gpu: pvr: pdump: rewrite PDumpMemUM() (details)
  838. gpu: pvr: pdump: move pdump.c and pdump_km.h to pvr_pdump.[ch] (details)
  839. gpu: pvr: pdump: remove unused arguments (details)
  840. gpu: pvr: pdump: rename PDumpMem2KM to PDumpPageTableKM (details)
  841. gpu: pvr: pdump: silence sparse warnings in sgx_bridge pdump code (details)
  842. gpu: pvr: pdump: move empty back-end into pvr_pdumpfs.[ch] (details)
  843. gpu: pvr: pdumpfs: add pdumpfs_mutex (details)
  844. gpu: pvr: pdumpfs: add Kconfig and debugfs pdump mode handling (details)
  845. gpu: pvr: pdumpfs: add frame struct and initial frame handling code (details)
  846. gpu: pvr: pdumpfs: make frame_count_max configurable (details)
  847. gpu: pvr: pdumpfs: start storing pdump data (details)
  848. gpu: pvr: pdumpfs: add initial frame handling and debugfs support (details)
  849. gpu: pvr: pdumpfs: add debugfs entries for the current frame (details)
  850. gpu: pvr: pdumpfs: add stream offset tracking (details)
  851. gpu: pvr: pdumpfs: add stream_frames debugfs entry (details)
  852. gpu: pvr: pdumpfs: fix for imgtec simulator (details)
  853. gpu: pvr: change snprintf to scnprintf (details)
  854. gpu: pvr: reinstate dumping EDM trace to syslog (details)
  855. gpu: pvr: fix error path in PVRSRVRegisterBCDeviceKM (details)
  856. gpu: pvr: refactor error path in PVRSRVOpenBCDeviceKM (details)
  857. gpu: pvr: fix incorrect free size in PVRSRVOpenBCDeviceKM (details)
  858. gpu: pvr: fix error path in PVRSRVOpenBCDeviceKM (details)
  859. gpu: pvr: refactor error path in PVRSRVOpenDCDeviceKM (details)
  860. gpu: pvr: fix error path in PVRSRVOpenDCDeviceKM (details)
  861. gpu: pvr: fix PVRSRVWrapExtMemoryKM for user provided physical pages (details)
  862. gpu: pvr: fix error path in hash _Resize (details)
  863. gpu: pvr: optimize mem clear in hash _Resize (details)
  864. gpu: pvr: fix error path in MMU_Initialise (details)
  865. gpu: pvr: fix state buffer validation (details)
  866. gpu: pvr: fix error path in SysInitialise (details)
  867. gpu: pvr: remove dead code from the PVRSRVGetFBStatsKM code path (details)
  868. gpu: pvr: get rid of unnecessary hash lookups for the proc object (details)
  869. gpu: pvr: add missing headers to osfunc.h (details)
  870. gpu: pvr: get proc name during process attach time (details)
  871. gpu: pvr: use already existing proc name in pr_err_process info (details)
  872. gpu: pvr: add command tracing support (details)
  873. gpu: pvr: pass proc info to sgxkick and sgxtransfer (details)
  874. gpu: pvr: add tracing to the SGX kick and transfer commands (details)
  875. gpu: pvr: add tracing to the SGX queryblits command (details)
  876. gpu: pvr: add tracing for PVR events (details)
  877. gpu: pvr: add debugfs interface for the command trace (details)
  878. gpu: pvr: print the command trace to syslog during HWrec (details)
  879. gpu: pvr: fix memory context refcount problem leading to leaked handle (details)
  880. gpu: pvr: report IOCTL failures (details)
  881. gpu: pvr: remove CommonBridgeInit() (details)
  882. gpu: pvr: move ioctl checking error messagess to pr_err() (details)
  883. gpu: pvr: fix init script handling for pdump/non-pdump (details)
  884. gpu: pvr: move pdump ioctls to its own range at 192 (details)
  885. gpu: pvr: debugfs: add registers file (details)
  886. gpu: pvr: hwrec: fix hwrec_mem_pages type change warnings (details)
  887. gpu: pvr: fix pdumpfs_stream_buffer_clear (details)
  888. gpu: pvr: fix missing return value warning when CONFIG_BUG=n (details)
  889. gpu: pvr: V2: Find and fix all incorrect sync counter completion checks (details)
  890. gpu: pvr: kick: check for duplicate src syncs (details)
  891. gpu: pvr: add slab.h include in order to make driver build on 2.6.35.3 (details)
  892. SGX: display.h -> omapdss.h (details)
  893. SGX: console_sem -> console_lock (details)
  894. SGX: clk_notifier_register -> cpufreq_register_notifier (details)
  895. SGX: Add export.h include to pvr_debugfs.c (details)
  896. gpu: pvr: Use DMA mapping API for cache invalidation (details)
  897. gpu: pvr: update config dependency name (details)
  898. gpu: pvr: use video/omapfb_dss.h header file (details)
  899. gpu: pvr: remove includes for asm/system.h (details)
  900. gpu: pvr: convert file permissions to numeric (details)
  901. gpu: pvr: convert proc files to seq_file interface (details)
  902. gpu: pvr: proc: use file_inode() macro (details)
  903. gpu: pvr: update write handlers for proc files (details)
  904. gpu: pvr: convert timer to use timer_setup() (details)
  905. gpu: pvr: kill vma flag VM_RESERVED (details)
  906. gpu: pvr: remove the first parameter of OSAccessOK() (details)
  907. gpu: pvr: page_cache_release() -> put_page() (details)
  908. gpu: pvr: update get_user_pages() for changed API (details)
  909. gpu: pvr: remove __dev* attributes (details)
  910. gpu: pvr: ignore return value of misc_deregister() (details)
  911. gpu: pvr: proc: rename variables (details)
  912. gpu: pvr: rewrite proc files write handling (details)
  913. gpu: pvr: don't dereference pointers to proc_dir_entry (details)
  914. gpu: pvr: include dma.h for dmac_map_area() (details)
  915. ARM: export cache flush management symbols when !MULTI_CACHE (details)
  916. gpu: pvr: remove unused omap_pm_set_min_bus_tput() (details)
  917. gpu: pvr: make sysutils.o build (details)
  918. gpu: pvr: add header for cpu_clock() (details)
  919. gpu: pvr: events: remove unused do_gettimeofday() (details)
  920. gpu: pvr: debugfs: get rid of do_gettimeofday() (details)
  921. gpu: pvr: events: get rid of do_gettimeofday() (details)
  922. gpu: pvr: set proper SGX maximum clock rate (details)
  923. gpu: pvr: add device tree support (details)
  924. ARM: dts: omap34xx: add GPU entry (details)
  925. gpu: pvr: update for common clk framework (details)
  926. gpu: pvr: remove irrelevant clk_set_parent() (details)
  927. gpu: pvr: cpufreq_register_notifier -> clk_notifier_register (details)
  928. gpu: pvr: remove line wraps (details)
  929. gpu: pvr: set FMODE_UNSIGNED_OFFSET (details)
  930. gpu: pvr: debug: show memory stats in /proc/slabinfo (details)
  931. gpu: pvr: enhance debugging (details)
  932. gpu: pvr: minor fix (details)
  933. gpu: pvr: fix CONFIG_PVR_TRACE_CMD=y compilation (details)
  934. gpu: pvr: trace_cmd: fix empty buffer (details)
  935. gpu: pvr: trace_cmd: rewrite with seq_file (details)
  936. OMAP: DSS2: apply patch from Nemo Adaptation (details)
  937. OMAP: DSS2: fix state checking (details)
  938. Input: tsc200x-core - add 'disable' sysfs attribute (details)
  939. ARM: dts: n900: remove rx51-battery (details)
  940. ARM: dts: n900: increase charge current limit to 950mA (details)
  941. ARM: dts: n900: ignore mmc1 card detect gpio (details)
  942. phy: phy-twl4030-usb: Fix cable state handling (details)
  943. usb: musb: omap2430: Add support for idling phy when musb is idle (details)
  944. ARM: n900_defconfig: rename omap2plus_defconfig (details)
  945. ARM: n900_defconfig: update for current kernel (details)
  946. ARM: n900_defconfig: disable lock debugging (details)
  947. ARM: n900_defconfig: disable SMP (details)
  948. ARM: n900_defconfig: disable DRM (details)
  949. ARM: n900_defconfig: make display work (details)
  950. ARM: n900_defconfig: enable PowerVR SGX (details)
  951. ARM: n900_defconfig: enable WiFi (details)
  952. ARM: n900_defconfig: set kernel compression mode to LZ4 (details)
  953. ARM: n900_defconfig: don't store .config in kernel (details)
  954. ARM: n900_defconfig: increase kernel log buffer size (details)
  955. ARM: n900_defconfig: disable swap controller (cgroup) (details)
  956. ARM: n900_defconfig: remove obsolete sysfs syscall (details)
  957. ARM: n900_defconfig: select SLUB as slab allocator (details)
  958. ARM: n900_defconfig: disable ARMv6 (details)
  959. ARM: n900_defconfig: remove excessive systems (details)
  960. ARM: n900_defconfig: clean up SoC specific features (details)
  961. ARM: n900_defconfig: clean up common clock framework (details)
  962. ARM: n900_defconfig: disable extraneous erratas (details)
  963. ARM: n900_defconfig: disable L2x0 PrimeCell (details)
  964. ARM: n900_defconfig: disable PCI (details)
  965. ARM: n900_defconfig: set preemption model to "Desktop" (details)
  966. ARM: n900_defconfig: optimize kernel for size (details)
  967. ARM: n900_defconfig: build in Thumb-2 mode (details)
  968. ARM: n900_defconfig: disable Thumb-2 bug workaround (details)
  969. ARM: n900_defconfig: set timer frequency to 200 Hz (details)
  970. ARM: n900_defconfig: disable highmem interaction code (details)
  971. ARM: n900_defconfig: disable ATAGS (details)
  972. ARM: n900_defconfig: disable SATA/PATA (details)
  973. ARM: n900_defconfig: clean up 'Power supply' (details)
  974. ARM: n900_defconfig: clean up 'Keyboards' (details)
  975. ARM: n900_defconfig: clean up 'Touchscreens' (details)
  976. ARM: n900_defconfig: clean up 'Real Time Clock' (details)
  977. ARM: n900_defconfig: compile RTC driver in kernel (details)
  978. ARM: n900_defconfig: compile watchdog drivers in kernel (details)
  979. ARM: n900_defconfig: enable ZRAM (details)
  980. ARM: n900_defconfig: enable ZSWAP (details)
  981. ARM: n900_defconfig: change cmdline 'console' param (details)
  982. ARM: n900_defconfig: add common filesystems (details)
  983. ARM: n900_defconfig: filesystems native language (details)
  984. ARM: n900_defconfig: systemd related options (details)
  985. ARM: n900_defconfig: PowerTOP related options (details)
  986. ARM: n900_defconfig: disable ethernet drivers (details)
  987. ARM: n900_defconfig: compile PHY devices drivers as modules (details)
  988. ARM: n900_defconfig: enable nokia modem (details)
  989. ARM: n900_defconfig: enable accelerometer (details)
  990. ARM: n900_defconfig: change compiler debug options (details)
  991. ARM: n900_defconfig: disable initramfs/initrd (details)
  992. ARM: n900_defconfig: enable crypto accelerators (details)
  993. ARM: n900_defconfig: enable thermal driver (details)
  994. ARM: n900_defconfig: enable light sensor (details)
  995. ARM: n900_defconfig: analog to digital converters (details)
  996. ARM: n900_defconfig: enable radio driver (details)
  997. ARM: n900_defconfig: enable bluetooth radio (details)
  998. ARM: n900_defconfig: disable TV tuners (details)
  999. ARM: n900_defconfig: enable front LED (details)
  1000. ARM: n900_defconfig: enable flash LED (details)
  1001. ARM: n900_defconfig: enable front webcam (details)
  1002. ARM: n900_defconfig: enable back camera (details)
  1003. ARM: n900_defconfig: expose thermal sensors as hwmon device (details)
  1004. ARM: n900_defconfig: build keyboard driver into kernel (details)
  1005. ARM: n900_defconfig: enable in-kernel .config (details)
  1006. ARM: n900_defconfig: add twl4030-vibra (details)
  1007. ARM: n900_defconfig: add nf/iptables maasquerade (details)
  1008. debian: preserve /debian/ on 'make clean' (details)
  1009. debian: remove /debian/ from .gitignore (details)
  1010. debian: fill /debian/ directory with content (details)
  1011. debian: use linux native scripts for packaging (details)
  1012. Update debian/changelog (5.0.5-1) (details)
  1013. debian: fix linux-headers-n900 when crossbuilding (details)
  1014. debian: add gbp.conf needed by jenkins-debian-glue (details)
  1015. debian: update README for default config management (details)
  1016. debian: rules: fix warning: 'build-arch' is missing (details)
  1017. Update debian/changelog (5.0.5-2) (details)
  1018. Update debian/changelog (5.0.5-3) (details)
  1019. Update debian/changelog (5.0.7-1) (details)
  1020. Update debian/changelog (5.0.9-1) (details)
  1021. Update debian/changelog (5.0.14-1) (details)
  1022. Update debian/changelog (5.1-1) (details)
  1023. debian/changelog: bump for config change (details)
  1024. debian/changelog: add iptables masquerade support (details)
Commit ba5e60c9b75dec92d4c695b928f69300b17d7686 by ludovic.desroches
arm/mach-at91/pm : fix possible object reference leak
of_find_device_by_node() takes a reference to the struct device when it
finds a match via get_device. When returning error we should call
put_device.
Reviewed-by: Mukesh Ojha <mojha@codeaurora.org> Signed-off-by: Peng Hao
<peng.hao2@zte.com.cn> Signed-off-by: Ludovic Desroches
<ludovic.desroches@microchip.com>
The file was modifiedarch/arm/mach-at91/pm.c (diff)
Commit 6b0868c820ff7370d15d6ddfe71b1ce6bbe8a25d by mgorman
mm/compaction.c: correct zone boundary handling when resetting pageblock
skip hints
Mikhail Gavrilo reported the following bug being triggered in a Fedora
kernel based on 5.1-rc1 but it is relevant to a vanilla kernel.
kernel: page dumped because: VM_BUG_ON_PAGE(PagePoisoned(p))
kernel: ------------[ cut here ]------------
kernel: kernel BUG at include/linux/mm.h:1021!
kernel: invalid opcode: 0000 [#1] SMP NOPTI
kernel: CPU: 6 PID: 116 Comm: kswapd0 Tainted: G         C      
5.1.0-0.rc1.git1.3.fc31.x86_64 #1
kernel: Hardware name: System manufacturer System Product Name/ROG STRIX
X470-I GAMING, BIOS 1201 12/07/2018
kernel: RIP: 0010:__reset_isolation_pfn+0x244/0x2b0
kernel: Code: fe 06 e8 0f 8e fc ff 44 0f b6 4c 24 04 48 85 c0 0f 85 dc
fe ff ff e9 68 fe ff ff 48 c7 c6 58 b7 2e 8c 4c 89 ff e8 0c 75 00 00
<0f> 0b 48 c7 c6 58 b7 2e 8c e8 fe 74 00 00 0f 0b 48 89 fa 41 b8 01
kernel: RSP: 0018:ffff9e2d03f0fde8 EFLAGS: 00010246
kernel: RAX: 0000000000000034 RBX: 000000000081f380 RCX:
ffff8cffbddd6c20
kernel: RDX: 0000000000000000 RSI: 0000000000000006 RDI:
ffff8cffbddd6c20
kernel: RBP: 0000000000000001 R08: 0000009898b94613 R09:
0000000000000000
kernel: R10: 0000000000000000 R11: 0000000000000000 R12:
0000000000100000
kernel: R13: 0000000000100000 R14: 0000000000000001 R15:
ffffca7de07ce000
kernel: FS:  0000000000000000(0000) GS:ffff8cffbdc00000(0000)
knlGS:0000000000000000
kernel: CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
kernel: CR2: 00007fc1670e9000 CR3: 00000007f5276000 CR4:
00000000003406e0
kernel: Call Trace:
kernel:  __reset_isolation_suitable+0x62/0x120
kernel:  reset_isolation_suitable+0x3b/0x40
kernel:  kswapd+0x147/0x540
kernel:  ? finish_wait+0x90/0x90
kernel:  kthread+0x108/0x140
kernel:  ? balance_pgdat+0x560/0x560
kernel:  ? kthread_park+0x90/0x90
kernel:  ret_from_fork+0x27/0x50
He bisected it down to e332f741a8dd ("mm, compaction: be selective about
what pageblocks to clear skip hints").  The problem is that the patch in
question was sloppy with respect to the handling of zone boundaries.  In
some instances, it was possible for PFNs outside of a zone to be
examined and if those were not properly initialised or poisoned then it
would trigger the VM_BUG_ON.  This patch corrects the zone boundary
issues when resetting pageblock skip hints and Mikhail reported that the
bug did not trigger after 30 hours of testing.
Link: http://lkml.kernel.org/r/20190327085424.GL3189@techsingularity.net
Fixes: e332f741a8dd ("mm, compaction: be selective about what pageblocks
to clear skip hints") Reported-by: Mikhail Gavrilov
<mikhail.v.gavrilov@gmail.com> Tested-by: Mikhail Gavrilov
<mikhail.v.gavrilov@gmail.com> Cc: Daniel Jordan
<daniel.m.jordan@oracle.com> Cc: Qian Cai <cai@lca.pw> Cc: Vlastimil
Babka <vbabka@suse.cz> Signed-off-by: Mel Gorman
<mgorman@techsingularity.net>
The file was modifiedmm/compaction.c (diff)
Commit 5b56d996dd50a9d2ca87c25ebb50c07b255b7e04 by mgorman
mm/compaction.c: abort search if isolation fails
Running LTP oom01 in a tight loop or memory stress testing put the
system in a low-memory situation could triggers random memory corruption
like page flag corruption below due to in fast_isolate_freepages(), if
isolation fails, next_search_order() does not abort the search
immediately could lead to improper accesses.
UBSAN: Undefined behaviour in ./include/linux/mm.h:1195:50 index 7 is
out of range for type 'zone [5]' Call Trace:
dump_stack+0x62/0x9a
ubsan_epilogue+0xd/0x7f
__ubsan_handle_out_of_bounds+0x14d/0x192
__isolate_free_page+0x52c/0x600
compaction_alloc+0x886/0x25f0
unmap_and_move+0x37/0x1e70
migrate_pages+0x2ca/0xb20
compact_zone+0x19cb/0x3620
kcompactd_do_work+0x2df/0x680
kcompactd+0x1d8/0x6c0
kthread+0x32c/0x3f0
ret_from_fork+0x35/0x40
------------[ cut here ]------------ kernel BUG at mm/page_alloc.c:3124!
invalid opcode: 0000 [#1] SMP DEBUG_PAGEALLOC KASAN PTI RIP:
0010:__isolate_free_page+0x464/0x600 RSP: 0000:ffff888b9e1af848 EFLAGS:
00010007 RAX: 0000000030000000 RBX: ffff888c39fcf0f8 RCX:
0000000000000000 RDX: 1ffff111873f9e25 RSI: 0000000000000004 RDI:
ffffed1173c35ef6 RBP: ffff888b9e1af898 R08: fffffbfff4fc2461 R09:
fffffbfff4fc2460 R10: fffffbfff4fc2460 R11: ffffffffa7e12303 R12:
0000000000000008 R13: dffffc0000000000 R14: 0000000000000000 R15:
0000000000000007 FS:  0000000000000000(0000) GS:ffff888ba8e80000(0000)
knlGS:0000000000000000 CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fc7abc00000 CR3: 0000000752416004 CR4: 00000000001606a0 DR0:
0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3:
0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace:
compaction_alloc+0x886/0x25f0
unmap_and_move+0x37/0x1e70
migrate_pages+0x2ca/0xb20
compact_zone+0x19cb/0x3620
kcompactd_do_work+0x2df/0x680
kcompactd+0x1d8/0x6c0
kthread+0x32c/0x3f0
ret_from_fork+0x35/0x40
Link: http://lkml.kernel.org/r/20190320192648.52499-1-cai@lca.pw Fixes:
dbe2d4e4f12e ("mm, compaction: round-robin the order while searching the
free lists for a target") Signed-off-by: Qian Cai <cai@lca.pw> Acked-by:
Mel Gorman <mgorman@techsingularity.net> Cc: Daniel Jordan
<daniel.m.jordan@oracle.com> Cc: Mikhail Gavrilov
<mikhail.v.gavrilov@gmail.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc:
Pavel Tatashin <pasha.tatashin@soleen.com> Signed-off-by: Mel Gorman
<mgorman@techsingularity.net>
The file was modifiedmm/compaction.c (diff)
Commit 8b030a57e35a0efc1a8aa18bb10555bc5066ac40 by tiwai
ALSA: xen-front: Do not use stream buffer size before it is set
This fixes the regression introduced while moving to Xen shared buffer
implementation.
Fixes: 58f9d806d16a ("ALSA: xen-front: Use Xen common shared buffer
implementation") Reviewed-by: Juergen Gross <jgross@suse.com>
Signed-off-by: Oleksandr Andrushchenko
<oleksandr_andrushchenko@epam.com> Cc: <stable@vger.kernel.org> # v5.0+
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/xen/xen_snd_front_alsa.c (diff)
Commit 631b7abacd02b88f4b0795c08b54ad4fc3e7c7c0 by rostedt
ptrace: Remove maxargs from task_current_syscall()
task_current_syscall() has a single user that passes in 6 for maxargs,
which is the maximum arguments that can be used to get system calls from
syscall_get_arguments(). Instead of passing in a number of arguments to
grab, just get 6 arguments. The args argument even specifies that it's
an array of 6 items.
This will also allow changing syscall_get_arguments() to not get a
variable number of arguments, but always grab 6.
Linus also suggested not passing in a bunch of arguments to
task_current_syscall() but to instead pass in a pointer to a structure,
and just fill the structure. struct seccomp_data has almost all the
parameters that is needed except for the stack pointer (sp). As
seccomp_data is part of uapi, and I'm afraid to change it, a new
structure was created
"syscall_info", which includes seccomp_data and adds the "sp" field.
Link: http://lkml.kernel.org/r/20161107213233.466776454@goodmis.org
Cc: Andy Lutomirski <luto@kernel.org> Cc: Alexey Dobriyan
<adobriyan@gmail.com> Cc: Oleg Nesterov <oleg@redhat.com> Cc: Kees Cook
<keescook@chromium.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc:
linux-fsdevel@vger.kernel.org Reviewed-by: Thomas Gleixner
<tglx@linutronix.de> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org>
The file was modifiedlib/syscall.c (diff)
The file was modifiedinclude/linux/ptrace.h (diff)
The file was modifiedfs/proc/base.c (diff)
Commit d08e411397cb6fcb3d3fb075c27a41975c99e88f by rostedt
tracing/syscalls: Pass in hardcoded 6 into syscall_get_arguments()
The only users that calls syscall_get_arguments() with a variable and
not a hard coded '6' is ftrace_syscall_enter(). syscall_get_arguments()
can be optimized by removing a variable input, and always grabbing 6
arguments regardless of what the system call actually uses.
Change ftrace_syscall_enter() to pass the 6 args into a local stack
array and copy the necessary arguments into the trace event as needed.
This is needed to remove two parameters from syscall_get_arguments().
Link: http://lkml.kernel.org/r/20161107213233.627583542@goodmis.org
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
The file was modifiedkernel/trace/trace_syscalls.c (diff)
Commit 5eed7898626bedd6405421550c0c6e8ab9591bb2 by daniel
flow_dissector: rst'ify documentation
Rename bpf_flow_dissector.txt to bpf_flow_dissector.rst and fix
formatting. Also, link it from the Documentation/networking/index.rst.
Tested with 'make htmldocs' to make sure it looks reasonable.
Fixes: ae82899bbe92 ("flow_dissector: document BPF flow dissector
environment") Signed-off-by: Stanislav Fomichev <sdf@google.com>
Acked-by: Martin KaFai Lau <kafai@fb.com> Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net>
The file was removedDocumentation/networking/bpf_flow_dissector.txt
The file was addedDocumentation/networking/bpf_flow_dissector.rst
The file was modifiedDocumentation/networking/index.rst (diff)
Commit 10a16997db3d99fc02c026cf2c6e6c670acafab0 by rostedt
riscv: Fix syscall_get_arguments() and syscall_set_arguments()
RISC-V syscall arguments are located in orig_a0,a1..a5 fields of struct
pt_regs.
Due to an off-by-one bug and a bug in pointer arithmetic
syscall_get_arguments() was reading s3..s7 fields instead of a1..a5.
Likewise, syscall_set_arguments() was writing s3..s7 fields instead of
a1..a5.
Link: http://lkml.kernel.org/r/20190329171221.GA32456@altlinux.org
Fixes: e2c0cdfba7f69 ("RISC-V: User-facing API") Cc: Ingo Molnar
<mingo@redhat.com> Cc: Kees Cook <keescook@chromium.org> Cc: Andy
Lutomirski <luto@amacapital.net> Cc: Will Drewry <wad@chromium.org> Cc:
Albert Ou <aou@eecs.berkeley.edu> Cc: linux-riscv@lists.infradead.org
Cc: stable@vger.kernel.org # v4.15+ Acked-by: Palmer Dabbelt
<palmer@sifive.com> Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
The file was modifiedarch/riscv/include/asm/syscall.h (diff)
Commit ed3bb007021b9bddb90afae28a19f08ed8890add by rostedt
csky: Fix syscall_get_arguments() and syscall_set_arguments()
C-SKY syscall arguments are located in orig_a0,a1,a2,a3,regs[0],regs[1]
fields of struct pt_regs.
Due to an off-by-one bug and a bug in pointer arithmetic
syscall_get_arguments() was reading orig_a0,regs[1..5] fields instead.
Likewise, syscall_set_arguments() was writing orig_a0,regs[1..5] fields
instead.
Link: http://lkml.kernel.org/r/20190329171230.GB32456@altlinux.org
Fixes: 4859bfca11c7d ("csky: System Call") Cc: Ingo Molnar
<mingo@redhat.com> Cc: Kees Cook <keescook@chromium.org> Cc: Andy
Lutomirski <luto@amacapital.net> Cc: Will Drewry <wad@chromium.org> Cc:
stable@vger.kernel.org # v4.20+ Tested-by: Guo Ren <ren_guo@c-sky.com>
Acked-by: Guo Ren <ren_guo@c-sky.com> Signed-off-by: Dmitry V. Levin
<ldv@altlinux.org> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org>
The file was modifiedarch/csky/include/asm/syscall.h (diff)
Commit bcc816dfe51ab86ca94663c7b225f2d6eb0fddb9 by axboe
blk-mq: do not reset plug->rq_count before the list is sorted
We would never be able to sort the list if we first reset plug->rq_count
which is used in conditional check later.
Fixes: ce5b009cff19 ("block: improve logic around when to sort a plug
list") Reviewed-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Dongli
Zhang <dongli.zhang@oracle.com> Signed-off-by: Jens Axboe
<axboe@kernel.dk>
The file was modifiedblock/blk-mq.c (diff)
Commit 1c41860864c8ae0387ef7d44f0000e99cbb2e06d by catalin.marinas
arm64: fix wrong check of on_sdei_stack in nmi context
When doing unwind_frame() in the context of pseudo nmi (need enable
CONFIG_ARM64_PSEUDO_NMI), reaching the bottom of the stack (fp == 0, pc
!= 0), function on_sdei_stack() will return true while the sdei acpi
table is not inited in fact. This will cause a "NULL pointer
dereference" oops when going on.
Reviewed-by: Julien Thierry <julien.thierry@arm.com> Signed-off-by: Wei
Li <liwei391@huawei.com> Signed-off-by: Catalin Marinas
<catalin.marinas@arm.com>
The file was modifiedarch/arm64/kernel/sdei.c (diff)
Commit e7ad88553aa1d48e950ca9a4934d246c1bee4be4 by alexander.deucher
drm/amdkfd: Add picasso pci id
Picasso is a new raven variant.
Reviewed-by: Kent Russell <kent.russell@amd.com> Signed-off-by: Alex
Deucher <alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/amdkfd/kfd_device.c (diff)
Commit d4162c61e253177936fcfe6c29f7b224d9a1efb8 by alexander.deucher
drm/amdgpu: Adjust IB test timeout for XGMI configuration
On XGMI configuration the ib test may take longer to finish
Signed-off-by: shaoyunl <shaoyun.liu@amd.com> Reviewed-by: Christian
König <christian.koenig@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/amdgpu/amdgpu_ib.c (diff)
Commit 1712fb1a2f6829150032ac76eb0e39b82a549cfb by alexander.deucher
drm/amdgpu: amdgpu_device_recover_vram always failed if only one node in
shadow_list
amdgpu_bo_restore_shadow would assign zero to r if succeeded. r would
remain zero if there is only one node in shadow_list. current code would
always return failure when r <= 0. restart the timeout for each wait was
a rather problematic bug as well. The value of tmo SHOULD be changed,
otherwise we wait tmo jiffies on each loop.
Signed-off-by: Wentao Lou <Wentao.Lou@amd.com> Reviewed-by: Christian
König <christian.koenig@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/amdgpu/amdgpu_device.c (diff)
Commit c1cefe115d1cdc460014483319d440b2f0d07c68 by alexander.deucher
drm/amd/display: fix cursor black issue
[Why] the member sdr_white_level of struct dc_cursor_attributes was not
initialized, then the random value result that
dcn10_set_cursor_sdr_white_level() set error hw_scale value
0x20D9(normal value is 0x3c00), this cause the black cursor issue.
[how] just initilize the obj of struct dc_cursor_attributes to zero to
avoid the random value.
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Tianci Yin <tianci.yin@amd.com> Signed-off-by: Alex
Deucher <alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c (diff)
Commit 50398fde997f6be8faebdb5f38e9c9c467370f51 by dsterba
btrfs: prop: fix zstd compression parameter validation
We let pass zstd compression parameter even if it is not fully valid.
For example:
  $ btrfs prop set /btrfs compression zst
$ btrfs prop get /btrfs compression
    compression=zst
zlib and lzo are fine.
Fix it by checking the correct prefix length.
Fixes: 5c1aab1dd544 ("btrfs: Add zstd support") CC:
stable@vger.kernel.org # 4.14+ Reviewed-by: Nikolay Borisov
<nborisov@suse.com> Signed-off-by: Anand Jain <anand.jain@oracle.com>
Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba
<dsterba@suse.com>
The file was modifiedfs/btrfs/props.c (diff)
Commit 272e5326c7837697882ce3162029ba893059b616 by dsterba
btrfs: prop: fix vanished compression property after failed set
The compression property resets to NULL, instead of the old value if we
fail to set the new compression parameter.
  $ btrfs prop get /btrfs compression
   compression=lzo
$ btrfs prop set /btrfs compression zli
   ERROR: failed to set compression for /btrfs: Invalid argument
$ btrfs prop get /btrfs compression
This is because the compression property ->validate() is successful for
'zli' as the strncmp() used the length passed from the userspace.
Fix it by using the expected string length in strncmp().
Fixes: 63541927c8d1 ("Btrfs: add support for inode properties") Fixes:
5c1aab1dd544 ("btrfs: Add zstd support") CC: stable@vger.kernel.org #
4.14+ Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by:
Anand Jain <anand.jain@oracle.com> Reviewed-by: David Sterba
<dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
The file was modifiedfs/btrfs/props.c (diff)
Commit 3a39a12ad364a9acd1038ba8da67cd8430f30de4 by davem
net: hns: fix KASAN: use-after-free in hns_nic_net_xmit_hw()
This patch is trying to fix the issue due to:
[27237.844750] BUG: KASAN: use-after-free in
hns_nic_net_xmit_hw+0x708/0xa18[hns_enet_drv]
After hnae_queue_xmit() in hns_nic_net_xmit_hw(), can be interrupted by
interruptions, and than call hns_nic_tx_poll_one() to handle the new
packets, and free the skb. So, when turn back to hns_nic_net_xmit_hw(),
calling skb->len will cause use-after-free.
This patch update tx ring statistics in hns_nic_tx_poll_one() to fix the
bug.
Signed-off-by: Liubin Shu <shuliubin@huawei.com> Signed-off-by: Zhen Lei
<thunder.leizhen@huawei.com> Signed-off-by: Yonglong Liu
<liuyonglong@huawei.com> Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_enet.c (diff)
Commit acb1ce15a61154aa501891d67ebf79bc9ea26818 by davem
net: hns: Use NAPI_POLL_WEIGHT for hns driver
When the HNS driver loaded, always have an error print:
"netif_napi_add() called with weight 256"
This is because the kernel checks the NAPI polling weights requested by
drivers and it prints an error message if a driver requests a weight
bigger than 64.
So use NAPI_POLL_WEIGHT to fix it.
Signed-off-by: Yonglong Liu <liuyonglong@huawei.com> Signed-off-by: Peng
Li <lipeng321@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_enet.c (diff)
Commit c0b0984426814f3a9251873b689e67d34d8ccd84 by davem
net: hns: Fix probabilistic memory overwrite when HNS driver initialized
When reboot the system again and again, may cause a memory overwrite.
[   15.638922] systemd[1]: Reached target Swap.
[   15.667561] tun: Universal TUN/TAP device driver, 1.6
[   15.676756] Bridge firewalling registered
[   17.344135] Unable to handle kernel paging request at virtual address
0000000200000040
[   17.352179] Mem abort info:
[   17.355007]   ESR = 0x96000004
[   17.358105]   Exception class = DABT (current EL), IL = 32 bits
[   17.364112]   SET = 0, FnV = 0
[   17.367209]   EA = 0, S1PTW = 0
[   17.370393] Data abort info:
[   17.373315]   ISV = 0, ISS = 0x00000004
[   17.377206]   CM = 0, WnR = 0
[   17.380214] user pgtable: 4k pages, 48-bit VAs, pgdp =
(____ptrval____)
[   17.386926] [0000000200000040] pgd=0000000000000000
[   17.391878] Internal error: Oops: 96000004 [#1] SMP
[   17.396824] CPU: 23 PID: 95 Comm: kworker/u130:0 Tainted: G         
E     4.19.25-1.2.78.aarch64 #1
[   17.414175] Hardware name: Huawei TaiShan 2280 /BC11SPCD, BIOS 1.54
08/16/2018
[   17.425615] Workqueue: events_unbound async_run_entry_fn
[   17.435151] pstate: 00000005 (nzcv daif -PAN -UAO)
[   17.444139] pc : __mutex_lock.isra.1+0x74/0x540
[   17.453002] lr : __mutex_lock.isra.1+0x3c/0x540
[   17.461701] sp : ffff000100d9bb60
[   17.469146] x29: ffff000100d9bb60 x28: 0000000000000000
[   17.478547] x27: 0000000000000000 x26: ffff802fb8945000
[   17.488063] x25: 0000000000000000 x24: ffff802fa32081a8
[   17.497381] x23: 0000000000000002 x22: ffff801fa2b15220
[   17.506701] x21: ffff000009809000 x20: ffff802fa23a0888
[   17.515980] x19: ffff801fa2b15220 x18: 0000000000000000
[   17.525272] x17: 0000000200000000 x16: 0000000200000000
[   17.534511] x15: 0000000000000000 x14: 0000000000000000
[   17.543652] x13: ffff000008d95db8 x12: 000000000000000d
[   17.552780] x11: ffff000008d95d90 x10: 0000000000000b00
[   17.561819] x9 : ffff000100d9bb90 x8 : ffff802fb89d6560
[   17.570829] x7 : 0000000000000004 x6 : 00000004a1801d05
[   17.579839] x5 : 0000000000000000 x4 : 0000000000000000
[   17.588852] x3 : ffff802fb89d5a00 x2 : 0000000000000000
[   17.597734] x1 : 0000000200000000 x0 : 0000000200000000
[   17.606631] Process kworker/u130:0 (pid: 95, stack limit =
0x(____ptrval____))
[   17.617438] Call trace:
[   17.623349]  __mutex_lock.isra.1+0x74/0x540
[   17.630927]  __mutex_lock_slowpath+0x24/0x30
[   17.638602]  mutex_lock+0x50/0x60
[   17.645295]  drain_workqueue+0x34/0x198
[   17.652623]  __sas_drain_work+0x7c/0x168
[   17.659903]  sas_drain_work+0x60/0x68
[   17.666947]  hisi_sas_scan_finished+0x30/0x40 [hisi_sas_main]
[   17.676129]  do_scsi_scan_host+0x70/0xb0
[   17.683534]  do_scan_async+0x20/0x228
[   17.690586]  async_run_entry_fn+0x4c/0x1d0
[   17.697997]  process_one_work+0x1b4/0x3f8
[   17.705296]  worker_thread+0x54/0x470
Every time the call trace is not the same, but the overwrite address is
always the same: Unable to handle kernel paging request at virtual
address 0000000200000040
The root cause is, when write the reg XGMAC_MAC_TX_LF_RF_CONTROL_REG,
didn't use the io_base offset.
Signed-off-by: Yonglong Liu <liuyonglong@huawei.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_xgmac.c (diff)
Commit f058e46855dcbc28edb2ed4736f38a71fd19cadb by davem
net: hns: fix ICMP6 neighbor solicitation messages discard problem
ICMP6 neighbor solicitation messages will be discard by the Hip06 chips,
because of not setting forwarding pool. Enable promisc mode has the same
problem.
This patch fix the wrong forwarding table configs for the multicast
vague matching when enable promisc mode, and add forwarding pool for the
forwarding table.
Signed-off-by: Yonglong Liu <liuyonglong@huawei.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c (diff)
Commit 8601a99d7c0256b7a7fdd1ab14cf6c1f1dfcadc6 by davem
net: hns: Fix WARNING when remove HNS driver with SMMU enabled
When enable SMMU, remove HNS driver will cause a WARNING:
[  141.924177] WARNING: CPU: 36 PID: 2708 at
drivers/iommu/dma-iommu.c:443 __iommu_dma_unmap+0xc0/0xc8
[  141.954673] Modules linked in: hns_enet_drv(-)
[  141.963615] CPU: 36 PID: 2708 Comm: rmmod Tainted: G        W       
5.0.0-rc1-28723-gb729c57de95c-dirty #32
[  141.983593] Hardware name: Huawei D05/D05, BIOS Hisilicon D05 UEFI
Nemo 1.8 RC0 08/31/2017
[  142.000244] pstate: 60000005 (nZCv daif -PAN -UAO)
[  142.009886] pc : __iommu_dma_unmap+0xc0/0xc8
[  142.018476] lr : __iommu_dma_unmap+0xc0/0xc8
[  142.027066] sp : ffff000013533b90
[  142.033728] x29: ffff000013533b90 x28: ffff8013e6983600
[  142.044420] x27: 0000000000000000 x26: 0000000000000000
[  142.055113] x25: 0000000056000000 x24: 0000000000000015
[  142.065806] x23: 0000000000000028 x22: ffff8013e66eee68
[  142.076499] x21: ffff8013db919800 x20: 0000ffffefbff000
[  142.087192] x19: 0000000000001000 x18: 0000000000000007
[  142.097885] x17: 000000000000000e x16: 0000000000000001
[  142.108578] x15: 0000000000000019 x14: 363139343a70616d
[  142.119270] x13: 6e75656761705f67 x12: 0000000000000000
[  142.129963] x11: 00000000ffffffff x10: 0000000000000006
[  142.140656] x9 : 1346c1aa88093500 x8 : ffff0000114de4e0
[  142.151349] x7 : 6662666578303d72 x6 : ffff0000105ffec8
[  142.162042] x5 : 0000000000000000 x4 : 0000000000000000
[  142.172734] x3 : 00000000ffffffff x2 : ffff0000114de500
[  142.183427] x1 : 0000000000000000 x0 : 0000000000000035
[  142.194120] Call trace:
[  142.199030]  __iommu_dma_unmap+0xc0/0xc8
[  142.206920]  iommu_dma_unmap_page+0x20/0x28
[  142.215335]  __iommu_unmap_page+0x40/0x60
[  142.223399]  hnae_unmap_buffer+0x110/0x134
[  142.231639]  hnae_free_desc+0x6c/0x10c
[  142.239177]  hnae_fini_ring+0x14/0x34
[  142.246540]  hnae_fini_queue+0x2c/0x40
[  142.254080]  hnae_put_handle+0x38/0xcc
[  142.261619]  hns_nic_dev_remove+0x54/0xfc [hns_enet_drv]
[  142.272312]  platform_drv_remove+0x24/0x64
[  142.280552]  device_release_driver_internal+0x17c/0x20c
[  142.291070]  driver_detach+0x4c/0x90
[  142.298259]  bus_remove_driver+0x5c/0xd8
[  142.306148]  driver_unregister+0x2c/0x54
[  142.314037]  platform_driver_unregister+0x10/0x18
[  142.323505]  hns_nic_dev_driver_exit+0x14/0xf0c [hns_enet_drv]
[  142.335248]  __arm64_sys_delete_module+0x214/0x25c
[  142.344891]  el0_svc_common+0xb0/0x10c
[  142.352430]  el0_svc_handler+0x24/0x80
[  142.359968]  el0_svc+0x8/0x7c0
[  142.366104] ---[ end trace 60ad1cd58e63c407 ]---
The tx ring buffer map when xmit and unmap when xmit done. So in
hnae_init_ring() did not map tx ring buffer, but in hnae_fini_ring()
have a unmap operation for tx ring buffer, which is already unmapped
when xmit done, than cause this WARNING.
The hnae_alloc_buffers() is called in hnae_init_ring(), so the
hnae_free_buffers() should be in hnae_fini_ring(), not in
hnae_free_desc().
In hnae_fini_ring(), adds a check is_rx_ring() as in hnae_init_ring().
When the ring buffer is tx ring, adds a piece of code to ensure that the
tx ring is unmap.
Signed-off-by: Yonglong Liu <liuyonglong@huawei.com> Signed-off-by: Peng
Li <lipeng321@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/hisilicon/hns/hnae.c (diff)
Commit 15400663aba5de11e99a9a2a35bfb2bae65e28e0 by davem
net: hns: Fix sparse: some warnings in HNS drivers
There are some sparse warnings in the HNS drivers:
warning: incorrect type in assignment (different address spaces)
   expected void [noderef] <asn:2> *io_base
   got void *vaddr warning: cast removes address space '<asn:2>' of
expression
[...]
Add __iomem and change all the u8 __iomem to void __iomem to fix these
kind of  warnings.
warning: incorrect type in argument 1 (different address spaces)
   expected void [noderef] <asn:2> *base
   got unsigned char [usertype] *base_addr warning: cast to restricted
__le16 warning: incorrect type in assignment (different base types)
   expected unsigned int [usertype] tbl_tcam_data_high
   got restricted __le32 [usertype] warning: cast to restricted __le32
[...]
These variables used u32/u16 as their type, and finally as a parameter
of writel(), writel() will do the cpu_to_le32 coversion so remove the
little endian covert code to fix these kind of warnings.
Signed-off-by: Yonglong Liu <liuyonglong@huawei.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_main.h (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.c (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_reg.h (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.h (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns_mdio.c (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_mac.c (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns/hnae.h (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_rcb.c (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_ppe.h (diff)
Commit 2ec1ed2aa68782b342458681aa4d16b65c9014d6 by davem
net: thunderx: fix NULL pointer dereference in nicvf_open/nicvf_stop
When a bpf program is uploaded, the driver computes the number of xdp tx
queues resulting in the allocation of additional qsets. Starting from
commit '2ecbe4f4a027 ("net: thunderx: replace global nicvf_rx_mode_wq
work queue for all VFs to private for each of them")' the driver runs
link state polling for each VF resulting in the following NULL pointer
dereference:
[   56.169256] Unable to handle kernel NULL pointer dereference at
virtual address 0000000000000020
[   56.178032] Mem abort info:
[   56.180834]   ESR = 0x96000005
[   56.183877]   Exception class = DABT (current EL), IL = 32 bits
[   56.189792]   SET = 0, FnV = 0
[   56.192834]   EA = 0, S1PTW = 0
[   56.195963] Data abort info:
[   56.198831]   ISV = 0, ISS = 0x00000005
[   56.202662]   CM = 0, WnR = 0
[   56.205619] user pgtable: 64k pages, 48-bit VAs, pgdp =
0000000021f0c7a0
[   56.212315] [0000000000000020] pgd=0000000000000000,
pud=0000000000000000
[   56.219094] Internal error: Oops: 96000005 [#1] SMP
[   56.260459] CPU: 39 PID: 2034 Comm: ip Not tainted 5.1.0-rc3+ #3
[   56.266452] Hardware name: GIGABYTE R120-T33/MT30-GS1, BIOS T49
02/02/2018
[   56.273315] pstate: 80000005 (Nzcv daif -PAN -UAO)
[   56.278098] pc : __ll_sc___cmpxchg_case_acq_64+0x4/0x20
[   56.283312] lr : mutex_lock+0x2c/0x50
[   56.286962] sp : ffff0000219af1b0
[   56.290264] x29: ffff0000219af1b0 x28: ffff800f64de49a0
[   56.295565] x27: 0000000000000000 x26: 0000000000000015
[   56.300865] x25: 0000000000000000 x24: 0000000000000000
[   56.306165] x23: 0000000000000000 x22: ffff000011117000
[   56.311465] x21: ffff800f64dfc080 x20: 0000000000000020
[   56.316766] x19: 0000000000000020 x18: 0000000000000001
[   56.322066] x17: 0000000000000000 x16: ffff800f2e077080
[   56.327367] x15: 0000000000000004 x14: 0000000000000000
[   56.332667] x13: ffff000010964438 x12: 0000000000000002
[   56.337967] x11: 0000000000000000 x10: 0000000000000c70
[   56.343268] x9 : ffff0000219af120 x8 : ffff800f2e077d50
[   56.348568] x7 : 0000000000000027 x6 : 000000062a9d6a84
[   56.353869] x5 : 0000000000000000 x4 : ffff800f2e077480
[   56.359169] x3 : 0000000000000008 x2 : ffff800f2e077080
[   56.364469] x1 : 0000000000000000 x0 : 0000000000000020
[   56.369770] Process ip (pid: 2034, stack limit = 0x00000000c862da3a)
[   56.376110] Call trace:
[   56.378546]  __ll_sc___cmpxchg_case_acq_64+0x4/0x20
[   56.383414]  drain_workqueue+0x34/0x198
[   56.387247]  nicvf_open+0x48/0x9e8 [nicvf]
[   56.391334]  nicvf_open+0x898/0x9e8 [nicvf]
[   56.395507]  nicvf_xdp+0x1bc/0x238 [nicvf]
[   56.399595]  dev_xdp_install+0x68/0x90
[   56.403333]  dev_change_xdp_fd+0xc8/0x240
[   56.407333]  do_setlink+0x8e0/0xbe8
[   56.410810]  __rtnl_newlink+0x5b8/0x6d8
[   56.414634]  rtnl_newlink+0x54/0x80
[   56.418112]  rtnetlink_rcv_msg+0x22c/0x2f8
[   56.422199]  netlink_rcv_skb+0x60/0x120
[   56.426023]  rtnetlink_rcv+0x28/0x38
[   56.429587]  netlink_unicast+0x1c8/0x258
[   56.433498]  netlink_sendmsg+0x1b4/0x350
[   56.437410]  sock_sendmsg+0x4c/0x68
[   56.440887]  ___sys_sendmsg+0x240/0x280
[   56.444711]  __sys_sendmsg+0x68/0xb0
[   56.448275]  __arm64_sys_sendmsg+0x2c/0x38
[   56.452361]  el0_svc_handler+0x9c/0x128
[   56.456186]  el0_svc+0x8/0xc
[   56.459056] Code: 35ffff91 2a1003e0 d65f03c0 f9800011 (c85ffc10)
[   56.465166] ---[ end trace 4a57fdc27b0a572c ]---
[   56.469772] Kernel panic - not syncing: Fatal exception
Fix it by checking nicvf_rx_mode_wq pointer in nicvf_open and nicvf_stop
Fixes: 2ecbe4f4a027 ("net: thunderx: replace global nicvf_rx_mode_wq
work queue for all VFs to private for each of them") Fixes: 2c632ad8bc74
("net: thunderx: move link state polling function to VF") Reported-by:
Matteo Croce <mcroce@redhat.com> Signed-off-by: Lorenzo Bianconi
<lorenzo.bianconi@redhat.com> Tested-by: Matteo Croce
<mcroce@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_main.c (diff)
Commit fae2708174ae95d98d19f194e03d6e8f688ae195 by davem
net/sched: act_sample: fix divide by zero in the traffic path
the control path of 'sample' action does not validate the value of
'rate' provided by the user, but then it uses it as divisor in the
traffic path. Validate it in tcf_sample_init(), and return -EINVAL with
a proper extack message in case that value is zero, to fix a splat with
the script below:
# tc f a dev test0 egress matchall action sample rate 0 group 1 index 2
# tc -s a s action sample
total acts 1
         action order 0: sample rate 1/0 group 1 pipe
         index 2 ref 1 bind 1 installed 19 sec used 19 sec
        Action statistics:
        Sent 0 bytes 0 pkt (dropped 0, overlimits 0 requeues 0)
        backlog 0b 0p requeues 0
# ping 192.0.2.1 -I test0 -c1 -q
divide error: 0000 [#1] SMP PTI
CPU: 1 PID: 6192 Comm: ping Not tainted 5.1.0-rc2.diag2+ #591
Hardware name: Red Hat KVM, BIOS 0.5.1 01/01/2011
RIP: 0010:tcf_sample_act+0x9e/0x1e0 [act_sample]
Code: 6a f1 85 c0 74 0d 80 3d 83 1a 00 00 00 0f 84 9c 00 00 00 4d 85 e4
0f 84 85 00 00 00 e8 9b d7 9c f1 44 8b 8b e0 00 00 00 31 d2 <41> f7 f1
85 d2 75 70 f6 85 83 00 00 00 10 48 8b 45 10 8b 88 08 01
RSP: 0018:ffffae320190ba30 EFLAGS: 00010246
RAX: 00000000b0677d21 RBX: ffff8af1ed9ec000 RCX: 0000000059a9fe49
RDX: 0000000000000000 RSI: 000000000c7e33b7 RDI: ffff8af23daa0af0
RBP: ffff8af1ee11b200 R08: 0000000074fcaf7e R09: 0000000000000000
R10: 0000000000000050 R11: ffffffffb3088680 R12: ffff8af232307f80
R13: 0000000000000003 R14: ffff8af1ed9ec000 R15: 0000000000000000
FS:  00007fe9c6d2f740(0000) GS:ffff8af23da80000(0000)
knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fff6772f000 CR3: 00000000746a2004 CR4: 00000000001606e0
Call Trace:
tcf_action_exec+0x7c/0x1c0
tcf_classify+0x57/0x160
__dev_queue_xmit+0x3dc/0xd10
ip_finish_output2+0x257/0x6d0
ip_output+0x75/0x280
ip_send_skb+0x15/0x40
raw_sendmsg+0xae3/0x1410
sock_sendmsg+0x36/0x40
__sys_sendto+0x10e/0x140
__x64_sys_sendto+0x24/0x30
do_syscall_64+0x60/0x210
entry_SYSCALL_64_after_hwframe+0x49/0xbe
[...]
Kernel panic - not syncing: Fatal exception in interrupt
Add a TDC selftest to document that 'rate' is now being validated.
Reported-by: Matteo Croce <mcroce@redhat.com> Fixes: 5c5670fae430
("net/sched: Introduce sample tc action") Signed-off-by: Davide Caratti
<dcaratti@redhat.com> Acked-by: Yotam Gigi <yotam.gi@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/sched/act_sample.c (diff)
The file was modifiedtools/testing/selftests/tc-testing/tc-tests/actions/sample.json (diff)
Commit aecfde23108b8e637d9f5c5e523b24fb97035dc3 by davem
tcp: Ensure DCTCP reacts to losses
RFC8257 §3.5 explicitly states that "A DCTCP sender MUST react to loss
episodes in the same way as conventional TCP".
Currently, Linux DCTCP performs no cwnd reduction when losses are
encountered. Optionally, the dctcp_clamp_alpha_on_loss resets alpha to
its maximal value if a RTO happens. This behavior is sub-optimal for at
least two reasons: i) it ignores losses triggering fast retransmissions;
and ii) it causes unnecessary large cwnd reduction in the future if the
loss was isolated as it resets the historical term of DCTCP's alpha EWMA
to its maximal value (i.e., denoting a total congestion). The second
reason has an especially noticeable effect when using DCTCP in high BDP
environments, where alpha normally stays at low values.
This patch replace the clamping of alpha by setting ssthresh to half of
cwnd for both fast retransmissions and RTOs, at most once per RTT.
Consequently, the dctcp_clamp_alpha_on_loss module parameter has been
removed.
The table below shows experimental results where we measured the drop
probability of a PIE AQM (not applying ECN marks) at a bottleneck in the
presence of a single TCP flow with either the alpha-clamping option
enabled or the cwnd halving proposed by this patch. Results using reno
or cubic are given for comparison.
                          |  Link   |   RTT    |    Drop
                TCP CC   |  speed  | base+AQM | probability
       ==================|=========|==========|============
                   CUBIC |  40Mbps |  7+20ms  |    0.21%
                    RENO |         |          |    0.19%
       DCTCP-CLAMP-ALPHA |         |          |   25.80%
        DCTCP-HALVE-CWND |         |          |    0.22%
       ------------------|---------|----------|------------
                   CUBIC | 100Mbps |  7+20ms  |    0.03%
                    RENO |         |          |    0.02%
       DCTCP-CLAMP-ALPHA |         |          |   23.30%
        DCTCP-HALVE-CWND |         |          |    0.04%
       ------------------|---------|----------|------------
                   CUBIC | 800Mbps |   1+1ms  |    0.04%
                    RENO |         |          |    0.05%
       DCTCP-CLAMP-ALPHA |         |          |   18.70%
        DCTCP-HALVE-CWND |         |          |    0.06%
We see that, without halving its cwnd for all source of losses, DCTCP
drives the AQM to large drop probabilities in order to keep the queue
length under control (i.e., it repeatedly faces RTOs). Instead, if DCTCP
reacts to all source of losses, it can then be controlled by the AQM
using similar drop levels than cubic or reno.
Signed-off-by: Koen De Schepper <koen.de_schepper@nokia-bell-labs.com>
Signed-off-by: Olivier Tilmans <olivier.tilmans@nokia-bell-labs.com> Cc:
Bob Briscoe <research@bobbriscoe.net> Cc: Lawrence Brakmo
<brakmo@fb.com> Cc: Florian Westphal <fw@strlen.de> Cc: Daniel Borkmann
<borkmann@iogearbox.net> Cc: Yuchung Cheng <ycheng@google.com> Cc: Neal
Cardwell <ncardwell@google.com> Cc: Eric Dumazet <edumazet@google.com>
Cc: Andrew Shewmaker <agshew@gmail.com> Cc: Glenn Judd
<glenn.judd@morganstanley.com> Acked-by: Florian Westphal <fw@strlen.de>
Acked-by: Neal Cardwell <ncardwell@google.com> Acked-by: Daniel Borkmann
<daniel@iogearbox.net> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv4/tcp_dctcp.c (diff)
Commit b2100cc56fca8c51d28aa42a9f1fbcb2cf351996 by davem
sch_cake: Use tc_skb_protocol() helper for getting packet protocol
We shouldn't be using skb->protocol directly as that will miss cases
with hardware-accelerated VLAN tags. Use the helper instead to get the
right protocol number.
Reported-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/sched/sch_cake.c (diff)
Commit c87b4ecdbe8db27867a7b7f840291cd843406bd7 by davem
sch_cake: Make sure we can write the IP header before changing DSCP bits
There is not actually any guarantee that the IP headers are valid before
we access the DSCP bits of the packets. Fix this using the same approach
taken in sch_dsmark.
Reported-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/sched/sch_cake.c (diff)
Commit 6e3572e83dc3563e3b7e742bcb225b42a60cdaeb by paul.burton
MIPS: generic: Add switchdev, pinctrl and fit to ocelot_defconfig
Some of the configuration were not selected by default anymore,
therefore enable them again. Also remove some configs which are used for
MSCC Ocelot.
Signed-off-by: Horatiu Vultur <horatiu.vultur@microchip.com>
Signed-off-by: Paul Burton <paul.burton@mips.com> Cc:
<alexandre.belloni@bootlin.com> Cc: <UNGLinuxDriver@microchip.com> Cc:
<ralf@linux-mips.org> Cc: <jhogan@kernel.org> Cc:
<linux-mips@vger.kernel.org> Cc: <linux-kernel@vger.kernel.org>
The file was modifiedarch/mips/configs/generic/board-ocelot.config (diff)
Commit ada770b1e74a77fff2d5f539bf6c42c25f4784db by jcmvbkbc
xtensa: fix return_address
return_address returns the address that is one level higher in the call
stack than requested in its argument, because level 0 corresponds to its
caller's return address. Use requested level as the number of stack
frames to skip.
This fixes the address reported by might_sleep and friends.
Cc: stable@vger.kernel.org Signed-off-by: Max Filippov
<jcmvbkbc@gmail.com>
The file was modifiedarch/xtensa/kernel/stacktrace.c (diff)
Commit bcb44433bba5eaff293888ef22ffa07f1f0347d6 by snitzer
dm: disable DISCARD if the underlying storage no longer supports it
Storage devices which report supporting discard commands like
WRITE_SAME_16 with unmap, but reject discard commands sent to the
storage device.  This is a clear storage firmware bug but it doesn't
change the fact that should a program cause discards to be sent to a
multipath device layered on this buggy storage, all paths can end up
failed at the same time from the discards, causing possible I/O loss.
The first discard to a path will fail with Illegal Request, Invalid
field in cdb, e.g.:
kernel: sd 8:0:8:19: [sdfn] tag#0 FAILED Result: hostbyte=DID_OK
driverbyte=DRIVER_SENSE
kernel: sd 8:0:8:19: [sdfn] tag#0 Sense Key : Illegal Request [current]
kernel: sd 8:0:8:19: [sdfn] tag#0 Add. Sense: Invalid field in cdb
kernel: sd 8:0:8:19: [sdfn] tag#0 CDB: Write same(16) 93 08 00 00 00 00
00 a0 08 00 00 00 80 00 00 00
kernel: blk_update_request: critical target error, dev sdfn, sector
10487808
The SCSI layer converts this to the BLK_STS_TARGET error number, the sd
device disables its support for discard on this path, and because of the
BLK_STS_TARGET error multipath fails the discard without failing any
path or retrying down a different path.  But subsequent discards can
cause path failures.  Any discards sent to the path which already failed
a discard ends up failing with EIO from blk_cloned_rq_check_limits with
an "over max size limit" error since the discard limit was set to 0 by
the sd driver for the path.  As the error is EIO, this now fails the
path and multipath tries to send the discard down the next path.  This
cycle continues as discards are sent until all paths fail.
Fix this by training DM core to disable DISCARD if the underlying
storage already did so.
Also, fix branching in dm_done() and clone_endio() to reflect the
mutually exclussive nature of the IO operations in question.
Cc: stable@vger.kernel.org Reported-by: David Jeffery
<djeffery@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
The file was modifieddrivers/md/dm-core.h (diff)
The file was modifieddrivers/md/dm.c (diff)
The file was modifieddrivers/md/dm-rq.c (diff)
Commit d9b8a67b3b95a5c5aae6422b8113adc1c2485f2b by richard
mtd: cfi: fix deadloop in cfi_cmdset_0002.c do_write_buffer
In function do_write_buffer(), in the for loop, there is a case
chip_ready() returns 1 while chip_good() returns 0, so it never break
the loop. To fix this, chip_good() is enough and it should timeout if it
stay bad for a while.
Fixes: dfeae1073583("mtd: cfi_cmdset_0002: Change write buffer to check
correct value") Signed-off-by: Yi Huaijie <yihuaijie@huawei.com>
Signed-off-by: Liu Jian <liujian56@huawei.com> Reviewed-by: Tokunori
Ikegami <ikegami_to@yahoo.co.jp> Signed-off-by: Richard Weinberger
<richard@nod.at>
The file was modifieddrivers/mtd/chips/cfi_cmdset_0002.c (diff)
Commit 6af1c849dfb1f1d326fbdd157c9bc882b921f450 by viro
aio: use kmem_cache_free() instead of kfree()
memory allocated by kmem_cache_alloc() should be freed using
kmem_cache_free(), not kfree().
Fixes: fa0ca2aee3be ("deal with get_reqs_available() in aio_get_req()
itself") Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
The file was modifiedfs/aio.c (diff)
Commit 0a89eb92d8c335da92bd5f54d8463b87dd440d45 by davem
vlan: conditional inclusion of FCoE hooks to match netdevice.h and bnx2x
Way back in 3c9c36bcedd426f2be2826da43e5163de61735f7 the
ndo_fcoe_get_wwn pointer was switched from depending on CONFIG_FCOE to
CONFIG_LIBFCOE in order to allow building FCoE support into the bnx2x
driver and used by bnx2fc without including the generic software fcoe
module.
But, FCoE is generally used over an 802.1q VLAN, and the implementation
of ndo_fcoe_get_wwn in the 8021q module was not similarly changed.  The
result is that if CONFIG_FCOE is disabled, then bnz2fc cannot make a
call to ndo_fcoe_get_wwn through the 8021q interface to the underlying
bnx2x interface.  The bnx2fc driver then falls back to a potentially
different mapping of Ethernet MAC to Fibre Channel WWN, creating an
incompatibility with the fabric and target configurations when compared
to the WWNs used by pre-boot firmware and differently-configured
kernels.
So make the conditional inclusion of FCoE code in 8021q match the
conditional inclusion in netdevice.h
Signed-off-by: Chris Leech <cleech@redhat.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/8021q/vlan_dev.c (diff)
Commit cc5a726c79158bd307150e8d4176ec79b52001ea by davem
libcxgb: fix incorrect ppmax calculation
BITS_TO_LONGS() uses DIV_ROUND_UP() because of this ppmax value can be
greater than available per cpu page pods.
This patch removes BITS_TO_LONGS() to fix this issue.
Signed-off-by: Varun Prakash <varun@chelsio.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/chelsio/libcxgb/libcxgb_ppm.c (diff)
Commit 1515a63fc413f160d20574ab0894e7f1020c7be2 by davem
net: bridge: always clear mcast matching struct on reports and leaves
We need to be careful and always zero the whole br_ip struct when it is
used for matching since the rhashtable change. This patch fixes all the
places which didn't properly clear it which in turn might've caused
mismatches.
Thanks for the great bug report with reproducing steps and bisection.
Steps to reproduce (from the bug report): ip link add br0 type bridge
mcast_querier 1 ip link set br0 up
ip link add v2 type veth peer name v3 ip link set v2 master br0 ip link
set v2 up ip link set v3 up ip addr add 3.0.0.2/24 dev v3
ip netns add test ip link add v1 type veth peer name v1 netns test ip
link set v1 master br0 ip link set v1 up ip -n test link set v1 up ip -n
test addr add 3.0.0.1/24 dev v1
# Multicast receiver ip netns exec test socat
UDP4-RECVFROM:5588,ip-add-membership=224.224.224.224:3.0.0.1,fork -
# Multicast sender echo hello | nc -u -s 3.0.0.2 224.224.224.224 5588
Reported-by: liam.mcbirnie@boeing.com Fixes: 19e3a9c90c53 ("net: bridge:
convert multicast to generic rhashtable") Signed-off-by: Nikolay
Aleksandrov <nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/bridge/br_multicast.c (diff)
Commit 86baf800de84eb89615c138d368b14bff5ee7d8a by cw00.choi
extcon: ptn5150: fix COMPILE_TEST dependencies
The PTN5150 dependencies look like they were meant to do the right
thing, but they actually should not allow building without I2C for
compile testing, as that results in a Kconfig warning and subsequent
build failure:
WARNING: unmet direct dependencies detected for REGMAP_I2C
Depends on [m]: I2C [=m]
Selected by [y]:
- EXTCON_PTN5150 [=y] && EXTCON [=y] && (I2C [=m] && GPIOLIB [=y] ||
COMPILE_TEST [=y])
Selected by [m]:
- EEPROM_AT24 [=m] && I2C [=m] && SYSFS [=y]
- KEYBOARD_CAP11XX [=m] && !UML && INPUT [=y] && INPUT_KEYBOARD [=y] &&
OF [=y] && I2C [=m]
- INPUT_DRV260X_HAPTICS [=m] && !UML && INPUT_MISC [=y] && INPUT [=y]
&& I2C [=m] && (GPIOLIB [=y] || COMPILE_TEST [=y])
- ... [many others]
Add parentheses around the expression so we can compile-test without
GPIOLIB but not without I2C.
Fixes: 4ed754de2d66 ("extcon: Add support for ptn5150 extcon driver")
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Chanwoo Choi
<cw00.choi@samsung.com>
The file was modifieddrivers/extcon/Kconfig (diff)
Commit bb9bd814ebf04f579be466ba61fc922625508807 by davem
ipv6: sit: reset ip header pointer in ipip6_rcv
ipip6 tunnels run iptunnel_pull_header on received skbs. This can
determine the following use-after-free accessing iph pointer since the
packet will be 'uncloned' running pskb_expand_head if it is a cloned gso
skb (e.g if the packet has been sent though a veth device)
[  706.369655] BUG: KASAN: use-after-free in ipip6_rcv+0x1678/0x16e0
[sit]
[  706.449056] Read of size 1 at addr ffffe01b6bd855f5 by task
ksoftirqd/1/=
[  706.669494] Hardware name: HPE ProLiant m400 Server/ProLiant m400
Server, BIOS U02 08/19/2016
[  706.771839] Call trace:
[  706.801159]  dump_backtrace+0x0/0x2f8
[  706.845079]  show_stack+0x24/0x30
[  706.884833]  dump_stack+0xe0/0x11c
[  706.925629]  print_address_description+0x68/0x260
[  706.982070]  kasan_report+0x178/0x340
[  707.025995]  __asan_report_load1_noabort+0x30/0x40
[  707.083481]  ipip6_rcv+0x1678/0x16e0 [sit]
[  707.132623]  tunnel64_rcv+0xd4/0x200 [tunnel4]
[  707.185940]  ip_local_deliver_finish+0x3b8/0x988
[  707.241338]  ip_local_deliver+0x144/0x470
[  707.289436]  ip_rcv_finish+0x43c/0x14b0
[  707.335447]  ip_rcv+0x628/0x1138
[  707.374151]  __netif_receive_skb_core+0x1670/0x2600
[  707.432680]  __netif_receive_skb+0x28/0x190
[  707.482859]  process_backlog+0x1d0/0x610
[  707.529913]  net_rx_action+0x37c/0xf68
[  707.574882]  __do_softirq+0x288/0x1018
[  707.619852]  run_ksoftirqd+0x70/0xa8
[  707.662734]  smpboot_thread_fn+0x3a4/0x9e8
[  707.711875]  kthread+0x2c8/0x350
[  707.750583]  ret_from_fork+0x10/0x18
[  707.811302] Allocated by task 16982:
[  707.854182]  kasan_kmalloc.part.1+0x40/0x108
[  707.905405]  kasan_kmalloc+0xb4/0xc8
[  707.948291]  kasan_slab_alloc+0x14/0x20
[  707.994309]  __kmalloc_node_track_caller+0x158/0x5e0
[  708.053902]  __kmalloc_reserve.isra.8+0x54/0xe0
[  708.108280]  __alloc_skb+0xd8/0x400
[  708.150139]  sk_stream_alloc_skb+0xa4/0x638
[  708.200346]  tcp_sendmsg_locked+0x818/0x2b90
[  708.251581]  tcp_sendmsg+0x40/0x60
[  708.292376]  inet_sendmsg+0xf0/0x520
[  708.335259]  sock_sendmsg+0xac/0xf8
[  708.377096]  sock_write_iter+0x1c0/0x2c0
[  708.424154]  new_sync_write+0x358/0x4a8
[  708.470162]  __vfs_write+0xc4/0xf8
[  708.510950]  vfs_write+0x12c/0x3d0
[  708.551739]  ksys_write+0xcc/0x178
[  708.592533]  __arm64_sys_write+0x70/0xa0
[  708.639593]  el0_svc_handler+0x13c/0x298
[  708.686646]  el0_svc+0x8/0xc
[  708.739019] Freed by task 17:
[  708.774597]  __kasan_slab_free+0x114/0x228
[  708.823736]  kasan_slab_free+0x10/0x18
[  708.868703]  kfree+0x100/0x3d8
[  708.905320]  skb_free_head+0x7c/0x98
[  708.948204]  skb_release_data+0x320/0x490
[  708.996301]  pskb_expand_head+0x60c/0x970
[  709.044399]  __iptunnel_pull_header+0x3b8/0x5d0
[  709.098770]  ipip6_rcv+0x41c/0x16e0 [sit]
[  709.146873]  tunnel64_rcv+0xd4/0x200 [tunnel4]
[  709.200195]  ip_local_deliver_finish+0x3b8/0x988
[  709.255596]  ip_local_deliver+0x144/0x470
[  709.303692]  ip_rcv_finish+0x43c/0x14b0
[  709.349705]  ip_rcv+0x628/0x1138
[  709.388413]  __netif_receive_skb_core+0x1670/0x2600
[  709.446943]  __netif_receive_skb+0x28/0x190
[  709.497120]  process_backlog+0x1d0/0x610
[  709.544169]  net_rx_action+0x37c/0xf68
[  709.589131]  __do_softirq+0x288/0x1018
[  709.651938] The buggy address belongs to the object at
ffffe01b6bd85580
               which belongs to the cache kmalloc-1024 of size 1024
[  709.804356] The buggy address is located 117 bytes inside of
               1024-byte region [ffffe01b6bd85580, ffffe01b6bd85980)
[  709.946340] The buggy address belongs to the page:
[  710.003824] page:ffff7ff806daf600 count:1 mapcount:0
mapping:ffffe01c4001f600 index:0x0
[  710.099914] flags: 0xfffff8000000100(slab)
[  710.149059] raw: 0fffff8000000100 dead000000000100 dead000000000200
ffffe01c4001f600
[  710.242011] raw: 0000000000000000 0000000000380038 00000001ffffffff
0000000000000000
[  710.334966] page dumped because: kasan: bad access detected
Fix it resetting iph pointer after iptunnel_pull_header
Fixes: a09a4c8dd1ec ("tunnels: Remove encapsulation offloads on decap")
Tested-by: Jianlin Shi <jishi@redhat.com> Signed-off-by: Lorenzo
Bianconi <lorenzo.bianconi@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv6/sit.c (diff)
Commit bbd669a868bba591ffd38b7bc75a7b361bb54b04 by davem
ibmvnic: Fix completion structure initialization
Fix device initialization completion handling for vNIC adapters.
Initialize the completion structure on probe and reinitialize when
needed. This also fixes a race condition during kdump where the driver
can attempt to access the completion struct before it is initialized:
Unable to handle kernel paging request for data at address 0x00000000
Faulting instruction address: 0xc0000000081acbe0 Oops: Kernel access of
bad area, sig: 11 [#1] LE SMP NR_CPUS=2048 NUMA pSeries Modules linked
in: ibmvnic(+) ibmveth sunrpc overlay squashfs loop CPU: 19 PID: 301
Comm: systemd-udevd Not tainted 4.18.0-64.el8.ppc64le #1 NIP:
c0000000081acbe0 LR: c0000000081ad964 CTR: c0000000081ad900 REGS:
c000000027f3f990 TRAP: 0300   Not tainted  (4.18.0-64.el8.ppc64le) MSR:
800000010280b033 <SF,VEC,VSX,EE,FP,ME,IR,DR,RI,LE,TM[E]> CR: 28228288
XER: 00000006 CFAR: c000000008008934 DAR: 0000000000000000 DSISR:
40000000 IRQMASK: 1 GPR00: c0000000081ad964 c000000027f3fc10
c0000000095b5800 c0000000221b4e58 GPR04: 0000000000000003
0000000000000001 000049a086918581 00000000000000d4 GPR08:
0000000000000007 0000000000000000 ffffffffffffffe8 d0000000014dde28
GPR12: c0000000081ad900 c000000009a00c00 0000000000000001
0000000000000100 GPR16: 0000000000000038 0000000000000007
c0000000095e2230 0000000000000006 GPR20: 0000000000400140
0000000000000001 c00000000910c880 0000000000000000 GPR24:
0000000000000000 0000000000000006 0000000000000000 0000000000000003
GPR28: 0000000000000001 0000000000000001 c0000000221b4e60
c0000000221b4e58 NIP [c0000000081acbe0] __wake_up_locked+0x50/0x100 LR
[c0000000081ad964] complete+0x64/0xa0 Call Trace:
[c000000027f3fc10] [c000000027f3fc60] 0xc000000027f3fc60 (unreliable)
[c000000027f3fc60] [c0000000081ad964] complete+0x64/0xa0
[c000000027f3fca0] [d0000000014dad58] ibmvnic_handle_crq+0xce0/0x1160
[ibmvnic]
[c000000027f3fd50] [d0000000014db270] ibmvnic_tasklet+0x98/0x130
[ibmvnic]
[c000000027f3fda0] [c00000000813f334]
tasklet_action_common.isra.3+0xc4/0x1a0
[c000000027f3fe00] [c000000008cd13f4] __do_softirq+0x164/0x400
[c000000027f3fef0] [c00000000813ed64] irq_exit+0x184/0x1c0
[c000000027f3ff20] [c0000000080188e8] __do_irq+0xb8/0x210
[c000000027f3ff90] [c00000000802d0a4] call_do_irq+0x14/0x24
[c000000026a5b010] [c000000008018adc] do_IRQ+0x9c/0x130
[c000000026a5b060] [c000000008008ce4]
hardware_interrupt_common+0x114/0x120
Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/ibm/ibmvnic.c (diff)
Commit ecae26fae15abb7d433557afbd15467ce1c444f5 by jcmvbkbc
xtensa: fix format string warning in init_pmd
Use %lu instead of %zu to fix the following warning introduced with
recent memblock refactoring:
xtensa/mm/mmu.c:36:9: warning: format '%zu' expects argument of type
'size_t', but argument 3 has type 'long unsigned int
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
The file was modifiedarch/xtensa/mm/mmu.c (diff)
Commit 47c4cc08cb5b34e93ab337b924c5ede77ca3c936 by broonie
ASoC: cs35l35: Disable regulators on driver removal
The chips main power supplies VA and VP are enabled during probe but
then never disabled, this will cause warnings from the regulator
framework on driver removal. Fix this by adding a remove callback and
disabling the supplies, whilst doing so follow best practice and put the
chip back into reset as well.
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The file was modifiedsound/soc/codecs/cs35l35.c (diff)
Commit 2e05ddd2c9f8000751d52fcf35b8318da46026bc by broonie
ASoC: intel: skylake: add remove() callback for component driver
Topology is not unloaded in the core during unregister_component()
anymore. So, add the remove() callback that will unload the topology.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The file was modifiedsound/soc/intel/skylake/skl-pcm.c (diff)
Commit 7cb9eb106d7a4efab6bcf30ec9503f1d703c77f5 by paulus
KVM: PPC: Book3S HV: Perserve PSSCR FAKE_SUSPEND bit on guest exit
There is a hardware bug in some POWER9 processors where a treclaim in
fake suspend mode can cause an inconsistency in the XER[SO] bit across
the threads of a core, the workaround being to force the core into SMT4
when doing the treclaim.
The FAKE_SUSPEND bit (bit 10) in the PSSCR is used to control whether a
thread is in fake suspend or real suspend. The important difference here
being that thread reconfiguration is blocked in real suspend but not
fake suspend mode.
When we exit a guest which was in fake suspend mode, we force the core
into SMT4 while we do the treclaim in kvmppc_save_tm_hv(). However on
the new exit path introduced with the function kvmhv_run_single_vcpu()
we restore the host PSSCR before calling kvmppc_save_tm_hv() which means
that if we were in fake suspend mode we put the thread into real suspend
mode when we clear the PSSCR[FAKE_SUSPEND] bit. This means that we block
thread reconfiguration and the thread which is trying to get the core
into SMT4 before it can do the treclaim spins forever since it itself is
blocking thread reconfiguration. The result is that that core is
essentially lost.
This results in a trace such as:
[   93.512904] CPU: 7 PID: 13352 Comm: qemu-system-ppc Not tainted 5.0.0
#4
[   93.512905] NIP:  c000000000098a04 LR: c0000000000cc59c CTR:
0000000000000000
[   93.512908] REGS: c000003fffd2bd70 TRAP: 0100   Not tainted  (5.0.0)
[   93.512908] MSR:  9000000302883033
<SF,HV,VEC,VSX,FP,ME,IR,DR,RI,LE,TM[SE]>  CR: 22222444  XER: 00000000
[   93.512914] CFAR: c000000000098a5c IRQMASK: 3
[   93.512915] PACATMSCRATCH: 0000000000000001
[   93.512916] GPR00: 0000000000000001 c000003f6cc1b830 c000000001033100
0000000000000004
[   93.512928] GPR04: 0000000000000004 0000000000000002 0000000000000004
0000000000000007
[   93.512930] GPR08: 0000000000000000 0000000000000004 0000000000000000
0000000000000004
[   93.512932] GPR12: c000203fff7fc000 c000003fffff9500 0000000000000000
0000000000000000
[   93.512935] GPR16: 2000000000300375 000000000000059f 0000000000000000
0000000000000000
[   93.512951] GPR20: 0000000000000000 0000000000080053 004000000256f41f
c000003f6aa88ef0
[   93.512953] GPR24: c000003f6aa89100 0000000000000010 0000000000000000
0000000000000000
[   93.512956] GPR28: c000003f9e9a0800 0000000000000000 0000000000000001
c000203fff7fc000
[   93.512959] NIP [c000000000098a04]
pnv_power9_force_smt4_catch+0x1b4/0x2c0
[   93.512960] LR [c0000000000cc59c] kvmppc_save_tm_hv+0x40/0x88
[   93.512960] Call Trace:
[   93.512961] [c000003f6cc1b830] [0000000000080053] 0x80053
(unreliable)
[   93.512965] [c000003f6cc1b8a0] [c00800001e9cb030]
kvmhv_p9_guest_entry+0x508/0x6b0 [kvm_hv]
[   93.512967] [c000003f6cc1b940] [c00800001e9cba44]
kvmhv_run_single_vcpu+0x2dc/0xb90 [kvm_hv]
[   93.512968] [c000003f6cc1ba10] [c00800001e9cc948]
kvmppc_vcpu_run_hv+0x650/0xb90 [kvm_hv]
[   93.512969] [c000003f6cc1bae0] [c00800001e8f620c]
kvmppc_vcpu_run+0x34/0x48 [kvm]
[   93.512971] [c000003f6cc1bb00] [c00800001e8f2d4c]
kvm_arch_vcpu_ioctl_run+0x2f4/0x400 [kvm]
[   93.512972] [c000003f6cc1bb90] [c00800001e8e3918]
kvm_vcpu_ioctl+0x460/0x7d0 [kvm]
[   93.512974] [c000003f6cc1bd00] [c0000000003ae2c0]
do_vfs_ioctl+0xe0/0x8e0
[   93.512975] [c000003f6cc1bdb0] [c0000000003aeb24]
ksys_ioctl+0x64/0xe0
[   93.512978] [c000003f6cc1be00] [c0000000003aebc8] sys_ioctl+0x28/0x80
[   93.512981] [c000003f6cc1be20] [c00000000000b3a4]
system_call+0x5c/0x70
[   93.512983] Instruction dump:
[   93.512986] 419dffbc e98c0000 2e8b0000 38000001 60000000 60000000
60000000 40950068
[   93.512993] 392bffff 39400000 79290020 39290001 <7d2903a6> 60000000
60000000 7d235214
To fix this we preserve the PSSCR[FAKE_SUSPEND] bit until we call
kvmppc_save_tm_hv() which will mean the core can get into SMT4 and
perform the treclaim. Note kvmppc_save_tm_hv() clears the
PSSCR[FAKE_SUSPEND] bit again so there is no need to explicitly do that.
Fixes: 95a6432ce9038 ("KVM: PPC: Book3S HV: Streamlined guest entry/exit
path on P9 for radix guests")
Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
The file was modifiedarch/powerpc/kvm/book3s_hv.c (diff)
Commit 345077c8e172c255ea0707214303ccd099e5656b by paulus
KVM: PPC: Book3S: Protect memslots while validating user address
Guest physical to user address translation uses KVM memslots and reading
these requires holding the kvm->srcu lock. However recently introduced
kvmppc_tce_validate() broke the rule (see the lockdep warning below).
This moves srcu_read_lock(&vcpu->kvm->srcu) earlier to protect
kvmppc_tce_validate() as well.
============================= WARNING: suspicious RCU usage
5.1.0-rc2-le_nv2_aikATfstn1-p1 #380 Not tainted
----------------------------- include/linux/kvm_host.h:605 suspicious
rcu_dereference_check() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 1 1 lock held by
qemu-system-ppc/8020:
#0: 0000000094972fe9 (&vcpu->mutex){+.+.}, at: kvm_vcpu_ioctl+0xdc/0x850
[kvm]
stack backtrace: CPU: 44 PID: 8020 Comm: qemu-system-ppc Not tainted
5.1.0-rc2-le_nv2_aikATfstn1-p1 #380 Call Trace:
[c000003fece8f740] [c000000000bcc134] dump_stack+0xe8/0x164 (unreliable)
[c000003fece8f790] [c000000000181be0] lockdep_rcu_suspicious+0x130/0x170
[c000003fece8f810] [c0000000000d5f50] kvmppc_tce_to_ua+0x280/0x290
[c000003fece8f870] [c00800001a7e2c78] kvmppc_tce_validate+0x80/0x1b0
[kvm]
[c000003fece8f8e0] [c00800001a7e3fac] kvmppc_h_put_tce+0x94/0x3e4 [kvm]
[c000003fece8f9a0] [c00800001a8baac4]
kvmppc_pseries_do_hcall+0x30c/0xce0 [kvm_hv]
[c000003fece8fa10] [c00800001a8bd89c] kvmppc_vcpu_run_hv+0x694/0xec0
[kvm_hv]
[c000003fece8fae0] [c00800001a7d95dc] kvmppc_vcpu_run+0x34/0x48 [kvm]
[c000003fece8fb00] [c00800001a7d56bc]
kvm_arch_vcpu_ioctl_run+0x2f4/0x400 [kvm]
[c000003fece8fb90] [c00800001a7c3618] kvm_vcpu_ioctl+0x460/0x850 [kvm]
[c000003fece8fd00] [c00000000041c4f4] do_vfs_ioctl+0xe4/0x930
[c000003fece8fdb0] [c00000000041ce04] ksys_ioctl+0xc4/0x110
[c000003fece8fe00] [c00000000041ce78] sys_ioctl+0x28/0x80
[c000003fece8fe20] [c00000000000b5a4] system_call+0x5c/0x70
Fixes: 42de7b9e2167 ("KVM: PPC: Validate TCEs against preregistered
memory page sizes", 2018-09-10) Signed-off-by: Alexey Kardashevskiy
<aik@ozlabs.ru> Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
The file was modifiedarch/powerpc/kvm/book3s_64_vio.c (diff)
Commit ad94dc3a7eb5fa6ff469dbcf401c44b14ad50595 by jgross
xen: use struct_size() helper in kzalloc()
struct privcmd_buf_vma_private has a zero-sized array at the end
(pages), use the new struct_size() helper to determine the proper
allocation size and avoid potential type mistakes.
Signed-off-by: Andrea Righi <andrea.righi@canonical.com> Reviewed-by:
Juergen Gross <jgross@suse.com> Signed-off-by: Juergen Gross
<jgross@suse.com>
The file was modifieddrivers/xen/privcmd-buf.c (diff)
Commit 42d8644bd77dd2d747e004e367cb0c895a606f39 by jgross
xen: Prevent buffer overflow in privcmd ioctl
The "call" variable comes from the user in privcmd_ioctl_hypercall().
It's an offset into the hypercall_page[] which has (PAGE_SIZE / 32)
elements.  We need to put an upper bound on it to prevent an out of
bounds access.
Cc: stable@vger.kernel.org Fixes: 1246ae0bb992 ("xen: add variable
hypercall caller") Signed-off-by: Dan Carpenter
<dan.carpenter@oracle.com> Reviewed-by: Boris Ostrovsky
<boris.ostrovsky@oracle.com> Signed-off-by: Juergen Gross
<jgross@suse.com>
The file was modifiedarch/x86/include/asm/xen/hypercall.h (diff)
Commit 3df1af984b76bc50cdbedbdd69d3f69192269cfe by maxime.ripard
Revert "Documentation/gpu/meson: Remove link to meson_canvas.c"
This reverts commit a3f98bb22cbfaaf67717e156f79e2bfeb42d4cac.
Patch "Documentation/gpu/meson: Remove link to meson_canvas.c" was
incorrectly applied on the wrong branch not containing the fixed commit
2bf6b5b0e374 ("drm/meson: exclusively use the canvas provider module")
Acked-by: Sean Paul <sean@poorly.run> Signed-off-by: Neil Armstrong
<narmstrong@baylibre.com> Signed-off-by: Maxime Ripard
<maxime.ripard@bootlin.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190404144342.15238-1-narmstrong@baylibre.com
The file was modifiedDocumentation/gpu/meson.rst (diff)
Commit cd9063757a227cf31ebf5391ccda2bf583b0806e by maxime.ripard
drm/sun4i: DW HDMI: Lower max. supported rate for H6
Currently resolutions with pixel clock higher than 340 MHz don't work
with H6 HDMI controller. They just produce a blank screen.
Limit maximum pixel clock rate to 340 MHz until scrambling is supported.
Cc: stable@vger.kernel.org # 5.0 Fixes: 40bb9d3147b2 ("drm/sun4i: Add
support for H6 DW HDMI controller") Signed-off-by: Jernej Skrabec
<jernej.skrabec@siol.net> Signed-off-by: Maxime Ripard
<maxime.ripard@bootlin.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190324190609.32721-1-jernej.skrabec@siol.net
The file was modifieddrivers/gpu/drm/sun4i/sun8i_dw_hdmi.c (diff)
Commit 4fa5ecda2bf96be7464eb406df8aba9d89260227 by tglx
objtool: Add rewind_stack_do_exit() to the noreturn list
This fixes the following warning seen on GCC 7.3:
  arch/x86/kernel/dumpstack.o: warning: objtool: oops_end() falls
through to next function show_regs()
Reported-by: kbuild test robot <lkp@intel.com> Signed-off-by: Josh
Poimboeuf <jpoimboe@redhat.com> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Link:
https://lkml.kernel.org/r/3418ebf5a5a9f6ed7e80954c741c0b904b67b5dc.1554398240.git.jpoimboe@redhat.com
The file was modifiedtools/objtool/check.c (diff)
Commit 212ac181c158c09038c474ba68068be49caecebb by tiwai
ALSA: seq: Fix OOB-reads from strlcpy
When ioctl calls are made with non-null-terminated userspace strings,
strlcpy causes an OOB-read from within strlen. Fix by changing to use
strscpy instead.
Signed-off-by: Zubin Mithra <zsm@chromium.org> Reviewed-by: Guenter
Roeck <groeck@chromium.org> Cc: <stable@vger.kernel.org> Signed-off-by:
Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/core/seq/seq_clientmgr.c (diff)
Commit 95c5c618fa4349b2ba13aebeabf71911208dfc5e by tglx
irqchip/irq-ls1x: Missing error code in ls1x_intc_of_init()
Currently, when irq_domain_add_linear() fails, the error code does not
get set so it returns zero which is wrong.  Fix it by setting the
appropriate error code.
Fixes: 9e543e22e204 ("irqchip: Add driver for Loongson-1 interrupt
controller") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Reviewed-by: Mukesh
Ojha <mojha@codeaurora.org> Cc: Marc Zyngier <marc.zyngier@arm.com> Cc:
Jiaxun Yang <jiaxun.yang@flygoat.com> Cc: Jason Cooper
<jason@lakedaemon.net> Cc: kernel-janitors@vger.kernel.org Link:
https://lkml.kernel.org/r/20190329062136.GQ32613@kadam
The file was modifieddrivers/irqchip/irq-ls1x.c (diff)
Commit e8458e7afa855317b14915d7b86ab3caceea7eb6 by tglx
genirq: Initialize request_mutex if CONFIG_SPARSE_IRQ=n
When CONFIG_SPARSE_IRQ is disable, the request_mutex in struct irq_desc
is not initialized which causes malfunction.
Fixes: 9114014cf4e6 ("genirq: Add mutex to irq desc to serialize
request/free_irq()") Signed-off-by: Kefeng Wang
<wangkefeng.wang@huawei.com> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Reviewed-by: Mukesh Ojha <mojha@codeaurora.org> Cc:
Marc Zyngier <marc.zyngier@arm.com> Cc:
<linux-arm-kernel@lists.infradead.org> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190404074512.145533-1-wangkefeng.wang@huawei.com
The file was modifiedkernel/irq/irqdesc.c (diff)
Commit b35f549df1d7520d37ba1e6d4a8d4df6bd52d136 by rostedt
syscalls: Remove start and number from syscall_get_arguments() args
At Linux Plumbers, Andy Lutomirski approached me and pointed out that
the function call syscall_get_arguments() implemented in x86 was
horribly written and not optimized for the standard case of passing in 0
and 6 for the starting index and the number of system calls to get. When
looking at all the users of this function, I discovered that all
instances pass in only 0 and 6 for these arguments. Instead of having
this function handle different cases that are never used, simply rewrite
it to return the first 6 arguments of a system call.
This should help out the performance of tracing system calls by ptrace,
ftrace and perf.
Link: http://lkml.kernel.org/r/20161107213233.754809394@goodmis.org
Cc: Oleg Nesterov <oleg@redhat.com> Cc: Kees Cook
<keescook@chromium.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc:
Dominik Brodowski <linux@dominikbrodowski.net> Cc: Dave Martin
<dave.martin@arm.com> Cc: "Dmitry V. Levin" <ldv@altlinux.org> Cc:
x86@kernel.org Cc: linux-snps-arc@lists.infradead.org Cc:
linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-c6x-dev@linux-c6x.org Cc:
uclinux-h8-devel@lists.sourceforge.jp Cc: linux-hexagon@vger.kernel.org
Cc: linux-ia64@vger.kernel.org Cc: linux-mips@vger.kernel.org Cc:
nios2-dev@lists.rocketboards.org Cc: openrisc@lists.librecores.org Cc:
linux-parisc@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc:
linux-riscv@lists.infradead.org Cc: linux-s390@vger.kernel.org Cc:
linux-sh@vger.kernel.org Cc: sparclinux@vger.kernel.org Cc:
linux-um@lists.infradead.org Cc: linux-xtensa@linux-xtensa.org Cc:
linux-arch@vger.kernel.org Acked-by: Paul Burton <paul.burton@mips.com>
# MIPS parts Acked-by: Max Filippov <jcmvbkbc@gmail.com> # For xtensa
changes Acked-by: Will Deacon <will.deacon@arm.com> # For the arm64 bits
Reviewed-by: Thomas Gleixner <tglx@linutronix.de> # for x86 Reviewed-by:
Dmitry V. Levin <ldv@altlinux.org> Reported-by: Andy Lutomirski
<luto@amacapital.net> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org>
The file was modifiedarch/nds32/include/asm/syscall.h (diff)
The file was modifiedarch/powerpc/include/asm/syscall.h (diff)
The file was modifiedkernel/seccomp.c (diff)
The file was modifiedarch/h8300/include/asm/syscall.h (diff)
The file was modifiedarch/parisc/include/asm/syscall.h (diff)
The file was modifiedarch/um/include/asm/syscall-generic.h (diff)
The file was modifiedarch/arc/include/asm/syscall.h (diff)
The file was modifiedarch/mips/include/asm/syscall.h (diff)
The file was modifiedarch/ia64/include/asm/syscall.h (diff)
The file was modifiedarch/arm/include/asm/syscall.h (diff)
The file was modifiedarch/microblaze/include/asm/syscall.h (diff)
The file was modifiedarch/arm64/include/asm/syscall.h (diff)
The file was modifiedarch/openrisc/include/asm/syscall.h (diff)
The file was modifiedkernel/trace/trace_syscalls.c (diff)
The file was modifiedarch/xtensa/include/asm/syscall.h (diff)
The file was modifiedinclude/trace/events/syscalls.h (diff)
The file was modifiedarch/c6x/include/asm/syscall.h (diff)
The file was modifiedarch/riscv/include/asm/syscall.h (diff)
The file was modifiedarch/sh/include/asm/syscall_32.h (diff)
The file was modifiedarch/hexagon/include/asm/syscall.h (diff)
The file was modifiedarch/sh/include/asm/syscall_64.h (diff)
The file was modifiedarch/x86/include/asm/syscall.h (diff)
The file was modifiedinclude/asm-generic/syscall.h (diff)
The file was modifiedlib/syscall.c (diff)
The file was modifiedarch/mips/kernel/ptrace.c (diff)
The file was modifiedarch/sparc/include/asm/syscall.h (diff)
The file was modifiedarch/csky/include/asm/syscall.h (diff)
The file was modifiedarch/nios2/include/asm/syscall.h (diff)
The file was modifiedarch/s390/include/asm/syscall.h (diff)
Commit 32d92586629a8b3637a3c9361709818e25f327ad by rostedt
syscalls: Remove start and number from syscall_set_arguments() args
After removing the start and count arguments of syscall_get_arguments()
it seems reasonable to remove them from syscall_set_arguments(). Note,
as of today, there are no users of syscall_set_arguments(). But we are
told that there will be soon. But for now, at least make it consistent
with syscall_get_arguments().
Link: http://lkml.kernel.org/r/20190327222014.GA32540@altlinux.org
Cc: Oleg Nesterov <oleg@redhat.com> Cc: Kees Cook
<keescook@chromium.org> Cc: Andy Lutomirski <luto@amacapital.net> Cc:
Dominik Brodowski <linux@dominikbrodowski.net> Cc: Dave Martin
<dave.martin@arm.com> Cc: "Dmitry V. Levin" <ldv@altlinux.org> Cc:
x86@kernel.org Cc: linux-snps-arc@lists.infradead.org Cc:
linux-kernel@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-c6x-dev@linux-c6x.org Cc:
uclinux-h8-devel@lists.sourceforge.jp Cc: linux-hexagon@vger.kernel.org
Cc: linux-ia64@vger.kernel.org Cc: linux-mips@vger.kernel.org Cc:
nios2-dev@lists.rocketboards.org Cc: openrisc@lists.librecores.org Cc:
linux-parisc@vger.kernel.org Cc: linuxppc-dev@lists.ozlabs.org Cc:
linux-riscv@lists.infradead.org Cc: linux-s390@vger.kernel.org Cc:
linux-sh@vger.kernel.org Cc: sparclinux@vger.kernel.org Cc:
linux-um@lists.infradead.org Cc: linux-xtensa@linux-xtensa.org Cc:
linux-arch@vger.kernel.org Acked-by: Max Filippov <jcmvbkbc@gmail.com> #
For xtensa changes Acked-by: Will Deacon <will.deacon@arm.com> # For the
arm64 bits Reviewed-by: Thomas Gleixner <tglx@linutronix.de> # for x86
Reviewed-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Steven
Rostedt (VMware) <rostedt@goodmis.org>
The file was modifiedarch/c6x/include/asm/syscall.h (diff)
The file was modifiedarch/csky/include/asm/syscall.h (diff)
The file was modifiedarch/xtensa/include/asm/syscall.h (diff)
The file was modifiedinclude/asm-generic/syscall.h (diff)
The file was modifiedarch/nds32/include/asm/syscall.h (diff)
The file was modifiedarch/um/include/asm/syscall-generic.h (diff)
The file was modifiedarch/ia64/kernel/ptrace.c (diff)
The file was modifiedarch/powerpc/include/asm/syscall.h (diff)
The file was modifiedarch/openrisc/include/asm/syscall.h (diff)
The file was modifiedarch/arm64/include/asm/syscall.h (diff)
The file was modifiedarch/nios2/include/asm/syscall.h (diff)
The file was modifiedarch/riscv/include/asm/syscall.h (diff)
The file was modifiedarch/microblaze/include/asm/syscall.h (diff)
The file was modifiedarch/s390/include/asm/syscall.h (diff)
The file was modifiedarch/arm/include/asm/syscall.h (diff)
The file was modifiedarch/sh/include/asm/syscall_32.h (diff)
The file was modifiedarch/x86/include/asm/syscall.h (diff)
The file was modifiedarch/sparc/include/asm/syscall.h (diff)
The file was modifiedarch/ia64/include/asm/syscall.h (diff)
The file was modifiedarch/sh/include/asm/syscall_64.h (diff)
Commit f0d1762554014ce0ae347b9f0d088f2c157c8c72 by axboe
paride/pcd: Fix potential NULL pointer dereference and mem leak
Syzkaller report this:
pcd: pcd version 1.07, major 46, nice 0 pcd0: Autoprobe failed pcd: No
CD-ROM drive found kasan: CONFIG_KASAN_INLINE enabled kasan: GPF could
be caused by NULL-ptr deref or user memory access general protection
fault: 0000 [#1] SMP KASAN PTI CPU: 1 PID: 4525 Comm: syz-executor.0 Not
tainted 5.1.0-rc3+ #8 Hardware name: QEMU Standard PC (i440FX + PIIX,
1996), BIOS 1.10.2-1ubuntu1 04/01/2014 RIP: 0010:pcd_init+0x95c/0x1000
[pcd] Code: c4 ab f7 48 89 d8 48 c1 e8 03 80 3c 28 00 74 08 48 89 df e8
56 a3 da f7 4c 8b 23 49 8d bc 24 80 05 00 00 48 89 f8 48 c1 e8 03 <80>
3c 28 00 74 05 e8 39 a3 da f7 49 8b bc 24 80 05 00 00 e8 cc b2 RSP:
0018:ffff8881e84df880 EFLAGS: 00010202 RAX: 00000000000000b0 RBX:
ffffffffc155a088 RCX: ffffffffc1508935 RDX: 0000000000040000 RSI:
ffffc900014f0000 RDI: 0000000000000580 RBP: dffffc0000000000 R08:
ffffed103ee658b8 R09: ffffed103ee658b8 R10: 0000000000000001 R11:
ffffed103ee658b7 R12: 0000000000000000 R13: ffffffffc155a778 R14:
ffffffffc155a4a8 R15: 0000000000000003 FS:  00007fe71bee3700(0000)
GS:ffff8881f7300000(0000) knlGS:0000000000000000 CS:  0010 DS: 0000 ES:
0000 CR0: 0000000080050033 CR2: 000055a7334441a8 CR3: 00000001e9674003
CR4: 00000000007606e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400 PKRU: 55555554 Call Trace:
? 0xffffffffc1508000
? 0xffffffffc1508000
do_one_initcall+0xbc/0x47d init/main.c:901
do_init_module+0x1b5/0x547 kernel/module.c:3456
load_module+0x6405/0x8c10 kernel/module.c:3804
__do_sys_finit_module+0x162/0x190 kernel/module.c:3898
do_syscall_64+0x9f/0x450 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:00007fe71bee2c58
EFLAGS: 00000246 ORIG_RAX: 0000000000000139 RAX: ffffffffffffffda RBX:
000000000073bf00 RCX: 0000000000462e99 RDX: 0000000000000000 RSI:
0000000020000180 RDI: 0000000000000003 RBP: 00007fe71bee2c70 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007fe71bee36bc R13: 00000000004bcefa R14:
00000000006f6fb0 R15: 0000000000000004 Modules linked in: pcd(+) paride
solos_pci atm ts_fsm rtc_mt6397 mac80211 nhc_mobility nhc_udp nhc_ipv6
nhc_hop nhc_dest nhc_fragment nhc_routing 6lowpan rtc_cros_ec memconsole
intel_xhci_usb_role_switch roles rtc_wm8350 usbcore
industrialio_triggered_buffer kfifo_buf industrialio asc7621 dm_era
dm_persistent_data dm_bufio dm_mod tpm gnss_ubx gnss_serial serdev gnss
max2165 cpufreq_dt hid_penmount hid menf21bmc_wdt rc_core n_tracesink
ide_gd_mod cdns_csi2tx v4l2_fwnode videodev media pinctrl_lewisburg
pinctrl_intel iptable_security iptable_raw iptable_mangle iptable_nat
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 vxcan batman_adv cfg80211 rfkill chnl_net caif nlmon dummy
team bonding vcan bridge stp llc ip6_gre gre ip6_tunnel tunnel6 tun
joydev mousedev ppdev kvm_intel kvm irqbypass crct10dif_pclmul
crc32_pclmul crc32c_intel ghash_clmulni_intel aesni_intel aes_x86_64
crypto_simd
ide_pci_generic piix input_leds cryptd glue_helper psmouse ide_core
intel_agp serio_raw intel_gtt ata_generic i2c_piix4 agpgart pata_acpi
parport_pc parport floppy rtc_cmos sch_fq_codel ip_tables x_tables
sha1_ssse3 sha1_generic ipv6 [last unloaded: bmc150_magn] Dumping ftrace
buffer:
  (ftrace buffer empty)
---[ end trace d873691c3cd69f56 ]---
If alloc_disk fails in pcd_init_units, cd->disk will be NULL, however in
pcd_detect and pcd_exit, it's not check this before free.It may result a
NULL pointer dereference.
Also when register_blkdev failed, blk_cleanup_queue() and
blk_mq_free_tag_set() should be called to free resources.
Reported-by: Hulk Robot <hulkci@huawei.com> Fixes: 81b74ac68c28
("paride/pcd: cleanup queues when detection fails") Signed-off-by:
YueHaibing <yuehaibing@huawei.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifieddrivers/block/paride/pcd.c (diff)
Commit fd9c40f64c514bdc585a21e2e33fa5f83ca8811b by axboe
block: Revert v5.0 blk_mq_request_issue_directly() changes
blk_mq_try_issue_directly() can return BLK_STS*_RESOURCE for requests
that have been queued. If that happens when blk_mq_try_issue_directly()
is called by the dm-mpath driver then dm-mpath will try to resubmit a
request that is already queued and a kernel crash follows. Since it is
nontrivial to fix blk_mq_request_issue_directly(), revert the
blk_mq_request_issue_directly() changes that went into kernel v5.0.
This patch reverts the following commits:
* d6a51a97c0b2 ("blk-mq: replace and kill
blk_mq_request_issue_directly") # v5.0.
* 5b7a6f128aad ("blk-mq: issue directly with bypass 'false' in
blk_mq_sched_insert_requests") # v5.0.
* 7f556a44e61d ("blk-mq: refactor the code of issue request directly") #
v5.0.
Cc: Christoph Hellwig <hch@infradead.org> Cc: Ming Lei
<ming.lei@redhat.com> Cc: Jianchao Wang <jianchao.w.wang@oracle.com> Cc:
Hannes Reinecke <hare@suse.com> Cc: Johannes Thumshirn
<jthumshirn@suse.de> Cc: James Smart <james.smart@broadcom.com> Cc:
Dongli Zhang <dongli.zhang@oracle.com> Cc: Laurence Oberman
<loberman@redhat.com> Cc: <stable@vger.kernel.org> Reported-by: Laurence
Oberman <loberman@redhat.com> Tested-by: Laurence Oberman
<loberman@redhat.com> Fixes: 7f556a44e61d ("blk-mq: refactor the code of
issue request directly") # v5.0. Signed-off-by: Bart Van Assche
<bvanassche@acm.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedblock/blk-mq.h (diff)
The file was modifiedblock/blk-mq-sched.c (diff)
The file was modifiedblock/blk-mq.c (diff)
The file was modifiedblock/blk-core.c (diff)
Commit 325aa19598e410672175ed50982f902d4e3f31c5 by tglx
genirq: Respect IRQCHIP_SKIP_SET_WAKE in irq_chip_set_wake_parent()
If a child irqchip calls irq_chip_set_wake_parent() but its parent
irqchip has the IRQCHIP_SKIP_SET_WAKE flag set an error is returned.
This is inconsistent behaviour vs. set_irq_wake_real() which returns 0
when the irqchip has the IRQCHIP_SKIP_SET_WAKE flag set. It doesn't
attempt to walk the chain of parents and set irq wake on any chips that
don't have the flag set either. If the intent is to call the
.irq_set_wake() callback of the parent irqchip, then we expect irqchip
implementations to omit the IRQCHIP_SKIP_SET_WAKE flag and implement an
.irq_set_wake() function that calls irq_chip_set_wake_parent().
The problem has been observed on a Qualcomm sdm845 device where set wake
fails on any GPIO interrupts after applying work in progress wakeup irq
patches to the GPIO driver. The chain of chips looks like this:
     QCOM GPIO -> QCOM PDC (SKIP) -> ARM GIC (SKIP)
The GPIO controllers parent is the QCOM PDC irqchip which in turn has
ARM GIC as parent.  The QCOM PDC irqchip has the IRQCHIP_SKIP_SET_WAKE
flag set, and so does the grandparent ARM GIC.
The GPIO driver doesn't know if the parent needs to set wake or not, so
it unconditionally calls irq_chip_set_wake_parent() causing this
function to return a failure because the parent irqchip (PDC) doesn't
have the
.irq_set_wake() callback set. Returning 0 instead makes everything work
and irqs from the GPIO controller can be configured for wakeup.
Make it consistent by returning 0 (success) from
irq_chip_set_wake_parent() when a parent chip has IRQCHIP_SKIP_SET_WAKE
set.
[ tglx: Massaged changelog ]
Fixes: 08b55e2a9208e ("genirq: Add irqchip_set_wake_parent")
Signed-off-by: Stephen Boyd <swboyd@chromium.org> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Acked-by: Marc Zyngier
<marc.zyngier@arm.com> Cc: linux-arm-kernel@lists.infradead.org Cc:
linux-gpio@vger.kernel.org Cc: Lina Iyer <ilina@codeaurora.org> Cc:
stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190325181026.247796-1-swboyd@chromium.org
The file was modifiedkernel/irq/chip.c (diff)
Commit c7084edc3f6d67750f50d4183134c4fb5712a5c8 by torvalds
tty: mark Siemens R3964 line discipline as BROKEN
The n_r3964 line discipline driver was written in a different time, when
SMP machines were rare, and users were trusted to do the right thing.
Since then, the world has moved on but not this code, it has stayed
rooted in the past with its lovely hand-crafted list structures and
loads of "interesting" race conditions all over the place.
After attempting to clean up most of the issues, I just gave up and am
now marking the driver as BROKEN so that hopefully someone who has this
hardware will show up out of the woodwork (I know you are out there!)
and will help with debugging a raft of changes that I had laying around
for the code, but was too afraid to commit as odds are they would break
things.
Many thanks to Jann and Linus for pointing out the initial problems in
this codebase, as well as many reviews of my attempts to fix the issues.
It was a case of whack-a-mole, and as you can see, the mole won.
Reported-by: Jann Horn <jannh@google.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifieddrivers/char/Kconfig (diff)
Commit ede885ecb2cdf8a8dd5367702e3d964ec846a2d5 by pbonzini
kvm: svm: fix potential get_num_contig_pages overflow
get_num_contig_pages() could potentially overflow int so make its type
consistent with its usage.
Reported-by: Cfir Cohen <cfir@google.com> Cc: stable@vger.kernel.org
Signed-off-by: David Rientjes <rientjes@google.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/svm.c (diff)
Commit b86bc2858b389255cd44555ce4b1e427b2b770c0 by pbonzini
KVM: SVM: prevent DBG_DECRYPT and DBG_ENCRYPT overflow
This ensures that the address and length provided to DBG_DECRYPT and
DBG_ENCRYPT do not cause an overflow.
At the same time, pass the actual number of pages pinned in memory to
sev_unpin_memory() as a cleanup.
Reported-by: Cfir Cohen <cfir@google.com> Signed-off-by: David Rientjes
<rientjes@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/svm.c (diff)
Commit acff78477b9b4f26ecdf65733a4ed77fe837e9dc by pbonzini
KVM: x86: nVMX: close leak of L0's x2APIC MSRs (CVE-2019-3887)
The nested_vmx_prepare_msr_bitmap() function doesn't directly guard the
x2APIC MSR intercepts with the "virtualize x2APIC mode" MSR. As a
result, we discovered the potential for a buggy or malicious L1 to get
access to L0's x2APIC MSRs, via an L2, as follows.
1. L1 executes WRMSR(IA32_SPEC_CTRL, 1). This causes the spec_ctrl
variable, in nested_vmx_prepare_msr_bitmap() to become true. 2. L1
disables "virtualize x2APIC mode" in VMCS12. 3. L1 enables
"APIC-register virtualization" in VMCS12.
Now, KVM will set VMCS02's x2APIC MSR intercepts from VMCS12, and then
set "virtualize x2APIC mode" to 0 in VMCS02. Oops.
This patch closes the leak by explicitly guarding VMCS02's x2APIC MSR
intercepts with VMCS12's "virtualize x2APIC mode" control.
The scenario outlined above and fix prescribed here, were verified with
a related patch in kvm-unit-tests titled "Add leak scenario to
virt_x2apic_mode_test".
Note, it looks like this issue may have been introduced inadvertently
during a merge---see 15303ba5d1cd.
Signed-off-by: Marc Orr <marcorr@google.com> Reviewed-by: Jim Mattson
<jmattson@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit c73f4c998e1fd4249b9edfa39e23f4fda2b9b041 by pbonzini
KVM: x86: nVMX: fix x2APIC VTPR read intercept
Referring to the "VIRTUALIZING MSR-BASED APIC ACCESSES" chapter of the
SDM, when "virtualize x2APIC mode" is 1 and "APIC-register
virtualization" is 0, a RDMSR of 808H should return the VTPR from the
virtual APIC page.
However, for nested, KVM currently fails to disable the read intercept
for this MSR. This means that a RDMSR exit takes precedence over
"virtualize x2APIC mode", and KVM passes through L1's TPR to L2, instead
of sourcing the value from L2's virtual APIC page.
This patch fixes the issue by disabling the read intercept, in VMCS02,
for the VTPR when "APIC-register virtualization" is 0.
The issue described above and fix prescribed here, were verified with a
related patch in kvm-unit-tests titled "Test VMX's virtualize x2APIC
mode w/ nested".
Signed-off-by: Marc Orr <marcorr@google.com> Reviewed-by: Jim Mattson
<jmattson@google.com> Fixes: c992384bde84f ("KVM: vmx: speed up MSR
bitmap merge") Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit 9cde402a59770a0669d895399c13407f63d7d209 by bhelgaas
PCI: Add function 1 DMA alias quirk for Marvell 9170 SATA controller
There is a Marvell 88SE9170 PCIe SATA controller I found on a board
here. Some quick testing with the ARM SMMU enabled reveals that it
suffers from the same requester ID mixup problems as the other Marvell
chips listed already.
Add the PCI vendor/device ID to the list of chips which need the
workaround.
Signed-off-by: Andre Przywara <andre.przywara@arm.com> Signed-off-by:
Bjorn Helgaas <bhelgaas@google.com> CC: stable@vger.kernel.org
The file was modifieddrivers/pci/quirks.c (diff)
Commit 4ed319c6ac08e9a28fca7ac188181ac122f4de84 by snitzer
dm integrity: fix deadlock with overlapping I/O
dm-integrity will deadlock if overlapping I/O is issued to it, the bug
was introduced by commit 724376a04d1a ("dm integrity: implement fair
range locks").  Users rarely use overlapping I/O so this bug went
undetected until now.
Fix this bug by correcting, likely cut-n-paste, typos in
ranges_overlap() and also remove a flawed ranges_overlap() check in
remove_range_unlocked().  This condition could leave unprocessed bios
hanging on wait_list forever.
Cc: stable@vger.kernel.org # v4.19+ Fixes: 724376a04d1a ("dm integrity:
implement fair range locks") Signed-off-by: Mikulas Patocka
<mpatocka@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
The file was modifieddrivers/md/dm-integrity.c (diff)
Commit d58431eacb226222430940134d97bfd72f292fcd by bfields
sunrpc: don't mark uninitialised items as VALID.
A recent commit added a call to cache_fresh_locked() when an expired
item was found. The call sets the CACHE_VALID flag, so it is important
that the item actually is valid. There are two ways it could be valid:
1/ If ->update has been called to fill in relevant content 2/ if
CACHE_NEGATIVE is set, to say that content doesn't exist.
An expired item that is waiting for an update will be neither. Setting
CACHE_VALID will mean that a subsequent call to cache_put() will be
likely to dereference uninitialised pointers.
So we must make sure the item is valid, and we already have code to do
that in try_to_negate_entry().  This takes the hash lock and so cannot
be used directly, so take out the two lines that we need and use them.
Now cache_fresh_locked() is certain to be called only on a valid item.
Cc: stable@kernel.org # 2.6.35 Fixes: 4ecd55ea0742 ("sunrpc: fix
cache_head leak due to queued request") Signed-off-by: NeilBrown
<neilb@suse.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
The file was modifiednet/sunrpc/cache.c (diff)
Commit 3c86794ac0e6582eea7733619d58ea150198502f by bfields
nfsd/nfsd3_proc_readdir: fix buffer count and page pointers
After this commit
f875a79 nfsd: allow nfsv3 readdir request to be larger. nfsv3 readdir
request size can be larger than PAGE_SIZE. So if the directory been read
is large enough, we can use multiple pages in rq_respages. Update buffer
count and page pointers like we do in readdirplus to make this happen.
Now listing a directory within 3000 files will panic because we are
counting in a wrong way and would write on random page.
Fixes: f875a79 "nfsd: allow nfsv3 readdir request to be larger"
Signed-off-by: Murphy Zhou <jencce.kernel@gmail.com> Signed-off-by: J.
Bruce Fields <bfields@redhat.com>
The file was modifiedfs/nfsd/nfs3proc.c (diff)
The file was modifiedfs/nfsd/nfs3xdr.c (diff)
Commit 5f074f3e192f10c9fade898b9b3b8812e3d83342 by torvalds
lib/string.c: implement a basic bcmp
A recent optimization in Clang (r355672) lowers comparisons of the
return value of memcmp against zero to comparisons of the return value
of bcmp against zero.  This helps some platforms that implement bcmp
more efficiently than memcmp.  glibc simply aliases bcmp to memcmp, but
an optimized implementation is in the works.
This results in linkage failures for all targets with Clang due to the
undefined symbol.  For now, just implement bcmp as a tailcail to memcmp
to unbreak the build.  This routine can be further optimized in the
future.
Other ideas discussed:
* A weak alias was discussed, but breaks for architectures that define
  their own implementations of memcmp since aliases to declarations are
  not permitted (only definitions). Arch-specific memcmp
  implementations typically declare memcmp in C headers, but implement
  them in assembly.
* -ffreestanding also is used sporadically throughout the kernel.
* -fno-builtin-bcmp doesn't work when doing LTO.
Link: https://bugs.llvm.org/show_bug.cgi?id=41035 Link:
https://code.woboq.org/userspace/glibc/string/memcmp.c.html#bcmp Link:
https://github.com/llvm/llvm-project/commit/8e16d73346f8091461319a7dfc4ddd18eedcff13
Link: https://github.com/ClangBuiltLinux/linux/issues/416 Link:
http://lkml.kernel.org/r/20190313211335.165605-1-ndesaulniers@google.com
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com> Reported-by:
Nathan Chancellor <natechancellor@gmail.com> Reported-by: Adhemerval
Zanella <adhemerval.zanella@linaro.org> Suggested-by: Arnd Bergmann
<arnd@arndb.de> Suggested-by: James Y Knight <jyknight@google.com>
Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Suggested-by: Nathan Chancellor <natechancellor@gmail.com> Suggested-by:
Rasmus Villemoes <linux@rasmusvillemoes.dk> Acked-by: Steven Rostedt
(VMware) <rostedt@goodmis.org> Reviewed-by: Nathan Chancellor
<natechancellor@gmail.com> Tested-by: Nathan Chancellor
<natechancellor@gmail.com> Reviewed-by: Masahiro Yamada
<yamada.masahiro@socionext.com> Reviewed-by: Andy Shevchenko
<andriy.shevchenko@linux.intel.com> Cc: David Laight
<David.Laight@ACULAB.COM> Cc: Rasmus Villemoes
<linux@rasmusvillemoes.dk> Cc: Namhyung Kim <namhyung@kernel.org> Cc:
Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Dan Williams
<dan.j.williams@intel.com> Cc: <stable@vger.kernel.org> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedlib/string.c (diff)
The file was modifiedinclude/linux/string.h (diff)
Commit 298a32b132087550d3fa80641ca58323c5dfd4d9 by torvalds
kmemleak: powerpc: skip scanning holes in the .bss section
Commit 2d4f567103ff ("KVM: PPC: Introduce kvm_tmp framework") adds
kvm_tmp[] into the .bss section and then free the rest of unused spaces
back to the page allocator.
kernel_init
kvm_guest_init
   kvm_free_tmp
     free_reserved_area
       free_unref_page
         free_unref_page_prepare
With DEBUG_PAGEALLOC=y, it will unmap those pages from kernel.  As the
result, kmemleak scan will trigger a panic when it scans the .bss
section with unmapped pages.
This patch creates dedicated kmemleak objects for the .data, .bss and
potentially .data..ro_after_init sections to allow partial freeing via
the kmemleak_free_part() in the powerpc kvm_free_tmp() function.
Link:
http://lkml.kernel.org/r/20190321171917.62049-1-catalin.marinas@arm.com
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Reported-by:
Qian Cai <cai@lca.pw> Acked-by: Michael Ellerman <mpe@ellerman.id.au>
(powerpc) Tested-by: Qian Cai <cai@lca.pw> Cc: Paul Mackerras
<paulus@samba.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Avi Kivity <avi@redhat.com> Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Radim Krcmar <rkrcmar@redhat.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedarch/powerpc/kernel/kvm.c (diff)
The file was modifiedmm/kmemleak.c (diff)
Commit 6147e136ff5071609b54f18982dea87706288e21 by torvalds
include/linux/bitrev.h: fix constant bitrev
clang points out with hundreds of warnings that the bitrev macros have a
problem with constant input:
  drivers/hwmon/sht15.c:187:11: error: variable '__x' is uninitialized
when used within its own initialization
       [-Werror,-Wuninitialized]
         u8 crc = bitrev8(data->val_status & 0x0F);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/bitrev.h:102:21: note: expanded from macro 'bitrev8'
         __constant_bitrev8(__x) :                       \
         ~~~~~~~~~~~~~~~~~~~^~~~
include/linux/bitrev.h:67:11: note: expanded from macro
'__constant_bitrev8'
         u8 __x = x;                     \
            ~~~   ^
Both the bitrev and the __constant_bitrev macros use an internal
variable named __x, which goes horribly wrong when passing one to the
other.
The obvious fix is to rename one of the variables, so this adds an extra
'_'.
It seems we got away with this because
- there are only a few drivers using bitrev macros
- usually there are no constant arguments to those
- when they are constant, they tend to be either 0 or (unsigned)-1
  (drivers/isdn/i4l/isdnhdlc.o, drivers/iio/amplifiers/ad8366.c) and
  give the correct result by pure chance.
In fact, the only driver that I could find that gets different results
with this is drivers/net/wan/slic_ds26522.c, which in turn is a driver
for fairly rare hardware (adding the maintainer to Cc for testing).
Link: http://lkml.kernel.org/r/20190322140503.123580-1-arnd@arndb.de
Fixes: 556d2f055bf6 ("ARM: 8187/1: add CONFIG_HAVE_ARCH_BITREVERSE to
support rbit instruction") Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com> Cc: Zhao Qiang
<qiang.zhao@nxp.com> Cc: Yalin Wang <yalin.wang@sonymobile.com> Cc:
<stable@vger.kernel.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedinclude/linux/bitrev.h (diff)
Commit b11ed18efa8f3dc58b259b812588317b765b1cfc by torvalds
lib/lzo: fix bugs for very short or empty input
For very short input data (0 - 1 bytes), lzo-rle was not behaving
correctly.  Fix this behaviour and update documentation accordingly.
For zero-length input, lzo v0 outputs an end-of-stream marker only,
which was misinterpreted by lzo-rle as a bitstream version number.
Ensure bitstream versions > 0 require a minimum stream length of 5.
Also fixes a bug in handling the tail for very short inputs when a
bitstream version is present.
Link:
http://lkml.kernel.org/r/20190326165857.34613-1-dave.rodgman@arm.com
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com> Signed-off-by: Andrew
Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedDocumentation/lzo.txt (diff)
The file was modifiedlib/lzo/lzo1x_compress.c (diff)
The file was modifiedlib/lzo/lzo1x_decompress_safe.c (diff)
Commit fcae96ff96538f66e7acd5d4e0f2e7516ff8cbd0 by torvalds
mm: fix vm_fault_t cast in VM_FAULT_GET_HINDEX()
Symmetrically to VM_FAULT_SET_HINDEX(), we need a force-cast in
VM_FAULT_GET_HINDEX() to tell sparse that this is intentional.
Sparse complains about the current code when building a kernel with
CONFIG_MEMORY_FAILURE:
  arch/x86/mm/fault.c:1058:53: warning: restricted vm_fault_t degrades
to integer
Link: http://lkml.kernel.org/r/20190327204117.35215-1-jannh@google.com
Fixes: 3d3539018d2c ("mm: create the new vm_fault_t type")
Signed-off-by: Jann Horn <jannh@google.com> Reviewed-by: Andrew Morton
<akpm@linux-foundation.org> Cc: Souptick Joarder <jrdr.linux@gmail.com>
Cc: Matthew Wilcox <willy@infradead.org> Cc: Vlastimil Babka
<vbabka@suse.cz> Cc: "Kirill A. Shutemov"
<kirill.shutemov@linux.intel.com> Cc: Rik van Riel <riel@surriel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedinclude/linux/mm_types.h (diff)
Commit 58b6e5e8f1addd44583d61b0a03c0f5519527e35 by torvalds
hugetlbfs: fix memory leak for resv_map
When mknod is used to create a block special file in hugetlbfs, it will
allocate an inode and kmalloc a 'struct resv_map' via resv_map_alloc().
inode->i_mapping->private_data will point the newly allocated resv_map.
However, when the device special file is opened bd_acquire() will set
inode->i_mapping to bd_inode->i_mapping.  Thus the pointer to the
allocated resv_map is lost and the structure is leaked.
Programs to reproduce:
       mount -t hugetlbfs nodev hugetlbfs
       mknod hugetlbfs/dev b 0 0
       exec 30<> hugetlbfs/dev
       umount hugetlbfs/
resv_map structures are only needed for inodes which can have associated
page allocations.  To fix the leak, only allocate resv_map for those
inodes which could possibly be associated with page allocations.
Link:
http://lkml.kernel.org/r/20190401213101.16476-1-mike.kravetz@oracle.com
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com> Reviewed-by:
Andrew Morton <akpm@linux-foundation.org> Reported-by: Yufen Yu
<yuyufen@huawei.com> Suggested-by: Yufen Yu <yuyufen@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedfs/hugetlbfs/inode.c (diff)
Commit c6f3c5ee40c10bb65725047a220570f718507001 by torvalds
mm/huge_memory.c: fix modifying of page protection by insert_pfn_pmd()
With some architectures like ppc64, set_pmd_at() cannot cope with a
situation where there is already some (different) valid entry present.
Use pmdp_set_access_flags() instead to modify the pfn which is built to
deal with modifying existing PMD entries.
This is similar to commit cae85cb8add3 ("mm/memory.c: fix modifying of
page protection by insert_pfn()")
We also do similar update w.r.t insert_pfn_pud eventhough ppc64 don't
support pud pfn entries now.
Without this patch we also see the below message in kernel log "BUG:
non-zero pgtables_bytes on freeing mm:"
Link:
http://lkml.kernel.org/r/20190402115125.18803-1-aneesh.kumar@linux.ibm.com
Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Reported-by: Chandan Rajendra <chandan@linux.ibm.com> Reviewed-by: Jan
Kara <jack@suse.cz> Cc: Dan Williams <dan.j.williams@intel.com> Cc:
<stable@vger.kernel.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/huge_memory.c (diff)
Commit be87ab0afd680ac35486d16c0963c56d9be1d8a0 by torvalds
psi: clarify the units used in pressure files
The output of the PSI files show a bunch of numbers with no unit.  The
psi.txt documentation file also does not indicate what units are used.
One can only find out by looking at the source code.  The units are
percentage for the averages and useconds for the total.  Make the
information easier to find by documenting the units in psi.txt.
Link: http://lkml.kernel.org/r/20190402193810.3450-1-longman@redhat.com
Signed-off-by: Waiman Long <longman@redhat.com> Acked-by: Johannes
Weiner <hannes@cmpxchg.org> Cc: "Peter Zijlstra (Intel)"
<peterz@infradead.org> Cc: Tejun Heo <tj@kernel.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>
The file was modifiedDocumentation/accounting/psi.txt (diff)
Commit 0b3d6e6f2dd0a7b697b1aa8c167265908940624b by torvalds
mm: writeback: use exact memcg dirty counts
Since commit a983b5ebee57 ("mm: memcontrol: fix excessive complexity in
memory.stat reporting") memcg dirty and writeback counters are managed
as:
1) per-memcg per-cpu values in range of [-32..32]
2) per-memcg atomic counter
When a per-cpu counter cannot fit in [-32..32] it's flushed to the
atomic.  Stat readers only check the atomic.  Thus readers such as
balance_dirty_pages() may see a nontrivial error margin: 32 pages per
cpu.
Assuming 100 cpus:
  4k x86 page_size:  13 MiB error per memcg
64k ppc page_size: 200 MiB error per memcg
Considering that dirty+writeback are used together for some decisions
the errors double.
This inaccuracy can lead to undeserved oom kills.  One nasty case is
when all per-cpu counters hold positive values offsetting an atomic
negative value (i.e.  per_cpu[*]=32, atomic=n_cpu*-32).
balance_dirty_pages() only consults the atomic and does not consider
throttling the next n_cpu*32 dirty pages.  If the file_lru is in the
13..200 MiB range then there's absolutely no dirty throttling, which
burdens vmscan with only dirty+writeback pages thus resorting to oom
kill.
It could be argued that tiny containers are not supported, but it's more
subtle.  It's the amount the space available for file lru that matters.
If a container has memory.max-200MiB of non reclaimable memory, then it
will also suffer such oom kills on a 100 cpu machine.
The following test reliably ooms without this patch.  This patch avoids
oom kills.
  $ cat test
mount -t cgroup2 none /dev/cgroup
cd /dev/cgroup
echo +io +memory > cgroup.subtree_control
mkdir test
cd test
echo 10M > memory.max
(echo $BASHPID > cgroup.procs && exec /memcg-writeback-stress /foo)
(echo $BASHPID > cgroup.procs && exec dd if=/dev/zero of=/foo bs=2M
count=100)
  $ cat memcg-writeback-stress.c
/*
  * Dirty pages from all but one cpu.
  * Clean pages from the non dirtying cpu.
  * This is to stress per cpu counter imbalance.
  * On a 100 cpu machine:
  * - per memcg per cpu dirty count is 32 pages for each of 99 cpus
  * - per memcg atomic is -99*32 pages
  * - thus the complete dirty limit: sum of all counters 0
  * - balance_dirty_pages() only sees atomic count -99*32 pages, which
  *   it max()s to 0.
  * - So a workload can dirty -99*32 pages before balance_dirty_pages()
  *   cares.
  */
#define _GNU_SOURCE
#include <err.h>
#include <fcntl.h>
#include <sched.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <sys/sysinfo.h>
#include <sys/types.h>
#include <unistd.h>
  static char *buf;
static int bufSize;
  static void set_affinity(int cpu)
{
cpu_set_t affinity;
  CPU_ZERO(&affinity);
CPU_SET(cpu, &affinity);
if (sched_setaffinity(0, sizeof(affinity), &affinity))
err(1, "sched_setaffinity");
}
  static void dirty_on(int output_fd, int cpu)
{
int i, wrote;
  set_affinity(cpu);
for (i = 0; i < 32; i++) {
for (wrote = 0; wrote < bufSize; ) {
int ret = write(output_fd, buf+wrote,
bufSize-wrote);
if (ret == -1)
err(1, "write");
wrote += ret;
}
}
}
  int main(int argc, char **argv)
{
int cpu, flush_cpu = 1, output_fd;
const char *output;
  if (argc != 2)
errx(1, "usage: output_file");
  output = argv[1];
bufSize = getpagesize();
buf = malloc(getpagesize());
if (buf == NULL)
errx(1, "malloc failed");
  output_fd = open(output, O_CREAT|O_RDWR);
if (output_fd == -1)
err(1, "open(%s)", output);
  for (cpu = 0; cpu < get_nprocs(); cpu++) {
if (cpu != flush_cpu)
dirty_on(output_fd, cpu);
}
  set_affinity(flush_cpu);
if (fsync(output_fd))
err(1, "fsync(%s)", output);
if (close(output_fd))
err(1, "close(%s)", output);
free(buf);
}
Make balance_dirty_pages() and wb_over_bg_thresh() work harder to
collect exact per memcg counters.  This avoids the aforementioned oom
kills.
This does not affect the overhead of memory.stat, which still reads the
single atomic counter.
Why not use percpu_counter? memcg already handles cpus going offline, so
no need for that overhead from percpu_counter.  And the percpu_counter
spinlocks are more heavyweight than is required.
It probably also makes sense to use exact dirty and writeback counters
in memcg oom reports.  But that is saved for later.
Link:
http://lkml.kernel.org/r/20190329174609.164344-1-gthelen@google.com
Signed-off-by: Greg Thelen <gthelen@google.com> Reviewed-by: Roman
Gushchin <guro@fb.com> Acked-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org> Cc: Vladimir Davydov
<vdavydov.dev@gmail.com> Cc: Tejun Heo <tj@kernel.org> Cc:
<stable@vger.kernel.org> [4.16+] Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/memcontrol.c (diff)
The file was modifiedinclude/linux/memcontrol.h (diff)
Commit 166dbd930c99f640fa8a9beead7b9f5f5b016fa0 by torvalds
MAINTAINERS: fix bad pattern in ARM/NUVOTON NPCM
In the process of upstreaming architecture support for ARM/NUVOTON NPCM
include/dt-bindings/clock/nuvoton,npcm7xx-clks.h was renamed
include/dt-bindings/clock/nuvoton,npcm7xx-clock.h without updating
MAINTAINERS.  This updates the MAINTAINERS pattern to match the new name
of this file.
Link:
http://lkml.kernel.org/r/20190328235752.334462-1-tmaimon77@gmail.com
Fixes: 6a498e06ba22 ("MAINTAINERS: Add entry for the Nuvoton NPCM
architecture") Signed-off-by: Brendan Higgins
<brendanhiggins@google.com> Signed-off-by: Tomer Maimon
<tmaimon77@gmail.com> Reported-by: Joe Perches <joe@perches.com>
Reviewed-by: Benjamin Fair <benjaminfair@google.com> Cc: Avi Fishman
<avifishman70@gmail.com> Cc: Mukesh Ojha <mojha@codeaurora.org> Cc:
Nancy Yuen <yuenn@google.com> Cc: Patrick Venture <venture@google.com>
Cc: Tali Perry <tali.perry1@gmail.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedMAINTAINERS (diff)
Commit 803cfadcb6c5518ebb5a9a398d56b9418ad65585 by torvalds
MAINTAINERS: add maintainer and replacing reviewer ARM/NUVOTON NPCM
Add Tali Perry as Nuvoton NPCM maintainer, replace Brendan Higgins
Nuvoton NPCM reviewer with Benjamin Fair.
Link:
http://lkml.kernel.org/r/20190328235752.334462-2-tmaimon77@gmail.com
Signed-off-by: Tomer Maimon <tmaimon77@gmail.com> Reviewed-by: Brendan
Higgins <brendanhiggins@google.com> Reviewed-by: Benjamin Fair
<benjaminfair@google.com> Reviewed-by: Mukesh Ojha
<mojha@codeaurora.org> Cc: Joe Perches <joe@perches.com> Cc: Avi Fishman
<avifishman70@gmail.com> Cc: Patrick Venture <venture@google.com> Cc:
Nancy Yuen <yuenn@google.com> Cc: Tali Perry <tali.perry1@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedMAINTAINERS (diff)
Commit acaf892ecbf5be7710ae05a61fd43c668f68ad95 by torvalds
sh: fix multiple function definition build errors
Many of the sh CPU-types have their own plat_irq_setup() and
arch_init_clk_ops() functions, so these same (empty) functions in
arch/sh/boards/of-generic.c are not needed and cause build errors.
If there is some case where these empty functions are needed, they can
be retained by marking them as "__weak" while at the same time making
builds that do not need them succeed.
Fixes these build errors:
arch/sh/boards/of-generic.o: In function `plat_irq_setup':
(.init.text+0x134): multiple definition of `plat_irq_setup'
arch/sh/kernel/cpu/sh2/setup-sh7619.o:(.init.text+0x30): first defined
here arch/sh/boards/of-generic.o: In function `arch_init_clk_ops':
(.init.text+0x118): multiple definition of `arch_init_clk_ops'
arch/sh/kernel/cpu/sh2/clock-sh7619.o:(.init.text+0x0): first defined
here
Link:
http://lkml.kernel.org/r/9ee4e0c5-f100-86a2-bd4d-1d3287ceab31@infradead.org
Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Reported-by: kbuild
test robot <lkp@intel.com> Cc: Takashi Iwai <tiwai@suse.de> Cc:
Yoshinori Sato <ysato@users.sourceforge.jp> Cc: Rich Felker
<dalias@libc.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedarch/sh/boards/of-generic.c (diff)
Commit e91455217d8c7b128c158432869f6e697283f3ec by torvalds
mm/util.c: fix strndup_user() comment
The kerneldoc misdescribes strndup_user()'s return value.
Cc: Dan Carpenter <dan.carpenter@oracle.com> Cc: Timur Tabi
<timur@freescale.com> Cc: Mihai Caraman <mihai.caraman@freescale.com>
Cc: Kumar Gala <galak@kernel.crashing.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/util.c (diff)
Commit 9002b21465fa4d829edfc94a5a441005cffaa972 by torvalds
kernel/sysctl.c: fix out-of-bounds access when setting file-max
Commit 32a5ad9c2285 ("sysctl: handle overflow for file-max") hooked up
min/max values for the file-max sysctl parameter via the .extra1 and
.extra2 fields in the corresponding struct ctl_table entry.
Unfortunately, the minimum value points at the global 'zero' variable,
which is an int.  This results in a KASAN splat when accessed as a long
by proc_doulongvec_minmax on 64-bit architectures:
  | BUG: KASAN: global-out-of-bounds in
__do_proc_doulongvec_minmax+0x5d8/0x6a0
| Read of size 8 at addr ffff2000133d1c20 by task systemd/1
|
| CPU: 0 PID: 1 Comm: systemd Not tainted 5.1.0-rc3-00012-g40b114779944
#2
| Hardware name: linux,dummy-virt (DT)
| Call trace:
|  dump_backtrace+0x0/0x228
|  show_stack+0x14/0x20
|  dump_stack+0xe8/0x124
|  print_address_description+0x60/0x258
|  kasan_report+0x140/0x1a0
|  __asan_report_load8_noabort+0x18/0x20
|  __do_proc_doulongvec_minmax+0x5d8/0x6a0
|  proc_doulongvec_minmax+0x4c/0x78
|  proc_sys_call_handler.isra.19+0x144/0x1d8
|  proc_sys_write+0x34/0x58
|  __vfs_write+0x54/0xe8
|  vfs_write+0x124/0x3c0
|  ksys_write+0xbc/0x168
|  __arm64_sys_write+0x68/0x98
|  el0_svc_common+0x100/0x258
|  el0_svc_handler+0x48/0xc0
|  el0_svc+0x8/0xc
|
| The buggy address belongs to the variable:
|  zero+0x0/0x40
|
| Memory state around the buggy address:
|  ffff2000133d1b00: 00 00 00 00 00 00 00 00 fa fa fa fa 04 fa fa fa
|  ffff2000133d1b80: fa fa fa fa 04 fa fa fa fa fa fa fa 04 fa fa fa
| >ffff2000133d1c00: fa fa fa fa 04 fa fa fa fa fa fa fa 00 00 00 00
|                                ^
|  ffff2000133d1c80: fa fa fa fa 00 fa fa fa fa fa fa fa 00 00 00 00
|  ffff2000133d1d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Fix the splat by introducing a unsigned long 'zero_ul' and using that
instead.
Link:
http://lkml.kernel.org/r/20190403153409.17307-1-will.deacon@arm.com
Fixes: 32a5ad9c2285 ("sysctl: handle overflow for file-max")
Signed-off-by: Will Deacon <will.deacon@arm.com> Acked-by: Christian
Brauner <christian@brauner.io> Cc: Kees Cook <keescook@chromium.org> Cc:
Alexey Dobriyan <adobriyan@gmail.com> Cc: Matteo Croce
<mcroce@redhat.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedkernel/sysctl.c (diff)
Commit 5b77e95dd7790ff6c8fbf1cd8d0104ebed818a03 by mingo
x86/asm: Use stricter assembly constraints in bitops
There's a number of problems with how arch/x86/include/asm/bitops.h is
currently using assembly constraints for the memory region bitops are
modifying:
1) Use memory clobber in bitops that touch arbitrary memory
Certain bit operations that read/write bits take a base pointer and an
arbitrarily large offset to address the bit relative to that base.
Inline assembly constraints aren't expressive enough to tell the
compiler that the assembly directive is going to touch a specific memory
location of unknown size, therefore we have to use the "memory" clobber
to indicate that the assembly is going to access memory locations other
than those listed in the inputs/outputs.
To indicate that BTR/BTS instructions don't necessarily touch the first
sizeof(long) bytes of the argument, we also move the address to assembly
inputs.
This particular change leads to size increase of 124 kernel functions in
a defconfig build. For some of them the diff is in NOP operations, other
end up re-reading values from memory and may potentially slow down the
execution. But without these clobbers the compiler is free to cache the
contents of the bitmaps and use them as if they weren't changed by the
inline assembly.
2) Use byte-sized arguments for operations touching single bytes.
Passing a long value to ANDB/ORB/XORB instructions makes the compiler
treat sizeof(long) bytes as being clobbered, which isn't the case. This
may theoretically lead to worse code in the case of heavy optimization.
Practical impact:
I've built a defconfig kernel and looked through some of the functions
generated by GCC 7.3.0 with and without this clobber, and didn't spot
any miscompilations.
However there is a (trivial) theoretical case where this code leads to
miscompilation:
  https://lkml.org/lkml/2019/3/28/393
using just GCC 8.3.0 with -O2.  It isn't hard to imagine someone writes
such a function in the kernel someday.
So the primary motivation is to fix an existing misuse of the asm
directive, which happens to work in certain configurations now, but
isn't guaranteed to work under different circumstances.
[ --mingo: Added -stable tag because defconfig only builds a fraction
of the kernel and the trivial testcase looks normal enough to
be used in existing or in-development code. ]
Signed-off-by: Alexander Potapenko <glider@google.com> Cc:
<stable@vger.kernel.org> Cc: Andy Lutomirski <luto@kernel.org> Cc:
Borislav Petkov <bp@alien8.de> Cc: Brian Gerst <brgerst@gmail.com> Cc:
Denys Vlasenko <dvlasenk@redhat.com> Cc: Dmitry Vyukov
<dvyukov@google.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc: James Y
Knight <jyknight@google.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Paul E. McKenney
<paulmck@linux.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
Thomas Gleixner <tglx@linutronix.de> Link:
http://lkml.kernel.org/r/20190402112813.193378-1-glider@google.com
[ Edited the changelog, tidied up one of the defines. ] Signed-off-by:
Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/include/asm/bitops.h (diff)
Commit 3ace6891ce8bb9e1267358cb58f93b4fd8b72b69 by wsa
i2c: imx: don't leak the i2c adapter on error
Make sure to free the i2c adapter on the error exit path.
Signed-off-by: Laurentiu Tudor <laurentiu.tudor@nxp.com> Reviewed-by:
Mukesh Ojha <mojha@codeaurora.org> Reviewed-by: Uwe Kleine-König
<u.kleine-koenig@pengutronix.de> Fixes: e1ab9a468e3b ("i2c: imx: improve
the error handling in i2c_imx_dma_request()") Signed-off-by: Wolfram
Sang <wsa@the-dreams.de>
The file was modifieddrivers/i2c/busses/i2c-imx.c (diff)
Commit 7ff684a683d777c4956fce93e60accbab2bd7696 by axboe
null_blk: prevent crash from bad home_node value
At module load, if the selected home_node value is greater than the
available numa nodes, the system will crash in
__alloc_pages_nodemask() due to a bad paging request.  Prevent this user
error crash by detecting the bad value, logging an error, and setting
g_home_node back to the default of NUMA_NO_NODE.
Signed-off-by: John Pittman <jpittman@redhat.com> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifieddrivers/block/null_blk_main.c (diff)
Commit 47b16820c490149c2923e8474048f2c6e7557cab by axboe
xsysace: Fix error handling in ace_setup
If xace hardware reports a bad version number, the error handling code
in ace_setup() calls put_disk(), followed by queue cleanup. However,
since the disk data structure has the queue pointer set, put_disk() also
cleans and releases the queue. This results in blk_cleanup_queue()
accessing an already released data structure, which in turn may result
in a crash such as the following.
[   10.681671] BUG: Kernel NULL pointer dereference at 0x00000040
[   10.681826] Faulting instruction address: 0xc0431480
[   10.682072] Oops: Kernel access of bad area, sig: 11 [#1]
[   10.682251] BE PAGE_SIZE=4K PREEMPT Xilinx Virtex440
[   10.682387] Modules linked in:
[   10.682528] CPU: 0 PID: 1 Comm: swapper Tainted: G        W       
5.0.0-rc6-next-20190218+ #2
[   10.682733] NIP:  c0431480 LR: c043147c CTR: c0422ad8
[   10.682863] REGS: cf82fbe0 TRAP: 0300   Tainted: G        W        
(5.0.0-rc6-next-20190218+)
[   10.683065] MSR:  00029000 <CE,EE,ME>  CR: 22000222  XER: 00000000
[   10.683236] DEAR: 00000040 ESR: 00000000
[   10.683236] GPR00: c043147c cf82fc90 cf82ccc0 00000000 00000000
00000000 00000002 00000000
[   10.683236] GPR08: 00000000 00000000 c04310bc 00000000 22000222
00000000 c0002c54 00000000
[   10.683236] GPR16: 00000000 00000001 c09aa39c c09021b0 c09021dc
00000007 c0a68c08 00000000
[   10.683236] GPR24: 00000001 ced6d400 ced6dcf0 c0815d9c 00000000
00000000 00000000 cedf0800
[   10.684331] NIP [c0431480] blk_mq_run_hw_queue+0x28/0x114
[   10.684473] LR [c043147c] blk_mq_run_hw_queue+0x24/0x114
[   10.684602] Call Trace:
[   10.684671] [cf82fc90] [c043147c] blk_mq_run_hw_queue+0x24/0x114
(unreliable)
[   10.684854] [cf82fcc0] [c04315bc] blk_mq_run_hw_queues+0x50/0x7c
[   10.685002] [cf82fce0] [c0422b24] blk_set_queue_dying+0x30/0x68
[   10.685154] [cf82fcf0] [c0423ec0] blk_cleanup_queue+0x34/0x14c
[   10.685306] [cf82fd10] [c054d73c] ace_probe+0x3dc/0x508
[   10.685445] [cf82fd50] [c052d740] platform_drv_probe+0x4c/0xb8
[   10.685592] [cf82fd70] [c052abb0] really_probe+0x20c/0x32c
[   10.685728] [cf82fda0] [c052ae58] driver_probe_device+0x68/0x464
[   10.685877] [cf82fdc0] [c052b500] device_driver_attach+0xb4/0xe4
[   10.686024] [cf82fde0] [c052b5dc] __driver_attach+0xac/0xfc
[   10.686161] [cf82fe00] [c0528428] bus_for_each_dev+0x80/0xc0
[   10.686314] [cf82fe30] [c0529b3c] bus_add_driver+0x144/0x234
[   10.686457] [cf82fe50] [c052c46c] driver_register+0x88/0x15c
[   10.686610] [cf82fe60] [c09de288] ace_init+0x4c/0xac
[   10.686742] [cf82fe80] [c0002730] do_one_initcall+0xac/0x330
[   10.686888] [cf82fee0] [c09aafd0] kernel_init_freeable+0x34c/0x478
[   10.687043] [cf82ff30] [c0002c6c] kernel_init+0x18/0x114
[   10.687188] [cf82ff40] [c000f2f0] ret_from_kernel_thread+0x14/0x1c
[   10.687349] Instruction dump:
[   10.687435] 3863ffd4 4bfffd70 9421ffd0 7c0802a6 93c10028 7c9e2378
93e1002c 38810008
[   10.687637] 7c7f1b78 90010034 4bfffc25 813f008c <81290040> 75290100
4182002c 80810008
[   10.688056] ---[ end trace 13c9ff51d41b9d40 ]---
Fix the problem by setting the disk queue pointer to NULL before calling
put_disk(). A more comprehensive fix might be to rearrange the code to
check the hardware version before initializing data structures, but I
don't know if this would have undesirable side effects, and it would
increase the complexity of backporting the fix to older kernels.
Fixes: 74489a91dd43a ("Add support for Xilinx SystemACE CompactFlash
interface") Acked-by: Michal Simek <michal.simek@xilinx.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifieddrivers/block/xsysace.c (diff)
Commit 10dce8af34226d90fa56746a934f8da5dcdba3df by torvalds
fs: stream_open - opener for stream-like files so that read and write
can run simultaneously without deadlock
Commit 9c225f2655e3 ("vfs: atomic f_pos accesses as per POSIX") added
locking for file.f_pos access and in particular made concurrent read and
write not possible - now both those functions take f_pos lock for the
whole run, and so if e.g. a read is blocked waiting for data, write will
deadlock waiting for that read to complete.
This caused regression for stream-like files where previously read and
write could run simultaneously, but after that patch could not do so
anymore. See e.g. commit 581d21a2d02a ("xenbus: fix deadlock on writes
to /proc/xen/xenbus") which fixes such regression for particular case of
/proc/xen/xenbus.
The patch that added f_pos lock in 2014 did so to guarantee POSIX thread
safety for read/write/lseek and added the locking to file descriptors of
all regular files. In 2014 that thread-safety problem was not new as it
was already discussed earlier in 2006.
However even though 2006'th version of Linus's patch was adding f_pos
locking "only for files that are marked seekable with FMODE_LSEEK (thus
avoiding the stream-like objects like pipes and sockets)", the 2014
version - the one that actually made it into the tree as 9c225f2655e3 -
is doing so irregardless of whether a file is seekable or not.
See
    https://lore.kernel.org/lkml/53022DB1.4070805@gmail.com/
   https://lwn.net/Articles/180387
   https://lwn.net/Articles/180396
for historic context.
The reason that it did so is, probably, that there are many files that
are marked non-seekable, but e.g. their read implementation actually
depends on knowing current position to correctly handle the read. Some
examples:
kernel/power/user.c snapshot_read
fs/debugfs/file.c u32_array_read
fs/fuse/control.c fuse_conn_waiting_read + ...
drivers/hwmon/asus_atk0110.c atk_debugfs_ggrp_read
arch/s390/hypfs/inode.c hypfs_read_iter
...
Despite that, many nonseekable_open users implement read and write with
pure stream semantics - they don't depend on passed ppos at all. And for
those cases where read could wait for something inside, it creates a
situation similar to xenbus - the write could be never made to go until
read is done, and read is waiting for some, potentially external, event,
for potentially unbounded time -> deadlock.
Besides xenbus, there are 14 such places in the kernel that I've found
with semantic patch (see below):
drivers/xen/evtchn.c:667:8-24: ERROR: evtchn_fops: .read() can
deadlock .write()
drivers/isdn/capi/capi.c:963:8-24: ERROR: capi_fops: .read() can
deadlock .write()
drivers/input/evdev.c:527:1-17: ERROR: evdev_fops: .read() can deadlock
.write()
drivers/char/pcmcia/cm4000_cs.c:1685:7-23: ERROR: cm4000_fops: .read()
can deadlock .write()
net/rfkill/core.c:1146:8-24: ERROR: rfkill_fops: .read() can deadlock
.write()
drivers/s390/char/fs3270.c:488:1-17: ERROR: fs3270_fops: .read() can
deadlock .write()
drivers/usb/misc/ldusb.c:310:1-17: ERROR: ld_usb_fops: .read() can
deadlock .write()
drivers/hid/uhid.c:635:1-17: ERROR: uhid_fops: .read() can deadlock
.write()
net/batman-adv/icmp_socket.c:80:1-17: ERROR: batadv_fops: .read() can
deadlock .write()
drivers/media/rc/lirc_dev.c:198:1-17: ERROR: lirc_fops: .read() can
deadlock .write()
drivers/leds/uleds.c:77:1-17: ERROR: uleds_fops: .read() can deadlock
.write()
drivers/input/misc/uinput.c:400:1-17: ERROR: uinput_fops: .read() can
deadlock .write()
drivers/infiniband/core/user_mad.c:985:7-23: ERROR: umad_fops: .read()
can deadlock .write()
drivers/gnss/core.c:45:1-17: ERROR: gnss_fops: .read() can deadlock
.write()
In addition to the cases above another regression caused by f_pos
locking is that now FUSE filesystems that implement open with
FOPEN_NONSEEKABLE flag, can no longer implement bidirectional
stream-like files - for the same reason as above e.g. read can deadlock
write locking on file.f_pos in the kernel.
FUSE's FOPEN_NONSEEKABLE was added in 2008 in a7c1b990f715 ("fuse:
implement nonseekable open") to support OSSPD. OSSPD implements /dev/dsp
in userspace with FOPEN_NONSEEKABLE flag, with corresponding read and
write routines not depending on current position at all, and with both
read and write being potentially blocking operations:
See
    https://github.com/libfuse/osspd
   https://lwn.net/Articles/308445
    https://github.com/libfuse/osspd/blob/14a9cff0/osspd.c#L1406
   https://github.com/libfuse/osspd/blob/14a9cff0/osspd.c#L1438-L1477
   https://github.com/libfuse/osspd/blob/14a9cff0/osspd.c#L1479-L1510
Corresponding libfuse example/test also describes FOPEN_NONSEEKABLE as
"somewhat pipe-like files ..." with read handler not using offset.
However that test implements only read without write and cannot exercise
the deadlock scenario:
  
https://github.com/libfuse/libfuse/blob/fuse-3.4.2-3-ga1bff7d/example/poll.c#L124-L131
 
https://github.com/libfuse/libfuse/blob/fuse-3.4.2-3-ga1bff7d/example/poll.c#L146-L163
 
https://github.com/libfuse/libfuse/blob/fuse-3.4.2-3-ga1bff7d/example/poll.c#L209-L216
I've actually hit the read vs write deadlock for real while implementing
my FUSE filesystem where there is /head/watch file, for which open
creates separate bidirectional socket-like stream in between filesystem
and its user with both read and write being later performed
simultaneously. And there it is semantically not easy to split the
stream into two separate read-only and write-only channels:
  
https://lab.nexedi.com/kirr/wendelin.core/blob/f13aa600/wcfs/wcfs.go#L88-169
Let's fix this regression. The plan is:
1. We can't change nonseekable_open to include &~FMODE_ATOMIC_POS -
  doing so would break many in-kernel nonseekable_open users which
  actually use ppos in read/write handlers.
2. Add stream_open() to kernel to open stream-like non-seekable file
  descriptors. Read and write on such file descriptors would never use
  nor change ppos. And with that property on stream-like files read and
  write will be running without taking f_pos lock - i.e. read and write
  could be running simultaneously.
3. With semantic patch search and convert to stream_open all in-kernel
  nonseekable_open users for which read and write actually do not
  depend on ppos and where there is no other methods in file_operations
  which assume @offset access.
4. Add FOPEN_STREAM to fs/fuse/ and open in-kernel file-descriptors via
  steam_open if that bit is present in filesystem open reply.
   It was tempting to change fs/fuse/ open handler to use stream_open
  instead of nonseekable_open on just FOPEN_NONSEEKABLE flags, but
  grepping through Debian codesearch shows users of FOPEN_NONSEEKABLE,
  and in particular GVFS which actually uses offset in its read and
  write handlers
https://codesearch.debian.net/search?q=-%3Enonseekable+%3D
https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1080
https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1247-1346
https://gitlab.gnome.org/GNOME/gvfs/blob/1.40.0-6-gcbc54396/client/gvfsfusedaemon.c#L1399-1481
   so if we would do such a change it will break a real user.
5. Add stream_open and FOPEN_STREAM handling to stable kernels starting
  from v3.14+ (the kernel where 9c225f2655 first appeared).
   This will allow to patch OSSPD and other FUSE filesystems that
  provide stream-like files to return FOPEN_STREAM | FOPEN_NONSEEKABLE
  in their open handler and this way avoid the deadlock on all kernel
  versions. This should work because fs/fuse/ ignores unknown open
  flags returned from a filesystem and so passing FOPEN_STREAM to a
  kernel that is not aware of this flag cannot hurt. In turn the kernel
  that is not aware of FOPEN_STREAM will be < v3.14 where just
  FOPEN_NONSEEKABLE is sufficient to implement streams without read vs
  write deadlock.
This patch adds stream_open, converts /proc/xen/xenbus to it and adds
semantic patch to automatically locate in-kernel places that are either
required to be converted due to read vs write deadlock, or that are just
safe to be converted because read and write do not use ppos and there
are no other funky methods in file_operations.
Regarding semantic patch I've verified each generated change manually -
that it is correct to convert - and each other nonseekable_open instance
left - that it is either not correct to convert there, or that it is not
converted due to current stream_open.cocci limitations.
The script also does not convert files that should be valid to convert,
but that currently have .llseek = noop_llseek or generic_file_llseek for
unknown reason despite file being opened with nonseekable_open (e.g.
drivers/input/mousedev.c)
Cc: Michael Kerrisk <mtk.manpages@gmail.com> Cc: Yongzhi Pan
<panyongzhi@gmail.com> Cc: Jonathan Corbet <corbet@lwn.net> Cc: David
Vrabel <david.vrabel@citrix.com> Cc: Juergen Gross <jgross@suse.com> Cc:
Miklos Szeredi <miklos@szeredi.hu> Cc: Tejun Heo <tj@kernel.org> Cc:
Kirill Tkhai <ktkhai@virtuozzo.com> Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Christoph Hellwig <hch@lst.de> Cc: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: Julia Lawall <Julia.Lawall@lip6.fr> Cc:
Nikolaus Rath <Nikolaus@rath.org> Cc: Han-Wen Nienhuys
<hanwen@google.com> Signed-off-by: Kirill Smelkov <kirr@nexedi.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedinclude/linux/fs.h (diff)
The file was modifiedfs/open.c (diff)
The file was modifieddrivers/xen/xenbus/xenbus_dev_frontend.c (diff)
The file was addedscripts/coccinelle/api/stream_open.cocci
The file was modifiedfs/read_write.c (diff)
Commit c2f8d7cb32cd95e3005bed58ce02afa686b9f357 by deller
Revert: parisc: Use F_EXTEND() macro in iosapic code
Revert parts of commit 97d7e2e3fd8a ("parisc: Use F_EXTEND() macro in
iosapic code"). It breaks booting the 32-bit kernel on some machines.
Reported-by: Sven Schnelle <svens@stackframe.org> Tested-by: Sven
Schnelle <svens@stackframe.org> Fixes: 97d7e2e3fd8a ("parisc: Use
F_EXTEND() macro in iosapic code") Signed-off-by: Helge Deller
<deller@gmx.de>
The file was modifieddrivers/parisc/iosapic.c (diff)
Commit 45efd871bf0a47648f119d1b41467f70484de5bc by deller
parisc: regs_return_value() should return gpr28
While working on kretprobes for PA-RISC I was wondering while the
kprobes sanity test always fails on kretprobes. This is caused by
returning gpr20 instead of gpr28.
Signed-off-by: Sven Schnelle <svens@stackframe.org> Signed-off-by: Helge
Deller <deller@gmx.de> Cc: stable@vger.kernel.org # 4.14+
The file was modifiedarch/parisc/include/asm/ptrace.h (diff)
Commit f324fa58327791b2696628b31480e7e21c745706 by deller
parisc: also set iaoq_b in instruction_pointer_set()
When setting the instruction pointer on PA-RISC we also need to set the
back of the instruction queue to the new offset, otherwise we will
execute on instruction from the new location, and jumping back to the
old location stored in iaoq_b.
Signed-off-by: Sven Schnelle <svens@stackframe.org> Signed-off-by: Helge
Deller <deller@gmx.de> Fixes: 75ebedf1d263 ("parisc: Add
HAVE_REGS_AND_STACK_ACCESS_API feature") Cc: stable@vger.kernel.org #
4.19+
The file was modifiedarch/parisc/include/asm/ptrace.h (diff)
Commit d006e95b5561f708d0385e9677ffe2c46f2ae345 by deller
parisc: Detect QEMU earlier in boot process
While adding LASI support to QEMU, I noticed that the QEMU detection in
the kernel happens much too late. For example, when a LASI chip is found
by the kernel, it registers the LASI LED driver as well.  But when we
run on QEMU it makes sense to avoid spending unnecessary CPU cycles, so
we need to access the running_on_QEMU flag earlier than before.
This patch now makes the QEMU detection the fist task of the Linux
kernel by moving it to where the kernel enters the C-coding.
Fixes: 310d82784fb4 ("parisc: qemu idle sleep support") Signed-off-by:
Helge Deller <deller@gmx.de> Cc: stable@vger.kernel.org # v4.14+
The file was modifiedarch/parisc/kernel/process.c (diff)
The file was modifiedarch/parisc/kernel/setup.c (diff)
Commit d7ee81ad09f072eab1681877fc71ec05f9c1ae92 by davem
NFC: nci: Add some bounds checking in nci_hci_cmd_received()
This is similar to commit 674d9de02aa7 ("NFC: Fix possible memory
corruption when handling SHDLC I-Frame commands").
I'm not totally sure, but I think that commit description may have
overstated the danger.  I was under the impression that this data came
from the firmware?  If you can't trust your networking firmware, then
you're already in trouble.
Anyway, these days we add bounds checking where ever we can and we call
it kernel hardening.  Better safe than sorry.
Fixes: 11f54f228643 ("NFC: nci: Add HCI over NCI protocol support")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/nfc/nci/hci.c (diff)
Commit 6491d698396fd5da4941980a35ca7c162a672016 by davem
nfc: nci: Potential off by one in ->pipes[] array
This is similar to commit e285d5bfb7e9 ("NFC: Fix the number of pipes")
where we changed NFC_HCI_MAX_PIPES from 127 to 128.
As the comment next to the define explains, the pipe identifier is 7
bits long.  The highest possible pipe is 127, but the number of possible
pipes is 128.  As the code is now, then there is potential for an out of
bounds array access:
    net/nfc/nci/hci.c:297 nci_hci_cmd_received() warn: array off by one?
   'ndev->hci_dev->pipes[pipe]' '0-127 == 127'
Fixes: 11f54f228643 ("NFC: nci: Add HCI over NCI protocol support")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiedinclude/net/nfc/nci_core.h (diff)
Commit dd9a994fc68d196a052b73747e3366c57d14a09e by mpe
powerpc/vdso32: fix CLOCK_MONOTONIC on PPC64
Commit b5b4453e7912 ("powerpc/vdso64: Fix CLOCK_MONOTONIC
inconsistencies across Y2038") changed the type of wtom_clock_sec to s64
on PPC64. Therefore, VDSO32 needs to read it with a 4 bytes shift in
order to retrieve the lower part of it.
Fixes: b5b4453e7912 ("powerpc/vdso64: Fix CLOCK_MONOTONIC
inconsistencies across Y2038") Reported-by: Christian Zigotzky
<chzigotzky@xenosoft.de> Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au>
The file was modifiedarch/powerpc/kernel/vdso32/gettimeofday.S (diff)
Commit 9dc6488e84b0f64df17672271664752488cd6a25 by dan.j.williams
libnvdimm/pmem: fix a possible OOB access when read and write pmem
If offset is not zero and length is bigger than PAGE_SIZE, this will
cause to out of boundary access to a page memory
Fixes: 98cc093cba1e ("block, THP: make block_device_operations.rw_page
support THP") Co-developed-by: Liang ZhiCheng <liangzhicheng@baidu.com>
Signed-off-by: Liang ZhiCheng <liangzhicheng@baidu.com> Signed-off-by:
Li RongQing <lirongqing@baidu.com> Reviewed-by: Ira Weiny
<ira.weiny@intel.com> Reviewed-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
The file was modifieddrivers/nvdimm/pmem.c (diff)
Commit ac0722f23ff5bc1b15e268564a4d56d35cd4a1b5 by olof
dt-bindings: cpu: Fix JSON schema
Commit fd73403a4862 ("dt-bindings: arm: Add SMP enable-method for
Milbeaut") added support for a new cpu enable-method, but did so using
tabulations to ident. This is however invalid in the syntax, and
resulted in a failure when trying to use that schemas for validation.
Use spaces instead of tabs to indent to fix this.
Fixes: fd73403a4862 ("dt-bindings: arm: Add SMP enable-method for
Milbeaut") Signed-off-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Rob Herring <robh@kernel.org> Acked-by: Sugaya Taichi
<sugaya.taichi@socionext.com> Signed-off-by: Olof Johansson
<olof@lixom.net>
The file was modifiedDocumentation/devicetree/bindings/arm/cpus.yaml (diff)
Commit fbe8758f931ff5468aaeb4b304fc3edb70c908d6 by olof
Revert "ARM: dts: nomadik: Fix polarity of SPI CS"
This reverts commit fa9463564e77067df81b0b8dec91adbbbc47bfb4.
Per Linus Walleij:
Dear ARM SoC maintainers,
can you please revert this patch. It was the wrong solution to the wrong
problem, and I must have acted in stress. Andrey fixed the real bug in a
proper way in these commits:
commit e5545c94e43b8f6599ffc01df8d1aedf18ee912a
"gpio: of: Check propname before applying "cs-gpios" quirks" commit
7ce40277bf848391705011ba37eac2e377cbd9e6
"gpio: of: Check for "spi-cs-high" in child instead of parent node"
Signed-off-by: Olof Johansson <olof@lixom.net>
The file was modifiedarch/arm/boot/dts/ste-nomadik-nhk15.dts (diff)
Commit cd92d74d67c811dc22544430b9ac3029f5bd64c5 by olof
ARM: orion: don't use using 64-bit DMA masks
clang warns about statically defined DMA masks from the DMA_BIT_MASK
macro with length 64:
arch/arm/plat-orion/common.c:625:29: error: shift count >= width of type
[-Werror,-Wshift-count-overflow]
               .coherent_dma_mask      = DMA_BIT_MASK(64),
                                         ^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:141:54: note: expanded from macro
'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
The ones in orion shouldn't really be 64 bit masks, so changing them to
what the driver can support avoids the warning.
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Olof
Johansson <olof@lixom.net>
The file was modifiedarch/arm/plat-orion/common.c (diff)
Commit 2125801ccce19249708ca3245d48998e70569ab8 by olof
ARM: iop: don't use using 64-bit DMA masks
clang warns about statically defined DMA masks from the DMA_BIT_MASK
macro with length 64:
arch/arm/mach-iop13xx/setup.c:303:35: error: shift count >= width of
type [-Werror,-Wshift-count-overflow]
static u64 iop13xx_adma_dmamask = DMA_BIT_MASK(64);
                                 ^~~~~~~~~~~~~~~~
include/linux/dma-mapping.h:141:54: note: expanded from macro
'DMA_BIT_MASK'
#define DMA_BIT_MASK(n) (((n) == 64) ? ~0ULL : ((1ULL<<(n))-1))
                                                     ^ ~~~
The ones in iop shouldn't really be 64 bit masks, so changing them to
what the driver can support avoids the warning.
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Olof
Johansson <olof@lixom.net>
The file was modifiedarch/arm/plat-iop/adma.c (diff)
The file was modifiedarch/arm/mach-iop13xx/setup.c (diff)
The file was modifiedarch/arm/mach-iop13xx/tpmi.c (diff)
Commit 9a8f32038a74cb800e9649afbf4b3dba2b7d6539 by olof
ARM: milbeaut: fix build with !CONFIG_HOTPLUG_CPU
When HOTPLUG_CPU is disabled, some fields in the smp operations are not
available or needed:
arch/arm/mach-milbeaut/platsmp.c:90:3: error: field designator 'cpu_die'
does not refer to any field in type
     'struct smp_operations'
       .cpu_die                = m10v_cpu_die,
        ^ arch/arm/mach-milbeaut/platsmp.c:91:3: error: field designator
'cpu_kill' does not refer to any field in type
     'struct smp_operations'
       .cpu_kill               = m10v_cpu_kill,
        ^
Hide them in an #ifdef like the other platforms do.
Fixes: 9fb29c734f9e ("ARM: milbeaut: Add basic support for Milbeaut m10v
SoC") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Olof
Johansson <olof@lixom.net>
The file was modifiedarch/arm/mach-milbeaut/platsmp.c (diff)
The file was modifiedMakefile (diff)
Commit b959ecf8f953701a19970e5db7e427c05143f303 by davem
selftests: add a tc matchall test case
This is a follow up of the commit 0db6f8befc32 ("net/sched: fix ->get
helper of the matchall cls").
To test it:
$ cd tools/testing/selftests/tc-testing
$ ln -s ../plugin-lib/nsPlugin.py plugins/20-nsPlugin.py
$ ./tdc.py -n -e 2638
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedtools/testing/selftests/tc-testing/tc-tests/filters/tests.json (diff)
Commit 196a66275520ffc27513c56ecc06a2d9450fd12f by zhenyuw
drm/i915/gvt: Annotate iomem usage
Fix the sparse warning for blithely using iomem with normal memcpy:
drivers/gpu/drm/i915/gvt/kvmgt.c:916:21: warning: incorrect type in
assignment (different address spaces)
drivers/gpu/drm/i915/gvt/kvmgt.c:916:21:    expected void *aperture_va
drivers/gpu/drm/i915/gvt/kvmgt.c:916:21:    got void [noderef] <asn:2> *
drivers/gpu/drm/i915/gvt/kvmgt.c:927:26: warning: incorrect type in
argument 1 (different address spaces)
drivers/gpu/drm/i915/gvt/kvmgt.c:927:26:    expected void [noderef]
<asn:2> *vaddr drivers/gpu/drm/i915/gvt/kvmgt.c:927:26:    got void
*aperture_va
Fixes: d480b28a41a6 ("drm/i915/gvt: Fix aperture read/write emulation
when enable x-no-mmap=on") Reviewed-by: Zhenyu Wang
<zhenyuw@linux.intel.com> Signed-off-by: Chris Wilson
<chris@chris-wilson.co.uk> Cc: Zhenyu Wang <zhenyuw@linux.intel.com> Cc:
Changbin Du <changbin.du@intel.com> Cc: Zhi Wang <zhi.a.wang@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
The file was modifieddrivers/gpu/drm/i915/gvt/kvmgt.c (diff)
Commit 968a85b19d0a79dd8ed85f39e23eacd34b503e72 by zhenyuw
drm/i915/gvt: Prevent use-after-free in ppgtt_free_all_spt()
ppgtt_free_all_spt() iterates the radixtree as it is deleting it,
forgoing all protection against the leaves being freed in the process
(leaving the iter pointing into the void).
A minimal fix seems to be to use the available post_shadow_list to
decompose the tree into a list prior to destroying the radixtree.
Alerted by the sparse warnings:
drivers/gpu/drm/i915/gvt/gtt.c:757:9: warning: incorrect type in
assignment (different address spaces)
drivers/gpu/drm/i915/gvt/gtt.c:757:9:    expected void **slot
drivers/gpu/drm/i915/gvt/gtt.c:757:9:    got void [noderef] <asn:4> **
drivers/gpu/drm/i915/gvt/gtt.c:757:9: warning: incorrect type in
assignment (different address spaces)
drivers/gpu/drm/i915/gvt/gtt.c:757:9:    expected void **slot
drivers/gpu/drm/i915/gvt/gtt.c:757:9:    got void [noderef] <asn:4> **
drivers/gpu/drm/i915/gvt/gtt.c:758:45: warning: incorrect type in
argument 1 (different address spaces)
drivers/gpu/drm/i915/gvt/gtt.c:758:45:    expected void [noderef]
<asn:4> **slot drivers/gpu/drm/i915/gvt/gtt.c:758:45:    got void **slot
drivers/gpu/drm/i915/gvt/gtt.c:757:9: warning: incorrect type in
argument 1 (different address spaces)
drivers/gpu/drm/i915/gvt/gtt.c:757:9:    expected void [noderef] <asn:4>
**slot drivers/gpu/drm/i915/gvt/gtt.c:757:9:    got void **slot
drivers/gpu/drm/i915/gvt/gtt.c:757:9: warning: incorrect type in
assignment (different address spaces)
drivers/gpu/drm/i915/gvt/gtt.c:757:9:    expected void **slot
drivers/gpu/drm/i915/gvt/gtt.c:757:9:    got void [noderef] <asn:4> **
This would also have been loudly warning if run through CI for the
invalid RCU dereferences.
Fixes: b6c126a39345 ("drm/i915/gvt: Manage shadow pages with radix
tree") Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com> Signed-off-by:
Chris Wilson <chris@chris-wilson.co.uk> Cc: Changbin Du
<changbin.du@intel.com> Cc: Zhenyu Wang <zhenyuw@linux.intel.com> Cc:
Zhi Wang <zhi.a.wang@intel.com> Signed-off-by: Zhenyu Wang
<zhenyuw@linux.intel.com>
The file was modifieddrivers/gpu/drm/i915/gvt/gtt.c (diff)
Commit fcf88917dd435c6a4cb2830cb086ee58605a1d85 by torvalds
slab: fix a crash by reading /proc/slab_allocators
The commit 510ded33e075 ("slab: implement slab_root_caches list")
changes the name of the list node within "struct kmem_cache" from "list"
to "root_caches_node", but leaks_show() still use the "list" which
causes a crash when reading /proc/slab_allocators.
You need to have CONFIG_SLAB=y and CONFIG_MEMCG=y to see the problem,
because without MEMCG all slab caches are root caches, and the "list"
node happens to be the right one.
Fixes: 510ded33e075 ("slab: implement slab_root_caches list")
Signed-off-by: Qian Cai <cai@lca.pw> Reviewed-by: Tobin C. Harding
<tobin@kernel.org> Cc: Tejun Heo <tj@kernel.org> Cc: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/slab.c (diff)
Commit 5055376a3b44c4021de8830c9157f086a97731df by davem
net: vrf: Fix ping failed when vrf mtu is set to 0
When the mtu of a vrf device is set to 0, it would cause ping failed. So
I think we should limit vrf mtu in a reasonable range to solve this
problem. I set dev->min_mtu to IPV6_MIN_MTU, so it will works for both
ipv4 and ipv6. And if dev->max_mtu still be 0 can be confusing, so I set
dev->max_mtu to ETH_MAX_MTU.
Here is the reproduce step:
1.Config vrf interface and set mtu to 0: 3: enp4s0:
<BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master vrf1
state UP mode DEFAULT group default qlen 1000
   link/ether 52:54:00:9e:dd:c1 brd ff:ff:ff:ff:ff:ff
2.Ping peer: 3: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
fq_codel master vrf1 state UP group default qlen 1000
   link/ether 52:54:00:9e:dd:c1 brd ff:ff:ff:ff:ff:ff
   inet 10.0.0.1/16 scope global enp4s0
      valid_lft forever preferred_lft forever connect: Network is
unreachable
3.Set mtu to default value, ping works: PING 10.0.0.2 (10.0.0.2) 56(84)
bytes of data. 64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=1.88 ms
Fixes: ad49bc6361ca2 ("net: vrf: remove MTU limits for vrf device")
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> Reviewed-by: David
Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/vrf.c (diff)
Commit 9b39b013037fbfa8d4b999345d9e904d8a336fc2 by airlied
drm/udl: add a release method and delay modeset teardown
If we unplug a udl device, the usb callback with deinit the mode_config
struct, however userspace will still have an open file descriptor and a
framebuffer on that device. When userspace closes the fd, we'll oops
because it'll try and look stuff up in the object idr which we've
destroyed.
This punts destroying the mode objects until release time instead.
Cc: stable@vger.kernel.org Reviewed-by: Daniel Vetter
<daniel.vetter@ffwll.ch> Signed-off-by: Dave Airlie <airlied@redhat.com>
Link:
https://patchwork.freedesktop.org/patch/msgid/20190405031715.5959-2-airlied@gmail.com
The file was modifieddrivers/gpu/drm/udl/udl_main.c (diff)
The file was modifieddrivers/gpu/drm/udl/udl_drv.c (diff)
The file was modifieddrivers/gpu/drm/udl/udl_drv.h (diff)
Commit 54f8844e3f6cf898450a6c85f70fa997f0aa72b9 by broonie
ASoC: topology: Use the correct dobj to free enum control values and
texts
The control values and texts of the enum kcontrol associated with a
widget need to be freed when the widget is removed. However, both struct
snd_soc_dapm_widget and struct soc_enum contain a dobj member, which
resulted in a confusion. The existing code generates a null pointer
dereference by attempting to free the values and texts from the dobj
which belongs to the widget instead of the dobj belonging to the enum
kcontrol.
The suggested fix is to use the correct dobj member (se->dobj) of the
enum kcontrol.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The file was modifiedsound/soc/soc-topology.c (diff)
Commit 17d3069ccf06970e2db3f7cbf4335f207524279e by broonie
ASoC: stm32: fix sai driver name initialisation
This patch fixes the sai driver structure overwriting which results in a
cpu dai name equal NULL.
Fixes: 3e086ed ("ASoC: stm32: add SAI driver")
Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@st.com> Signed-off-by:
Mark Brown <broonie@kernel.org>
The file was modifiedsound/soc/stm/stm32_sai_sub.c (diff)
Commit 678cce4019d746da6c680c48ba9e6d417803e127 by herbert
crypto: x86/poly1305 - fix overflow during partial reduction
The x86_64 implementation of Poly1305 produces the wrong result on some
inputs because poly1305_4block_avx2() incorrectly assumes that when
partially reducing the accumulator, the bits carried from limb 'd4' to
limb 'h0' fit in a 32-bit integer.  This is true for poly1305-generic
which processes only one block at a time.  However, it's not true for
the AVX2 implementation, which processes 4 blocks at a time and
therefore can produce intermediate limbs about 4x larger.
Fix it by making the relevant calculations use 64-bit arithmetic rather
than 32-bit.  Note that most of the carries already used 64-bit
arithmetic, but the d4 -> h0 carry was different for some reason.
To be safe I also made the same change to the corresponding SSE2 code,
though that only operates on 1 or 2 blocks at a time.  I don't think
it's really needed for poly1305_block_sse2(), but it doesn't hurt
because it's already x86_64 code.  It *might* be needed for
poly1305_2block_sse2(), but overflows aren't easy to reproduce there.
This bug was originally detected by my patches that improve testmgr to
fuzz algorithms against their generic implementation.  But also add a
test vector which reproduces it directly (in the AVX2 case).
Fixes: b1ccc8f4b631 ("crypto: poly1305 - Add a four block AVX2 variant
for x86_64") Fixes: c70f4abef07a ("crypto: poly1305 - Add a SSE2 SIMD
variant for x86_64") Cc: <stable@vger.kernel.org> # v4.3+ Cc: Martin
Willi <martin@strongswan.org> Cc: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Eric Biggers <ebiggers@google.com> Reviewed-by: Martin
Willi <martin@strongswan.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au>
The file was modifiedcrypto/testmgr.h (diff)
The file was modifiedarch/x86/crypto/poly1305-sse2-x86_64.S (diff)
The file was modifiedarch/x86/crypto/poly1305-avx2-x86_64.S (diff)
Commit b4ed6b51f356224c6c71540ed94087f7f09b84af by broonie
ASoC: core: conditionally increase module refcount on component open
Recently, for Intel platforms the "ignore_module_refcount" field was
introduced for the component driver. In order to avoid a deadlock
preventing the PCI modules from being removed even when the card was
idle, the refcounts were not incremented for the device driver module
during component probe.
However, this change introduced a nasty side effect: the device driver
module can be unloaded while a pcm stream is open.
This patch proposes to change the field to be renamed as
"module_get_upon_open". When this field is set, the module refcount
should be incremented on pcm open amd decremented upon pcm close. This
will enable modules to be removed when no PCM playback/capture happens
and prevent removal when the component is actually in use.
Also, align with the skylake component driver with the new name.
Fixes: b450b878('ASoC: core: don't increase component module refcount
                unconditionally' Signed-off-by: Ranjani Sridharan
<ranjani.sridharan@linux.intel.com> Acked-by: Pierre-Louis Bossart
<pierre-louis.bossart@linux.intel.com> Signed-off-by: Mark Brown
<broonie@kernel.org>
The file was modifiedsound/soc/intel/skylake/skl-pcm.c (diff)
The file was modifiedsound/soc/soc-core.c (diff)
The file was modifiedinclude/sound/soc.h (diff)
Commit 52034add758e268c39110f33d46e2a9492e82aef by broonie
ASoC: pcm: update module refcount if module_get_upon_open is set
Setting the module_get_upon_open field for component driver prevents the
module refcount from being incremented during component probe(). This
could lead to the module being allowed to be unloaded when a pcm stream
is open. So, if this field is set, the module's refcount should be
incremented during pcm open to prevent module removal when the component
is in use. And, the refcount should be decremented upon pcm close.
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The file was modifiedsound/soc/soc-pcm.c (diff)
Commit 1a07a94b47b1f528f39c3e6187b5eaf02efe44ea by maxime.ripard
drm/sun4i: tcon top: Fix NULL/invalid pointer dereference in
sun8i_tcon_top_un/bind
There are two problems here:
1. Not all clk_data->hws[] need to be initialized, depending on various
  configured quirks. This leads to NULL ptr deref in
  clk_hw_unregister_gate() in sun8i_tcon_top_unbind() 2. If there is
error when registering the clk_data->hws[],
  err_unregister_gates error path will try to unregister
  IS_ERR()=true (invalid) pointer.
For problem (1) I have this stack trace:
Unable to handle kernel NULL pointer dereference at virtual
address 0000000000000008 Call trace:
clk_hw_unregister+0x8/0x18
clk_hw_unregister_gate+0x14/0x28
sun8i_tcon_top_unbind+0x2c/0x60
component_unbind.isra.4+0x2c/0x50
component_bind_all+0x1d4/0x230
sun4i_drv_bind+0xc4/0x1a0
try_to_bring_up_master+0x164/0x1c0
__component_add+0xa0/0x168
component_add+0x10/0x18
sun8i_dw_hdmi_probe+0x18/0x20
platform_drv_probe+0x3c/0x70
really_probe+0xcc/0x278
driver_probe_device+0x34/0xa8
Problem (2) was identified by head scratching.
Signed-off-by: Ondrej Jirman <megous@megous.com> Signed-off-by: Maxime
Ripard <maxime.ripard@bootlin.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190405233048.3823-1-megous@megous.com
The file was modifieddrivers/gpu/drm/sun4i/sun8i_tcon_top.c (diff)
Commit a58d7525b8014115d57fd30186a84f6d30783f2c by johannes.berg
cfg80211: add ratelimited variants of err and warn
wiphy_{err,warn}_ratelimited will be used by rt2x00
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by:
Johannes Berg <johannes.berg@intel.com>
The file was modifiedinclude/net/cfg80211.h (diff)
Commit 45fcef8b727b6f171bc5443e8153181a367d7a15 by johannes.berg
mac80211_hwsim: calculate if_combination.max_interfaces
If we just set this to 2048, and have multiple limits you can select
from, the total number might run over and cause a warning in cfg80211.
This doesn't make sense, so we just calculate the total max_interfaces
now.
Reported-by: syzbot+8f91bd563bbff230d0ee@syzkaller.appspotmail.com
Fixes: 99e3a44bac37 ("mac80211_hwsim: allow setting iftype support")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
The file was modifieddrivers/net/wireless/mac80211_hwsim.c (diff)
Commit 2b4a66980217332d91ab1785e1750857d6d52bc8 by johannes.berg
mac80211: make ieee80211_schedule_txq schedule empty TXQs
Currently there is no way for the driver to signal to mac80211 that it
should schedule a TXQ even if there are no packets on the mac80211 part
of that queue. This is problematic if the driver has an internal retry
queue to deal with software A-MPDU retry.
This patch changes the behavior of ieee80211_schedule_txq to always
schedule the queue, as its only user (ath9k) seems to expect such
behavior already: it calls this function on tx status and on powersave
wakeup whenever its internal retry queue is not empty.
Also add an extra argument to ieee80211_return_txq to get the same
behavior.
This fixes an issue on ath9k where tx queues with packets to retry (and
no new packets in mac80211) would not get serviced.
Fixes: 89cea7493a346 ("ath9k: Switch to mac80211 TXQ scheduling and
airtime APIs") Signed-off-by: Felix Fietkau <nbd@nbd.name> Acked-by:
Toke Høiland-Jørgensen <toke@redhat.com> Signed-off-by: Johannes Berg
<johannes.berg@intel.com>
The file was modifiedinclude/net/mac80211.h (diff)
The file was modifieddrivers/net/wireless/ath/ath9k/xmit.c (diff)
The file was modifieddrivers/net/wireless/ath/ath10k/mac.c (diff)
The file was modifieddrivers/net/wireless/ath/ath10k/htt_rx.c (diff)
The file was modifiednet/mac80211/tx.c (diff)
Commit 7100e8704b61247649c50551b965e71d168df30b by mpe
powerpc/64s/radix: Fix radix segment exception handling
Commit 48e7b76957 ("powerpc/64s/hash: Convert SLB miss handlers to C")
broke the radix-mode segment exception handler. In radix mode, this is
exception is not an SLB miss, rather it signals that the EA is outside
the range translated by any page table.
The commit lost the radix feature alternate code patch, which can cause
faults to some EAs to kernel BUG at arch/powerpc/mm/slb.c:639!
The original radix code would send faults to slb_miss_large_addr, which
would end up faulting due to slb_addr_limit being 0. This patch sends
radix directly to do_bad_slb_fault, which is a bit clearer.
Fixes: 48e7b7695745 ("powerpc/64s/hash: Convert SLB miss handlers to C")
Cc: stable@vger.kernel.org # v4.20+ Reported-by: Anton Blanchard
<anton@samba.org> 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>
The file was modifiedarch/powerpc/kernel/exceptions-64s.S (diff)
Commit cae30527901d9590db0e12ace994c1d58bea87fd by tiwai
ALSA: hda - Add two more machines to the power_save_blacklist
Recently we set CONFIG_SND_HDA_POWER_SAVE_DEFAULT to 1 when configuring
the kernel, then two machines were reported to have noise after
installing the new kernel. Put them in the blacklist, the noise
disappears.
https://bugs.launchpad.net/bugs/1821663 Cc: <stable@vger.kernel.org>
Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi
Iwai <tiwai@suse.de>
The file was modifiedsound/pci/hda/hda_intel.c (diff)
Commit 6a8aae68c87349dbbcd46eac380bc43cdb98a13b by mst
virtio_pci: fix a NULL pointer reference in vp_del_vqs
If the msix_affinity_masks is alloced failed, then we'll try to free
some resources in vp_free_vectors() that may access it directly.
We met the following stack in our production:
[   29.296767] BUG: unable to handle kernel NULL pointer dereference at
(null)
[   29.311151] IP: [<ffffffffc04fe35a>] vp_free_vectors+0x6a/0x150
[virtio_pci]
[   29.324787] PGD 0
[   29.333224] Oops: 0000 [#1] SMP
[...]
[   29.425175] RIP: 0010:[<ffffffffc04fe35a>]  [<ffffffffc04fe35a>]
vp_free_vectors+0x6a/0x150 [virtio_pci]
[   29.441405] RSP: 0018:ffff9a55c2dcfa10  EFLAGS: 00010206
[   29.453491] RAX: 0000000000000000 RBX: ffff9a55c322c400 RCX:
0000000000000000
[   29.467488] RDX: 0000000000000000 RSI: 0000000000000000 RDI:
ffff9a55c322c400
[   29.481461] RBP: ffff9a55c2dcfa20 R08: 0000000000000000 R09:
ffffc1b6806ff020
[   29.495427] R10: 0000000000000e95 R11: 0000000000aaaaaa R12:
0000000000000000
[   29.509414] R13: 0000000000010000 R14: ffff9a55bd2d9e98 R15:
ffff9a55c322c400
[   29.523407] FS:  00007fdcba69f8c0(0000) GS:ffff9a55c2840000(0000)
knlGS:0000000000000000
[   29.538472] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   29.551621] CR2: 0000000000000000 CR3: 000000003ce52000 CR4:
00000000003607a0
[   29.565886] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000
[   29.580055] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400
[   29.594122] Call Trace:
[   29.603446]  [<ffffffffc04fe8a2>] vp_request_msix_vectors+0xe2/0x260
[virtio_pci]
[   29.618017]  [<ffffffffc04fedc5>] vp_try_to_find_vqs+0x95/0x3b0
[virtio_pci]
[   29.632152]  [<ffffffffc04ff117>] vp_find_vqs+0x37/0xb0 [virtio_pci]
[   29.645582]  [<ffffffffc057bf63>] init_vq+0x153/0x260 [virtio_blk]
[   29.658831]  [<ffffffffc057c1e8>] virtblk_probe+0xe8/0x87f
[virtio_blk]
[...]
Cc: Gonglei <arei.gonglei@huawei.com> Signed-off-by: Longpeng
<longpeng2@huawei.com> Signed-off-by: Michael S. Tsirkin
<mst@redhat.com> Reviewed-by: Gonglei <arei.gonglei@huawei.com>
The file was modifieddrivers/virtio/virtio_pci_common.c (diff)
Commit 5e9642a2e14cd0f5be14186681f280979bb3f3cd by mst
MAiNTAINERS: add Paolo, Stefan for virtio blk/scsi
Jason doesn't really have the time to review blk/scsi patches. Paolo and
Setfan agreed to help out.
Thanks guys!
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
The file was modifiedMAINTAINERS (diff)
Commit 1200e07f3ad4b9d976cf2fff3a0c3d9a1faecb3e by axboe
block: don't use for-inside-for in bio_for_each_segment_all
Commit 6dc4f100c175 ("block: allow bio_for_each_segment_all() to iterate
over multi-page bvec") changes bio_for_each_segment_all() to use
for-inside-for.
This way breaks all bio_for_each_segment_all() call with error out
branch via 'break', since now 'break' can only break from the inner
loop.
Fixes this issue by implementing bio_for_each_segment_all() via single
'for' loop, and now the logic is very similar with normal bvec iterator.
Cc: Qu Wenruo <quwenruo.btrfs@gmx.com> Cc: linux-btrfs@vger.kernel.org
Cc: linux-fsdevel@vger.kernel.org Cc: Omar Sandoval <osandov@fb.com>
Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de>
Reported-and-Tested-by: Qu Wenruo <quwenruo.btrfs@gmx.com> Fixes:
6dc4f100c175 ("block: allow bio_for_each_segment_all() to iterate over
multi-page bvec") Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe
<axboe@kernel.dk>
The file was modifiedinclude/linux/bvec.h (diff)
The file was modifiedinclude/linux/bio.h (diff)
Commit bd13b2b874eceb4677cd26eebdc5f45cc52fa400 by alexander.deucher
drm/amd/display: Fix negative cursor pos programming (v2)
[Why] If the cursor pos passed from DM is less than the
plane_state->dst_rect top left corner then the unsigned cursor pos wraps
around to a large positive number since cursor pos is a u32.
There was an attempt to guard against this in hubp1_cursor_set_position
by checking the src_x_offset and src_y_offset and offseting the cursor
hotspot within hubp1_cursor_set_position.
However, the cursor position itself is still being programmed
incorrectly as a large value.
This manifests itself visually as the cursor disappearing or containing
strange artifacts near the middle of the screen on raven.
[How] Don't subtract the destination rect top left corner from the pos
but add it to the hotspot instead. This happens before the pos gets
passed into hubp1_cursor_set_position.
This achieves the same result but avoids the subtraction wrap around.
With this fix the original cursor programming logic can be used again.
v2: add hunk that got dropped accidently when this patch was originally
committed. (Alex) Fixes: 0921c41e1902831 ("drm/amd/display: Fix negative
cursor pos programming")
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Charlene Liu <Charlene.Liu@amd.com> Acked-by: Leo Li
<sunpeng.li@amd.com> Acked-by: Murton Liu <Murton.Liu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/display/dc/dcn10/dcn10_hubp.c (diff)
Commit e1b7058ece718c0350ad2e5bfbdab17885bd9f39 by rodrigo.vivi
drm/i915: Fix pipe_bpp readout for BXT/GLK DSI
The only bpc information in pipe registers for BXT/GLK DSI is the
PIPEMISC dither bpc. Let's try to use that to read out pipe_bpp on these
platforms. However, I'm not sure if this will be correctly populated by
the GOP since bspec suggests it's only needed if dithering is actually
enabled. If not I guess we'll have to go one step further and extract
pipe_bpp from the DSI pixel format when dithering is disabled.
Cc: Hans de Goede <hdegoede@redhat.com> Fixes: ca0b04db14a5
("drm/i915/dsi: Fix pipe_bpp for handling for 6 bpc pixel-formats")
References: https://bugs.freedesktop.org/show_bug.cgi?id=109516
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Jani Nikula
<jani.nikula@intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190405141349.11950-1-ville.syrjala@linux.intel.com
(cherry picked from commit 499653501baf27d26e73cb5ce744869df3400509)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
The file was modifieddrivers/gpu/drm/i915/vlv_dsi.c (diff)
Commit 55c0c4c793b538fb438bcc72481b9dc2f79fe5a9 by vgupta
ARC: memset: fix build with L1_CACHE_SHIFT != 6
In case of 'L1_CACHE_SHIFT != 6' we define dummy assembly macroses
PREALLOC_INSTR and PREFETCHW_INSTR without arguments. However we pass
arguments to them in code which cause build errors. Fix that.
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com> Cc:
<stable@vger.kernel.org>    [5.0] Signed-off-by: Vineet Gupta
<vgupta@synopsys.com>
The file was modifiedarch/arc/lib/memset-archs.S (diff)
Commit 5a3ae7b314a2259b1188b22b392f5eba01e443ee by will.deacon
arm64/ftrace: fix inadvertent BUG() in trampoline check
The ftrace trampoline code (which deals with modules loaded out of BL
range of the core kernel) uses plt_entries_equal() to check whether the
per-module trampoline equals a zero buffer, to decide whether the
trampoline has already been initialized.
This triggers a BUG() in the opcode manipulation code, since we end up
checking the ADRP offset of a 0x0 opcode, which is not an ADRP
instruction.
So instead, add a helper to check whether a PLT is initialized, and call
that from the frace code.
Cc: <stable@vger.kernel.org> # v5.0 Fixes: bdb85cd1d206 ("arm64/module:
switch to ADRP/ADD sequences for PLT entries") Acked-by: Mark Rutland
<mark.rutland@arm.com> Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Will Deacon
<will.deacon@arm.com>
The file was modifiedarch/arm64/kernel/ftrace.c (diff)
The file was modifiedarch/arm64/include/asm/module.h (diff)
Commit ea7a5c706fa49273cf6d1d9def053ecb50db2076 by jgg
RDMA/vmw_pvrdma: Fix memory leak on pvrdma_pci_remove
Make sure to free the DSR on pvrdma_pci_remove() to avoid the memory
leak.
Fixes: 29c8d9eba550 ("IB: Add vmw_pvrdma driver") Signed-off-by: Kamal
Heib <kamalheib1@gmail.com> Acked-by: Adit Ranadive <aditr@vmware.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
The file was modifieddrivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c (diff)
Commit 4772e03d239484f3461e33c79d721c8ea03f7416 by jgg
RDMA/hns: Fix bug that caused srq creation to fail
Due to the incorrect use of the seg and obj information, the position of
the mtt is calculated incorrectly, and the free space of the page is not
enough to store the entire mtt, resulting in access to the next page.
This patch fixes this problem.
Unable to handle kernel paging request at virtual address
ffff00006e3cd000
...
Call trace:
hns_roce_write_mtt+0x154/0x2f0 [hns_roce]
hns_roce_buf_write_mtt+0xa8/0xd8 [hns_roce]
hns_roce_create_srq+0x74c/0x808 [hns_roce]
ib_create_srq+0x28/0xc8
Fixes: 0203b14c4f32 ("RDMA/hns: Unify the calculation for hem index in
hip08") Signed-off-by: chenglang <chenglang@huawei.com> Signed-off-by:
Lijun Ou <oulijun@huawei.com> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com>
The file was modifieddrivers/infiniband/hw/hns/hns_roce_hem.c (diff)
The file was modifieddrivers/infiniband/hw/hns/hns_roce_mr.c (diff)
Commit 2170a0d53bee1a6c1a4ebd042f99d85aafc6c0ea by dan.j.williams
tools/testing/nvdimm: Retain security state after overwrite
Overwrite retains the security state after completion of operation.  Fix
nfit_test to reflect this so that the kernel can test the behavior it is
more likely to see in practice.
Fixes: 926f74802cb1 ("tools/testing/nvdimm: Add overwrite support for
nfit_test") Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
The file was modifiedtools/testing/nvdimm/test/nfit.c (diff)
Commit 00fb67ec6b98114a887d9ef26fc7c3e566e7f665 by jgg
RDMA/hns: Bugfix for SCC hem free
The method of hem free for SCC context is different from qp context.
In the current version, if free SCC hem during the execution of qp free,
there may be smmu error as below:
arm-smmu-v3 arm-smmu-v3.1.auto: event 0x10 received:
arm-smmu-v3 arm-smmu-v3.1.auto:  0x00007d0000000010
arm-smmu-v3 arm-smmu-v3.1.auto:  0x000012000000017c
arm-smmu-v3 arm-smmu-v3.1.auto:  0x00000000000009e0
arm-smmu-v3 arm-smmu-v3.1.auto:  0x0000000000000000
As SCC context is still used by hardware after qp free, we can solve
this problem by removing SCC hem free from hns_roce_qp_free.
Fixes: 6a157f7d1b14 ("RDMA/hns: Add SCC context allocation support for
hip08") Signed-off-by: Yangyang Li <liyangyang20@huawei.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
The file was modifieddrivers/infiniband/hw/hns/hns_roce_qp.c (diff)
Commit e6abc8caa6deb14be2a206253f7e1c5e37e9515b by bfields
nfsd: Don't release the callback slot unless it was actually held
If there are multiple callbacks queued, waiting for the callback slot
when the callback gets shut down, then they all currently end up acting
as if they hold the slot, and call nfsd4_cb_sequence_done() resulting in
interesting side-effects.
In addition, the 'retry_nowait' path in nfsd4_cb_sequence_done() causes
a loop back to nfsd4_cb_prepare() without first freeing the slot, which
causes a deadlock when nfsd41_cb_get_slot() gets called a second time.
This patch therefore adds a boolean to track whether or not the callback
did pick up the slot, so that it can do the right thing in these 2
cases.
Cc: stable@vger.kernel.org Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com> Signed-off-by: J. Bruce Fields
<bfields@redhat.com>
The file was modifiedfs/nfsd/nfs4callback.c (diff)
The file was modifiedfs/nfsd/state.h (diff)
Commit 704236672edacf353c362bab70c3d3eda7bb4a51 by axboe
tools/io_uring: remove IOCQE_FLAG_CACHEHIT
This ended up not being included in the mainline version of io_uring, so
drop it from the test app as well.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedtools/io_uring/io_uring-bench.c (diff)
Commit 3ec482d15cb986bf08b923f9193eeddb3b9ca69f by axboe
io_uring: restrict IORING_SETUP_SQPOLL to root
This options spawns a kernel side thread that will poll for submissions
(and completions, if IORING_SETUP_IOPOLL is set). As this allows a user
to potentially use more cycles outside of the normal hierarchy, restrict
the use of this feature to root.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 1e6f5440a6814d28c32d347f338bfef68bc3e69d by will.deacon
arm64: backtrace: Don't bother trying to unwind the userspace stack
Calling dump_backtrace() with a pt_regs argument corresponding to
userspace doesn't make any sense and our unwinder will simply print
"Call trace:" before unwinding the stack looking for user frames.
Rather than go through this song and dance, just return early if we're
passed a user register state.
Cc: <stable@vger.kernel.org> Fixes: 1149aad10b1e ("arm64: Add
dump_backtrace() in show_regs") Reported-by: Kefeng Wang
<wangkefeng.wang@huawei.com> Signed-off-by: Will Deacon
<will.deacon@arm.com>
The file was modifiedarch/arm64/kernel/traps.c (diff)
Commit b1a6e8f9131381a92bfdacdf86ef80cca82f71d4 by davem
MAINTAINERS: ieee802154: update documentation file pattern
When moving the documentation for the ieee802154 subsystem from plain
text to rst the file pattern in the MAINTAINERS file got wrong. Updating
it here to fix scripts using this file.
Reported-by: Joe Perches <joe@perches.com> Signed-off-by: Stefan Schmidt
<stefan@datenfreihafen.org> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedMAINTAINERS (diff)
Commit cf94db21905333e610e479688add629397a4b384 by mst
virtio: Honour 'may_reduce_num' in vring_create_virtqueue
vring_create_virtqueue() allows the caller to specify via the
may_reduce_num parameter whether the vring code is allowed to allocate a
smaller ring than specified.
However, the split ring allocation code tries to allocate a smaller ring
on allocation failure regardless of what the caller specified. This may
cause trouble for e.g. virtio-pci in legacy mode, which does not support
ring resizing. (The packed ring code does not resize in any case.)
Let's fix this by bailing out immediately in the split ring code if the
requested size cannot be allocated and may_reduce_num has not been
specified.
While at it, fix a typo in the usage instructions.
Fixes: 2a2d1382fe9d ("virtio: Add improved queue allocation API") Cc:
stable@vger.kernel.org # v4.6+ Signed-off-by: Cornelia Huck
<cohuck@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Halil Pasic <pasic@linux.ibm.com> Reviewed-by: Jens
Freimann <jfreimann@redhat.com>
The file was modifiedinclude/linux/virtio_ring.h (diff)
The file was modifieddrivers/virtio/virtio_ring.c (diff)
Commit b75bb8a5b755d0c7bf1ac071e4df2349a7644a1e by davem
r8169: disable ASPM again
There's a significant number of reports that re-enabling ASPM causes
different issues, ranging from decreased performance to system not
booting at all. This affects only a minority of users, but the number of
affected users is big enough that we better switch off ASPM again.
This will hurt notebook users who are not affected by the issues, they
may see decreased battery runtime w/o ASPM. With the PCI core folks is
being discussed to add generic sysfs attributes to control ASPM. Once
this is in place brave enough users can re-enable ASPM on their system.
Fixes: a99790bf5c7f ("r8169: Reinstate ASPM Support") Signed-off-by:
Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/realtek/r8169.c (diff)
Commit e891db1a18bf11e02533ec2386b796cfd8d60666 by james.morris
tpm: turn on TPM on suspend for TPM 1.x
tpm_chip_start/stop() should be also called for TPM 1.x devices on
suspend. Add that functionality back. Do not lock the chip because it is
unnecessary as there are no multiple threads using it when doing the
suspend.
Fixes: a3fbfae82b4c ("tpm: take TPM chip power gating out of
tpm_transmit()") Reported-by: Paul Zimmerman <pauldzim@gmail.com>
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Tested-by: Domenico Andreoli <domenico.andreoli@linux.com>
Signed-off-by: James Morris <james.morris@microsoft.com>
The file was modifieddrivers/char/tpm/tpm-interface.c (diff)
Commit 7110629263469b4664d00b38ef80a656eddf3637 by james.morris
tpm: fix an invalid condition in tpm_common_poll
The poll condition should only check response_length, because reads
should only be issued if there is data to read. The response_read flag
only prevents double writes. The problem was that the write set the
response_read to false, enqued a tpm job, and returned. Then application
called poll which checked the response_read flag and returned EPOLLIN.
Then the application called read, but got nothing. After all that the
async_work kicked in. Added also mutex_lock around the poll check to
prevent other possible race conditions.
Fixes: 9488585b21bef0df12 ("tpm: add support for partial reads")
Reported-by: Mantas Mikulėnas <grawity@gmail.com> Tested-by: Mantas
Mikulėnas <grawity@gmail.com> Signed-off-by: Tadeusz Struk
<tadeusz.struk@intel.com> Reviewed-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Signed-off-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Signed-off-by: James Morris
<james.morris@microsoft.com>
The file was modifieddrivers/char/tpm/tpm-dev-common.c (diff)
Commit c78719203fc629421a0d91d3d22240c36ae0119c by james.morris
KEYS: trusted: allow trusted.ko to initialize w/o a TPM
Allow trusted.ko to initialize w/o a TPM. This commit also adds checks
to the exported functions to fail when a TPM is not available.
Fixes: 240730437deb ("KEYS: trusted: explicitly use tpm_chip
structure...") Cc: James Morris <jmorris@namei.org> Reported-by: Dan
Williams <dan.j.williams@intel.com> Tested-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Signed-off-by: James Morris
<james.morris@microsoft.com>
The file was modifiedsecurity/keys/trusted.c (diff)
Commit b9d0a85d6b2e76630cfd4c475ee3af4109bfd87a by james.morris
tpm: Fix the type of the return value in calc_tpm2_event_size()
calc_tpm2_event_size() has an invalid signature because it returns a
'size_t' where as its signature says that it returns 'int'.
Cc: <stable@vger.kernel.org> Fixes: 4d23cc323cdb ("tpm: add securityfs
support for TPM 2.0 firmware event log") Suggested-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Signed-off-by: Yue Haibing
<yuehaibing@huawei.com> Reviewed-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Signed-off-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Signed-off-by: James Morris
<james.morris@microsoft.com>
The file was modifieddrivers/char/tpm/eventlog/tpm2.c (diff)
Commit be24b37e22c20cbaa891971616784dd0f35211e8 by james.morris
KEYS: trusted: fix -Wvarags warning
Fixes the warning reported by Clang: security/keys/trusted.c:146:17:
warning: passing an object that undergoes default
     argument promotion to 'va_start' has undefined behavior [-Wvarargs]
       va_start(argp, h3);
                      ^ security/keys/trusted.c:126:37: note: parameter
of type 'unsigned char' is declared here unsigned char *h2, unsigned
char h3, ...)
                              ^ Specifically, it seems that both the C90
(4.8.1.1) and C11 (7.16.1.4) standards explicitly call this out as
undefined behavior:
The parameter parmN is the identifier of the rightmost parameter in the
variable parameter list in the function definition (the one just before
the ...). If the parameter parmN is declared with ... or with a type
that is not compatible with the type that results after application of
the default argument promotions, the behavior is undefined.
Link: https://github.com/ClangBuiltLinux/linux/issues/41 Link:
https://www.eskimo.com/~scs/cclass/int/sx11c.html Suggested-by: David
Laight <David.Laight@aculab.com> Suggested-by: Denis Kenzior
<denkenz@gmail.com> Suggested-by: James Bottomley
<jejb@linux.vnet.ibm.com> Suggested-by: Nathan Chancellor
<natechancellor@gmail.com> Signed-off-by: Nick Desaulniers
<ndesaulniers@google.com> Reviewed-by: Nathan Chancellor
<natechancellor@gmail.com> Tested-by: Nathan Chancellor
<natechancellor@gmail.com> Reviewed-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Signed-off-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Signed-off-by: James Morris
<james.morris@microsoft.com>
The file was modifiedsecurity/keys/trusted.c (diff)
The file was modifiedinclude/keys/trusted.h (diff)
Commit f1a0ba6cccff75d882204cae1f154f17620b3c4a by james.morris
selftests/tpm2: Extend tests to cover partial reads
Three new tests added: 1. Send get random cmd, read header in 1st read,
read the rest in second
  read - expect success 2. Send get random cmd, read only part of the
response, send another
  get random command, read the response - expect success 3. Send get
random cmd followed by another get random cmd, without
  reading the first response - expect the second cmd to fail with -EBUSY
Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com> Reviewed-by:
Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Tested-by: Jarkko
Sakkinen <jarkko.sakkinen@linux.intel.com> Signed-off-by: Jarkko
Sakkinen <jarkko.sakkinen@linux.intel.com> Signed-off-by: James Morris
<james.morris@microsoft.com>
The file was modifiedtools/testing/selftests/tpm2/tpm2_tests.py (diff)
The file was modifiedtools/testing/selftests/tpm2/tpm2.py (diff)
Commit 6da70580af9612accf042b37564d73e787af39b4 by james.morris
selftests/tpm2: Open tpm dev in unbuffered mode
In order to have control over how many bytes are read or written the
device needs to be opened in unbuffered mode.
Signed-off-by: Tadeusz Struk <tadeusz.struk@intel.com> Reviewed-by:
Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Tested-by: Jarkko
Sakkinen <jarkko.sakkinen@linux.intel.com> Signed-off-by: Jarkko
Sakkinen <jarkko.sakkinen@linux.intel.com> Signed-off-by: James Morris
<james.morris@microsoft.com>
The file was modifiedtools/testing/selftests/tpm2/tpm2.py (diff)
Commit 492b67e28ee5f2a2522fb72e3d3bcb990e461514 by davem
net: ip_gre: fix possible use-after-free in erspan_rcv
erspan tunnels run __iptunnel_pull_header on received skbs to remove gre
and erspan headers. This can determine a possible use-after-free
accessing pkt_md pointer in erspan_rcv since the packet will be
'uncloned' running pskb_expand_head if it is a cloned gso skb (e.g if
the packet has been sent though a veth device). Fix it resetting pkt_md
pointer after
__iptunnel_pull_header
Fixes: 1d7e2ed22f8d ("net: erspan: refactor existing erspan code")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/ip_gre.c (diff)
Commit 2a3cabae4536edbcb21d344e7aa8be7a584d2afb by davem
net: ip6_gre: fix possible use-after-free in ip6erspan_rcv
erspan_v6 tunnels run __iptunnel_pull_header on received skbs to remove
erspan header. This can determine a possible use-after-free accessing
pkt_md pointer in ip6erspan_rcv since the packet will be 'uncloned'
running pskb_expand_head if it is a cloned gso skb (e.g if the packet
has been sent though a veth device). Fix it resetting pkt_md pointer
after
__iptunnel_pull_header
Fixes: 1d7e2ed22f8d ("net: erspan: refactor existing erspan code")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv6/ip6_gre.c (diff)
Commit afe64245af9f58267e7fa8fb76ad5650ee7ec25f by davem
ethtool: avoid signed-unsigned comparison in ethtool_validate_speed()
When building C++ userspace code that includes ethtool.h with "-Werror
-Wall", g++ complains about signed-unsigned comparison in
ethtool_validate_speed() due to definition of SPEED_UNKNOWN as -1.
Explicitly cast SPEED_UNKNOWN to __u32 to match type of
ethtool_validate_speed() argument.
Signed-off-by: Michael Zhivich <mzhivich@akamai.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiedinclude/uapi/linux/ethtool.h (diff)
Commit caf2c5205d82ff0d758096a69a7e0466c38d4dbb by davem
broadcom: tg3: fix use of SPEED_UNKNOWN ethtool constant
tg3 driver uses u16 to store SPEED_UKNOWN ethtool constant, which is
defined as -1, resulting in value truncation and thus incorrect test
results against SPEED_UNKNOWN.
For example, the following test will print "False":
u16 speed = SPEED_UNKNOWN;
if (speed == SPEED_UNKNOWN)
    printf("True");
else
    printf("False");
Change storage of speed to use u32 to avoid this issue.
Signed-off-by: Michael Zhivich <mzhivich@akamai.com> Reviewed-by: Andrew
Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/tg3.c (diff)
The file was modifieddrivers/net/ethernet/broadcom/tg3.h (diff)
Commit d63da85a4226c4b5a28536a1f48d89eefd50a832 by davem
qlogic: qlcnic: fix use of SPEED_UNKNOWN ethtool constant
qlcnic driver uses u16 to store SPEED_UKNOWN ethtool constant, which is
defined as -1, resulting in value truncation and thus incorrect test
results against SPEED_UNKNOWN.
For example, the following test will print "False":
    u16 speed = SPEED_UNKNOWN;
    if (speed == SPEED_UNKNOWN)
       printf("True");
   else
       printf("False");
Change storage of speed to use u32 to avoid this issue.
Signed-off-by: Michael Zhivich <mzhivich@akamai.com> Reviewed-by: Andrew
Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/qlogic/qlcnic/qlcnic.h (diff)
Commit a62520473f15750cd1432d36b377a06cd7cff8d2 by davem
net: macb driver, check for SKBTX_HW_TSTAMP
Make sure SKBTX_HW_TSTAMP (i.e. SOF_TIMESTAMPING_TX_HARDWARE) has been
enabled for this skb. It does fix the issue where normal socks that
aren't expecting a timestamp will not wake up on select, but when a user
does want a SOF_TIMESTAMPING_TX_HARDWARE it does work.
Signed-off-by: Paul Thomas <pthomas8589@gmail.com> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cadence/macb_main.c (diff)
Commit a1b0e4e684e9c300b9e759b46cb7a0147e61ddff by davem
bnxt_en: Improve RX consumer index validity check.
There is logic to check that the RX/TPA consumer index is the expected
index to work around a hardware problem.  However, the potentially bad
consumer index is first used to index into an array to reference an
entry. This can potentially crash if the bad consumer index is beyond
legal range.  Improve the logic to use the consumer index for
dereferencing after the validity check and log an error message.
Fixes: fa7e28127a5a ("bnxt_en: Add workaround to detect bad opaque in rx
completion (part 2)") Signed-off-by: Michael Chan
<michael.chan@broadcom.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bnxt/bnxt.c (diff)
Commit 8e44e96c6c8e8fb80b84a2ca11798a8554f710f2 by davem
bnxt_en: Reset device on RX buffer errors.
If the RX completion indicates RX buffers errors, the RX ring will be
disabled by firmware and no packets will be received on that ring from
that point on.  Recover by resetting the device.
Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bnxt/bnxt.c (diff)
Commit 5c2442fd78998af60e13aba506d103f7f43f8701 by martin.petersen
scsi: csiostor: fix missing data copy in csio_scsi_err_handler()
If scsi cmd sglist is not suitable for DDP then csiostor driver uses
preallocated buffers for DDP, because of this data copy is required from
DDP buffer to scsi cmd sglist before calling ->scsi_done().
Signed-off-by: Varun Prakash <varun@chelsio.com> Signed-off-by: Martin
K. Petersen <martin.petersen@oracle.com>
The file was modifieddrivers/scsi/csiostor/csio_scsi.c (diff)
Commit bef42cb2029c0ec8cd8c9e0545589d81913dec4e by rodrigo.vivi
drm/i915: Get power refs in encoder->get_power_domains()
Push getting the reference for the encoders' power domains into the
encoder get_power_domains() hook instead of doing this from the caller.
This way the encoder can store away the corresponding wakerefs.
This fixes the DSI encoder disabling, which didn't release these power
references it acquired during HW state readout.
Note that longtime ownership for the corresponding wakerefs can be thus
acquired / released in two ways. Nevertheless there is always only one
owner for them:
After HW readout (booting/system resume):
- encoder->get_power_domains() acquires
- encoder->disable*() releases
After a modeset (calling intel_atomic_commit()):
- encoder->enable*() acquires
- encoder->disable*() releases
* can be any of the encoder enable/disable hooks.
v2:
- Check that the DSI io_wakerefs are unset both during encoder HW
readout and enabling. (Chris)
Fixes: 0e6e0be4c9523 ("drm/i915: Markup paired operations on display
power domains") Cc: Vandita Kulkarni <vandita.kulkarni@intel.com> Cc:
Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Imre Deak
<imre.deak@intel.com> Reviewed-by: Chris Wilson
<chris@chris-wilson.co.uk> Link:
https://patchwork.freedesktop.org/patch/msgid/20190407124655.31536-1-imre.deak@intel.com
(cherry picked from commit 3a52fb7e7953f0b13df8c05d0d74b56a66888f30)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
The file was modifieddrivers/gpu/drm/i915/icl_dsi.c (diff)
The file was modifieddrivers/gpu/drm/i915/intel_display.c (diff)
The file was modifieddrivers/gpu/drm/i915/intel_ddi.c (diff)
The file was modifieddrivers/gpu/drm/i915/intel_drv.h (diff)
Commit 2ae2c3316fb77dcf64275d011596b60104c45426 by ck.hu
drm/mediatek: fix possible object reference leak
The call to of_parse_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/gpu/drm/mediatek/mtk_hdmi.c:1521:2-8: ERROR: missing
of_node_put; acquired a node pointer with refcount incremented on line
1509, but without a corresponding object release within this function.
drivers/gpu/drm/mediatek/mtk_hdmi.c:1524:1-7: ERROR: missing
of_node_put; acquired a node pointer with refcount incremented on line
1509, but without a corresponding object release within this function.
Signed-off-by: Wen Yang <wen.yang99@zte.com.cn> Cc: CK Hu
<ck.hu@mediatek.com> Cc: Philipp Zabel <p.zabel@pengutronix.de> Cc:
David Airlie <airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc:
Matthias Brugger <matthias.bgg@gmail.com> Cc:
dri-devel@lists.freedesktop.org Cc: linux-arm-kernel@lists.infradead.org
Cc: linux-mediatek@lists.infradead.org Cc: linux-kernel@vger.kernel.org
Signed-off-by: CK Hu <ck.hu@mediatek.com>
The file was modifieddrivers/gpu/drm/mediatek/mtk_hdmi.c (diff)
Commit c5781ffbbd4f742a58263458145fe7f0ac01d9e0 by rafael.j.wysocki
ACPICA: Namespace: remove address node from global list after method
termination
ACPICA commit b233720031a480abd438f2e9c643080929d144c3
ASL operation_regions declare a range of addresses that it uses. In a
perfect world, the range of addresses should be used exclusively by the
AML interpreter. The OS can use this information to decide which drivers
to load so that the AML interpreter and device drivers use different
regions of memory.
During table load, the address information is added to a global address
range list. Each node in this list contains an address range as well as
a namespace node of the operation_region. This list is deleted at ACPI
shutdown.
Unfortunately, ASL operation_regions can be declared inside of control
methods. Although this is not recommended, modern firmware contains such
code. New module level code changes unintentionally removed the
functionality of adding and removing nodes to the global address range
list.
A few months ago, support for adding addresses has been re- implemented.
However, the removal of the address range list was missed and resulted
in some systems to crash due to the address list containing bogus
namespace nodes from operation_regions declared in control methods. In
order to fix the crash, this change removes dynamic operation_regions
after control method termination.
Link: https://github.com/acpica/acpica/commit/b2337200 Link:
https://bugzilla.kernel.org/show_bug.cgi?id=202475 Fixes: 4abb951b73ff
("ACPICA: AML interpreter: add region addresses in global list during
initialization") Reported-by: Michael J Gruber <mjg@fedoraproject.org>
Signed-off-by: Erik Schmauss <erik.schmauss@intel.com> Signed-off-by:
Bob Moore <robert.moore@intel.com> Cc: 4.20+ <stable@vger.kernel.org> #
4.20+ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
The file was modifieddrivers/acpi/acpica/nsobject.c (diff)
Commit 0c24613cda163dedfa229afc8eff6072e57fac8d by ck.hu
drm/mediatek: fix the rate and divder of hdmi phy for MT2701
Due to a clerical error,there is one zero less for 12800000. Fix it for
128000000 Fixes: 0fc721b2968e ("drm/mediatek: add hdmi driver for MT2701
and MT7623")
Signed-off-by: Wangyan Wang <wangyan.wang@mediatek.com> Signed-off-by:
CK Hu <ck.hu@mediatek.com>
The file was modifieddrivers/gpu/drm/mediatek/mtk_mt2701_hdmi_phy.c (diff)
Commit 321b628e6f5a3af999f75eadd373adbcb8b4cb1f by ck.hu
drm/mediatek: make implementation of recalc_rate() for MT2701 hdmi phy
Recalculate the rate of this clock, by querying hardware to make
implementation of recalc_rate() to match the definition.
Signed-off-by: Wangyan Wang <wangyan.wang@mediatek.com> Signed-off-by:
CK Hu <ck.hu@mediatek.com>
The file was modifieddrivers/gpu/drm/mediatek/mtk_mt2701_hdmi_phy.c (diff)
The file was modifieddrivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c (diff)
The file was modifieddrivers/gpu/drm/mediatek/mtk_hdmi_phy.h (diff)
The file was modifieddrivers/gpu/drm/mediatek/mtk_hdmi_phy.c (diff)
Commit 827abdd024207146822f66ba3ba74867135866b9 by ck.hu
drm/mediatek: remove flag CLK_SET_RATE_PARENT for MT2701 hdmi phy
This is the first step to make MT2701 hdmi stable. The parent rate of
hdmi phy had set by DPI driver. We should not set or change the parent
rate of MT2701 hdmi phy, as a result we should remove the flags of
"CLK_SET_RATE_PARENT" from the clock of MT2701 hdmi phy.
Signed-off-by: Wangyan Wang <wangyan.wang@mediatek.com> Signed-off-by:
CK Hu <ck.hu@mediatek.com>
The file was modifieddrivers/gpu/drm/mediatek/mtk_mt2701_hdmi_phy.c (diff)
The file was modifieddrivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c (diff)
The file was modifieddrivers/gpu/drm/mediatek/mtk_hdmi_phy.h (diff)
The file was modifieddrivers/gpu/drm/mediatek/mtk_hdmi_phy.c (diff)
Commit 8eeb3946feeb00486ac0909e2309da87db8988a5 by ck.hu
drm/mediatek: using new factor for tvdpll for MT2701 hdmi phy
This is the second step to make MT2701 HDMI stable. The factor depends
on the divider of DPI in MT2701, therefore, we should fix this factor to
the right and new one. Test: search ok
Signed-off-by: Wangyan Wang <wangyan.wang@mediatek.com> Signed-off-by:
CK Hu <ck.hu@mediatek.com>
The file was modifieddrivers/gpu/drm/mediatek/mtk_dpi.c (diff)
Commit 9ee76098a1b8ae21cccac641b735ee4d3a77bccf by ck.hu
drm/mediatek: no change parent rate in round_rate() for MT2701 hdmi phy
This is the third step to make MT2701 HDMI stable. We should not change
the rate of parent for hdmi phy when doing round_rate for this clock.
The parent clock of hdmi phy must be the same as it. We change it when
doing set_rate only.
Signed-off-by: Wangyan Wang <wangyan.wang@mediatek.com> Signed-off-by:
CK Hu <ck.hu@mediatek.com>
The file was modifieddrivers/gpu/drm/mediatek/mtk_mt2701_hdmi_phy.c (diff)
The file was modifieddrivers/gpu/drm/mediatek/mtk_hdmi_phy.h (diff)
The file was modifieddrivers/gpu/drm/mediatek/mtk_hdmi_phy.c (diff)
The file was modifieddrivers/gpu/drm/mediatek/mtk_mt8173_hdmi_phy.c (diff)
Commit 78ad2341521d5ea96cb936244ed4c4c4ef9ec13b by johannes.berg
mac80211: Honor SW_CRYPTO_CONTROL for unicast keys in AP VLAN mode
Restore SW_CRYPTO_CONTROL operation on AP_VLAN interfaces for unicast
keys, the original override was intended to be done for group keys as
those are treated specially by mac80211 and would always have been
rejected.
Now the situation is that AP_VLAN support must be enabled by the driver
if it can support it (meaning it can support software crypto GTK TX).
Thus, also simplify the code - if we get here with AP_VLAN and non-
pairwise key, software crypto must be used (driver doesn't know about
the interface) and can be used (driver must've advertised AP_VLAN if it
also uses SW_CRYPTO_CONTROL).
Fixes: db3bdcb9c3ff ("mac80211: allow AP_VLAN operation on crypto
controlled devices") Signed-off-by: Alexander Wetzel
<alexander@wetzel-home.de>
[rewrite commit message] Signed-off-by: Johannes Berg
<johannes.berg@intel.com>
The file was modifiednet/mac80211/key.c (diff)
Commit 1b937e8faa87ccfb4b7d5b230796fa67bc8a183b by palmer
RISC-V: Add separate defconfig for 32bit systems
This patch adds rv32_defconfig for 32bit systems. The only difference
between rv32_defconfig and defconfig is that rv32_defconfig has
CONFIG_ARCH_RV32I=y.
Signed-off-by: Anup Patel <anup.patel@wdc.com> Signed-off-by: Palmer
Dabbelt <palmer@sifive.com>
The file was addedarch/riscv/configs/rv32_defconfig
Commit 31634bf5dcc418b5b2cacd954394c0c4620db6a2 by saeedm
net/mlx5: FPGA, tls, hold rcu read lock a bit longer
To avoid use-after-free, hold the rcu read lock until we are done
copying flow data into the command buffer.
Fixes: ab412e1dd7db ("net/mlx5: Accel, add TLS rx offload routines")
Reported-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Saeed
Mahameed <saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c (diff)
Commit df3a8344d404a810b4aadbf19b08c8232fbaa715 by saeedm
net/mlx5: FPGA, tls, idr remove on flow delete
Flow is kfreed on mlx5_fpga_tls_del_flow but kept in the idr data
structure, this is risky and can cause use-after-free, since the
idr_remove is delayed until tls_send_teardown_cmd completion.
Instead of delaying idr_remove, in this patch we do it on
mlx5_fpga_tls_del_flow, before actually kfree(flow).
Added synchronize_rcu before kfree(flow)
Fixes: ab412e1dd7db ("net/mlx5: Accel, add TLS rx offload routines")
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/fpga/tls.c (diff)
Commit 192fba79822d9612af5ccd3f8aa05c922640ee13 by saeedm
net/mlx5e: Skip un-needed tx recover if interface state is down
Skip recover operation if interface is in down state as TX objects are
not open. This fixes a bug were the recover flow re-opened TX objects
which were not opened before, leading to a possible memory leak at
driver unload.
Fixes: de8650a82071 ("net/mlx5e: Add tx reporter support")
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com> Reviewed-by: Tariq
Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed
<saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c (diff)
Commit 484c1ada0bd2bdcb76f849ae77983e24320a2d1d by saeedm
net/mlx5e: Use fail-safe channels reopen in tx reporter recover
When requested to recover from error, the tx reporter might open new
channels and close the existing ones. Use safe channels switch flow in
order to guarantee opened channels at the end of the recover flow. For
this purpose, define mlx5e_safe_reopen_channels function and use it
within those flows.
Fixes: de8650a82071 ("net/mlx5e: Add tx reporter support")
Signed-off-by: Eran Ben Elisha <eranbe@mellanox.com> Reviewed-by: Tariq
Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed
<saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en.h (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_main.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en/reporter_tx.c (diff)
Commit 5d0bb3bac4b9f6c22280b04545626fdfd99edc6b by saeedm
net/mlx5e: XDP, Avoid checksum complete when XDP prog is loaded
XDP programs might change packets data contents which will make the
reported skb checksum (checksum complete) invalid.
When XDP programs are loaded/unloaded set/clear rx RQs
MLX5E_RQ_STATE_NO_CSUM_COMPLETE flag.
Fixes: 86994156c736 ("net/mlx5e: XDP fast RX drop bpf programs support")
Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed
Mahameed <saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_main.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_rx.c (diff)
Commit 0aa1d18615c163f92935b806dcaff9157645233a by saeedm
net/mlx5e: Rx, Fixup skb checksum for packets with tail padding
When an ethernet frame with ip payload is padded, the padding octets are
not covered by the hardware checksum.
Prior to the cited commit, skb checksum was forced to be CHECKSUM_NONE
when padding is detected. After it, the kernel will try to trim the
padding bytes and subtract their checksum from skb->csum.
In this patch we fixup skb->csum for any ip packet with tail padding of
any size, if any padding found. FCS case is just one special case of
this general purpose patch, hence, it is removed.
Fixes: 88078d98d1bb ("net: pskb_trim_rcsum() and CHECKSUM_COMPLETE are
friends"), Cc: Eric Dumazet <edumazet@google.com> Reviewed-by: Tariq
Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed
<saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_stats.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_rx.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_stats.h (diff)
Commit 0318a7b7fcad9765931146efa7ca3a034194737c by saeedm
net/mlx5e: Rx, Check ip headers sanity
In the two places is_last_ethertype_ip is being called, the caller will
be looking inside the ip header, to be safe, add ip{4,6} header sanity
check. And return true only on valid ip headers, i.e: the whole header
is contained in the linear part of the skb.
Note: Such situation is very rare and hard to reproduce, since mlx5e
allocates a large enough headroom to contain the largest header one can
imagine.
Fixes: fe1dc069990c ("net/mlx5e: don't set CHECKSUM_COMPLETE on SCTP
packets") Reported-by: Cong Wang <xiyou.wangcong@gmail.com> Reviewed-by:
Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Saeed Mahameed
<saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_rx.c (diff)
Commit 5e0060b1491b299b1706414e61ede0b02265680e by saeedm
net/mlx5e: Protect against non-uplink representor for encap
TC encap offload is supported only for the physical uplink representor.
Fail for non uplink representor.
Fixes: 3e621b19b0bb ("net/mlx5e: Support TC encapsulation offloads with
upper devices") Signed-off-by: Dmytro Linkin <dmitrolin@mellanox.com>
Reviewed-by: Eli Britstein <elibr@mellanox.com> Reviewed-by: Vlad Buslov
<vladbu@mellanox.com> Reviewed-by: Roi Dayan <roid@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c (diff)
Commit 8c8811d46d00d119ffbe039a6e52a0b504df1c2c by saeedm
Revert "net/mlx5e: Enable reporting checksum unnecessary also for L3
packets"
This reverts commit b820e6fb0978f9c2ac438c199d2bb2f35950e9c9.
Prior the commit we are reverting, checksum unnecessary was only set
when both the L3 OK and L4 OK bits are set on the CQE. This caused
packets of IP protocols such as SCTP which are not dealt by the current
HW L4 parser (hence the L4 OK bit is not set, but the L4 header type
none bit is set) to go through the checksum none code, where currently
we wrongly report checksum unnecessary for them, a regression. Fix this
by a revert.
Note that on our usual track we report checksum complete, so the revert
isn't expected to have any notable performance impact. Also, when we are
not on the checksum complete track, the L4 protocols for which we report
checksum none are not high performance ones, we will still report
checksum unnecessary for UDP/TCP.
Fixes: b820e6fb0978 ("net/mlx5e: Enable reporting checksum unnecessary
also for L3 packets") Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Reported-by: Avi Urman <aviu@mellanox.com> Reviewed-by: Tariq Toukan
<tariqt@mellanox.com> Signed-off-by: Saeed Mahameed
<saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_rx.c (diff)
Commit 7ee2ace9c544a0886e02b54b625e521df8692d20 by saeedm
net/mlx5e: Switch to Toeplitz RSS hash by default
Although XOR hash function can perform very well on some special use
cases, to align with all drivers, mlx5 driver should use Toeplitz hash
by default. Toeplitz is more stable for the general use case and it is
more standard and reliable.
On top of that, since XOR (MLX5_RX_HASH_FN_INVERTED_XOR8) gives only a
repeated 8 bits pattern. When used for udp tunneling RSS source port
manipulation it results in fixed source port, which will cause bad RSS
spread.
Fixes: 2be6967cdbc9 ("net/mlx5e: Support ETH_RSS_HASH_XOR")
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Reviewed-by: Tariq Toukan <tariqt@mellanox.com> Signed-off-by: Moshe
Shemesh <moshe@mellanox.com> Signed-off-by: Saeed Mahameed
<saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_main.c (diff)
Commit dbe7208c6c4aec083571f2ec742870a0d0edbea3 by sre
power: supply: cpcap-battery: Fix division by zero
If called fast enough so samples do not increment, we can get division
by zero in kernel:
__div0 cpcap_battery_cc_raw_div cpcap_battery_get_property
power_supply_get_property.part.1 power_supply_get_property
power_supply_show_property power_supply_uevent
Fixes: 874b2adbed12 ("power: supply: cpcap-battery: Add a battery
driver") Signed-off-by: Tony Lindgren <tony@atomide.com> Acked-by: Pavel
Machek <pavel@ucw.cz> Signed-off-by: Sebastian Reichel
<sebastian.reichel@collabora.com>
The file was modifieddrivers/power/supply/cpcap-battery.c (diff)
Commit 6ec4bae178d8a1e9814eb3bfdd321b0475de0468 by palmer
dt-bindings: clock: sifive: add FU540-C000 PRCI clock constants
Add preprocessor macros for the important PRCI output clocks that are
needed by both the FU540 PRCI driver and DT data. Details are available
in the FU540 manual in Chapter 7 of
    https://static.dev.sifive.com/FU540-C000-v1.0.pdf
Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com> Reviewed-by: Rob
Herring <robh@kernel.org> Signed-off-by: Palmer Dabbelt
<palmer@sifive.com>
The file was addedinclude/dt-bindings/clock/sifive-fu540-prci.h
Commit 771acc7e4a6e5dba779cb1a7fd851a164bc81033 by torvalds
Bluetooth: btusb: request wake pin with NOAUTOEN
Badly-designed systems might have (for example) active-high wake pins
that default to high (e.g., because of external pull ups) until they
have an active firmware which starts driving it low.  This can cause an
interrupt storm in the time between request_irq() and disable_irq().
We don't support shared interrupts here, so let's just pre-configure the
interrupt to avoid auto-enabling it.
Fixes: fd913ef7ce61 ("Bluetooth: btusb: Add out-of-band wakeup support")
Fixes: 5364a0b4f4be ("arm64: dts: rockchip: move QCA6174A wakeup pin
into its USB node") Signed-off-by: Brian Norris
<briannorris@chromium.org> Reviewed-by: Matthias Kaehlcke
<mka@chromium.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifieddrivers/bluetooth/btusb.c (diff)
Commit cf7cf6977f531acd5dfe55250d0ee8cbbb6f1ae8 by mpe
powerpc/mm: Define MAX_PHYSMEM_BITS for all 64-bit configs
The recent commit 8bc086899816 ("powerpc/mm: Only define
MAX_PHYSMEM_BITS in SPARSEMEM configurations") removed our definition of
MAX_PHYSMEM_BITS when SPARSEMEM is disabled.
This inadvertently broke some 64-bit FLATMEM using configs with eg:
  arch/powerpc/include/asm/book3s/64/mmu-hash.h:584:6: error:
"MAX_PHYSMEM_BITS" is not defined, evaluates to 0
  #if (MAX_PHYSMEM_BITS > MAX_EA_BITS_PER_CONTEXT)
       ^~~~~~~~~~~~~~~~
Fix it by making sure we define MAX_PHYSMEM_BITS for all 64-bit configs
regardless of SPARSEMEM.
Fixes: 8bc086899816 ("powerpc/mm: Only define MAX_PHYSMEM_BITS in
SPARSEMEM configurations") Reported-by: Andreas Schwab
<schwab@linux-m68k.org> Reported-by: Hugh Dickins <hughd@google.com>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
The file was modifiedarch/powerpc/include/asm/mmu.h (diff)
Commit 9752c37cc89f43675e70cf9acff23519fa84b48c by boris.brezillon
i3c: Fix the verification of random PID
The validation of random PID should be done by checking the
boardinfo->pid instead of info.pid which is empty.
Doing the change the info struture declaration is no longer necessary.
Cc: Boris Brezillon <bbrezillon@kernel.org> Cc: <stable@vger.kernel.org>
Fixes: 3a379bbcea0a ("i3c: Add core I3C infrastructure") Signed-off-by:
Vitor Soares <vitor.soares@synopsys.com> Signed-off-by: Boris Brezillon
<boris.brezillon@collabora.com>
The file was modifieddrivers/i3c/master.c (diff)
Commit 907621e94d49b85cd76f13110eceb940a182c69e by boris.brezillon
i3c: dw: Fix dw_i3c_master_disable controller by using correct mask
The controller was being disabled incorrectly. The correct way is to
clear the DEV_CTRL_ENABLE bit.
Fix this by clearing this bit.
Cc: Boris Brezillon <bbrezillon@kernel.org> Cc: <stable@vger.kernel.org>
Fixes: 1dd728f5d4d4 ("i3c: master: Add driver for Synopsys DesignWare
IP") Signed-off-by: Vitor Soares <vitor.soares@synopsys.com>
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
The file was modifieddrivers/i3c/master/dw-i3c-master.c (diff)
Commit 709a53e1948494cc4f6c4636c6f84a4d36a8117e by boris.brezillon
MAINTAINERS: Fix the I3C entry
There's no include/dt-bindings/i3c/ directory, remove this F: entry from
the I3C file patterns.
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Joe Perches
<joe@perches.com> Reported-by: Joe Perches <joe@perches.com> Fixes:
4f26d0666961 ("MAINTAINERS: Add myself as the I3C subsystem maintainer")
Signed-off-by: Boris Brezillon <boris.brezillon@collabora.com>
The file was modifiedMAINTAINERS (diff)
Commit 3966c3feca3fd10b2935caa0b4a08c7dd59469e5 by mingo
x86/perf/amd: Remove need to check "running" bit in NMI handler
Spurious interrupt support was added to perf in the following commit,
almost a decade ago:
  63e6be6d98e1 ("perf, x86: Catch spurious interrupts after disabling
counters")
The two previous patches (resolving the race condition when disabling a
PMC and NMI latency mitigation) allow for the removal of this older
spurious interrupt support.
Currently in x86_pmu_stop(), the bit for the PMC in the active_mask
bitmap is cleared before disabling the PMC, which sets up a race
condition. This race condition was mitigated by introducing the running
bitmap. That race condition can be eliminated by first disabling the
PMC, waiting for PMC reset on overflow and then clearing the bit for the
PMC in the active_mask bitmap. The NMI handler will not re-enable a
disabled counter.
If x86_pmu_stop() is called from the perf NMI handler, the NMI latency
mitigation support will guard against any unhandled NMI messages.
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by:
Peter Zijlstra (Intel) <peterz@infradead.org> Cc:
<stable@vger.kernel.org> # 4.14.x- Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo
<acme@kernel.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc:
Borislav Petkov <bp@alien8.de> Cc: Jiri Olsa <jolsa@redhat.com> Cc:
Linus Torvalds <torvalds@linux-foundation.org> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
Stephane Eranian <eranian@google.com> Cc: Thomas Gleixner
<tglx@linutronix.de> Cc: Vince Weaver <vincent.weaver@maine.edu> Link:
https://lkml.kernel.org/r/Message-ID: Signed-off-by: Ingo Molnar
<mingo@kernel.org>
The file was modifiedarch/x86/events/core.c (diff)
The file was modifiedarch/x86/events/amd/core.c (diff)
Commit d6ba3f815bc5f3c4249d15c8bc5fbb012651b4a4 by broonie
ASoC: Intel: kbl: fix wrong number of channels
Fix wrong setting on number of channels.  The context wants to set
constraint to 2 channels instead of 4.
Signed-off-by: Tzung-Bi Shih <tzungbi@google.com> Acked-by: Pierre-Louis
Bossart <pierre-louis.bossart@linux.intel.com> Signed-off-by: Mark Brown
<broonie@kernel.org>
The file was modifiedsound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c (diff)
Commit e37c2deafe7058cf7989c4c47bbf1140cc867d89 by broonie
ASoC: stm32: sai: fix master clock management
When master clock is used, master clock rate is set exclusively. Parent
clocks of master clock cannot be changed after a call to
clk_set_rate_exclusive(). So the parent clock of SAI kernel clock must
be set before. Ensure also that exclusive rate operations are balanced
in STM32 SAI driver.
Signed-off-by: Olivier Moysan <olivier.moysan@st.com> Signed-off-by:
Mark Brown <broonie@kernel.org>
The file was modifiedsound/soc/stm/stm32_sai_sub.c (diff)
Commit e33c1b9923775d17ad246946fe67fcb9be288677 by john.johansen
apparmor: Restore Y/N in /sys for apparmor's "enabled"
Before commit c5459b829b71 ("LSM: Plumb visibility into optional
"enabled" state"), /sys/module/apparmor/parameters/enabled would show
"Y" or "N" since it was using the "bool" handler. After being changed to
"int", this switched to "1" or "0", breaking the userspace AppArmor
detection of dbus-broker. This restores the Y/N output while keeping the
LSM infrastructure happy.
Before:
$ cat /sys/module/apparmor/parameters/enabled
1
After:
$ cat /sys/module/apparmor/parameters/enabled
Y
Reported-by: David Rheinsberg <david.rheinsberg@gmail.com> Reviewed-by:
David Rheinsberg <david.rheinsberg@gmail.com> Link:
https://lkml.kernel.org/r/CADyDSO6k8vYb1eryT4g6+EHrLCvb68GAbHVWuULkYjcZcYNhhw@mail.gmail.com
Fixes: c5459b829b71 ("LSM: Plumb visibility into optional "enabled"
state") Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by:
John Johansen <john.johansen@canonical.com>
The file was modifiedsecurity/apparmor/lsm.c (diff)
Commit 70802487bb9145a4f8b26f5a11d0e7f83c25100a by broonie
ASoC: pcm: fix error handling when try_module_get() fails.
Handle error before returning when try_module_get() fails to prevent
inconsistent mutex lock/unlock.
Fixes: 52034add7 (ASoC: pcm: update module refcount if
  module_get_upon_open is set) Signed-off-by: Ranjani Sridharan
<ranjani.sridharan@linux.intel.com> Signed-off-by: Mark Brown
<broonie@kernel.org>
The file was modifiedsound/soc/soc-pcm.c (diff)
Commit 90c1cba2b3b3851c151229f61801919b2904d437 by mingo
locking/lockdep: Zap lock classes even with lock debugging disabled
The following commit:
  a0b0fd53e1e6 ("locking/lockdep: Free lock classes that are no longer
in use")
changed the behavior of lockdep_free_key_range() from unconditionally
zapping lock classes into only zapping lock classes if debug_lock ==
true. Not zapping lock classes if debug_lock == false leaves dangling
pointers in several lockdep datastructures, e.g. lock_class::name in the
all_lock_classes list.
The shell command "cat /proc/lockdep" causes the kernel to iterate the
all_lock_classes list. Hence the "unable to handle kernel paging
request" cash that Shenghui encountered by running cat /proc/lockdep.
Since the new behavior can cause cat /proc/lockdep to crash, restore the
pre-v5.1 behavior.
This patch avoids that cat /proc/lockdep triggers the following crash
with debug_lock == false:
  BUG: unable to handle kernel paging request at fffffbfff40ca448
RIP: 0010:__asan_load1+0x28/0x50
Call Trace:
  string+0xac/0x180
  vsnprintf+0x23e/0x820
  seq_vprintf+0x82/0xc0
  seq_printf+0x92/0xb0
  print_name+0x34/0xb0
  l_show+0x184/0x200
  seq_read+0x59e/0x6c0
  proc_reg_read+0x11f/0x170
  __vfs_read+0x4d/0x90
  vfs_read+0xc5/0x1f0
  ksys_read+0xab/0x130
  __x64_sys_read+0x43/0x50
  do_syscall_64+0x71/0x210
  entry_SYSCALL_64_after_hwframe+0x49/0xbe
Reported-by: shenghui <shhuiw@foxmail.com> Signed-off-by: Bart Van
Assche <bvanassche@acm.org> 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> Cc:
Waiman Long <longman@redhat.com> Cc: Will Deacon <will.deacon@arm.com>
Fixes: a0b0fd53e1e6 ("locking/lockdep: Free lock classes that are no
longer in use") # v5.1-rc1. Link:
https://lkml.kernel.org/r/20190403233552.124673-1-bvanassche@acm.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/locking/lockdep.c (diff)
Commit e9f33a8fee53c2d4bcdeec9a89478b4bf17bfbbc by johannes.berg
mac80211: fix RX STBC override byte order
The original patch neglected to take byte order conversions into
account, fix that.
Fixes: d9bb410888ce ("mac80211: allow overriding HT STBC capabilities")
Signed-off-by: Johannes Berg <johannes.berg@intel.com> Reviewed-by:
Sergey Matyukevich <sergey.matyukevich.os@quantenna.com> Signed-off-by:
Johannes Berg <johannes.berg@intel.com>
The file was modifiednet/mac80211/ht.c (diff)
Commit 07d7e12091f4ab869cc6a4bb276399057e73b0b3 by tglx
alarmtimer: Return correct remaining time
To calculate a remaining time, it's required to subtract the current
time from the expiration time. In alarm_timer_remaining() the arguments
of ktime_sub are swapped.
Fixes: d653d8457c76 ("alarmtimer: Implement remaining callback")
Signed-off-by: Andrei Vagin <avagin@gmail.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Reviewed-by: Mukesh Ojha
<mojha@codeaurora.org> Cc: Stephen Boyd <sboyd@kernel.org> Cc: John
Stultz <john.stultz@linaro.org> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190408041542.26338-1-avagin@gmail.com
The file was modifiedkernel/time/alarmtimer.c (diff)
Commit d7a181da2dfa3190487c446042ba01e07d851c74 by tiwai
ALSA: hda: Fix racy display power access
snd_hdac_display_power() doesn't handle the concurrent calls carefully
enough, and it may lead to the doubly get_power or put_power calls, when
a runtime PM and an async work get called in racy way.
This patch addresses it by reusing the bus->lock mutex that has been
used for protecting the link state change in ext bus code, so that it
can protect against racy display state changes.  The initialization of
bus->lock was moved from snd_hdac_ext_bus_init() to snd_hdac_bus_init()
as well accordingly.
Testcase: igt/i915_pm_rpm/module-reload #glk-dsi Reported-by: Chris
Wilson <chris@chris-wilson.co.uk> Reviewed-by: Chris Wilson
<chris@chris-wilson.co.uk> Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/hda/hdac_component.c (diff)
The file was modifiedsound/hda/ext/hdac_ext_bus.c (diff)
The file was modifiedsound/hda/hdac_bus.c (diff)
Commit eed47d19d9362bdd958e4ab56af480b9dbf6b2b6 by axboe
block, bfq: fix use after free in bfq_bfqq_expire
The function bfq_bfqq_expire() invokes the function
__bfq_bfqq_expire(), and the latter may free the in-service bfq-queue.
If this happens, then no other instruction of bfq_bfqq_expire() must be
executed, or a use-after-free will occur.
Basing on the assumption that __bfq_bfqq_expire() invokes
bfq_put_queue() on the in-service bfq-queue exactly once, the queue is
assumed to be freed if its refcounter is equal to one right before
invoking __bfq_bfqq_expire().
But, since commit 9dee8b3b057e ("block, bfq: fix queue removal from
weights tree") this assumption is false. __bfq_bfqq_expire() may also
invoke bfq_weights_tree_remove() and, since commit 9dee8b3b057e
("block, bfq: fix queue removal from weights tree"), also the latter
function may invoke bfq_put_queue(). So __bfq_bfqq_expire() may invoke
bfq_put_queue() twice, and this is the actual case where the in-service
queue may happen to be freed.
To address this issue, this commit moves the check on the refcounter of
the queue right around the last bfq_put_queue() that may be invoked on
the queue.
Fixes: 9dee8b3b057e ("block, bfq: fix queue removal from weights tree")
Reported-by: Dmitrii Tcvetkov <demfloro@demfloro.ru> Reported-by:
Douglas Anderson <dianders@chromium.org> Tested-by: Dmitrii Tcvetkov
<demfloro@demfloro.ru> Tested-by: Douglas Anderson
<dianders@chromium.org> Signed-off-by: Paolo Valente
<paolo.valente@linaro.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedblock/bfq-wf2q.c (diff)
The file was modifiedblock/bfq-iosched.c (diff)
The file was modifiedblock/bfq-iosched.h (diff)
Commit bf348f9b78d413e75bb079462751a1d86b6de36c by axboe
virtio-blk: limit number of hw queues by nr_cpu_ids
When tag_set->nr_maps is 1, the block layer limits the number of hw
queues by nr_cpu_ids. No matter how many hw queues are used by
virtio-blk, as it has (tag_set->nr_maps == 1), it can use at most
nr_cpu_ids hw queues.
In addition, specifically for pci scenario, when the 'num-queues'
specified by qemu is more than maxcpus, virtio-blk would not be able to
allocate more than maxcpus vectors in order to have a vector for each
queue. As a result, it falls back into MSI-X with one vector for config
and one shared for queues.
Considering above reasons, this patch limits the number of hw queues
used by virtio-blk by nr_cpu_ids.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Dongli
Zhang <dongli.zhang@oracle.com> Signed-off-by: Jens Axboe
<axboe@kernel.dk>
The file was modifieddrivers/block/virtio_blk.c (diff)
Commit 1978f30a87732d4d9072a20abeded9fe17884f1b by axboe
scsi: virtio_scsi: limit number of hw queues by nr_cpu_ids
When tag_set->nr_maps is 1, the block layer limits the number of hw
queues by nr_cpu_ids. No matter how many hw queues are used by
virtio-scsi, as it has (tag_set->nr_maps == 1), it can use at most
nr_cpu_ids hw queues.
In addition, specifically for pci scenario, when the 'num_queues'
specified by qemu is more than maxcpus, virtio-scsi would not be able to
allocate more than maxcpus vectors in order to have a vector for each
queue. As a result, it falls back into MSI-X with one vector for config
and one shared for queues.
Considering above reasons, this patch limits the number of hw queues
used by virtio-scsi by nr_cpu_ids.
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Dongli
Zhang <dongli.zhang@oracle.com> Signed-off-by: Jens Axboe
<axboe@kernel.dk>
The file was modifieddrivers/scsi/virtio_scsi.c (diff)
Commit 5712f3301a12c0c3de9cc423484496b0464f2faf by schwidefsky
s390/3270: fix lockdep false positive on view->lock
The spinlock in the raw3270_view structure is used by con3270, tty3270
and fs3270 in different ways. For con3270 the lock can be acquired in
irq context, for tty3270 and fs3270 the highest context is bh.
Lockdep sees the view->lock as a single class and if the 3270 driver is
used for the console the following message is generated:
WARNING: inconsistent lock state 5.1.0-rc3-05157-g5c168033979d #12 Not
tainted
-------------------------------- inconsistent {IN-HARDIRQ-W} ->
{HARDIRQ-ON-W} usage. swapper/0/1 [HC0[0]:SC1[1]:HE1:SE0] takes:
(____ptrval____) (&(&view->lock)->rlock){?.-.}, at:
tty3270_update+0x7c/0x330
Introduce a lockdep subclass for the view lock to distinguish bh from
irq locks.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
The file was modifieddrivers/s390/char/raw3270.c (diff)
The file was modifieddrivers/s390/char/raw3270.h (diff)
The file was modifieddrivers/s390/char/tty3270.c (diff)
The file was modifieddrivers/s390/char/con3270.c (diff)
The file was modifieddrivers/s390/char/fs3270.c (diff)
Commit 16222cfb96b02a4a3e38e52012f2a6304850c3c9 by schwidefsky
s390/zcrypt: fix possible deadlock situation on ap queue remove
With commit 01396a374c3d ("s390/zcrypt: revisit ap device remove
procedure") the ap queue remove is now a two stage process. However, a
del_timer_sync() call may trigger the timer function which may try to
lock the very same spinlock as is held by the function just initiating
the del_timer_sync() call. This could end up in a deadlock situation.
Very unlikely but possible as you need to remove an ap queue at the
exact sime time when a timeout of a request occurs.
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com> Reported-by:
Pierre Morel <pmorel@linux.ibm.com> Fixes: commit 01396a374c3d
("s390/zcrypt: revisit ap device remove procedure") Signed-off-by:
Martin Schwidefsky <schwidefsky@de.ibm.com>
The file was modifieddrivers/s390/crypto/ap_queue.c (diff)
Commit 1b8f21b74c3c9c82fce5a751d7aefb7cc0b8d33d by axboe
blk-mq: introduce blk_mq_complete_request_sync()
In NVMe's error handler, follows the typical steps of tearing down
hardware for recovering controller:
1) stop blk_mq hw queues 2) stop the real hw queues 3) cancel in-flight
requests via
blk_mq_tagset_busy_iter(tags, cancel_request, ...) cancel_request():
mark the request as abort
blk_mq_complete_request(req); 4) destroy real hw queues
However, there may be race between #3 and #4, because
blk_mq_complete_request() may run q->mq_ops->complete(rq) remotelly and
asynchronously, and
->complete(rq) may be run after #4.
This patch introduces blk_mq_complete_request_sync() for fixing the
above race.
Cc: Sagi Grimberg <sagi@grimberg.me> Cc: Bart Van Assche
<bvanassche@acm.org> Cc: James Smart <james.smart@broadcom.com> Cc:
linux-nvme@lists.infradead.org Reviewed-by: Keith Busch
<keith.busch@intel.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe
<axboe@kernel.dk>
The file was modifiedinclude/linux/blk-mq.h (diff)
The file was modifiedblock/blk-mq.c (diff)
Commit eb3afb75b57c28599af0dfa03a99579d410749e9 by axboe
nvme: cancel request synchronously
nvme_cancel_request() is used in error handler, and it is always
reliable to cancel request synchronously, and avoids possible race in
which request may be completed after real hw queue is destroyed.
One issue is reported by our customer on NVMe RDMA, in which freed ib
queue pair may be used in nvme_rdma_complete_rq().
Cc: Sagi Grimberg <sagi@grimberg.me> Cc: Bart Van Assche
<bvanassche@acm.org> Cc: James Smart <james.smart@broadcom.com> Cc:
linux-nvme@lists.infradead.org Reviewed-by: Keith Busch
<keith.busch@intel.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe
<axboe@kernel.dk>
The file was modifieddrivers/nvme/host/core.c (diff)
Commit 20eea462bf2fbff3a4be375cc8424a544235a432 by rodrigo.vivi
drm/i915/icl: Ungate ddi clocks before IO enable
IO enable sequencing needs ddi clocks enabled. These clocks will be
gated at a later point in the enable sequence.
v2: Fix the commit header (Uma) v3: Remove the redundant read (Ville)
Fixes: 949fc52af19e ("drm/i915/icl: add pll mapping for DSI")
Signed-off-by: Vandita Kulkarni <vandita.kulkarni@intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com> Signed-off-by: Jani
Nikula <jani.nikula@intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/1553513202-13863-1-git-send-email-vandita.kulkarni@intel.com
(cherry picked from commit c5b81a325263a891d5811aabe938c87e03db4c37)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
The file was modifieddrivers/gpu/drm/i915/icl_dsi.c (diff)
Commit 4690985e00ac38334d4a68f99c56ac310ef0527b by rodrigo.vivi
drm/i915/icl: Fix port disable sequence for mipi-dsi
Re-enable clock gating of DDI clocks.
v2: Fix the default ddi clk state for mipi-dsi (Imre)
Fixes: 1026bea00381 ("drm/i915/icl: Ungate DSI clocks") Signed-off-by:
Vandita Kulkarni <vandita.kulkarni@intel.com> Reviewed-by: Uma Shankar
<uma.shankar@intel.com> Signed-off-by: Jani Nikula
<jani.nikula@intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/1553513202-13863-2-git-send-email-vandita.kulkarni@intel.com
(cherry picked from commit 942d1cf48eae3fcd7e973cfb708d5c4860f0c713)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
The file was modifieddrivers/gpu/drm/i915/icl_dsi.c (diff)
The file was modifieddrivers/gpu/drm/i915/intel_ddi.c (diff)
Commit 21635d7311734d2d1b177f8a95e2f9386174b76d by rodrigo.vivi
drm/i915/dp: revert back to max link rate and lane count on eDP
Commit 7769db588384 ("drm/i915/dp: optimize eDP 1.4+ link config fast
and narrow") started to optize the eDP 1.4+ link config, both per spec
and as preparation for display stream compression support.
Sadly, we again face panels that flat out fail with parameters they
claim to support. Revert, and go back to the drawing board.
v2: Actually revert to max params instead of just wide-and-slow.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109959 Fixes:
7769db588384 ("drm/i915/dp: optimize eDP 1.4+ link config fast and
narrow") Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Manasi
Navare <manasi.d.navare@intel.com> Cc: Rodrigo Vivi
<rodrigo.vivi@intel.com> Cc: Matt Atwood <matthew.s.atwood@intel.com>
Cc: "Lee, Shawn C" <shawn.c.lee@intel.com> Cc: Dave Airlie
<airlied@gmail.com> Cc: intel-gfx@lists.freedesktop.org Cc:
<stable@vger.kernel.org> # v5.0+ Reviewed-by: Rodrigo Vivi
<rodrigo.vivi@intel.com> Reviewed-by: Manasi Navare
<manasi.d.navare@intel.com> Tested-by: Albert Astals Cid <aacid@kde.org>
# v5.0 backport Tested-by: Emanuele Panigati <ilpanich@gmail.com> # v5.0
backport Tested-by: Matteo Iervasi <matteoiervasi@gmail.com> # v5.0
backport Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190405075220.9815-1-jani.nikula@intel.com
(cherry picked from commit f11cb1c19ad0563b3c1ea5eb16a6bac0e401f428)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
The file was modifieddrivers/gpu/drm/i915/intel_dp.c (diff)
Commit ac71317e6be01812cc0c54d8be6d3c1139c8380b by broonie
ASoC: wcd9335: Fix missing regmap requirement
wcd9335.c: undefined reference to 'devm_regmap_add_irq_chip'
Signed-off-by: Marc Gonzalez <marc.w.gonzalez@free.fr> Signed-off-by:
Mark Brown <broonie@kernel.org>
The file was modifiedsound/soc/codecs/Kconfig (diff)
Commit f05badde4e20d2e0f8c39d07a6873b2bfb0754f8 by palmer
RISC-V: Fix Maximum Physical Memory 2GiB option for 64bit systems
The Maximum Physical Memory 2GiB option for 64bit systems is currently
broken because kernel hangs at boot-time when this option is enabled and
the underlying system has more than 2GiB memory.
This issue can be easily reproduced on SiFive Unleashed board where we
have 8GiB of memory.
This patch fixes above issue by removing unusable memory region in
setup_bootmem().
Signed-off-by: Anup Patel <anup.patel@wdc.com> Reviewed-by: Christoph
Hellwig <hch@lst.de> Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
The file was modifiedarch/riscv/mm/init.c (diff)
Commit 46c874419652bbefdfed17420fd6e88d8a31d9ec by viro
securityfs: fix use-after-free on symlink traversal
symlink body shouldn't be freed without an RCU delay.  Switch securityfs
to ->destroy_inode() and use of call_rcu(); free both the inode and
symlink body in the callback.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
The file was modifiedsecurity/inode.c (diff)
Commit f51dcd0f621caac5380ce90fbbeafc32ce4517ae by viro
apparmorfs: fix use-after-free on symlink traversal
symlink body shouldn't be freed without an RCU delay.  Switch apparmorfs
to ->destroy_inode() and use of call_rcu(); free both the inode and
symlink body in the callback.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
The file was modifiedsecurity/apparmor/apparmorfs.c (diff)
Commit d737b25b1ae0540ba13cbd45ebb9b58a1d6d7f0d by jgg
IB/hfi1: Do not flush send queue in the TID RDMA second leg
When a QP is put into error state, the send queue will be flushed. This
mechanism is implemented in both the first and the second leg of the
send engine. Since the second leg is only responsible for data
transactions in the KDETH space for the TID RDMA WRITE request, it
should not perform the flushing of the send queue.
This patch removes the flushing function of the second leg, but still
keeps the bailing out of the QP if it is put into error state.
Fixes: 70dcb2e3dc6a ("IB/hfi1: Add the TID second leg send packet
builder") Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Kaike Wan <kaike.wan@intel.com> Signed-off-by: Dennis
Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Jason
Gunthorpe <jgg@mellanox.com>
The file was modifieddrivers/infiniband/hw/hfi1/tid_rdma.c (diff)
Commit b2b3a70cd9984fe39ed5aaa9ce596476051ce5de by axboe
lightnvm: pblk: fix crash in pblk_end_partial_read due to multipage
bvecs
The introduction of multipage bio vectors broke pblk's partial read
logic due to it not being prepared for multipage bio vectors.
Use bio vector iterators instead of direct bio vector indexing.
Fixes: 07173c3ec276 ("block: enable multipage bvecs") Reported-by: Klaus
Jensen <klaus.jensen@cnexlabs.com> Signed-off-by: Hans Holmberg
<hans.holmberg@cnexlabs.com> Updated description. Signed-off-by: Matias
Bjørling <mb@lightnvm.io> Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifieddrivers/lightnvm/pblk-read.c (diff)
Commit d4d0e40977ac450f32f2db5e4d8e23c9d2578899 by davem
mlxsw: spectrum_switchdev: Add MDB entries in prepare phase
The driver cannot guarantee in the prepare phase that it will be able to
write an MDB entry to the device. In case the driver returned success
during the prepare phase, but then failed to add the entry in the commit
phase, a WARNING [1] will be generated by the switchdev core.
Fix this by doing the work in the prepare phase instead.
[1]
[  358.544486] swp12s0: Commit of object (id=2) failed.
[  358.550061] WARNING: CPU: 0 PID: 30 at net/switchdev/switchdev.c:281
switchdev_port_obj_add_now+0x9b/0xe0
[  358.560754] CPU: 0 PID: 30 Comm: kworker/0:1 Not tainted
5.0.0-custom-13382-gf2449babf221 #1350
[  358.570472] Hardware name: Mellanox Technologies Ltd.
MSN2100-CB2FO/SA001017, BIOS 5.6.5 06/07/2016
[  358.580582] Workqueue: events switchdev_deferred_process_work
[  358.587001] RIP: 0010:switchdev_port_obj_add_now+0x9b/0xe0
...
[  358.614109] RSP: 0018:ffffa6b900d6fe18 EFLAGS: 00010286
[  358.619943] RAX: 0000000000000000 RBX: ffff8b00797ff000 RCX:
0000000000000000
[  358.627912] RDX: ffff8b00b7a1d4c0 RSI: ffff8b00b7a152e8 RDI:
ffff8b00b7a152e8
[  358.635881] RBP: ffff8b005c3f5bc0 R08: 000000000000022b R09:
0000000000000000
[  358.643850] R10: 0000000000000000 R11: ffffa6b900d6fcc8 R12:
0000000000000000
[  358.651819] R13: dead000000000100 R14: ffff8b00b65a23c0 R15:
0ffff8b00b7a2200
[  358.659790] FS:  0000000000000000(0000) GS:ffff8b00b7a00000(0000)
knlGS:0000000000000000
[  358.668820] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  358.675228] CR2: 00007f00aad90de0 CR3: 00000001ca80d000 CR4:
00000000001006f0
[  358.683188] Call Trace:
[  358.685918]  switchdev_port_obj_add_deferred+0x13/0x60
[  358.691655]  switchdev_deferred_process+0x6b/0xf0
[  358.696907]  switchdev_deferred_process_work+0xa/0x10
[  358.702548]  process_one_work+0x1f5/0x3f0
[  358.707022]  worker_thread+0x28/0x3c0
[  358.711099]  ? process_one_work+0x3f0/0x3f0
[  358.715768]  kthread+0x10d/0x130
[  358.719369]  ? __kthread_create_on_node+0x180/0x180
[  358.724815]  ret_from_fork+0x35/0x40
Fixes: 3a49b4fde2a1 ("mlxsw: Adding layer 2 multicast support")
Signed-off-by: Ido Schimmel <idosch@mellanox.com> Reported-by: Alex
Kushnarov <alexanderk@mellanox.com> Tested-by: Alex Kushnarov
<alexanderk@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c (diff)
Commit a8c133b06183c529c51cd0d54eb57d6b7078370c by davem
mlxsw: core: Do not use WQ_MEM_RECLAIM for EMAD workqueue
The EMAD workqueue is used to handle retransmission of EMAD packets that
contain configuration data for the device's firmware.
Given the workers need to allocate these packets and that the code is
not called as part of memory reclaim path, remove the WQ_MEM_RECLAIM
flag.
Fixes: d965465b60ba ("mlxsw: core: Fix possible deadlock")
Signed-off-by: Ido Schimmel <idosch@mellanox.com> Acked-by: Jiri Pirko
<jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/core.c (diff)
Commit 4af0699782e2cc7d0d89db9eb6f8844dd3df82dc by davem
mlxsw: core: Do not use WQ_MEM_RECLAIM for mlxsw ordered workqueue
The ordered workqueue is used to offload various objects such as routes
and neighbours in the order they are notified.
It should not be called as part of memory reclaim path, so remove the
WQ_MEM_RECLAIM flag. This can also result in a warning [1], if a worker
tries to flush a non-WQ_MEM_RECLAIM workqueue.
[1]
[97703.542861] workqueue: WQ_MEM_RECLAIM
mlxsw_core_ordered:mlxsw_sp_router_fib6_event_work [mlxsw_spectrum] is
flushing !WQ_MEM_RECLAIM events:rht_deferred_worker
[97703.542884] WARNING: CPU: 1 PID: 32492 at kernel/workqueue.c:2605
check_flush_dependency+0xb5/0x130
...
[97703.542988] Hardware name: Mellanox Technologies Ltd.
MSN3700C/VMOD0008, BIOS 5.11 10/10/2018
[97703.543049] Workqueue: mlxsw_core_ordered
mlxsw_sp_router_fib6_event_work [mlxsw_spectrum]
[97703.543061] RIP: 0010:check_flush_dependency+0xb5/0x130
...
[97703.543071] RSP: 0018:ffffb3f08137bc00 EFLAGS: 00010086
[97703.543076] RAX: 0000000000000000 RBX: ffff96e07740ae00 RCX:
0000000000000000
[97703.543080] RDX: 0000000000000094 RSI: ffffffff82dc1934 RDI:
0000000000000046
[97703.543084] RBP: ffffb3f08137bc20 R08: ffffffff82dc18a0 R09:
00000000000225c0
[97703.543087] R10: 0000000000000000 R11: 0000000000007eec R12:
ffffffff816e4ee0
[97703.543091] R13: ffff96e06f6a5c00 R14: ffff96e077ba7700 R15:
ffffffff812ab0c0
[97703.543097] FS: 0000000000000000(0000) GS:ffff96e077a80000(0000)
knlGS:0000000000000000
[97703.543101] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[97703.543104] CR2: 00007f8cd135b280 CR3: 00000001e860e003 CR4:
00000000003606e0
[97703.543109] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000
[97703.543112] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400
[97703.543115] Call Trace:
[97703.543129] __flush_work+0xbd/0x1e0
[97703.543137] ? __cancel_work_timer+0x136/0x1b0
[97703.543145] ? pwq_dec_nr_in_flight+0x49/0xa0
[97703.543154] __cancel_work_timer+0x136/0x1b0
[97703.543175] ? mlxsw_reg_trans_bulk_wait+0x145/0x400 [mlxsw_core]
[97703.543184] cancel_work_sync+0x10/0x20
[97703.543191] rhashtable_free_and_destroy+0x23/0x140
[97703.543198] rhashtable_destroy+0xd/0x10
[97703.543254] mlxsw_sp_fib_destroy+0xb1/0xf0 [mlxsw_spectrum]
[97703.543310] mlxsw_sp_vr_put+0xa8/0xc0 [mlxsw_spectrum]
[97703.543364] mlxsw_sp_fib_node_put+0xbf/0x140 [mlxsw_spectrum]
[97703.543418] ? mlxsw_sp_fib6_entry_destroy+0xe8/0x110 [mlxsw_spectrum]
[97703.543475] mlxsw_sp_router_fib6_event_work+0x6cd/0x7f0
[mlxsw_spectrum]
[97703.543484] process_one_work+0x1fd/0x400
[97703.543493] worker_thread+0x34/0x410
[97703.543500] kthread+0x121/0x140
[97703.543507] ? process_one_work+0x400/0x400
[97703.543512] ? kthread_park+0x90/0x90
[97703.543523] ret_from_fork+0x35/0x40
Fixes: a3832b31898f ("mlxsw: core: Create an ordered workqueue for FIB
offload") Signed-off-by: Ido Schimmel <idosch@mellanox.com> Reported-by:
Semion Lisyansky <semionl@mellanox.com> Acked-by: Jiri Pirko
<jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/core.c (diff)
Commit b442fed1b724af0de087912a5718ddde1b87acbb by davem
mlxsw: core: Do not use WQ_MEM_RECLAIM for mlxsw workqueue
The workqueue is used to periodically update the networking stack about
activity / statistics of various objects such as neighbours and TC
actions.
It should not be called as part of memory reclaim path, so remove the
WQ_MEM_RECLAIM flag.
Fixes: 3d5479e92087 ("mlxsw: core: Remove deprecated create_workqueue")
Signed-off-by: Ido Schimmel <idosch@mellanox.com> Acked-by: Jiri Pirko
<jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/core.c (diff)
Commit 972fae683cbad5cf348268e76abc6d55cfb3ba87 by davem
mlxsw: spectrum_router: Do not check VRF MAC address
Commit 74bc99397438 ("mlxsw: spectrum_router: Veto unsupported RIF MAC
addresses") enabled the driver to veto router interface (RIF) MAC
addresses that it cannot support.
This check should only be performed for interfaces for which the driver
actually configures a RIF. A VRF upper is not one of them, so ignore it.
Without this patch it is not possible to set an IP address on the VRF
device and use it as a loopback.
Fixes: 74bc99397438 ("mlxsw: spectrum_router: Veto unsupported RIF MAC
addresses") Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reported-by: Alexander Petrovskiy <alexpe@mellanox.com> Tested-by:
Alexander Petrovskiy <alexpe@mellanox.com> Acked-by: Jiri Pirko
<jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/spectrum_router.c (diff)
Commit 7052e2436373cc2c46981e165d1cbc5023f20dd7 by davem
selftests: mlxsw: Test VRF MAC vetoing
Test that it is possible to set an IP address on a VRF and that it is
not vetoed.
Signed-off-by: Ido Schimmel <idosch@mellanox.com> Acked-by: Jiri Pirko
<jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedtools/testing/selftests/drivers/net/mlxsw/rtnetlink.sh (diff)
Commit d5949d92c29ce147a9cb9e21fcf8ad7c1ff327b1 by davem
mlxsw: spectrum_buffers: Add a multicast pool for Spectrum-2
In Spectrum-1, when a multicast packet is admitted to the shared buffer
it increases the quotas of all the ports and {port, TC} to which it is
forwarded to.
The above means that multicast packets are accounted multiple times in
the shared buffer and can therefore cause the associated shared buffer
pool to fill up very quickly.
To work around this issue, commit e83c045e53d7 ("mlxsw:
spectrum_buffers: Configure MC pool") added a dedicated multicast pool
in which multicast packets are accounted.
The issue is not present in Spectrum-2, but in order to be backward
compatible with Spectrum-1, its default behavior is to allow a multicast
packet to increase multiple egress quotas instead of one.
Until the new (non-backward compatible) mode is supported, configure a
dedicated multicast pool as in Spectrum-1.
Fixes: fe099bf682ab ("mlxsw: spectrum_buffers: Add Spectrum-2 shared
buffer configuration") Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Reviewed-by: Petr Machata <petrm@mellanox.com> Acked-by: Jiri Pirko
<jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/spectrum_buffers.c (diff)
Commit 1bfb97b9a51901103677a4d1a2386d223c15bc71 by paul.burton
MAINTAINERS: BMIPS: Add internal Broadcom mailing list
There is a patchwork instance behind bcm-kernel-feedback-list that is
helpful to track submissions, add this list for the MIPS BMIPS entry.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by:
Paul Burton <paul.burton@mips.com> Cc: linux-mips@linux-mips.org
The file was modifiedMAINTAINERS (diff)
Commit b66b7bd2bdc1a74c46a0a470f9ac19629320d212 by davem
ibmvnic: Enable GRO
Enable Generic Receive Offload in the ibmvnic driver.
Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/ibm/ibmvnic.c (diff)
Commit dde746a35f8b7da4b9515dd3dc4708a9926fbd65 by davem
ibmvnic: Fix netdev feature clobbering during a reset
While determining offload capabilities of backing hardware during a
device reset, the driver is clobbering current feature settings. Update
hw_features on reset instead of features unless a feature is enabled
that is no longer supported on the current backing device. Also enable
features that were not supported prior to the reset but were previously
enabled or requested by the user.
This can occur if the reset is the result of a carrier change, such as a
device failover or partition migration.
Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/ibm/ibmvnic.c (diff)
Commit 2a29e9f6b9b499f1fc5f4a48220dc3f4428499f9 by hch
sparc64/pci_sun4v: fix ATU checks for large DMA masks
Now that we allow drivers to always need to set larger than required DMA
masks we need to be a little more careful in the sun4v PCI iommu driver
to chose when to select the ATU support - a larger DMA mask can be set
even when the platform does not support ATU, so we always have to check
if it is avaiable before using it.  Add a little helper for that and use
it in all the places where we make ATU usage decisions based on the DMA
mask.
Fixes: 24132a419c68 ("sparc64/pci_sun4v: allow large DMA masks")
Reported-by: Meelis Roos <mroos@linux.ee> Signed-off-by: Christoph
Hellwig <hch@lst.de> Tested-by: Meelis Roos <mroos@linux.ee> Acked-by:
David S. Miller <davem@davemloft.net>
The file was modifiedarch/sparc/kernel/pci_sun4v.c (diff)
Commit 5a03bc73abed6ae196c15e9950afde19d48be12c by davem
net/tls: fix the IV leaks
Commit f66de3ee2c16 ("net/tls: Split conf to rx + tx") made freeing of
IV and record sequence number conditional to SW path only, but commit
e8f69799810c ("net/tls: Add generic NIC offload infrastructure") also
allocates that state for the device offload configuration.  Remember to
free it.
Fixes: e8f69799810c ("net/tls: Add generic NIC offload infrastructure")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/tls/tls_device.c (diff)
Commit 35b71a34ada62c9573847a324bf06a133fe11b11 by davem
net/tls: don't leak partially sent record in device mode
David reports that tls triggers warnings related to sk->sk_forward_alloc
not being zero at destruction time:
WARNING: CPU: 5 PID: 6831 at net/core/stream.c:206
sk_stream_kill_queues+0x103/0x110 WARNING: CPU: 5 PID: 6831 at
net/ipv4/af_inet.c:160 inet_sock_destruct+0x15b/0x170
When sender fills up the write buffer and dies from SIGPIPE.  This is
due to the device implementation not cleaning up the
partially_sent_record.
This is because commit a42055e8d2c3 ("net/tls: Add support for async
encryption of records for performance") moved the partial record cleanup
to the SW-only path.
Fixes: a42055e8d2c3 ("net/tls: Add support for async encryption of
records for performance") Reported-by: David Beckett
<david.beckett@netronome.com> Signed-off-by: Jakub Kicinski
<jakub.kicinski@netronome.com> Reviewed-by: Dirk van der Merwe
<dirk.vandermerwe@netronome.com> Reviewed-by: Simon Horman
<simon.horman@netronome.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/net/tls.h (diff)
The file was modifiednet/tls/tls_sw.c (diff)
The file was modifiednet/tls/tls_device.c (diff)
The file was modifiednet/tls/tls_main.c (diff)
Commit 4a9c2e3746e6151fd5d077259d79ce9ca86d47d7 by davem
net: strparser: partially revert "strparser: Call skb_unclone
conditionally"
This reverts the first part of commit 4e485d06bb8c ("strparser: Call
skb_unclone conditionally").  To build a message with multiple fragments
we need our own root of frag_list.  We can't simply use the frag_list of
orig_skb, because it will lead to linking all orig_skbs together
creating very long frag chains, and causing stack overflow on
kfree_skb() (which is called recursively on the frag_lists).
BUG: stack guard page was hit at 00000000d40fad41 (stack is
0000000029dde9f4..000000008cce03d5) kernel stack overflow
(double-fault): 0000 [#1] PREEMPT SMP RIP: 0010:free_one_page+0x2b/0x490
Call Trace:
__free_pages_ok+0x143/0x2c0
skb_release_data+0x8e/0x140
? skb_release_data+0xad/0x140
kfree_skb+0x32/0xb0
  [...]
  skb_release_data+0xad/0x140
? skb_release_data+0xad/0x140
kfree_skb+0x32/0xb0
skb_release_data+0xad/0x140
? skb_release_data+0xad/0x140
kfree_skb+0x32/0xb0
skb_release_data+0xad/0x140
? skb_release_data+0xad/0x140
kfree_skb+0x32/0xb0
skb_release_data+0xad/0x140
? skb_release_data+0xad/0x140
kfree_skb+0x32/0xb0
skb_release_data+0xad/0x140
__kfree_skb+0xe/0x20
tcp_disconnect+0xd6/0x4d0
tcp_close+0xf4/0x430
? tcp_check_oom+0xf0/0xf0
tls_sk_proto_close+0xe4/0x1e0 [tls]
inet_release+0x36/0x60
__sock_release+0x37/0xa0
sock_close+0x11/0x20
__fput+0xa2/0x1d0
task_work_run+0x89/0xb0
exit_to_usermode_loop+0x9a/0xa0
do_syscall_64+0xc0/0xf0
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Let's leave the second unclone conditional, as I'm not entirely sure
what is its purpose :)
Fixes: 4e485d06bb8c ("strparser: Call skb_unclone conditionally")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Dirk van der Merwe <dirk.vandermerwe@netronome.com>
Reviewed-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/strparser/strparser.c (diff)
Commit 3943af9d01e94330d0cfac6fccdbc829aad50c92 by bhelgaas
PCI: pciehp: Ignore Link State Changes after powering off a slot
During a safe hot remove, the OS powers off the slot, which may cause a
Data Link Layer State Changed event.  The slot has already been set to
OFF_STATE, so that event results in re-enabling the device, making it
impossible to safely remove it.
Clear out the Presence Detect Changed and Data Link Layer State Changed
events when the disabled slot has settled down.
It is still possible to re-enable the device if it remains in the slot
after pressing the Attention Button by pressing it again.
Fixes the problem that Micah reported below: an NVMe drive power button
may not actually turn off the drive.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=203237 Reported-by:
Micah Parrish <micah.parrish@hpe.com> Tested-by: Micah Parrish
<micah.parrish@hpe.com> Signed-off-by: Sergey Miroshnichenko
<s.miroshnichenko@yadro.com>
[bhelgaas: changelog, add bugzilla URL] Signed-off-by: Bjorn Helgaas
<bhelgaas@google.com> Reviewed-by: Lukas Wunner <lukas@wunner.de> Cc:
stable@vger.kernel.org # v4.19+
The file was modifieddrivers/pci/hotplug/pciehp_ctrl.c (diff)
Commit a3761c3c91209b58b6f33bf69dd8bb8ec0c9d925 by axboe
block: do not leak memory in bio_copy_user_iov()
When bio_add_pc_page() fails in bio_copy_user_iov() we should free the
page we just allocated otherwise we are leaking it.
Cc: linux-block@vger.kernel.org Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: stable@vger.kernel.org Reviewed-by:
Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com> Signed-off-by: Jérôme
Glisse <jglisse@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedblock/bio.c (diff)
Commit 7c2e07130090ae001a97a6b65597830d6815e93e by sboyd
clk: x86: Add system specific quirk to mark clocks as critical
Since commit 648e921888ad ("clk: x86: Stop marking clocks as
CLK_IS_CRITICAL"), the pmc_plt_clocks of the Bay Trail SoC are
unconditionally gated off. Unfortunately this will break systems where
these clocks are used for external purposes beyond the kernel's
knowledge. Fix it by implementing a system specific quirk to mark the
necessary pmc_plt_clks as critical.
Fixes: 648e921888ad ("clk: x86: Stop marking clocks as CLK_IS_CRITICAL")
Signed-off-by: David Müller <dave.mueller@gmx.ch> Signed-off-by: Hans de
Goede <hdegoede@redhat.com> Reviewed-by: Andy Shevchenko
<andy.shevchenko@gmail.com> Signed-off-by: Stephen Boyd
<sboyd@kernel.org>
The file was modifieddrivers/platform/x86/pmc_atom.c (diff)
The file was modifieddrivers/clk/x86/clk-pmc-atom.c (diff)
The file was modifiedinclude/linux/platform_data/x86/clk-pmc-atom.h (diff)
Commit 903f1a187776bb8d79b13618ec05b25f86318885 by davem
net/tls: fix build without CONFIG_TLS_DEVICE
buildbot noticed that TLS_HW is not defined if CONFIG_TLS_DEVICE=n. Wrap
the cleanup branch into an ifdef, tls_device_free_resources_tx()
wouldn't be compiled either in this case.
Fixes: 35b71a34ada6 ("net/tls: don't leak partially sent record in
device mode") Signed-off-by: Jakub Kicinski
<jakub.kicinski@netronome.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tls/tls_main.c (diff)
Commit 43c2adb9df7ddd6560fd3546d925b42cef92daa0 by davem
team: set slave to promisc if team is already in promisc mode
After adding a team interface to bridge, the team interface will enter
promisc mode. Then if we add a new slave to team0, the slave will keep
promisc off. Fix it by setting slave to promisc on if team master is
already in promisc mode, also do the same for allmulti.
v2: add promisc and allmulti checking when delete ports
Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/team/team.c (diff)
Commit cd7879f79f83aec4bb13f0f823f323911dc5397b by zhenyuw
drm/i915/gvt: Roundup fb->height into tile's height at calucation
fb->size
When fb is tiled and fb->height isn't the multiple of tile's height, the
format fb->size = fb->stride * fb->height, will get a smaller size than
the actual size. As the memory height of tiled fb should be multiple of
tile's height.
Fixes: 7f1a93b1f1d1 ("drm/i915/gvt: Correct the calculation of plane
size") Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com> Signed-off-by:
Xiong Zhang <xiong.y.zhang@intel.com> Signed-off-by: Zhenyu Wang
<zhenyuw@linux.intel.com>
The file was modifieddrivers/gpu/drm/i915/gvt/dmabuf.c (diff)
Commit 8065a779f17e94536a1c4dcee4f9d88011672f97 by davem
failover: allow name change on IFF_UP slave interfaces
When a netdev appears through hot plug then gets enslaved by a failover
master that is already up and running, the slave will be opened right
away after getting enslaved. Today there's a race that userspace
(udev) may fail to rename the slave if the kernel (net_failover) opens
the slave earlier than when the userspace rename happens. Unlike bond or
team, the primary slave of failover can't be renamed by userspace ahead
of time, since the kernel initiated auto-enslavement is unable to, or
rather, is never meant to be synchronized with the rename request from
userspace.
As the failover slave interfaces are not designed to be operated
directly by userspace apps: IP configuration, filter rules with regard
to network traffic passing and etc., should all be done on master
interface. In general, userspace apps only care about the name of master
interface, while slave names are less important as long as admin users
can see reliable names that may carry other information describing the
netdev. For e.g., they can infer that
"ens3nsby" is a standby slave of "ens3", while for a name like "eth0"
they can't tell which master it belongs to.
Historically the name of IFF_UP interface can't be changed because there
might be admin script or management software that is already relying on
such behavior and assumes that the slave name can't be changed once UP.
But failover is special: with the in-kernel auto-enslavement mechanism,
the userspace expectation for device enumeration and bring-up order is
already broken. Previously initramfs and various userspace config tools
were modified to bypass failover slaves because of auto-enslavement and
duplicate MAC address. Similarly, in case that users care about seeing
reliable slave name, the new type of failover slaves needs to be taken
care of specifically in userspace anyway.
It's less risky to lift up the rename restriction on failover slave
which is already UP. Although it's possible this change may potentially
break userspace component (most likely configuration scripts or
management software) that assumes slave name can't be changed while UP,
it's relatively a limited and controllable set among all userspace
components, which can be fixed specifically to listen for the rename
events on failover slaves. Userspace component interacting with slaves
is expected to be changed to operate on failover master interface
instead, as the failover slave is dynamic in nature which may come and
go at any point.  The goal is to make the role of failover slaves less
relevant, and userspace components should only deal with failover master
in the long run.
Fixes: 30c8bd5aa8b2 ("net: Introduce generic failover module")
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com> Reviewed-by: Liran
Alon <liran.alon@oracle.com> Acked-by: Sridhar Samudrala
<sridhar.samudrala@intel.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/core/failover.c (diff)
The file was modifiedinclude/linux/netdevice.h (diff)
The file was modifiednet/core/dev.c (diff)
Commit b4f47f3848eb70986f75d06112af7b48b7f5f462 by davem
net/tls: prevent bad memory access in tls_is_sk_tx_device_offloaded()
Unlike '&&' operator, the '&' does not have short-circuit evaluation
semantics.  IOW both sides of the operator always get evaluated.  Fix
the wrong operator in tls_is_sk_tx_device_offloaded(), which would lead
to out-of-bounds access for for non-full sockets.
Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload") Signed-off-by:
Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der
Merwe <dirk.vandermerwe@netronome.com> Reviewed-by: Simon Horman
<simon.horman@netronome.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/net/tls.h (diff)
Commit 813dbeb656d6c90266f251d8bd2b02d445afa63f by davem
vhost: reject zero size iova range
We used to accept zero size iova range which will lead a infinite loop
in translate_desc(). Fixing this by failing the request in this case.
Reported-by: syzbot+d21e6e297322a900c128@syzkaller.appspotmail.com
Fixes: 6b1e6cc7 ("vhost: new device IOTLB API") Signed-off-by: Jason
Wang <jasowang@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/vhost/vhost.c (diff)
Commit d1841533e54876f152a30ac398a34f47ad6590b1 by davem
tipc: missing entries in name table of publications
When binding multiple services with specific type 1Ki, 2Ki.., this leads
to some entries in the name table of publications missing when listed
out via 'tipc name show'.
The problem is at identify zero last_type conditional provided via
netlink. The first is initial 'type' when starting name table dummping.
The second is continuously with zero type (node state service type).
Then, lookup function failure to finding node state service type in next
iteration.
To solve this, adding more conditional to marked as dirty type and
lookup correct service type for the next iteration instead of select the
first service as initial 'type' zero.
Acked-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: Hoang Le
<hoang.h.le@dektech.com.au> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tipc/name_table.c (diff)
Commit 988dc4a9a3b66be75b30405a5494faf0dc7cffb6 by davem
net: fou: do not use guehdr after iptunnel_pull_offloads in gue_udp_recv
gue tunnels run iptunnel_pull_offloads on received skbs. This can
determine a possible use-after-free accessing guehdr pointer since the
packet will be 'uncloned' running pskb_expand_head if it is a cloned gso
skb (e.g if the packet has been sent though a veth device)
Fixes: a09a4c8dd1ec ("tunnels: Remove encapsulation offloads on decap")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/fou.c (diff)
Commit e154592a1d25fa1f50ac1bd8d132d0e1103442ba by treding
gpu: host1x: Fix compile error when IOMMU API is not available
In case the IOMMU API is not available compiling host1x fails with the
following error:
  In file included from drivers/gpu/host1x/hw/host1x06.c:27:
drivers/gpu/host1x/hw/channel_hw.c: In function
‘host1x_channel_set_streamid’:
drivers/gpu/host1x/hw/channel_hw.c:118:30: error: implicit declaration
of function
   ‘dev_iommu_fwspec_get’; did you mean ‘iommu_fwspec_free’?
[-Werror=implicit-function-declaration]
struct iommu_fwspec *spec = dev_iommu_fwspec_get(channel->dev->parent);
                             ^~~~~~~~~~~~~~~~~~~~
                             iommu_fwspec_free
Fixes: de5469c21ff9 ("gpu: host1x: Program the channel stream ID")
Signed-off-by: Stefan Agner <stefan@agner.ch> Signed-off-by: Thierry
Reding <treding@nvidia.com>
The file was modifieddrivers/gpu/host1x/hw/channel_hw.c (diff)
Commit 5c41ea6d52003b5bc77c2a82fd5ca7d480237d89 by ulf.hansson
mmc: sdhci-omap: Don't finish_mrq() on a command error during tuning
commit 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
callback") skips data resets during tuning operation. Because of this, a
data error or data finish interrupt might still arrive after a command
error has been handled and the mrq ended. This ends up with a "mmc0: Got
data interrupt 0x00000002 even though no data operation was in progress"
error message.
Fix this by adding a platform specific callback for sdhci_irq. Mark the
mrq as a failure but wait for a data interrupt instead of calling
finish_mrq().
Fixes: 5b0d62108b46 ("mmc: sdhci-omap: Add platform specific reset
callback") Signed-off-by: Faiz Abbas <faiz_abbas@ti.com> Acked-by:
Adrian Hunter <adrian.hunter@intel.com> Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
The file was modifieddrivers/mmc/host/sdhci-omap.c (diff)
Commit 102bbe34b31c9159e714432afd64458f6f3876d7 by linus.walleij
gpio: eic: sprd: Fix incorrect irq type setting for the sync EIC
When setting sync EIC as IRQ_TYPE_EDGE_BOTH type, we missed to set the
SPRD_EIC_SYNC_INTMODE register to 0, which means detecting edge signals.
Thus this patch fixes the issue.
Fixes: 25518e024e3a ("gpio: Add Spreadtrum EIC driver support") Cc:
<stable@vger.kernel.org> Signed-off-by: Baolin Wang
<baolin.wang@linaro.org> Signed-off-by: Linus Walleij
<linus.walleij@linaro.org>
The file was modifieddrivers/gpio/gpio-eic-sprd.c (diff)
Commit a66477b0efe511d98dde3e4aaeb189790e6f0a39 by alexander.deucher
drm/ttm: fix out-of-bounds read in ttm_put_pages() v2
When ttm_put_pages() tries to figure out whether it's dealing with
transparent hugepages, it just reads past the bounds of the pages array
without a check.
v2: simplify the test if enough pages are left in the array (Christian).
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: Christian
König <christian.koenig@amd.com> Fixes: 5c42c64f7d54 ("drm/ttm: fix the
fix for huge compound pages") Cc: stable@vger.kernel.org Reviewed-by:
Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Junwei Zhang
<Jerry.Zhang@amd.com> Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/ttm/ttm_page_alloc.c (diff)
Commit ac1e516d5a4c56bf0cb4a3dfc0672f689131cfd4 by alexander.deucher
drm/ttm: fix start page for huge page check in ttm_put_pages()
The first page entry is always the same with itself.
Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by:
Michel Dänzer <michel.daenzer@amd.com> Reviewed-by: Junwei Zhang
<Jerry.Zhang@amd.com> Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/ttm/ttm_page_alloc.c (diff)
Commit 453393369dc9806d2455151e329c599684762428 by alexander.deucher
drm/ttm: fix incrementing the page pointer for huge pages
When we increment the counter we need to increment the pointer as well.
Signed-off-by: Christian König <christian.koenig@amd.com> Fixes:
e16858a7e6e7 drm/ttm: fix start page for huge page check in
ttm_put_pages() Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
Acked-by: Huang Rui <ray.huang@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/ttm/ttm_page_alloc.c (diff)
Commit 543c364d8eeeb42c0edfaac9764f4e9f3d777ec1 by alexander.deucher
drm/ttm: fix dma_fence refcount imbalance on error path
the ttm_bo_add_move_fence takes a reference to the struct dma_fence, but
failed to release it on the error path, leading to a memory leak. add
dma_fence_put before return when error occur.
Signed-off-by: Lin Yi <teroincn@163.com> Reviewed-by: Christian König
<christian.koenig@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/ttm/ttm_bo.c (diff)
Commit f4bbebf8e7eb4d294b040ab2d2ba71e70e69b930 by alexander.deucher
drm/amd/display: extending AUX SW Timeout
[Why] AUX takes longer to reply when using active DP-DVI dongle on some
asics resulting in up to 2000+ us edid read (timeout).
[How] 1. Adjust AUX poll to match spec 2. Extend the SW timeout. This
does not affect normal operation since we exit the loop as soon as AUX
acks.
Signed-off-by: Martin Leung <martin.leung@amd.com> Reviewed-by: Jun Lei
<Jun.Lei@amd.com> Acked-by: Joshua Aberback <Joshua.Aberback@amd.com>
Acked-by: Leo Li <sunpeng.li@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/display/dc/dce/dce_aux.c (diff)
The file was modifieddrivers/gpu/drm/amd/display/dc/dce/dce_aux.h (diff)
Commit 67f471b6ed3b09033c4ac77ea03f92afdb1989fe by hch
nvme-fc: correct csn initialization and increments on error
This patch fixes a long-standing bug that initialized the FC-NVME cmnd
iu CSN value to 1. Early FC-NVME specs had the connection starting with
CSN=1. By the time the spec reached approval, the language had changed
to state a connection should start with CSN=0.  This patch corrects the
initialization value for FC-NVME connections.
Additionally, in reviewing the transport, the CSN value is assigned to
the new IU early in the start routine. It's possible that a later dma
map request may fail, causing the command to never be sent to the
controller.  Change the location of the assignment so that it is
immediately prior to calling the lldd. Add a comment block to explain
the impacts if the lldd were to additionally fail sending the command.
Signed-off-by: Dick Kennedy <dick.kennedy@broadcom.com> Signed-off-by:
James Smart <jsmart2021@gmail.com> Reviewed-by: Ewan D. Milne
<emilne@redhat.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
The file was modifieddrivers/nvme/host/fc.c (diff)
Commit d808b7f759b50acf0784ce6230ffa63e12ef465d by hch
nvmet: fix discover log page when offsets are used
The nvme target hadn't been taking the Get Log Page offset parameter
into consideration, and so has been returning corrupted log pages when
offsets are used. Since many tools, including nvme-cli, split the log
request to 4k, we've been breaking discovery log responses when more
than 3 subsystems exist.
Fix the returned data by internally generating the entire discovery log
page and copying only the requested bytes into the user buffer. The
command log page offset type has been modified to a native __le64 to
make it easier to extract the value from a command.
Signed-off-by: Keith Busch <keith.busch@intel.com> Tested-by: Minwoo Im
<minwoo.im@samsung.com> Reviewed-by: Chaitanya Kulkarni
<chaitanya.kulkarni@wdc.com> Reviewed-by: Hannes Reinecke
<hare@suse.com> Reviewed-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
The file was modifieddrivers/nvme/target/admin-cmd.c (diff)
The file was modifieddrivers/nvme/target/nvmet.h (diff)
The file was modifiedinclude/linux/nvme.h (diff)
The file was modifieddrivers/nvme/target/discovery.c (diff)
Commit 8bbad1ba3196814487438d1299cec75de5c74615 by treding
gpu: host1x: Program stream ID to bypass without SMMU
If SMMU support is not available, fall back to programming the bypass
stream ID (0x7f).
Fixes: de5469c21ff9 ("gpu: host1x: Program the channel stream ID")
Suggested-by: Mikko Perttunen <mperttunen@nvidia.com> Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Reviewed-by: Mikko Perttunen
<mperttunen@nvidia.com>
[treding@nvidia.com: rebase this on top of a later build fix]
Signed-off-by: Thierry Reding <treding@nvidia.com>
The file was modifieddrivers/gpu/host1x/hw/channel_hw.c (diff)
Commit b995dcca7cf12f208cfd95fd9d5768dca7cccec7 by sboyd
platform/x86: pmc_atom: Drop __initconst on dmi table
It's used by probe and that isn't an init function. Drop this so that we
don't get a section mismatch.
Reported-by: kbuild test robot <lkp@intel.com> Cc: David Müller
<dave.mueller@gmx.ch> Cc: Hans de Goede <hdegoede@redhat.com> Cc: Andy
Shevchenko <andy.shevchenko@gmail.com> Fixes: 7c2e07130090 ("clk: x86:
Add system specific quirk to mark clocks as critical") Signed-off-by:
Stephen Boyd <sboyd@kernel.org>
The file was modifieddrivers/platform/x86/pmc_atom.c (diff)
Commit 8c5165430c0194df92369162d1c7f53f8672baa5 by hch
dma-debug: only skip one stackframe entry
With skip set to 1, I get a traceback like this:
[  106.867637] DMA-API: Mapped at:
[  106.870784]  afu_dma_map_region+0x2cd/0x4f0 [dfl_afu]
[  106.875839]  afu_ioctl+0x258/0x380 [dfl_afu]
[  106.880108]  do_vfs_ioctl+0xa9/0x720
[  106.883688]  ksys_ioctl+0x60/0x90
[  106.887007]  __x64_sys_ioctl+0x16/0x20
With the previous value of 2, afu_dma_map_region was being omitted.  I
suspect that the code paths have simply changed since the value of 2 was
chosen a decade ago, but it's also possible that it varies based on
which mapping function was used, compiler inlining choices, etc.  In any
case, it's best to err on the side of skipping less.
Signed-off-by: Scott Wood <swood@redhat.com> Signed-off-by: Christoph
Hellwig <hch@lst.de>
The file was modifiedkernel/dma/debug.c (diff)
Commit fd57770dd198f5b2ddd5b9e6bf282cf98d63adb9 by davem
net/smc: wait for pending work before clcsock release_sock
When the clcsock is already released using sock_release() and a pending
smc_listen_work accesses the clcsock than that will fail. Solve this by
canceling and waiting for the work to complete first. Because the work
holds the sock_lock it must make sure that the lock is not hold before
the new helper smc_clcsock_release() is invoked. And before the
smc_listen_work starts working check if the parent listen socket is
still valid, otherwise stop the work early.
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by:
Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/smc/smc_close.c (diff)
The file was modifiednet/smc/af_smc.c (diff)
The file was modifiednet/smc/smc_close.h (diff)
Commit e183d4e414b64711baf7a04e214b61969ca08dfa by davem
net/smc: fix a NULL pointer dereference
In case alloc_ordered_workqueue fails, the fix returns NULL to avoid
NULL pointer dereference.
Signed-off-by: Kangjie Lu <kjlu@umn.edu> Signed-off-by: Ursula Braun
<ubraun@linux.ibm.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/smc/smc_ism.c (diff)
Commit 07603b230895a74ebb1e2a1231ac45c29c2a8cd3 by davem
net/smc: propagate file from SMC to TCP socket
fcntl(fd, F_SETOWN, getpid()) selects the recipient of SIGURG signals
that are delivered when out-of-band data arrives on socket fd. If an SMC
socket program makes use of such an fcntl() call, it fails in case of
fallback to TCP-mode. In case of fallback the traffic is processed with
the internal TCP socket. Propagating field "file" from the SMC socket to
the internal TCP socket fixes the issue.
Reviewed-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: Ursula
Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/net/sock.h (diff)
The file was modifiednet/smc/af_smc.c (diff)
Commit 8ef659f1a840c953a59442ff1400ec73baf3b601 by davem
net/smc: fix return code from FLUSH command
The FLUSH command is used to empty the pnet table. No return code is
expected from the command. Commit a9d8b0b1e3d6 added namespace support
for the pnet table and changed the FLUSH command processing to call
smc_pnet_remove_by_pnetid() to remove the pnet entries. This function
returns -ENOENT when no entry was deleted, which is now the return code
of the FLUSH command. As a result the FLUSH command will return an error
when the pnet table is already empty. Restore the expected behavior and
let FLUSH always return 0.
Fixes: a9d8b0b1e3d6 ("net/smc: add pnet table namespace support")
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by:
Ursula Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/smc/smc_pnet.c (diff)
Commit f61bca58f6c36e666c2b807697f25e5e98708162 by davem
net/smc: move unhash before release of clcsock
Commit <26d92e951fe0>
("net/smc: move unhash as early as possible in smc_release()") fixes one
occurrence in the smc code, but the same pattern exists in other places.
This patch covers the remaining occurrences and makes sure, the unhash
operation is done before the smc->clcsock is released. This avoids a
potential use-after-free in smc_diag_dump().
Reviewed-by: Karsten Graul <kgraul@linux.ibm.com> Signed-off-by: Ursula
Braun <ubraun@linux.ibm.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/smc/af_smc.c (diff)
Commit 5ee15c101f29e0093ffb5448773ccbc786eb313b by davem
net: thunderx: raise XDP MTU to 1508
The thunderx driver splits frames bigger than 1530 bytes to multiple
pages, making impossible to run an eBPF program on it. This leads to a
maximum MTU of 1508 if QinQ is in use.
The thunderx driver forbids to load an eBPF program if the MTU is higher
than 1500 bytes. Raise the limit to 1508 so it is possible to use L2
protocols which need some more headroom.
Fixes: 05c773f52b96e ("net: thunderx: Add basic XDP support")
Signed-off-by: Matteo Croce <mcroce@redhat.com> Acked-by: Jesper
Dangaard Brouer <brouer@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_main.c (diff)
Commit 1f227d16083b2e280b7dde4ca78883d75593f2fd by davem
net: thunderx: don't allow jumbo frames with XDP
The thunderx driver forbids to load an eBPF program if the MTU is too
high, but this can be circumvented by loading the eBPF, then raising the
MTU.
Fix this by limiting the MTU if an eBPF program is already loaded.
Fixes: 05c773f52b96e ("net: thunderx: Add basic XDP support")
Signed-off-by: Matteo Croce <mcroce@redhat.com> Acked-by: Jesper
Dangaard Brouer <brouer@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_main.c (diff)
Commit c5b493ce192bd7a4e7bd073b5685aad121eeef82 by davem
net: bridge: multicast: use rcu to access port list from
br_multicast_start_querier
br_multicast_start_querier() walks over the port list but it can be
called from a timer with only multicast_lock held which doesn't protect
the port list, so use RCU to walk over it.
Fixes: c83b8fab06fc ("bridge: Restart queries when last querier
expires") Signed-off-by: Nikolay Aleksandrov
<nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/bridge/br_multicast.c (diff)
Commit 7c2bd9a39845bfb6d72ddb55ce737650271f6f96 by trond.myklebust
NFS: Forbid setting AF_INET6 to "struct sockaddr_in"->sin_family.
syzbot is reporting uninitialized value at rpc_sockaddr2uaddr() [1].
This is because syzbot is setting AF_INET6 to "struct
sockaddr_in"->sin_family
(which is embedded into user-visible "struct nfs_mount_data" structure)
despite nfs23_validate_mount_data() cannot pass sizeof(struct
sockaddr_in6) bytes of AF_INET6 address to rpc_sockaddr2uaddr().
Since "struct nfs_mount_data" structure is user-visible, we can't change
"struct nfs_mount_data" to use "struct sockaddr_storage". Therefore,
assuming that everybody is using AF_INET family when passing address via
"struct nfs_mount_data"->addr, reject if its sin_family is not AF_INET.
[1]
https://syzkaller.appspot.com/bug?id=599993614e7cbbf66bc2656a919ab2a95fb5d75c
Reported-by: syzbot
<syzbot+047a11c361b872896a4f@syzkaller.appspotmail.com> Signed-off-by:
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Signed-off-by: Trond
Myklebust <trond.myklebust@hammerspace.com>
The file was modifiedfs/nfs/super.c (diff)
Commit 29e7ca715f2a0b6c0a99b1aec1b0956d1f271955 by trond.myklebust
NFS: Fix handling of reply page vector
NFSv4 GETACL and FS_LOCATIONS requests stopped working in v5.1-rc.
These two need the extra padding to be added directly to the reply
length.
Reported-by: Olga Kornievskaia <aglo@umich.edu> Fixes: 02ef04e432ba
("NFS: Account for XDR pad of buf->pages") Signed-off-by: Chuck Lever
<chuck.lever@oracle.com> Tested-by: Olga Kornievskaia <aglo@umich.edu>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
The file was modifiedfs/nfs/nfs4xdr.c (diff)
Commit e1ede312f17e96a9c5cda9aaa1cdcf442c1a5da8 by trond.myklebust
xprtrdma: Fix helper that drains the transport
We want to drain only the RQ first. Otherwise the transport can deadlock
on ->close if there are outstanding Send completions.
Fixes: 6d2d0ee27c7a ("xprtrdma: Replace rpcrdma_receive_wq ... ")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Cc:
stable@vger.kernel.org # v5.0+ Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com>
The file was modifiednet/sunrpc/xprtrdma/verbs.c (diff)
Commit 0769663b4f580566ef6cdf366f3073dbe8022c39 by trond.myklebust
NFSv4.1 fix incorrect return value in copy_file_range
According to the NFSv4.2 spec if the input and output file is the same
file, operation should fail with EINVAL. However, linux
copy_file_range() system call has no such restrictions. Therefore, in
such case let's return EOPNOTSUPP and allow VFS to fallback to doing
do_splice_direct(). Also when copy_file_range is called on an NFSv4.0 or
4.1 mount (ie., a server that doesn't support COPY functionality), we
also need to return EOPNOTSUPP and fallback to a regular copy.
Fixes xfstest generic/075, generic/091, generic/112, generic/263 for all
NFSv4.x versions.
Signed-off-by: Olga Kornievskaia <kolga@netapp.com> Signed-off-by: Trond
Myklebust <trond.myklebust@hammerspace.com>
The file was modifiedfs/nfs/nfs42proc.c (diff)
The file was modifiedfs/nfs/nfs4file.c (diff)
Commit af6b61d7ef58099c82d854395a0e002be6bd036c by trond.myklebust
Revert "SUNRPC: Micro-optimise when the task is known not to be
sleeping"
This reverts commit 009a82f6437490c262584d65a14094a818bcb747.
The ability to optimise here relies on compiler being able to optimise
away tail calls to avoid stack overflows. Unfortunately, we are seeing
reports of problems, so let's just revert.
Reported-by: Daniel Mack <daniel@zonque.org> Signed-off-by: Trond
Myklebust <trond.myklebust@hammerspace.com>
The file was modifiedinclude/linux/sunrpc/sched.h (diff)
The file was modifiednet/sunrpc/clnt.c (diff)
Commit 99834eead2a04e93a120abb112542b87c42ff5e1 by daniel.lezcano
clocksource/drivers/npcm: select TIMER_OF
When this is disabled, we get a link failure:
drivers/clocksource/timer-npcm7xx.o: In function `npcm7xx_timer_init':
timer-npcm7xx.c:(.init.text+0xf): undefined reference to `timer_of_init'
Fixes: 1c00289ecd12 ("clocksource/drivers/npcm: Add NPCM7xx timer
driver") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by:
Daniel Lezcano <daniel.lezcano@linaro.org>
The file was modifieddrivers/clocksource/Kconfig (diff)
Commit 9155697e20040658438b89e4ceec415ec125f478 by daniel.lezcano
clocksource/drivers/arm_arch_timer: Remove unneeded pr_fmt macro
After this commit ded24019b6b6f(clocksource: arm_arch_timer: clean up
printk usage), the previous macro is redundant, so delete it.
And move the new macro to the previous position.
Signed-off-by: Yangtao Li <tiny.windzz@gmail.com> Signed-off-by: Daniel
Lezcano <daniel.lezcano@linaro.org>
The file was modifieddrivers/clocksource/arm_arch_timer.c (diff)
Commit fbc87aa0f7c429999dc31f1bac3b2615008cac32 by daniel.lezcano
clocksource/drivers/oxnas: Fix OX820 compatible
The OX820 compatible is wrong is the driver, fix it.
Fixes: 2ea3401e2a84 ("clocksource/drivers/oxnas: Add OX820 compatible")
Reported-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: Neil
Armstrong <narmstrong@baylibre.com> Signed-off-by: Daniel Lezcano
<daniel.lezcano@linaro.org>
The file was modifieddrivers/clocksource/timer-oxnas-rps.c (diff)
Commit d7c3a206e6338e4ccdf030719dec028e26a521d5 by davem
net: fec: manage ahb clock in runtime pm
Some SOC like i.MX6SX clock have some limits:
- ahb clock should be disabled before ipg.
- ahb and ipg clocks are required for MAC MII bus. So, move the ahb
clock to runtime management together with ipg clock.
Signed-off-by: Fugang Duan <fugang.duan@nxp.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/freescale/fec_main.c (diff)
Commit d3706566ae3d92677b932dd156157fd6c72534b1 by davem
net: netrom: Fix error cleanup path of nr_proto_init
Syzkaller report this:
BUG: unable to handle kernel paging request at fffffbfff830524b PGD
237fe8067 P4D 237fe8067 PUD 237e64067 PMD 1c9716067 PTE 0 Oops: 0000
[#1] SMP KASAN PTI CPU: 1 PID: 4465 Comm: syz-executor.0 Not tainted
5.0.0+ #5 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.10.2-1ubuntu1 04/01/2014 RIP: 0010:__list_add_valid+0x21/0xe0
lib/list_debug.c:23 Code: 8b 0c 24 e9 17 fd ff ff 90 55 48 89 fd 48 8d
7a 08 53 48 89 d3 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 48
83 ec 08 <80> 3c 02 00 0f 85 8b 00 00 00 48 8b 53 08 48 39 f2 75 35 48
89 f2 RSP: 0018:ffff8881ea2278d0 EFLAGS: 00010282 RAX: dffffc0000000000
RBX: ffffffffc1829250 RCX: 1ffff1103d444ef4 RDX: 1ffffffff830524b RSI:
ffffffff85659300 RDI: ffffffffc1829258 RBP: ffffffffc1879250 R08:
fffffbfff0acb269 R09: fffffbfff0acb269 R10: ffff8881ea2278f0 R11:
fffffbfff0acb268 R12: ffffffffc1829250 R13: dffffc0000000000 R14:
0000000000000008 R15: ffffffffc187c830 FS:  00007fe0361df700(0000)
GS:ffff8881f7300000(0000) knlGS:0000000000000000 CS:  0010 DS: 0000 ES:
0000 CR0: 0000000080050033 CR2: fffffbfff830524b CR3: 00000001eb39a001
CR4: 00000000007606e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400 PKRU: 55555554 Call Trace:
__list_add include/linux/list.h:60 [inline]
list_add include/linux/list.h:79 [inline]
proto_register+0x444/0x8f0 net/core/sock.c:3375
nr_proto_init+0x73/0x4b3 [netrom]
? 0xffffffffc1628000
? 0xffffffffc1628000
do_one_initcall+0xbc/0x47d init/main.c:887
do_init_module+0x1b5/0x547 kernel/module.c:3456
load_module+0x6405/0x8c10 kernel/module.c:3804
__do_sys_finit_module+0x162/0x190 kernel/module.c:3898
do_syscall_64+0x9f/0x450 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:00007fe0361dec58
EFLAGS: 00000246 ORIG_RAX: 0000000000000139 RAX: ffffffffffffffda RBX:
000000000073bf00 RCX: 0000000000462e99 RDX: 0000000000000000 RSI:
0000000020000100 RDI: 0000000000000003 RBP: 00007fe0361dec70 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007fe0361df6bc R13: 00000000004bcefa R14:
00000000006f6fb0 R15: 0000000000000004 Modules linked in: netrom(+) ax25
fcrypt pcbc af_alg arizona_ldo1 v4l2_common videodev media
v4l2_dv_timings hdlc ide_cd_mod snd_soc_sigmadsp_regmap snd_soc_sigmadsp
intel_spi_platform intel_spi mtd spi_nor snd_usbmidi_lib usbcore lcd
ti_ads7950 hi6421_regulator snd_soc_kbl_rt5663_max98927
snd_soc_hdac_hdmi snd_hda_ext_core snd_hda_core snd_soc_rt5663
snd_soc_core snd_pcm_dmaengine snd_compress snd_soc_rl6231 mac80211
rtc_rc5t583 spi_slave_time leds_pwm hid_gt683r hid
industrialio_triggered_buffer kfifo_buf industrialio ir_kbd_i2c rc_core
led_class_flash dwc_xlgmac snd_ymfpci gameport snd_mpu401_uart
snd_rawmidi snd_ac97_codec snd_pcm ac97_bus snd_opl3_lib snd_timer
snd_seq_device snd_hwdep snd soundcore iptable_security iptable_raw
iptable_mangle iptable_nat 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 vxcan batman_adv cfg80211 rfkill
chnl_net caif nlmon dummy team bonding vcan
bridge stp llc ip6_gre gre ip6_tunnel tunnel6 tun joydev mousedev ppdev
tpm kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul crc32c_intel
ghash_clmulni_intel ide_pci_generic piix aesni_intel aes_x86_64
crypto_simd cryptd glue_helper ide_core psmouse input_leds i2c_piix4
serio_raw intel_agp intel_gtt ata_generic agpgart pata_acpi parport_pc
rtc_cmos parport floppy sch_fq_codel ip_tables x_tables sha1_ssse3
sha1_generic ipv6 [last unloaded: rxrpc] Dumping ftrace buffer:
  (ftrace buffer empty) CR2: fffffbfff830524b
---[ end trace 039ab24b305c4b19 ]---
If nr_proto_init failed, it may forget to call proto_unregister,
tiggering this issue.This patch rearrange code of nr_proto_init to avoid
such issues.
Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: YueHaibing
<yuehaibing@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/net/netrom.h (diff)
The file was modifiednet/netrom/sysctl_net_netrom.c (diff)
The file was modifiednet/netrom/nr_loopback.c (diff)
The file was modifiednet/netrom/nr_route.c (diff)
The file was modifiednet/netrom/af_netrom.c (diff)
Commit a5f622984a623df9a84cf43f6b098d8dd76fbe05 by davem
selftests: fib_tests: Fix 'Command line is not complete' errors
A couple of tests are verifying a route has been removed. The helper
expects the prefix as the first part of the expected output. When
checking that a route has been deleted the prefix is empty leading to an
invalid ip command:
  $ ip ro ls match
Command line is not complete. Try option "help"
Fix by moving the comparison of expected output and output to a new
function that is used by both check_route and check_route6. Use the new
helper for the 2 checks on route removal.
Also, remove the reset of 'set -x' in route_setup which overrides the
user managed setting.
Fixes: d69faad76584c ("selftests: fib_tests: Add prefix route tests with
metric") Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiedtools/testing/selftests/net/fib_tests.sh (diff)
Commit a89afe58f1a74aac768a5eb77af95ef4ee15beaa by axboe
block: fix the return errno for direct IO
If the last bio returned is not dio->bio, the status of the bio will not
assigned to dio->bio if it is error. This will cause the whole IO status
wrong.
    ksoftirqd/21-117   [021] ..s.  4017.966090:   8,0    C   N 4883648
[0]
         <idle>-0     [018] ..s.  4017.970888:   8,0    C  WS 4924800 +
1024 [0]
         <idle>-0     [018] ..s.  4017.970909:   8,0    D  WS 4935424 +
1024 [<idle>]
         <idle>-0     [018] ..s.  4017.970924:   8,0    D  WS 4936448 +
321 [<idle>]
   ksoftirqd/21-117   [021] ..s.  4017.995033:   8,0    C   R 4883648 +
336 [65475]
   ksoftirqd/21-117   [021] d.s.  4018.001988: myprobe1:
(blkdev_bio_end_io+0x0/0x168) bi_status=7
   ksoftirqd/21-117   [021] d.s.  4018.001992: myprobe:
(aio_complete_rw+0x0/0x148) x0=0xffff802f2595ad80 res=0x12a000 res2=0x0
We always have to assign bio->bi_status to dio->bio.bi_status because we
will only check dio->bio.bi_status when we return the whole IO to the
upper layer.
Fixes: 542ff7bf18c6 ("block: new direct I/O implementation") Cc:
stable@vger.kernel.org Cc: Christoph Hellwig <hch@lst.de> Cc: Jens Axboe
<axboe@kernel.dk> Reviewed-by: Ming Lei <ming.lei@redhat.com>
Signed-off-by: Jason Yan <yanaijie@huawei.com> Signed-off-by: Jens Axboe
<axboe@kernel.dk>
The file was modifiedfs/block_dev.c (diff)
Commit e3058450965972e67cc0e5492c08c4cdadafc134 by davem
dctcp: more accurate tracking of packets delivery
After commit e21db6f69a95 ("tcp: track total bytes delivered with ECN CE
marks") core TCP stack does a very good job tracking ECN signals.
The "sender's best estimate of CE information" Yuchung mentioned in his
patch is indeed the best we can do.
DCTCP can use tp->delivered_ce and tp->delivered to not duplicate the
logic, and use the existing best estimate.
This solves some problems, since current DCTCP logic does not deal with
losses and/or GRO or ack aggregation very well.
This also removes a dubious use of inet_csk(sk)->icsk_ack.rcv_mss
(this should have been tp->mss_cache), and a 64 bit divide.
Finally, we can see that the DCTCP logic, calling dctcp_update_alpha()
for every ACK could be done differently, calling it only once per RTT.
Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Yuchung Cheng
<ycheng@google.com> Cc: Neal Cardwell <ncardwell@google.com> Cc: Soheil
Hassas Yeganeh <soheil@google.com> Cc: Florian Westphal <fw@strlen.de>
Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: Lawrence Brakmo
<brakmo@fb.com> Cc: Abdul Kabbani <akabbani@google.com> Acked-by: Soheil
Hassas Yeganeh <soheil@google.com> Acked-by: Neal Cardwell
<ncardwell@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv4/tcp_dctcp.c (diff)
Commit d15d9fd02575ecfada92d42f655940c4f10af842 by a.hajda
drm: bridge: dw-hdmi: Fix overflow workaround for Rockchip SoCs
The Rockchip RK3288 SoC (v2.00a) and RK3328/RK3399 SoCs (v2.11a) have
also been identified as needing this workaround with a single iteration.
Fixes: be41fc55f1aa ("drm: bridge: dw-hdmi: Handle overflow workaround
based on device version") Signed-off-by: Jonas Karlman <jonas@kwiboo.se>
Tested-by: Heiko Stueber <heiko@sntech.de> Signed-off-by: Andrzej Hajda
<a.hajda@samsung.com> Link:
https://patchwork.freedesktop.org/patch/msgid/AM3PR03MB0966818FAAAE6192FF4ED11AAC7D0@AM3PR03MB0966.eurprd03.prod.outlook.com
The file was modifieddrivers/gpu/drm/bridge/synopsys/dw-hdmi.c (diff)
Commit 1d54ad944074010609562da5c89e4f5df2f4e5db by mingo
perf/core: Fix perf_event_disable_inatomic() race
Thomas-Mich Richter reported he triggered a WARN()ing from
event_function_local() on his s390. The problem boils down to:
CPU-A CPU-B
perf_event_overflow()
  perf_event_disable_inatomic()
    @pending_disable = 1
    irq_work_queue();
sched-out
  event_sched_out()
    @pending_disable = 0
sched-in
perf_event_overflow()
  perf_event_disable_inatomic()
    @pending_disable = 1;
    irq_work_queue(); // FAILS
irq_work_run()
  perf_pending_event()
    if (@pending_disable)
      perf_event_disable_local(); // WHOOPS
The problem exists in generic, but s390 is particularly sensitive
because it doesn't implement arch_irq_work_raise(), nor does it call
irq_work_run() from it's PMU interrupt handler (nor would that be
sufficient in this case, because s390 also generates
perf_event_overflow() from pmu::stop). Add to that the fact that s390 is
a virtual architecture and (virtual) CPU-A can stall long enough for the
above race to happen, even if it would self-IPI.
Adding a irq_work_sync() to event_sched_in() would work for all hardare
PMUs that properly use irq_work_run() but fails for software PMUs.
Instead encode the CPU number in @pending_disable, such that we can tell
which CPU requested the disable. This then allows us to detect the above
scenario and even redirect the IPI to make up for the failed queue.
Reported-by: Thomas-Mich Richter <tmricht@linux.ibm.com> Tested-by:
Thomas Richter <tmricht@linux.ibm.com> Signed-off-by: Peter Zijlstra
(Intel) <peterz@infradead.org> Acked-by: Mark Rutland
<mark.rutland@arm.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo
<acme@redhat.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc:
Hendrik Brueckner <brueckner@linux.ibm.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: Kees Cook <keescook@chromium.org> Cc: Linus
Torvalds <torvalds@linux-foundation.org> Cc: Martin Schwidefsky
<schwidefsky@de.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar
<mingo@kernel.org>
The file was modifiedkernel/events/core.c (diff)
The file was modifiedkernel/events/ring_buffer.c (diff)
Commit 837f74116585dcd235fae1696e1e1471b6bb9e01 by steffen.klassert
xfrm: update doc about xfrm[46]_gc_thresh
Those entries are not used anymore.
CC: Florian Westphal <fw@strlen.de> Fixes: 09c7570480f7 ("xfrm: remove
flow cache") Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
The file was modifiedDocumentation/networking/ip-sysctl.txt (diff)
Commit f16628d6e8c6616b071ffe775908b95e07404cab by miguel.ojeda.sandonis
clang-format: Update with the latest for_each macro list
Re-run the shell fragment that generated the original list now that
there are two dozens of new entries after v5.1's merge window.
Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
The file was modified.clang-format (diff)
Commit 3c677d206210f53a4be972211066c0f1cd47fe12 by jroedel
iommu/amd: Set exclusion range correctly
The exlcusion range limit register needs to contain the base-address of
the last page that is part of the range, as bits 0-11 of this register
are treated as 0xfff by the hardware for comparisons.
So correctly set the exclusion range in the hardware to the last page
which is _in_ the range.
Fixes: b2026aa2dce44 ('x86, AMD IOMMU: add functions for programming
IOMMU MMIO space') Signed-off-by: Joerg Roedel <jroedel@suse.de>
The file was modifieddrivers/iommu/amd_iommu_init.c (diff)
Commit 045afc24124d80c6998d9c770844c67912083506 by will.deacon
arm64: futex: Fix FUTEX_WAKE_OP atomic ops with non-zero result value
Rather embarrassingly, our futex() FUTEX_WAKE_OP implementation doesn't
explicitly set the return value on the non-faulting path and instead
leaves it holding the result of the underlying atomic operation. This
means that any FUTEX_WAKE_OP atomic operation which computes a non-zero
value will be reported as having failed. Regrettably, I wrote the buggy
code back in 2011 and it was upstreamed as part of the initial arm64
support in 2012.
The reasons we appear to get away with this are:
  1. FUTEX_WAKE_OP is rarely used and therefore doesn't appear to get
    exercised by futex() test applications
  2. If the result of the atomic operation is zero, the system call
    behaves correctly
  3. Prior to version 2.25, the only operation used by GLIBC set the
    futex to zero, and therefore worked as expected. From 2.25 onwards,
    FUTEX_WAKE_OP is not used by GLIBC at all.
Fix the implementation by ensuring that the return value is either 0 to
indicate that the atomic operation completed successfully, or -EFAULT if
we encountered a fault when accessing the user mapping.
Cc: <stable@kernel.org> Fixes: 6170a97460db ("arm64: Atomic operations")
Signed-off-by: Will Deacon <will.deacon@arm.com>
The file was modifiedarch/arm64/include/asm/futex.h (diff)
Commit b575f10dbd6f84c2c8744ff1f486bfae1e4f6f38 by alexander.deucher
drm/amdgpu: shadow in shadow_list without tbo.mem.start cause page fault
in sriov TDR
shadow was added into shadow_list by amdgpu_bo_create_shadow. meanwhile,
shadow->tbo.mem was not fully configured. tbo.mem would be fully
configured by amdgpu_vm_sdma_map_table until calling amdgpu_vm_clear_bo.
If sriov TDR occurred between amdgpu_bo_create_shadow and
amdgpu_vm_sdma_map_table, amdgpu_device_recover_vram would deal with
shadow without tbo.mem.start.
Signed-off-by: Wentao Lou <Wentao.Lou@amd.com> Reviewed-by: Christian
König <christian.koenig@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/amdgpu/amdgpu_device.c (diff)
Commit 1925e7d3d4677e681cc2e878c2bdbeaee988c8e2 by alexander.deucher
drm/amdgpu/gmc9: fix VM_L2_CNTL3 programming
Got accidently dropped when 2+1 level support was added.
Fixes: 6a42fd6fbf534096 ("drm/amdgpu: implement 2+1 PD support for Raven
v3") Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc:
stable@vger.kernel.org
The file was modifieddrivers/gpu/drm/amd/amdgpu/mmhub_v1_0.c (diff)
Commit b3cf181c65c4d49f86b67b399fe7203ecac730a9 by sboyd
clk: mediatek: fix clk-gate flag setting
CLK_SET_RATE_PARENT would be dropped. Merge two flag setting together to
correct the error.
Fixes: 5a1cc4c27ad2 ("clk: mediatek: Add flags to mtk_gate") Cc:
<stable@vger.kernel.org> Signed-off-by: Weiyi Lu <weiyi.lu@mediatek.com>
Reviewed-by: Matthias Brugger <matthias.bgg@gmail.com> Signed-off-by:
Stephen Boyd <sboyd@kernel.org>
The file was modifieddrivers/clk/mediatek/clk-gate.c (diff)
Commit dd3ac9a684358b8c1d5c432ca8322aaf5e4f28ee by davem
net/rds: Check address length before reading address family
syzbot is reporting uninitialized value at rds_connect() [1] and
rds_bind() [2]. This is because syzbot is passing ulen == 0 whereas
these functions expect that it is safe to access sockaddr->family field
in order to determine minimal address length for validation.
[1]
https://syzkaller.appspot.com/bug?id=f4e61c010416c1e6f0fa3ffe247561b60a50ad71
[2]
https://syzkaller.appspot.com/bug?id=a4bf9e41b7e055c3823fdcd83e8c58ca7270e38f
Reported-by: syzbot
<syzbot+0049bebbf3042dbd2e8f@syzkaller.appspotmail.com> Reported-by:
syzbot <syzbot+915c9f99f3dbc4bd6cd1@syzkaller.appspotmail.com>
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/rds/bind.c (diff)
The file was modifiednet/rds/af_rds.c (diff)
Commit 238ffdc49ef98b15819cfd5e3fb23194e3ea3d39 by davem
mISDN: Check address length before reading address family
KMSAN will complain if valid address length passed to bind() is shorter
than sizeof("struct sockaddr_mISDN"->family) bytes.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/isdn/mISDN/socket.c (diff)
Commit 175f7c1f01d30b2088491bee4636fbf846fb76ce by davem
sctp: Check address length before reading address family
KMSAN will complain if valid address length passed to connect() is
shorter than sizeof("struct sockaddr"->sa_family) bytes.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Acked-by: Neil Horman <nhorman@tuxdriver.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/sctp/socket.c (diff)
Commit d852be84770c0611f8b76bd7046c6a814c5b9f11 by davem
net: netlink: Check address length before reading groups field
KMSAN will complain if valid address length passed to bind() is shorter
than sizeof(struct sockaddr_nl) bytes.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/netlink/af_netlink.c (diff)
Commit a9107a14a9b9112775459ad291fc5de0f2513ce0 by davem
rxrpc: Check address length before reading srx_service field
KMSAN will complain if valid address length passed to bind() is shorter
than sizeof(struct sockaddr_rxrpc) bytes.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/rxrpc/af_rxrpc.c (diff)
Commit bd7d46ddca06f1fadd68ceb99bc6e6f808ab50f2 by davem
Bluetooth: Check address length before reading address field
KMSAN will complain if valid address length passed to bind() is shorter
than sizeof(struct sockaddr_sco) bytes.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/bluetooth/sco.c (diff)
Commit c68e747d0a98f44a4e49071940a692fa83630e47 by davem
llc: Check address length before reading address field
KMSAN will complain if valid address length passed to bind() is shorter
than sizeof(struct sockaddr_llc) bytes.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/llc/af_llc.c (diff)
Commit ba024f2574a19557f92116ec6be129b26ae66e97 by davem
bpf: Check address length before reading address family
KMSAN will complain if valid address length passed to bpf_bind() is
shorter than sizeof("struct sockaddr"->sa_family) bytes.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Acked-by: Andrey Ignatov <rdna@fb.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/core/filter.c (diff)
Commit bddc028a4f2ac8cf4d0cd1c696b5f95d8305a553 by davem
udpv6: Check address length before reading address family
KMSAN will complain if valid address length passed to
udpv6_pre_connect() is shorter than sizeof("struct sockaddr"->sa_family)
bytes.
(This patch is bogus if it is guaranteed that udpv6_pre_connect() is
always called after checking "struct sockaddr"->sa_family. In that case,
we want a comment why we don't need to check valid address length here.)
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Acked-by: Song Liu <songliubraving@fb.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/ipv6/udp.c (diff)
Commit 2170e2157d7c5398f84477935553d63a93a1f6b8 by kvalo
mt76: mt7603: add missing initialization for dev->ps_lock
Fixes lockdep complaint and a potential race condition
Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Kalle Valo
<kvalo@codeaurora.org>
The file was modifieddrivers/net/wireless/mediatek/mt76/mt7603/init.c (diff)
Commit aa3cb24be18b9b537750c354c5cff96c3d17ae44 by kvalo
mt76: mt7603: fix sequence number assignment
If the MT_TXD3_SN_VALID flag is not set in the tx descriptor, the
hardware assigns the sequence number. However, the rest of the code
assumes that the sequence number specified in the 802.11 header gets
transmitted. This was causing issues with the aggregation setup, which
worked for the initial one (where the sequence numbers were still
close), but not for further teardown/re-establishing of sessions.
Additionally, the overwrite of the TID sequence number in WTBL2 was
resetting the hardware assigned sequence numbers, causing them to drift
further apart.
Fix this by using the software assigned sequence numbers
Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Kalle Valo
<kvalo@codeaurora.org>
The file was modifieddrivers/net/wireless/mediatek/mt76/mt7603/main.c (diff)
The file was modifieddrivers/net/wireless/mediatek/mt76/mt7603/mt7603.h (diff)
The file was modifieddrivers/net/wireless/mediatek/mt76/mt7603/mac.c (diff)
Commit 9dc27bcbe78c5d3926f48b1105840f349c827766 by kvalo
mt76: mt7603: send BAR after powersave wakeup
Now that the sequence number allocation is fixed, we can finally send a
BAR at powersave wakeup time to refresh the receiver side reorder window
Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Kalle Valo
<kvalo@codeaurora.org>
The file was modifieddrivers/net/wireless/mediatek/mt76/mt7603/main.c (diff)
Commit 746ba11f170603bf1eaade817553a6c2e9135bbe by kvalo
rt2x00: do not increment sequence number while re-transmitting
Currently rt2x00 devices retransmit the management frames with
incremented sequence number if hardware is assigning the sequence.
This is HW bug fixed already for non-QOS data frames, but it should be
fixed for management frames except beacon.
Without fix retransmitted frames have wrong SN:
AlphaNet_e8:fb:36 Vivotek_52:31:51 Authentication, SN=1648, FN=0,
Flags=........C Frame is not being retransmitted 1648 1
AlphaNet_e8:fb:36 Vivotek_52:31:51 Authentication, SN=1649, FN=0,
Flags=....R...C Frame is being retransmitted 1649 1
AlphaNet_e8:fb:36 Vivotek_52:31:51 Authentication, SN=1650, FN=0,
Flags=....R...C Frame is being retransmitted 1650 1
With the fix SN stays correctly the same:
88:6a:e3:e8:f9:a2 8c:f5:a3:88:76:87 Authentication, SN=1450, FN=0,
Flags=........C
88:6a:e3:e8:f9:a2 8c:f5:a3:88:76:87 Authentication, SN=1450, FN=0,
Flags=....R...C
88:6a:e3:e8:f9:a2 8c:f5:a3:88:76:87 Authentication, SN=1450, FN=0,
Flags=....R...C
Cc: stable@vger.kernel.org Signed-off-by: Vijayakumar Durai
<vijayakumar.durai1@vivint.com>
[sgruszka: simplify code, change comments and changelog] Signed-off-by:
Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: Kalle Valo
<kvalo@codeaurora.org>
The file was modifieddrivers/net/wireless/ralink/rt2x00/rt2x00.h (diff)
The file was modifieddrivers/net/wireless/ralink/rt2x00/rt2x00mac.c (diff)
The file was modifieddrivers/net/wireless/ralink/rt2x00/rt2x00queue.c (diff)
Commit bafdf85dfa59374f927ff597bc8c259193afda30 by kvalo
mt76x02: avoid status_list.lock and sta->rate_ctrl_lock dependency
Move ieee80211_tx_status_ext() outside of status_list lock section in
order to avoid locking dependency and possible deadlock reposed by
LOCKDEP in below warning.
Also do mt76_tx_status_lock() just before it's needed.
[  440.224832] WARNING: possible circular locking dependency detected
[  440.224833] 5.1.0-rc2+ #22 Not tainted
[  440.224834] ------------------------------------------------------
[  440.224835] kworker/u16:28/2362 is trying to acquire lock:
[  440.224836] 0000000089b8cacf (&(&q->lock)->rlock#2){+.-.}, at:
mt76_wake_tx_queue+0x4c/0xb0 [mt76]
[  440.224842]
              but task is already holding lock:
[  440.224842] 000000002cfedc59 (&(&sta->lock)->rlock){+.-.}, at:
ieee80211_stop_tx_ba_cb+0x32/0x1f0 [mac80211]
[  440.224863]
              which lock already depends on the new lock.
[  440.224863]
              the existing dependency chain (in reverse order) is:
[  440.224864]
              -> #3 (&(&sta->lock)->rlock){+.-.}:
[  440.224869]        _raw_spin_lock_bh+0x34/0x40
[  440.224880]        ieee80211_start_tx_ba_session+0xe4/0x3d0
[mac80211]
[  440.224894]        minstrel_ht_get_rate+0x45c/0x510 [mac80211]
[  440.224906]        rate_control_get_rate+0xc1/0x140 [mac80211]
[  440.224918]        ieee80211_tx_h_rate_ctrl+0x195/0x3c0 [mac80211]
[  440.224930]        ieee80211_xmit_fast+0x26d/0xa50 [mac80211]
[  440.224942]        __ieee80211_subif_start_xmit+0xfc/0x310 [mac80211]
[  440.224954]        ieee80211_subif_start_xmit+0x38/0x390 [mac80211]
[  440.224956]        dev_hard_start_xmit+0xb8/0x300
[  440.224957]        __dev_queue_xmit+0x7d4/0xbb0
[  440.224968]        ip6_finish_output2+0x246/0x860 [ipv6]
[  440.224978]        mld_sendpack+0x1bd/0x360 [ipv6]
[  440.224987]        mld_ifc_timer_expire+0x1a4/0x2f0 [ipv6]
[  440.224989]        call_timer_fn+0x89/0x2a0
[  440.224990]        run_timer_softirq+0x1bd/0x4d0
[  440.224992]        __do_softirq+0xdb/0x47c
[  440.224994]        irq_exit+0xfa/0x100
[  440.224996]        smp_apic_timer_interrupt+0x9a/0x220
[  440.224997]        apic_timer_interrupt+0xf/0x20
[  440.224999]        cpuidle_enter_state+0xc1/0x470
[  440.225000]        do_idle+0x21a/0x260
[  440.225001]        cpu_startup_entry+0x19/0x20
[  440.225004]        start_secondary+0x135/0x170
[  440.225006]        secondary_startup_64+0xa4/0xb0
[  440.225007]
              -> #2 (&(&sta->rate_ctrl_lock)->rlock){+.-.}:
[  440.225009]        _raw_spin_lock_bh+0x34/0x40
[  440.225022]        rate_control_tx_status+0x4f/0xb0 [mac80211]
[  440.225031]        ieee80211_tx_status_ext+0x142/0x1a0 [mac80211]
[  440.225035]        mt76x02_send_tx_status+0x2e4/0x340 [mt76x02_lib]
[  440.225037]        mt76x02_tx_status_data+0x31/0x40 [mt76x02_lib]
[  440.225040]        mt76u_tx_status_data+0x51/0xa0 [mt76_usb]
[  440.225042]        process_one_work+0x237/0x5d0
[  440.225043]        worker_thread+0x3c/0x390
[  440.225045]        kthread+0x11d/0x140
[  440.225046]        ret_from_fork+0x3a/0x50
[  440.225047]
              -> #1 (&(&list->lock)->rlock#8){+.-.}:
[  440.225049]        _raw_spin_lock_bh+0x34/0x40
[  440.225052]        mt76_tx_status_skb_add+0x51/0x100 [mt76]
[  440.225054]        mt76x02u_tx_prepare_skb+0xbd/0x116 [mt76x02_usb]
[  440.225056]        mt76u_tx_queue_skb+0x5f/0x180 [mt76_usb]
[  440.225058]        mt76_tx+0x93/0x190 [mt76]
[  440.225070]        ieee80211_tx_frags+0x148/0x210 [mac80211]
[  440.225081]        __ieee80211_tx+0x75/0x1b0 [mac80211]
[  440.225092]        ieee80211_tx+0xde/0x110 [mac80211]
[  440.225105]        __ieee80211_tx_skb_tid_band+0x72/0x90 [mac80211]
[  440.225122]        ieee80211_send_auth+0x1f3/0x360 [mac80211]
[  440.225141]        ieee80211_auth.cold.40+0x6c/0x100 [mac80211]
[  440.225156]        ieee80211_mgd_auth.cold.50+0x132/0x15f [mac80211]
[  440.225171]        cfg80211_mlme_auth+0x149/0x360 [cfg80211]
[  440.225181]        nl80211_authenticate+0x273/0x2e0 [cfg80211]
[  440.225183]        genl_family_rcv_msg+0x196/0x3a0
[  440.225184]        genl_rcv_msg+0x47/0x8e
[  440.225185]        netlink_rcv_skb+0x3a/0xf0
[  440.225187]        genl_rcv+0x24/0x40
[  440.225188]        netlink_unicast+0x16d/0x210
[  440.225189]        netlink_sendmsg+0x204/0x3b0
[  440.225191]        sock_sendmsg+0x36/0x40
[  440.225193]        ___sys_sendmsg+0x259/0x2b0
[  440.225194]        __sys_sendmsg+0x47/0x80
[  440.225196]        do_syscall_64+0x60/0x1f0
[  440.225197]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
[  440.225198]
              -> #0 (&(&q->lock)->rlock#2){+.-.}:
[  440.225200]        lock_acquire+0xb9/0x1a0
[  440.225202]        _raw_spin_lock_bh+0x34/0x40
[  440.225204]        mt76_wake_tx_queue+0x4c/0xb0 [mt76]
[  440.225215]        ieee80211_agg_start_txq+0xe8/0x2b0 [mac80211]
[  440.225225]        ieee80211_stop_tx_ba_cb+0xb8/0x1f0 [mac80211]
[  440.225235]        ieee80211_ba_session_work+0x1c1/0x2f0 [mac80211]
[  440.225236]        process_one_work+0x237/0x5d0
[  440.225237]        worker_thread+0x3c/0x390
[  440.225239]        kthread+0x11d/0x140
[  440.225240]        ret_from_fork+0x3a/0x50
[  440.225240]
              other info that might help us debug this:
[  440.225241] Chain exists of:
                &(&q->lock)->rlock#2 --> &(&sta->rate_ctrl_lock)->rlock
--> &(&sta->lock)->rlock
[  440.225243]  Possible unsafe locking scenario:
[  440.225244]        CPU0                    CPU1
[  440.225244]        ----                    ----
[  440.225245]   lock(&(&sta->lock)->rlock);
[  440.225245]                              
lock(&(&sta->rate_ctrl_lock)->rlock);
[  440.225246]                              
lock(&(&sta->lock)->rlock);
[  440.225247]   lock(&(&q->lock)->rlock#2);
[  440.225248]
               *** DEADLOCK ***
[  440.225249] 5 locks held by kworker/u16:28/2362:
[  440.225250]  #0: 0000000048fcd291 ((wq_completion)phy0){+.+.}, at:
process_one_work+0x1b5/0x5d0
[  440.225252]  #1: 00000000f1c6828f
((work_completion)(&sta->ampdu_mlme.work)){+.+.}, at:
process_one_work+0x1b5/0x5d0
[  440.225254]  #2: 00000000433d2b2c (&sta->ampdu_mlme.mtx){+.+.}, at:
ieee80211_ba_session_work+0x5c/0x2f0 [mac80211]
[  440.225265]  #3: 000000002cfedc59 (&(&sta->lock)->rlock){+.-.}, at:
ieee80211_stop_tx_ba_cb+0x32/0x1f0 [mac80211]
[  440.225276]  #4: 000000009d7b9a44 (rcu_read_lock){....}, at:
ieee80211_agg_start_txq+0x33/0x2b0 [mac80211]
[  440.225286]
              stack backtrace:
[  440.225288] CPU: 2 PID: 2362 Comm: kworker/u16:28 Not tainted
5.1.0-rc2+ #22
[  440.225289] Hardware name: LENOVO 20KGS23S0P/20KGS23S0P, BIOS
N23ET55W (1.30 ) 08/31/2018
[  440.225300] Workqueue: phy0 ieee80211_ba_session_work [mac80211]
[  440.225301] Call Trace:
[  440.225304]  dump_stack+0x85/0xc0
[  440.225306]  print_circular_bug.isra.38.cold.58+0x15c/0x195
[  440.225307]  check_prev_add.constprop.48+0x5f0/0xc00
[  440.225309]  ? check_prev_add.constprop.48+0x39d/0xc00
[  440.225311]  ? __lock_acquire+0x41d/0x1100
[  440.225312]  __lock_acquire+0xd98/0x1100
[  440.225313]  ? __lock_acquire+0x41d/0x1100
[  440.225315]  lock_acquire+0xb9/0x1a0
[  440.225317]  ? mt76_wake_tx_queue+0x4c/0xb0 [mt76]
[  440.225319]  _raw_spin_lock_bh+0x34/0x40
[  440.225321]  ? mt76_wake_tx_queue+0x4c/0xb0 [mt76]
[  440.225323]  mt76_wake_tx_queue+0x4c/0xb0 [mt76]
[  440.225334]  ieee80211_agg_start_txq+0xe8/0x2b0 [mac80211]
[  440.225344]  ieee80211_stop_tx_ba_cb+0xb8/0x1f0 [mac80211]
[  440.225354]  ieee80211_ba_session_work+0x1c1/0x2f0 [mac80211]
[  440.225356]  process_one_work+0x237/0x5d0
[  440.225358]  worker_thread+0x3c/0x390
[  440.225359]  ? wq_calc_node_cpumask+0x70/0x70
[  440.225360]  kthread+0x11d/0x140
[  440.225362]  ? kthread_create_on_node+0x40/0x40
[  440.225363]  ret_from_fork+0x3a/0x50
Cc: stable@vger.kernel.org Fixes: 88046b2c9f6d ("mt76: add support for
reporting tx status with skb") Signed-off-by: Stanislaw Gruszka
<sgruszka@redhat.com> Acked-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
The file was modifieddrivers/net/wireless/mediatek/mt76/mt76x02_mac.c (diff)
Commit d5bc73f34cc97c4b4b9202cc93182c2515076edf by bhelgaas
PCI: Fix issue with "pci=disable_acs_redir" parameter being ignored
In most cases, kmalloc() will not be available early in boot when
pci_setup() is called.  Thus, the kstrdup() call that was added to fix
the
__initdata bug with the disable_acs_redir parameter usually returns
NULL, so the parameter is discarded and has no effect.
To fix this, store the string that's in initdata until an initcall
function can allocate the memory appropriately.  This way we don't need
any additional static memory.
Fixes: d2fd6e81912a ("PCI: Fix __initdata issue with
"pci=disable_acs_redir" parameter") Signed-off-by: Logan Gunthorpe
<logang@deltatee.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
The file was modifieddrivers/pci/pci.c (diff)
Commit f89b9e1be7da8bb0aac667a0206a00975cefe6d3 by sboyd
clk: imx: Fix PLL_1416X not rounding rates
Code which initializes the "clk_init_data.ops" checks pll->rate_table
before that field is ever assigned to so it always picks
"clk_pll1416x_min_ops".
This breaks dynamic rate rounding for features such as cpufreq.
Fix by checking pll_clk->rate_table instead, here pll_clk refers to the
constant initialization data coming from per-soc clk driver.
Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Fixes:
8646d4dcc7fb ("clk: imx: Add PLLs driver for imx8mm soc") Signed-off-by:
Stephen Boyd <sboyd@kernel.org>
The file was modifieddrivers/clk/imx/clk-pll14xx.c (diff)
Commit 0a2c34f18c94b596562bf3d019fceab998b8b584 by davem
vxge: fix return of a free'd memblock on a failed dma mapping
Currently if a pci dma mapping failure is detected a free'd memblock
address is returned rather than a NULL (that indicates an error). Fix
this by ensuring NULL is returned on this error case.
Addresses-Coverity: ("Use after free") Fixes: 528f727279ae ("vxge: code
cleanup and reorganization") Signed-off-by: Colin Ian King
<colin.king@canonical.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/neterion/vxge/vxge-config.c (diff)
Commit 1dc2b3d65523780ed1972d446c76e62e13f3e8f5 by davem
qede: fix write to free'd pointer error and double free of ptp
The err2 error return path calls qede_ptp_disable that cleans up on an
error and frees ptp. After this, the free'd ptp is dereferenced when
ptp->clock is set to NULL and the code falls-through to error path err1
that frees ptp again.
Fix this by calling qede_ptp_disable and exiting via an error return
path that does not set ptp->clock or kfree ptp.
Addresses-Coverity: ("Write to pointer after free") Fixes: 035744975aec
("qede: Add support for PTP resource locking.") Signed-off-by: Colin Ian
King <colin.king@canonical.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/qlogic/qede/qede_ptp.c (diff)
Commit 56d282d9db19f85f759b7a81f0829b58c00571b0 by davem
rxrpc: Clear socket error
When an ICMP or ICMPV6 error is received, the error will be attached to
the socket (sk_err) and the report function will get called. Clear any
pending error here by calling sock_error().
This would cause the following attempt to use the socket to fail with
the error code stored by the ICMP error, resulting in unexpected errors
with various side effects depending on the context.
Signed-off-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by:
David Howells <dhowells@redhat.com> Tested-by: Jonathan Billings
<jsbillin@umich.edu> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/rxrpc/peer_event.c (diff)
Commit 4611da30d679a4b0a2c2b5d4d7b3fbbafc922df7 by davem
rxrpc: Make rxrpc_kernel_check_life() indicate if call completed
Make rxrpc_kernel_check_life() pass back the life counter through the
argument list and return true if the call has not yet completed.
Suggested-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by:
David Howells <dhowells@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedfs/afs/rxrpc.c (diff)
The file was modifiedinclude/net/af_rxrpc.h (diff)
The file was modifiedDocumentation/networking/rxrpc.txt (diff)
The file was modifiednet/rxrpc/af_rxrpc.c (diff)
Commit 8e8715aaa905f6593f610f950d513e81fab5006a by davem
rxrpc: Allow errors to be returned from rxrpc_queue_packet()
Change rxrpc_queue_packet()'s signature so that it can return any error
code it may encounter when trying to send the packet.
This allows the caller to eventually do something in case of error -
though it should be noted that the packet has been queued and a resend
is scheduled.
Signed-off-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by:
David Howells <dhowells@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/rxrpc/sendmsg.c (diff)
Commit f7f1dd3162efc7ffdbcdb9da1ad1599f8ab51296 by davem
afs: Check for rxrpc call completion in wait loop
Check the state of the rxrpc call backing an afs call in each iteration
of the call wait loop in case the rxrpc call has already been terminated
at the rxrpc layer.
Interrupt the wait loop and mark the afs call as complete if the rxrpc
layer call is complete.
There were cases where rxrpc errors were not passed up to afs, which
could result in this loop waiting forever for an afs call to transition
to AFS_CALL_COMPLETE while the rx call was already complete.
Signed-off-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by:
David Howells <dhowells@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedfs/afs/rxrpc.c (diff)
Commit 39ce67557568962fa9d1593741f76c4cc6762469 by davem
rxrpc: Trace received connection aborts
Trace received calls that are aborted due to a connection abort,
typically because of authentication failure.  Without this, connection
aborts don't show up in the trace log.
Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifiednet/rxrpc/conn_event.c (diff)
Commit 1a2391c30c0b9d041bc340f68df81d49c53546cc by davem
rxrpc: Fix detection of out of order acks
The rxrpc packet serial number cannot be safely used to compute out of
order ack packets for several reasons:
1. The allocation of serial numbers cannot be assumed to imply the
order
   by which acks are populated and transmitted.  In some rxrpc
   implementations, delayed acks and ping acks are transmitted
   asynchronously to the receipt of data packets and so may be
transmitted
   out of order.  As a result, they can race with idle acks.
2. Serial numbers are allocated by the rxrpc connection and not the
call
   and as such may wrap independently if multiple channels are in use.
In any case, what matters is whether the ack packet provides new
information relating to the bounds of the window (the firstPacket and
previousPacket in the ACK data).
Fix this by discarding packets that appear to wind back the window
bounds rather than on serial number procession.
Fixes: 298bc15b2079 ("rxrpc: Only take the rwind and mtu values from
latest ACK") Signed-off-by: Jeffrey Altman <jaltman@auristor.com>
Signed-off-by: David Howells <dhowells@redhat.com> Tested-by: Marc
Dionne <marc.dionne@auristor.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/rxrpc/ar-internal.h (diff)
The file was modifiednet/rxrpc/input.c (diff)
Commit ed0de45a1008991fdaa27a0152befcb74d126a8b by davem
ipv4: recompile ip options in ipv4_link_failure
Recompile IP options since IPCB may not be valid anymore when
ipv4_link_failure is called from arp_error_report.
Refer to the commit 3da1ed7ac398 ("net: avoid use IPCB in
cipso_v4_error") and the commit before that (9ef6b42ad6fd) for a similar
issue.
Signed-off-by: Stephen Suryaputra <ssuryaextr@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/route.c (diff)
Commit ba25b81e3a420f8345585029d49ee32e73de9d5f by dhowells
afs: avoid deprecated get_seconds()
get_seconds() has a limited range on 32-bit architectures and is
deprecated because of that. While AFS uses the same limits for its inode
timestamps on the wire protocol, let's just use the simpler
current_time() as we do for other file systems.
This will still zero out the 'tv_nsec' field of the timestamps
internally.
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: David
Howells <dhowells@redhat.com>
The file was modifiedfs/afs/inode.c (diff)
Commit d2abfa86ff373bd00634a656c7ad5531747f2bf8 by dhowells
afs: Avoid section confusion in CM_NAME
__tracepoint_str cannot be const because the tracepoint_str section is
not read-only. Remove the stray const.
Cc: dhowells@redhat.com Cc: viro@zeniv.linux.org.uk Signed-off-by: Andi
Kleen <ak@linux.intel.com>
The file was modifiedfs/afs/cmservice.c (diff)
Commit 8022c4b95c3793d7ba28ab0701ea15b5deb46e02 by dhowells
afs: Differentiate abort due to unmarshalling from other errors
Differentiate an abort due to an unmarshalling error from an abort due
to other errors, such as ENETUNREACH.  It doesn't make sense to set
abort code RXGEN_*_UNMARSHAL in such a case, so use RX_USER_ABORT
instead.
Signed-off-by: David Howells <dhowells@redhat.com>
The file was modifiedfs/afs/rxrpc.c (diff)
Commit 21bd68f196ca91fc0f3d9bd1b32f6e530e8c1c88 by dhowells
afs: Unlock pages for __pagevec_release()
__pagevec_release() complains loudly if any page in the vector is still
locked.  The pages need to be locked for generic_error_remove_page(),
but that function doesn't actually unlock them.
Unlock the pages afterwards.
Signed-off-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by:
David Howells <dhowells@redhat.com> Tested-by: Jonathan Billings
<jsbillin@umich.edu>
The file was modifiedfs/afs/write.c (diff)
Commit eeba1e9cf31d064284dd1fa7bd6cfe01395bd03d by dhowells
afs: Fix in-progess ops to ignore server-level callback invalidation
The in-kernel afs filesystem client counts the number of server-level
callback invalidation events (CB.InitCallBackState* RPC operations) that
it receives from the server.  This is stored in cb_s_break in various
structures, including afs_server and afs_vnode.
If an inode is examined by afs_validate(), say, the afs_server copy is
compared, along with other break counters, to those in afs_vnode, and if
one or more of the counters do not match, it is considered that the
server's callback promise is broken.  At points where this happens,
AFS_VNODE_CB_PROMISED is cleared to indicate that the status must be
refetched from the server.
afs_validate() issues an FS.FetchStatus operation to get updated
metadata - and based on the updated data_version may invalidate the
pagecache too.
However, the break counters are also used to determine whether to note a
new callback in the vnode (which would set the AFS_VNODE_CB_PROMISED
flag) and whether to cache the permit data included in the
YFSFetchStatus record by the server.
The problem comes when the server sends us a CB.InitCallBackState op.
The first such instance doesn't cause cb_s_break to be incremented, but
rather causes AFS_SERVER_FL_NEW to be cleared - but thereafter, say some
hours after last use and all the volumes have been automatically
unmounted and the server has forgotten about the client[*], this *will*
likely cause an increment.
[*] There are other circumstances too, such as the server restarting or
    needing to make space in its callback table.
Note that the server won't send us a CB.InitCallBackState op until we
talk to it again.
So what happens is:
(1) A mount for a new volume is attempted, a inode is created for the
root
    vnode and vnode->cb_s_break and AFS_VNODE_CB_PROMISED aren't set
    immediately, as we don't have a nominated server to talk to yet -
and
    we may iterate through a few to find one.
(2) Before the operation happens, afs_fetch_status(), say, notes in the
    cursor (fc.cb_break) the break counter sum from the vnode, volume
and
    server counters, but the server->cb_s_break is currently 0.
(3) We send FS.FetchStatus to the server.  The server sends us back
    CB.InitCallBackState.  We increment server->cb_s_break.
(4) Our FS.FetchStatus completes.  The reply includes a callback
record.
(5) xdr_decode_AFSCallBack()/xdr_decode_YFSCallBack() check to see
whether
    the callback promise was broken by checking the break counter sum
from
    step (2) against the current sum.
     This fails because of step (3), so we don't set the callback record
    and, importantly, don't set AFS_VNODE_CB_PROMISED on the vnode.
This does not preclude the syscall from progressing, and we don't loop
here rechecking the status, but rather assume it's good enough for one
round only and will need to be rechecked next time.
(6) afs_validate() it triggered on the vnode, probably called from
    d_revalidate() checking the parent directory.
(7) afs_validate() notes that AFS_VNODE_CB_PROMISED isn't set, so
doesn't
    update vnode->cb_s_break and assumes the vnode to be invalid.
(8) afs_validate() needs to calls afs_fetch_status().  Go back to step
(2)
    and repeat, every time the vnode is validated.
This primarily affects volume root dir vnodes.  Everything subsequent to
those inherit an already incremented cb_s_break upon mounting.
The issue is that we assume that the callback record and the cached
permit information in a reply from the server can't be trusted after
getting a server break - but this is wrong since the server makes sure
things are done in the right order, holding up our ops if necessary[*].
[*] There is an extremely unlikely scenario where a reply from before
the
    CB.InitCallBackState could get its delivery deferred till after - at
    which point we think we have a promise when we don't.  This,
however,
    requires unlucky mass packet loss to one call.
AFS_SERVER_FL_NEW tries to paper over the cracks for the initial mount
from a server we've never contacted before, but this should be
unnecessary. It's also further insulated from the problem on an initial
mount by querying the server first with FS.GetCapabilities, which
triggers the CB.InitCallBackState.
Fix this by
(1) Remove AFS_SERVER_FL_NEW.
(2) In afs_calc_vnode_cb_break(), don't include cb_s_break in the
    calculation.
(3) In afs_cb_is_broken(), don't include cb_s_break in the check.
Signed-off-by: David Howells <dhowells@redhat.com>
The file was modifiedfs/afs/internal.h (diff)
The file was modifiedfs/afs/server.c (diff)
The file was modifiedfs/afs/callback.c (diff)
Commit 183ab39eb0ea9879bb68422a83e65f750f3192f0 by tiwai
ALSA: hda: Initialize power_state field properly
The recent commit 98081ca62cba ("ALSA: hda - Record the current power
state before suspend/resume calls") made the HD-audio driver to store
the PM state in power_state field.  This forgot, however, the
initialization at power up.  Although the codec drivers usually don't
need to refer to this field in the normal operation, let's initialize it
properly for consistency.
Fixes: 98081ca62cba ("ALSA: hda - Record the current power state before
suspend/resume calls") Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/pci/hda/hda_codec.c (diff)
Commit becf2319f320cae43e20cf179cc51a355a0deb5f by pablo
selftests: netfilter: check icmp pkttoobig errors are set as related
When an icmp error such as pkttoobig is received, conntrack checks if
the "inner" header (header of packet that did not fit link mtu) is
matches an existing connection, and, if so, sets that packet as being
related to the conntrack entry it found.
It was recently reported that this "related" setting also works if the
inner header is from another, different connection (i.e.,
artificial/forged icmp error).
Add a test, followup patch will add additional "inner dst matches outer
dst in reverse direction" check before setting related state.
Link: https://www.synacktiv.com/posts/systems/icmp-reachable.html
Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo
Neira Ayuso <pablo@netfilter.org>
The file was modifiedtools/testing/selftests/netfilter/Makefile (diff)
The file was addedtools/testing/selftests/netfilter/conntrack_icmp_related.sh
Commit 1025ce75212bf06d93910297a03ed6a4d41d8213 by pablo
netfilter: conntrack: don't set related state for different outer
address
Luca Moro says:
------ The issue lies in the filtering of ICMP and ICMPv6 errors that
include an inner IP datagram. For these packets, icmp_error_message()
extract the ICMP error and inner layer to search of a known state. If a
state is found the packet is tagged as related (IP_CT_RELATED).
The problem is that there is no correlation check between the inner and
outer layer of the packet. So one can encapsulate an error with an inner
layer matching a known state, while its outer layer is directed to a
filtered host. In this case the whole packet will be tagged as related.
This has various implications from a rule bypass (if a rule to related
trafic is allow), to a known state oracle.
Unfortunately, we could not find a real statement in a RFC on how this
case should be filtered. The closest we found is RFC5927 (Section 4.3)
but it is not very clear.
A possible fix would be to check that the inner IP source is the same
than the outer destination.
We believed this kind of attack was not documented yet, so we started to
write a blog post about it. You can find it attached to this mail (sorry
for the extract quality). It contains more technical details, PoC and
discussion about the identified behavior. We discovered later that
https://www.gont.com.ar/papers/filtering-of-icmp-error-messages.pdf
described a similar attack concept in 2004 but without the stateful
filtering in mind.
-----
This implements above suggested fix: In icmp(v6) error handler, take
outer destination address, then pass that into the common function that
does the "related" association.
After obtaining the nf_conn of the matching inner-headers connection,
check that the destination address of the opposite direction tuple is
the same as the outer address and only set RELATED if thats the case.
Reported-by: Luca Moro <luca.moro@synacktiv.com> Signed-off-by: Florian
Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso
<pablo@netfilter.org>
The file was modifiednet/netfilter/nf_conntrack_proto_icmp.c (diff)
The file was modifiednet/netfilter/nf_conntrack_proto_icmpv6.c (diff)
The file was modifiedinclude/net/netfilter/nf_conntrack_l4proto.h (diff)
Commit 8176c8332751bf27597488d6e45c9b8f530593bf by pablo
netfilter: conntrack: initialize ct->timeout
KMSAN started reporting an error when accessing ct->timeout for the
first time without initialization:
BUG: KMSAN: uninit-value in __nf_ct_refresh_acct+0x1ae/0x470
net/netfilter/nf_conntrack_core.c:1765
...
dump_stack+0x173/0x1d0 lib/dump_stack.c:113
kmsan_report+0x131/0x2a0 mm/kmsan/kmsan.c:624
__msan_warning+0x7a/0xf0 mm/kmsan/kmsan_instr.c:310
__nf_ct_refresh_acct+0x1ae/0x470 net/netfilter/nf_conntrack_core.c:1765
nf_ct_refresh_acct ./include/net/netfilter/nf_conntrack.h:201
nf_conntrack_udp_packet+0xb44/0x1040
net/netfilter/nf_conntrack_proto_udp.c:122
nf_conntrack_handle_packet net/netfilter/nf_conntrack_core.c:1605
nf_conntrack_in+0x1250/0x26c9 net/netfilter/nf_conntrack_core.c:1696
...
Uninit was created at:
kmsan_save_stack_with_flags mm/kmsan/kmsan.c:205
kmsan_internal_poison_shadow+0x92/0x150 mm/kmsan/kmsan.c:159
kmsan_kmalloc+0xa9/0x130 mm/kmsan/kmsan_hooks.c:173
kmem_cache_alloc+0x554/0xb10 mm/slub.c:2789
__nf_conntrack_alloc+0x16f/0x690 net/netfilter/nf_conntrack_core.c:1342
init_conntrack+0x6cb/0x2490 net/netfilter/nf_conntrack_core.c:1421
Signed-off-by: Alexander Potapenko <glider@google.com> Fixes:
cc16921351d8ba1 ("netfilter: conntrack: avoid same-timeout update") Cc:
Florian Westphal <fw@strlen.de> Acked-by: Florian Westphal
<fw@strlen.de> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
The file was modifiednet/netfilter/nf_conntrack_core.c (diff)
Commit 0261ea1bd1eb0da5c0792a9119b8655cf33c80a3 by pablo
ipvs: do not schedule icmp errors from tunnels
We can receive ICMP errors from client or from tunneling real server.
While the former can be scheduled to real server, the latter should not
be scheduled, they are decapsulated only when existing connection is
found.
Fixes: 6044eeffafbe ("ipvs: attempt to schedule icmp packets")
Signed-off-by: Julian Anastasov <ja@ssi.bg> Signed-off-by: Simon Horman
<horms@verge.net.au> Signed-off-by: Pablo Neira Ayuso
<pablo@netfilter.org>
The file was modifiednet/netfilter/ipvs/ip_vs_core.c (diff)
Commit 06058632464845abb1af91521122fd04dd3daaec by axboe
io_uring: park SQPOLL thread if it's percpu
kthread expects this, or we can throw a warning on exit:
WARNING: CPU: 0 PID: 7822 at kernel/kthread.c:399
__kthread_bind_mask+0x3b/0xc0 kernel/kthread.c:399 Kernel panic - not
syncing: panic_on_warn set ... CPU: 0 PID: 7822 Comm: syz-executor030
Not tainted 5.1.0-rc4-next-20190412 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
panic+0x2cb/0x72b kernel/panic.c:214
__warn.cold+0x20/0x46 kernel/panic.c:576
report_bug+0x263/0x2b0 lib/bug.c:186
fixup_bug arch/x86/kernel/traps.c:179 [inline]
fixup_bug arch/x86/kernel/traps.c:174 [inline]
do_error_trap+0x11b/0x200 arch/x86/kernel/traps.c:272
do_invalid_op+0x37/0x50 arch/x86/kernel/traps.c:291
invalid_op+0x14/0x20 arch/x86/entry/entry_64.S:973 RIP:
0010:__kthread_bind_mask+0x3b/0xc0 kernel/kthread.c:399 Code: 48 89 fb
e8 f7 ab 24 00 4c 89 e6 48 89 df e8 ac e1 02 00 31 ff 49 89 c4 48 89 c6
e8 7f ad 24 00 4d 85 e4 75 15 e8 d5 ab 24 00 <0f> 0b e8 ce ab 24 00 5b
41 5c 41 5d 41 5e 5d c3 e8 c0 ab 24 00 4c RSP: 0018:ffff8880a89bfbb8
EFLAGS: 00010293 RAX: ffff88808ca7a280 RBX: ffff8880a98e4380 RCX:
ffffffff814bdd11 RDX: 0000000000000000 RSI: ffffffff814bdd1b RDI:
0000000000000007 RBP: ffff8880a89bfbd8 R08: ffff88808ca7a280 R09:
0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12:
0000000000000000 R13: ffffffff87691148 R14: ffff8880a98e43a0 R15:
ffffffff81c91e10
__kthread_bind kernel/kthread.c:412 [inline]
kthread_unpark+0x123/0x160 kernel/kthread.c:480
kthread_stop+0xfa/0x6c0 kernel/kthread.c:556
io_sq_thread_stop fs/io_uring.c:2057 [inline]
io_sq_thread_stop fs/io_uring.c:2052 [inline]
io_finish_async+0xab/0x180 fs/io_uring.c:2064
io_ring_ctx_free fs/io_uring.c:2534 [inline]
io_ring_ctx_wait_and_kill+0x133/0x510 fs/io_uring.c:2591
io_uring_release+0x42/0x50 fs/io_uring.c:2599
__fput+0x2e5/0x8d0 fs/file_table.c:278
____fput+0x16/0x20 fs/file_table.c:309
task_work_run+0x14a/0x1c0 kernel/task_work.c:113
exit_task_work include/linux/task_work.h:22 [inline]
do_exit+0x90a/0x2fa0 kernel/exit.c:876
do_group_exit+0x135/0x370 kernel/exit.c:980
__do_sys_exit_group kernel/exit.c:991 [inline]
__se_sys_exit_group kernel/exit.c:989 [inline]
__x64_sys_exit_group+0x44/0x50 kernel/exit.c:989
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Reported-by: syzbot+6d4a92619eb0ad08602b@syzkaller.appspotmail.com
Fixes: 6c271ce2f1d5 ("io_uring: add submission polling") Signed-off-by:
Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 917257daa0fea7a007102691c0e27d9216a96768 by axboe
io_uring: only test SQPOLL cpu after we've verified it
We currently call cpu_possible() even if we don't use the CPU. Move the
test under the SQ_AFF branch, which is the only place where we'll use
the value. Do the cpu_possible() test AFTER we've limited it to a max of
NR_CPUS. This avoids triggering the following warning:
WARNING: CPU: 1 PID: 7600 at include/linux/cpumask.h:121
cpu_max_bits_warn
if CONFIG_DEBUG_PER_CPU_MAPS is enabled.
While in there, also move the SQ thread idle period assignment inside
SETUP_SQPOLL, as we don't use it otherwise either.
Reported-by: syzbot+cd714a07c6de2bc34293@syzkaller.appspotmail.com
Fixes: 6c271ce2f1d5 ("io_uring: add submission polling") Signed-off-by:
Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 77f1e0a52d26242b6c2dba019f6ebebfb9ff701e by axboe
bfq: update internal depth state when queue depth changes
A previous commit moved the shallow depth and BFQ depth map calculations
to be done at init time, moving it outside of the hotter IO path. This
potentially causes hangs if the users changes the depth of the scheduler
map, by writing to the 'nr_requests' sysfs file for that device.
Add a blk-mq-sched hook that allows blk-mq to inform the scheduler if
the depth changes, so that the scheduler can update its internal state.
Tested-by: Kai Krakow <kai@kaishome.de> Reported-by: Paolo Valente
<paolo.valente@linaro.org> Fixes: f0635b8a416e ("bfq: calculate shallow
depths at init time") Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedblock/bfq-iosched.c (diff)
The file was modifiedinclude/linux/elevator.h (diff)
The file was modifiedblock/blk-mq.c (diff)
Commit 3d6770fbd9353988839611bab107e4e891506aad by axboe
io_uring: drop io_file_put() 'file' argument
Since the fget/fput handling was reworked in commit 09bb839434bd, we
never call io_file_put() with state == NULL (and hence file != NULL)
anymore. Remove that case.
Reported-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Jens Axboe
<axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 40fba00ffa431c8597ca785ea1cfa4d9f6503390 by bp
x86/resctrl: Do not repeat rdtgroup mode initialization
When cache allocation is supported and the user creates a new resctrl
resource group, the allocations of the new resource group are
initialized to all regions that it can possibly use. At this time these
regions are all that are shareable by other resource groups as well as
regions that are not currently used. The new resource group's mode is
also initialized to reflect this initialization and set to "shareable".
The new resource group's mode is currently repeatedly initialized within
the loop that configures the hardware with the resource group's default
allocations.
Move the initialization of the resource group's mode outside the
hardware configuration loop. The resource group's mode is now
initialized only once as the final step to reflect that its configured
allocations are "shareable".
Fixes: 95f0b77efa57 ("x86/intel_rdt: Initialize new resource group with
sane defaults") Signed-off-by: Xiaochen Shen <xiaochen.shen@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de> Reviewed-by: Fenghua Yu
<fenghua.yu@intel.com> Acked-by: Reinette Chatre
<reinette.chatre@intel.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc:
Ingo Molnar <mingo@redhat.com> Cc: pei.p.jia@intel.com Cc: Thomas
Gleixner <tglx@linutronix.de> Cc: Tony Luck <tony.luck@intel.com> Cc:
x86-ml <x86@kernel.org> Link:
https://lkml.kernel.org/r/1554839629-5448-1-git-send-email-xiaochen.shen@intel.com
The file was modifiedarch/x86/kernel/cpu/resctrl/rdtgroup.c (diff)
Commit f958d7b528b1b40c44cfda5eabe2d82760d868c3 by torvalds
mm: make page ref count overflow check tighter and more explicit
We have a VM_BUG_ON() to check that the page reference count doesn't
underflow (or get close to overflow) by checking the sign of the count.
That's all fine, but we actually want to allow people to use a "get page
ref unless it's already very high" helper function, and we want that one
to use the sign of the page ref (without triggering this VM_BUG_ON).
Change the VM_BUG_ON to only check for small underflows (or _very_ close
to overflowing), and ignore overflows which have strayed into negative
territory.
Acked-by: Matthew Wilcox <willy@infradead.org> Cc: Jann Horn
<jannh@google.com> Cc: stable@kernel.org Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedinclude/linux/mm.h (diff)
Commit 88b1a17dfc3ed7728316478fae0f5ad508f50397 by torvalds
mm: add 'try_get_page()' helper function
This is the same as the traditional 'get_page()' function, but instead
of unconditionally incrementing the reference count of the page, it only
does so if the count was "safe".  It returns whether the reference count
was incremented (and is marked __must_check, since the caller obviously
has to be aware of it).
Also like 'get_page()', you can't use this function unless you already
had a reference to the page.  The intent is that you can use this
exactly like get_page(), but in situations where you want to limit the
maximum reference count.
The code currently does an unconditional WARN_ON_ONCE() if we ever hit
the reference count issues (either zero or negative), as a notification
that the conditional non-increment actually happened.
NOTE! The count access for the "safety" check is inherently racy, but
that doesn't matter since the buffer we use is basically half the range
of the reference count (ie we look at the sign of the count).
Acked-by: Matthew Wilcox <willy@infradead.org> Cc: Jann Horn
<jannh@google.com> Cc: stable@kernel.org Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedinclude/linux/mm.h (diff)
Commit 8fde12ca79aff9b5ba951fce1a2641901b8d8e64 by torvalds
mm: prevent get_user_pages() from overflowing page refcount
If the page refcount wraps around past zero, it will be freed while
there are still four billion references to it.  One of the possible
avenues for an attacker to try to make this happen is by doing direct IO
on a page multiple times.  This patch makes get_user_pages() refuse to
take a new page reference if there are already more than two billion
references to the page.
Reported-by: Jann Horn <jannh@google.com> Acked-by: Matthew Wilcox
<willy@infradead.org> Cc: stable@kernel.org Signed-off-by: Linus
Torvalds <torvalds@linux-foundation.org>
The file was modifiedmm/gup.c (diff)
The file was modifiedmm/hugetlb.c (diff)
Commit 15fab63e1e57be9fdb5eec1bbc5916e9825e9acb by torvalds
fs: prevent page refcount overflow in pipe_buf_get
Change pipe_buf_get() to return a bool indicating whether it succeeded
in raising the refcount of the page (if the thing in the pipe is a
page). This removes another mechanism for overflowing the page refcount.
All callers converted to handle a failure.
Reported-by: Jann Horn <jannh@google.com> Signed-off-by: Matthew Wilcox
<willy@infradead.org> Cc: stable@kernel.org Signed-off-by: Linus
Torvalds <torvalds@linux-foundation.org>
The file was modifiedinclude/linux/pipe_fs_i.h (diff)
The file was modifiedfs/pipe.c (diff)
The file was modifiedfs/splice.c (diff)
The file was modifiedfs/fuse/dev.c (diff)
The file was modifiedkernel/trace/trace.c (diff)
Commit c543cb4a5f07e09237ec0fc2c60c9f131b2c79ad by davem
ipv4: ensure rcu_read_lock() in ipv4_link_failure()
fib_compute_spec_dst() needs to be called under rcu protection.
syzbot reported :
WARNING: suspicious RCU usage 5.1.0-rc4+ #165 Not tainted
include/linux/inetdevice.h:220 suspicious rcu_dereference_check() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 1 1 lock held by swapper/0/0:
#0: 0000000051b67925 ((&n->timer)){+.-.}, at: lockdep_copy_map
include/linux/lockdep.h:170 [inline]
#0: 0000000051b67925 ((&n->timer)){+.-.}, at: call_timer_fn+0xda/0x720
kernel/time/timer.c:1315
stack backtrace: CPU: 0 PID: 0 Comm: swapper/0 Not tainted 5.1.0-rc4+
#165 Hardware name: Google Google Compute Engine/Google Compute Engine,
BIOS Google 01/01/2011 Call Trace:
<IRQ>
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x172/0x1f0 lib/dump_stack.c:113
lockdep_rcu_suspicious+0x153/0x15d kernel/locking/lockdep.c:5162
__in_dev_get_rcu include/linux/inetdevice.h:220 [inline]
fib_compute_spec_dst+0xbbd/0x1030 net/ipv4/fib_frontend.c:294
spec_dst_fill net/ipv4/ip_options.c:245 [inline]
__ip_options_compile+0x15a7/0x1a10 net/ipv4/ip_options.c:343
ipv4_link_failure+0x172/0x400 net/ipv4/route.c:1195
dst_link_failure include/net/dst.h:427 [inline]
arp_error_report+0xd1/0x1c0 net/ipv4/arp.c:297
neigh_invalidate+0x24b/0x570 net/core/neighbour.c:995
neigh_timer_handler+0xc35/0xf30 net/core/neighbour.c:1081
call_timer_fn+0x190/0x720 kernel/time/timer.c:1325
expire_timers kernel/time/timer.c:1362 [inline]
__run_timers kernel/time/timer.c:1681 [inline]
__run_timers kernel/time/timer.c:1649 [inline]
run_timer_softirq+0x652/0x1700 kernel/time/timer.c:1694
__do_softirq+0x266/0x95a kernel/softirq.c:293
invoke_softirq kernel/softirq.c:374 [inline]
irq_exit+0x180/0x1d0 kernel/softirq.c:414
exiting_irq arch/x86/include/asm/apic.h:536 [inline]
smp_apic_timer_interrupt+0x14a/0x570 arch/x86/kernel/apic/apic.c:1062
apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:807
Fixes: ed0de45a1008 ("ipv4: recompile ip options in ipv4_link_failure")
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Cc: Stephen Suryaputra
<ssuryaextr@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv4/route.c (diff)
Commit 9ac6bb1414ac0d45fe9cefbd1f5b06f0e1a3c98a by davem
qed: Delete redundant doorbell recovery types
DB_REC_DRY_RUN (running doorbell recovery without sending doorbells) is
never used. DB_REC_ONCE (send a single doorbell from the doorbell
recovery) is not needed anymore because by running the periodic handler
we make sure we check the overflow status later instead. This patch is
needed because in the next patches, the only doorbell recovery type
being used is DB_REC_REAL_DEAL, and the fixes are much cleaner without
this enum.
Signed-off-by: Denis Bolotin <dbolotin@marvell.com> Signed-off-by:
Michal Kalderon <mkalderon@marvell.com> Signed-off-by: Ariel Elior
<aelior@marvell.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_dev.c (diff)
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_int.h (diff)
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_int.c (diff)
The file was modifieddrivers/net/ethernet/qlogic/qed/qed.h (diff)
Commit b61b04ad81d5f975349d66abbecabf96ba211140 by davem
qed: Fix the doorbell address sanity check
Fix the condition which verifies that doorbell address is inside the
doorbell bar by checking that the end of the address is within range as
well.
Signed-off-by: Denis Bolotin <dbolotin@marvell.com> Signed-off-by:
Michal Kalderon <mkalderon@marvell.com> Signed-off-by: Ariel Elior
<aelior@marvell.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_dev.c (diff)
Commit d4476b8a6151b2dd86c09b5acec64f66430db55d by davem
qed: Fix missing DORQ attentions
When the DORQ (doorbell block) is overflowed, all PFs get attentions at
the same time. If one PF finished handling the attention before another
PF even started, the second PF might miss the DORQ's attention bit and
not handle the attention at all. If the DORQ attention is missed and the
issue is not resolved, another attention will not be sent, therefore
each attention is treated as a potential DORQ attention. As a result,
the attention callback is called more frequently so the debug print was
moved to reduce its quantity. The number of periodic doorbell recovery
handler schedules was reduced because it was the previous way to
mitigating the missed attention issue.
Signed-off-by: Denis Bolotin <dbolotin@marvell.com> Signed-off-by:
Michal Kalderon <mkalderon@marvell.com> Signed-off-by: Ariel Elior
<aelior@marvell.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_main.c (diff)
The file was modifieddrivers/net/ethernet/qlogic/qed/qed.h (diff)
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_int.c (diff)
Commit 0d72c2ac89185f179da1e8a91c40c82f3fa38f0b by davem
qed: Fix the DORQ's attentions handling
Separate the overflow handling from the hardware interrupt status
analysis. The interrupt status is a single register and is common for
all PFs. The first PF reading the register is not necessarily the one
who overflowed. All PFs must check their overflow status on every
attention. In this change we clear the sticky indication in the
attention handler to allow doorbells to be processed again as soon as
possible, but running the doorbell recovery is scheduled for the
periodic handler to reduce the time spent in the attention handler.
Checking the need for DORQ flush was changed to "db_bar_no_edpm" because
qed_edpm_enabled()'s result could change dynamically and might have
prevented a needed flush.
Signed-off-by: Denis Bolotin <dbolotin@marvell.com> Signed-off-by:
Michal Kalderon <mkalderon@marvell.com> Signed-off-by: Ariel Elior
<aelior@marvell.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_int.c (diff)
The file was modifieddrivers/net/ethernet/qlogic/qed/qed.h (diff)
Commit 2f5fb19341883bb6e37da351bc3700489d8506a7 by tglx
x86/speculation: Prevent deadlock on ssb_state::lock
Mikhail reported a lockdep splat related to the AMD specific ssb_state
lock:
  CPU0                       CPU1
lock(&st->lock);
                            local_irq_disable();
                            lock(&(&sighand->siglock)->rlock);
                            lock(&st->lock);
<Interrupt>
    lock(&(&sighand->siglock)->rlock);
  *** DEADLOCK ***
The connection between sighand->siglock and st->lock comes through
seccomp, which takes st->lock while holding sighand->siglock.
Make sure interrupts are disabled when __speculation_ctrl_update() is
invoked via prctl() -> speculation_ctrl_update(). Add a lockdep assert
to catch future offenders.
Fixes: 1f50ddb4f418 ("x86/speculation: Handle HT correctly on AMD")
Reported-by: Mikhail Gavrilov <mikhail.v.gavrilov@gmail.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Tested-by: Mikhail
Gavrilov <mikhail.v.gavrilov@gmail.com> Cc: Thomas Lendacky
<thomas.lendacky@amd.com> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/alpine.DEB.2.21.1904141948200.4917@nanos.tec.linutronix.de
The file was modifiedarch/x86/kernel/process.c (diff)
Commit 69f23a09daf9790acb801aaef4bc7aea6f69eec1 by davem
rtnetlink: fix rtnl_valid_stats_req() nlmsg_len check
Jakub forgot to either use nlmsg_len() or nlmsg_msg_size(), allowing
KMSAN to detect a possible uninit-value in rtnl_stats_get
BUG: KMSAN: uninit-value in rtnl_stats_get+0x6d9/0x11d0
net/core/rtnetlink.c:4997 CPU: 0 PID: 10428 Comm: syz-executor034 Not
tainted 5.1.0-rc2+ #24 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+0x131/0x2a0 mm/kmsan/kmsan.c:619
__msan_warning+0x7a/0xf0 mm/kmsan/kmsan_instr.c:310
rtnl_stats_get+0x6d9/0x11d0 net/core/rtnetlink.c:4997
rtnetlink_rcv_msg+0x115b/0x1550 net/core/rtnetlink.c:5192
netlink_rcv_skb+0x431/0x620 net/netlink/af_netlink.c:2485
rtnetlink_rcv+0x50/0x60 net/core/rtnetlink.c:5210
netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
netlink_unicast+0xf3e/0x1020 net/netlink/af_netlink.c:1336
netlink_sendmsg+0x127f/0x1300 net/netlink/af_netlink.c:1925
sock_sendmsg_nosec net/socket.c:622 [inline]
sock_sendmsg net/socket.c:632 [inline]
___sys_sendmsg+0xdb3/0x1220 net/socket.c:2137
__sys_sendmsg net/socket.c:2175 [inline]
__do_sys_sendmsg net/socket.c:2184 [inline]
__se_sys_sendmsg+0x305/0x460 net/socket.c:2182
__x64_sys_sendmsg+0x4a/0x70 net/socket.c:2182
do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
entry_SYSCALL_64_after_hwframe+0x63/0xe7
Fixes: 51bc860d4a99 ("rtnetlink: stats: validate attributes in get as
well as dumps") Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com> Cc: Jakub Kicinski
<jakub.kicinski@netronome.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/core/rtnetlink.c (diff)
The file was modifiedMakefile (diff)
Commit c238bfe0be9ef7420f7669a69e27c8c8f4d8a568 by alexander.deucher
drm/amd/display: If one stream full updates, full update all planes
[Why] On some compositors, with two monitors attached, VT terminal
switch can cause a graphical issue by the following means:
There are two streams, one for each monitor. Each stream has one plane
current state:
M1:S1->P1
M2:S2->P2
The user calls for a terminal switch and a commit is made to change both
planes to linear swizzle mode. In atomic check, a new dc_state is
constructed with new planes on each stream
new state:
M1:S1->P3
M2:S2->P4
In commit tail, each stream is committed, one at a time. The first
stream (S1) updates properly, triggerring a full update and replacing
the state
current state:
M1:S1->P3
M2:S2->P4
The update for S2 comes in, but dc detects that there is no difference
between the stream and plane in the new and current states, and so
triggers a fast update. The fast update does not program swizzle, so the
second monitor is corrupted
[How] Add a flag to dc_plane_state that forces full updates
When a stream undergoes a full update, set this flag on all changed
planes, then clear it on the current stream
Subsequent streams will get full updates as a result
Signed-off-by: David Francis <David.Francis@amd.com> Signed-off-by:
Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Roman Li
<Roman.Li@amd.com> Acked-by: Bhawanpreet Lakha <Bhawanpreet
Lakha@amd.com> Acked-by: Nicholas Kazlauskas
<Nicholas.Kazlauskas@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/display/dc/core/dc.c (diff)
The file was modifieddrivers/gpu/drm/amd/display/dc/dc.h (diff)
Commit 3c79107631db1f7fd32cf3f7368e4672004a3010 by pablo
netfilter: ctnetlink: don't use conntrack/expect object addresses as id
else, we leak the addresses to userspace via ctnetlink events and dumps.
Compute an ID on demand based on the immutable parts of nf_conn struct.
Another advantage compared to using an address is that there is no
immediate re-use of the same ID in case the conntrack entry is freed and
reallocated again immediately.
Fixes: 3583240249ef ("[NETFILTER]: nf_conntrack_expect: kill unique ID")
Fixes: 7f85f914721f ("[NETFILTER]: nf_conntrack: kill unique ID")
Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo
Neira Ayuso <pablo@netfilter.org>
The file was modifiednet/netfilter/nf_conntrack_core.c (diff)
The file was modifiednet/netfilter/nf_conntrack_netlink.c (diff)
The file was modifiedinclude/net/netfilter/nf_conntrack.h (diff)
Commit 33d1c018179d0a30c39cc5f1682b77867282694b by pablo
netfilter: nf_tables: prevent shift wrap in nft_chain_parse_hook()
I believe that "hook->num" can be up to UINT_MAX.  Shifting more than 31
bits would is undefined in C but in practice it would lead to shift
wrapping.  That would lead to an array overflow in nf_tables_addchain():
ops->hook       = hook.type->hooks[ops->hooknum];
Fixes: fe19c04ca137 ("netfilter: nf_tables: remove nhooks field from
struct nft_af_info") Signed-off-by: Dan Carpenter
<dan.carpenter@oracle.com> Signed-off-by: Pablo Neira Ayuso
<pablo@netfilter.org>
The file was modifiednet/netfilter/nf_tables_api.c (diff)
Commit 5bdac418f33f60b07a34e01e722889140ee8fac9 by pablo
netfilter: nat: fix icmp id randomization
Sven Auhagen reported that a 2nd ping request will fail if
'fully-random' mode is used.
Reason is that if no proto information is given, min/max are both 0, so
we set the icmp id to 0 instead of chosing a random value between 0 and
65535.
Update test case as well to catch this, without fix this yields:
[..] ERROR: cannot ping ns1 from ns2 with ip masquerade fully-random
(attempt 2) ERROR: cannot ping ns1 from ns2 with ipv6 masquerade
fully-random (attempt 2)
... becaus 2nd ping clashes with existing 'id 0' icmp conntrack and gets
dropped.
Fixes: 203f2e78200c27e ("netfilter: nat: remove l4proto->unique_tuple")
Reported-by: Sven Auhagen <sven.auhagen@voleatech.de> Signed-off-by:
Florian Westphal <fw@strlen.de> Signed-off-by: Pablo Neira Ayuso
<pablo@netfilter.org>
The file was modifiednet/netfilter/nf_nat_core.c (diff)
The file was modifiedtools/testing/selftests/netfilter/nft_nat.sh (diff)
Commit 6b1f16ba730d4c0cda1247568c3a1bf4fa3a2f2f by schwidefsky
s390/pkey: add one more argument space for debug feature entry
The debug feature entries have been used with up to 5 arguents
(including the pointer to the format string) but there was only space
reserved for 4 arguemnts. So now the registration does reserve space for
5 times a long value.
This fixes a sometime appearing weired value as the last value of an
debug feature entry like this:
... pkey_sec2protkey zcrypt_send_cprb (cardnr=10 domain=12)
  failed with errno -2143346254
Signed-off-by: Harald Freudenberger <freude@linux.ibm.com> Reported-by:
Christian Rund <Christian.Rund@de.ibm.com> Signed-off-by: Martin
Schwidefsky <schwidefsky@de.ibm.com>
The file was modifieddrivers/s390/crypto/pkey_api.c (diff)
Commit 2aae471d66c108b78493be1147e707bca6331e50 by gregkh
drivers: power: supply: goldfish_battery: Fix bogus SPDX identifier
spdxcheck.py complains:
drivers/power/supply/goldfish_battery.c: 1:28 Invalid License ID: GPL
which is correct because GPL is not a valid identifier. Of course this
could have been caught by checkpatch.pl _before_ submitting or merging
the patch.
WARNING: 'SPDX-License-Identifier: GPL' is not supported in
LICENSES/...
#19: FILE: drivers/power/supply/goldfish_battery.c:1:
+// SPDX-License-Identifier: GPL
Which is absolutely hillarious as the commit introducing this wreckage
says in the changelog:
  There was a checkpatch complain:
    "Missing or malformed SPDX-License-Identifier tag".
Oh well. Replacing a checkpatch warning by a different checkpatch
warning is a really useful exercise.
Use the proper GPL-2.0 identifier which is what the boiler plate in the
file had originally.
Fixes: e75e3a125b40 ("drivers: power: supply: goldfish_battery: Put an
SPDX tag") Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/power/supply/goldfish_battery.c (diff)
Commit cfd32acf7875d9dd83f82e1940098e88abeea439 by pbonzini
KVM: x86/mmu: Fix an inverted list_empty() check when zapping sptes
A recently introduced helper for handling zap vs. remote flush
incorrectly bails early, effectively leaking defunct shadow pages.
Manifests as a slab BUG when exiting KVM due to the shadow pages being
alive when their associated cache is destroyed.
==========================================================================
BUG kvm_mmu_page_header: Objects remaining in kvm_mmu_page_header on ...
--------------------------------------------------------------------------
Disabling lock debugging due to kernel taint INFO: Slab
0x00000000fc436387 objects=26 used=23 fp=0x00000000d023caee ... CPU: 6
PID: 4315 Comm: rmmod Tainted: G    B             5.1.0-rc2+ #19
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0
02/06/2015 Call Trace:
dump_stack+0x46/0x5b
slab_err+0xad/0xd0
? on_each_cpu_mask+0x3c/0x50
? ksm_migrate_page+0x60/0x60
? on_each_cpu_cond_mask+0x7c/0xa0
? __kmalloc+0x1ca/0x1e0
__kmem_cache_shutdown+0x13a/0x310
shutdown_cache+0xf/0x130
kmem_cache_destroy+0x1d5/0x200
kvm_mmu_module_exit+0xa/0x30 [kvm]
kvm_arch_exit+0x45/0x60 [kvm]
kvm_exit+0x6f/0x80 [kvm]
vmx_exit+0x1a/0x50 [kvm_intel]
__x64_sys_delete_module+0x153/0x1f0
? exit_to_usermode_loop+0x88/0xc0
do_syscall_64+0x4f/0x100
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Fixes: a21136345cb6f ("KVM: x86/mmu: Split remote_flush+zap case out of
kvm_mmu_flush_or_zap()") Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/mmu.c (diff)
Commit 39036cd2727395c3369b1051005da74059a85317 by arnd
arch: add pidfd and io_uring syscalls everywhere
Add the io_uring and pidfd_send_signal system calls to all
architectures.
These system calls are designed to handle both native and compat tasks,
so all entries are the same across architectures, only arm-compat and
the generic tale still use an old format.
Acked-by: Michael Ellerman <mpe@ellerman.id.au> (powerpc) Acked-by:
Heiko Carstens <heiko.carstens@de.ibm.com> (s390) Acked-by: Geert
Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Arnd Bergmann
<arnd@arndb.de>
The file was modifiedarch/arm64/include/asm/unistd.h (diff)
The file was modifiedarch/m68k/kernel/syscalls/syscall.tbl (diff)
The file was modifiedarch/mips/kernel/syscalls/syscall_n32.tbl (diff)
The file was modifiedarch/microblaze/kernel/syscalls/syscall.tbl (diff)
The file was modifiedarch/sparc/kernel/syscalls/syscall.tbl (diff)
The file was modifiedarch/powerpc/kernel/syscalls/syscall.tbl (diff)
The file was modifiedarch/arm/tools/syscall.tbl (diff)
The file was modifiedarch/ia64/kernel/syscalls/syscall.tbl (diff)
The file was modifiedarch/xtensa/kernel/syscalls/syscall.tbl (diff)
The file was modifiedarch/arm64/include/asm/unistd32.h (diff)
The file was modifiedarch/mips/kernel/syscalls/syscall_o32.tbl (diff)
The file was modifiedarch/parisc/kernel/syscalls/syscall.tbl (diff)
The file was modifiedarch/mips/kernel/syscalls/syscall_n64.tbl (diff)
The file was modifiedarch/sh/kernel/syscalls/syscall.tbl (diff)
The file was modifiedarch/s390/kernel/syscalls/syscall.tbl (diff)
The file was modifiedarch/alpha/kernel/syscalls/syscall.tbl (diff)
Commit 5aae7832d1b4ec614996ea0f4fafc4d9855ec0b0 by rodrigo.vivi
drm/i915: Do not enable FEC without DSC
Currently we enable FEC even when DSC is no used. While that is
theoretically valid supposedly there isn't much of a benefit from this.
But more importantly we do not account for the FEC link bandwidth
overhead (2.4%) in the non-DSC link bandwidth computations. So the code
may think we have enough bandwidth when we in fact do not.
Cc: stable@vger.kernel.org Cc: Anusha Srivatsa
<anusha.srivatsa@intel.com> Cc: Manasi Navare
<manasi.d.navare@intel.com> Fixes: 240999cf339f ("i915/dp/fec: Add
fec_enable to the crtc state.") Signed-off-by: Ville Syrjälä
<ville.syrjala@linux.intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190326144903.6617-1-ville.syrjala@linux.intel.com
Reviewed-by: Manasi Navare <manasi.d.navare@intel.com>
(cherry picked from commit 6fd3134ae3551d4802a04669c0f39f2f5c56f77d)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
The file was modifieddrivers/gpu/drm/i915/intel_dp.c (diff)
Commit f5c58ba18ab8ea2169670ed880e4d31ed772ad10 by rodrigo.vivi
drm/i915: Restore correct bxt_ddi_phy_calc_lane_lat_optim_mask()
calculation
We are no longer calling bxt_ddi_phy_calc_lane_lat_optim_mask() when
intel{hdmi,dp}_compute_config() succeeds, and instead only call it when
those fail. This is fallout from the bool->int
.compute_config() conversion which failed to invert the return value
check before calling bxt_ddi_phy_calc_lane_lat_optim_mask(). Let's just
replace it with an early bailout so that it's harder to miss.
This restores the correct latency optim setting calculation
(which could fix some real failures), and avoids the MISSING_CASE() from
bxt_ddi_phy_calc_lane_lat_optim_mask() after
intel{hdmi,dp}_compute_config() has failed.
Cc: Lyude Paul <lyude@redhat.com> Fixes: 204474a6b859 ("drm/i915: Pass
down rc in intel_encoder->compute_config()") Bugzilla:
https://bugs.freedesktop.org/show_bug.cgi?id=109373 Signed-off-by: Ville
Syrjälä <ville.syrjala@linux.intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190411164925.28491-1-ville.syrjala@linux.intel.com
Reviewed-by: Lyude Paul <lyude@redhat.com>
(cherry picked from commit 7a412b8f60cd57ab7dcb72ab701fde2bf81752eb)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
The file was modifieddrivers/gpu/drm/i915/intel_ddi.c (diff)
Commit b19062a567266ee1f10f6709325f766bbcc07d1c by axboe
io_uring: fix possible deadlock between io_uring_{enter,register}
If we have multiple threads, one doing io_uring_enter() while the other
is doing io_uring_register(), we can run into a deadlock between the
two. io_uring_register() must wait for existing users of the io_uring
instance to exit. But it does so while holding the io_uring mutex.
Callers of io_uring_enter() may need this mutex to make progress (and
eventually exit). If we wait for users to exit in io_uring_register(),
we can't do so with the io_uring mutex held without potentially risking
a deadlock.
Drop the io_uring mutex while waiting for existing callers to exit. This
is safe and guaranteed to make forward progress, since we already killed
the percpu ref before doing so. Hence later callers of io_uring_enter()
will be rejected.
Reported-by: syzbot+16dc03452dee970a0c3e@syzkaller.appspotmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 79b4a9cf0e2ea8203ce777c8d5cfa86c71eae86e by paul.burton
MIPS: scall64-o32: Fix indirect syscall number load
Commit 4c21b8fd8f14 (MIPS: seccomp: Handle indirect system calls (o32))
added indirect syscall detection for O32 processes running on MIPS64,
but it did not work correctly for big endian kernel/processes. The
reason is that the syscall number is loaded from ARG1 using the lw
instruction while this is a 64-bit value, so zero is loaded instead of
the syscall number.
Fix the code by using the ld instruction instead. When running a 32-bit
processes on a 64 bit CPU, the values are properly sign-extended, so it
ensures the value passed to syscall_trace_enter is correct.
Recent systemd versions with seccomp enabled whitelist the getpid
syscall for their internal  processes (e.g. systemd-journald), but call
it through syscall(SYS_getpid). This fix therefore allows O32 big endian
systems with a 64-bit kernel to run recent systemd versions.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Cc:
<stable@vger.kernel.org> # v3.15+ Reviewed-by: Philippe Mathieu-Daudé
<f4bug@amsat.org> Signed-off-by: Paul Burton <paul.burton@mips.com> Cc:
Ralf Baechle <ralf@linux-mips.org> Cc: James Hogan <jhogan@kernel.org>
Cc: linux-mips@vger.kernel.org Cc: linux-kernel@vger.kernel.org
The file was modifiedarch/mips/kernel/scall64-o32.S (diff)
Commit 8ed633b9baf9ec7d593ebb8e256312ff1c70ab37 by davem
Revert "net-sysfs: Fix memory leak in netdev_register_kobject"
This reverts commit 6b70fc94afd165342876e53fc4b2f7d085009945.
The reverted bugfix will cause another issue. Reported by
syzbot+6024817a931b2830bc93@syzkaller.appspotmail.com. See
https://syzkaller.appspot.com/x/log.txt?x=1737671b200000 for details.
Signed-off-by: Wang Hai <wanghai26@huawei.com> Acked-by: Andy Shevchenko
<andriy.shevchenko@linux.intel.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/core/net-sysfs.c (diff)
Commit 92480b3977fd3884649d404cbbaf839b70035699 by davem
bonding: fix event handling for stacked bonds
When a bond is enslaved to another bond, bond_netdev_event() only
handles the event as if the bond is a master, and skips treating the
bond as a slave.
This leads to a refcount leak on the slave, since we don't remove the
adjacency to its master and the master holds a reference on the slave.
Reproducer:
ip link add bondL type bond
ip link add bondU type bond
ip link set bondL master bondU
ip link del bondL
No "Fixes:" tag, this code is older than git history.
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/bonding/bond_main.c (diff)
Commit 789445b960c16baf626c050f762126189b45b82d by davem
MAINTAINERS: normalize Woojung Huh's email address
MAINTAINERS contains a lower-case and upper-case variant of Woojung Huh'
s email address.
Only keep the lower-case variant in MAINTAINERS.
Signed-off-by: Lukas Bulwahn <lukas.bulwahn@gmail.com> Acked-by: Woojung
Huh <woojung.huh@microchip.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedMAINTAINERS (diff)
Commit 9c69a13205151c0d801de9f9d83a818e6e8f60ec by davem
route: Avoid crash from dereferencing NULL rt->from
When __ip6_rt_update_pmtu() is called, rt->from is RCU dereferenced, but
is never checked for null - rt6_flush_exceptions() may have removed the
entry.
[ 1913.989004] RIP: 0010:ip6_rt_cache_alloc+0x13/0x170
[ 1914.209410] Call Trace:
[ 1914.214798]  <IRQ>
[ 1914.219226]  __ip6_rt_update_pmtu+0xb0/0x190
[ 1914.228649]  ip6_tnl_xmit+0x2c2/0x970 [ip6_tunnel]
[ 1914.239223]  ? ip6_tnl_parse_tlv_enc_lim+0x32/0x1a0 [ip6_tunnel]
[ 1914.252489]  ? __gre6_xmit+0x148/0x530 [ip6_gre]
[ 1914.262678]  ip6gre_tunnel_xmit+0x17e/0x3c7 [ip6_gre]
[ 1914.273831]  dev_hard_start_xmit+0x8d/0x1f0
[ 1914.283061]  sch_direct_xmit+0xfa/0x230
[ 1914.291521]  __qdisc_run+0x154/0x4b0
[ 1914.299407]  net_tx_action+0x10e/0x1f0
[ 1914.307678]  __do_softirq+0xca/0x297
[ 1914.315567]  irq_exit+0x96/0xa0
[ 1914.322494]  smp_apic_timer_interrupt+0x68/0x130
[ 1914.332683]  apic_timer_interrupt+0xf/0x20
[ 1914.341721]  </IRQ>
Fixes: a68886a69180 ("net/ipv6: Make from in rt6_info rcu protected")
Signed-off-by: Jonathan Lemon <jonathan.lemon@gmail.com> Reviewed-by:
Eric Dumazet <edumazet@google.com> Reviewed-by: David Ahern
<dsahern@gmail.com> Reviewed-by: Martin KaFai Lau <kafai@fb.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv6/route.c (diff)
Commit 614c70f35cd77a9af8e2ca841dcdb121cec3068f by davem
bnx2x: fix spelling mistake "dicline" -> "decline"
There is a spelling mistake in a BNX2X_ERR message, fix it.
Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bnx2x/bnx2x_vfpf.c (diff)
Commit be549d49115422f846b6d96ee8fd7173a5f7ceb0 by martin.petersen
scsi: core: set result when the command cannot be dispatched
When SCSI blk-mq is enabled, there is a bug in handling errors in
scsi_queue_rq.  Specifically, the bug is not setting result field of
scsi_request correctly when the dispatch of the command has been failed.
Since the upper layer code including the sg_io ioctl expects to receive
any error status from result field of scsi_request, the error is
silently ignored and this could cause data corruptions for some
applications.
Fixes: d285203cf647 ("scsi: add support for a blk-mq based I/O path.")
Cc: <stable@vger.kernel.org> Signed-off-by: Jaesoo Lee
<jalee@purestorage.com> Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Martin
K. Petersen <martin.petersen@oracle.com>
The file was modifieddrivers/scsi/scsi_lib.c (diff)
Commit 6a03469a1edc94da52b65478f1e00837add869a3 by mingo
x86/build/lto: Fix truncated .bss with -fdata-sections
With CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y, we compile the kernel with
-fdata-sections, which also splits the .bss section.
The new section, with a new .bss.* name, which pattern gets missed by
the main x86 linker script which only expects the '.bss' name. This
results in the discarding of the second part and a too small, truncated
.bss section and an unhappy, non-working kernel.
Use the common BSS_MAIN macro in the linker script to properly capture
and merge all the generated BSS sections.
Signed-off-by: Sami Tolvanen <samitolvanen@google.com> Reviewed-by: Nick
Desaulniers <ndesaulniers@google.com> Reviewed-by: Kees Cook
<keescook@chromium.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Kees Cook
<keescook@chromium.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Nicholas Piggin <npiggin@gmail.com>
Cc: Nick Desaulniers <ndesaulniers@google.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link:
http://lkml.kernel.org/r/20190415164956.124067-1-samitolvanen@google.com
[ Extended the changelog. ] Signed-off-by: Ingo Molnar
<mingo@kernel.org>
The file was modifiedarch/x86/kernel/vmlinux.lds.S (diff)
Commit 8b39adbee805c539a461dbf208b125b096152b1c by mingo
locking/lockdep: Make lockdep_unregister_key() honor 'debug_locks' again
If lockdep_register_key() and lockdep_unregister_key() are called with
debug_locks == false then the following warning is reported:
  WARNING: CPU: 2 PID: 15145 at kernel/locking/lockdep.c:4920
lockdep_unregister_key+0x1ad/0x240
That warning is reported because lockdep_unregister_key() ignores the
value of 'debug_locks' and because the behavior of
lockdep_register_key() depends on whether or not 'debug_locks' is set.
Fix this inconsistency by making lockdep_unregister_key() take
'debug_locks' again into account.
Signed-off-by: Bart Van Assche <bvanassche@acm.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> 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: shenghui <shhuiw@foxmail.com> Fixes: 90c1cba2b3b3 ("locking/lockdep:
Zap lock classes even with lock debugging disabled") Link:
http://lkml.kernel.org/r/20190415170538.23491-1-bvanassche@acm.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/locking/lockdep.c (diff)
Commit 5f843ed415581cfad4ef8fefe31c138a8346ca8a by mingo
kprobes: Fix error check when reusing optimized probes
The following commit introduced a bug in one of our error paths:
  819319fc9346 ("kprobes: Return error if we fail to reuse kprobe
instead of BUG_ON()")
it missed to handle the return value of kprobe_optready() as
error-value. In reality, the kprobe_optready() returns a bool result, so
"true" case must be passed instead of 0.
This causes some errors on kprobe boot-time selftests on ARM:
[   ] Beginning kprobe tests...
[   ] Probe ARM code
[   ]     kprobe
[   ]     kretprobe
[   ] ARM instruction simulation
[   ]     Check decoding tables
[   ]     Run test cases
[   ] FAIL: test_case_handler not run
[   ] FAIL: Test andge r10, r11, r14, asr r7
[   ] FAIL: Scenario 11
...
[   ] FAIL: Scenario 7
[   ] Total instruction simulation tests=1631, pass=1433 fail=198
[   ] kprobe tests failed
This can happen if an optimized probe is unregistered and next kprobe is
registered on same address until the previous probe is not reclaimed.
If this happens, a hidden aggregated probe may be kept in memory, and no
new kprobe can probe same address. Also, in that case register_kprobe()
will return "1" instead of minus error value, which can mislead caller
logic.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Cc: Anil S
Keshavamurthy <anil.s.keshavamurthy@intel.com> Cc: David S . Miller
<davem@davemloft.net> Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Naveen N . Rao <naveen.n.rao@linux.vnet.ibm.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc:
stable@vger.kernel.org # v5.0+ Fixes: 819319fc9346 ("kprobes: Return
error if we fail to reuse kprobe instead of BUG_ON()") Link:
http://lkml.kernel.org/r/155530808559.32517.539898325433642204.stgit@devnote2
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/kprobes.c (diff)
Commit 510bb96fe5b3480b4b22d815786377e54cb701e7 by mingo
x86/mm: Prevent bogus warnings with "noexec=off"
Xose Vazquez Perez reported boot warnings when NX is disabled on the
kernel command line.
__early_set_fixmap() triggers this warning:
  attempted to set unsupported pgprot:    8000000000000163
       bits:      8000000000000000
       supported: 7fffffffffffffff
  WARNING: CPU: 0 PID: 0 at arch/x86/include/asm/pgtable.h:537
    __early_set_fixmap+0xa2/0xff
because it uses __default_kernel_pte_mask to mask out unsupported bits.
Use __supported_pte_mask instead.
Disabling NX on the command line also triggers the NX warning in the
page table mapping check:
  WARNING: CPU: 1 PID: 1 at arch/x86/mm/dump_pagetables.c:262
note_page+0x2ae/0x650
....
Make the warning depend on NX set in __supported_pte_mask.
Reported-by: Xose Vazquez Perez <xose.vazquez@gmail.com> Tested-by: Xose
Vazquez Perez <xose.vazquez@gmail.com> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Cc: Andy Lutomirski <luto@kernel.org> Cc: Borislav
Petkov <bp@alien8.de> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc:
H. Peter Anvin <hpa@zytor.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Rik van Riel <riel@surriel.com> Link:
http://lkml.kernel.org/r/alpine.DEB.2.21.1904151037530.1729@nanos.tec.linutronix.de
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/mm/dump_pagetables.c (diff)
The file was modifiedarch/x86/mm/ioremap.c (diff)
Commit 0082517fa4bce073e7cf542633439f26538a14cc by mingo
x86/reboot, efi: Use EFI reboot for Acer TravelMate X514-51T
Upon reboot, the Acer TravelMate X514-51T laptop appears to complete the
shutdown process, but then it hangs in BIOS POST with a black screen.
The problem is intermittent - at some points it has appeared related to
Secure Boot settings or different kernel builds, but ultimately we have
not been able to identify the exact conditions that trigger the issue to
come and go.
Besides, the EFI mode cannot be disabled in the BIOS of this model.
However, after extensive testing, we observe that using the EFI reboot
method reliably avoids the issue in all cases.
So add a boot time quirk to use EFI reboot on such systems.
Buglink: https://bugzilla.kernel.org/show_bug.cgi?id=203119
Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com> Signed-off-by:
Daniel Drake <drake@endlessm.com> Cc: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Cc: Borislav Petkov <bp@alien8.de> Cc: Linus
Torvalds <torvalds@linux-foundation.org> Cc: Matt Fleming
<matt@codeblueprint.co.uk> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
Thomas Gleixner <tglx@linutronix.de> Cc: linux-efi@vger.kernel.org Cc:
linux@endlessm.com Link:
http://lkml.kernel.org/r/20190412080152.3718-1-jian-hong@endlessm.com
[ Fix !CONFIG_EFI build failure, clarify the code and the changelog a
bit. ] Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedinclude/linux/efi.h (diff)
The file was modifiedarch/x86/kernel/reboot.c (diff)
Commit 780e0106d468a2962b16b52fdf42898f2639e0a0 by mingo
x86/mm/tlb: Revert "x86/mm: Align TLB invalidation info"
Revert the following commit:
  515ab7c41306: ("x86/mm: Align TLB invalidation info")
I found out (the hard way) that under some .config options (notably
L1_CACHE_SHIFT=7) and compiler combinations this on-stack alignment
leads to a 320 byte stack usage, which then triggers a KASAN stack
warning elsewhere.
Using 320 bytes of stack space for a 40 byte structure is ludicrous and
clearly not right.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by:
Linus Torvalds <torvalds@linux-foundation.org> Acked-by: Nadav Amit
<namit@vmware.com> Cc: Andy Lutomirski <luto@kernel.org> Cc: Borislav
Petkov <bp@alien8.de> Cc: Dave Hansen <dave.hansen@intel.com> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de>
Fixes: 515ab7c41306 ("x86/mm: Align TLB invalidation info") Link:
http://lkml.kernel.org/r/20190416080335.GM7905@worktop.programming.kicks-ass.net
[ Minor changelog edits. ] Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/mm/tlb.c (diff)
Commit 690908104e39d37947f89d76388c876ce4ec5fda by pbonzini
KVM: nVMX: allow tests to use bad virtual-APIC page address
As mentioned in the comment, there are some special cases where we can
simply clear the TPR shadow bit from the CPU-based execution controls in
the vmcs02. Handle them so that we can remove some XFAILs from vmx.flat.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
The file was modifiedarch/x86/kvm/vmx/vmx.h (diff)
Commit 7c39f7f671d2acc0a1f39ebbbee4303ad499bbfa by jgg
IB/rdmavt: Fix frwr memory registration
Current implementation was not properly handling frwr memory
registrations. This was uncovered by commit 27f26cec761das ("xprtrdma:
Plant XID in on-the-wire RDMA offset (FRWR)") in which xprtrdma, which
is used for NFS over RDMA, started failing as it was the first ULP to
modify the ib_mr iova resulting in the NFS server getting REMOTE ACCESS
ERROR when attempting to perform RDMA Writes to the client.
The fix is to properly capture the true iova, offset, and length in the
call to ib_map_mr_sg, and then update the iova when processing the
IB_WR_REG_MEM on the send queue.
Fixes: a41081aa5936 ("IB/rdmavt: Add support for ib_map_mr_sg") Cc:
stable@vger.kernel.org Reviewed-by: Mike Marciniszyn
<mike.marciniszyn@intel.com> Reviewed-by: Dennis Dalessandro
<dennis.dalessandro@intel.com> Reviewed-by: Michael J. Ruhl
<michael.j.ruhl@intel.com> Signed-off-by: Josh Collier
<josh.d.collier@intel.com> Signed-off-by: Dennis Dalessandro
<dennis.dalessandro@intel.com> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com>
The file was modifieddrivers/infiniband/sw/rdmavt/mr.c (diff)
Commit 52a44f83fc2d64a5e74d5d685fad2fecc7b7a321 by mingo
perf/core: Fix the address filtering fix
The following recent commit:
  c60f83b813e5 ("perf, pt, coresight: Fix address filters for vmas with
non-zero offset")
changes the address filtering logic to communicate filter ranges to the
PMU driver via a single address range object, instead of having the
driver do the final bit of math.
That change forgets to take into account kernel filters, which are not
calculated the same way as DSO based filters.
Fix that by passing the kernel filters the same way as file-based
filters. This doesn't require any additional changes in the drivers.
Reported-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by:
Alexander Shishkin <alexander.shishkin@linux.intel.com> Signed-off-by:
Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Arnaldo Carvalho de
Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus
Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc:
Thomas Gleixner <tglx@linutronix.de> Cc: Vince Weaver
<vincent.weaver@maine.edu> Fixes: c60f83b813e5 ("perf, pt, coresight:
Fix address filters for vmas with non-zero offset") Link:
https://lkml.kernel.org/r/20190329091212.29870-1-alexander.shishkin@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/events/core.c (diff)
Commit 339bc4183596e1f68c2c98a03b87aa124107c317 by mingo
perf/ring_buffer: Fix AUX record suppression
The following commit:
  1627314fb54a33e ("perf: Suppress AUX/OVERWRITE records")
has an unintended side-effect of also suppressing all AUX records with
no flags and non-zero size, so all the regular records in the full trace
mode. This breaks some use cases for people.
Fix this by restoring "regular" AUX records.
Reported-by: Ben Gainey <Ben.Gainey@arm.com> Tested-by: Ben Gainey
<Ben.Gainey@arm.com> Signed-off-by: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Signed-off-by: Peter Zijlstra
(Intel) <peterz@infradead.org> Cc: <stable@vger.kernel.org> Cc: Arnaldo
Carvalho de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc:
Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc:
Thomas Gleixner <tglx@linutronix.de> Cc: Vince Weaver
<vincent.weaver@maine.edu> Fixes: 1627314fb54a33e ("perf: Suppress
AUX/OVERWRITE records") Link:
https://lkml.kernel.org/r/20190329091338.29999-1-alexander.shishkin@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/events/ring_buffer.c (diff)
Commit 9d5dcc93a6ddfc78124f006ccd3637ce070ef2fc by mingo
perf/x86: Fix incorrect PEBS_REGS
PEBS_REGS used as mask for the supported registers for large PEBS.
However, the mask cannot filter the sample_regs_user/sample_regs_intr
correctly.
(1ULL << PERF_REG_X86_*) should be used to replace PERF_REG_X86_*, which
is only the index.
Rename PEBS_REGS to PEBS_GP_REGS, because the mask is only for general
purpose registers.
Signed-off-by: Kan Liang <kan.liang@linux.intel.com> Signed-off-by:
Peter Zijlstra (Intel) <peterz@infradead.org> Cc:
<stable@vger.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: Peter Zijlstra
<peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc:
Thomas Gleixner <tglx@linutronix.de> Cc: Vince Weaver
<vincent.weaver@maine.edu> Cc: acme@kernel.org Cc: jolsa@kernel.org
Fixes: 2fe1bc1f501d ("perf/x86: Enable free running PEBS for
REGS_USER/INTR") Link:
https://lkml.kernel.org/r/20190402194509.2832-2-kan.liang@linux.intel.com
[ Renamed it to PEBS_GP_REGS - as 'GPRS' is used elsewhere ;-) ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/events/perf_event.h (diff)
The file was modifiedarch/x86/events/intel/core.c (diff)
Commit c01c348ecdc66085e44912c97368809612231520 by gregkh
USB: core: Fix unterminated string returned by usb_string()
Some drivers (such as the vub300 MMC driver) expect usb_string() to
return a properly NUL-terminated string, even when an error occurs.
(In fact, vub300's probe routine doesn't bother to check the return code
from usb_string().)  When the driver goes on to use an unterminated
string, it leads to kernel errors such as stack-out-of-bounds, as found
by the syzkaller USB fuzzer.
An out-of-range string index argument is not at all unlikely, given that
some devices don't provide string descriptors and therefore list 0 as
the value for their string indexes.  This patch makes usb_string()
return a properly terminated empty string along with the
-EINVAL error code when an out-of-range index is encountered.
And since a USB string index is a single-byte value, indexes >= 256 are
just as invalid as values of 0 or below.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Reported-by:
syzbot+b75b85111c10b8d680f1@syzkaller.appspotmail.com CC:
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/core/message.c (diff)
Commit 08b7c2f9208f0e2a32159e4e7a4831b7adb10a3e by gregkh
staging: comedi: vmk80xx: Fix use of uninitialized semaphore
If `vmk80xx_auto_attach()` returns an error, the core comedi module code
will call `vmk80xx_detach()` to clean up.  If `vmk80xx_auto_attach()`
successfully allocated the comedi device private data,
`vmk80xx_detach()` assumes that a `struct semaphore limit_sem` contained
in the private data has been initialized and uses it.  Unfortunately,
there are a couple of places where `vmk80xx_auto_attach()` can return an
error after allocating the device private data but before initializing
the semaphore, so this assumption is invalid.  Fix it by initializing
the semaphore just after allocating the private data in
`vmk80xx_auto_attach()` before any other errors can be returned.
I believe this was the cause of the following syzbot crash report
<https://syzkaller.appspot.com/bug?extid=54c2f58f15fe6876b6ad>:
usb 1-1: config 0 has no interface number 0 usb 1-1: New USB device
found, idVendor=10cf, idProduct=8068, bcdDevice=e6.8d usb 1-1: New USB
device strings: Mfr=0, Product=0, SerialNumber=0 usb 1-1: config 0
descriptor?? vmk80xx 1-1:0.117: driver 'vmk80xx' failed to
auto-configure device. INFO: trying to register non-static key. the code
is fine but needs lockdep annotation. turning off the locking
correctness validator. CPU: 0 PID: 12 Comm: kworker/0:1 Not tainted
5.1.0-rc4-319354-g9a33b36 #3 Hardware name: Google Google Compute
Engine/Google Compute Engine, BIOS Google 01/01/2011 Workqueue:
usb_hub_wq hub_event Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0xe8/0x16e lib/dump_stack.c:113
assign_lock_key kernel/locking/lockdep.c:786 [inline]
register_lock_class+0x11b8/0x1250 kernel/locking/lockdep.c:1095
__lock_acquire+0xfb/0x37c0 kernel/locking/lockdep.c:3582
lock_acquire+0x10d/0x2f0 kernel/locking/lockdep.c:4211
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0x44/0x60 kernel/locking/spinlock.c:152
down+0x12/0x80 kernel/locking/semaphore.c:58
vmk80xx_detach+0x59/0x100 drivers/staging/comedi/drivers/vmk80xx.c:829
comedi_device_detach+0xed/0x800 drivers/staging/comedi/drivers.c:204
comedi_device_cleanup.part.0+0x68/0x140
drivers/staging/comedi/comedi_fops.c:156
comedi_device_cleanup drivers/staging/comedi/comedi_fops.c:187 [inline]
comedi_free_board_dev.part.0+0x16/0x90
drivers/staging/comedi/comedi_fops.c:190
comedi_free_board_dev drivers/staging/comedi/comedi_fops.c:189 [inline]
comedi_release_hardware_device+0x111/0x140
drivers/staging/comedi/comedi_fops.c:2880
comedi_auto_config.cold+0x124/0x1b0
drivers/staging/comedi/drivers.c:1068
usb_probe_interface+0x31d/0x820 drivers/usb/core/driver.c:361
really_probe+0x2da/0xb10 drivers/base/dd.c:509
driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
__device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
__device_attach+0x223/0x3a0 drivers/base/dd.c:844
bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
device_add+0xad2/0x16e0 drivers/base/core.c:2106
usb_set_configuration+0xdf7/0x1740 drivers/usb/core/message.c:2021
generic_probe+0xa2/0xda drivers/usb/core/generic.c:210
usb_probe_device+0xc0/0x150 drivers/usb/core/driver.c:266
really_probe+0x2da/0xb10 drivers/base/dd.c:509
driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
__device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
__device_attach+0x223/0x3a0 drivers/base/dd.c:844
bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
device_add+0xad2/0x16e0 drivers/base/core.c:2106
usb_new_device.cold+0x537/0xccf drivers/usb/core/hub.c:2534
hub_port_connect drivers/usb/core/hub.c:5089 [inline]
hub_port_connect_change drivers/usb/core/hub.c:5204 [inline]
port_event drivers/usb/core/hub.c:5350 [inline]
hub_event+0x138e/0x3b00 drivers/usb/core/hub.c:5432
process_one_work+0x90f/0x1580 kernel/workqueue.c:2269
worker_thread+0x9b/0xe20 kernel/workqueue.c:2415
kthread+0x313/0x420 kernel/kthread.c:253
ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
Reported-by: syzbot+54c2f58f15fe6876b6ad@syzkaller.appspotmail.com
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/comedi/drivers/vmk80xx.c (diff)
Commit 663d294b4768bfd89e529e069bffa544a830b5bf by gregkh
staging: comedi: vmk80xx: Fix possible double-free of ->usb_rx_buf
`vmk80xx_alloc_usb_buffers()` is called from `vmk80xx_auto_attach()` to
allocate RX and TX buffers for USB transfers.  It allocates
`devpriv->usb_rx_buf` followed by `devpriv->usb_tx_buf`.  If the
allocation of `devpriv->usb_tx_buf` fails, it frees
`devpriv->usb_rx_buf`,  leaving the pointer set dangling, and returns an
error.  Later, `vmk80xx_detach()` will be called from the core comedi
module code to clean up.  `vmk80xx_detach()` also frees both
`devpriv->usb_rx_buf` and `devpriv->usb_tx_buf`, but
`devpriv->usb_rx_buf` may have already been freed, leading to a
double-free error.  Fix it by removing the call to
`kfree(devpriv->usb_rx_buf)` from `vmk80xx_alloc_usb_buffers()`, relying
on `vmk80xx_detach()` to free the memory.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/comedi/drivers/vmk80xx.c (diff)
Commit a943245adc9ae31942af752e879fbbc182166573 by mingo
x86/Kconfig: Fix spelling mistake "effectivness" -> "effectiveness"
The Kconfig text contains a spelling mistake, fix it.
Signed-off-by: Colin Ian King <colin.king@canonical.com> Cc: Borislav
Petkov <bp@alien8.de> Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner
<tglx@linutronix.de> Cc: kernel-janitors@vger.kernel.org Link:
http://lkml.kernel.org/r/20190416105751.18899-1-colin.king@canonical.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/Kconfig (diff)
Commit f4e97f5d4c9ece362b9379d3158cf5e4c02404dc by gregkh
staging: erofs: fix unexpected out-of-bound data access
Unexpected out-of-bound data will be read in erofs_read_raw_page after
commit 07173c3ec276 ("block: enable multipage bvecs") since one iovec
could have multiple pages.
Let's fix as what Ming's pointed out in the previous email [1].
[1] https://lore.kernel.org/lkml/20190411080953.GE421@ming.t460p/
Suggested-by: Ming Lei <ming.lei@redhat.com> Reviewed-by: Chao Yu
<yuchao0@huawei.com> Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Fixes: 07173c3ec276 ("block: enable multipage bvecs") Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/erofs/data.c (diff)
Commit 4d86c9f73c5a9a7c3c0661e922509c2c51801671 by daniel.lezcano
clocksource/drivers/timer-ti-dm: Remove omap_dm_timer_set_load_start
Commit 008258d995a6 ("clocksource/drivers/timer-ti-dm: Make
omap_dm_timer_set_load_start() static") made omap_dm_time_set_load_start
static because its prototype was not defined in a header. Unfortunately,
this causes a build warning on multi_v7_defconfig because this function
is not used anywhere in this translation unit:
drivers/clocksource/timer-ti-dm.c:589:12: error: unused function
'omap_dm_timer_set_load_start' [-Werror,-Wunused-function]
In fact, omap_dm_timer_set_load_start hasn't been used anywhere since
commit f190be7f39a5 ("staging: tidspbridge: remove driver") and the
prototype was removed in commit 592ea6bd1fad ("clocksource: timer-ti-dm:
Make unexported functions static"), which is probably where this should
have happened.
Fixes: 592ea6bd1fad ("clocksource: timer-ti-dm: Make unexported
functions static") Fixes: 008258d995a6
("clocksource/drivers/timer-ti-dm: Make omap_dm_timer_set_load_start()
static") Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Daniel Lezcano
<daniel.lezcano@linaro.org>
The file was modifieddrivers/clocksource/timer-ti-dm.c (diff)
Commit ace965696da2611af759f0284e26342b7b6cec89 by gregkh
serial: sh-sci: Fix HSCIF RX sampling point calculation
There are several issues with the formula used for calculating the
deviation from the intended rate:
1. While min_err and last_stop are signed, srr and baud are unsigned.
    Hence the signed values are promoted to unsigned, which will lead
    to a bogus value of deviation if min_err is negative,
2. Srr is the register field value, which is one less than the actual
    sampling rate factor,
3. The divisions do not use rounding.
Fix this by casting unsigned variables to int, adding one to srr, and
using a single DIV_ROUND_CLOSEST().
Fixes: 63ba1e00f178a448 ("serial: sh-sci: Support for HSCIF RX sampling
point adjustment") Signed-off-by: Geert Uytterhoeven
<geert+renesas@glider.be> Reviewed-by: Mukesh Ojha
<mojha@codeaurora.org> Cc: stable <stable@vger.kernel.org> Reviewed-by:
Ulrich Hecht <uli+renesas@fpond.eu> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/sh-sci.c (diff)
Commit 6b87784b53592a90d21576be8eff688b56d93cce by gregkh
serial: sh-sci: Fix HSCIF RX sampling point adjustment
The calculation of the sampling point has min() and max() exchanged. Fix
this by using the clamp() helper instead.
Fixes: 63ba1e00f178a448 ("serial: sh-sci: Support for HSCIF RX sampling
point adjustment") Signed-off-by: Geert Uytterhoeven
<geert+renesas@glider.be> Reviewed-by: Ulrich Hecht
<uli+renesas@fpond.eu> Reviewed-by: Wolfram Sang
<wsa+renesas@sang-engineering.com> Acked-by: Dirk Behme
<dirk.behme@de.bosch.com> Cc: stable <stable@vger.kernel.org>
Reviewed-by: Simon Horman <horms+renesas@verge.net.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/sh-sci.c (diff)
Commit e00164a0f000de893944981f41a568c981aca658 by gregkh
sc16is7xx: move label 'err_spi' to correct section
err_spi is used when SERIAL_SC16IS7XX_SPI is enabled, so make the label
only available under SERIAL_SC16IS7XX_SPI option. Otherwise, the below
warning appears.
drivers/tty/serial/sc16is7xx.c:1523:1: warning: label ‘err_spi’ defined
but not used [-Wunused-label]
err_spi:
^~~~~~~
Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Fixes: ac0cdb3d9901
("sc16is7xx: missing unregister/delete driver on error in
sc16is7xx_init()") Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/sc16is7xx.c (diff)
Commit 2b27924bb1d48e3775f432b70bdad5e6dd4e7798 by pbonzini
KVM: nVMX: always use early vmcs check when EPT is disabled
The remaining failures of vmx.flat when EPT is disabled are caused by
incorrectly reflecting VMfails to the L1 hypervisor.  What happens is
that nested_vmx_restore_host_state corrupts the guest CR3, reloading it
with the host's shadow CR3 instead, because it blindly loads GUEST_CR3
from the vmcs01.
For simplicity let's just always use hardware VMCS checks when EPT is
disabled.  This way, nested_vmx_restore_host_state is not reached at all
(or at least shouldn't be reached).
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
The file was modifiedarch/x86/include/uapi/asm/vmx.h (diff)
Commit bc8a3d8925a8fa09fa550e0da115d95851ce33c6 by pbonzini
kvm: mmu: Fix overflow on kvm mmu page limit calculation
KVM bases its memory usage limits on the total number of guest pages
across all memslots. However, those limits, and the calculations to
produce them, use 32 bit unsigned integers. This can result in overflow
if a VM has more guest pages that can be represented by a u32. As a
result of this overflow, KVM can use a low limit on the number of MMU
pages it will allocate. This makes KVM unable to map all of guest memory
at once, prompting spurious faults.
Tested: Ran all kvm-unit-tests on an Intel Haswell machine. This 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>
The file was modifiedarch/x86/kvm/mmu.h (diff)
The file was modifiedarch/x86/kvm/x86.c (diff)
The file was modifiedarch/x86/kvm/mmu.c (diff)
The file was modifiedarch/x86/include/asm/kvm_host.h (diff)
Commit 4a58038b9e420276157785afa0a0bbb4b9bc2265 by pbonzini
Revert "svm: Fix AVIC incomplete IPI emulation"
This reverts commit bb218fbcfaaa3b115d4cd7a43c0ca164f3a96e57.
As Oren Twaig pointed out the old discussion:
  https://patchwork.kernel.org/patch/8292231/
that the change coud potentially cause an extra IPI to be sent to the
destination vcpu because the AVIC hardware already set the IRR bit
before the incomplete IPI #VMEXIT with id=1 (target vcpu is not
running). Since writting to ICR and ICR2 will also set the IRR. If
something triggers the destination vcpu to get scheduled before the
emulation finishes, then this could result in an additional IPI.
Also, the issue mentioned in the commit bb218fbcfaaa was misdiagnosed.
Cc: Radim Krčmář <rkrcmar@redhat.com> Cc: Paolo Bonzini
<pbonzini@redhat.com> Reported-by: Oren Twaig <oren@scalemp.com>
Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Cc:
stable@vger.kernel.org Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/svm.c (diff)
Commit e44e3eacccfd2294a1ce279f68452b1635d7fa82 by pbonzini
svm/avic: Fix invalidate logical APIC id entry
Only clear the valid bit when invalidate logical APIC id entry. The
current logic clear the valid bit, but also set the rest of the bits
(including reserved bits) to 1.
Fixes: 98d90582be2e ('svm: Fix AVIC DFR and LDR handling')
Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Cc:
stable@vger.kernel.org Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/svm.c (diff)
Commit 99c221796a810055974b54c02e8f53297e48d146 by pbonzini
KVM: x86: svm: make sure NMI is injected after nmi_singlestep
I noticed that apic test from kvm-unit-tests always hangs on my EPYC
7401P, the hanging test nmi-after-sti is trying to deliver 30000 NMIs
and tracing shows that we're sometimes able to deliver a few but never
all.
When we're trying to inject an NMI we may fail to do so immediately for
various reasons, however, we still need to inject it so
enable_nmi_window() arms nmi_singlestep mode. #DB occurs as expected,
but we're not checking for pending NMIs before entering the guest and
unless there's a different event to process, the NMI will never get
delivered.
Make KVM_REQ_EVENT request on the vCPU from db_interception() to make
sure pending NMIs are checked and possibly injected.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Cc:
stable@vger.kernel.org Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/svm.c (diff)
Commit 1811d979c71621aafc7b879477202d286f7e863b by pbonzini
x86/kvm: move kvm_load/put_guest_xcr0 into atomic context
guest xcr0 could leak into host when MCE happens in guest mode. Because
do_machine_check() could schedule out at a few places.
For example:
kvm_load_guest_xcr0
... kvm_x86_ops->run(vcpu) {
vmx_vcpu_run
   vmx_complete_atomic_exit
     kvm_machine_check
       do_machine_check
         do_memory_failure
           memory_failure
             lock_page
In this case, host_xcr0 is 0x2ff, guest vcpu xcr0 is 0xff. After
schedule out, host cpu has guest xcr0 loaded (0xff).
In __switch_to {
    switch_fpu_finish
      copy_kernel_to_fpregs
        XRSTORS
If any bit i in XSTATE_BV[i] == 1 and xcr0[i] == 0, XRSTORS will
generate #GP (In this case, bit 9). Then ex_handler_fprestore kicks in
and tries to reinitialize fpu by restoring init fpu state. Same story as
last #GP, except we get DOUBLE FAULT this time.
Cc: stable@vger.kernel.org Signed-off-by: WANG Chao
<chao.wang@ucloud.cn> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/svm.c (diff)
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
The file was modifiedarch/x86/kvm/x86.h (diff)
The file was modifiedarch/x86/kvm/x86.c (diff)
Commit 672ff6cff80ca43bf3258410d2b887036969df5f by pbonzini
KVM: x86: Raise #GP when guest vCPU do not support PMU
Before this change, reading a VMware pseduo PMC will succeed even when
PMU is not supported by guest. This can easily be seen by running
kvm-unit-test vmware_backdoors with "-cpu host,-pmu" option.
Reviewed-by: Mihai Carabas <mihai.carabas@oracle.com> Signed-off-by:
Liran Alon <liran.alon@oracle.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/pmu.c (diff)
Commit e51bfdb68725dc052d16241ace40ea3140f938aa by pbonzini
KVM: nVMX: Expose RDPMC-exiting only when guest supports PMU
Issue was discovered when running kvm-unit-tests on KVM running as L1 on
top of Hyper-V.
When vmx_instruction_intercept unit-test attempts to run RDPMC to test
RDPMC-exiting, it is intercepted by L1 KVM which it's EXIT_REASON_RDPMC
handler raise #GP because vCPU exposed by Hyper-V doesn't support PMU.
Instead of unit-test expectation to be reflected with EXIT_REASON_RDPMC.
The reason vmx_instruction_intercept unit-test attempts to run RDPMC
even though Hyper-V doesn't support PMU is because L1 expose to L2
support for RDPMC-exiting. Which is reasonable to assume that is
supported only in case CPU supports PMU to being with.
Above issue can easily be simulated by modifying
vmx_instruction_intercept config in x86/unittests.cfg to run QEMU with
"-cpu host,+vmx,-pmu" and run unit-test.
To handle issue, change KVM to expose RDPMC-exiting only when guest
supports PMU.
Reported-by: Saar Amar <saaramar@microsoft.com> Reviewed-by: Mihai
Carabas <mihai.carabas@oracle.com> Reviewed-by: Jim Mattson
<jmattson@google.com> Signed-off-by: Liran Alon <liran.alon@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
Commit ed19321fb6571214f410b30322e4ad6e6b7c3915 by pbonzini
KVM: x86: Load SMRAM in a single shot when leaving SMM
RSM emulation is currently broken on VMX when the interrupted guest has
CR4.VMXE=1.  Rather than dance around the issue of HF_SMM_MASK being set
when loading SMSTATE into architectural state, ideally RSM emulation
itself would be reworked to clear HF_SMM_MASK prior to loading non-SMM
architectural state.
Ostensibly, the only motivation for having HF_SMM_MASK set throughout
the loading of state from the SMRAM save state area is so that the
memory accesses from GET_SMSTATE() are tagged with role.smm.  Load all
of the SMRAM save state area from guest memory at the beginning of RSM
emulation, and load state from the buffer instead of reading guest
memory one-by-one.
This paves the way for clearing HF_SMM_MASK prior to loading state, and
also aligns RSM with the enter_smm() behavior, which fills a buffer and
writes SMRAM save state in a single go.
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/svm.c (diff)
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
The file was modifiedarch/x86/kvm/emulate.c (diff)
The file was modifiedarch/x86/include/asm/kvm_emulate.h (diff)
The file was modifiedarch/x86/kvm/x86.c (diff)
The file was modifiedarch/x86/include/asm/kvm_host.h (diff)
Commit c5833c7a43a66bfe2f36439cb2f1281a588668af by pbonzini
KVM: x86: Open code kvm_set_hflags
Prepare for clearing HF_SMM_MASK prior to loading state from the SMRAM
save state map, i.e. kvm_smm_changed() needs to be called after state
has been loaded and so cannot be done automatically when setting hflags
from RSM.
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/include/asm/kvm_emulate.h (diff)
The file was modifiedarch/x86/kvm/emulate.c (diff)
The file was modifiedarch/x86/kvm/x86.c (diff)
Commit 9ec19493fb86d6d5fbf9286b94ff21e56ef66376 by pbonzini
KVM: x86: clear SMM flags before loading state while leaving SMM
RSM emulation is currently broken on VMX when the interrupted guest has
CR4.VMXE=1.  Stop dancing around the issue of HF_SMM_MASK being set when
loading SMSTATE into architectural state, e.g. by toggling it for
problematic flows, and simply clear HF_SMM_MASK prior to loading
architectural state (from SMRAM save state area).
Reported-by: Jon Doron <arilou@gmail.com> Cc: Jim Mattson
<jmattson@google.com> Cc: Liran Alon <liran.alon@oracle.com> Cc: Vitaly
Kuznetsov <vkuznets@redhat.com> Fixes: 5bea5123cbf0 ("KVM: VMX: check
nested state and CR4.VMXE against SMM") Signed-off-by: Sean
Christopherson <sean.j.christopherson@intel.com> Tested-by: Vitaly
Kuznetsov <vkuznets@redhat.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
The file was modifiedarch/x86/kvm/svm.c (diff)
The file was modifiedarch/x86/kvm/emulate.c (diff)
Commit 8f4dc2e77cdfaf7e644ef29693fa229db29ee1de by pbonzini
KVM: x86: Don't clear EFER during SMM transitions for 32-bit vCPU
Neither AMD nor Intel CPUs have an EFER field in the legacy SMRAM save
state area, i.e. don't save/restore EFER across SMM transitions.  KVM
somewhat models this, e.g. doesn't clear EFER on entry to SMM if the
guest doesn't support long mode.  But during RSM, KVM unconditionally
clears EFER so that it can get back to pure 32-bit mode in order to
start loading CRs with their actual non-SMM values.
Clear EFER only when it will be written when loading the non-SMM state
so as to preserve bits that can theoretically be set on 32-bit vCPUs,
e.g. KVM always emulates EFER_SCE.
And because CR4.PAE is cleared only to play nice with EFER, wrap that
code in the long mode check as well.  Note, this may result in a
compiler warning about cr4 being consumed uninitialized.  Re-read CR4
even though it's technically unnecessary, as doing so allows for more
readable code and RSM emulation is not a performance critical path.
Fixes: 660a5d517aaab ("KVM: x86: save/load state on SMM switch") Cc:
stable@vger.kernel.org Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/emulate.c (diff)
Commit b68f3cc7d978943fcf85148165b00594c38db776 by pbonzini
KVM: x86: Always use 32-bit SMRAM save state for 32-bit kernels
Invoking the 64-bit variation on a 32-bit kenrel will crash the guest,
trigger a WARN, and/or lead to a buffer overrun in the host, e.g.
rsm_load_state_64() writes r8-r15 unconditionally, but enum kvm_reg and
thus x86_emulate_ctxt._regs only define r8-r15 for CONFIG_X86_64.
KVM allows userspace to report long mode support via CPUID, even though
the guest is all but guaranteed to crash if it actually tries to enable
long mode.  But, a pure 32-bit guest that is ignorant of long mode will
happily plod along.
SMM complicates things as 64-bit CPUs use a different SMRAM save state
area.  KVM handles this correctly for 64-bit kernels, e.g. uses the
legacy save state map if userspace has hid long mode from the guest, but
doesn't fare well when userspace reports long mode support on a 32-bit
host kernel (32-bit KVM doesn't support 64-bit guests).
Since the alternative is to crash the guest, e.g. by not loading state
or explicitly requesting shutdown, unconditionally use the legacy SMRAM
save state map for 32-bit KVM.  If a guest has managed to get far enough
to handle SMIs when running under a weird/buggy userspace hypervisor,
then don't deliberately crash the guest since there are no downsides
(from KVM's perspective) to allow it to continue running.
Fixes: 660a5d517aaab ("KVM: x86: save/load state on SMM switch") Cc:
stable@vger.kernel.org Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/emulate.c (diff)
The file was modifiedarch/x86/kvm/x86.c (diff)
Commit c68c21ca929771a1f128d886359f9229d31cf80c by pbonzini
selftests: kvm/evmcs_test: complete I/O before migrating guest state
Starting state migration after an IO exit without first completing IO
may result in test failures.  We already have two tests that need this
(this patch in fact fixes evmcs_test, similar to what was fixed for
state_test in commit 0f73bbc851ed, "KVM: selftests: complete IO before
migrating guest state", 2019-03-13) and a third is coming.  So, move the
code to vcpu_save_state, and while at it do not access register state
until after I/O is complete.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedtools/testing/selftests/kvm/lib/kvm_util.c (diff)
The file was modifiedtools/testing/selftests/kvm/x86_64/evmcs_test.c (diff)
The file was modifiedtools/testing/selftests/kvm/x86_64/state_test.c (diff)
The file was modifiedtools/testing/selftests/kvm/lib/x86_64/processor.c (diff)
Commit c2390f16fc5b847a22f442a190d459beba07e86f by pbonzini
selftests: kvm: fix for compilers that do not support -no-pie
-no-pie was added to GCC at the same time as their configuration option
--enable-default-pie.  Compilers that were built before do not have
-no-pie, but they also do not need it.  Detect the option at build time.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedtools/testing/selftests/kvm/Makefile (diff)
Commit 79904c9de0d1a6cd66853b3af802343b0ba3720c by pbonzini
selftests: kvm: add a selftest for SMM
Add a simple test for SMM, based on VMX.  The test implements its own
sync between the guest and the host as using our ucall library seems to
be too cumbersome: SMI handler is happening in real-address mode.
This patch also fixes KVM_SET_NESTED_STATE to happen after
KVM_SET_VCPU_EVENTS, in fact it places it last.  This is because KVM
needs to know whether the processor is in SMM or not.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
The file was addedtools/testing/selftests/kvm/x86_64/smm_test.c
The file was modifiedtools/testing/selftests/kvm/lib/x86_64/processor.c (diff)
The file was modifiedtools/testing/selftests/kvm/include/x86_64/processor.h (diff)
The file was modifiedtools/testing/selftests/kvm/Makefile (diff)
Commit be43c440eb5d0ccfdb0d67d5a4c9d579ff988b75 by pbonzini
KVM: x86: fix warning Using plain integer as NULL pointer
Changed passing argument as "0 to NULL" which resolves below sparse
warning
arch/x86/kvm/x86.c:3096:61: warning: Using plain integer as NULL pointer
Signed-off-by: Hariprasad Kelam <hariprasad.kelam@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/x86.c (diff)
Commit 1d487e9bf8ba66a7174c56a0029c54b1eca8f99c by pbonzini
KVM: fix spectrev1 gadgets
These were found with smatch, and then generalized when applicable.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/lapic.c (diff)
The file was modifiedinclude/linux/kvm_host.h (diff)
The file was modifiedvirt/kvm/kvm_main.c (diff)
The file was modifiedvirt/kvm/irqchip.c (diff)
Commit 7a223e06b1a411cef6c4cd7a9b9a33c8d225b10e by pbonzini
KVM: x86: avoid misreporting level-triggered irqs as edge-triggered in
tracing
In __apic_accept_irq() interface trig_mode is int and actually on some
code paths it is set above u8:
kvm_apic_set_irq() extracts it from 'struct kvm_lapic_irq' where
trig_mode is u16. This is done on purpose as e.g. kvm_set_msi_irq() sets
it to
(1 << 15) & e->msi.data
kvm_apic_local_deliver sets it to reg & (1 << 15).
Fix the immediate issue by making 'tm' into u16. We may also want to
adjust
__apic_accept_irq() interface and use proper sizes for vector, level,
trig_mode but this is not urgent.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/trace.h (diff)
Commit 8c2f870890fd28e023b0fcf49dcee333f2c8bad7 by tiwai
ALSA: info: Fix racy addition/deletion of nodes
The ALSA proc helper manages the child nodes in a linked list, but its
addition and deletion is done without any lock.  This leads to a
corruption if they are operated concurrently.  Usually this isn't a
problem because the proc entries are added sequentially in the driver
probe procedure itself.  But the card registrations are done often
asynchronously, and the crash could be actually reproduced with
syzkaller.
This patch papers over it by protecting the link addition and deletion
with the parent's mutex.  There is "access" mutex that is used for the
file access, and this can be reused for this purpose as well.
Reported-by: syzbot+48df349490c36f9f54ab@syzkaller.appspotmail.com Cc:
<stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/core/info.c (diff)
Commit 14c9b31a925a9f5c647523a12e2b575b97c0aa47 by acme
perf header: Fix lock/unlock imbalances when processing BPF/BTF info
Fix lock/unlock imbalances by refactoring the code a bit and adding
calls to up_write() before return.
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com> Acked-by:
Song Liu <songliubraving@fb.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra
<peterz@infradead.org> Addresses-Coverity-ID: 1444315 ("Missing unlock")
Addresses-Coverity-ID: 1444316 ("Missing unlock") Fixes: a70a1123174a
("perf bpf: Save BTF information as headers to perf.data") Fixes:
606f972b1361 ("perf bpf: Save bpf_prog_info information as headers to
perf.data") Link:
http://lkml.kernel.org/r/20190408173355.GA10501@embeddedor
[ Simplified the exit path to have just one up_write() + return ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/header.c (diff)
Commit 6e4b1cac30d297718218dc268199ed20df074b98 by acme
perf scripts python: export-to-sqlite.py: Fix use of parent_id in
calls_view
Fix following error using calls_view:
Query failed: ambiguous column name: parent_id Unable to execute
statement
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Fixes: 8ce9a7251d11 ("perf scripts python:
export-to-sqlite.py: Export calls parent_id") Link:
http://lkml.kernel.org/r/20190409062557.26138-1-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/scripts/python/export-to-sqlite.py (diff)
Commit 8002a63f9ace7e9c958408f77f0a4dd4a8414511 by acme
perf stat: Disable DIR_FORMAT feature for 'perf stat record'
Arnaldo reported assertion in perf stat record:
  assertion failed at util/header.c:875
There's no support for this in the 'perf state record' command, disable
the feature for that case.
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Jiri Olsa <jolsa@kernel.org> Tested-by: Arnaldo Carvalho de Melo
<acme@redhat.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Fixes:
258031c017c3 ("perf header: Add DIR_FORMAT feature to describe directory
data") Link:
http://lkml.kernel.org/r/20190409100156.20303-1-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/builtin-stat.c (diff)
Commit f32c2877bcb068a718bb70094cd59ccc29d4d082 by acme
tools lib traceevent: Fix missing equality check for strcmp
There was a missing comparison with 0 when checking if type is "s64" or
"u64". Therefore, the body of the if-statement was entered if "type" was
"u64" or not "s64", which made the first strcmp() redundant since if
type is "u64", it's not "s64".
If type is "s64", the body of the if-statement is not entered but since
the remainder of the function consists of if-statements which will not
be entered if type is "s64", we will just return "val", which is
correct, albeit at the cost of a few more calls to strcmp(), i.e., it
will behave just as if the if-statement was entered.
If type is neither "s64" or "u64", the body of the if-statement will be
entered incorrectly and "val" returned. This means that any type that is
checked after "s64" and "u64" is handled the same way as "s64" and
"u64", i.e., the limiting of "val" to fit in for example "s8" is never
reached.
This was introduced in the kernel tree when the sources were copied from
trace-cmd in commit f7d82350e597 ("tools/events: Add files to create
libtraceevent.a"), and in the trace-cmd repo in 1cdbae6035cei
("Implement typecasting in parser") when the function was introduced,
i.e., it has always behaved the wrong way.
Detected by cppcheck.
Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org> Cc: Tzvetomir
Stoyanov <tstoyanov@vmware.com> Fixes: f7d82350e597 ("tools/events: Add
files to create libtraceevent.a") Link:
http://lkml.kernel.org/r/20190409091529.2686-1-rikard.falkeborn@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/lib/traceevent/event-parse.c (diff)
Commit 3a5b64f05d7fe36dea0dde26423e3044fbacd482 by acme
perf evsel: Use hweight64() instead of
hweight_long(attr.sample_regs_user)
On 32-bits platform with more than 32 registers, the 64 bits mask is
truncate to the lower 32 bits and the return value of hweight_long will
always smaller than 32. When kernel outputs more than 32 registers, but
the user perf program only counts 32, there will be a data mismatch
result to overflow check fail.
Signed-off-by: Mao Han <han_mao@c-sky.com> Cc: Adrian Hunter
<adrian.hunter@intel.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Fixes:
6a21c0b5c2ab ("perf tools: Add core support for sampling intr machine
state regs") Fixes: d03f2170546d ("perf tools: Expand
perf_event__synthesize_sample()") Fixes: 0f6a30150ca2 ("perf tools:
Support user regs and stack in sample parsing") Link:
http://lkml.kernel.org/r/29ad7947dc8fd1ff0abd2093a72cc27a2446be9f.1554883878.git.han_mao@c-sky.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/evsel.c (diff)
Commit 6a3eb3360667170988f8a6477f6686242061488a by stfrench
cifs: Fix use-after-free in SMB2_write
There is a KASAN use-after-free: BUG: KASAN: use-after-free in
SMB2_write+0x1342/0x1580 Read of size 8 at addr ffff8880b6a8e450 by task
ln/4196
Should not release the 'req' because it will use in the trace.
Fixes: eccb4422cf97 ("smb3: Add ftrace tracepoints for improved SMB3
debugging")
Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com> Signed-off-by:
Steve French <stfrench@microsoft.com> CC: Stable
<stable@vger.kernel.org> 4.18+ Reviewed-by: Pavel Shilovsky
<pshilov@microsoft.com>
The file was modifiedfs/cifs/smb2pdu.c (diff)
Commit 088aaf17aa79300cab14dbee2569c58cfafd7d6e by stfrench
cifs: Fix use-after-free in SMB2_read
There is a KASAN use-after-free: BUG: KASAN: use-after-free in
SMB2_read+0x1136/0x1190 Read of size 8 at addr ffff8880b4e45e50 by task
ln/1009
Should not release the 'req' because it will use in the trace.
Fixes: eccb4422cf97 ("smb3: Add ftrace tracepoints for improved SMB3
debugging")
Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com> Signed-off-by:
Steve French <stfrench@microsoft.com> CC: Stable
<stable@vger.kernel.org> 4.18+ Reviewed-by: Pavel Shilovsky
<pshilov@microsoft.com>
The file was modifiedfs/cifs/smb2pdu.c (diff)
Commit b57a55e2200ede754e4dc9cce4ba9402544b9365 by stfrench
cifs: Fix lease buffer length error
There is a KASAN slab-out-of-bounds: BUG: KASAN: slab-out-of-bounds in
_copy_from_iter_full+0x783/0xaa0 Read of size 80 at addr
ffff88810c35e180 by task mount.cifs/539
CPU: 1 PID: 539 Comm: mount.cifs Not tainted 4.19 #10 Hardware name:
QEMU Standard PC (i440FX + PIIX, 1996), BIOS
           rel-1.12.0-0-ga698c8995f-prebuilt.qemu.org 04/01/2014 Call
Trace:
dump_stack+0xdd/0x12a
print_address_description+0xa7/0x540
kasan_report+0x1ff/0x550
check_memory_region+0x2f1/0x310
memcpy+0x2f/0x80
_copy_from_iter_full+0x783/0xaa0
tcp_sendmsg_locked+0x1840/0x4140
tcp_sendmsg+0x37/0x60
inet_sendmsg+0x18c/0x490
sock_sendmsg+0xae/0x130
smb_send_kvec+0x29c/0x520
__smb_send_rqst+0x3ef/0xc60
smb_send_rqst+0x25a/0x2e0
compound_send_recv+0x9e8/0x2af0
cifs_send_recv+0x24/0x30
SMB2_open+0x35e/0x1620
open_shroot+0x27b/0x490
smb2_open_op_close+0x4e1/0x590
smb2_query_path_info+0x2ac/0x650
cifs_get_inode_info+0x1058/0x28f0
cifs_root_iget+0x3bb/0xf80
cifs_smb3_do_mount+0xe00/0x14c0
cifs_do_mount+0x15/0x20
mount_fs+0x5e/0x290
vfs_kern_mount+0x88/0x460
do_mount+0x398/0x31e0
ksys_mount+0xc6/0x150
__x64_sys_mount+0xea/0x190
do_syscall_64+0x122/0x590
entry_SYSCALL_64_after_hwframe+0x44/0xa9
It can be reproduced by the following step:
1. samba configured with: server max protocol = SMB2_10
2. mount -o vers=default
When parse the mount version parameter, the 'ops' and 'vals' was setted
to smb30,  if negotiate result is smb21, just update the 'ops' to smb21,
but the 'vals' is still smb30. When add lease context, the iov_base is
allocated with smb21 ops, but the iov_len is initiallited with the
smb30. Because the iov_len is longer than iov_base, when send the
message, copy array out of bounds.
we need to keep the 'ops' and 'vals' consistent.
Fixes: 9764c02fcbad ("SMB3: Add support for multidialect negotiate
(SMB2.1 and later)") Fixes: d5c7076b772a ("smb3: add smb3.1.1 to default
dialect list")
Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com> Signed-off-by:
Steve French <stfrench@microsoft.com> CC: Stable
<stable@vger.kernel.org> Reviewed-by: Pavel Shilovsky
<pshilov@microsoft.com>
The file was modifiedfs/cifs/smb2pdu.c (diff)
Commit e6d0fb7b34f264f72c33053558a360a6a734905e by stfrench
cifs: fix handle leak in smb2_query_symlink()
If we enter smb2_query_symlink() for something that is not a symlink and
where the SMB2_open() would succeed we would never end up closing this
handle and would thus leak a handle on the server.
Fix this by immediately calling SMB2_close() on successfull open.
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com> CC: Stable
<stable@vger.kernel.org> Signed-off-by: Steve French
<stfrench@microsoft.com> Reviewed-by: Pavel Shilovsky
<pshilov@microsoft.com>
The file was modifiedfs/cifs/smb2ops.c (diff)
Commit b98749cac4a695f084a5ff076f4510b23e353ecd by stfrench
CIFS: keep FileInfo handle live during oplock break
In the oplock break handler, writing pending changes from pages puts the
FileInfo handle. If the refcount reaches zero it closes the handle and
waits for any oplock break handler to return, thus causing a deadlock.
To prevent this situation:
* We add a wait flag to cifsFileInfo_put() to decide whether we should
wait for running/pending oplock break handlers
* We keep an additionnal reference of the SMB FileInfo handle so that
for the rest of the handler putting the handle won't close it.
- The ref is bumped everytime we queue the handler via the
   cifs_queue_oplock_break() helper.
- The ref is decremented at the end of the handler
This bug was triggered by xfstest 464.
Also important fix to address the various reports of oops in
smb2_push_mandatory_locks
Signed-off-by: Aurelien Aptel <aaptel@suse.com> Signed-off-by: Steve
French <stfrench@microsoft.com> Reviewed-by: Pavel Shilovsky
<pshilov@microsoft.com> CC: Stable <stable@vger.kernel.org>
The file was modifiedfs/cifs/smb2misc.c (diff)
The file was modifiedfs/cifs/file.c (diff)
The file was modifiedfs/cifs/misc.c (diff)
The file was modifiedfs/cifs/cifsglob.h (diff)
Commit 2e8e19226398db8265a8e675fcc0118b9e80c9e8 by mingo
sched/fair: Limit sched_cfs_period_timer() loop to avoid hard lockup
With extremely short cfs_period_us setting on a parent task group with a
large number of children the for loop in sched_cfs_period_timer() can
run until the watchdog fires. There is no guarantee that the call to
hrtimer_forward_now() will ever return 0.  The large number of children
can make do_sched_cfs_period_timer() take longer than the period.
NMI watchdog: Watchdog detected hard LOCKUP on cpu 24
RIP: 0010:tg_nop+0x0/0x10
<IRQ>
walk_tg_tree_from+0x29/0xb0
unthrottle_cfs_rq+0xe0/0x1a0
distribute_cfs_runtime+0xd3/0xf0
sched_cfs_period_timer+0xcb/0x160
? sched_cfs_slack_timer+0xd0/0xd0
__hrtimer_run_queues+0xfb/0x270
hrtimer_interrupt+0x122/0x270
smp_apic_timer_interrupt+0x6a/0x140
apic_timer_interrupt+0xf/0x20
</IRQ>
To prevent this we add protection to the loop that detects when the loop
has run too many times and scales the period and quota up,
proportionally, so that the timer can complete before then next period
expires.  This preserves the relative runtime quota while preventing the
hard lockup.
A warning is issued reporting this state and the new values.
Signed-off-by: Phil Auld <pauld@redhat.com> Signed-off-by: Peter
Zijlstra (Intel) <peterz@infradead.org> Cc: <stable@vger.kernel.org> Cc:
Anton Blanchard <anton@ozlabs.org> Cc: Ben Segall <bsegall@google.com>
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/20190319130005.25492-1-pauld@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/sched/fair.c (diff)
Commit 1b02cd6a2d7f3e2a6a5262887d2cb2912083e42f by mingo
sched/deadline: Correctly handle active 0-lag timers
syzbot reported the following warning:
   [ ] WARNING: CPU: 4 PID: 17089 at kernel/sched/deadline.c:255
task_non_contending+0xae0/0x1950
line 255 of deadline.c is:
WARN_ON(hrtimer_active(&dl_se->inactive_timer));
in task_non_contending().
Unfortunately, in some cases (for example, a deadline task continuosly
blocking and waking immediately) it can happen that a task blocks (and
task_non_contending() is called) while the 0-lag timer is still active.
In this case, the safest thing to do is to immediately decrease the
running bandwidth of the task, without trying to re-arm the 0-lag timer.
Signed-off-by: luca abeni <luca.abeni@santannapisa.it> Signed-off-by:
Peter Zijlstra (Intel) <peterz@infradead.org> Acked-by: Juri Lelli
<juri.lelli@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc:
chengjian (D) <cj.chengjian@huawei.com> Link:
https://lkml.kernel.org/r/20190325131530.34706-1-luca.abeni@santannapisa.it
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/sched/deadline.c (diff)
Commit 2a3f7221acddfe1caa9ff09b3a8158c39b2fdeac by tiwai
ALSA: core: Fix card races between register and disconnect
There is a small race window in the card disconnection code that allows
the registration of another card with the very same card id. This leads
to a warning in procfs creation as caught by syzkaller.
The problem is that we delete snd_cards and snd_cards_lock entries at
the very beginning of the disconnection procedure.  This makes the slot
available to be assigned for another card object while the disconnection
procedure is being processed.  Then it becomes possible to issue a
procfs registration with the existing file name although we check the
conflict beforehand.
The fix is simply to move the snd_cards and snd_cards_lock clearances at
the end of the disconnection procedure.  The references to these entries
are merely either from the global proc files like
/proc/asound/cards or from the card registration / disconnection, so it
should be fine to shift at the very end.
Reported-by: syzbot+48df349490c36f9f54ab@syzkaller.appspotmail.com Cc:
<stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/core/init.c (diff)
Commit 1e6db2ee86e6a4399fc0ae5689e55e0fd1c43caf by acme
perf top: Always sample time to satisfy needs of use of ordered queuing
Bastian reported broken 'perf top -p PID' command, it won't display any
data.
The problem is that for -p option we monitor single thread, so we don't
enable time in samples, because it's not needed.
However since commit 16c66bc167cc we use ordered queues to stash data
plus later commits added logic for dropping samples in case there's big
load and we don't keep up. All this needs timestamp for sample. Enabling
it unconditionally for perf top.
Reported-by: Bastian Beischer <bastian.beischer@rwth-aachen.de>
Signed-off-by: Jiri Olsa <jolsa@kernel.org> Tested-by: Arnaldo Carvalho
de Melo <acme@redhat.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
bastian beischer <bastian.beischer@rwth-aachen.de> Fixes: 16c66bc167cc
("perf top: Add processing thread") Link:
http://lkml.kernel.org/r/20190415125333.27160-1-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/builtin-top.c (diff)
Commit 30e4c574969ccb624940f1f2f7886596f8fc60ad by acme
tools include uapi: Sync sound/asound.h copy
Picking the changes from:
  Fixes: b5bdbb6ccd11 ("ALSA: uapi: #include <time.h> in asound.h")
Which entails no changes in the tooling side.
To silence this perf tools build warning:
  Warning: Kernel ABI header at 'tools/include/uapi/sound/asound.h'
differs from latest version at 'include/uapi/sound/asound.h'
diff -u tools/include/uapi/sound/asound.h include/uapi/sound/asound.h
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Daniel Mentz
<danielmentz@google.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung
Kim <namhyung@kernel.org> Cc: Takashi Iwai <tiwai@suse.de> Link:
https://lkml.kernel.org/n/tip-15o4twfkbn6nny9aus90dyzx@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/include/uapi/sound/asound.h (diff)
Commit bd2e98b351b668fa914b46cc77040fdb2a817c06 by cminyard
ipmi: Fix failure on SMBIOS specified devices
An extra memset was put into a place that cleared the interface type.
Reported-by: Tony Camuso <tcamuso@redhat.com> Fixes: 3cd83bac481dc4
("ipmi: Consolidate the adding of platform devices") Signed-off-by:
Corey Minyard <cminyard@mvista.com>
The file was modifieddrivers/char/ipmi/ipmi_dmi.c (diff)
Commit a885bcfd152f97b25005298ab2d6b741aed9b49c by cminyard
ipmi: ipmi_si_hardcode.c: init si_type array to fix a crash
The intended behavior of function ipmi_hardcode_init_one() is to default
to kcs interface when no type argument is presented when initializing
ipmi with hard coded addresses.
However, the array of char pointers allocated on the stack by function
ipmi_hardcode_init() was not inited to zeroes, so it contained stack
debris.
Consequently, passing the cruft stored in this array to function
ipmi_hardcode_init_one() caused a crash when it was unable to detect
that the char * being passed was nonsense and tried to access the
address specified by the bogus pointer.
The fix is simply to initialize the si_type array to zeroes, so if there
were no type argument given to at the command line, function
ipmi_hardcode_init_one() could properly default to the kcs interface.
Signed-off-by: Tony Camuso <tcamuso@redhat.com> Message-Id:
<1554837603-40299-1-git-send-email-tcamuso@redhat.com> Signed-off-by:
Corey Minyard <cminyard@mvista.com>
The file was modifieddrivers/char/ipmi/ipmi_si_hardcode.c (diff)
Commit a1e8783db8e0d58891681bc1e6d9ada66eae8e20 by paul.burton
MIPS: perf: ath79: Fix perfcount IRQ assignment
Currently it's not possible to use perf on ath79 due to genirq flags
mismatch happening on static virtual IRQ 13 which is used for
performance counters hardware IRQ 5.
On TP-Link Archer C7v5:
           CPU0
2:          0      MIPS   2  ath9k
4:        318      MIPS   4  19000000.eth
7:      55034      MIPS   7  timer
8:       1236      MISC   3  ttyS0
12:          0      INTC   1  ehci_hcd:usb1
13:          0  gpio-ath79   2  keys
14:          0  gpio-ath79   5  keys
15:         31  AR724X PCI    1  ath10k_pci
$ perf top
genirq: Flags mismatch irq 13. 00014c83 (mips_perf_pmu) vs. 00002003
(keys)
On TP-Link Archer C7v4:
         CPU0
4:          0      MIPS   4  19000000.eth
5:       7135      MIPS   5  1a000000.eth
7:      98379      MIPS   7  timer
8:         30      MISC   3  ttyS0
12:      90028      INTC   0  ath9k
13:       5520      INTC   1  ehci_hcd:usb1
14:       4623      INTC   2  ehci_hcd:usb2
15:      32844  AR724X PCI    1  ath10k_pci
16:          0  gpio-ath79  16  keys
23:          0  gpio-ath79  23  keys
$ perf top
genirq: Flags mismatch irq 13. 00014c80 (mips_perf_pmu) vs. 00000080
(ehci_hcd:usb1)
This problem is happening, because currently statically assigned virtual
IRQ 13 for performance counters is not claimed during the initialization
of MIPS PMU during the bootup, so the IRQ subsystem doesn't know, that
this interrupt isn't available for further use.
So this patch fixes the issue by simply booking hardware IRQ 5 for MIPS
PMU.
Tested-by: Kevin 'ldir' Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
Signed-off-by: Petr Štetiar <ynezz@true.cz> Acked-by: John Crispin
<john@phrozen.org> Acked-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Paul Burton <paul.burton@mips.com> Cc:
linux-mips@vger.kernel.org Cc: Ralf Baechle <ralf@linux-mips.org> Cc:
James Hogan <jhogan@kernel.org> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Jason Cooper <jason@lakedaemon.net>
The file was modifieddrivers/irqchip/irq-ath79-misc.c (diff)
The file was modifiedarch/mips/ath79/setup.c (diff)
Commit 3b2e2904deb314cc77a2192f506f2fd44e3d10d0 by davem
net: bridge: fix per-port af_packet sockets
When the commit below was introduced it changed two visible things:
- the skb was no longer passed through the protocol handlers with the
  original device
- the skb was passed up the stack with skb->dev = bridge
The first change broke af_packet sockets on bridge ports. For example we
use them for hostapd which listens for ETH_P_PAE packets on the ports.
We discussed two possible fixes:
- create a clone and pass it through NF_HOOK(), act on the original skb
  based on the result
- somehow signal to the caller from the okfn() that it was called,
  meaning the skb is ok to be passed, which this patch is trying to
  implement via returning 1 from the bridge link-local okfn()
Note that we rely on the fact that NF_QUEUE/STOLEN would return 0 and
drop/error would return < 0 thus the okfn() is called only when the
return was 1, so we signal to the caller that it was called by
preserving the return value from nf_hook().
Fixes: 8626c56c8279 ("bridge: fix potential use-after-free when hook
returns QUEUE or STOLEN verdict") Signed-off-by: Nikolay Aleksandrov
<nikolay@cumulusnetworks.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/bridge/br_input.c (diff)
Commit ad910c7c01269f229a97c335f2dc669fff750f65 by davem
net/core: work around section mismatch warning for ptp_classifier
The routine ptp_classifier_init() uses an initializer for an automatic
struct type variable which refers to an __initdata symbol. This is
perfectly legal, but may trigger a section mismatch warning when running
the compiler in -fpic mode, due to the fact that the initializer may be
emitted into an anonymous
.data section thats lack the __init annotation. So work around it by
using assignments instead.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by:
Gerald Schaefer <gerald.schaefer@de.ibm.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/core/ptp_classifier.c (diff)
Commit 899537b73557aafbdd11050b501cf54b4f5c45af by davem
net: atm: Fix potential Spectre v1 vulnerabilities
arg is 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:
net/atm/lec.c:715 lec_mcast_attach() warn: potential spectre issue
'dev_lec' [r] (local cap)
Fix this by sanitizing arg before using it to index dev_lec.
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/
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/atm/lec.c (diff)
Commit d85e8be2a5a02869f815dd0ac2d743deb4cd7957 by davem
net: Fix missing meta data in skb with vlan packet
skb_reorder_vlan_header() should move XDP meta data with ethernet header
if XDP meta data exists.
Fixes: de8f3a83b0a0 ("bpf: add meta pointer for direct access")
Signed-off-by: Yuya Kusakabe <yuya.kusakabe@gmail.com> Signed-off-by:
Takeru Hayasaka <taketarou2@gmail.com> Co-developed-by: Takeru Hayasaka
<taketarou2@gmail.com> Reviewed-by: Toshiaki Makita
<makita.toshiaki@lab.ntt.co.jp> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/core/skbuff.c (diff)
Commit f7a937801b9f8788519a23b12cb4d6c2c84d84be by davem
tipc: fix link established but not in session
According to the link FSM, when a link endpoint got RESET_MSG (- a
traditional one without the stopping bit) from its peer, it moves to
PEER_RESET state and raises a LINK_DOWN event which then resets the link
itself. Its state will become ESTABLISHING after the reset event and the
link will be re-established soon after this endpoint starts to send
ACTIVATE_MSG to the peer.
There is no problem with this mechanism, however the link resetting has
cleared the link 'in_session' flag (along with the other important link
data such as: the link 'mtu') that was correctly set up at the 1st step
(i.e. when this endpoint received the peer RESET_MSG). As a result, the
link will become ESTABLISHED, but the 'in_session' flag is not set, and
all STATE_MSG from its peer will be dropped at the link_validate_msg().
It means the link not synced and will sooner or later face a failure.
Since the link reset action is obviously needed for a new link session
(this is also true in the other situations), the problem here is that
the link is re-established a bit too early when the link endpoints are
not really in-sync yet. The commit forces a resync as already done in
the previous commit 91986ee166cf ("tipc: fix link session and
re-establish issues") by simply varying the link 'peer_session' value at
the link_reset().
Acked-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: Tuong Lien
<tuong.t.lien@dektech.com.au> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tipc/link.c (diff)
Commit 4bcd4ec1017205644a2697bccbc3b5143f522f5f by davem
tipc: set sysctl_tipc_rmem and named_timeout right range
We find that sysctl_tipc_rmem and named_timeout do not have the right
minimum setting. sysctl_tipc_rmem should be larger than zero, like
sysctl_tcp_rmem. And named_timeout as a timeout setting should be not
less than zero.
Fixes: cc79dd1ba9c10 ("tipc: change socket buffer overflow control to
respect sk_rcvbuf") Fixes: a5325ae5b8bff ("tipc: add name distributor
resiliency queue") Signed-off-by: Jie Liu <liujie165@huawei.com>
Reported-by: Qiang Ning <ningqiang1@huawei.com> Reviewed-by: Zhiqiang
Liu <liuzhiqiang26@huawei.com> Reviewed-by: Miaohe Lin
<linmiaohe@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tipc/sysctl.c (diff)
Commit 3321b6c23fb330e690ed5cf1336c827e07843200 by davem
qed: fix spelling mistake "faspath" -> "fastpath"
There is a spelling mistake in a DP_INFO message, fix it.
Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by:
Mukesh Ojha <mojha@codeaurora.org> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_sriov.c (diff)
Commit 600bea7dba1a72874ae0cd9bc66bf2abfe43b49d by davem
net: bridge: fix netlink export of vlan_stats_per_port option
Since the introduction of the vlan_stats_per_port option the netlink
export of it has been broken since I made a typo and used the ifla
attribute instead of the bridge option to retrieve its state. Sysfs
export is fine, only netlink export has been affected.
Fixes: 9163a0fc1f0c0 ("net: bridge: add support for per-port vlan
stats") Signed-off-by: Nikolay Aleksandrov <nikolay@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/bridge/br_netlink.c (diff)
Commit a8fd48b50deaa20808bbf0f6685f6f1acba6a64c by davem
ocelot: Don't sleep in atomic context (irqs_disabled())
Preemption disabled at:
[<ffff000008cabd54>] dev_set_rx_mode+0x1c/0x38
Call trace:
[<ffff00000808a5c0>] dump_backtrace+0x0/0x3d0
[<ffff00000808a9a4>] show_stack+0x14/0x20
[<ffff000008e6c0c0>] dump_stack+0xac/0xe4
[<ffff0000080fe76c>] ___might_sleep+0x164/0x238
[<ffff0000080fe890>] __might_sleep+0x50/0x88
[<ffff0000082261e4>] kmem_cache_alloc+0x17c/0x1d0
[<ffff000000ea0ae8>] ocelot_set_rx_mode+0x108/0x188 [mscc_ocelot_common]
[<ffff000008cabcf0>] __dev_set_rx_mode+0x58/0xa0
[<ffff000008cabd5c>] dev_set_rx_mode+0x24/0x38
Fixes: a556c76adc05 ("net: mscc: Add initial Ocelot switch support")
Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mscc/ocelot.c (diff)
Commit 1e1caa9735f90b5452fc48685c23552e56aa1920 by davem
ocelot: Clean up stats update deferred work
This is preventive cleanup that may save troubles later. No need to
cancel repeateadly queued work if code is properly refactored. Don't let
the ethtool -s process interfere with the stat workqueue scheduling.
Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mscc/ocelot.c (diff)
Commit 50ce163a72d817a99e8974222dcf2886d5deb1ae by davem
tcp: tcp_grow_window() needs to respect tcp_space()
For some reason, tcp_grow_window() correctly tests if enough room is
present before attempting to increase tp->rcv_ssthresh, but does not
prevent it to grow past tcp_space()
This is causing hard to debug issues, like failing the
(__tcp_select_window(sk) >= tp->rcv_wnd) test in __tcp_ack_snd_check(),
causing ACK delays and possibly slow flows.
Depending on tcp_rmem[2], MTU, skb->len/skb->truesize ratio, we can see
the problem happening on "netperf -t TCP_RR -- -r 2000,2000" after about
60 round trips, when the active side no longer sends immediate acks.
This bug predates git history.
Signed-off-by: Eric Dumazet <edumazet@google.com> Acked-by: Soheil
Hassas Yeganeh <soheil@google.com> Acked-by: Neal Cardwell
<ncardwell@google.com> Acked-by: Wei Wang <weiwan@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/tcp_input.c (diff)
Commit e6986423d28362aafe64d3757bbbc493f2687f8f by davem
socket: fix compat SO_RCVTIMEO_NEW/SO_SNDTIMEO_NEW
It looks like the new socket options only work correctly for native
execution, but in case of compat mode fall back to the old behavior as
we ignore the 'old_timeval' flag.
Rework so we treat SO_RCVTIMEO_NEW/SO_SNDTIMEO_NEW the same way in
compat and native 32-bit mode.
Cc: Deepa Dinamani <deepa.kernel@gmail.com> Fixes: a9beb86ae6e5 ("sock:
Add SO_RCVTIMEO_NEW and SO_SNDTIMEO_NEW") Signed-off-by: Arnd Bergmann
<arnd@arndb.de> Acked-by: Deepa Dinamani <deepa.kernel@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/core/sock.c (diff)
Commit 83f8bf4b837b0e3417f0e5c717a43fcf71ecc992 by treding
drm/tegra: hdmi: Setup audio only if configured
The audio configuration is only valid if the HDMI codec has been
properly set up. Do not attempt to set up audio before that happens
because it causes a division by zero.
Note that this is only problematic on Tegra20 and Tegra30. Later chips
implement the division instructions which return zero when dividing by
zero and don't throw an exception.
Fixes: db5adf4d6dce ("drm/tegra: hdmi: Fix audio to work with any pixel
clock rate") Reported-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Tested-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Thierry
Reding <treding@nvidia.com>
The file was modifieddrivers/gpu/drm/tegra/hdmi.c (diff)
Commit 35af0d469c6694c05f06e75c5d75caee9be66122 by schwidefsky
s390: correct some inline assembly constraints
Inline assembly code changed in this patch should really use "Q"
constraint "Memory reference without index register and with short
displacement". The kernel build with kasan instrumentation enabled might
occasionally break otherwise (due to stack instrumentation).
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com> Signed-off-by: Martin
Schwidefsky <schwidefsky@de.ibm.com>
The file was modifiedarch/s390/kernel/fpu.c (diff)
The file was modifiedarch/s390/kernel/vtime.c (diff)
Commit b26e36b7ef36a8a3a147b1609b2505f8a4ecf511 by tiwai
ALSA: hda/realtek - add two more pin configuration sets to quirk table
We have two Dell laptops which have the codec 10ec0236 and 10ec0256
respectively, the headset mic on them can't work, need to apply the
quirk of ALC255_FIXUP_DELL1_MIC_NO_PRESENCE. So adding their pin
configurations in the pin quirk table.
Cc: <stable@vger.kernel.org> Signed-off-by: Hui Wang
<hui.wang@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 8adddf349fda0d3de2f6bb41ddf838cbf36a8ad2 by mpe
powerpc/mm/radix: Make Radix require HUGETLB_PAGE
Joel reported weird crashes using skiroot_defconfig, in his case we
jumped into an NX page:
  kernel tried to execute exec-protected page (c000000002bff4f0) -
exploit attempt? (uid: 0)
BUG: Unable to handle kernel instruction fetch
Faulting instruction address: 0xc000000002bff4f0
Looking at the disassembly, we had simply branched to that address:
  c000000000c001bc  49fff335    bl     c000000002bff4f0
But that didn't match the original kernel image:
  c000000000c001bc  4bfff335    bl     c000000000bff4f0
<kobject_get+0x8>
When STRICT_KERNEL_RWX is enabled, and we're using the radix MMU, we
call radix__change_memory_range() late in boot to change page
protections. We do that both to mark rodata read only and also to mark
init text no-execute. That involves walking the kernel page tables, and
clearing _PAGE_WRITE or _PAGE_EXEC respectively.
With radix we may use hugepages for the linear mapping, so the code in
radix__change_memory_range() uses eg. pmd_huge() to test if it has found
a huge mapping, and if so it stops the page table walk and changes the
PMD permissions.
However if the kernel is built without HUGETLBFS support, pmd_huge() is
just a #define that always returns 0. That causes the code in
radix__change_memory_range() to incorrectly interpret the PMD value as a
pointer to a PTE page rather than as a PTE at the PMD level.
We can see this using `dv` in xmon which also uses pmd_huge():
  0:mon> dv c000000000000000
pgd  @ 0xc000000001740000
pgdp @ 0xc000000001740000 = 0x80000000ffffb009
pudp @ 0xc0000000ffffb000 = 0x80000000ffffa009
pmdp @ 0xc0000000ffffa000 = 0xc00000000000018f   <- this is a PTE
ptep @ 0xc000000000000100 = 0xa64bb17da64ab07d   <- kernel text
The end result is we treat the value at 0xc000000000000100 as a PTE and
clear _PAGE_WRITE or _PAGE_EXEC, potentially corrupting the code at that
address.
In Joel's specific case we cleared the sign bit in the offset of the
branch, causing a backward branch to turn into a forward branch which
caused us to branch into a non-executable page. However the exact nature
of the crash depends on kernel version, compiler version, and other
factors.
We need to fix radix__change_memory_range() to not use accessors that
depend on HUGETLBFS, but we also have radix memory hotplug code that
uses pmd_huge() etc that will also need fixing. So for now just disallow
the broken combination of Radix with HUGETLBFS disabled.
The only defconfig we have that is affected is skiroot_defconfig, so
turn on HUGETLBFS there so that it still gets Radix.
Fixes: 566ca99af026 ("powerpc/mm/radix: Add dummy radix_enabled()") Cc:
stable@vger.kernel.org # v4.7+ Reported-by: Joel Stanley
<joel@jms.id.au> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
The file was modifiedarch/powerpc/configs/skiroot_defconfig (diff)
The file was modifiedarch/powerpc/platforms/Kconfig.cputype (diff)
Commit 660cf4ce9d0f3497cc7456eaa6d74c8b71d6282c by gregkh
staging: comedi: ni_usb6501: Fix use of uninitialized mutex
If `ni6501_auto_attach()` returns an error, the core comedi module code
will call `ni6501_detach()` to clean up.  If `ni6501_auto_attach()`
successfully allocated the comedi device private data, `ni6501_detach()`
assumes that a `struct mutex mut` contained in the private data has been
initialized and uses it.  Unfortunately, there are a couple of places
where `ni6501_auto_attach()` can return an error after allocating the
device private data but before initializing the mutex, so this
assumption is invalid.  Fix it by initializing the mutex just after
allocating the private data in `ni6501_auto_attach()` before any other
errors can be retturned.  Also move the call to `usb_set_intfdata()`
just to keep the code a bit neater (either position for the call is
fine).
I believe this was the cause of the following syzbot crash report
<https://syzkaller.appspot.com/bug?extid=cf4f2b6c24aff0a3edf6>:
usb 1-1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 usb
1-1: config 0 descriptor?? usb 1-1: string descriptor 0 read error: -71
comedi comedi0: Wrong number of endpoints ni6501 1-1:0.233: driver
'ni6501' failed to auto-configure device. INFO: trying to register
non-static key. the code is fine but needs lockdep annotation. turning
off the locking correctness validator. CPU: 0 PID: 585 Comm: kworker/0:3
Not tainted 5.1.0-rc4-319354-g9a33b36 #3 Hardware name: Google Google
Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 Workqueue:
usb_hub_wq hub_event Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0xe8/0x16e lib/dump_stack.c:113
assign_lock_key kernel/locking/lockdep.c:786 [inline]
register_lock_class+0x11b8/0x1250 kernel/locking/lockdep.c:1095
__lock_acquire+0xfb/0x37c0 kernel/locking/lockdep.c:3582
lock_acquire+0x10d/0x2f0 kernel/locking/lockdep.c:4211
__mutex_lock_common kernel/locking/mutex.c:925 [inline]
__mutex_lock+0xfe/0x12b0 kernel/locking/mutex.c:1072
ni6501_detach+0x5b/0x110 drivers/staging/comedi/drivers/ni_usb6501.c:567
comedi_device_detach+0xed/0x800 drivers/staging/comedi/drivers.c:204
comedi_device_cleanup.part.0+0x68/0x140
drivers/staging/comedi/comedi_fops.c:156
comedi_device_cleanup drivers/staging/comedi/comedi_fops.c:187 [inline]
comedi_free_board_dev.part.0+0x16/0x90
drivers/staging/comedi/comedi_fops.c:190
comedi_free_board_dev drivers/staging/comedi/comedi_fops.c:189 [inline]
comedi_release_hardware_device+0x111/0x140
drivers/staging/comedi/comedi_fops.c:2880
comedi_auto_config.cold+0x124/0x1b0
drivers/staging/comedi/drivers.c:1068
usb_probe_interface+0x31d/0x820 drivers/usb/core/driver.c:361
really_probe+0x2da/0xb10 drivers/base/dd.c:509
driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
__device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
__device_attach+0x223/0x3a0 drivers/base/dd.c:844
bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
device_add+0xad2/0x16e0 drivers/base/core.c:2106
usb_set_configuration+0xdf7/0x1740 drivers/usb/core/message.c:2021
generic_probe+0xa2/0xda drivers/usb/core/generic.c:210
usb_probe_device+0xc0/0x150 drivers/usb/core/driver.c:266
really_probe+0x2da/0xb10 drivers/base/dd.c:509
driver_probe_device+0x21d/0x350 drivers/base/dd.c:671
__device_attach_driver+0x1d8/0x290 drivers/base/dd.c:778
bus_for_each_drv+0x163/0x1e0 drivers/base/bus.c:454
__device_attach+0x223/0x3a0 drivers/base/dd.c:844
bus_probe_device+0x1f1/0x2a0 drivers/base/bus.c:514
device_add+0xad2/0x16e0 drivers/base/core.c:2106
usb_new_device.cold+0x537/0xccf drivers/usb/core/hub.c:2534
hub_port_connect drivers/usb/core/hub.c:5089 [inline]
hub_port_connect_change drivers/usb/core/hub.c:5204 [inline]
port_event drivers/usb/core/hub.c:5350 [inline]
hub_event+0x138e/0x3b00 drivers/usb/core/hub.c:5432
process_one_work+0x90f/0x1580 kernel/workqueue.c:2269
worker_thread+0x9b/0xe20 kernel/workqueue.c:2415
kthread+0x313/0x420 kernel/kthread.c:253
ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
Reported-by: syzbot+cf4f2b6c24aff0a3edf6@syzkaller.appspotmail.com
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/comedi/drivers/ni_usb6501.c (diff)
Commit af4b54a2e5ba18259ff9aac445bf546dd60d037e by gregkh
staging: comedi: ni_usb6501: Fix possible double-free of ->usb_rx_buf
`ni6501_alloc_usb_buffers()` is called from `ni6501_auto_attach()` to
allocate RX and TX buffers for USB transfers.  It allocates
`devpriv->usb_rx_buf` followed by `devpriv->usb_tx_buf`.  If the
allocation of `devpriv->usb_tx_buf` fails, it frees
`devpriv->usb_rx_buf`, leaving the pointer set dangling, and returns an
error.  Later, `ni6501_detach()` will be called from the core comedi
module code to clean up.  `ni6501_detach()` also frees both
`devpriv->usb_rx_buf` and `devpriv->usb_tx_buf`, but
`devpriv->usb_rx_buf` may have already beed freed, leading to a
double-free error.  Fix it bu removing the call to
`kfree(devpriv->usb_rx_buf)` from `ni6501_alloc_usb_buffers()`, relying
on `ni6501_detach()` to free the memory.
Signed-off-by: Ian Abbott <abbotti@mev.co.uk> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/comedi/drivers/ni_usb6501.c (diff)
Commit eb9d7a62c38628ab0ba6e59d22d7cb7930e415d1 by mpe
powerpc/mm_iommu: Fix potential deadlock
Currently mm_iommu_do_alloc() is called in 2 cases:
- VFIO_IOMMU_SPAPR_REGISTER_MEMORY ioctl() for normal memory:
this locks &mem_list_mutex and then locks mm::mmap_sem
several times when adjusting locked_vm or pinning pages;
- vfio_pci_nvgpu_regops::mmap() for GPU memory:
this is called with mm::mmap_sem held already and it locks
&mem_list_mutex.
So one can craft a userspace program to do special ioctl and mmap in 2
threads concurrently and cause a deadlock which lockdep warns about
(below).
We did not hit this yet because QEMU constructs the machine in a single
thread.
This moves the overlap check next to where the new entry is added and
reduces the amount of time spent with &mem_list_mutex held.
This moves locked_vm adjustment from under &mem_list_mutex.
This relies on mm_iommu_adjust_locked_vm() doing nothing when
entries==0.
This is one of the lockdep warnings:
====================================================== WARNING: possible
circular locking dependency detected 5.1.0-rc2-le_nv2_aikATfstn1-p1 #363
Not tainted
------------------------------------------------------
qemu-system-ppc/8038 is trying to acquire lock: 000000002ec6c453
(mem_list_mutex){+.+.}, at: mm_iommu_do_alloc+0x70/0x490
but task is already holding lock: 00000000fd7da97f
(&mm->mmap_sem){++++}, at: vm_mmap_pgoff+0xf0/0x160
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (&mm->mmap_sem){++++}:
      lock_acquire+0xf8/0x260
      down_write+0x44/0xa0
      mm_iommu_adjust_locked_vm.part.1+0x4c/0x190
      mm_iommu_do_alloc+0x310/0x490
      tce_iommu_ioctl.part.9+0xb84/0x1150 [vfio_iommu_spapr_tce]
      vfio_fops_unl_ioctl+0x94/0x430 [vfio]
      do_vfs_ioctl+0xe4/0x930
      ksys_ioctl+0xc4/0x110
      sys_ioctl+0x28/0x80
      system_call+0x5c/0x70
-> #0 (mem_list_mutex){+.+.}:
      __lock_acquire+0x1484/0x1900
      lock_acquire+0xf8/0x260
      __mutex_lock+0x88/0xa70
      mm_iommu_do_alloc+0x70/0x490
      vfio_pci_nvgpu_mmap+0xc0/0x130 [vfio_pci]
      vfio_pci_mmap+0x198/0x2a0 [vfio_pci]
      vfio_device_fops_mmap+0x44/0x70 [vfio]
      mmap_region+0x5d4/0x770
      do_mmap+0x42c/0x650
      vm_mmap_pgoff+0x124/0x160
      ksys_mmap_pgoff+0xdc/0x2f0
      sys_mmap+0x40/0x80
      system_call+0x5c/0x70
other info that might help us debug this:
Possible unsafe locking scenario:
       CPU0                    CPU1
      ----                    ----
lock(&mm->mmap_sem);
                              lock(mem_list_mutex);
                              lock(&mm->mmap_sem);
lock(mem_list_mutex);
*** DEADLOCK ***
1 lock held by qemu-system-ppc/8038:
#0: 00000000fd7da97f (&mm->mmap_sem){++++}, at: vm_mmap_pgoff+0xf0/0x160
Fixes: c10c21efa4bc ("powerpc/vfio/iommu/kvm: Do not pin device memory",
2018-12-19) Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
The file was modifiedarch/powerpc/mm/mmu_context_iommu.c (diff)
Commit 7a3a4d763837d3aa654cd1059030950410c04d77 by mpe
powerpc/mm_iommu: Allow pinning large regions
When called with vmas_arg==NULL, get_user_pages_longterm() allocates an
array of nr_pages*8 which can easily get greater that the max order, for
example, registering memory for a 256GB guest does this and fails in
__alloc_pages_nodemask().
This adds a loop over chunks of entries to fit the max order limit.
Fixes: 678e174c4c16 ("powerpc/mm/iommu: allow migration of cma allocated
pages during mm_iommu_do_alloc", 2019-03-05) Signed-off-by: Alexey
Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au>
The file was modifiedarch/powerpc/mm/mmu_context_iommu.c (diff)
Commit b2ecf00631362a83744e5ec249947620db5e240c by gregkh
vt: fix cursor when clearing the screen
The patch a6dbe4427559 ("vt: perform safe console erase in the right
order") introduced a bug. The conditional do_update_region() was
replaced by a call to update_region() that does contain the conditional
already, but with unwanted extra side effects such as restoring the
cursor drawing.
In order to reproduce the bug:
- use framebuffer console with the AMDGPU driver
- type "links" to start the console www browser
- press 'q' and space to exit links
Now the cursor will be permanently visible in the center of the screen.
It will stay there until something overwrites it.
The bug goes away if we change update_region() back to the conditional
do_update_region().
[ nico: reworded changelog ]
Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> Reviewed-by:
Nicolas Pitre <nico@fluxnic.net> Cc: stable@vger.kernel.org Fixes:
a6dbe4427559 ("vt: perform safe console erase in the right order")
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/vt/vt.c (diff)
Commit 3b9a907223d7f6b9d1dadea29436842ae9bcd76d by cminyard
ipmi: fix sleep-in-atomic in free_user at cleanup SRCU
user->release_barrier
free_user() could be called in atomic context.
This patch pushed the free operation off into a workqueue.
Example:
BUG: sleeping function called from invalid context at
kernel/workqueue.c:2856
in_atomic(): 1, irqs_disabled(): 0, pid: 177, name: ksoftirqd/27
CPU: 27 PID: 177 Comm: ksoftirqd/27 Not tainted 4.19.25-3 #1
Hardware name: AIC 1S-HV26-08/MB-DPSB04-06, BIOS IVYBV060 10/21/2015
Call Trace:
dump_stack+0x5c/0x7b
___might_sleep+0xec/0x110
__flush_work+0x48/0x1f0
? try_to_del_timer_sync+0x4d/0x80
_cleanup_srcu_struct+0x104/0x140
free_user+0x18/0x30 [ipmi_msghandler]
ipmi_free_recv_msg+0x3a/0x50 [ipmi_msghandler]
deliver_response+0xbd/0xd0 [ipmi_msghandler]
deliver_local_response+0xe/0x30 [ipmi_msghandler]
handle_one_recv_msg+0x163/0xc80 [ipmi_msghandler]
? dequeue_entity+0xa0/0x960
handle_new_recv_msgs+0x15c/0x1f0 [ipmi_msghandler]
tasklet_action_common.isra.22+0x103/0x120
__do_softirq+0xf8/0x2d7
run_ksoftirqd+0x26/0x50
smpboot_thread_fn+0x11d/0x1e0
kthread+0x103/0x140
? sort_range+0x20/0x20
? kthread_destroy_worker+0x40/0x40
ret_from_fork+0x1f/0x40
Fixes: 77f8269606bf ("ipmi: fix use-after-free of
user->release_barrier.rda")
Reported-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Signed-off-by: Corey Minyard <cminyard@mvista.com> Cc:
stable@vger.kernel.org # 5.0 Cc: Yang Yingliang
<yangyingliang@huawei.com>
The file was modifieddrivers/char/ipmi/ipmi_msghandler.c (diff)
Commit aa52660231410b13d237299e691c43e346e3a73f by acme
perf bpf: Return NULL when RB tree lookup fails in
perf_env__find_bpf_prog_info()
We currently don't return NULL in case we don't find the
bpf_prog_info_node, fixing that.
Signed-off-by: Jiri Olsa <jolsa@kernel.org> Acked-by: Song Liu
<songliubraving@fb.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Fixes:
e4378f0cb90b ("perf bpf: Save bpf_prog_info in a rbtree in perf_env")
Link: http://lkml.kernel.org/r/20190416134151.15282-1-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/env.c (diff)
Commit a93e0b2365e81e5a5b61f25e269b5dc73d242cba by acme
perf tools: Check maps for bpf programs
As reported by Jiri Olsa in:
  "[BUG] perf: intel_pt won't display kernel function"
https://lore.kernel.org/lkml/20190403143738.GB32001@krava
Recent changes to support PERF_RECORD_KSYMBOL and PERF_RECORD_BPF_EVENT
broke --kallsyms option. This is because it broke test
__map__is_kmodule.
This patch fixes this by adding check for bpf program, so that these
maps are not mistaken as kernel modules.
Signed-off-by: Song Liu <songliubraving@fb.com> Reported-by: Jiri Olsa
<jolsa@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc:
Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexei
Starovoitov <ast@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc:
Andrii Nakryiko <andrii.nakryiko@gmail.com> Cc: Daniel Borkmann
<daniel@iogearbox.net> Cc: Martin KaFai Lau <kafai@fb.com> Cc: Namhyung
Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
Yonghong Song <yhs@fb.com> Link:
http://lkml.kernel.org/r/20190416160127.30203-8-jolsa@kernel.org Fixes:
76193a94522f ("perf, bpf: Introduce PERF_RECORD_KSYMBOL") Signed-off-by:
Jiri Olsa <jolsa@kernel.org> Signed-off-by: Arnaldo Carvalho de Melo
<acme@redhat.com>
The file was modifiedtools/perf/util/map.c (diff)
The file was modifiedtools/perf/util/map.h (diff)
Commit adc6257c4a6f23ff97dca8314fcd33828e2d8db5 by acme
perf evlist: Fix side band thread draining
Current perf_evlist__poll_thread() code could finish without draining
the data. Adding the logic that makes sure we won't finish before the
drain.
Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Adrian Hunter
<adrian.hunter@intel.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Alexei Starovoitov
<ast@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc: Daniel Borkmann
<daniel@iogearbox.net> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Song Liu <songliubraving@fb.com>
Fixes: 657ee5531903 ("perf evlist: Introduce side band thread") Link:
http://lkml.kernel.org/r/20190416160127.30203-9-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/evlist.c (diff)
Commit b9abbdfa88024d52c8084d8f46ea4f161606c692 by acme
perf tools: Fix map reference counting
By calling maps__insert() we assume to get 2 references on the map,
which we relese within maps__remove call.
However if there's already same map name, we currently don't bump the
reference and can crash, like:
  Program received signal SIGABRT, Aborted.
0x00007ffff75e60f5 in raise () from /lib64/libc.so.6
  (gdb) bt
#0  0x00007ffff75e60f5 in raise () from /lib64/libc.so.6
#1  0x00007ffff75d0895 in abort () from /lib64/libc.so.6
#2  0x00007ffff75d0769 in __assert_fail_base.cold () from
/lib64/libc.so.6
#3  0x00007ffff75de596 in __assert_fail () from /lib64/libc.so.6
#4  0x00000000004fc006 in refcount_sub_and_test (i=1, r=0x1224e88) at
tools/include/linux/refcount.h:131
#5  refcount_dec_and_test (r=0x1224e88) at
tools/include/linux/refcount.h:148
#6  map__put (map=0x1224df0) at util/map.c:299
#7  0x00000000004fdb95 in __maps__remove (map=0x1224df0, maps=0xb17d80)
at util/map.c:953
#8  maps__remove (maps=0xb17d80, map=0x1224df0) at util/map.c:959
#9  0x00000000004f7d8a in map_groups__remove (map=<optimized out>,
mg=<optimized out>) at util/map_groups.h:65
#10 machine__process_ksymbol_unregister (sample=<optimized out>,
event=0x7ffff7279670, machine=<optimized out>) at util/machine.c:728
#11 machine__process_ksymbol (machine=<optimized out>,
event=0x7ffff7279670, sample=<optimized out>) at util/machine.c:741
#12 0x00000000004fffbb in perf_session__deliver_event
(session=0xb11390, event=0x7ffff7279670, tool=0x7fffffffc7b0,
file_offset=13936) at util/session.c:1362
#13 0x00000000005039bb in do_flush (show_progress=false, oe=0xb17e80)
at util/ordered-events.c:243
#14 __ordered_events__flush (oe=0xb17e80, how=OE_FLUSH__ROUND,
timestamp=<optimized out>) at util/ordered-events.c:322
#15 0x00000000005005e4 in perf_session__process_user_event
(session=session@entry=0xb11390, event=event@entry=0x7ffff72a4af8,
...
Add the map to the list and getting the reference event if we find the
map with same name.
Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Adrian Hunter
<adrian.hunter@intel.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Alexei Starovoitov
<ast@kernel.org> Cc: Andi Kleen <ak@linux.intel.com> Cc: Daniel Borkmann
<daniel@iogearbox.net> Cc: Eric Saint-Etienne
<eric.saint.etienne@oracle.com> Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org> Cc: Song Liu
<songliubraving@fb.com> Fixes: 1e6285699b30 ("perf symbols: Fix slowness
due to -ffunction-section") Link:
http://lkml.kernel.org/r/20190416160127.30203-10-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/map.c (diff)
Commit 2db7b1e0bd49d2b0e7d16949e167b1cfaf5c07cf by acme
perf bpf: Return NULL when RB tree lookup fails in perf_env__find_btf()
We don't return NULL when we don't find the bpf_prog_info_node, fix
that.
Signed-off-by: Jiri Olsa <jolsa@kernel.org> Reported-by: Song Liu
<songliubraving@fb.com> Acked-by: Song Liu <songliubraving@fb.com> Cc:
Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Fixes:
3792cb2ff43b ("perf bpf: Save BTF in a rbtree in perf_env") Link:
http://lkml.kernel.org/r/20190417145539.11669-1-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/env.c (diff)
Commit 74f464e97044da33b25aaed00213914b0edf1f2e by axboe
io_uring: fix CQ overflow condition
This is a leftover from when the rings initially were not free flowing,
and hence a test for tail + 1 == head would indicate full. Since we now
let them wrap instead of mask them with the size, we need to check if
they drift more than the ring size from each other.
This fixes a case where we'd overwrite CQ ring entries, if the user
failed to reap completions. Both cases would ultimately result in lost
completions as the application violated the depth it asked for. The only
difference is that before this fix we'd return invalid entries for the
overflowed completions, instead of properly flagging it in the
cq_ring->overflow variable.
Reported-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit a7b1a4839ff979b4dd4fb6c1ccd31af11de9ca87 by trond.myklebust
SUNRPC: Ignore queue transmission errors on successful transmission
If a request transmission fails due to write space or slot
unavailability errors, but the queued task then gets transmitted before
it has time to process the error in call_transmit_status() or
call_bc_transmit_status(), we need to suppress the transmission error
code to prevent it from leaking out of the RPC layer.
Reported-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond
Myklebust <trond.myklebust@hammerspace.com> Tested-by: Chuck Lever
<chuck.lever@oracle.com>
The file was modifiednet/sunrpc/clnt.c (diff)
Commit 19fad20d15a6494f47f85d869f00b11343ee5c78 by davem
ipv4: set the tcp_min_rtt_wlen range from 0 to one day
There is a UBSAN report as below: UBSAN: Undefined behaviour in
net/ipv4/tcp_input.c:2877:56 signed integer overflow: 2147483647 * 1000
cannot be represented in type 'int' CPU: 3 PID: 0 Comm: swapper/3 Not
tainted 5.1.0-rc4-00058-g582549e #1 Call Trace:
<IRQ>
dump_stack+0x8c/0xba
ubsan_epilogue+0x11/0x60
handle_overflow+0x12d/0x170
? ttwu_do_wakeup+0x21/0x320
__ubsan_handle_mul_overflow+0x12/0x20
tcp_ack_update_rtt+0x76c/0x780
tcp_clean_rtx_queue+0x499/0x14d0
tcp_ack+0x69e/0x1240
? __wake_up_sync_key+0x2c/0x50
? update_group_capacity+0x50/0x680
tcp_rcv_established+0x4e2/0xe10
tcp_v4_do_rcv+0x22b/0x420
tcp_v4_rcv+0xfe8/0x1190
ip_protocol_deliver_rcu+0x36/0x180
ip_local_deliver+0x15b/0x1a0
ip_rcv+0xac/0xd0
__netif_receive_skb_one_core+0x7f/0xb0
__netif_receive_skb+0x33/0xc0
netif_receive_skb_internal+0x84/0x1c0
napi_gro_receive+0x2a0/0x300
receive_buf+0x3d4/0x2350
? detach_buf_split+0x159/0x390
virtnet_poll+0x198/0x840
? reweight_entity+0x243/0x4b0
net_rx_action+0x25c/0x770
__do_softirq+0x19b/0x66d
irq_exit+0x1eb/0x230
do_IRQ+0x7a/0x150
common_interrupt+0xf/0xf
</IRQ>
It can be reproduced by:
echo 2147483647 > /proc/sys/net/ipv4/tcp_min_rtt_wlen
Fixes: f672258391b42 ("tcp: track min RTT using windowed min-filter")
Signed-off-by: ZhangXiaoxu <zhangxiaoxu5@huawei.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/sysctl_net_ipv4.c (diff)
The file was modifiedDocumentation/networking/ip-sysctl.txt (diff)
Commit 7249c8ea227a582c14f63e9e8853eb7369122f10 by jgg
IB/mlx5: Fix scatter to CQE in DCT QP creation
When scatter to CQE is enabled on a DCT QP it corrupts the mailbox
command since it tried to treat it as as QP create mailbox command
instead of a DCT create command.
The corrupted mailbox command causes userspace to malfunction as the
device doesn't create the QP as expected.
A new mlx5 capability is exposed to user-space which ensures that it
will not enable the feature on DCT without this fix in the kernel.
Fixes: 5d6ff1babe78 ("IB/mlx5: Support scatter to CQE for DC transport
type") Signed-off-by: Guy Levi <guyle@mellanox.com> Signed-off-by: Leon
Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com>
The file was modifieddrivers/infiniband/hw/mlx5/main.c (diff)
The file was modifieddrivers/infiniband/hw/mlx5/qp.c (diff)
The file was modifiedinclude/uapi/rdma/mlx5-abi.h (diff)
Commit f87db4dbd52f2f8a170a2b51cb0926221ca7c9e2 by davem
net: stmmac: Use bfsize1 in ndesc_init_rx_desc
gcc warn this:
drivers/net/ethernet/stmicro/stmmac/norm_desc.c: In function
ndesc_init_rx_desc:
drivers/net/ethernet/stmicro/stmmac/norm_desc.c:138:6: warning: variable
'bfsize1' set but not used [-Wunused-but-set-variable]
Like enh_desc_init_rx_desc, we should use bfsize1 in ndesc_init_rx_desc
to calculate 'p->des1'
Fixes: 583e63614149 ("net: stmmac: use correct DMA buffer size in the RX
descriptor") Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Reviewed-by: Aaro Koskinen <aaro.koskinen@nokia.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/norm_desc.c (diff)
Commit d003d772e64df08af04ee63609d47169ee82ae0e by davem
nfp: abm: fix spelling mistake "offseting" -> "offsetting"
There are a couple of spelling mistakes in NL_SET_ERR_MSG_MOD error
messages. Fix these.
Signed-off-by: Colin Ian King <colin.king@canonical.com> Acked-by: Jakub
Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Mukesh Ojha
<mojha@codeaurora.org> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/netronome/nfp/abm/cls.c (diff)
Commit 27b141fc234a3670d21bd742c35d7205d03cbb3a by davem
s390: ctcm: fix ctcm_new_device error return code
clang points out that the return code from this function is undefined
for one of the error paths:
../drivers/s390/net/ctcm_main.c:1595:7: warning: variable 'result' is
used uninitialized whenever 'if' condition is true
     [-Wsometimes-uninitialized]
               if (priv->channel[direction] == NULL) {
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/s390/net/ctcm_main.c:1638:9: note: uninitialized use occurs
here
       return result;
              ^~~~~~
../drivers/s390/net/ctcm_main.c:1595:3: note: remove the 'if' if its
condition is always false
               if (priv->channel[direction] == NULL) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../drivers/s390/net/ctcm_main.c:1539:12: note: initialize the variable
'result' to silence this warning
       int result;
                 ^
Make it return -ENODEV here, as in the related failure cases. gcc has a
known bug in underreporting some of these warnings when it has already
eliminated the assignment of the return code based on some earlier
optimization step.
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com> Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Signed-off-by: Julian Wiedmann
<jwi@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/s390/net/ctcm_main.c (diff)
Commit ec3937107ab43f3e8b2bc9dad95710043c462ff7 by bp
x86/mm/KASLR: Fix the size of the direct mapping section
kernel_randomize_memory() uses __PHYSICAL_MASK_SHIFT to calculate the
maximum amount of system RAM supported. The size of the direct mapping
section is obtained from the smaller one of the below two values:
  (actual system RAM size + padding size) vs (max system RAM size
supported)
This calculation is wrong since commit
  b83ce5ee9147 ("x86/mm/64: Make __PHYSICAL_MASK_SHIFT always 52").
In it, __PHYSICAL_MASK_SHIFT was changed to be 52, regardless of whether
the kernel is using 4-level or 5-level page tables. Thus, it will always
use 4 PB as the maximum amount of system RAM, even in 4-level paging
mode where it should actually be 64 TB.
Thus, the size of the direct mapping section will always be the sum of
the actual system RAM size plus the padding size.
Even when the amount of system RAM is 64 TB, the following layout will
still be used. Obviously KALSR will be weakened significantly.
   |____|_______actual RAM_______|_padding_|______the rest_______|
  0            64TB                                            ~120TB
Instead, it should be like this:
   |____|_______actual RAM_______|_________the rest______________|
  0            64TB                                            ~120TB
The size of padding region is controlled by
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING, which is 10 TB by default.
The above issue only exists when
CONFIG_RANDOMIZE_MEMORY_PHYSICAL_PADDING is set to a non-zero value,
which is the case when CONFIG_MEMORY_HOTPLUG is enabled. Otherwise,
using __PHYSICAL_MASK_SHIFT doesn't affect KASLR.
Fix it by replacing __PHYSICAL_MASK_SHIFT with MAX_PHYSMEM_BITS.
[ bp: Massage commit message. ]
Fixes: b83ce5ee9147 ("x86/mm/64: Make __PHYSICAL_MASK_SHIFT always 52")
Signed-off-by: Baoquan He <bhe@redhat.com> Signed-off-by: Borislav
Petkov <bp@suse.de> Reviewed-by: Thomas Garnier <thgarnie@google.com>
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Cc: "H.
Peter Anvin" <hpa@zytor.com> Cc: Andy Lutomirski <luto@kernel.org> Cc:
Dave Hansen <dave.hansen@linux.intel.com> Cc: Ingo Molnar
<mingo@kernel.org> Cc: Kees Cook <keescook@chromium.org> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: frank.ramsay@hpe.com Cc: herbert@gondor.apana.org.au Cc:
kirill@shutemov.name Cc: mike.travis@hpe.com Cc: thgarnie@google.com Cc:
x86-ml <x86@kernel.org> Cc: yamada.masahiro@socionext.com Link:
https://lkml.kernel.org/r/20190417083536.GE7065@MiWiFi-R3L-srv
The file was modifiedarch/x86/mm/kaslr.c (diff)
Commit 1c6bca6d75bca2cc47b5eafb9f7f16e368ffbeca by luciano.coelho
iwlwifi: don't panic in error path on non-msix systems
The driver uses msix causes-register to handle both msix and non msix
interrupts when performing sync nmi.  On devices that do not support
msix this register is unmapped and accessing it causes a kernel panic.
Solve this by differentiating the two cases and accessing the proper
causes-register in each case.
Reported-by: Michal Hocko <mhocko@kernel.org> Signed-off-by: Shahar S
Matityahu <shahar.s.matityahu@intel.com> Signed-off-by: Luca Coelho
<luciano.coelho@intel.com>
The file was modifieddrivers/net/wireless/intel/iwlwifi/pcie/trans.c (diff)
Commit 72d3c7bbc9b581e5f2a455e6f399c75626653945 by luciano.coelho
iwlwifi: mvm: don't attempt debug collection in rfkill
If we fail to initialize because rfkill is enabled, then trying to do
debug collection currently just fails. Prevent that in the high-level
code, although we should probably also fix the lower level code to do
things more carefully.
It's not 100% clear that it fixes this commit, as the original dump code
at the time might've been more careful. In any case, we don't really
need to dump anything in this expected scenario.
Signed-off-by: Johannes Berg <johannes.berg@intel.com> Fixes:
7125648074e8 ("iwlwifi: add fw dump upon RT ucode start failure")
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
The file was modifieddrivers/net/wireless/intel/iwlwifi/mvm/fw.c (diff)
The file was modifieddrivers/net/wireless/intel/iwlwifi/mvm/ops.c (diff)
Commit b35f63972c5c67fc0f908286f7fc624137788876 by luciano.coelho
iwlwifi: dbg_ini: check debug TLV type explicitly
In ini debug TLVs bit 24 is set. The driver relies on it in the memory
allocation for the debug configuration. This implementation is
problematic in case of a new debug TLV that is not supported yet is
added and uses bit 24. In such a scenario the driver allocate space
without using it which causes errors in the apply point enabling flow.
Solve it by explicitly checking if a given TLV is part of the list of
the supported ini debug TLVs.
Signed-off-by: Shahar S Matityahu <shahar.s.matityahu@intel.com> Fixes:
f14cda6f3b31 ("iwlwifi: trans: parse and store debug ini TLVs")
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
The file was modifieddrivers/net/wireless/intel/iwlwifi/fw/file.h (diff)
The file was modifieddrivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c (diff)
Commit 154d4899e4111ae24e68d6ba955f46856cb046bc by luciano.coelho
iwlwifi: mvm: properly check debugfs dentry before using it
debugfs can now report an error code if something went wrong instead of
just NULL.  So if the return value is to be used as a "real" dentry, it
needs to be checked if it is an error before dereferencing it.
This is now happening because of ff9fb72bc077 ("debugfs: return error
values, not NULL").  If multiple iwlwifi devices are in the system, this
can cause problems when the driver attempts to create the main debugfs
directory again.  Later on in the code we fail horribly by trying to
dereference a pointer that is an error value.
Reported-by: Laura Abbott <labbott@redhat.com> Reported-by: Gabriel
Ramirez <gabriello.ramirez@gmail.com> Cc: Johannes Berg
<johannes.berg@intel.com> Cc: Emmanuel Grumbach
<emmanuel.grumbach@intel.com> Cc: Luca Coelho <luciano.coelho@intel.com>
Cc: Intel Linux Wireless <linuxwifi@intel.com> Cc: Kalle Valo
<kvalo@codeaurora.org> Cc: stable <stable@vger.kernel.org> # 5.0
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
The file was modifieddrivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c (diff)
Commit c537e07b000bc00c9a5ac9d119ed2c8456a99b6e by luciano.coelho
iwlwifi: cfg: use family 22560 based_params for AX210 family
Specifically, max_tfd_queue_size should be 0x10000 like in 22560 family
and not 0x100 like in 22000 family.
Signed-off-by: Shaul Triebitz <shaul.triebitz@intel.com> Signed-off-by:
Luca Coelho <luciano.coelho@intel.com>
The file was modifieddrivers/net/wireless/intel/iwlwifi/cfg/22000.c (diff)
Commit 3fe3331bb285700ab2253dbb07f8e478fcea2f1b by mingo
perf/x86/amd: Add event map for AMD Family 17h
Family 17h differs from prior families by:
- Does not support an L2 cache miss event
- It has re-enumerated PMC counters for:
  - L2 cache references
  - front & back end stalled cycles
So we add a new amd_f17h_perfmon_event_map[] so that the generic perf
event names will resolve to the correct h/w events on family 17h and
above processors.
Reference sections 2.1.13.3.3 (stalls) and 2.1.13.3.6 (L2):

https://www.amd.com/system/files/TechDocs/54945_PPR_Family_17h_Models_00h-0Fh.pdf
Signed-off-by: Kim Phillips <kim.phillips@amd.com> Cc:
<stable@vger.kernel.org> # v4.9+ Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo
<acme@kernel.org> Cc: Borislav Petkov <bp@alien8.de> Cc: H. Peter Anvin
<hpa@zytor.com> Cc: Janakarajan Natarajan
<Janakarajan.Natarajan@amd.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc:
Linus Torvalds <torvalds@linux-foundation.org> Cc: Martin Liška
<mliska@suse.cz> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Pu Wen <puwen@hygon.cn> Cc: Suravee
Suthikulpanit <Suravee.Suthikulpanit@amd.com> Cc: Thomas Gleixner
<tglx@linutronix.de> Cc: linux-kernel@vger.kernel.org Fixes:
e40ed1542dd7 ("perf/x86: Add perf support for AMD family-17h
processors")
[ Improved the formatting a bit. ] Signed-off-by: Ingo Molnar
<mingo@kernel.org>
The file was modifiedarch/x86/events/amd/core.c (diff)
Commit 3f2552f7e9c5abef2775c53f7af66532f8bf65bc by tglx
timers/sched_clock: Prevent generic sched_clock wrap caused by
tick_freeze()
tick_freeze() introduced by suspend-to-idle in commit 124cf9117c5f ("PM
/ sleep: Make it possible to quiesce timers during suspend-to-idle")
uses timekeeping_suspend() instead of syscore_suspend() during
suspend-to-idle. As a consequence generic sched_clock will keep going
because sched_clock_suspend() and sched_clock_resume() are not invoked
during suspend-to-idle which can result in a generic sched_clock wrap.
On a ARM system with suspend-to-idle enabled, sched_clock is registered
as "56 bits at 13MHz, resolution 76ns, wraps every 4398046511101ns",
which means the real wrapping duration is 8796093022202ns.
[  134.551779] suspend-to-idle suspend (timekeeping_suspend())
[ 1204.912239] suspend-to-idle resume (timekeeping_resume())
......
[ 1206.912239] suspend-to-idle suspend (timekeeping_suspend())
[ 5880.502807] suspend-to-idle resume (timekeeping_resume())
......
[ 6000.403724] suspend-to-idle suspend (timekeeping_suspend())
[ 8035.753167] suspend-to-idle resume  (timekeeping_resume())
......
[ 8795.786684] (2)[321:charger_thread]......
[ 8795.788387] (2)[321:charger_thread]......
[    0.057226] (0)[0:swapper/0]......
[    0.061447] (2)[0:swapper/2]......
sched_clock was not stopped during suspend-to-idle, and sched_clock_poll
hrtimer was not expired because timekeeping_suspend() was invoked during
suspend-to-idle. It makes sched_clock wrap at kernel time 8796s.
To prevent this, invoke sched_clock_suspend() and sched_clock_resume()
in tick_freeze() together with timekeeping_suspend() and
timekeeping_resume().
Fixes: 124cf9117c5f (PM / sleep: Make it possible to quiesce timers
during suspend-to-idle) Signed-off-by: Chang-An Chen
<chang-an.chen@mediatek.com> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc:
Matthias Brugger <matthias.bgg@gmail.com> Cc: John Stultz
<john.stultz@linaro.org> Cc: Kees Cook <keescook@chromium.org> Cc: Corey
Minyard <cminyard@mvista.com> Cc: <linux-mediatek@lists.infradead.org>
Cc: <linux-arm-kernel@lists.infradead.org> Cc: Stanley Chu
<stanley.chu@mediatek.com> Cc: <kuohong.wang@mediatek.com> Cc:
<freddy.hsin@mediatek.com> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/1553828349-8914-1-git-send-email-chang-an.chen@mediatek.com
The file was modifiedkernel/time/timekeeping.h (diff)
The file was modifiedkernel/time/tick-common.c (diff)
The file was modifiedkernel/time/sched_clock.c (diff)
Commit 44427c0fbc09b448b22410978a4ef6ee37599d25 by herbert
crypto: xts - Fix atomic sleep when walking skcipher
When we perform a walk in the completion function, we need to ensure
that it is atomic.
Reported-by: syzbot+6f72c20560060c98b566@syzkaller.appspotmail.com
Fixes: 78105c7e769b ("crypto: xts - Drop use of auxiliary buffer") Cc:
<stable@vger.kernel.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Acked-by: Ondrej Mosnacek
<omosnace@redhat.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au>
The file was modifiedcrypto/xts.c (diff)
Commit b257b48cd5830c5b1d0c347eb281f9c28056f881 by herbert
crypto: lrw - Fix atomic sleep when walking skcipher
When we perform a walk in the completion function, we need to ensure
that it is atomic.
Fixes: ac3c8f36c31d ("crypto: lrw - Do not use auxiliary buffer") Cc:
<stable@vger.kernel.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Acked-by: Ondrej Mosnacek
<omosnace@redhat.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au>
The file was modifiedcrypto/lrw.c (diff)
Commit 71adf60f0a925c0e0c7dc2d0311fe40b825be737 by maxime.ripard
drm/sun4i: Add missing drm_atomic_helper_shutdown at driver unbind
A call to drm_atomic_helper_shutdown is required to properly release the
internal references taken by the core and avoid warnings about leaking
objects. Add it since it was missing.
Fixes: 9026e0d122ac ("drm: Add Allwinner A10 Display Engine support")
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/20190418132727.5128-2-paul.kocialkowski@bootlin.com
The file was modifieddrivers/gpu/drm/sun4i/sun4i_drv.c (diff)
Commit 02b92adbe33e6dbd15dc6e32540b22f47c4ff0a2 by maxime.ripard
drm/sun4i: Set device driver data at bind time for use in unbind
Our sun4i_drv_unbind gets the drm device using dev_get_drvdata. However,
that driver data is never set in sun4i_drv_bind.
Set it there to avoid getting a NULL pointer at unbind time.
Fixes: 9026e0d122ac ("drm: Add Allwinner A10 Display Engine support")
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/20190418132727.5128-3-paul.kocialkowski@bootlin.com
The file was modifieddrivers/gpu/drm/sun4i/sun4i_drv.c (diff)
Commit f5a9ed867c83875546c9aadd4ed8e785e9adcc3c by maxime.ripard
drm/sun4i: Fix component unbinding and component master deletion
For our component-backed driver to be properly removed, we need to
delete the component master in sun4i_drv_remove and make sure to call
component_unbind_all in the master's unbind so that all components are
unbound when the master is.
Fixes: 9026e0d122ac ("drm: Add Allwinner A10 Display Engine support")
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/20190418132727.5128-4-paul.kocialkowski@bootlin.com
The file was modifieddrivers/gpu/drm/sun4i/sun4i_drv.c (diff)
Commit 738a7832d21e3d911fcddab98ce260b79010b461 by torvalds
signal: use fdget() since we don't allow O_PATH
As stated in the original commit for pidfd_send_signal() we don't allow
to signal processes through O_PATH file descriptors since it is
semantically equivalent to a write on the pidfd.
We already correctly error out right now and return EBADF if an O_PATH
fd is passed.  This is because we use file->f_op to detect whether a
pidfd is passed and O_PATH fds have their file->f_op set to empty_fops
in do_dentry_open() and thus fail the test.
Thus, there is no regression.  It's just semantically correct to use
fdget() and return an error right from there instead of taking a
reference and returning an error later.
Signed-off-by: Christian Brauner <christian@brauner.io> Acked-by: Oleg
Nesterov <oleg@redhat.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: "Eric
W. Biederman" <ebiederm@xmission.com> Cc: Kees Cook
<keescook@chromium.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc:
Jann Horn <jann@thejh.net> Cc: David Howells <dhowells@redhat.com> Cc:
"Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com> Cc: Andy
Lutomirsky <luto@kernel.org> Cc: Andrew Morton
<akpm@linux-foundation.org> Cc: Oleg Nesterov <oleg@redhat.com> Cc:
Aleksa Sarai <cyphar@cyphar.com> Cc: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedkernel/signal.c (diff)
Commit c09d65d9eab69985c75f98ed64541229f6fa9aa6 by pbonzini
KVM: x86: Consider LAPIC TSC-Deadline timer expired if deadline too
short
If guest sets MSR_IA32_TSCDEADLINE to value such that in host
time-domain it's shorter than lapic_timer_advance_ns, we can reach a
case that we call hrtimer_start() with expiration time set at the past.
Because lapic_timer.timer is init with HRTIMER_MODE_ABS_PINNED, it is
not allowed to run in softirq and therefore will never expire.
To avoid such a scenario, verify that deadline expiration time is set on
host time-domain further than (now + lapic_timer_advance_ns).
A future patch can also consider adding a min_timer_deadline_ns module
parameter, similar to min_timer_period_us to avoid races that amount of
ns it takes to run logic could still call hrtimer_start() with
expiration timer set at the past.
Reviewed-by: Joao Martins <joao.m.martins@oracle.com> Signed-off-by:
Liran Alon <liran.alon@oracle.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/lapic.c (diff)
Commit da66761c2d93a46270d69001abb5692717495a68 by pbonzini
x86: kvm: hyper-v: deal with buggy TLB flush requests from WS2012
It was reported that with some special Multi Processor Group
configuration, e.g:
bcdedit.exe /set groupsize 1
bcdedit.exe /set maxgroup on
bcdedit.exe /set groupaware on for a 16-vCPU guest WS2012 shows BSOD on
boot when PV TLB flush mechanism is in use.
Tracing kvm_hv_flush_tlb immediately reveals the issue:
kvm_hv_flush_tlb: processor_mask 0x0 address_space 0x0 flags 0x2
The only flag set in this request is
HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES, however, processor_mask is 0x0 and
no HV_FLUSH_ALL_PROCESSORS is specified. We don't flush anything and
apparently it's not what Windows expects.
TLFS doesn't say anything about such requests and newer Windows versions
seem to be unaffected. This all feels like a WS2012 bug, which is,
however, easy to workaround in KVM: let's flush everything when we see
an empty flush request, over-flushing doesn't hurt.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/hyperv.c (diff)
Commit 57bf67e73ce9bcce2258890f5abf2adf5f619f1a by pbonzini
KVM: lapic: Disable timer advancement if adaptive tuning goes haywire
To minimize the latency of timer interrupts as observed by the guest,
KVM adjusts the values it programs into the host timers to account for
the host's overhead of programming and handling the timer event.  Now
that the timer advancement is automatically tuned during runtime, it's
effectively unbounded by default, e.g. if KVM is running as L1 the
advancement can measure in hundreds of milliseconds.
Disable timer advancement if adaptive tuning yields an advancement of
more than 5000ns, as large advancements can break reasonable assumptions
of the guest, e.g. that a timer configured to fire after 1ms won't
arrive on the next instruction.  Although KVM busy waits to mitigate the
case of a timer event arriving too early, complications can arise when
shifting the interrupt too far, e.g. kvm-unit-test's vmx.interrupt test
will fail when its "host" exits on interrupts as KVM may inject the INTR
before the guest executes STI+HLT.   Arguably the unit test is "broken"
in the sense that delaying a timer interrupt by 1ms doesn't technically
guarantee the interrupt will arrive after STI+HLT, but it's a reasonable
assumption that KVM should support.
Furthermore, an unbounded advancement also effectively unbounds the time
spent busy waiting, e.g. if the guest programs a timer with a very large
delay.
5000ns is a somewhat arbitrary threshold.  When running on bare metal,
which is the intended use case, timer advancement is expected to be in
the general vicinity of 1000ns.  5000ns is high enough that false
positives are unlikely, while not being so high as to negatively affect
the host's performance/stability.
Note, a future patch will enable userspace to disable KVM's adaptive
tuning, which will allow priveleged userspace will to specifying an
advancement value in excess of this arbitrary threshold in order to
satisfy an abnormal use case.
Cc: Liran Alon <liran.alon@oracle.com> Cc: Wanpeng Li
<wanpengli@tencent.com> Cc: stable@vger.kernel.org Fixes: 3b8a5df6c4dc6
("KVM: LAPIC: Tune lapic_timer_advance_ns automatically") Signed-off-by:
Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/lapic.c (diff)
Commit 39497d7660d9866a47a2dc9055672358da57ad3d by pbonzini
KVM: lapic: Track lapic timer advance per vCPU
Automatically adjusting the globally-shared timer advancement could
corrupt the timer, e.g. if multiple vCPUs are concurrently adjusting the
advancement value.  That could be partially fixed by using a local
variable for the arithmetic, but it would still be susceptible to a race
when setting timer_advance_adjust_done.
And because virtual_tsc_khz and tsc_scaling_ratio are per-vCPU, the
correct calibration for a given vCPU may not apply to all vCPUs.
Furthermore, lapic_timer_advance_ns is marked __read_mostly, which is
effectively violated when finding a stable advancement takes an extended
amount of timer.
Opportunistically change the definition of lapic_timer_advance_ns to a
u32 so that it matches the style of struct kvm_timer.  Explicitly pass
the param to kvm_create_lapic() so that it doesn't have to be exposed to
lapic.c, thus reducing the probability of unintentionally using the
global value instead of the per-vCPU value.
Cc: Liran Alon <liran.alon@oracle.com> Cc: Wanpeng Li
<wanpengli@tencent.com> Reviewed-by: Liran Alon <liran.alon@oracle.com>
Cc: stable@vger.kernel.org Fixes: 3b8a5df6c4dc6 ("KVM: LAPIC: Tune
lapic_timer_advance_ns automatically") Signed-off-by: Sean
Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com>
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/lapic.c (diff)
The file was modifiedarch/x86/kvm/x86.h (diff)
The file was modifiedarch/x86/kvm/lapic.h (diff)
Commit c3941d9e0ccd48920e4811f133235b3597e5310b by pbonzini
KVM: lapic: Allow user to disable adaptive tuning of timer advancement
The introduction of adaptive tuning of lapic timer advancement did not
allow for the scenario where userspace would want to disable adaptive
tuning but still employ timer advancement, e.g. for testing purposes or
to handle a use case where adaptive tuning is unable to settle on a
suitable time.  This is epecially pertinent now that KVM places a hard
threshold on the maximum advancment time.
Rework the timer semantics to accept signed values, with a value of '-1'
being interpreted as "use adaptive tuning with KVM's internal default",
and any other value being used as an explicit advancement time, e.g. a
time of '0' effectively disables advancement.
Note, this does not completely restore the original behavior of
lapic_timer_advance_ns.  Prior to tracking the advancement per vCPU,
which is necessary to support autotuning, userspace could adjust
lapic_timer_advance_ns for *running* vCPU.  With per-vCPU tracking, the
module params are snapshotted at vCPU creation, i.e. applying a new
advancement effectively requires restarting a VM.
Dynamically updating a running vCPU is possible, e.g. a helper could be
added to retrieve the desired delay, choosing between the global module
param and the per-VCPU value depending on whether or not auto-tuning is
(globally) enabled, but introduces a great deal of complexity.  The
wrapper itself is not complex, but understanding and documenting the
effects of dynamically toggling auto-tuning and/or adjusting the timer
advancement is nigh impossible since the behavior would be dependent on
KVM's implementation as well as compiler optimizations.  In other words,
providing stable behavior would require extremely careful consideration
now and in the future.
Given that the expected use of a manually-tuned timer advancement is to
"tune once, run many", use the vastly simpler approach of recognizing
changes to the module params only when creating a new vCPU.
Cc: Liran Alon <liran.alon@oracle.com> Cc: Wanpeng Li
<wanpengli@tencent.com> Reviewed-by: Liran Alon <liran.alon@oracle.com>
Cc: stable@vger.kernel.org Fixes: 3b8a5df6c4dc6 ("KVM: LAPIC: Tune
lapic_timer_advance_ns automatically") Signed-off-by: Sean
Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/x86.c (diff)
The file was modifiedarch/x86/kvm/lapic.h (diff)
The file was modifiedarch/x86/kvm/lapic.c (diff)
Commit b6aa57c69cb26ea0160c51f7cf45f1af23542686 by pbonzini
KVM: lapic: Convert guest TSC to host time domain if necessary
To minimize the latency of timer interrupts as observed by the guest,
KVM adjusts the values it programs into the host timers to account for
the host's overhead of programming and handling the timer event.  In the
event that the adjustments are too aggressive, i.e. the timer fires
earlier than the guest expects, KVM busy waits immediately prior to
entering the guest.
Currently, KVM manually converts the delay from nanoseconds to clock
cycles.  But, the conversion is done in the guest's time domain, while
the delay occurs in the host's time domain.  This is perfectly ok when
the guest and host are using the same TSC ratio, but if the guest is
using a different ratio then the delay may not be accurate and could
wait too little or too long.
When the guest is not using the host's ratio, convert the delay from
guest clock cycles to host nanoseconds and use ndelay() instead of
__delay() to provide more accurate timing.  Because converting to
nanoseconds is relatively expensive, e.g. requires division and more
multiplication ops, continue using __delay() directly when guest and
host TSCs are running at the same ratio.
Cc: Liran Alon <liran.alon@oracle.com> Cc: Wanpeng Li
<wanpengli@tencent.com> Cc: stable@vger.kernel.org Fixes: 3b8a5df6c4dc6
("KVM: LAPIC: Tune lapic_timer_advance_ns automatically") Signed-off-by:
Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/lapic.c (diff)
Commit ff8acf929014b7f87315588e0daf8597c8aa9d1c by catalin.marinas
arm64: futex: Restore oldval initialization to work around buggy
compilers
Commit 045afc24124d ("arm64: futex: Fix FUTEX_WAKE_OP atomic ops with
non-zero result value") removed oldval's zero initialization in
arch_futex_atomic_op_inuser because it is not necessary. Unfortunately,
Android's arm64 GCC 4.9.4 [1] does not agree:
../kernel/futex.c: In function 'do_futex':
../kernel/futex.c:1658:17: warning: 'oldval' may be used uninitialized
in this function [-Wmaybe-uninitialized]
  return oldval == cmparg;
                ^ In file included from ../kernel/futex.c:73:0:
../arch/arm64/include/asm/futex.h:53:6: note: 'oldval' was declared here
int oldval, ret, tmp;
     ^
GCC fails to follow that when ret is non-zero, futex_atomic_op_inuser
returns right away, avoiding the uninitialized use that it claims.
Restoring the zero initialization works around this issue.
[1]:
https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/
Cc: stable@vger.kernel.org Fixes: 045afc24124d ("arm64: futex: Fix
FUTEX_WAKE_OP atomic ops with non-zero result value") Reviewed-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Nathan
Chancellor <natechancellor@gmail.com> Signed-off-by: Catalin Marinas
<catalin.marinas@arm.com>
The file was modifiedarch/arm64/include/asm/futex.h (diff)
Commit f476b3f809fa02f47af6333ed63715058c3fc348 by davem
mlxsw: spectrum: Put MC TCs into DWRR mode
Both Spectrum-1 and Spectrum-2 chips are currently configured such that
pairs of TC n (which is used for UC traffic) and TC n+8 (which is used
for MC traffic) are feeding into the same subgroup. Strict
prioritization is configured between the two TCs, and by enabling
MC-aware mode on the switch, the lower-numbered (UC) TCs are favored
over the higher-numbered (MC) TCs.
On Spectrum-2 however, there is an issue in configuration of the
MC-aware mode. As a result, MC traffic is prioritized over UC traffic.
To work around the issue, configure the MC TCs with DWRR mode (while
keeping the UC TCs in strict mode).
With this patch, the multicast-unicast arbitration results in the same
behavior on both Spectrum-1 and Spectrum-2 chips.
Fixes: 7b8195306694 ("mlxsw: spectrum: Configure MC-aware mode on mlxsw
ports") Signed-off-by: Petr Machata <petrm@mellanox.com> Signed-off-by:
Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/spectrum.c (diff)
Commit 1ab3030193d25878b3b1409060e1e0a879800c95 by davem
mlxsw: pci: Reincrease PCI reset timeout
During driver initialization the driver sends a reset to the device and
waits for the firmware to signal that it is ready to continue.
Commit d2f372ba0914 ("mlxsw: pci: Increase PCI SW reset timeout")
increased the timeout to 13 seconds due to longer PHY calibration in
Spectrum-2 compared to Spectrum-1.
Recently it became apparent that this timeout is too short and therefore
this patch increases it again to a safer limit that will be reduced in
the future.
Fixes: c3ab435466d5 ("mlxsw: spectrum: Extend to support Spectrum-2
ASIC") Fixes: d2f372ba0914 ("mlxsw: pci: Increase PCI SW reset timeout")
Signed-off-by: Ido Schimmel <idosch@mellanox.com> Acked-by: Jiri Pirko
<jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/pci_hw.h (diff)
Commit 151f0dddbbfe4c35c9c5b64873115aafd436af9d by davem
mlxsw: spectrum: Fix autoneg status in ethtool
If link is down and autoneg is set to on/off, the status in ethtool does
not change.
The reason is when the link is down the function returns with zero
before changing autoneg value.
Move the checking of link state (up/down) to be performed after setting
autoneg value, in order to be sure that autoneg will change in any case.
Fixes: 56ade8fe3fe1 ("mlxsw: spectrum: Add initial support for Spectrum
ASIC") Signed-off-by: Amit Cohen <amitc@mellanox.com> Signed-off-by: Ido
Schimmel <idosch@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlxsw/spectrum.c (diff)
Commit d5f6db353829fe3867bbf9cd73fd8d631e2346f1 by davem
net: ipv6: addrlabel: fix spelling mistake "requewst" -> "request"
There is a spelling mistake in a NL_SET_ERR_MSG_MOD error message, fix
it.
Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by:
Mukesh Ojha <mojha@codeaurora.org> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv6/addrlabel.c (diff)
Commit a7cf2cc3cd3622eae9d5619cdde56b4462398c7f by davem
firestream: fix spelling mistake "tramsitted" -> "transmitted"
There is a spelling mistake in a debug message. Fix it.
Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/atm/firestream.c (diff)
Commit e0c1d14a1a3211dccf0540a6703ffbd5d2a75bdb by davem
stmmac: pci: Adjust IOT2000 matching
Since there are more IOT2040 variants with identical hardware but
different asset tags, the asset tag matching should be adjusted to
support them.
For the board name "SIMATIC IOT2000", currently there are 2 types of
hardware, IOT2020 and IOT2040. The IOT2020 is identified by its unique
asset tag. Match on it first. If we then match on the board name only,
we will catch all IOT2040 variants. In the future there will be no other
devices with the "SIMATIC IOT2000" DMI board name but different
hardware.
Signed-off-by: Su Bao Cheng <baocheng.su@siemens.com> Reviewed-by: Jan
Kiszka <jan.kiszka@siemens.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c (diff)
Commit 5a7efdacb9dda1c35fb414d57b3e16d520e2c0db by sboyd
clkdev: Hold clocks_mutex while iterating clocks list
We recently introduced a change to support devm clk lookups. That change
introduced a code-path that used clk_find() without holding the
'clocks_mutex'. Unfortunately, clk_find() iterates over the 'clocks'
list and so we need to prevent the list from being modified at the same
time. Do this by holding the mutex and checking to make sure it's held
while iterating the list.
Note, we don't really care if the lookup is freed after we find it with
clk_find() because we're just doing a pointer comparison, but if we did
care we would need to keep holding the mutex while we dereference the
clk_lookup pointer.
Fixes: 3eee6c7d119c ("clkdev: add managed clkdev lookup registration")
Cc: Miquel Raynal <miquel.raynal@bootlin.com> Cc: Jerome Brunet
<jbrunet@baylibre.com> Cc: Russell King <linux@armlinux.org.uk> Cc:
Michael Turquette <mturquette@baylibre.com> Cc: Jeffrey Hugo
<jhugo@codeaurora.org> Cc: Chen-Yu Tsai <wens@csie.org> Cc: Matti
Vaittinen <matti.vaittinen@fi.rohmeurope.com> Acked-by: Matti Vaittinen
<matti.vaittinen@fi.rohmeurope.com> Tested-by: Jeffrey Hugo
<jhugo@codeaurora.org> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
The file was modifieddrivers/clk/clkdev.c (diff)
Commit 9188d5ca454fd665145904267e726e9e8d122f5c by davem
net/tls: fix refcount adjustment in fallback
Unlike atomic_add(), refcount_add() does not deal well with a negative
argument.  TLS fallback code reallocates the skb and is very likely to
shrink the truesize, leading to:
[  189.513254] WARNING: CPU: 5 PID: 0 at lib/refcount.c:81
refcount_add_not_zero_checked+0x15c/0x180
Call Trace:
refcount_add_checked+0x6/0x40
tls_enc_skb+0xb93/0x13e0 [tls]
Once wmem_allocated count saturates the application can no longer send
data on the socket.  This is similar to Eric's fixes for GSO, TCP:
commit 7ec318feeed1 ("tcp: gso: avoid refcount_t warning from
tcp_gso_segment()") and UDP: commit 575b65bc5bff ("udp: avoid refcount_t
saturation in __udp_gso_segment()").
Unlike the GSO case, for TLS fallback it's likely that the skb has
shrunk, so the "likely" annotation is the other way around (likely
branch being "sub").
Fixes: e8f69799810c ("net/tls: Add generic NIC offload infrastructure")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: John Hurley <john.hurley@netronome.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/tls/tls_device_fallback.c (diff)
Commit 0228034d8e5915b98c33db35a98f5e909e848ae9 by martin.petersen
Revert "scsi: fcoe: clear FC_RP_STARTED flags when receiving a LOGO"
This patch clears FC_RP_STARTED flag during logoff, because of this
re-login(flogi) didn't happen to the switch.
This reverts commit 1550ec458e0cf1a40a170ab1f4c46e3f52860f65.
Fixes: 1550ec458e0c ("scsi: fcoe: clear FC_RP_STARTED flags when
receiving a LOGO") Cc: <stable@vger.kernel.org> # v4.18+ Signed-off-by:
Saurav Kashyap <skashyap@marvell.com> Reviewed-by: Hannes Reinecke
<hare@#suse.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com>
The file was modifieddrivers/scsi/libfc/fc_rport.c (diff)
Commit 144ec97493af34efdb77c5aba146e9c7de8d0a06 by martin.petersen
scsi: aic7xxx: fix EISA support
Instead of relying on the now removed NULL argument to
pci_alloc_consistent, switch to the generic DMA API, and store the
struct device so that we can pass it.
Fixes: 4167b2ad5182 ("PCI: Remove NULL device handling from PCI DMA
API") Reported-by: Matthew Whitehead <tedheadster@gmail.com>
Signed-off-by: Christoph Hellwig <hch@lst.de> Tested-by: Matthew
Whitehead <tedheadster@gmail.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com>
The file was modifieddrivers/scsi/aic7xxx/aic7xxx_osm_pci.c (diff)
The file was modifieddrivers/scsi/aic7xxx/aic7xxx_osm.c (diff)
The file was modifieddrivers/scsi/aic7xxx/aic7xxx.h (diff)
The file was modifieddrivers/scsi/aic7xxx/aic7770_osm.c (diff)
Commit c53051128bb0e8754e13345d782ca69e5e1ce36d by gregkh
sc16is7xx: put err_spi and err_i2c into correct #ifdef
err_spi is only called within SERIAL_SC16IS7XX_SPI while err_i2c is
called inside SERIAL_SC16IS7XX_I2C. So we need to put err_spi and
err_i2c into each #ifdef accordingly.
This change fixes ("sc16is7xx: move label 'err_spi' to correct
section").
Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/sc16is7xx.c (diff)
Commit fc834e607ae3d18e1a20bca3f9a2d7f52ea7a2be by gregkh
USB: dummy-hcd: Fix failure to give back unlinked URBs
The syzkaller USB fuzzer identified a failure mode in which dummy-hcd
would never give back an unlinked URB.  This causes usb_kill_urb() to
hang, leading to WARNINGs and unkillable threads.
In dummy-hcd, all URBs are given back by the dummy_timer() routine as it
scans through the list of pending URBS.  Failure to give back URBs can
be caused by failure to start or early exit from the scanning loop.  The
code currently has two such pathways: One is triggered when an
unsupported bus transfer speed is encountered, and the other by
exhausting the simulated bandwidth for USB transfers during a frame.
This patch removes those two paths, thereby allowing all unlinked URBs
to be given back in a timely manner.  It adds a check for the bus speed
when the gadget first starts running, so that dummy_timer() will never
thereafter encounter an unsupported speed.  And it prevents the loop
from exiting as soon as the total bandwidth has been used up (the
scanning loop continues, giving back unlinked URBs as they are found,
but not transferring any more data).
Thanks to Andrey Konovalov for manually running the syzkaller fuzzer to
help track down the source of the bug.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by:
syzbot+d919b0f29d7b5a4994b9@syzkaller.appspotmail.com CC:
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/gadget/udc/dummy_hcd.c (diff)
Commit b50776ae011cfd26df3cc2b4af8b2dc3b683e553 by mingo
locking/atomics: Don't assume that scripts are executable
patch(1) doesn't set the x bit on files.  So if someone downloads and
applies patch-4.21.xz, their kernel won't build.  Fix that by executing
/bin/sh.
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Mark
Rutland <mark.rutland@arm.com> Cc: Boqun Feng <boqun.feng@gmail.com> Cc:
Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra
(Intel) <peterz@infradead.org> Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will Deacon
<will.deacon@arm.com> Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedscripts/atomic/gen-atomics.sh (diff)
Commit 3ff9c075cc767b3060bdac12da72fc94dd7da1b8 by mingo
x86/kprobes: Verify stack frame on kretprobe
Verify the stack frame pointer on kretprobe trampoline handler, If the
stack frame pointer does not match, it skips the wrong entry and tries
to find correct one.
This can happen if user puts the kretprobe on the function which can be
used in the path of ftrace user-function call. Such functions should not
be probed, so this adds a warning message that reports which function
should be blacklisted.
Tested-by: Andrea Righi <righi.andrea@gmail.com> Signed-off-by: Masami
Hiramatsu <mhiramat@kernel.org> Acked-by: Steven Rostedt
<rostedt@goodmis.org> Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org Link:
http://lkml.kernel.org/r/155094059185.6137.15527904013362842072.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedinclude/linux/kprobes.h (diff)
The file was modifiedarch/x86/kernel/kprobes/core.c (diff)
Commit fabe38ab6b2bd9418350284c63825f13b8a6abba by mingo
kprobes: Mark ftrace mcount handler functions nokprobe
Mark ftrace mcount handler functions nokprobe since probing on these
functions with kretprobe pushes return address incorrectly on kretprobe
shadow stack.
Reported-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Tested-by: Andrea Righi <righi.andrea@gmail.com> Signed-off-by: Masami
Hiramatsu <mhiramat@kernel.org> Acked-by: Steven Rostedt
<rostedt@goodmis.org> Acked-by: Steven Rostedt (VMware)
<rostedt@goodmis.org> Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org Link:
http://lkml.kernel.org/r/155094062044.6137.6419622920568680640.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/trace/ftrace.c (diff)
Commit b191fa96ea6dc00d331dcc28c1f7db5e075693a0 by mingo
x86/kprobes: Avoid kretprobe recursion bug
Avoid kretprobe recursion loop bg by setting a dummy kprobes to
current_kprobe per-CPU variable.
This bug has been introduced with the asm-coded trampoline code, since
previously it used another kprobe for hooking the function return
placeholder (which only has a nop) and trampoline handler was called
from that kprobe.
This revives the old lost kprobe again.
With this fix, we don't see deadlock anymore.
And you can see that all inner-called kretprobe are skipped.
  event_1                                  235               0
event_2                                19375           19612
The 1st column is recorded count and the 2nd is missed count. Above
shows (event_1 rec) + (event_2 rec) ~= (event_2 missed)
(some difference are here because the counter is racy)
Reported-by: Andrea Righi <righi.andrea@gmail.com> Tested-by: Andrea
Righi <righi.andrea@gmail.com> Signed-off-by: Masami Hiramatsu
<mhiramat@kernel.org> Acked-by: Steven Rostedt <rostedt@goodmis.org> Cc:
Linus Torvalds <torvalds@linux-foundation.org> Cc: Mathieu Desnoyers
<mathieu.desnoyers@efficios.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc:
stable@vger.kernel.org Fixes: c9becf58d935 ("[PATCH] kretprobe:
kretprobe-booster") Link:
http://lkml.kernel.org/r/155094064889.6137.972160690963039.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/kernel/kprobes/core.c (diff)
Commit 1de7edbb59c8f1b46071f66c5c97b8a59569eb51 by tglx
x86/cpu/bugs: Use __initconst for 'const' init data
Some of the recently added const tables use __initdata which causes
section attribute conflicts.
Use __initconst instead.
Fixes: fa1202ef2243 ("x86/speculation: Add command line control")
Signed-off-by: Andi Kleen <ak@linux.intel.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190330004743.29541-9-andi@firstfloor.org
The file was modifiedarch/x86/kernel/cpu/bugs.c (diff)
Commit bd4264112f93045704731850c5e4d85db981cd85 by alexander.deucher
drm/ttm: fix re-init of global structures
When a driver unloads without unloading TTM we don't correctly clear the
global structures leading to errors on re-init.
Next step should probably be to remove the global structures and kobjs
all together, but this is tricky since we need to maintain backward
compatibility.
Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by:
Karol Herbst <kherbst@redhat.com> Tested-by: Karol Herbst
<kherbst@redhat.com> CC: stable@vger.kernel.org # 5.0.x Signed-off-by:
Alex Deucher <alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/ttm/ttm_bo.c (diff)
The file was modifiedinclude/drm/ttm/ttm_bo_driver.h (diff)
The file was modifieddrivers/gpu/drm/ttm/ttm_memory.c (diff)
Commit 1a62b18d51e5c5ecc0345c85bb9fef870ab721ed by torvalds
slab: store tagged freelist for off-slab slabmgmt
Commit 51dedad06b5f ("kasan, slab: make freelist stored without tags")
calls kasan_reset_tag() for off-slab slab management object leading to
freelist being stored non-tagged.
However, cache_grow_begin() calls alloc_slabmgmt() which calls
kmem_cache_alloc_node() assigns a tag for the address and stores it in
the shadow address.  As the result, it causes endless errors below
during boot due to drain_freelist() -> slab_destroy() ->
kasan_slab_free() which compares already untagged freelist against the
stored tag in the shadow address.
Since off-slab slab management object freelist is such a special case,
just store it tagged.  Non-off-slab management object freelist is still
stored untagged which has not been assigned a tag and should not cause
any other troubles with this inconsistency.
  BUG: KASAN: double-free or invalid-free in slab_destroy+0x84/0x88
Pointer tag: [ff], memory tag: [99]
  CPU: 0 PID: 1376 Comm: kworker/0:4 Tainted: G        W 5.1.0-rc3+ #8
Hardware name: HPE Apollo 70             /C01_APACHE_MB         , BIOS
L50_5.13_1.0.6 07/10/2018
Workqueue: cgroup_destroy css_killed_work_fn
Call trace:
  print_address_description+0x74/0x2a4
  kasan_report_invalid_free+0x80/0xc0
  __kasan_slab_free+0x204/0x208
  kasan_slab_free+0xc/0x18
  kmem_cache_free+0xe4/0x254
  slab_destroy+0x84/0x88
  drain_freelist+0xd0/0x104
  __kmem_cache_shrink+0x1ac/0x224
  __kmemcg_cache_deactivate+0x1c/0x28
  memcg_deactivate_kmem_caches+0xa0/0xe8
  memcg_offline_kmem+0x8c/0x3d4
  mem_cgroup_css_offline+0x24c/0x290
  css_killed_work_fn+0x154/0x618
  process_one_work+0x9cc/0x183c
  worker_thread+0x9b0/0xe38
  kthread+0x374/0x390
  ret_from_fork+0x10/0x18
  Allocated by task 1625:
  __kasan_kmalloc+0x168/0x240
  kasan_slab_alloc+0x18/0x20
  kmem_cache_alloc_node+0x1f8/0x3a0
  cache_grow_begin+0x4fc/0xa24
  cache_alloc_refill+0x2f8/0x3e8
  kmem_cache_alloc+0x1bc/0x3bc
  sock_alloc_inode+0x58/0x334
  alloc_inode+0xb8/0x164
  new_inode_pseudo+0x20/0xec
  sock_alloc+0x74/0x284
  __sock_create+0xb0/0x58c
  sock_create+0x98/0xb8
  __sys_socket+0x60/0x138
  __arm64_sys_socket+0xa4/0x110
  el0_svc_handler+0x2c0/0x47c
  el0_svc+0x8/0xc
  Freed by task 1625:
  __kasan_slab_free+0x114/0x208
  kasan_slab_free+0xc/0x18
  kfree+0x1a8/0x1e0
  single_release+0x7c/0x9c
  close_pdeo+0x13c/0x43c
  proc_reg_release+0xec/0x108
  __fput+0x2f8/0x784
  ____fput+0x1c/0x28
  task_work_run+0xc0/0x1b0
  do_notify_resume+0xb44/0x1278
  work_pending+0x8/0x10
  The buggy address belongs to the object at ffff809681b89e00
  which belongs to the cache kmalloc-128 of size 128
The buggy address is located 0 bytes inside of
  128-byte region [ffff809681b89e00, ffff809681b89e80)
The buggy address belongs to the page:
page:ffff7fe025a06e00 count:1 mapcount:0 mapping:01ff80082000fb00
index:0xffff809681b8fe04
flags: 0x17ffffffc000200(slab)
raw: 017ffffffc000200 ffff7fe025a06d08 ffff7fe022ef7b88
01ff80082000fb00
raw: ffff809681b8fe04 ffff809681b80000 00000001000000e0
0000000000000000
page dumped because: kasan: bad access detected
page allocated via order 0, migratetype Unmovable, gfp_mask
0x2420c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_COMP|__GFP_THISNODE)
  prep_new_page+0x4e0/0x5e0
  get_page_from_freelist+0x4ce8/0x50d4
  __alloc_pages_nodemask+0x738/0x38b8
  cache_grow_begin+0xd8/0xa24
  ____cache_alloc_node+0x14c/0x268
  __kmalloc+0x1c8/0x3fc
  ftrace_free_mem+0x408/0x1284
  ftrace_free_init_mem+0x20/0x28
  kernel_init+0x24/0x548
  ret_from_fork+0x10/0x18
  Memory state around the buggy address:
  ffff809681b89c00: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
  ffff809681b89d00: fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
>ffff809681b89e00: 99 99 99 99 99 99 99 99 fe fe fe fe fe fe fe fe
                    ^
  ffff809681b89f00: 43 43 43 43 43 fe fe fe fe fe fe fe fe fe fe fe
  ffff809681b8a000: 6d fe fe fe fe fe fe fe fe fe fe fe fe fe fe fe
Link: http://lkml.kernel.org/r/20190403022858.97584-1-cai@lca.pw Fixes:
51dedad06b5f ("kasan, slab: make freelist stored without tags")
Signed-off-by: Qian Cai <cai@lca.pw> Reviewed-by: Andrey Konovalov
<andreyknvl@google.com> Cc: Christoph Lameter <cl@linux.com> Cc: Pekka
Enberg <penberg@kernel.org> Cc: David Rientjes <rientjes@google.com> Cc:
Joonsoo Kim <iamjoonsoo.kim@lge.com> Cc: Andrey Ryabinin
<aryabinin@virtuozzo.com> Cc: Alexander Potapenko <glider@google.com>
Cc: Dmitry Vyukov <dvyukov@google.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/slab.c (diff)
Commit 87039546544479d4bedb19d0ea525270c43c1c9b by torvalds
mm: swapoff: shmem_find_swap_entries() filter out other types
Swapfile "type" was passed all the way down to shmem_unuse_inode(), but
then forgotten from shmem_find_swap_entries(): with the result that
removing one swapfile would try to free up all the swap from shmem - no
problem when only one swapfile anyway, but counter-productive when more,
causing swapoff to be unnecessarily OOM-killed when it should succeed.
Link:
http://lkml.kernel.org/r/alpine.LSU.2.11.1904081254470.1523@eggly.anvils
Fixes: b56a2d8af914 ("mm: rid swapoff of quadratic complexity")
Signed-off-by: Hugh Dickins <hughd@google.com> Cc: Konstantin Khlebnikov
<khlebnikov@yandex-team.ru> Cc: "Alex Xu (Hello71)" <alex_y_xu@yahoo.ca>
Cc: Vineeth Pillai <vpillai@digitalocean.com> Cc: Kelley Nielsen
<kelleynnn@gmail.com> Cc: Rik van Riel <riel@surriel.com> Cc: Huang Ying
<ying.huang@intel.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/shmem.c (diff)
Commit dd862deb151aad2548e72b077a82ad3aa91b715f by torvalds
mm: swapoff: remove too limiting SWAP_UNUSE_MAX_TRIES
SWAP_UNUSE_MAX_TRIES 3 appeared to work well in earlier testing, but
further testing has proved it to be a source of unnecessary swapoff
EBUSY failures (which can then be followed by unmount EBUSY failures).
When mmget_not_zero() or shmem's igrab() fails, there is an mm exiting
or inode being evicted, freeing up swap independent of try_to_unuse().
Those typically completed much sooner than the old quadratic swapoff,
but now it's more common that swapoff may need to wait for them.
It's possible to move those cases from init_mm.mmlist and shmem_swaplist
to separate "exiting" swaplists, and try_to_unuse() then wait for those
lists to be emptied; but we've not bothered with that in the past, and
don't want to risk missing some other forgotten case.  So just revert to
cycling around until the swap is gone, without any retries limit.
Link:
http://lkml.kernel.org/r/alpine.LSU.2.11.1904081256170.1523@eggly.anvils
Fixes: b56a2d8af914 ("mm: rid swapoff of quadratic complexity")
Signed-off-by: Hugh Dickins <hughd@google.com> Cc: "Alex Xu (Hello71)"
<alex_y_xu@yahoo.ca> Cc: Huang Ying <ying.huang@intel.com> Cc: Kelley
Nielsen <kelleynnn@gmail.com> Cc: Konstantin Khlebnikov
<khlebnikov@yandex-team.ru> Cc: Rik van Riel <riel@surriel.com> Cc:
Vineeth Pillai <vpillai@digitalocean.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/swapfile.c (diff)
Commit 64165b1affc5bc16231ac971e66aae7d68d57f2c by torvalds
mm: swapoff: take notice of completion sooner
The old try_to_unuse() implementation was driven by
find_next_to_unuse(), which terminated as soon as all the swap had been
freed.
Add inuse_pages checks now (alongside signal_pending()) to stop scanning
mms and swap_map once finished.
The same ought to be done in shmem_unuse() too, but never was before,
and needs a different interface: so leave it as is for now.
Link:
http://lkml.kernel.org/r/alpine.LSU.2.11.1904081258200.1523@eggly.anvils
Fixes: b56a2d8af914 ("mm: rid swapoff of quadratic complexity")
Signed-off-by: Hugh Dickins <hughd@google.com> Cc: "Alex Xu (Hello71)"
<alex_y_xu@yahoo.ca> Cc: Huang Ying <ying.huang@intel.com> Cc: Kelley
Nielsen <kelleynnn@gmail.com> Cc: Konstantin Khlebnikov
<khlebnikov@yandex-team.ru> Cc: Rik van Riel <riel@surriel.com> Cc:
Vineeth Pillai <vpillai@digitalocean.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/swapfile.c (diff)
Commit af53d3e9e04024885de5b4fda51e5fa362ae2bd8 by torvalds
mm: swapoff: shmem_unuse() stop eviction without igrab()
The igrab() in shmem_unuse() looks good, but we forgot that it gives no
protection against concurrent unmounting: a point made by Konstantin
Khlebnikov eight years ago, and then fixed in 2.6.39 by 778dd893ae78
("tmpfs: fix race between umount and swapoff").  The current 5.1-rc
swapoff is liable to hit "VFS: Busy inodes after unmount of tmpfs.
Self-destruct in 5 seconds.  Have a nice day..." followed by GPF.
Once again, give up on using igrab(); but don't go back to making such
heavy-handed use of shmem_swaplist_mutex as last time: that would spoil
the new design, and I expect could deadlock inside shmem_swapin_page().
Instead, shmem_unuse() just raise a "stop_eviction" count in the shmem-
specific inode, and shmem_evict_inode() wait for that to go down to 0.
Call it "stop_eviction" rather than "swapoff_busy" because it can be put
to use for others later (huge tmpfs patches expect to use it).
That simplifies shmem_unuse(), protecting it from both unlink and
unmount; and in practice lets it locate all the swap in its first try.
But do not rely on that: there's still a theoretical case, when
shmem_writepage() might have been preempted after its get_swap_page(),
before making the swap entry visible to swapoff.
[hughd@google.com: remove incorrect list_del()]
Link:
http://lkml.kernel.org/r/alpine.LSU.2.11.1904091133570.1898@eggly.anvils
Link:
http://lkml.kernel.org/r/alpine.LSU.2.11.1904081259400.1523@eggly.anvils
Fixes: b56a2d8af914 ("mm: rid swapoff of quadratic complexity")
Signed-off-by: Hugh Dickins <hughd@google.com> Cc: "Alex Xu (Hello71)"
<alex_y_xu@yahoo.ca> Cc: Huang Ying <ying.huang@intel.com> Cc: Kelley
Nielsen <kelleynnn@gmail.com> Cc: Konstantin Khlebnikov
<khlebnikov@yandex-team.ru> Cc: Rik van Riel <riel@surriel.com> Cc:
Vineeth Pillai <vpillai@digitalocean.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedinclude/linux/shmem_fs.h (diff)
The file was modifiedmm/shmem.c (diff)
The file was modifiedmm/swapfile.c (diff)
Commit 37803841c92d7b327147e0b1be3436423189e1cf by torvalds
mm/memory_hotplug: do not unlock after failing to take the
device_hotplug_lock
When adding memory by probing a memory block in the sysfs interface,
there is an obvious issue where we will unlock the device_hotplug_lock
when we failed to takes it.
That issue was introduced in 8df1d0e4a265 ("mm/memory_hotplug: make
add_memory() take the device_hotplug_lock").
We should drop out in time when failing to take the device_hotplug_lock.
Link:
http://lkml.kernel.org/r/1554696437-9593-1-git-send-email-zhongjiang@huawei.com
Fixes: 8df1d0e4a265 ("mm/memory_hotplug: make add_memory() take the
device_hotplug_lock") Signed-off-by: zhong jiang <zhongjiang@huawei.com>
Reported-by: Yang yingliang <yangyingliang@huawei.com> Acked-by: Michal
Hocko <mhocko@suse.com> Reviewed-by: David Hildenbrand
<david@redhat.com> Reviewed-by: Oscar Salvador <osalvador@suse.de> Cc:
<stable@vger.kernel.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifieddrivers/base/memory.c (diff)
Commit e8277b3b52240ec1caad8e6df278863e4bf42eac by torvalds
mm/vmstat.c: fix /proc/vmstat format for CONFIG_DEBUG_TLBFLUSH=y
CONFIG_SMP=n
Commit 58bc4c34d249 ("mm/vmstat.c: skip NR_TLB_REMOTE_FLUSH* properly")
depends on skipping vmstat entries with empty name introduced in
7aaf77272358 ("mm: don't show nr_indirectly_reclaimable in
/proc/vmstat") but reverted in b29940c1abd7 ("mm: rename and change
semantics of nr_indirectly_reclaimable_bytes").
So skipping no longer works and /proc/vmstat has misformatted lines "
0".
This patch simply shows debug counters "nr_tlb_remote_*" for UP.
Link:
http://lkml.kernel.org/r/155481488468.467.4295519102880913454.stgit@buzz
Fixes: 58bc4c34d249 ("mm/vmstat.c: skip NR_TLB_REMOTE_FLUSH* properly")
Signed-off-by: Konstantin Khlebnikov <khlebnikov@yandex-team.ru>
Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: Roman Gushchin
<guro@fb.com> Cc: Jann Horn <jannh@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>
The file was modifiedmm/vmstat.c (diff)
Commit 8cd40d1d41ffc305d9aed77937896e1712b2490c by torvalds
proc: fix map_files test on F29
F29 bans mapping first 64KB even for root making test fail.  Iterate
from address 0 until mmap() works.
Gentoo (root):
openat(AT_FDCWD, "/dev/zero", O_RDONLY) = 3
mmap(NULL, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0
Gentoo (non-root):
openat(AT_FDCWD, "/dev/zero", O_RDONLY) = 3
mmap(NULL, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EPERM
(Operation not permitted)
mmap(0x1000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x1000
F29 (root):
openat(AT_FDCWD, "/dev/zero", O_RDONLY) = 3
mmap(NULL, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x1000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x2000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x3000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x4000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x5000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x6000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x7000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x8000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x9000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0xa000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0xb000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0xc000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0xd000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0xe000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0xf000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = -1 EACCES
(Permission denied)
mmap(0x10000, 4096, PROT_NONE, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x10000
Now all proc tests succeed on F29 if run as root, at last!
Link: http://lkml.kernel.org/r/20190414123612.GB12971@avx2
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Cc: Randy Dunlap
<rdunlap@infradead.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedtools/testing/selftests/proc/proc-self-map-files-002.c (diff)
Commit 68545aa1cda847c4fdda7e49331807f99f799838 by torvalds
proc: fixup proc-pid-vm test
Silly sizeof(pointer) vs sizeof(uint8_t[]) bug.
Link: http://lkml.kernel.org/r/20190414123009.GA12971@avx2 Fixes:
e483b0208784 ("proc: test /proc/*/maps, smaps, smaps_rollup, statm")
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Signed-off-by:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedtools/testing/selftests/proc/proc-pid-vm.c (diff)
Commit 1a9f219157b22d0ffb340a9c5f431afd02cd2cf3 by torvalds
mm/hotplug: treat CMA pages as unmovable
has_unmovable_pages() is used by allocating CMA and gigantic pages as
well as the memory hotplug.  The later doesn't know how to offline CMA
pool properly now, but if an unused (free) CMA page is encountered, then
has_unmovable_pages() happily considers it as a free memory and
propagates this up the call chain.  Memory offlining code then frees the
page without a proper CMA tear down which leads to an accounting issues.
Moreover if the same memory range is onlined again then the memory never
gets back to the CMA pool.
State after memory offline:
# grep cma /proc/vmstat
nr_free_cma 205824
# cat /sys/kernel/debug/cma/cma-kvm_cma/count
209920
Also, kmemleak still think those memory address are reserved below but
have already been used by the buddy allocator after onlining.  This
patch fixes the situation by treating CMA pageblocks as unmovable except
when has_unmovable_pages() is called as part of CMA allocation.
  Offlined Pages 4096
kmemleak: Cannot insert 0xc000201f7d040008 into the object search tree
(overlaps existing)
Call Trace:
   dump_stack+0xb0/0xf4 (unreliable)
   create_object+0x344/0x380
   __kmalloc_node+0x3ec/0x860
   kvmalloc_node+0x58/0x110
   seq_read+0x41c/0x620
   __vfs_read+0x3c/0x70
   vfs_read+0xbc/0x1a0
   ksys_read+0x7c/0x140
   system_call+0x5c/0x70
kmemleak: Kernel memory leak detector disabled
kmemleak: Object 0xc000201cc8000000 (size 13757317120):
kmemleak:   comm "swapper/0", pid 0, jiffies 4294937297
kmemleak:   min_count = -1
kmemleak:   count = 0
kmemleak:   flags = 0x5
kmemleak:   checksum = 0
kmemleak:   backtrace:
      cma_declare_contiguous+0x2a4/0x3b0
      kvm_cma_reserve+0x11c/0x134
      setup_arch+0x300/0x3f8
      start_kernel+0x9c/0x6e8
      start_here_common+0x1c/0x4b0
kmemleak: Automatic memory scanning thread ended
[cai@lca.pw: use is_migrate_cma_page() and update commit log]
Link: http://lkml.kernel.org/r/20190416170510.20048-1-cai@lca.pw Link:
http://lkml.kernel.org/r/20190413002623.8967-1-cai@lca.pw Signed-off-by:
Qian Cai <cai@lca.pw> Acked-by: Michal Hocko <mhocko@suse.com> Acked-by:
Vlastimil Babka <vbabka@suse.cz> Reviewed-by: Oscar Salvador
<osalvador@suse.de> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/page_alloc.c (diff)
Commit 3b991208b897f52507168374033771a984b947b1 by torvalds
mm: fix inactive list balancing between NUMA nodes and cgroups
During !CONFIG_CGROUP reclaim, we expand the inactive list size if it's
thrashing on the node that is about to be reclaimed.  But when cgroups
are enabled, we suddenly ignore the node scope and use the cgroup scope
only.  The result is that pressure bleeds between NUMA nodes depending
on whether cgroups are merely compiled into Linux.  This behavioral
difference is unexpected and undesirable.
When the refault adaptivity of the inactive list was first introduced,
there were no statistics at the lruvec level - the intersection of node
and memcg - so it was better than nothing.
But now that we have that infrastructure, use lruvec_page_state() to
make the list balancing decision always NUMA aware.
[hannes@cmpxchg.org: fix bisection hole]
Link: http://lkml.kernel.org/r/20190417155241.GB23013@cmpxchg.org Link:
http://lkml.kernel.org/r/20190412144438.2645-1-hannes@cmpxchg.org Fixes:
2a2e48854d70 ("mm: vmscan: fix IO/refault regression in cache workingset
transition") Signed-off-by: Johannes Weiner <hannes@cmpxchg.org>
Reviewed-by: Shakeel Butt <shakeelb@google.com> Cc: Roman Gushchin
<guro@fb.com> Cc: Michal Hocko <mhocko@kernel.org> Signed-off-by: Andrew
Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/vmscan.c (diff)
Commit 40453c4f9bb6d166a56a102a8c51dd24b0801557 by torvalds
kcov: improve CONFIG_ARCH_HAS_KCOV help text
The help text for CONFIG_ARCH_HAS_KCOV is stale, and describes the
feature as being enabled only for x86_64, when it is now enabled for
several architectures, including arm, arm64, powerpc, and s390.
Let's remove that stale help text, and update it along the lines of hat
for ARCH_HAS_FORTIFY_SOURCE, better describing when an architecture
should select CONFIG_ARCH_HAS_KCOV.
Link:
http://lkml.kernel.org/r/20190412102733.5154-1-mark.rutland@arm.com
Signed-off-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Dmitry
Vyukov <dvyukov@google.com> Cc: Kees Cook <keescook@chromium.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedlib/Kconfig.debug (diff)
Commit 8f4a8c12cafe54535f334a09be7ec7f236134764 by torvalds
kernel/watchdog_hld.c: hard lockup message should end with a newline
Separate print_modules() and hard lockup error message.
Before the patch:
  NMI watchdog: Watchdog detected hard LOCKUP on cpu 1Modules linked in:
nls_cp437
Link:
http://lkml.kernel.org/r/20190412062557.2700-1-sergey.senozhatsky@gmail.com
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Cc:
Peter Zijlstra <peterz@infradead.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedkernel/watchdog_hld.c (diff)
Commit 6041186a32585fc7a1d0f6cfe2f138b05fdc3c82 by torvalds
init: initialize jump labels before command line option parsing
When a module option, or core kernel argument, toggles a static-key it
requires jump labels to be initialized early.  While x86, PowerPC, and
ARM64 arrange for jump_label_init() to be called before parse_args(),
ARM does not.
  Kernel command line: rdinit=/sbin/init page_alloc.shuffle=1 panic=-1
console=ttyAMA0,115200 page_alloc.shuffle=1
------------[ cut here ]------------
WARNING: CPU: 0 PID: 0 at ./include/linux/jump_label.h:303
page_alloc_shuffle+0x12c/0x1ac
static_key_enable(): static key 'page_alloc_shuffle_key+0x0/0x4' used
before call to jump_label_init()
Modules linked in:
CPU: 0 PID: 0 Comm: swapper Not tainted
5.1.0-rc4-next-20190410-00003-g3367c36ce744 #1
Hardware name: ARM Integrator/CP (Device Tree)
[<c0011c68>] (unwind_backtrace) from [<c000ec48>]
(show_stack+0x10/0x18)
[<c000ec48>] (show_stack) from [<c07e9710>] (dump_stack+0x18/0x24)
[<c07e9710>] (dump_stack) from [<c001bb1c>] (__warn+0xe0/0x108)
[<c001bb1c>] (__warn) from [<c001bb88>] (warn_slowpath_fmt+0x44/0x6c)
[<c001bb88>] (warn_slowpath_fmt) from [<c0b0c4a8>]
(page_alloc_shuffle+0x12c/0x1ac)
[<c0b0c4a8>] (page_alloc_shuffle) from [<c0b0c550>]
(shuffle_store+0x28/0x48)
[<c0b0c550>] (shuffle_store) from [<c003e6a0>] (parse_args+0x1f4/0x350)
[<c003e6a0>] (parse_args) from [<c0ac3c00>] (start_kernel+0x1c0/0x488)
Move the fallback call to jump_label_init() to occur before
parse_args().
The redundant calls to jump_label_init() in other archs are left intact
in case they have static key toggling use cases that are even earlier
than option parsing.
Link:
http://lkml.kernel.org/r/155544804466.1032396.13418949511615676665.stgit@dwillia2-desk3.amr.corp.intel.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com> Reported-by:
Guenter Roeck <groeck@google.com> Reviewed-by: Kees Cook
<keescook@chromium.org> Cc: Mathieu Desnoyers
<mathieu.desnoyers@efficios.com> Cc: Thomas Gleixner
<tglx@linutronix.de> Cc: Mike Rapoport <rppt@linux.ibm.com> Cc: Russell
King <rmk@armlinux.org.uk> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedinit/main.c (diff)
Commit dce5b0bdeec61bdbee56121ceb1d014151d5cab1 by torvalds
mm/kmemleak.c: fix unused-function warning
The only references outside of the #ifdef have been removed, so now we
get a warning in non-SMP configurations:
  mm/kmemleak.c:1404:13: error: unused function 'scan_large_block'
[-Werror,-Wunused-function]
Add a new #ifdef around it.
Link: http://lkml.kernel.org/r/20190416123148.3502045-1-arnd@arndb.de
Fixes: 298a32b13208 ("kmemleak: powerpc: skip scanning holes in the .bss
section") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Catalin
Marinas <catalin.marinas@arm.com> Cc: Vincent Whitchurch
<vincent.whitchurch@axis.com> Cc: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedmm/kmemleak.c (diff)
Commit 04f5866e41fb70690e28397487d8bd8eea7d712a by torvalds
coredump: fix race condition between mmget_not_zero()/get_task_mm() and
core dumping
The core dumping code has always run without holding the mmap_sem for
writing, despite that is the only way to ensure that the entire vma
layout will not change from under it.  Only using some signal
serialization on the processes belonging to the mm is not nearly enough.
This was pointed out earlier.  For example in Hugh's post from Jul 2017:

https://lkml.kernel.org/r/alpine.LSU.2.11.1707191716030.2055@eggly.anvils
  "Not strictly relevant here, but a related note: I was very surprised
  to discover, only quite recently, how handle_mm_fault() may be called
  without down_read(mmap_sem) - when core dumping. That seems a
  misguided optimization to me, which would also be nice to correct"
In particular because the growsdown and growsup can move the
vm_start/vm_end the various loops the core dump does around the vma will
not be consistent if page faults can happen concurrently.
Pretty much all users calling mmget_not_zero()/get_task_mm() and then
taking the mmap_sem had the potential to introduce unexpected side
effects in the core dumping code.
Adding mmap_sem for writing around the ->core_dump invocation is a
viable long term fix, but it requires removing all copy user and page
faults and to replace them with get_dump_page() for all binary formats
which is not suitable as a short term fix.
For the time being this solution manually covers the places that can
confuse the core dump either by altering the vma layout or the vma flags
while it runs.  Once ->core_dump runs under mmap_sem for writing the
function mmget_still_valid() can be dropped.
Allowing mmap_sem protected sections to run in parallel with the
coredump provides some minor parallelism advantage to the swapoff code
(which seems to be safe enough by never mangling any vma field and can
keep doing swapins in parallel to the core dumping) and to some other
corner case.
In order to facilitate the backporting I added "Fixes: 86039bd3b4e6"
however the side effect of this same race condition in /proc/pid/mem
should be reproducible since before 2.6.12-rc2 so I couldn't add any
other "Fixes:" because there's no hash beyond the git genesis commit.
Because find_extend_vma() is the only location outside of the process
context that could modify the "mm" structures under mmap_sem for
reading, by adding the mmget_still_valid() check to it, all other cases
that take the mmap_sem for reading don't need the new check after
mmget_not_zero()/get_task_mm().  The expand_stack() in page fault
context also doesn't need the new check, because all tasks under core
dumping are frozen.
Link:
http://lkml.kernel.org/r/20190325224949.11068-1-aarcange@redhat.com
Fixes: 86039bd3b4e6 ("userfaultfd: add new syscall to provide memory
externalization") Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Reported-by: Jann Horn <jannh@google.com> Suggested-by: Oleg Nesterov
<oleg@redhat.com> Acked-by: Peter Xu <peterx@redhat.com> Reviewed-by:
Mike Rapoport <rppt@linux.ibm.com> Reviewed-by: Oleg Nesterov
<oleg@redhat.com> Reviewed-by: Jann Horn <jannh@google.com> Acked-by:
Jason Gunthorpe <jgg@mellanox.com> Acked-by: Michal Hocko
<mhocko@suse.com> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew
Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedfs/proc/task_mmu.c (diff)
The file was modifiedmm/mmap.c (diff)
The file was modifieddrivers/infiniband/core/uverbs_main.c (diff)
The file was modifiedinclude/linux/sched/mm.h (diff)
The file was modifiedfs/userfaultfd.c (diff)
Commit 2ee27796f298b710992a677a7e4d35c8c588b17e by mingo
x86/cpu/intel: Lower the "ENERGY_PERF_BIAS: Set to normal" message's log
priority
The "ENERGY_PERF_BIAS: Set to 'normal', was 'performance'" message
triggers on pretty much every Intel machine. The purpose of log messages
with a warning level is to notify the user of something which
potentially is a problem, or at least somewhat unexpected.
This message clearly does not match those criteria, so lower its log
priority from warning to info.
Signed-off-by: Hans de Goede <hdegoede@redhat.com> Cc: Borislav Petkov
<bp@alien8.de> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc:
Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner
<tglx@linutronix.de> Link:
http://lkml.kernel.org/r/20181230172715.17469-1-hdegoede@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/kernel/cpu/intel.c (diff)
Commit b40fabc05ea047f6af5933d26a5483873340b0d4 by axboe
block: kill all_q_node in request_queue
all_q_node has not been used since commit 4b855ad37194 ("blk-mq: Create
hctx for each present CPU"), so remove it.
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
Reviewed-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Hou Tao
<houtao1@huawei.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedinclude/linux/blkdev.h (diff)
Commit 6bedf00e55e5dd0a4ed1ad3f06131edd6fb56ec8 by axboe
block: make sure that bvec length can't be overflow
bvec->bv_offset may be bigger than PAGE_SIZE sometimes, such as, when
one bio is splitted in the middle of one bvec via bio_split(), and
bi_iter.bi_bvec_done is used to build offset of the 1st bvec of remained
bio. And the remained bio's bvec may be re-submitted to fs layer via
ITER_IBVEC, such as loop and nvme-loop.
So we have to make sure that every bvec's offset is less than PAGE_SIZE
from bio_for_each_segment_all() because some drivers(loop, nvme-loop)
passes the splitted bvec to fs layer via ITER_BVEC.
This patch fixes this issue reported by Zhang Yi When running nvme/011.
Cc: Christoph Hellwig <hch@lst.de> Cc: Yi Zhang <yi.zhang@redhat.com>
Reported-by: Yi Zhang <yi.zhang@redhat.com> Reviewed-by: Christoph
Hellwig <hch@lst.de> Fixes: 6dc4f100c175 ("block: allow
bio_for_each_segment_all() to iterate over multi-page bvec")
Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Jens Axboe
<axboe@kernel.dk>
The file was modifiedinclude/linux/bvec.h (diff)
Commit 36ad7022536e0c65f8baeeaa5efde11dec44808a by davem
of_net: Fix residues after of_get_nvmem_mac_address removal
I've discovered following discrepancy in the bindings/net/ethernet.txt
documentation, where it states following:
- nvmem-cells: phandle, reference to an nvmem node for the MAC address;
- nvmem-cell-names: string, should be "mac-address" if nvmem is to be..
which is actually misleading and confusing. There are only two ethernet
drivers in the tree, cadence/macb and davinci which supports this
properties.
This nvmem-cell* properties were introduced in commit 9217e566bdee
("of_net: Implement of_get_nvmem_mac_address helper"), but commit
afa64a72b862 ("of: net: kill of_get_nvmem_mac_address()") forget to
properly clean up this parts.
So this patch fixes the documentation by moving the nvmem-cell*
properties at the appropriate places.  While at it, I've removed unused
include as well.
Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com> Fixes: afa64a72b862
("of: net: kill of_get_nvmem_mac_address()") Signed-off-by: Petr Štetiar
<ynezz@true.cz> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedDocumentation/devicetree/bindings/net/ethernet.txt (diff)
The file was modifiedDocumentation/devicetree/bindings/net/macb.txt (diff)
The file was modifiedDocumentation/devicetree/bindings/net/davinci_emac.txt (diff)
The file was modifieddrivers/of/of_net.c (diff)
Commit c2b71462d294cf517a0bc6e4fd6424d7cee5596f by gregkh
USB: core: Fix bug caused by duplicate interface PM usage counter
The syzkaller fuzzer reported a bug in the USB hub driver which turned
out to be caused by a negative runtime-PM usage counter.  This allowed a
hub to be runtime suspended at a time when the driver did not expect it.
The symptom is a WARNING issued because the hub's status URB is
submitted while it is already active:
URB 0000000031fb463e submitted while active
WARNING: CPU: 0 PID: 2917 at drivers/usb/core/urb.c:363
The negative runtime-PM usage count was caused by an unfortunate design
decision made when runtime PM was first implemented for USB. At that
time, USB class drivers were allowed to unbind from their interfaces
without balancing the usage counter (i.e., leaving it with a positive
count).  The core code would take care of setting the counter back to 0
before allowing another driver to bind to the interface.
Later on when runtime PM was implemented for the entire kernel, the
opposite decision was made: Drivers were required to balance their
runtime-PM get and put calls.  In order to maintain backward
compatibility, however, the USB subsystem adapted to the new
implementation by keeping an independent usage counter for each
interface and using it to automatically adjust the normal usage counter
back to 0 whenever a driver was unbound.
This approach involves duplicating information, but what is worse, it
doesn't work properly in cases where a USB class driver delays
decrementing the usage counter until after the driver's disconnect()
routine has returned and the counter has been adjusted back to 0. Doing
so would cause the usage counter to become negative.  There's even a
warning about this in the USB power management documentation!
As it happens, this is exactly what the hub driver does.  The
kick_hub_wq() routine increments the runtime-PM usage counter, and the
corresponding decrement is carried out by hub_event() in the context of
the hub_wq work-queue thread.  This work routine may sometimes run after
the driver has been unbound from its interface, and when it does it
causes the usage counter to go negative.
It is not possible for hub_disconnect() to wait for a pending
hub_event() call to finish, because hub_disconnect() is called with the
device lock held and hub_event() acquires that lock.  The only feasible
fix is to reverse the original design decision: remove the duplicate
interface-specific usage counter and require USB drivers to balance
their runtime PM gets and puts.  As far as I know, all existing drivers
currently do this.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by:
syzbot+7634edaea4d0b341c625@syzkaller.appspotmail.com CC:
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/usb.h (diff)
The file was modifieddrivers/usb/storage/realtek_cr.c (diff)
The file was modifiedDocumentation/driver-api/usb/power-management.rst (diff)
The file was modifieddrivers/usb/core/driver.c (diff)
Commit 12fc512f5741443a03adde2ead20724da8ad550a by saeedm
net/mlx5e: Fix use-after-free after xdp_return_frame
xdp_return_frame releases the frame. It leads to releasing the page, so
it's not allowed to access xdpi.xdpf->len after that, because xdpi.xdpf
is at xdp->data_hard_start after convert_to_xdp_frame. This patch moves
the memory access to precede the return of the frame.
Fixes: 58b99ee3e3ebe ("net/mlx5e: Add support for XDP_REDIRECT in
device-out side") Signed-off-by: Maxim Mikityanskiy
<maximmi@mellanox.com> Signed-off-by: Saeed Mahameed
<saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en/xdp.c (diff)
Commit d460c2718906252a2a69bc6f89b537071f792e6e by saeedm
net/mlx5e: Fix the max MTU check in case of XDP
MLX5E_XDP_MAX_MTU was calculated incorrectly. It didn't account for
NET_IP_ALIGN and MLX5E_HW2SW_MTU, and it also misused MLX5_SKB_FRAG_SZ.
This commit fixes the calculations and adds a brief explanation for the
formula used.
Fixes: a26a5bdf3ee2d ("net/mlx5e: Restrict the combination of large MTU
and XDP") Signed-off-by: Maxim Mikityanskiy <maximmi@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en/xdp.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_main.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en/xdp.h (diff)
Commit ace329f4ab3ba434be2adf618073c752d083b524 by saeedm
net/mlx5e: ethtool, Remove unsupported SFP EEPROM high pages query
Querying EEPROM high pages data for SFP module is currently not
supported by our driver and yet queried, resulting in invalid FW
queries.
Set the EEPROM ethtool data length to 256 for SFP module will limit the
reading for page 0 only and prevent invalid FW queries.
Fixes: bb64143eee8c ("net/mlx5e: Add ethtool support for dump module
EEPROM") Signed-off-by: Erez Alfasi <ereza@mellanox.com> Signed-off-by:
Saeed Mahameed <saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/port.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c (diff)
Commit 30c04d796b693e22405c38e9b78e9a364e4c77e6 by davem
selftests/net: correct the return value for run_netsocktests
The run_netsocktests will be marked as passed regardless the actual test
result from the ./socket:
    selftests: net: run_netsocktests
   ========================================
   --------------------
   running socket test
   --------------------
   [FAIL]
   ok 1..6 selftests: net: run_netsocktests [PASS]
This is because the test script itself has been successfully executed.
Fix this by exit 1 when the test failed.
Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiedtools/testing/selftests/net/run_netsocktests (diff)
Commit 925b0c841e066b488cc3a60272472b2c56300704 by davem
team: fix possible recursive locking when add slaves
If we add a bond device which is already the master of the team
interface, we will hold the team->lock in team_add_slave() first and
then request the lock in team_set_mac_address() again. The functions are
called like:
- team_add_slave()
- team_port_add()
  - team_port_enter()
    - team_modeop_port_enter()
      - __set_port_dev_addr()
        - dev_set_mac_address()
          - bond_set_mac_address()
            - dev_set_mac_address()
       - team_set_mac_address
Although team_upper_dev_link() would check the upper devices but it is
called too late. Fix it by adding a checking before processing the
slave.
v2: Do not split the string in netdev_err()
Fixes: 3d249d4ca7d0 ("net: introduce ethernet teaming device") Acked-by:
Jiri Pirko <jiri@mellanox.com> Signed-off-by: Hangbin Liu
<liuhangbin@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/team/team.c (diff)
Commit 8c03557c3f25271e62e39154af66ebdd1b59c9ca by davem
selftests/net: correct the return value for run_afpackettests
The run_afpackettests will be marked as passed regardless the return
value of those sub-tests in the script:
   --------------------
   running psock_tpacket test
   --------------------
   [FAIL]
   selftests: run_afpackettests [PASS]
Fix this by changing the return value for each tests.
Signed-off-by: Po-Hsu Lin <po-hsu.lin@canonical.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiedtools/testing/selftests/net/run_afpackettests (diff)
Commit 62ef81d5632634d5e310ed25b9b940b2b6612b46 by davem
net/tls: avoid potential deadlock in tls_set_device_offload_rx()
If device supports offload, but offload fails
tls_set_device_offload_rx() will call tls_sw_free_resources_rx() which
(unhelpfully) releases and reacquires the socket lock.
For a small fix release and reacquire the device_offload_lock.
Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload") Signed-off-by:
Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der
Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tls/tls_device.c (diff)
Commit 12c7686111326148b4b5db189130522a4ad1be4a by davem
net/tls: don't leak IV and record seq when offload fails
When device refuses the offload in tls_set_device_offload_rx() it calls
tls_sw_free_resources_rx() to clean up software context state.
Unfortunately, tls_sw_free_resources_rx() does not free all the state
tls_set_sw_offload() allocated - it leaks IV and sequence number
buffers.  All other code paths which lead to
tls_sw_release_resources_rx() (which tls_sw_free_resources_rx() calls)
free those right before the call.
Avoid the leak by moving freeing of iv and rec_seq into
tls_sw_release_resources_rx().
Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload") Signed-off-by:
Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: Dirk van der
Merwe <dirk.vandermerwe@netronome.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tls/tls_main.c (diff)
The file was modifiednet/tls/tls_device.c (diff)
The file was modifiednet/tls/tls_sw.c (diff)
The file was modifiedMakefile (diff)
Commit 39420fe04f093c15e1674ef56dbae0df109738ec by davem
dt-bindings: add an explanation for internal phy-mode
When working on the Allwinner internal PHY, the first work was to use
the "internal" mode, but some answer was made my mail on what are really
internal mean for PHY.
This patch write that in the doc.
Signed-off-by: Corentin Labbe <clabbe@baylibre.com> Reviewed-by: Andrew
Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedDocumentation/devicetree/bindings/net/ethernet.txt (diff)
Commit 26d1b8586b4fe14814ff4fd471cfc56014359e59 by davem
Documentation: decnet: remove reference to CONFIG_DECNET_ROUTE_FWMARK
CONFIG_DECNET_ROUTE_FWMARK was removed in commit 47dcf0cb1005 ("[NET]:
Rethink mark field in struct flowi") Since nothing replace it (and
nothindg need to replace it, simply remove it from documentation.
Signed-off-by: Corentin Labbe <clabbe@baylibre.com> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifiedDocumentation/networking/decnet.txt (diff)
Commit 7caa56f006e9d712b44f27b32520c66420d5cbc6 by pablo
netfilter: ebtables: CONFIG_COMPAT: drop a bogus WARN_ON
It means userspace gave us a ruleset where there is some other data
after the ebtables target but before the beginning of the next rule.
Fixes: 81e675c227ec ("netfilter: ebtables: add CONFIG_COMPAT support")
Reported-by: syzbot+659574e7bcc7f7eb4df7@syzkaller.appspotmail.com
Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo
Neira Ayuso <pablo@netfilter.org>
The file was modifiednet/bridge/netfilter/ebtables.c (diff)
Commit 916f6efae62305796e012e7c3a7884a267cbacbf by pablo
netfilter: never get/set skb->tstamp
setting net.netfilter.nf_conntrack_timestamp=1 breaks xmit with fq
scheduler.  skb->tstamp might be "refreshed" using ktime_get_real(), but
fq expects CLOCK_MONOTONIC.
This patch removes all places in netfilter that check/set skb->tstamp:
1. To fix the bogus "start" time seen with conntrack timestamping for
  outgoing packets, never use skb->tstamp and always use current time.
2. In nfqueue and nflog, only use skb->tstamp for incoming packets,
  as determined by current hook (prerouting, input, forward). 3. xt_time
has to use system clock as well rather than skb->tstamp.
  We could still use skb->tstamp for prerouting/input/foward, but
  I see no advantage to make this conditional.
Fixes: fb420d5d91c1 ("tcp/fq: move back to CLOCK_MONOTONIC") Cc: Eric
Dumazet <edumazet@google.com> Reported-by: Michal Soltys
<soltys@ziu.info> Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Pablo Neira
Ayuso <pablo@netfilter.org>
The file was modifiednet/netfilter/nfnetlink_queue.c (diff)
The file was modifiednet/netfilter/xt_time.c (diff)
The file was modifiednet/netfilter/nf_conntrack_core.c (diff)
The file was modifiednet/netfilter/nfnetlink_log.c (diff)
Commit d48668052b2603b6262459625c86108c493588dd by pablo
netfilter: fix nf_l4proto_log_invalid to log invalid packets
It doesn't log a packet if sysctl_log_invalid isn't equal to protonum OR
sysctl_log_invalid isn't equal to IPPROTO_RAW. This sentence is always
true. I believe we need to replace OR to AND.
Cc: Florian Westphal <fw@strlen.de> Fixes: c4f3db1595827 ("netfilter:
conntrack: add and use nf_l4proto_log_invalid") Signed-off-by: Andrei
Vagin <avagin@gmail.com> Acked-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
The file was modifiednet/netfilter/nf_conntrack_proto.c (diff)
Commit 36f0c423552dacaca152324b8e9bda42a6d88865 by bp
x86/boot: Disable RSDP parsing temporarily
The original intention to move RDSP parsing very early, before KASLR
does its ranges selection, was to accommodate movable memory regions
machines (CONFIG_MEMORY_HOTREMOVE) to still be able to do memory
hotplug.
However, that broke kexec'ing a kernel on EFI machines because depending
on where the EFI systab was mapped, on at least one machine it isn't
present in the kexec mapping of the second kernel, leading to a triple
fault in the early code.
Fixing this properly requires significantly involved surgery and we
cannot allow ourselves to do that, that close to the merge window.
So disable the RSDP parsing code temporarily until it is fixed properly
in the next release cycle.
Signed-off-by: Borislav Petkov <bp@suse.de> Cc: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Cc: Baoquan He <bhe@redhat.com> Cc: Chao Fan
<fanc.fnst@cn.fujitsu.com> Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: indou.takao@jp.fujitsu.com Cc:
Ingo Molnar <mingo@redhat.com> Cc: Juergen Gross <jgross@suse.com> Cc:
kasong@redhat.com Cc: Kees Cook <keescook@chromium.org> Cc: "Kirill A.
Shutemov" <kirill.shutemov@linux.intel.com> Cc: msys.mizuma@gmail.com
Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Tom Lendacky
<thomas.lendacky@amd.com> Cc: x86-ml <x86@kernel.org> Link:
https://lkml.kernel.org/r/20190419141952.GE10324@zn.tnic
The file was modifiedarch/x86/boot/compressed/misc.c (diff)
Commit 35fa71a030caa50458a043560d4814ea9bcd639f by axboe
io_uring: fail io_uring_register(2) on a dying io_uring instance
If we have multiple threads doing io_uring_register(2) on an io_uring
fd, then we can potentially try and kill the percpu reference while
someone else has already killed it.
Prevent this race by failing io_uring_register(2) if the ref is marked
dying. This is safe since we're inside the io_uring mutex.
Fixes: b19062a56726 ("io_uring: fix possible deadlock between
io_uring_{enter,register}") Reported-by: syzbot
<syzbot+10d25e23199614b7721f@syzkaller.appspotmail.com> Signed-off-by:
Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit e523a29c4f2703bdb98f68ce1bb256e259fd8d5f by axboe
io_uring: fix race condition reading SQ entries
A read memory barrier is required between reading SQ tail and reading
the actual data belonging to the SQ entry.
Userspace needs a matching write barrier between writing SQ entries and
updating SQ tail (using smp_store_release to update tail will do).
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 0d7bae69c574c5f25802f8a71252e7d66933a3ab by axboe
io_uring: fix race condition when sq threads goes sleeping
Reading the SQ tail needs to come after setting IORING_SQ_NEED_WAKEUP in
flags; there is no cheap barrier for ordering a store before a load, a
full memory barrier is required.
Userspace needs a full memory barrier between updating SQ tail and
checking for the IORING_SQ_NEED_WAKEUP too.
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit fb775faa9e46ff481e4ced11116c9bd45359cb43 by axboe
io_uring: fix poll full SQ detection
io_uring_poll shouldn't signal EPOLLOUT | EPOLLWRNORM if the queue is
full; the old check would always signal EPOLLOUT | EPOLLWRNORM (unless
there were U32_MAX - 1 entries in the SQ queue).
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 6aaafc43a4ecc5bc8a3f6a2811d5eddc996a97f3 by bfields
nfsd: wake waiters blocked on file_lock before deleting it
After a blocked nfsd file_lock request is deleted, knfsd will send a
callback to the client and then free the request. Commit 16306a61d3b7
("fs/locks: always delete_block after waiting.") changed it such that
locks_delete_block is always called on a request after it is awoken, but
that patch missed fixing up blocked nfsd request handling.
Call locks_delete_block on the block to wake up any locks still blocked
on the nfsd lock request before freeing it. Some of its callers already
do this however, so just remove those calls.
URL: https://bugzilla.kernel.org/show_bug.cgi?id=203363 Fixes:
16306a61d3b7 ("fs/locks: always delete_block after waiting.")
Reported-by: Slawomir Pryczek <slawek1211@gmail.com> Cc: Neil Brown
<neilb@suse.com> Cc: stable@vger.kernel.org Signed-off-by: Jeff Layton
<jlayton@kernel.org> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
The file was modifiedfs/nfsd/nfs4state.c (diff)
Commit f456458e4d25a8962d0946891617c76cc3ff5fb9 by bfields
nfsd: wake blocked file lock waiters before sending callback
When a blocked NFS lock is "awoken" we send a callback to the server and
then wake any hosts waiting on it. If a client attempts to get a lock
and then drops off the net, we could end up waiting for a long time
until we end up waking locks blocked on that request.
So, wake any other waiting lock requests before sending the callback. Do
this by calling locks_delete_block in a new "prepare" phase for
CB_NOTIFY_LOCK callbacks.
URL: https://bugzilla.kernel.org/show_bug.cgi?id=203363 Fixes:
16306a61d3b7 ("fs/locks: always delete_block after waiting.")
Reported-by: Slawomir Pryczek <slawek1211@gmail.com> Cc: Neil Brown
<neilb@suse.com> Cc: stable@vger.kernel.org Signed-off-by: Jeff Layton
<jlayton@kernel.org> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
The file was modifiedfs/nfsd/nfs4state.c (diff)
Commit b561af36b1841088552464cdc3f6371d92f17710 by davem
net: stmmac: move stmmac_check_ether_addr() to driver probe
stmmac_check_ether_addr() checks the MAC address and assigns one in
driver open(). In many cases when we create slave netdevice, the dev
addr is inherited from master but the master dev addr maybe NULL at that
time, so move this call to driver probe so that address is always valid.
Signed-off-by: Xiaofei Shen <xiaofeis@codeaurora.org> Tested-by: Xiaofei
Shen <xiaofeis@codeaurora.org> Signed-off-by: Sneh Shah
<snehshah@codeaurora.org> Signed-off-by: Vinod Koul <vkoul@kernel.org>
Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/stmmac_main.c (diff)
Commit f147384774a7b24dda4783a3dcd61af272757ea8 by vkoul
dmaengine: bcm2835: Avoid GFP_KERNEL in device_prep_slave_sg
The commit af19b7ce76ba ("mmc: bcm2835: Avoid possible races on data
requests") introduces a possible circular locking dependency, which is
triggered by swapping to the sdhost interface.
So instead of reintroduce the race condition again, we could also avoid
this situation by using GFP_NOWAIT for the allocation of the DMA buffer
descriptors.
Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Stefan
Wahren <stefan.wahren@i2se.com> Fixes: af19b7ce76ba ("mmc: bcm2835:
Avoid possible races on data requests") Link:
http://lists.infradead.org/pipermail/linux-rpi-kernel/2019-March/008615.html
Signed-off-by: Vinod Koul <vkoul@kernel.org>
The file was modifieddrivers/dma/bcm2835-dma.c (diff)
Commit 907bd68a2edc491849e2fdcfe52c4596627bca94 by vkoul
dmaengine: sh: rcar-dmac: With cyclic DMA residue 0 is valid
Having a cyclic DMA, a residue 0 is not an indication of a completed
DMA. In case of cyclic DMA make sure that dma_set_residue() is called
and with this a residue of 0 is forwarded correctly to the caller.
Fixes: 3544d2878817 ("dmaengine: rcar-dmac: use result of updated
get_residue in tx_status") Signed-off-by: Dirk Behme
<dirk.behme@de.bosch.com> Signed-off-by: Achim Dahlhoff
<Achim.Dahlhoff@de.bosch.com> Signed-off-by: Hiroyuki Yokoyama
<hiroyuki.yokoyama.vx@renesas.com> Signed-off-by: Yao Lihua
<ylhuajnu@outlook.com> Reviewed-by: Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> Reviewed-by: Laurent Pinchart
<laurent.pinchart@ideasonboard.com> Cc: <stable@vger.kernel.org> # v4.8+
Signed-off-by: Vinod Koul <vkoul@kernel.org>
The file was modifieddrivers/dma/sh/rcar-dmac.c (diff)
Commit 6e7da74775348d96e2d7efaf3f91410e18c481ef by vkoul
dmaengine: sh: rcar-dmac: Fix glitch in dmaengine_tx_status
The tx_status poll in the rcar_dmac driver reads the status register
which indicates which chunk is busy (DMACHCRB). Afterwards the point
inside the chunk is read from DMATCRB. It is possible that the chunk has
changed between the two reads. The result is a non-monotonous increase
of the residue. Fix this by introducing a 'safe read' logic.
Fixes: 73a47bd0da66 ("dmaengine: rcar-dmac: use TCRB instead of TCR for
residue") Signed-off-by: Achim Dahlhoff <Achim.Dahlhoff@de.bosch.com>
Signed-off-by: Dirk Behme <dirk.behme@de.bosch.com> Reviewed-by:
Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> Cc:
<stable@vger.kernel.org> # v4.16+ Signed-off-by: Vinod Koul
<vkoul@kernel.org>
The file was modifieddrivers/dma/sh/rcar-dmac.c (diff)
Commit d4d18e3ec6091843f607e8929a56723e28f393a6 by catalin.marinas
arm64: mm: Ensure tail of unaligned initrd is reserved
In the event that the start address of the initrd is not aligned, but
has an aligned size, the base + size will not cover the entire initrd
image and there is a chance that the kernel will corrupt the tail of the
image.
By aligning the end of the initrd to a page boundary and then
subtracting the adjusted start address the memblock reservation will
cover all pages that contains the initrd.
Fixes: c756c592e442 ("arm64: Utilize
phys_initrd_start/phys_initrd_size") Cc: stable@vger.kernel.org
Acked-by: Will Deacon <will.deacon@arm.com> Signed-off-by: Bjorn
Andersson <bjorn.andersson@linaro.org> Signed-off-by: Catalin Marinas
<catalin.marinas@arm.com>
The file was modifiedarch/arm64/mm/init.c (diff)
Commit f1267cf3c01b12e0f843fb6a7450a7f0b2efab8a by johannes.berg
mac80211: Fix kernel panic due to use of txq after free
The txq of vif is added to active_txqs list for ATF TXQ scheduling in
the function ieee80211_queue_skb(), but it was not properly removed
before freeing the txq object. It was causing use after free of the txq
objects from the active_txqs list, result was kernel panic due to
invalid memory access.
Fix kernel invalid memory access by properly removing txq object from
active_txqs list before free the object.
Signed-off-by: Bhagavathi Perumal S <bperumal@codeaurora.org> Acked-by:
Toke Høiland-Jørgensen <toke@redhat.com> Signed-off-by: Johannes Berg
<johannes.berg@intel.com>
The file was modifiednet/mac80211/iface.c (diff)
Commit 8772eed9a95abd82cf188c93edb9645543ca4418 by johannes.berg
cfg80211: Notify previous user request during self managed wiphy
registration
Commit c82c06ce43d3("cfg80211: Notify all User Hints To self managed
wiphys") notified all new user hints to self managed wiphy's after
device registration. But it didn't do this for anything other than cell
base hints done before registration.
This needs to be done during wiphy registration of a self managed device
also, so that the previous user settings are retained.
Fixes: c82c06ce43d3 ("cfg80211: Notify all User Hints To self managed
wiphys") Signed-off-by: Sriram R <srirrama@codeaurora.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
The file was modifiednet/wireless/reg.c (diff)
Commit 517879147493a5e1df6b89a50f708f1133fcaddb by johannes.berg
mac80211: don't attempt to rename ERR_PTR() debugfs dirs
We need to dereference the directory to get its parent to be able to
rename it, so it's clearly not safe to try to do this with ERR_PTR()
pointers. Skip in this case.
It seems that this is most likely what was causing the report by syzbot,
but I'm not entirely sure as it didn't come with a reproducer this time.
Cc: stable@vger.kernel.org Reported-by:
syzbot+4ece1a28b8f4730547c9@syzkaller.appspotmail.com Signed-off-by:
Johannes Berg <johannes.berg@intel.com>
The file was modifiednet/mac80211/debugfs_netdev.c (diff)
Commit 4e69ecf4da1ee0b2ac735e1f1bb13935acd5a38d by catalin.marinas
arm64/module: ftrace: deal with place relative nature of PLTs
Another bodge for the ftrace PLT code: plt_entries_equal() now takes the
place relative nature of the ADRP/ADD based PLT entries into account,
which means that a struct trampoline instance on the stack is no longer
equal to the same set of opcodes in the module struct, given that they
don't point to the same place in memory anymore.
Work around this by using memcmp() in the ftrace PLT handling code.
Acked-by: Will Deacon <will.deacon@arm.com> Tested-by: dann frazier
<dann.frazier@canonical.com> Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Catalin Marinas
<catalin.marinas@arm.com>
The file was modifiedarch/arm64/kernel/ftrace.c (diff)
Commit d4fad0a426c6e26f48c9a7cdd21a7fe9c198d645 by p.zabel
gpu: ipu-v3: dp: fix CSC handling
Initialize the flow input colorspaces to unknown and reset to that value
when the channel gets disabled. This avoids the state getting mixed up
with a previous mode.
Also keep the CSC settings for the background flow intact when disabling
the foreground flow.
Root-caused-by: Jonathan Marek <jonathan@marek.ca> Signed-off-by: Lucas
Stach <l.stach@pengutronix.de> Signed-off-by: Philipp Zabel
<p.zabel@pengutronix.de>
The file was modifieddrivers/gpu/ipu-v3/ipu-dp.c (diff)
Commit 7bcde275eb1d0ac8793c77c7e666a886eb16633d by p.zabel
drm/imx: don't skip DP channel disable for background plane
In order to make sure that the plane color space gets reset correctly.
Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by:
Philipp Zabel <p.zabel@pengutronix.de>
The file was modifieddrivers/gpu/drm/imx/ipuv3-crtc.c (diff)
Commit 8358e3a8264a228cf2dfb6f3a05c0328f4118f12 by axboe
io_uring: remove 'state' argument from io_{read,write} path
Since commit 09bb839434b we don't use the state argument for any sort of
on-stack caching in the io read and write path. Remove the stale and
unused argument from them, and bubble it up to __io_submit_sqe() and
down to io_prep_rw().
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit f5d356328d676deca698d01324000e0d98fba643 by alexander.deucher
drm/sched: Fix description of drm_sched_stop
Since commit 222b5f044159 ("drm/sched: Refactor ring mirror list
handling."), drm_sched_hw_job_reset is no longer there, so let's adjust
the doc comment accordingly.
Reviewed-by: Andrey Grodzovsky <andrey.grodzovsky@amd.com>
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/scheduler/sched_main.c (diff)
Commit 503621628b32782a07b2318e4112bd4372aa3401 by rmk+kernel
ARM: fix function graph tracer and unwinder dependencies
Naresh Kamboju recently reported that the function-graph tracer crashes
on ARM. The function-graph tracer assumes that the kernel is built with
frame pointers.
We explicitly disabled the function-graph tracer when building Thumb2,
since the Thumb2 ABI doesn't have frame pointers.
We recently changed the way the unwinder method was selected, which
seems to have made it more likely that we can end up with the function-
graph tracer enabled but without the kernel built with frame pointers.
Fix up the function graph tracer dependencies so the option is not
available when we have no possibility of having frame pointers, and
adjust the dependencies on the unwinder option to hide the non-frame
pointer unwinder options if the function-graph tracer is enabled.
Reviewed-by: Masami Hiramatsu <mhiramat@kernel.org> Tested-by: Masami
Hiramatsu <mhiramat@kernel.org> Signed-off-by: Russell King
<rmk+kernel@armlinux.org.uk>
The file was modifiedarch/arm/Kconfig.debug (diff)
The file was modifiedarch/arm/Kconfig (diff)
Commit c3143967807adb1357c36b68a7563fc0c4e1f615 by rmk+kernel
ARM: 8856/1: NOMMU: Fix CCR register faulty initialization when MPU is
disabled
When CONFIG_ARM_MPU is not defined, the base address of v7M SCB register
is not initialized with correct value. This prevents enabling I/D caches
when the L1 cache poilcy is applied in kernel.
Fixes: 3c24121039c9da14692eb48f6e39565b28c0f3cf ("ARM: 8756/1: NOMMU:
Postpone MPU activation till __after_proc_init") Signed-off-by: Tigran
Tadevosyan <tigran.tadevosyan@arm.com> Signed-off-by: Vladimir Murzin
<vladimir.murzin@arm.com> Signed-off-by: Russell King
<rmk+kernel@armlinux.org.uk>
The file was modifiedarch/arm/kernel/head-nommu.S (diff)
Commit e17b1af96b2afc38e684aa2f1033387e2ed10029 by rmk+kernel
ARM: 8857/1: efi: enable CP15 DMB instructions before cleaning the cache
The EFI stub is entered with the caches and MMU enabled by the firmware,
and once the stub is ready to hand over to the decompressor, we clean
and disable the caches.
The cache clean routines use CP15 barrier instructions, which can be
disabled via SCTLR. Normally, when using the provided cache handling
routines to enable the caches and MMU, this bit is enabled as well.
However, but since we entered the stub with the caches already enabled,
this routine is not executed before we call the cache clean routines,
resulting in undefined instruction exceptions if the firmware never
enabled this bit.
So set the bit explicitly in the EFI entry code, but do so in a way that
guarantees that the resulting code can still run on v6 cores as well
(which are guaranteed to have CP15 barriers enabled)
Cc: <stable@vger.kernel.org> # v4.9+ Acked-by: Marc Zyngier
<marc.zyngier@arm.com> Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Russell King
<rmk+kernel@armlinux.org.uk>
The file was modifiedarch/arm/boot/compressed/head.S (diff)
Commit 2f23a2a768bee7ad2ff1e9527c3f7e279e794a46 by davem
spi: Micrel eth switch: declare missing of table
Add missing <of_device_id> table for SPI driver relying on SPI device
match since compatible is in a DT binding or in a DTS.
Before this patch: modinfo drivers/net/phy/spi_ks8995.ko | grep alias
alias:          spi:ksz8795 alias:          spi:ksz8864 alias:        
spi:ks8995
After this patch: modinfo drivers/net/phy/spi_ks8995.ko | grep alias
alias:          spi:ksz8795 alias:          spi:ksz8864 alias:        
spi:ks8995 alias:          of:N*T*Cmicrel,ksz8795C* alias:        
of:N*T*Cmicrel,ksz8795 alias:          of:N*T*Cmicrel,ksz8864C* alias: 
       of:N*T*Cmicrel,ksz8864 alias:          of:N*T*Cmicrel,ks8995C*
alias:          of:N*T*Cmicrel,ks8995
Reported-by: Javier Martinez Canillas <javier@dowhile0.org>
Signed-off-by: Daniel Gomez <dagmcr@gmail.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/phy/spi_ks8995.c (diff)
Commit d04830531d0c4a99c897a44038e5da3d23331d2f by davem
spi: ST ST95HF NFC: declare missing of table
Add missing <of_device_id> table for SPI driver relying on SPI device
match since compatible is in a DT binding or in a DTS.
Before this patch: modinfo drivers/nfc/st95hf/st95hf.ko | grep alias
alias:          spi:st95hf
After this patch: modinfo drivers/nfc/st95hf/st95hf.ko | grep alias
alias:          spi:st95hf alias:          of:N*T*Cst,st95hfC* alias:  
      of:N*T*Cst,st95hf
Reported-by: Javier Martinez Canillas <javier@dowhile0.org>
Signed-off-by: Daniel Gomez <dagmcr@gmail.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/nfc/st95hf/core.c (diff)
Commit 1bcb344086f3ecf8d6705f6d708441baa823beb3 by idryomov
ceph: only use d_name directly when parent is locked
Ben reported tripping the BUG_ON in create_request_message during some
performance testing. Analysis of the vmcore showed that the length of
the r_dentry->d_name string changed after we allocated the buffer, but
before we encoded it.
build_dentry_path returns pointers to d_name in the common case of
non-snapped dentries, but this optimization isn't safe unless the parent
directory is locked. When it isn't, have the code make a copy of the
d_name while holding the d_lock.
Cc: stable@vger.kernel.org Reported-by: Ben England
<bengland@redhat.com> Signed-off-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: "Yan, Zheng" <zyan@redhat.com> Signed-off-by: Ilya Dryomov
<idryomov@gmail.com>
The file was modifiedfs/ceph/mds_client.c (diff)
Commit 76a495d666e5043ffc315695f8241f5e94a98849 by idryomov
ceph: ensure d_name stability in ceph_dentry_hash()
Take the d_lock here to ensure that d_name doesn't change.
Cc: stable@vger.kernel.org Signed-off-by: Jeff Layton
<jlayton@kernel.org> Reviewed-by: "Yan, Zheng" <zyan@redhat.com>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
The file was modifiedfs/ceph/dir.c (diff)
Commit 4b8222870032715f9d995f3eb7c7acd8379a275d by idryomov
ceph: handle the case where a dentry has been renamed on outstanding req
It's possible for us to issue a lookup to revalidate a dentry
concurrently with a rename. If done in the right order, then we could
end up processing dentry info in the reply that no longer reflects the
state of the dentry.
If req->r_dentry->d_name differs from the one in the trace, then just
ignore the trace in the reply. We only need to do this however if the
parent's i_rwsem is not held.
Signed-off-by: Jeff Layton <jlayton@kernel.org> Reviewed-by: "Yan,
Zheng" <zyan@redhat.com> Signed-off-by: Ilya Dryomov
<idryomov@gmail.com>
The file was modifiedfs/ceph/inode.c (diff)
Commit 37659182bff1eeaaeadcfc8f853c6d2b6dbc3f47 by idryomov
ceph: fix ci->i_head_snapc leak
We missed two places that i_wrbuffer_ref_head, i_wr_ref, i_dirty_caps
and i_flushing_caps may change. When they are all zeros, we should free
i_head_snapc.
Cc: stable@vger.kernel.org Link: https://tracker.ceph.com/issues/38224
Reported-and-tested-by: Luis Henriques <lhenriques@suse.com>
Signed-off-by: "Yan, Zheng" <zyan@redhat.com> Signed-off-by: Ilya
Dryomov <idryomov@gmail.com>
The file was modifiedfs/ceph/mds_client.c (diff)
The file was modifiedfs/ceph/snap.c (diff)
Commit d386bb9042f4629bf62cdc5952ea8aab225f24a7 by wsa
i2c: imx: correct the method of getting private data in notifier_call
The way of getting private imx_i2c_struct in i2c_imx_clk_notifier_call()
is incorrect, should use clk_change_nb element to get correct address
and avoid below kernel dump during POST_RATE_CHANGE notify by clk
framework:
Unable to handle kernel paging request at virtual address 03ef1488 pgd =
(ptrval)
[03ef1488] *pgd=00000000 Internal error: Oops: 5 [#1] PREEMPT SMP ARM
Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree) Workqueue:
events reduce_bus_freq_handler PC is at i2c_imx_set_clk+0x10/0xb8 LR is
at i2c_imx_clk_notifier_call+0x20/0x28 pc : [<806a893c>]    lr :
[<806a8a04>]    psr: a0080013 sp : bf399dd8  ip : bf3432ac  fp :
bf7c1dc0 r10: 00000002  r9 : 00000000  r8 : 00000000 r7 : 03ef1480  r6 :
bf399e50  r5 : ffffffff  r4 : 00000000 r3 : bf025300  r2 : bf399e50  r1
: 00b71b00  r0 : bf399be8 Flags: NzCv  IRQs on  FIQs on  Mode SVC_32
ISA ARM  Segment none Control: 10c5387d  Table: 4e03004a  DAC: 00000051
Process kworker/2:1 (pid: 38, stack limit = 0x(ptrval)) Stack:
(0xbf399dd8 to 0xbf39a000) 9dc0:                                       
              806a89e4 00000000 9de0: ffffffff bf399e50 00000002
806a8a04 806a89e4 80142900 ffffffff 00000000 9e00: bf34ef18 bf34ef04
00000000 ffffffff bf399e50 80142d84 00000000 bf399e6c 9e20: bf34ef00
80f214c4 bf025300 00000002 80f08d08 bf017480 00000000 80142df0 9e40:
00000000 80166ed8 80c27638 8045de58 bf352340 03ef1480 00b71b00 0f82e242
9e60: bf025300 00000002 03ef1480 80f60e5c 00000001 8045edf0 00000002
8045eb08 9e80: bf025300 00000002 03ef1480 8045ee10 03ef1480 8045eb08
bf01be40 00000002 9ea0: 03ef1480 8045ee10 07de2900 8045eb08 bf01b780
00000002 07de2900 8045ee10 9ec0: 80c27898 bf399ee4 bf020a80 00000002
1f78a400 8045ee10 80f60e5c 80460514 9ee0: 80f60e5c bf01b600 bf01b480
80460460 0f82e242 bf383a80 bf383a00 80f60e5c 9f00: 00000000 bf7c1dc0
80f60e70 80460564 80f60df0 80f60d24 80f60df0 8011e72c 9f20: 00000000
80f60df0 80f60e6c bf7c4f00 00000000 8011e7ac bf274000 8013bd84 9f40:
bf7c1dd8 80f03d00 bf274000 bf7c1dc0 bf274014 bf7c1dd8 80f03d00 bf398000
9f60: 00000008 8013bfb4 00000000 bf25d100 bf25d0c0 00000000 bf274000
8013bf88 9f80: bf25d11c bf0cfebc 00000000 8014140c bf25d0c0 801412ec
00000000 00000000 9fa0: 00000000 00000000 00000000 801010e8 00000000
00000000 00000000 00000000 9fc0: 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 9fe0: 00000000 00000000 00000000
00000000 00000013 00000000 00000000 00000000
[<806a893c>] (i2c_imx_set_clk) from [<806a8a04>]
(i2c_imx_clk_notifier_call+0x20/0x28)
[<806a8a04>] (i2c_imx_clk_notifier_call) from [<80142900>]
(notifier_call_chain+0x44/0x84)
[<80142900>] (notifier_call_chain) from [<80142d84>]
(__srcu_notifier_call_chain+0x44/0x98)
[<80142d84>] (__srcu_notifier_call_chain) from [<80142df0>]
(srcu_notifier_call_chain+0x18/0x20)
[<80142df0>] (srcu_notifier_call_chain) from [<8045de58>]
(__clk_notify+0x78/0xa4)
[<8045de58>] (__clk_notify) from [<8045edf0>]
(__clk_recalc_rates+0x60/0xb4)
[<8045edf0>] (__clk_recalc_rates) from [<8045ee10>]
(__clk_recalc_rates+0x80/0xb4) Code: e92d40f8 e5903298 e59072a0 e1530001
(e5975008)
---[ end trace fc7f5514b97b6cbb ]---
Fixes: 90ad2cbe88c2 ("i2c: imx: use clk notifier for rate changes")
Signed-off-by: Anson Huang <Anson.Huang@nxp.com> Reviewed-by: Dong
Aisheng <aisheng.dong@nxp.com> Signed-off-by: Wolfram Sang
<wsa@the-dreams.de> Cc: stable@kernel.org
The file was modifieddrivers/i2c/busses/i2c-imx.c (diff)
Commit 9fa246256e09dc30820524401cdbeeaadee94025 by airlied
Revert "drm/i915/fbdev: Actually configure untiled displays"
This reverts commit d179b88deb3bf6fed4991a31fd6f0f2cad21fab5.
This commit is documented to break userspace X.org modesetting driver in
certain configurations.
The X.org modesetting userspace driver is broken. No fixes are available
yet. In order for this patch to be applied it either needs a config
option or a workaround developed.
This has been reported a few times, saying it's a userspace problem is
clearly against the regression rules.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109806
Signed-off-by: Dave Airlie <airlied@redhat.com> Cc:
<stable@vger.kernel.org> # v3.19+
The file was modifieddrivers/gpu/drm/i915/intel_fbdev.c (diff)
Commit a0cecc23cfcbf2626497a8c8770856dd56b67917 by airlied
Revert "drm/virtio: drop prime import/export callbacks"
This patch does more harm than good, as it breaks both Xwayland and
gnome-shell with X11.
Xwayland requires DRI3 & DRI3 requires PRIME.
X11 crash for obscure double-free reason which are hard to debug
(starting X11 by hand doesn't trigger the crash).
I don't see an apparent problem implementing those stub prime functions,
they may return an error at run-time, and it seems to be handled fine by
GNOME at least.
This reverts commit b318e3ff7ca065d6b107e424c85a63d7a6798a69.
[airlied: This broke userspace for virtio-gpus, and regressed things
from DRI3 to DRI2.
This brings back the original problem, but it's better than
regressions.]
Fixes: b318e3ff7ca065d6b107e424c85a63d7a6798a ("drm/virtio: drop prime
import/export callbacks") Signed-off-by: Marc-André Lureau
<marcandre.lureau@redhat.com> Signed-off-by: Dave Airlie
<airlied@redhat.com>
The file was modifieddrivers/gpu/drm/virtio/virtgpu_prime.c (diff)
The file was modifieddrivers/gpu/drm/virtio/virtgpu_drv.h (diff)
The file was modifieddrivers/gpu/drm/virtio/virtgpu_drv.c (diff)
Commit 66c031716bcd9647cd2304e4875163663b086405 by davem
net: atheros: fix spelling mistake "underun" -> "underrun"
There are spelling mistakes in structure elements, fix these.
Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/atheros/atlx/atl1.c (diff)
The file was modifieddrivers/net/ethernet/atheros/atlx/atl2.c (diff)
The file was modifieddrivers/net/ethernet/atheros/atlx/atl2.h (diff)
The file was modifieddrivers/net/ethernet/atheros/atlx/atl1.h (diff)
Commit ffbf9870dcf1342592a1a26f4cf70bda39046134 by davem
net: socionext: replace napi_alloc_frag with the netdev variant on init
The netdev variant is usable on any context since it disables
interrupts. The napi variant of the call should only be used within
softirq context. Replace napi_alloc_frag on driver init with the correct
netdev_alloc_frag call
Changes since v1:
- Adjusted commit message
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Jassi
Brar <jaswinder.singh@linaro.org> Fixes: 4acb20b46214 ("net: socionext:
different approach on DMA") Signed-off-by: Ilias Apalodimas
<ilias.apalodimas@linaro.org> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/socionext/netsec.c (diff)
Commit 1c5c12ee308aacf635c8819cd4baa3bd58f8a8b7 by davem
net/ncsi: handle overflow when incrementing mac address
Previously BMC's MAC address is calculated by simply adding 1 to the
last byte of network controller's MAC address, and it produces incorrect
result when network controller's MAC address ends with 0xFF.
The problem can be fixed by calling eth_addr_inc() function to increment
MAC address; besides, the MAC address is also validated before assigning
to BMC.
Fixes: cb10c7c0dfd9 ("net/ncsi: Add NCSI Broadcom OEM command")
Signed-off-by: Tao Ren <taoren@fb.com> Acked-by: Jakub Kicinski
<jakub.kicinski@netronome.com> Acked-by: Samuel Mendoza-Jonas
<sam@mendozajonas.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/linux/etherdevice.h (diff)
The file was modifiednet/ncsi/ncsi-rsp.c (diff)
Commit d08106796a78a4273e39e1bbdf538dc4334b2635 by maarten.lankhorst
drm/vc4: Fix memory leak during gpu reset.
__drm_atomic_helper_crtc_destroy_state does not free memory, it only
cleans it up. Fix this by calling the functions own destroy function.
Fixes: 6d6e50039187 ("drm/vc4: Allocate the right amount of space for
boot-time CRTC state.") Cc: Eric Anholt <eric@anholt.net> Cc:
<stable@vger.kernel.org> # v4.6+ Reviewed-by: Eric Anholt
<eric@anholt.net> Signed-off-by: Maarten Lankhorst
<maarten.lankhorst@linux.intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190301125627.7285-2-maarten.lankhorst@linux.intel.com
The file was modifieddrivers/gpu/drm/vc4/vc4_crtc.c (diff)
Commit 0d02113b31b2017dd349ec9df2314e798a90fa6e by bp
x86/mm: Fix a crash with kmemleak_scan()
The first kmemleak_scan() call after boot would trigger the crash below
because this callpath:
  kernel_init
   free_initmem
     mem_encrypt_free_decrypted_mem
       free_init_pages
unmaps memory inside the .bss when DEBUG_PAGEALLOC=y.
kmemleak_init() will register the .data/.bss sections and then
kmemleak_scan() will scan those addresses and dereference them looking
for pointer references. If free_init_pages() frees and unmaps pages in
those sections, kmemleak_scan() will crash if referencing one of those
addresses:
  BUG: unable to handle kernel paging request at ffffffffbd402000
CPU: 12 PID: 325 Comm: kmemleak Not tainted 5.1.0-rc4+ #4
RIP: 0010:scan_block
Call Trace:
  scan_gray_list
  kmemleak_scan
  kmemleak_scan_thread
  kthread
  ret_from_fork
Since kmemleak_free_part() is tolerant to unknown objects (not tracked
by kmemleak), it is fine to call it from free_init_pages() even if not
all address ranges passed to this function are known to kmemleak.
[ bp: Massage. ]
Fixes: b3f0907c71e0 ("x86/mm: Add .bss..decrypted section to hold shared
variables") Signed-off-by: Qian Cai <cai@lca.pw> Signed-off-by: Borislav
Petkov <bp@suse.de> Reviewed-by: Catalin Marinas
<catalin.marinas@arm.com> Cc: Andy Lutomirski <luto@kernel.org> Cc:
Brijesh Singh <brijesh.singh@amd.com> Cc: Dave Hansen
<dave.hansen@linux.intel.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc:
Ingo Molnar <mingo@redhat.com> Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de> Cc: x86-ml <x86@kernel.org>
Link: https://lkml.kernel.org/r/20190423165811.36699-1-cai@lca.pw
The file was modifiedarch/x86/mm/init.c (diff)
Commit 0a29c57b76624723b6b00c027e0e992d130ace49 by tiwai
ALSA: hda/realtek - Add new Dell platform for headset mode
Add two Dell platform for headset mode.
[ Note: this is a further correction / addition of the previous
pin-based quirks for Dell machines; another entry for ALC236 with
the d-mic pin 0x12 and an entry for ALC295 -- tiwai ]
Fixes: b26e36b7ef36 ("ALSA: hda/realtek - add two more pin configuration
sets to quirk table") Signed-off-by: Kailang Yang <kailang@realtek.com>
Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit e02bc29b2cfa7806830d6da8b2322cddd67e8dfe by paul.kocialkowski
drm/sun4i: Unbind components before releasing DRM and memory
Our components may still be using the DRM device driver (if only to
access our driver's private data), so make sure to unbind them before
the final drm_dev_put.
Also release our reserved memory after component unbind instead of
before to match reverse creation order.
Fixes: f5a9ed867c83 ("drm/sun4i: Fix component unbinding and component
master deletion") Signed-off-by: Paul Kocialkowski
<paul.kocialkowski@bootlin.com> Reviewed-by: Chen-Yu Tsai
<wens@csie.org> Link:
https://patchwork.freedesktop.org/patch/msgid/20190424090413.6918-1-paul.kocialkowski@bootlin.com
The file was modifieddrivers/gpu/drm/sun4i/sun4i_drv.c (diff)
Commit 462ce5d963f18b71c63f6b7730a35a2ee5273540 by maarten.lankhorst
drm/vc4: Fix compilation error reported by kbuild test bot
A pointer to crtc was missing, resulting in the following build error:
drivers/gpu/drm/vc4/vc4_crtc.c:1045:44: sparse: sparse: incorrect type
in argument 1 (different base types)
drivers/gpu/drm/vc4/vc4_crtc.c:1045:44: sparse:    expected struct
drm_crtc *crtc drivers/gpu/drm/vc4/vc4_crtc.c:1045:44: sparse:    got
struct drm_crtc_state *state drivers/gpu/drm/vc4/vc4_crtc.c:1045:39:
sparse: sparse: not enough arguments for function vc4_crtc_destroy_state
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reported-by: kbuild test robot <lkp@intel.com> Cc: Eric Anholt
<eric@anholt.net> Link:
https://patchwork.freedesktop.org/patch/msgid/2b6ed5e6-81b0-4276-8860-870b54ca3262@linux.intel.com
Fixes: d08106796a78 ("drm/vc4: Fix memory leak during gpu reset.") Cc:
<stable@vger.kernel.org> # v4.6+ Acked-by: Daniel Vetter
<daniel.vetter@ffwll.ch>
The file was modifieddrivers/gpu/drm/vc4/vc4_crtc.c (diff)
Commit c660133c339f9ab684fdf568c0d51b9ae5e86002 by jgg
RDMA/mlx5: Do not allow the user to write to the clock page
The intent of this VMA was to be read-only from user space, but the
VM_MAYWRITE masking was missed, so mprotect could make it writable.
Cc: stable@vger.kernel.org Fixes: 5c99eaecb1fc ("IB/mlx5: Mmap the HCA's
clock info to user-space") Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Reviewed-by: Haggai Eran <haggaie@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
The file was modifieddrivers/infiniband/hw/mlx5/main.c (diff)
Commit d5e560d3f72382ac4e3bfe4e0f0420e6a220b039 by jgg
RDMA/mlx5: Use rdma_user_map_io for mapping BAR pages
Since mlx5 supports device disassociate it must use this API for all BAR
page mmaps, otherwise the pages can remain mapped after the device is
unplugged causing a system crash.
Cc: stable@vger.kernel.org Fixes: 5f9794dc94f5 ("RDMA/ucontext: Add a
core API for mmaping driver IO memory") Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Reviewed-by: Haggai Eran <haggaie@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
The file was modifieddrivers/infiniband/hw/mlx5/main.c (diff)
Commit f06eba72274788db6a43012a05a99915c0283aef by dmitry.torokhov
Input: snvs_pwrkey - make it depend on ARCH_MXC
The SNVS power key is not only used on i.MX6SX and i.MX7D, it is also
used by i.MX6UL and NXP's latest ARMv8 based i.MX8M series SOC. So
update the config dependency to use ARCH_MXC, and add the COMPILE_TEST
too.
Signed-off-by: Jacky Bai <ping.bai@nxp.com> Reviewed-by: Dong Aisheng
<aisheng.dong@nxp.com> Signed-off-by: Dmitry Torokhov
<dmitry.torokhov@gmail.com>
The file was modifieddrivers/input/keyboard/Kconfig (diff)
Commit 67f269b37f9b4d52c5e7f97acea26c0852e9b8a1 by jgg
RDMA/ucontext: Fix regression with disassociate
When this code was consolidated the intention was that the VMA would
become backed by anonymous zero pages after the zap_vma_pte - however
this very subtly relied on setting the vm_ops = NULL and clearing the
VM_SHARED bits to transform the VMA into an anonymous VMA. Since the
vm_ops was removed this broke.
Now userspace gets a SIGBUS if it touches the vma after disassociation.
Instead of converting the VMA to anonymous provide a fault handler that
puts a zero'd page into the VMA when user-space touches it after
disassociation.
Cc: stable@vger.kernel.org Suggested-by: Andrea Arcangeli
<aarcange@redhat.com> Fixes: 5f9794dc94f5 ("RDMA/ucontext: Add a core
API for mmaping driver IO memory") Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
The file was modifieddrivers/infiniband/core/uverbs_main.c (diff)
The file was modifieddrivers/infiniband/core/uverbs.h (diff)
Commit bce1a78423961fce676ac65540a31b6ffd179e6d by dmitry.torokhov
Input: synaptics-rmi4 - fix possible double free
The RMI4 function structure has been released in rmi_register_function
if error occurs. However, it will be released again in the function
rmi_create_function, which may result in a double-free bug.
Signed-off-by: Pan Bian <bianpan2016@163.com> Signed-off-by: Dmitry
Torokhov <dmitry.torokhov@gmail.com>
The file was modifieddrivers/input/rmi4/rmi_driver.c (diff)
Commit 05fd5c2c61732152a6bddc318aae62d7e436629b by stfrench
cifs: fix memory leak in SMB2_read
Commit 088aaf17aa79300cab14dbee2569c58cfafd7d6e introduced a leak where
if SMB2_read() returned an error we would return without freeing the
request buffer.
Cc: Stable <stable@vger.kernel.org> Signed-off-by: Ronnie Sahlberg
<lsahlber@redhat.com> Reviewed-by: Pavel Shilovsky
<pshilov@microsoft.com> Signed-off-by: Steve French
<stfrench@microsoft.com>
The file was modifiedfs/cifs/smb2pdu.c (diff)
Commit 652727bbe1b17993636346716ae5867627793647 by stfrench
cifs: do not attempt cifs operation on smb2+ rename error
A path-based rename returning EBUSY will incorrectly try opening the
file with a cifs (NT Create AndX) operation on an smb2+ mount, which
causes the server to force a session close.
If the mount is smb2+, skip the fallback.
Signed-off-by: Frank Sorenson <sorenson@redhat.com> Signed-off-by: Steve
French <stfrench@microsoft.com> CC: Stable <stable@vger.kernel.org>
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com>
The file was modifiedfs/cifs/inode.c (diff)
Commit 13f5938d8264b5501368523c4513ff26608a33e8 by stfrench
cifs: fix page reference leak with readv/writev
CIFS can leak pages reference gotten through GUP (get_user_pages*()
through iov_iter_get_pages()). This happen if cifs_send_async_read() or
cifs_write_from_iter() calls fail from within __cifs_readv() and
__cifs_writev() respectively. This patch move page unreference to
cifs_aio_ctx_release() which will happens on all code paths this is all
simpler to follow for correctness.
Signed-off-by: Jérôme Glisse <jglisse@redhat.com> Cc: Steve French
<sfrench@samba.org> Cc: linux-cifs@vger.kernel.org Cc:
samba-technical@lists.samba.org Cc: Alexander Viro
<viro@zeniv.linux.org.uk> Cc: linux-fsdevel@vger.kernel.org Cc: Linus
Torvalds <torvalds@linux-foundation.org> Cc: Stable
<stable@vger.kernel.org> Signed-off-by: Steve French
<stfrench@microsoft.com> Reviewed-by: Pavel Shilovsky
<pshilov@microsoft.com>
The file was modifiedfs/cifs/file.c (diff)
The file was modifiedfs/cifs/misc.c (diff)
Commit 22e8860cf8f777fbf6a83f2fb7127f682a8e9de4 by stefan
net: ieee802154: fix missing checks for regmap_update_bits
regmap_update_bits could fail and deserves a check.
The patch adds the checks and if it fails, returns its error code
upstream.
Signed-off-by: Kangjie Lu <kjlu@umn.edu> Reviewed-by: Mukesh Ojha
<mojha@codeaurora.org> Signed-off-by: Stefan Schmidt
<stefan@datenfreihafen.org>
The file was modifieddrivers/net/ieee802154/mcr20a.c (diff)
Commit 6819e3f6d83a24777813b0d031ebe0861694db5a by davem
net: vrf: Fix operation not supported when set vrf mac
Vrf device is not able to change mac address now because lack of
ndo_set_mac_address. Complete this in case some apps need to do this.
Reported-by: Hui Wang <wanghui104@huawei.com> Signed-off-by: Miaohe Lin
<linmiaohe@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/vrf.c (diff)
Commit 4b9fc7146249a6e0e3175d0acc033fdcd2bfcb17 by davem
net: rds: exchange of 8K and 1M pool
Before the commit 490ea5967b0d ("RDS: IB: move FMR code to its own
file"), when the dirty_count is greater than 9/10 of max_items of 8K
pool, 1M pool is used, Vice versa. After the commit 490ea5967b0d ("RDS:
IB: move FMR code to its own file"), the above is removed. When we make
the following tests.
Server:
rds-stress -r 1.1.1.16 -D 1M
Client:
rds-stress -r 1.1.1.14 -s 1.1.1.16 -D 1M
The following will appear.
" connecting to 1.1.1.16:4000 negotiated options, tasks will start in 2
seconds Starting up..header from 1.1.1.166:4001 to id 4001 bogus
.. tsks  tx/s  rx/s tx+rx K/s  mbi K/s  mbo K/s tx us/c  rtt us cpu %
  1    0    0     0.00     0.00     0.00    0.00 0.00 -1.00
  1    0    0     0.00     0.00     0.00    0.00 0.00 -1.00
  1    0    0     0.00     0.00     0.00    0.00 0.00 -1.00
  1    0    0     0.00     0.00     0.00    0.00 0.00 -1.00
  1    0    0     0.00     0.00     0.00    0.00 0.00 -1.00
...
" So this exchange between 8K and 1M pool is added back.
Fixes: commit 490ea5967b0d ("RDS: IB: move FMR code to its own file")
Signed-off-by: Zhu Yanjun <yanjun.zhu@oracle.com> Acked-by: Santosh
Shilimkar <santosh.shilimkar@oracle.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/rds/ib_rdma.c (diff)
The file was modifiednet/rds/ib_fmr.c (diff)
Commit 52fb56f7b5a9cc23a07b2c237bad91180263a492 by jacek.anaszewski
MAINTAINERS: LEDs: Add designated reviewer for LED subsystem
Add a designated reviewer for the LED subsystem as there are already two
maintainers assigned.
Signed-off-by: Dan Murphy <dmurphy@ti.com> Acked-by: Pavel Machek
<pavel@ucw.cz> Signed-off-by: Jacek Anaszewski
<jacek.anaszewski@gmail.com>
The file was modifiedMAINTAINERS (diff)
Commit 032be5f19a94de51093851757089133dcc1e92aa by davem
rxrpc: fix race condition in rxrpc_input_packet()
After commit 5271953cad31 ("rxrpc: Use the UDP encap_rcv hook"),
rxrpc_input_packet() is directly called from lockless UDP receive path,
under rcu_read_lock() protection.
It must therefore use RCU rules :
- udp_sk->sk_user_data can be cleared at any point in this function.
rcu_dereference_sk_user_data() is what we need here.
- Also, since sk_user_data might have been set in rxrpc_open_socket()
we must observe a proper RCU grace period before kfree(local) in
rxrpc_lookup_local()
v4: @local can be NULL in xrpc_lookup_local() as reported by kbuild test
robot <lkp@intel.com>
       and Julia Lawall <julia.lawall@lip6.fr>, thanks !
v3,v2 : addressed David Howells feedback, thanks !
syzbot reported :
kasan: CONFIG_KASAN_INLINE enabled kasan: GPF could be caused by
NULL-ptr deref or user memory access general protection fault: 0000 [#1]
PREEMPT SMP KASAN CPU: 0 PID: 19236 Comm: syz-executor703 Not tainted
5.1.0-rc6 #79 Hardware name: Google Google Compute Engine/Google Compute
Engine, BIOS Google 01/01/2011 RIP: 0010:__lock_acquire+0xbef/0x3fb0
kernel/locking/lockdep.c:3573 Code: 00 0f 85 a5 1f 00 00 48 81 c4 10 01
00 00 5b 41 5c 41 5d 41 5e 41 5f 5d c3 48 b8 00 00 00 00 00 fc ff df 4c
89 ea 48 c1 ea 03 <80> 3c 02 00 0f 85 4a 21 00 00 49 81 7d 00 20 54 9c
89 0f 84 cf f4 RSP: 0018:ffff88809d7aef58 EFLAGS: 00010002 RAX:
dffffc0000000000 RBX: 0000000000000000 RCX: 0000000000000000 RDX:
0000000000000026 RSI: 0000000000000000 RDI: 0000000000000001 RBP:
ffff88809d7af090 R08: 0000000000000001 R09: 0000000000000001 R10:
ffffed1015d05bc7 R11: ffff888089428600 R12: 0000000000000000 R13:
0000000000000130 R14: 0000000000000001 R15: 0000000000000001 FS:
00007f059044d700(0000) GS:ffff8880ae800000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00000000004b6040
CR3: 00000000955ca000 CR4: 00000000001406f0 Call Trace:
lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:4211
__raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:110 [inline]
_raw_spin_lock_irqsave+0x95/0xcd kernel/locking/spinlock.c:152
skb_queue_tail+0x26/0x150 net/core/skbuff.c:2972
rxrpc_reject_packet net/rxrpc/input.c:1126 [inline]
rxrpc_input_packet+0x4a0/0x5536 net/rxrpc/input.c:1414
udp_queue_rcv_one_skb+0xaf2/0x1780 net/ipv4/udp.c:2011
udp_queue_rcv_skb+0x128/0x730 net/ipv4/udp.c:2085
udp_unicast_rcv_skb.isra.0+0xb9/0x360 net/ipv4/udp.c:2245
__udp4_lib_rcv+0x701/0x2ca0 net/ipv4/udp.c:2301
udp_rcv+0x22/0x30 net/ipv4/udp.c:2482
ip_protocol_deliver_rcu+0x60/0x8f0 net/ipv4/ip_input.c:208
ip_local_deliver_finish+0x23b/0x390 net/ipv4/ip_input.c:234
NF_HOOK include/linux/netfilter.h:289 [inline]
NF_HOOK include/linux/netfilter.h:283 [inline]
ip_local_deliver+0x1e9/0x520 net/ipv4/ip_input.c:255
dst_input include/net/dst.h:450 [inline]
ip_rcv_finish+0x1e1/0x300 net/ipv4/ip_input.c:413
NF_HOOK include/linux/netfilter.h:289 [inline]
NF_HOOK include/linux/netfilter.h:283 [inline]
ip_rcv+0xe8/0x3f0 net/ipv4/ip_input.c:523
__netif_receive_skb_one_core+0x115/0x1a0 net/core/dev.c:4987
__netif_receive_skb+0x2c/0x1c0 net/core/dev.c:5099
netif_receive_skb_internal+0x117/0x660 net/core/dev.c:5202
napi_frags_finish net/core/dev.c:5769 [inline]
napi_gro_frags+0xade/0xd10 net/core/dev.c:5843
tun_get_user+0x2f24/0x3fb0 drivers/net/tun.c:1981
tun_chr_write_iter+0xbd/0x156 drivers/net/tun.c:2027
call_write_iter include/linux/fs.h:1866 [inline]
do_iter_readv_writev+0x5e1/0x8e0 fs/read_write.c:681
do_iter_write fs/read_write.c:957 [inline]
do_iter_write+0x184/0x610 fs/read_write.c:938
vfs_writev+0x1b3/0x2f0 fs/read_write.c:1002
do_writev+0x15e/0x370 fs/read_write.c:1037
__do_sys_writev fs/read_write.c:1110 [inline]
__se_sys_writev fs/read_write.c:1107 [inline]
__x64_sys_writev+0x75/0xb0 fs/read_write.c:1107
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Fixes: 5271953cad31 ("rxrpc: Use the UDP encap_rcv hook") Signed-off-by:
Eric Dumazet <edumazet@google.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Acked-by: David Howells
<dhowells@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/rxrpc/local_object.c (diff)
The file was modifiednet/rxrpc/input.c (diff)
Commit 0453c682459583910d611a96de928f4442205493 by davem
net/rose: fix unbound loop in rose_loopback_timer()
This patch adds a limit on the number of skbs that fuzzers can queue
into loopback_queue. 1000 packets for rose loopback seems more than
enough.
Then, since we now have multiple cpus in most linux hosts, we also need
to limit the number of skbs rose_loopback_timer() can dequeue at each
round.
rose_loopback_queue() can be drop-monitor friendly, calling
consume_skb() or kfree_skb() appropriately.
Finally, use mod_timer() instead of del_timer() + add_timer()
syzbot report was :
rcu: INFO: rcu_preempt self-detected stall on CPU rcu:    0-...!: (10499
ticks this GP) idle=536/1/0x4000000000000002 softirq=103291/103291
fqs=34 rcu:     (t=10500 jiffies g=140321 q=323) rcu: rcu_preempt
kthread starved for 10426 jiffies! g140321 f0x0 RCU_GP_WAIT_FQS(5)
->state=0x402 ->cpu=1 rcu: RCU grace-period kthread stack dump:
rcu_preempt     I29168    10      2 0x80000000 Call Trace:
context_switch kernel/sched/core.c:2877 [inline]
__schedule+0x813/0x1cc0 kernel/sched/core.c:3518
schedule+0x92/0x180 kernel/sched/core.c:3562
schedule_timeout+0x4db/0xfd0 kernel/time/timer.c:1803
rcu_gp_fqs_loop kernel/rcu/tree.c:1971 [inline]
rcu_gp_kthread+0x962/0x17b0 kernel/rcu/tree.c:2128
kthread+0x357/0x430 kernel/kthread.c:253
ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352 NMI backtrace for
cpu 0 CPU: 0 PID: 7632 Comm: kworker/0:4 Not tainted 5.1.0-rc5+ #172
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011 Workqueue: events iterate_cleanup_work Call Trace:
<IRQ>
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x172/0x1f0 lib/dump_stack.c:113
nmi_cpu_backtrace.cold+0x63/0xa4 lib/nmi_backtrace.c:101
nmi_trigger_cpumask_backtrace+0x1be/0x236 lib/nmi_backtrace.c:62
arch_trigger_cpumask_backtrace+0x14/0x20
arch/x86/kernel/apic/hw_nmi.c:38
trigger_single_cpu_backtrace include/linux/nmi.h:164 [inline]
rcu_dump_cpu_stacks+0x183/0x1cf kernel/rcu/tree.c:1223
print_cpu_stall kernel/rcu/tree.c:1360 [inline]
check_cpu_stall kernel/rcu/tree.c:1434 [inline]
rcu_pending kernel/rcu/tree.c:3103 [inline]
rcu_sched_clock_irq.cold+0x500/0xa4a kernel/rcu/tree.c:2544
update_process_times+0x32/0x80 kernel/time/timer.c:1635
tick_sched_handle+0xa2/0x190 kernel/time/tick-sched.c:161
tick_sched_timer+0x47/0x130 kernel/time/tick-sched.c:1271
__run_hrtimer kernel/time/hrtimer.c:1389 [inline]
__hrtimer_run_queues+0x33e/0xde0 kernel/time/hrtimer.c:1451
hrtimer_interrupt+0x314/0x770 kernel/time/hrtimer.c:1509
local_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1035 [inline]
smp_apic_timer_interrupt+0x120/0x570 arch/x86/kernel/apic/apic.c:1060
apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:807 RIP:
0010:__sanitizer_cov_trace_pc+0x0/0x50 kernel/kcov.c:95 Code: 89 25 b4
6e ec 08 41 bc f4 ff ff ff e8 cd 5d ea ff 48 c7 05 9e 6e ec 08 00 00 00
00 e9 a4 e9 ff ff 90 90 90 90 90 90 90 90 90 <55> 48 89 e5 48 8b 75 08
65 48 8b 04 25 00 ee 01 00 65 8b 15 c8 60 RSP: 0018:ffff8880ae807ce0
EFLAGS: 00000286 ORIG_RAX: ffffffffffffff13 RAX: ffff88806fd40640 RBX:
dffffc0000000000 RCX: ffffffff863fbc56 RDX: 0000000000000100 RSI:
ffffffff863fbc1d RDI: ffff88808cf94228 RBP: ffff8880ae807d10 R08:
ffff88806fd40640 R09: ffffed1015d00f8b R10: ffffed1015d00f8a R11:
0000000000000003 R12: ffff88808cf941c0 R13: 00000000fffff034 R14:
ffff8882166cd840 R15: 0000000000000000
rose_loopback_timer+0x30d/0x3f0 net/rose/rose_loopback.c:91
call_timer_fn+0x190/0x720 kernel/time/timer.c:1325
expire_timers kernel/time/timer.c:1362 [inline]
__run_timers kernel/time/timer.c:1681 [inline]
__run_timers kernel/time/timer.c:1649 [inline]
run_timer_softirq+0x652/0x1700 kernel/time/timer.c:1694
__do_softirq+0x266/0x95a kernel/softirq.c:293
do_softirq_own_stack+0x2a/0x40 arch/x86/entry/entry_64.S:1027
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Eric Dumazet
<edumazet@google.com> Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/rose/rose_loopback.c (diff)
Commit 20ff83f10f113c88d0bb74589389b05250994c16 by davem
ipv4: add sanity checks in ipv4_link_failure()
Before calling __ip_options_compile(), we need to ensure the network
header is a an IPv4 one, and that it is already pulled in skb->head.
RAW sockets going through a tunnel can end up calling
ipv4_link_failure() with total garbage in the skb, or arbitrary
lengthes.
syzbot report :
BUG: KASAN: stack-out-of-bounds in memcpy include/linux/string.h:355
[inline] BUG: KASAN: stack-out-of-bounds in
__ip_options_echo+0x294/0x1120 net/ipv4/ip_options.c:123 Write of size
69 at addr ffff888096abf068 by task syz-executor.4/9204
CPU: 0 PID: 9204 Comm: syz-executor.4 Not tainted 5.1.0-rc5+ #77
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:133
memcpy include/linux/string.h:355 [inline]
__ip_options_echo+0x294/0x1120 net/ipv4/ip_options.c:123
__icmp_send+0x725/0x1400 net/ipv4/icmp.c:695
ipv4_link_failure+0x29f/0x550 net/ipv4/route.c:1204
dst_link_failure include/net/dst.h:427 [inline]
vti6_xmit net/ipv6/ip6_vti.c:514 [inline]
vti6_tnl_xmit+0x10d4/0x1c0c net/ipv6/ip6_vti.c:553
__netdev_start_xmit include/linux/netdevice.h:4414 [inline]
netdev_start_xmit include/linux/netdevice.h:4423 [inline]
xmit_one net/core/dev.c:3292 [inline]
dev_hard_start_xmit+0x1b2/0x980 net/core/dev.c:3308
__dev_queue_xmit+0x271d/0x3060 net/core/dev.c:3878
dev_queue_xmit+0x18/0x20 net/core/dev.c:3911
neigh_direct_output+0x16/0x20 net/core/neighbour.c:1527
neigh_output include/net/neighbour.h:508 [inline]
ip_finish_output2+0x949/0x1740 net/ipv4/ip_output.c:229
ip_finish_output+0x73c/0xd50 net/ipv4/ip_output.c:317
NF_HOOK_COND include/linux/netfilter.h:278 [inline]
ip_output+0x21f/0x670 net/ipv4/ip_output.c:405
dst_output include/net/dst.h:444 [inline]
NF_HOOK include/linux/netfilter.h:289 [inline]
raw_send_hdrinc net/ipv4/raw.c:432 [inline]
raw_sendmsg+0x1d2b/0x2f20 net/ipv4/raw.c:663
inet_sendmsg+0x147/0x5d0 net/ipv4/af_inet.c:798
sock_sendmsg_nosec net/socket.c:651 [inline]
sock_sendmsg+0xdd/0x130 net/socket.c:661
sock_write_iter+0x27c/0x3e0 net/socket.c:988
call_write_iter include/linux/fs.h:1866 [inline]
new_sync_write+0x4c7/0x760 fs/read_write.c:474
__vfs_write+0xe4/0x110 fs/read_write.c:487
vfs_write+0x20c/0x580 fs/read_write.c:549
ksys_write+0x14f/0x2d0 fs/read_write.c:599
__do_sys_write fs/read_write.c:611 [inline]
__se_sys_write fs/read_write.c:608 [inline]
__x64_sys_write+0x73/0xb0 fs/read_write.c:608
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x458c29 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:00007f293b44bc78
EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX:
0000000000000003 RCX: 0000000000458c29 RDX: 0000000000000014 RSI:
00000000200002c0 RDI: 0000000000000003 RBP: 000000000073bf00 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007f293b44c6d4 R13: 00000000004c8623 R14:
00000000004ded68 R15: 00000000ffffffff
The buggy address belongs to the page: page:ffffea00025aafc0 count:0
mapcount:0 mapping:0000000000000000 index:0x0 flags: 0x1fffc0000000000()
raw: 01fffc0000000000 0000000000000000 ffffffff025a0101 0000000000000000
raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
page dumped because: kasan: bad access detected
Memory state around the buggy address:
ffff888096abef80: 00 00 00 f2 f2 f2 f2 f2 00 00 00 00 00 00 00 f2
ffff888096abf000: f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00
>ffff888096abf080: 00 00 f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00
                        ^
ffff888096abf100: 00 00 00 00 f1 f1 f1 f1 00 00 f3 f3 00 00 00 00
ffff888096abf180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Fixes: ed0de45a1008 ("ipv4: recompile ip options in ipv4_link_failure")
Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Stephen Suryaputra
<ssuryaextr@gmail.com> Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/route.c (diff)
Commit 82c99f7a81f28f8c1be5f701c8377d14c4075b10 by mingo
perf/x86/intel: Update KBL Package C-state events to also include
PC8/PC9/PC10 counters
Kaby Lake (and Coffee Lake) has PC8/PC9/PC10 residency counters.
This patch updates the list of Kaby/Coffee Lake PMU event counters from
the snb_cstates[] list of events to the hswult_cstates[] list of events,
which keeps all previously supported events and also adds the PKG_C8,
PKG_C9 and PKG_C10 residency counters.
This allows user space tools to profile them through the perf interface.
Signed-off-by: Harry Pan <harry.pan@intel.com> Cc:
<stable@vger.kernel.org> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo
<acme@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian
<eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vince
Weaver <vincent.weaver@maine.edu> Cc: gs0622@gmail.com Link:
http://lkml.kernel.org/r/20190424145033.1924-1-harry.pan@intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/events/intel/cstate.c (diff)
Commit 81103355b1e23345dbcdeccad59962a424da4a34 by thellstrom
drm/vmwgfx: Fix dma API layer violation
Remove the check for IOMMU presence since it was considered a layer
violation. This means we have no reliable way to destinguish between
coherent hardware IOMMU DMA address translations and incoherent SWIOTLB
DMA address translations, which we can't handle. So always presume the
former. This means that if anybody forces SWIOTLB without also setting
the vmw_force_coherent=1 vmwgfx option, driver operation will fail, like
it will on most other graphics drivers.
Signed-off-by: Thomas Hellstrom <thellstrom@vmware.com> Reviewed-by:
Christoph Hellwig <hch@lst.de>
The file was modifieddrivers/gpu/drm/vmwgfx/vmwgfx_drv.c (diff)
Commit 357798909164bf423eac6a78ff7da7e98d2d7f7f by linus.walleij
gpio: Fix gpiochip_add_data_with_key() error path
The err_remove_chip block is too coarse, and may perform cleanup that
must not be done.  E.g. if of_gpiochip_add() fails, of_gpiochip_remove()
is still called, causing:
    OF: ERROR: Bad of_node_put() on /soc/gpio@e6050000
   CPU: 1 PID: 20 Comm: kworker/1:1 Not tainted 5.1.0-rc2-koelsch+ #407
   Hardware name: Generic R-Car Gen2 (Flattened Device Tree)
   Workqueue: events deferred_probe_work_func
   [<c020ec74>] (unwind_backtrace) from [<c020ae58>]
(show_stack+0x10/0x14)
   [<c020ae58>] (show_stack) from [<c07c1224>] (dump_stack+0x7c/0x9c)
   [<c07c1224>] (dump_stack) from [<c07c5a80>] (kobject_put+0x94/0xbc)
   [<c07c5a80>] (kobject_put) from [<c0470420>]
(gpiochip_add_data_with_key+0x8d8/0xa3c)
   [<c0470420>] (gpiochip_add_data_with_key) from [<c0473738>]
(gpio_rcar_probe+0x1d4/0x314)
   [<c0473738>] (gpio_rcar_probe) from [<c052fca8>]
(platform_drv_probe+0x48/0x94)
and later, if a GPIO consumer tries to use a GPIO from a failed
controller:
    WARNING: CPU: 0 PID: 1 at lib/refcount.c:156 kobject_get+0x38/0x4c
   refcount_t: increment on 0; use-after-free.
   Modules linked in:
   CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.1.0-rc2-koelsch+ #407
   Hardware name: Generic R-Car Gen2 (Flattened Device Tree)
   [<c020ec74>] (unwind_backtrace) from [<c020ae58>]
(show_stack+0x10/0x14)
   [<c020ae58>] (show_stack) from [<c07c1224>] (dump_stack+0x7c/0x9c)
   [<c07c1224>] (dump_stack) from [<c0221580>] (__warn+0xd0/0xec)
   [<c0221580>] (__warn) from [<c02215e0>] (warn_slowpath_fmt+0x44/0x6c)
   [<c02215e0>] (warn_slowpath_fmt) from [<c07c58fc>]
(kobject_get+0x38/0x4c)
   [<c07c58fc>] (kobject_get) from [<c068b3ec>] (of_node_get+0x14/0x1c)
   [<c068b3ec>] (of_node_get) from [<c0686f24>]
(of_find_node_by_phandle+0xc0/0xf0)
   [<c0686f24>] (of_find_node_by_phandle) from [<c0686fbc>]
(of_phandle_iterator_next+0x68/0x154)
   [<c0686fbc>] (of_phandle_iterator_next) from [<c0687fe4>]
(__of_parse_phandle_with_args+0x40/0xd0)
   [<c0687fe4>] (__of_parse_phandle_with_args) from [<c0688204>]
(of_parse_phandle_with_args_map+0x100/0x3ac)
   [<c0688204>] (of_parse_phandle_with_args_map) from [<c0471240>]
(of_get_named_gpiod_flags+0x38/0x380)
   [<c0471240>] (of_get_named_gpiod_flags) from [<c046f864>]
(gpiod_get_from_of_node+0x24/0xd8)
   [<c046f864>] (gpiod_get_from_of_node) from [<c0470aa4>]
(devm_fwnode_get_index_gpiod_from_child+0xa0/0x144)
   [<c0470aa4>] (devm_fwnode_get_index_gpiod_from_child) from
[<c05f425c>] (gpio_keys_probe+0x418/0x7bc)
   [<c05f425c>] (gpio_keys_probe) from [<c052fca8>]
(platform_drv_probe+0x48/0x94)
Fix this by splitting the cleanup block, and adding a missing call to
gpiochip_irqchip_remove().
Fixes: 28355f81969962cf ("gpio: defer probe if pinctrl cannot be found")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Reviewed-by:
Mukesh Ojha <mojha@codeaurora.org> Signed-off-by: Linus Walleij
<linus.walleij@linaro.org>
The file was modifieddrivers/gpio/gpiolib.c (diff)
Commit c4cba44eeecab9d5ccd3dd2d5520a7d1e5be544f by a.hajda
drm/bridge: dw-hdmi: fix SCDC configuration for ddc-i2c-bus
When ddc-i2c-bus property is used, a NULL pointer dereference is
reported:
[   31.041669] Unable to handle kernel NULL pointer dereference at
virtual address 00000008
[   31.041671] pgd = 4d3c16f6
[   31.041673] [00000008] *pgd=00000000
[   31.041678] Internal error: Oops: 5 [#1] SMP ARM
[   31.041711] Hardware name: Rockchip (Device Tree)
[   31.041718] PC is at i2c_transfer+0x8/0xe4
[   31.041721] LR is at drm_scdc_read+0x54/0x84
[   31.041723] pc : [<c073273c>]    lr : [<c05926c4>]    psr: 280f0013
[   31.041725] sp : edffdad0  ip : 5ccb5511  fp : 00000058
[   31.041727] r10: 00000780  r9 : edf91608  r8 : c11b0f48
[   31.041728] r7 : 00000438  r6 : 00000000  r5 : 00000000  r4 :
00000000
[   31.041730] r3 : edffdae7  r2 : 00000002  r1 : edffdaec  r0 :
00000000
[   31.041908] [<c073273c>] (i2c_transfer) from [<c05926c4>]
(drm_scdc_read+0x54/0x84)
[   31.041913] [<c05926c4>] (drm_scdc_read) from [<c0592858>]
(drm_scdc_set_scrambling+0x30/0xbc)
[   31.041919] [<c0592858>] (drm_scdc_set_scrambling) from [<c05cc0f4>]
(dw_hdmi_update_power+0x1440/0x1610)
[   31.041926] [<c05cc0f4>] (dw_hdmi_update_power) from [<c05cc574>]
(dw_hdmi_bridge_enable+0x2c/0x70)
[   31.041932] [<c05cc574>] (dw_hdmi_bridge_enable) from [<c05aed48>]
(drm_bridge_enable+0x24/0x34)
[   31.041938] [<c05aed48>] (drm_bridge_enable) from [<c0591060>]
(drm_atomic_helper_commit_modeset_enables+0x114/0x220)
[   31.041943] [<c0591060>] (drm_atomic_helper_commit_modeset_enables)
from [<c05c3fe0>] (rockchip_atomic_helper_commit_tail_rpm+0x28/0x64)
hdmi->i2c may not be set when ddc-i2c-bus property is used in device
tree. Fix this by using hdmi->ddc as the i2c adapter when calling
drm_scdc_*(). Also report that SCDC is not supported when there is no
DDC bus.
Fixes: 264fce6cc2c1 ("drm/bridge: dw-hdmi: Add SCDC and TMDS Scrambling
support") Signed-off-by: Jonas Karlman <jonas@kwiboo.se> Reviewed-by:
Heiko Stuebner <heiko@sntech.de> Reviewed-by: Neil Armstrong
<narmstrong@baylibre.com> Reviewed-by: Laurent Pinchart
<laurent.pinchart@ideasonboard.com> Signed-off-by: Andrzej Hajda
<a.hajda@samsung.com> Link:
https://patchwork.freedesktop.org/patch/msgid/VE1PR03MB59031814B5BCAB2152923BDAAC210@VE1PR03MB5903.eurprd03.prod.outlook.com
The file was modifieddrivers/gpu/drm/bridge/synopsys/dw-hdmi.c (diff)
Commit c409ca3be3c6ff3a1eeb303b191184e80d412862 by gregkh
usb: usbip: fix isoc packet num validation in get_pipe
Change the validation of number_of_packets in get_pipe to compare the
number of packets to a fixed maximum number of packets allowed, set to
be 1024. This number was chosen due to it being used by other drivers as
well, for example drivers/usb/host/uhci-q.c
Background/reason: The get_pipe function in stub_rx.c validates the
number of packets in isochronous mode and aborts with an error if that
number is too large, in order to prevent malicious input from possibly
triggering large memory allocations. This was previously done by
checking whether pdu->u.cmd_submit.number_of_packets is bigger than the
number of packets that would be needed for
pdu->u.cmd_submit.transfer_buffer_length bytes if all except possibly
the last packet had maximum length, given by usb_endpoint_maxp(epd) *
usb_endpoint_maxp_mult(epd). This leads to an error if URBs with packets
shorter than the maximum possible length are submitted, which is allowed
according to Documentation/driver-api/usb/URB.rst and occurs for example
with the snd-usb-audio driver.
Fixes: c6688ef9f297 ("usbip: fix stub_rx: harden CMD_SUBMIT path to
handle malicious input") Signed-off-by: Malte Leip <malte@leip.net> Cc:
stable <stable@vger.kernel.org> Acked-by: Shuah Khan
<skhan@linuxfoundation.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/usbip/usbip_common.h (diff)
The file was modifieddrivers/usb/usbip/stub_rx.c (diff)
Commit ef61eb43ada6c1d6b94668f0f514e4c268093ff3 by gregkh
USB: yurex: Fix protection fault after device removal
The syzkaller USB fuzzer found a general-protection-fault bug in the
yurex driver.  The fault occurs when a device has been unplugged; the
driver's interrupt-URB handler logs an error message referring to the
device by name, after the device has been unregistered and its name
deallocated.
This problem is caused by the fact that the interrupt URB isn't
cancelled until the driver's private data structure is released, which
can happen long after the device is gone.  The cure is to make sure that
the interrupt URB is killed before yurex_disconnect() returns; this is
exactly the sort of thing that usb_poison_urb() was meant for.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by:
syzbot+2eb9121678bdb36e6d57@syzkaller.appspotmail.com CC:
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/misc/yurex.c (diff)
Commit c114944d7d67f24e71562fcfc18d550ab787e4d4 by gregkh
USB: w1 ds2490: Fix bug caused by improper use of altsetting array
The syzkaller USB fuzzer spotted a slab-out-of-bounds bug in the ds2490
driver.  This bug is caused by improper use of the altsetting array in
the usb_interface structure (the array's entries are not always stored
in numerical order), combined with a naive assumption that all
interfaces probed by the driver will have the expected number of
altsettings.
The bug can be fixed by replacing references to the possibly
non-existent intf->altsetting[alt] entry with the guaranteed-to-exist
intf->cur_altsetting entry.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Reported-and-tested-by:
syzbot+d65f673b847a1a96cdba@syzkaller.appspotmail.com CC:
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/w1/masters/ds2490.c (diff)
Commit 811328fc3222f7b55846de0cd0404339e2e1e6d7 by marc.zyngier
KVM: arm/arm64: Ensure vcpu target is unset on reset failure
A failed KVM_ARM_VCPU_INIT should not set the vcpu target, as the vcpu
target is used by kvm_vcpu_initialized() to determine if other vcpu
ioctls may proceed. We need to set the target before calling
kvm_reset_vcpu(), but if that call fails, we should then unset it and
clear the feature bitmap while we're at it.
Signed-off-by: Andrew Jones <drjones@redhat.com>
[maz: Simplified patch, completed commit message] Signed-off-by: Marc
Zyngier <marc.zyngier@arm.com>
The file was modifiedvirt/kvm/arm/arm.c (diff)
Commit 2e8010bb71b39ff18aac9fb209b3c3093f4c4783 by marc.zyngier
kvm: arm: Skip stage2 huge mappings for unaligned ipa backed by THP
With commit a80868f398554842b14, we no longer ensure that the THP page
is properly aligned in the guest IPA. Skip the stage2 huge mapping for
unaligned IPA backed by transparent hugepages.
Fixes: a80868f398554842b14 ("KVM: arm/arm64: Enforce PTE mappings at
stage2 when needed") Reported-by: Eric Auger <eric.auger@redhat.com> Cc:
Marc Zyngier <marc.zyngier@arm.com> Cc: Chirstoffer Dall
<christoffer.dall@arm.com> Cc: Zenghui Yu <yuzenghui@huawei.com> Cc:
Zheng Xiang <zhengxiang9@huawei.com> Cc: Andrew Murray
<andrew.murray@arm.com> Cc: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Signed-off-by:
Marc Zyngier <marc.zyngier@arm.com>
The file was modifiedvirt/kvm/arm/mmu.c (diff)
Commit b82d6c1f8f8288f744a9dcc16cd3085d535decca by kvalo
mwifiex: Make resume actually do something useful again on SDIO cards
The commit fc3a2fcaa1ba ("mwifiex: use atomic bitops to represent
adapter status variables") had a fairly straightforward bug in it.  It
contained this bit of diff:
- if (!adapter->is_suspended) {
+ if (test_bit(MWIFIEX_IS_SUSPENDED, &adapter->work_flags)) {
As you can see the patch missed the "!" when converting to the atomic
bitops.  This meant that the resume hasn't done anything at all since
that commit landed and suspend/resume for mwifiex SDIO cards has been
totally broken.
After fixing this mwifiex suspend/resume appears to work again, at least
with the simple testing I've done.
Fixes: fc3a2fcaa1ba ("mwifiex: use atomic bitops to represent adapter
status variables") Cc: <stable@vger.kernel.org> Signed-off-by: Douglas
Anderson <dianders@chromium.org> Reviewed-by: Brian Norris
<briannorris@chromium.org> Signed-off-by: Kalle Valo
<kvalo@codeaurora.org>
The file was modifieddrivers/net/wireless/marvell/mwifiex/sdio.c (diff)
Commit a3d46aea46f99d134b4e0726e4826b824c3e5980 by dsterba
btrfs: Switch memory allocations in async csum calculation path to
kvmalloc
Recent multi-page biovec rework allowed creation of bios that can span
large regions - up to 128 megabytes in the case of btrfs. OTOH btrfs'
submission path currently allocates a contiguous array to store the
checksums for every bio submitted. This means we can request up to
(128mb / BTRFS_SECTOR_SIZE) * 4 bytes + 32bytes of memory from kmalloc.
On busy systems with possibly fragmented memory said kmalloc can fail
which will trigger BUG_ON due to improper error handling IO submission
context in btrfs.
Until error handling is improved or bios in btrfs limited to a more
manageable size (e.g. 1m) let's use kvmalloc to fallback to vmalloc for
such large allocations. There is no hard requirement that the memory
allocated for checksums during IO submission has to be contiguous, but
this is a simple fix that does not require several non-contiguous
allocations.
For small writes this is unlikely to have any visible effect since
kmalloc will still satisfy allocation requests as usual. For larger
requests the code will just fallback to vmalloc.
We've performed evaluation on several workload types and there was no
significant difference kmalloc vs kvmalloc.
Signed-off-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: David
Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
The file was modifiedfs/btrfs/file-item.c (diff)
The file was modifiedfs/btrfs/ordered-data.c (diff)
Commit 6bc210003dff7b789efae5bb02a0320dc24dd416 by marc.zyngier
KVM: arm/arm64: Don't emulate virtual timers on userspace ioctls
When a VCPU never runs before a guest exists, but we set timer registers
up via ioctls, the associated hrtimer might never get cancelled.
Since we moved vcpu_load/put into the arch-specific implementations and
only have load/put for KVM_RUN, we won't ever have a scheduled hrtimer
for emulating a timer when modifying the timer state via an ioctl from
user space.  All we need to do is make sure that we pick up the right
state when we load the timer state next time userspace calls KVM_RUN
again.
We also do not need to worry about this interacting with the bg_timer,
because if we were in WFI from the guest, and somehow ended up in a
kvm_arm_timer_set_reg, it means that:
1. the VCPU thread has received a signal,
2. we have called vcpu_load when being scheduled in again,
3. we have called vcpu_put when we returned to userspace for it to issue
   another ioctl
And therefore will not have a bg_timer programmed and the event is
treated as a spurious wakeup from WFI if userspace decides to run the
vcpu again even if there are not virtual interrupts.
This fixes stray virtual timer interrupts triggered by an expiring
hrtimer, which happens after a failed live migration, for instance.
Fixes: bee038a674875 ("KVM: arm/arm64: Rework the timer code to use a
timer_map") Signed-off-by: Christoffer Dall <christoffer.dall@arm.com>
Reported-by: Andre Przywara <andre.przywara@arm.com> Tested-by: Andre
Przywara <andre.przywara@arm.com> Signed-off-by: Andre Przywara
<andre.przywara@arm.com> Signed-off-by: Marc Zyngier
<marc.zyngier@arm.com>
The file was modifiedvirt/kvm/arm/arch_timer.c (diff)
Commit 2557fabd6e29f349bfa0ac13f38ac98aa5eafc74 by jgg
RDMA/hns: Bugfix for mapping user db
When the maximum send wr delivered by the user is zero, the qp does not
have a sq.
When allocating the sq db buffer to store the user sq pi pointer and map
it to the kernel mode, max_send_wr is used as the trigger condition,
while the kernel does not consider the max_send_wr trigger condition
when mapmping db. It will cause sq record doorbell map fail and create
qp fail.
The failed print information as follows:
hns3 0000:7d:00.1: Send cmd: tail - 418, opcode - 0x8504, flag -
0x0011, retval - 0x0000
hns3 0000:7d:00.1: Send cmd: 0xe59dc000 0x00000000 0x00000000 0x00000000
0x00000116 0x0000ffff
hns3 0000:7d:00.1: sq record doorbell map failed!
hns3 0000:7d:00.1: Create RC QP failed
Fixes: 0425e3e6e0c7 ("RDMA/hns: Support flush cqe for hip08 in kernel
space") Signed-off-by: Lijun Ou <oulijun@huawei.com> Signed-off-by:
Jason Gunthorpe <jgg@mellanox.com>
The file was modifieddrivers/infiniband/hw/hns/hns_roce_qp.c (diff)
Commit b88c9f4129dcec941e5a26508e991c08051ed1ac by sboyd
clk: Add missing stubs for a few functions
Compilation fails if any of undeclared clk_set_*() functions are in use
and CONFIG_HAVE_CLK=n.
Reported-by: kbuild test robot <lkp@intel.com> Signed-off-by: Dmitry
Osipenko <digetx@gmail.com> Signed-off-by: Stephen Boyd
<sboyd@kernel.org>
The file was modifiedinclude/linux/clk.h (diff)
Commit a860fa7b96e1a1c974556327aa1aee852d434c21 by mingo
sched/numa: Fix a possible divide-by-zero
sched_clock_cpu() may not be consistent between CPUs. If a task migrates
to another CPU, then se.exec_start is set to that CPU's rq_clock_task()
by update_stats_curr_start(). Specifically, the new value might be
before the old value due to clock skew.
So then if in numa_get_avg_runtime() the expression:
  'now - p->last_task_numa_placement'
ends up as -1, then the divider '*period + 1' in task_numa_placement()
is 0 and things go bang. Similar to update_curr(), check if time goes
backwards to avoid this.
[ peterz: Wrote new changelog. ]
[ mingo: Tweaked the code comment. ]
Signed-off-by: Xie XiuQi <xiexiuqi@huawei.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> Cc:
cj.chengjian@huawei.com Cc: <stable@vger.kernel.org> Link:
http://lkml.kernel.org/r/20190425080016.GX11158@hirez.programming.kicks-ass.net
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/sched/fair.c (diff)
Commit 9a8f612ca0d6a436e6471c9bed516d34a2cc626f by richard
mtd: rawnand: marvell: Clean the controller state before each operation
Since the migration of the driver to stop using the legacy
->select_chip() hook, there is nothing deselecting the target anymore,
thus the selection is not forced at the next access. Ensure the ND_RUN
bit and the interrupts are always in a clean state.
Cc: Daniel Mack <daniel@zonque.org> Cc: stable@vger.kernel.org Fixes:
b25251414f6e00 ("mtd: rawnand: marvell: Stop implementing
->select_chip()") Suggested-by: Boris Brezillon
<boris.brezillon@collabora.com> Signed-off-by: Miquel Raynal
<miquel.raynal@bootlin.com> Tested-by: Daniel Mack <daniel@zonque.org>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
The file was modifieddrivers/mtd/nand/raw/marvell_nand.c (diff)
Commit 349ced9984ff540ce74ca8a0b2e9b03dc434b9dd by sre
power: supply: sysfs: prevent endless uevent loop with
CONFIG_POWER_SUPPLY_DEBUG
Fix a similar endless event loop as was done in commit 8dcf32175b4e
("i2c: prevent endless uevent loop with CONFIG_I2C_DEBUG_CORE"):
  The culprit is the dev_dbg printk in the i2c uevent handler. If
this is activated (for instance by CONFIG_I2C_DEBUG_CORE) it results
in an endless loop with systemd-journald.
  This happens if user-space scans the system log and reads the uevent
file to get information about a newly created device, which seems
fair use to me. Unfortunately reading the "uevent" file uses the
same function that runs for creating the uevent for a new device,
generating the next syslog entry
Both CONFIG_I2C_DEBUG_CORE and CONFIG_POWER_SUPPLY_DEBUG were reported
in https://bugs.freedesktop.org/show_bug.cgi?id=76886 but only former
seems to have been fixed. Drop debug prints as it was done in I2C
subsystem to resolve the issue.
Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Cc: Chris Healy
<cphealy@gmail.com> Cc: linux-pm@vger.kernel.org Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
The file was modifieddrivers/power/supply/power_supply_sysfs.c (diff)
Commit 4ee0776760af03f181e6b80baf5fb1cc1a980f50 by keescook
selftests/seccomp: Prepare for exclusive seccomp flags
Some seccomp flags will become exclusive, so the selftest needs to be
adjusted to mask those out and test them individually for the "all
flags" tests.
Cc: stable@vger.kernel.org # v5.0+ Signed-off-by: Kees Cook
<keescook@chromium.org> Reviewed-by: Tycho Andersen <tycho@tycho.ws>
Acked-by: James Morris <jamorris@linux.microsoft.com>
The file was modifiedtools/testing/selftests/seccomp/seccomp_bpf.c (diff)
Commit 7a0df7fbc14505e2e2be19ed08654a09e1ed5bf6 by keescook
seccomp: Make NEW_LISTENER and TSYNC flags exclusive
As the comment notes, the return codes for TSYNC and NEW_LISTENER
conflict, because they both return positive values, one in the case of
success and one in the case of error. So, let's disallow both of these
flags together.
While this is technically a userspace break, all the users I know of are
still waiting on me to land this feature in libseccomp, so I think it'll
be safe. Also, at present my use case doesn't require TSYNC at all, so
this isn't a big deal to disallow. If someone wanted to support this, a
path forward would be to add a new flag like
TSYNC_AND_LISTENER_YES_I_UNDERSTAND_THAT_TSYNC_WILL_JUST_RETURN_EAGAIN,
but the use cases are so different I don't see it really happening.
Finally, it's worth noting that this does actually fix a UAF issue: at
the end of seccomp_set_mode_filter(), we have:
        if (flags & SECCOMP_FILTER_FLAG_NEW_LISTENER) {
               if (ret < 0) {
                       listener_f->private_data = NULL;
                       fput(listener_f);
                       put_unused_fd(listener);
               } else {
                       fd_install(listener, listener_f);
                       ret = listener;
               }
       } out_free:
       seccomp_filter_free(prepared);
But if ret > 0 because TSYNC raced, we'll install the listener fd and
then free the filter out from underneath it, causing a UAF when the task
closes it or dies. This patch also switches the condition to be simply
if (ret), so that if someone does add the flag mentioned above, they
won't have to remember to fix this too.
Reported-by: syzbot+b562969adb2e04af3442@syzkaller.appspotmail.com
Fixes: 6a21cc50f0c7 ("seccomp: add a return code to trap to userspace")
CC: stable@vger.kernel.org # v5.0+ Signed-off-by: Tycho Andersen
<tycho@tycho.ws> Signed-off-by: Kees Cook <keescook@chromium.org>
Acked-by: James Morris <jamorris@linux.microsoft.com>
The file was modifiedkernel/seccomp.c (diff)
Commit ecfc3fcabbb5291d1e61600a3dac6cdbfdb04cb1 by ast
MIPS: eBPF: Make ebpf_to_mips_reg() static
Fix sparse warning:
arch/mips/net/ebpf_jit.c:196:5: warning:
symbol 'ebpf_to_mips_reg' was not declared. Should it be static?
Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: YueHaibing
<yuehaibing@huawei.com> Acked-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by:
Alexei Starovoitov <ast@kernel.org>
The file was modifiedarch/mips/net/ebpf_jit.c (diff)
Commit 8694d8c1f82cccec9380e0d3720b84eee315dfb7 by ast
tools: bpftool: fix infinite loop in map create
"bpftool map create" has an infinite loop on "while (argc)". The error
case is missing.
Symptoms: when forgetting to type the keyword 'type' in front of 'hash':
$ sudo bpftool map create /sys/fs/bpf/dir/foobar hash key 8 value 8
entries 128
(infinite loop, taking all the CPU)
^C
After the patch:
$ sudo bpftool map create /sys/fs/bpf/dir/foobar hash key 8 value 8
entries 128 Error: unknown arg hash
Fixes: 0b592b5a01be ("tools: bpftool: add map create command")
Signed-off-by: Alban Crequy <alban@kinvolk.io> Reviewed-by: Quentin
Monnet <quentin.monnet@netronome.com> Acked-by: Song Liu
<songliubraving@fb.com> Reviewed-by: Jakub Kicinski
<jakub.kicinski@netronome.com> Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net> Signed-off-by: Alexei Starovoitov
<ast@kernel.org>
The file was modifiedtools/bpf/bpftool/map.c (diff)
Commit 39391377f8ecf2fa4569e2fede624dc091bcd859 by ast
libbpf: add binary to gitignore
Some binaries are generated when building libbpf from tools/lib/bpf/,
namely libbpf.so.0.0.2 and libbpf.so.0. Add them to the local
.gitignore.
Signed-off-by: Matteo Croce <mcroce@redhat.com> Reviewed-by: Jakub
Kicinski <jakub.kicinski@netronome.com> Acked-by: Song Liu
<songliubraving@fb.com> Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net> Signed-off-by: Alexei Starovoitov
<ast@kernel.org>
The file was modifiedtools/lib/bpf/.gitignore (diff)
Commit c6a9efa1d8353d8960d152e7d469d952b01495c0 by ast
bpf: mark registers in all frames after pkt/null checks
In case of a null check on a pointer inside a subprog, we should mark
all registers with this pointer as either safe or unknown, in both the
current and previous frames.  Currently, only spilled registers and
registers in the current frame are marked.  Packet bound checks in
subprogs have the same issue.  This patch fixes it to mark registers in
previous frames as well.
A good reproducer for null checks looks as follow:
1: ptr = bpf_map_lookup_elem(map, &key); 2: ret = subprog(ptr) { 3: 
return ptr != NULL; 4: } 5: if (ret) 6:   value = *ptr;
With the above, the verifier will complain on line 6 because it sees ptr
as map_value_or_null despite the null check in subprog 1.
Note that this patch fixes another resulting bug when using
bpf_sk_release():
1: sk = bpf_sk_lookup_tcp(...); 2: subprog(sk) { 3:   if (sk) 4:   
bpf_sk_release(sk); 5: } 6: if (!sk) 7:   return 0; 8: return 1;
In the above, mark_ptr_or_null_regs will warn on line 6 because it will
try to free the reference state, even though it was already freed on
line 3.
Fixes: f4d7e40a5b71 ("bpf: introduce function calls (verification)")
Signed-off-by: Paul Chaignon <paul.chaignon@orange.com> Signed-off-by:
Alexei Starovoitov <ast@kernel.org>
The file was modifiedkernel/bpf/verifier.c (diff)
Commit 6dd7f14080473b655c247863e61b7c34424f0c83 by ast
selftests/bpf: test cases for pkt/null checks in subprogs
The first test case, for pointer null checks, is equivalent to the
following pseudo-code.  It checks that the verifier does not complain on
line 6 and recognizes that ptr isn't null.
1: ptr = bpf_map_lookup_elem(map, &key); 2: ret = subprog(ptr) { 3: 
return ptr != NULL; 4: } 5: if (ret) 6:   value = *ptr;
The second test case, for packet bound checks, is equivalent to the
following pseudo-code.  It checks that the verifier does not complain on
line 7 and recognizes that the packet is at least 1 byte long.
1: pkt_end = ctx.pkt_end; 2: ptr = ctx.pkt + 8; 3: ret = subprog(ptr,
pkt_end) { 4:   return ptr <= pkt_end; 5: } 6: if (ret) 7:   value =
*(u8 *)ctx.pkt;
Signed-off-by: Paul Chaignon <paul.chaignon@orange.com> Signed-off-by:
Alexei Starovoitov <ast@kernel.org>
The file was modifiedtools/testing/selftests/bpf/verifier/calls.c (diff)
The file was modifiedtools/testing/selftests/bpf/verifier/direct_packet_access.c (diff)
Commit 0edd6b64d1939e9e9168ff27947995bb7751db5d by ast
bpf: Fix preempt_enable_no_resched() abuse
Unless the very next line is schedule(), or implies it, one must not use
preempt_enable_no_resched(). It can cause a preemption to go missing and
thereby cause arbitrary delays, breaking the PREEMPT=y invariant.
Cc: Roman Gushchin <guro@fb.com> Cc: Alexei Starovoitov <ast@kernel.org>
Cc: Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: Peter Zijlstra
(Intel) <peterz@infradead.org> Signed-off-by: Alexei Starovoitov
<ast@kernel.org>
The file was modifiedinclude/linux/bpf.h (diff)
Commit 5bb5c3a3ac102158b799bf5eda871223aa5e9c25 by vkoul
dmaengine: mediatek-cqdma: fix wrong register usage in mtk_cqdma_start
This patch fixes wrong register usage in the mtk_cqdma_start. The
destination register should be MTK_CQDMA_DST2 instead.
Fixes: b1f01e48df5a ("dmaengine: mediatek: Add MediaTek Command-Queue
DMA controller for MT6765 SoC") Signed-off-by: Shun-Chih Yu
<shun-chih.yu@mediatek.com> Cc: stable@vger.kernel.org Signed-off-by:
Vinod Koul <vkoul@kernel.org>
The file was modifieddrivers/dma/mediatek/mtk-cqdma.c (diff)
Commit c1c477217882c610a2ba0268f5faf36c9c092528 by davem
l2tp: use rcu_dereference_sk_user_data() in l2tp_udp_encap_recv()
Canonical way to fetch sk_user_data from an encap_rcv() handler called
from UDP stack in rcu protected section is to use
rcu_dereference_sk_user_data(), otherwise compiler might read it
multiple times.
Fixes: d00fa9adc528 ("il2tp: fix races with tunnel socket close")
Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: James Chapman
<jchapman@katalix.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/l2tp/l2tp_core.c (diff)
Commit 56c5bc1849de1311eda5bc506bddad504bfd14fc by davem
net: ethernet: stmmac: manage the get_irq probe defer case
Manage the -EPROBE_DEFER error case for "stm32_pwr_wakeup"  IRQ.
Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com> Acked-by:
Alexandre TORGUE <alexandre.torgue@st.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/dwmac-stm32.c (diff)
Commit 88ef66a28391ea7b624bfb7508a5b015c13b28f3 by davem
qmi_wwan: new Wistron, ZTE and D-Link devices
Adding device entries found in vendor modified versions of this driver.
Function maps for some of the devices follow:
WNC D16Q1, D16Q5, D18Q1 LTE CAT3 module (1435:0918)
MI_00 Qualcomm HS-USB Diagnostics MI_01 Android Debug interface MI_02
Qualcomm HS-USB Modem MI_03 Qualcomm Wireless HS-USB Ethernet Adapter
MI_04 Qualcomm Wireless HS-USB Ethernet Adapter MI_05 Qualcomm Wireless
HS-USB Ethernet Adapter MI_06 USB Mass Storage Device
T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=1435 ProdID=0918 Rev= 2.32
S:  Manufacturer=Android
S:  Product=Android
S:  SerialNumber=0123456789ABCDEF
C:* #Ifs= 7 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
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= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
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=option
E:  Ad=84(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
E:  Ad=83(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=ff Prot=ff Driver=qmi_wwan
E:  Ad=86(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
E:  Ad=85(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=qmi_wwan
E:  Ad=88(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
E:  Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E:  Ad=8a(I) Atr=03(Int.) MxPS=  64 Ivl=32ms
E:  Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
WNC D18 LTE CAT3 module (1435:d182)
MI_00 Qualcomm HS-USB Diagnostics MI_01 Androd Debug interface MI_02
Qualcomm HS-USB Modem MI_03 Qualcomm HS-USB NMEA MI_04 Qualcomm Wireless
HS-USB Ethernet Adapter MI_05 Qualcomm Wireless HS-USB Ethernet Adapter
MI_06 USB Mass Storage Device
ZM8510/ZM8620/ME3960 (19d2:0396)
MI_00 ZTE Mobile Broadband Diagnostics Port MI_01 ZTE Mobile Broadband
AT Port MI_02 ZTE Mobile Broadband Modem MI_03 ZTE Mobile Broadband NDIS
Port (qmi_wwan) MI_04 ZTE Mobile Broadband ADB Port
ME3620_X (19d2:1432)
MI_00 ZTE Diagnostics Device MI_01 ZTE UI AT Interface MI_02 ZTE Modem
Device MI_03 ZTE Mobile Broadband Network Adapter MI_04 ZTE Composite
ADB Interface
Reported-by: Lars Melin <larsm17@gmail.com> Signed-off-by: Bjørn Mork
<bjorn@mork.no> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/usb/qmi_wwan.c (diff)
Commit b987222654f84f7b4ca95b3a55eca784cb30235b by rostedt
tracing: Fix buffer_ref pipe ops
This fixes multiple issues in buffer_pipe_buf_ops:
- The ->steal() handler must not return zero unless the pipe buffer has
  the only reference to the page. But generic_pipe_buf_steal() assumes
  that every reference to the pipe is tracked by the page's refcount,
  which isn't true for these buffers - buffer_pipe_buf_get(), which
  duplicates a buffer, doesn't touch the page's refcount.
  Fix it by using generic_pipe_buf_nosteal(), which refuses every
  attempted theft. It should be easy to actually support ->steal, but
the
  only current users of pipe_buf_steal() are the virtio console and
FUSE,
  and they also only use it as an optimization. So it's probably not
worth
  the effort.
- The ->get() and ->release() handlers can be invoked concurrently on
pipe
  buffers backed by the same struct buffer_ref. Make them safe against
  concurrency by using refcount_t.
- The pointers stored in ->private were only zeroed out when the last
  reference to the buffer_ref was dropped. As far as I know, this
  shouldn't be necessary anyway, but if we do it, let's always do it.
Link: http://lkml.kernel.org/r/20190404215925.253531-1-jannh@google.com
Cc: Ingo Molnar <mingo@redhat.com> Cc: Masami Hiramatsu
<mhiramat@kernel.org> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc:
stable@vger.kernel.org Fixes: 73a757e63114d ("ring-buffer: Return reader
page back into existing ring buffer") Signed-off-by: Jann Horn
<jannh@google.com> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org>
The file was modifiedfs/splice.c (diff)
The file was modifiedinclude/linux/pipe_fs_i.h (diff)
The file was modifiedkernel/trace/trace.c (diff)
Commit 91862cc7867bba4ee5c8fcf0ca2f1d30427b6129 by rostedt
tracing: Fix a memory leak by early error exit in trace_pid_write()
In trace_pid_write(), the buffer for trace parser is allocated through
kmalloc() in trace_parser_get_init(). Later on, after the buffer is
used, it is then freed through kfree() in trace_parser_put(). However,
it is possible that trace_pid_write() is terminated due to unexpected
errors, e.g., ENOMEM. In that case, the allocated buffer will not be
freed, which is a memory leak bug.
To fix this issue, free the allocated buffer when an error is
encountered.
Link:
http://lkml.kernel.org/r/1555726979-15633-1-git-send-email-wang6495@umn.edu
Fixes: f4d34a87e9c10 ("tracing: Use pid bitmap instead of a pid array
for set_event_pid") Cc: stable@vger.kernel.org Signed-off-by: Wenwen
Wang <wang6495@umn.edu> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org>
The file was modifiedkernel/trace/trace.c (diff)
Commit d6097c9e4454adf1f8f2c9547c2fa6060d55d952 by rostedt
trace: Fix preempt_enable_no_resched() abuse
Unless the very next line is schedule(), or implies it, one must not use
preempt_enable_no_resched(). It can cause a preemption to go missing and
thereby cause arbitrary delays, breaking the PREEMPT=y invariant.
Link:
http://lkml.kernel.org/r/20190423200318.GY14281@hirez.programming.kicks-ass.net
Cc: Waiman Long <longman@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Ingo Molnar <mingo@redhat.com> Cc:
Will Deacon <will.deacon@arm.com> Cc: Thomas Gleixner
<tglx@linutronix.de> Cc: the arch/x86 maintainers <x86@kernel.org> Cc:
Davidlohr Bueso <dave@stgolabs.net> Cc: Tim Chen
<tim.c.chen@linux.intel.com> Cc: huang ying
<huang.ying.caritas@gmail.com> Cc: Roman Gushchin <guro@fb.com> Cc:
Alexei Starovoitov <ast@kernel.org> Cc: Daniel Borkmann
<daniel@iogearbox.net> Cc: stable@vger.kernel.org Fixes: 2c2d7329d8af
("tracing/ftrace: use preempt_enable_no_resched_notrace in
ring_buffer_time_stamp()") Signed-off-by: Peter Zijlstra (Intel)
<peterz@infradead.org> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org>
The file was modifiedkernel/trace/ring_buffer.c (diff)
Commit 4e43df38a2e6c876d3c8ecc4196ed67a895c425d by davem
genetlink: use idr_alloc_cyclic for family->id assignment
When allocating the next family->id it makes more sense to use
idr_alloc_cyclic to avoid re-using a previously used family->id as much
as possible.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/netlink/genetlink.c (diff)
Commit fdfdf86720a34527f777cbe0d8599bf0528fa146 by davem
net: phy: marvell: Fix buffer overrun with stats counters
marvell_get_sset_count() returns how many statistics counters there are.
If the PHY supports fibre, there are 3, otherwise two.
marvell_get_strings() does not make this distinction, and always returns
3 strings. This then often results in writing past the end of the buffer
for the strings.
Fixes: 2170fef78a40 ("Marvell phy: add field to get errors from fiber
link.") Signed-off-by: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Florian
Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/phy/marvell.c (diff)
Commit 89c02e69fc5245f8a2f34b58b42d43a737af1a5e by torvalds
mm/memory_hotplug.c: drop memory device reference after
find_memory_block()
Right now we are using find_memory_block() to get the node id for the
pfn range to online.  We are missing to drop a reference to the memory
block device.  While the device still gets unregistered via
device_unregister(), resulting in no user visible problem, the device is
never released via device_release(), resulting in a memory leak.  Fix
that by properly using a put_device().
Link: http://lkml.kernel.org/r/20190411110955.1430-1-david@redhat.com
Fixes: d0dc12e86b31 ("mm/memory_hotplug: optimize memory hotplug")
Signed-off-by: David Hildenbrand <david@redhat.com> Reviewed-by: Oscar
Salvador <osalvador@suse.de> Reviewed-by: Wei Yang
<richard.weiyang@gmail.com> Acked-by: Michal Hocko <mhocko@suse.com>
Acked-by: Pankaj Gupta <pagupta@redhat.com> Cc: David Hildenbrand
<david@redhat.com> Cc: Pavel Tatashin <pasha.tatashin@soleen.com> Cc:
Qian Cai <cai@lca.pw> Cc: Arun KS <arunks@codeaurora.org> Cc: Mathieu
Malaterre <malat@debian.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/memory_hotplug.c (diff)
Commit e153abc0739ff77bd89c9ba1688cdb963464af97 by torvalds
zram: pass down the bvec we need to read into in the work struct
When scheduling work item to read page we need to pass down the proper
bvec struct which points to the page to read into.  Before this patch it
uses a randomly initialized bvec (only if PAGE_SIZE != 4096) which is
wrong.
Note that without this patch on arch/kernel where PAGE_SIZE != 4096
userspace could read random memory through a zram block device (thought
userspace probably would have no control on the address being read).
Link: http://lkml.kernel.org/r/20190408183219.26377-1-jglisse@redhat.com
Signed-off-by: Jérôme Glisse <jglisse@redhat.com> Reviewed-by: Andrew
Morton <akpm@linux-foundation.org> Reviewed-by: Sergey Senozhatsky
<sergey.senozhatsky@gmail.com> Acked-by: Minchan Kim
<minchan@kernel.org> Cc: Nitin Gupta <ngupta@vflare.org> Cc:
<stable@vger.kernel.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifieddrivers/block/zram/zram_drv.c (diff)
Commit ae3d6a323347940f0548bbb4b17f0bb2e9164169 by torvalds
lib/Kconfig.debug: fix build error without CONFIG_BLOCK
If CONFIG_TEST_KMOD is set to M, while CONFIG_BLOCK is not set, XFS and
BTRFS can not be compiled successly.
Link:
http://lkml.kernel.org/r/20190410075434.35220-1-yuehaibing@huawei.com
Fixes: d9c6a72d6fa2 ("kmod: add test driver to stress test the module
loader") Signed-off-by: YueHaibing <yuehaibing@huawei.com> Reported-by:
Hulk Robot <hulkci@huawei.com> Reviewed-by: Kees Cook
<keescook@chromium.org> Cc: Masahiro Yamada
<yamada.masahiro@socionext.com> Cc: Petr Mladek <pmladek@suse.com> Cc:
Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Matthew Wilcox
<willy@infradead.org> Cc: Joe Lawrence <joe.lawrence@redhat.com> Cc:
Robin Murphy <robin.murphy@arm.com> Cc: Luis Chamberlain
<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>
The file was modifiedlib/Kconfig.debug (diff)
Commit e789803507b2e154ed452865ee981b038654e98d by torvalds
lib/test_vmalloc.c: do not create cpumask_t variable on stack
On my "Intel(R) Xeon(R) W-2135 CPU @ 3.70GHz" system(12 CPUs) i get the
warning from the compiler about frame size:
   warning: the frame size of 1096 bytes is larger than 1024 bytes
[-Wframe-larger-than=]
the size of cpumask_t depends on number of CPUs, therefore just make use
of cpumask_of() in set_cpus_allowed_ptr() as a second argument.
Link: http://lkml.kernel.org/r/20190418193925.9361-1-urezki@gmail.com
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com> Reviewed-by:
Andrew Morton <akpm@linux-foundation.org> Reviewed-by: Roman Gushchin
<guro@fb.com> Cc: Uladzislau Rezki <urezki@gmail.com> Cc: Michal Hocko
<mhocko@suse.com> Cc: Matthew Wilcox <willy@infradead.org> Cc: Thomas
Garnier <thgarnie@google.com> Cc: Oleksiy Avramchenko
<oleksiy.avramchenko@sonymobile.com> Cc: Steven Rostedt
<rostedt@goodmis.org> Cc: Joel Fernandes <joelaf@google.com> Cc: Thomas
Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: Tejun
Heo <tj@kernel.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedlib/test_vmalloc.c (diff)
Commit 24512228b7a3f412b5a51f189df302616b021c33 by torvalds
mm: do not boost watermarks to avoid fragmentation for the DISCONTIG
memory model
Mikulas Patocka reported that commit 1c30844d2dfe ("mm: reclaim small
amounts of memory when an external fragmentation event occurs") "broke"
memory management on parisc.
The machine is not NUMA but the DISCONTIG model creates three pgdats
even though it's a UMA machine for the following ranges
        0) Start 0x0000000000000000 End 0x000000003fffffff Size   1024
MB
       1) Start 0x0000000100000000 End 0x00000001bfdfffff Size   3070 MB
       2) Start 0x0000004040000000 End 0x00000040ffffffff Size   3072 MB
Mikulas reported:
With the patch 1c30844d2, the kernel will incorrectly reclaim the
first zone when it fills up, ignoring the fact that there are two
completely free zones. Basiscally, it limits cache size to 1GiB.
For example, if I run:
# dd if=/dev/sda of=/dev/null bs=1M count=2048
- with the proper kernel, there should be "Buffers - 2GiB"
when this command finishes. With the patch 1c30844d2, buffers
will consume just 1GiB or slightly more, because the kernel was
incorrectly reclaiming them.
The page allocator and reclaim makes assumptions that pgdats really
represent NUMA nodes and zones represent ranges and makes decisions on
that basis.  Watermark boosting for small pgdats leads to unexpected
results even though this would have behaved reasonably on SPARSEMEM.
DISCONTIG is essentially deprecated and even parisc plans to move to
SPARSEMEM so there is no need to be fancy, this patch simply disables
watermark boosting by default on DISCONTIGMEM.
Link:
http://lkml.kernel.org/r/20190419094335.GJ18914@techsingularity.net
Fixes: 1c30844d2dfe ("mm: reclaim small amounts of memory when an
external fragmentation event occurs") Signed-off-by: Mel Gorman
<mgorman@techsingularity.net> Reported-by: Mikulas Patocka
<mpatocka@redhat.com> Tested-by: Mikulas Patocka <mpatocka@redhat.com>
Acked-by: Vlastimil Babka <vbabka@suse.cz> Cc: James Bottomley
<James.Bottomley@hansenpartnership.com> Cc: Matthew Wilcox
<willy@infradead.org> Cc: <stable@vger.kernel.org> Signed-off-by: Andrew
Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedDocumentation/sysctl/vm.txt (diff)
The file was modifiedmm/page_alloc.c (diff)
Commit ee8ab0eeb49bd3982090c8f14dc9cc65bcd13c5c by torvalds
mm, page_alloc: always use a captured page regardless of compaction
result
During the development of commit 5e1f0f098b46 ("mm, compaction: capture
a page under direct compaction"), a paranoid check was added to ensure
that if a captured page was available after compaction that it was
consistent with the final state of compaction.  The intent was to catch
serious programming bugs such as using a stale page pointer and causing
corruption problems.
However, it is possible to get a captured page even if compaction was
unsuccessful if an interrupt triggered and happened to free pages in
interrupt context that got merged into a suitable high-order page.  It's
highly unlikely but Li Wang did report the following warning on s390
occuring when testing OOM handling.  Note that the warning is slightly
edited for clarity.
  WARNING: CPU: 0 PID: 9783 at mm/page_alloc.c:3777
__alloc_pages_direct_compact+0x182/0x190
Modules linked in: rpcsec_gss_krb5 auth_rpcgss nfsv4 dns_resolver nfs
   lockd grace fscache sunrpc pkey ghash_s390 prng xts aes_s390
   des_s390 des_generic sha512_s390 zcrypt_cex4 zcrypt vmur binfmt_misc
   ip_tables xfs libcrc32c dasd_fba_mod qeth_l2 dasd_eckd_mod dasd_mod
   qeth qdio lcs ctcm ccwgroup fsm dm_mirror dm_region_hash dm_log
   dm_mod
CPU: 0 PID: 9783 Comm: copy.sh Kdump: loaded Not tainted 5.1.0-rc 5 #1
This patch simply removes the check entirely instead of trying to be
clever about pages freed from interrupt context.  If a serious
programming error was introduced, it is highly likely to be caught by
prep_new_page() instead.
Link:
http://lkml.kernel.org/r/20190419085133.GH18914@techsingularity.net
Fixes: 5e1f0f098b46 ("mm, compaction: capture a page under direct
compaction") Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
Reported-by: Li Wang <liwang@redhat.com> Acked-by: Vlastimil Babka
<vbabka@suse.cz> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/page_alloc.c (diff)
Commit 8139ad043d632c0e9e12d760068a7a8e91659aa1 by torvalds
mm/page_alloc.c: avoid potential NULL pointer dereference
ac.preferred_zoneref->zone passed to alloc_flags_nofragment() can be
NULL.
'zone' pointer unconditionally derefernced in alloc_flags_nofragment().
Bail out on NULL zone to avoid potential crash.  Currently we don't see
any crashes only because alloc_flags_nofragment() has another bug which
allows compiler to optimize away all accesses to 'zone'.
Link:
http://lkml.kernel.org/r/20190423120806.3503-1-aryabinin@virtuozzo.com
Fixes: 6bb154504f8b ("mm, page_alloc: spread allocations across zones
before introducing fragmentation") Signed-off-by: Andrey Ryabinin
<aryabinin@virtuozzo.com> Acked-by: Mel Gorman
<mgorman@techsingularity.net> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/page_alloc.c (diff)
Commit 8118b82eb756e271929697e8ada5f637dc443af1 by torvalds
mm/page_alloc.c: fix never set ALLOC_NOFRAGMENT flag
Commit 0a79cdad5eb2 ("mm: use alloc_flags to record if kswapd can wake")
removed setting of the ALLOC_NOFRAGMENT flag.  Bring it back.
The runtime effect is that ALLOC_NOFRAGMENT behaviour is restored so
that allocations are spread across local zones to avoid fragmentation
due to mixing pageblocks as long as possible.
Link:
http://lkml.kernel.org/r/20190423120806.3503-2-aryabinin@virtuozzo.com
Fixes: 0a79cdad5eb2 ("mm: use alloc_flags to record if kswapd can wake")
Signed-off-by: Andrey Ryabinin <aryabinin@virtuozzo.com> Acked-by: Mel
Gorman <mgorman@techsingularity.net> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/page_alloc.c (diff)
Commit 89189557b47b35683a27c80ee78aef18248eefb4 by torvalds
fs/proc/proc_sysctl.c: Fix a NULL pointer dereference
Syzkaller report this:
  sysctl could not get directory: /net//bridge -12
kasan: CONFIG_KASAN_INLINE enabled
kasan: GPF could be caused by NULL-ptr deref or user memory access
general protection fault: 0000 [#1] SMP KASAN PTI
CPU: 1 PID: 7027 Comm: syz-executor.0 Tainted: G         C      
5.1.0-rc3+ #8
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.10.2-1ubuntu1 04/01/2014
RIP: 0010:__write_once_size include/linux/compiler.h:220 [inline]
RIP: 0010:__rb_change_child include/linux/rbtree_augmented.h:144
[inline]
RIP: 0010:__rb_erase_augmented include/linux/rbtree_augmented.h:186
[inline]
RIP: 0010:rb_erase+0x5f4/0x19f0 lib/rbtree.c:459
Code: 00 0f 85 60 13 00 00 48 89 1a 48 83 c4 18 5b 5d 41 5c 41 5d 41 5e
41 5f c3 48 89 f2 48 b8 00 00 00 00 00 fc ff df 48 c1 ea 03 <80> 3c 02
00 0f 85 75 0c 00 00 4d 85 ed 4c 89 2e 74 ce 4c 89 ea 48
RSP: 0018:ffff8881bb507778 EFLAGS: 00010206
RAX: dffffc0000000000 RBX: ffff8881f224b5b8 RCX: ffffffff818f3f6a
RDX: 000000000000000a RSI: 0000000000000050 RDI: ffff8881f224b568
RBP: 0000000000000000 R08: ffffed10376a0ef4 R09: ffffed10376a0ef4
R10: 0000000000000001 R11: ffffed10376a0ef4 R12: ffff8881f224b558
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
FS:  00007f3e7ce13700(0000) GS:ffff8881f7300000(0000)
knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007fd60fbe9398 CR3: 00000001cb55c001 CR4: 00000000007606e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
PKRU: 55555554
Call Trace:
  erase_entry fs/proc/proc_sysctl.c:178 [inline]
  erase_header+0xe3/0x160 fs/proc/proc_sysctl.c:207
  start_unregistering fs/proc/proc_sysctl.c:331 [inline]
  drop_sysctl_table+0x558/0x880 fs/proc/proc_sysctl.c:1631
  get_subdir fs/proc/proc_sysctl.c:1022 [inline]
  __register_sysctl_table+0xd65/0x1090 fs/proc/proc_sysctl.c:1335
  br_netfilter_init+0x68/0x1000 [br_netfilter]
  do_one_initcall+0xbc/0x47d init/main.c:901
  do_init_module+0x1b5/0x547 kernel/module.c:3456
  load_module+0x6405/0x8c10 kernel/module.c:3804
  __do_sys_finit_module+0x162/0x190 kernel/module.c:3898
  do_syscall_64+0x9f/0x450 arch/x86/entry/common.c:290
  entry_SYSCALL_64_after_hwframe+0x49/0xbe
Modules linked in: br_netfilter(+) backlight comedi(C) hid_sensor_hub
max3100 ti_ads8688 udc_core fddi snd_mona leds_gpio rc_streamzap mtd
pata_netcell nf_log_common rc_winfast udp_tunnel snd_usbmidi_lib
snd_usb_toneport snd_usb_line6 snd_rawmidi snd_seq_device snd_hwdep
videobuf2_v4l2 videobuf2_common videodev media videobuf2_vmalloc
videobuf2_memops rc_gadmei_rm008z 8250_of smm665 hid_tmff hid_saitek
hwmon_vid rc_ati_tv_wonder_hd_600 rc_core pata_pdc202xx_old dn_rtmsg
as3722 ad714x_i2c ad714x snd_soc_cs4265 hid_kensington
panel_ilitek_ili9322 drm drm_panel_orientation_quirks ipack cdc_phonet
usbcore phonet hid_jabra hid extcon_arizona can_dev
industrialio_triggered_buffer kfifo_buf industrialio adm1031
i2c_mux_ltc4306 i2c_mux ipmi_msghandler mlxsw_core snd_soc_cs35l34
snd_soc_core snd_pcm_dmaengine snd_pcm snd_timer ac97_bus snd_compress
snd soundcore gpio_da9055 uio ecdh_generic mdio_thunder of_mdio
fixed_phy libphy mdio_cavium iptable_security iptable_raw iptable_mangle
  iptable_nat 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 vxcan batman_adv cfg80211 rfkill chnl_net caif nlmon
dummy team bonding vcan bridge stp llc ip6_gre gre ip6_tunnel tunnel6
tun joydev mousedev ppdev tpm kvm_intel kvm irqbypass crct10dif_pclmul
crc32_pclmul crc32c_intel ghash_clmulni_intel aesni_intel
ide_pci_generic piix aes_x86_64 crypto_simd cryptd ide_core glue_helper
input_leds psmouse intel_agp intel_gtt serio_raw ata_generic i2c_piix4
agpgart pata_acpi parport_pc parport floppy rtc_cmos sch_fq_codel
ip_tables x_tables sha1_ssse3 sha1_generic ipv6 [last unloaded:
br_netfilter]
Dumping ftrace buffer:
    (ftrace buffer empty)
---[ end trace 68741688d5fbfe85 ]---
commit 23da9588037e ("fs/proc/proc_sysctl.c: fix NULL pointer
dereference in put_links") forgot to handle start_unregistering() case,
while header->parent is NULL, it calls erase_header() and as seen in the
above syzkaller call trace, accessing &header->parent->root will trigger
a NULL pointer dereference.
As that commit explained, there is also no need to call
start_unregistering() if header->parent is NULL.
Link:
http://lkml.kernel.org/r/20190409153622.28112-1-yuehaibing@huawei.com
Fixes: 23da9588037e ("fs/proc/proc_sysctl.c: fix NULL pointer
dereference in put_links") 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> Reviewed-by: Kees Cook <keescook@chromium.org> Cc:
Luis Chamberlain <mcgrof@kernel.org> Cc: Alexey Dobriyan
<adobriyan@gmail.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: "Eric W.
Biederman" <ebiederm@xmission.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedfs/proc/proc_sysctl.c (diff)
Commit 3a349763cf11e63534b8f2d302f2d0c790566497 by dmitry.torokhov
Input: synaptics-rmi4 - write config register values to the right offset
Currently any changed config register values don't take effect, as the
function to write them back is called with the wrong register offset.
Fixes: ff8f83708b3e (Input: synaptics-rmi4 - add support for 2D
                    sensors and F11) Signed-off-by: Lucas Stach
<l.stach@pengutronix.de> Reviewed-by: Philipp Zabel
<p.zabel@pengutronix.de> Cc: stable@vger.kernel.org Signed-off-by:
Dmitry Torokhov <dmitry.torokhov@gmail.com>
The file was modifieddrivers/input/rmi4/rmi_f11.c (diff)
Commit baf76f0c58aec435a3a864075b8f6d8ee5d1f17e by torvalds
slip: make slhc_free() silently accept an error pointer
This way, slhc_free() accepts what slhc_init() returns, whether that is
an error or not.
In particular, the pattern in sl_alloc_bufs() is
        slcomp = slhc_init(16, 16);
       ...
       slhc_free(slcomp);
for the error handling path, and rather than complicate that code, just
make it ok to always free what was returned by the init function.
That's what the code used to do before commit 4ab42d78e37a ("ppp, slip:
Validate VJ compression slot parameters completely") when slhc_init()
just returned NULL for the error case, with no actual indication of the
details of the error.
Reported-by: syzbot+45474c076a4927533d2e@syzkaller.appspotmail.com
Fixes: 4ab42d78e37a ("ppp, slip: Validate VJ compression slot parameters
completely") Acked-by: Ben Hutchings <ben@decadent.org.uk> Cc: David
Miller <davem@davemloft.net> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifieddrivers/net/slip/slhc.c (diff)
Commit f2fde6a5bcfcfcfca8eef59666b20454da055ad7 by pbonzini
KVM: VMX: Move RSB stuffing to before the first RET after VM-Exit
The not-so-recent change to move VMX's VM-Exit handing to a dedicated
"function" unintentionally exposed KVM to a speculative attack from the
guest by executing a RET prior to stuffing the RSB.  Make RSB stuffing
happen immediately after VM-Exit, before any unpaired returns.
Alternatively, the VM-Exit path could postpone full RSB stuffing until
its current location by stuffing the RSB only as needed, or by avoiding
returns in the VM-Exit path entirely, but both alternatives are beyond
ugly since vmx_vmexit() has multiple indirect callers (by way of
vmx_vmenter()).  And putting the RSB stuffing immediately after VM-Exit
makes it much less likely to be re-broken in the future.
Note, the cost of PUSH/POP could be avoided in the normal flow by
pairing the PUSH RAX with the POP RAX in __vmx_vcpu_run() and adding an
a POP to nested_vmx_check_vmentry_hw(), but such a weird/subtle
dependency is likely to cause problems in the long run, and PUSH/POP
will take all of a few cycles, which is peanuts compared to the number
of cycles required to fill the RSB.
Fixes: 453eafbe65f7 ("KVM: VMX: Move VM-Enter + VM-Exit handling to
non-inline sub-routines") Reported-by: Rick Edgecombe
<rick.p.edgecombe@intel.com> Signed-off-by: Rick Edgecombe
<rick.p.edgecombe@intel.com> Co-developed-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
The file was modifiedarch/x86/kvm/vmx/vmenter.S (diff)
Commit b4e30e8e7ea1d1e35ffd64ca46f7d9a7f227b4bf by davem
bnxt_en: Improve multicast address setup logic.
The driver builds a list of multicast addresses and sends it to the
firmware when the driver's ndo_set_rx_mode() is called.  In rare cases,
the firmware can fail this call if internal resources to add multicast
addresses are exhausted.  In that case, we should try the call again by
setting the ALL_MCAST flag which is more guaranteed to succeed.
Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bnxt/bnxt.c (diff)
Commit f9099d611449836a51a65f40ea7dc9cb5f2f665e by davem
bnxt_en: Free short FW command HWRM memory in error path in
bnxt_init_one()
In the bnxt_init_one() error path, short FW command request memory is
not freed. This patch fixes it.
Fixes: e605db801bde ("bnxt_en: Support for Short Firmware Message")
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bnxt/bnxt.c (diff)
Commit 1f83391bd6fc48f92f627b0ec0bce686d100c6a5 by davem
bnxt_en: Fix possible crash in bnxt_hwrm_ring_free() under error
conditions.
If we encounter errors during open and proceed to clean up,
bnxt_hwrm_ring_free() may crash if the rings we try to free have never
been allocated.  bnxt_cp_ring_for_rx() or bnxt_cp_ring_for_tx() may
reference pointers that have not been allocated.
Fix it by checking for valid fw_ring_id first before calling
bnxt_cp_ring_for_rx() or bnxt_cp_ring_for_tx().
Fixes: 2c61d2117ecb ("bnxt_en: Add helper functions to get firmware CP
ring ID.") Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bnxt/bnxt.c (diff)
Commit ad361adf0d08f1135f3845c6b3a36be7cc0bfda5 by davem
bnxt_en: Pass correct extended TX port statistics size to firmware.
If driver determines that extended TX port statistics are not supported
or allocation of the data structure fails, make sure to pass 0 TX stats
size to firmware to disable it.  The firmware returned TX stats size
should also be set to 0 for consistency.  This will prevent
bnxt_get_ethtool_stats() from accessing the NULL TX stats pointer in
case there is mismatch between firmware and driver.
Fixes: 36e53349b60b ("bnxt_en: Add additional extended port
statistics.") Signed-off-by: Michael Chan <michael.chan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bnxt/bnxt.c (diff)
Commit 3f93cd3f098e284c851acb89265ebe35b994a5c8 by davem
bnxt_en: Fix statistics context reservation logic.
In an earlier commit that fixes the number of stats contexts to reserve
for the RDMA driver, we added a function parameter to pass in the number
of stats contexts to all the relevant functions.  The passed in
parameter should have been used to set the enables field of the firmware
message.
Fixes: 780baad44f0f ("bnxt_en: Reserve 1 stat_ctx for RDMA driver.")
Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bnxt/bnxt.c (diff)
Commit 0b397b17a4120cb80f7bf89eb30587b3dd9b0d1d by davem
bnxt_en: Fix uninitialized variable usage in bnxt_rx_pkt().
In bnxt_rx_pkt(), if the driver encounters BD errors, it will recycle
the buffers and jump to the end where the uninitailized variable "len"
is referenced.  Fix it by adding a new jump label that will skip the
length update.  This is the most correct fix since the length may not be
valid when we get this type of error.
Fixes: 6a8788f25625 ("bnxt_en: add support for software dynamic
interrupt moderation") Reported-by: Nathan Chancellor
<natechancellor@gmail.com> Cc: Nathan Chancellor
<natechancellor@gmail.com> Signed-off-by: Michael Chan
<michael.chan@broadcom.com> Reviewed-by: Nathan Chancellor
<natechancellor@gmail.com> Tested-by: Nathan Chancellor
<natechancellor@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bnxt/bnxt.c (diff)
Commit 97e1caa517e22d62a283b876fb8aa5f4672c83dd by davem
net/tls: don't copy negative amounts of data in reencrypt
There is no guarantee the record starts before the skb frags. If we
don't check for this condition copy amount will get negative, leading to
reads and writes to random memory locations. Familiar hilarity ensues.
Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload") Signed-off-by:
Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley
<john.hurley@netronome.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tls/tls_device.c (diff)
Commit eb3d38d5adb520435d4e4af32529ccb13ccc9935 by davem
net/tls: fix copy to fragments in reencrypt
Fragments may contain data from other records so we have to account for
that when we calculate the destination and max length of copy we can
perform.  Note that 'offset' is the offset within the message, so it
can't be passed as offset within the frag..
Here skb_store_bits() would have realised the call is wrong and simply
not copy data.
Fixes: 4799ac81e52a ("tls: Add rx inline crypto offload") Signed-off-by:
Jakub Kicinski <jakub.kicinski@netronome.com> Reviewed-by: John Hurley
<john.hurley@netronome.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tls/tls_device.c (diff)
Commit 21f1b8a6636c4dbde4aa1ec0343f42eaf653ffcc by davem
udp: fix GRO reception in case of length mismatch
Currently, the UDP GRO code path does bad things on some edge conditions
- Aggregation can happen even on packet with different lengths.
Fix the above by rewriting the 'complete' condition for GRO packets.
While at it, note explicitly that we allow merging the first packet per
burst below gso_size.
Reported-by: Sean Tong <seantong114@gmail.com> Fixes: e20cf8d3f1f7
("udp: implement GRO for plain UDP sockets.") Signed-off-by: Paolo Abeni
<pabeni@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/udp_offload.c (diff)
Commit 0700d3d117a7f110ddddbd83873e13652f69c54b by tiwai
ALSA: hda/realtek - Fixed Dell AIO speaker noise
Fixed Dell AIO speaker noise. spec->gen.auto_mute_via_amp = 1, this
option was solved speaker white noise at boot. codec->power_save_node =
0, this option was solved speaker noise at resume back.
Fixes: 9226665159f0 ("ALSA: hda/realtek - Fix Dell AIO LineOut issue")
Signed-off-by: Kailang Yang <kailang@realtek.com> Cc:
<stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit de1887c064b9996ac03120d90d0a909a3f678f98 by luciano.coelho
iwlwifi: mvm: check for length correctness in iwl_mvm_create_skb()
We don't check for the validity of the lengths in the packet received
from the firmware.  If the MPDU length received in the rx descriptor is
too short to contain the header length and the crypt length together, we
may end up trying to copy a negative number of bytes
(headlen - hdrlen < 0) which will underflow and cause us to try to copy
a huge amount of data.  This causes oopses such as this one:
BUG: unable to handle kernel paging request at ffff896be2970000 PGD
5e201067 P4D 5e201067 PUD 5e205067 PMD 16110d063 PTE 8000000162970161
Oops: 0003 [#1] PREEMPT SMP NOPTI CPU: 2 PID: 1824 Comm: irq/134-iwlwifi
Not tainted 4.19.33-04308-geea41cf4930f #1 Hardware name: [...] RIP:
0010:memcpy_erms+0x6/0x10 Code: 90 90 90 90 eb 1e 0f 1f 00 48 89 f8 48
89 d1 48 c1 e9 03 83 e2 07 f3 48 a5 89 d1 f3 a4 c3 66 0f 1f 44 00 00 48
89 f8 48 89 d1 <f3> a4 c3
0f 1f 80 00 00 00 00 48 89 f8 48 83 fa 20 72 7e 40 38 fe RSP:
0018:ffffa4630196fc60 EFLAGS: 00010287 RAX: ffff896be2924618 RBX:
ffff896bc8ecc600 RCX: 00000000fffb4610 RDX: 00000000fffffff8 RSI:
ffff896a835e2a38 RDI: ffff896be2970000 RBP: ffffa4630196fd30 R08:
ffff896bc8ecc600 R09: ffff896a83597000 R10: ffff896bd6998400 R11:
000000000200407f R12: ffff896a83597050 R13: 00000000fffffff8 R14:
0000000000000010 R15: ffff896a83597038 FS:  0000000000000000(0000)
GS:ffff896be8280000(0000) knlGS:0000000000000000 CS:  0010 DS: 0000 ES:
0000 CR0: 0000000080050033 CR2: ffff896be2970000 CR3: 000000005dc12002
CR4: 00000000003606e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400 Call Trace:
iwl_mvm_rx_mpdu_mq+0xb51/0x121b [iwlmvm]
iwl_pcie_rx_handle+0x58c/0xa89 [iwlwifi]
iwl_pcie_irq_rx_msix_handler+0xd9/0x12a [iwlwifi]
irq_thread_fn+0x24/0x49
irq_thread+0xb0/0x122
kthread+0x138/0x140
ret_from_fork+0x1f/0x40
Fix that by checking the lengths for correctness and trigger a warning
to show that we have received wrong data.
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
The file was modifieddrivers/net/wireless/intel/iwlwifi/mvm/rxmq.c (diff)
Commit 5c9adef9789148d382d7d1307c3d6bfaf51d143d by luciano.coelho
iwlwifi: fix driver operation for 5350
We introduced a bug that prevented this old device from working. The
driver would simply not be able to complete the INIT flow while spewing
this warning:
CSR addresses aren't configured
WARNING: CPU: 0 PID: 819 at
drivers/net/wireless/intel/iwlwifi/pcie/drv.c:917
iwl_pci_probe+0x160/0x1e0 [iwlwifi]
Cc: stable@vger.kernel.org # v4.18+ Fixes: a8cbb46f831d ("iwlwifi: allow
different csr flags for different device families") Signed-off-by:
Emmanuel Grumbach <emmanuel.grumbach@intel.com> Fixes: c8f1b51e506d
("iwlwifi: allow different csr flags for different device families")
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
The file was modifieddrivers/net/wireless/intel/iwlwifi/cfg/5000.c (diff)
Commit d156e67d3f58c5d3c7ebe1bec80657db534f32d4 by luciano.coelho
iwlwifi: mvm: fix merge damage in iwl_mvm_vif_dbgfs_register()
When I rebased Greg's patch, I accidentally left the old if block that
was already there.  Remove it.
Fixes: 154d4899e411 ("iwlwifi: mvm: properly check debugfs dentry before
using it") Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
The file was modifieddrivers/net/wireless/intel/iwlwifi/mvm/debugfs-vif.c (diff)
Commit e5c812e84f0dece3400d5caf42522287e6ef139f by tiwai
ALSA: line6: use dynamic buffers
The line6 driver uses a lot of USB buffers off of the stack, which is
not allowed on many systems, causing the driver to crash on some of
them.  Fix this up by dynamically allocating the buffers with kmalloc()
which allows for proper DMA-able memory.
Reported-by: Christo Gouws <gouws.christo@gmail.com> Reported-by: Alan
Stern <stern@rowland.harvard.edu> Tested-by: Christo Gouws
<gouws.christo@gmail.com> Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/usb/line6/driver.c (diff)
The file was modifiedsound/usb/line6/podhd.c (diff)
The file was modifiedsound/usb/line6/toneport.c (diff)
Commit b1da6a51871c6929dced1a7fad81990988b36ed6 by jack
fsnotify: Fix NULL ptr deref in fanotify_get_fsid()
fanotify_get_fsid() is reading mark->connector->fsid under srcu. It can
happen that it sees mark not fully initialized or mark that is already
detached from the object list. In these cases mark->connector can be
NULL leading to NULL ptr dereference. Fix the problem by being careful
when reading mark->connector and check it for being NULL. Also use
WRITE_ONCE when writing the mark just to prevent compiler from doing
something stupid.
Reported-by: syzbot+15927486a4f1bfcbaf91@syzkaller.appspotmail.com
Fixes: 77115225acc6 ("fanotify: cache fsid in fsnotify_mark_connector")
Signed-off-by: Jan Kara <jack@suse.cz>
The file was modifiedfs/notify/mark.c (diff)
The file was modifiedfs/notify/fanotify/fanotify.c (diff)
The file was modifiedMakefile (diff)
Commit ee948837d7fa89127373c139766aacf6b02a9225 by viro
[fix] get rid of checking for absent device name in vfs_get_tree()
It has no business being there, it's checked by relevant ->get_tree() as
it is *and* it returns the wrong error for no reason whatsoever.
Fixes: f3a09c92018a "introduce fs_context methods" Signed-off-by: Al
Viro <viro@zeniv.linux.org.uk>
The file was modifiedfs/super.c (diff)
Commit f69e749a49353d96af1a293f56b5b56de59c668a by viro
Abort file_remove_privs() for non-reg. files
file_remove_privs() might be called for non-regular files, e.g. blkdev
inode. There is no reason to do its job on things like blkdev inodes,
pipes, or cdevs. Hence, abort if file does not refer to a regular inode.
AV: more to the point, for devices there might be any number of inodes
refering to given device.  Which one to strip the permissions from, even
if that made any sense in the first place?  All of them will be observed
with contents modified, after all.
Found by LockDoc (Alexander Lochmann, Horst Schirmeier and Olaf
Spinczyk)
Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Alexander Lochmann
<alexander.lochmann@tu-dortmund.de> Signed-off-by: Horst Schirmeier
<horst.schirmeier@tu-dortmund.de> Signed-off-by: Al Viro
<viro@zeniv.linux.org.uk>
The file was modifiedfs/inode.c (diff)
Commit dbcdae185a704068c22984d6d05acc140ec03a8f by pbonzini
Documentation: kvm: fix dirty log ioctl arch lists
KVM_GET_DIRTY_LOG is implemented by all architectures, not just x86, and
KVM_CAP_MANUAL_DIRTY_LOG_PROTECT is additionally implemented by arm,
arm64, and mips.
Signed-off-by: Andrew Jones <drjones@redhat.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com>
The file was modifiedDocumentation/virtual/kvm/api.txt (diff)
Commit 38faed150438be8d6e419137209d25439e6f4c33 by kvalo
ath10k: perform crash dump collection in workqueue
Commit 25733c4e67df ("ath10k: pci: use mutex for diagnostic window CE
polling") introduced a regression where we try to sleep (grab a mutex)
in an atomic context:
[  233.602619] BUG: sleeping function called from invalid context at
kernel/locking/mutex.c:254
[  233.602626] in_atomic(): 1, irqs_disabled(): 0, pid: 0, name:
swapper/0
[  233.602636] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W       
5.1.0-rc2 #4
[  233.602642] Hardware name: Google Scarlet (DT)
[  233.602647] Call trace:
[  233.602663]  dump_backtrace+0x0/0x11c
[  233.602672]  show_stack+0x20/0x28
[  233.602681]  dump_stack+0x98/0xbc
[  233.602690]  ___might_sleep+0x154/0x16c
[  233.602696]  __might_sleep+0x78/0x88
[  233.602704]  mutex_lock+0x2c/0x5c
[  233.602717]  ath10k_pci_diag_read_mem+0x68/0x21c [ath10k_pci]
[  233.602725]  ath10k_pci_diag_read32+0x48/0x74 [ath10k_pci]
[  233.602733]  ath10k_pci_dump_registers+0x5c/0x16c [ath10k_pci]
[  233.602741]  ath10k_pci_fw_crashed_dump+0xb8/0x548 [ath10k_pci]
[  233.602749]  ath10k_pci_napi_poll+0x60/0x128 [ath10k_pci]
[  233.602757]  net_rx_action+0x140/0x388
[  233.602766]  __do_softirq+0x1b0/0x35c
[...]
ath10k_pci_fw_crashed_dump() is called from NAPI contexts, and firmware
memory dumps are retrieved using the diag memory interface.
A simple reproduction case is to run this on QCA6174A /
WLAN.RM.4.4.1-00132-QCARMSWP-1, which happens to be a way to b0rk the
firmware:
  dd if=/sys/kernel/debug/ieee80211/phy0/ath10k/mem_value bs=4K count=1
of=/dev/null
(NB: simulated firmware crashes, via debugfs, don't trigger firmware
dumps.)
The fix is to move the crash-dump into a workqueue context, and avoid
relying on 'data_lock' for most mutual exclusion. We only keep using it
here for protecting 'fw_crash_counter', while the rest of the coredump
buffers are protected by a new 'dump_mutex'.
I've tested the above with simulated firmware crashes (debugfs 'reset'
file), real firmware crashes (the 'dd' command above), and a variety of
reboot and suspend/resume configurations on QCA6174A.
Reported here:
http://lkml.kernel.org/linux-wireless/20190325202706.GA68720@google.com
Fixes: 25733c4e67df ("ath10k: pci: use mutex for diagnostic window CE
polling") Signed-off-by: Brian Norris <briannorris@chromium.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
The file was modifieddrivers/net/wireless/ath/ath10k/pci.c (diff)
The file was modifieddrivers/net/wireless/ath/ath10k/pci.h (diff)
The file was modifieddrivers/net/wireless/ath/ath10k/core.h (diff)
The file was modifieddrivers/net/wireless/ath/ath10k/coredump.c (diff)
The file was modifieddrivers/net/wireless/ath/ath10k/ce.c (diff)
The file was modifieddrivers/net/wireless/ath/ath10k/core.c (diff)
Commit 9e80ad37f6788ed52b89a3cfcd593e0aa69b216d by kvalo
ath10k: Drop WARN_ON()s that always trigger during system resume
ath10k_mac_vif_chan() always returns an error for the given vif during
system-wide resume which reliably triggers two WARN_ON()s in
ath10k_bss_info_changed() and they are not particularly useful in that
code path, so drop them.
Tested: QCA6174 hw3.2 PCI with WLAN.RM.2.0-00180-QCARMSWPZ-1 Tested:
QCA6174 hw3.2 SDIO with WLAN.RMH.4.4.1-00007-QCARMSWP-1
Fixes: cd93b83ad927 ("ath10k: support for multicast rate control")
Fixes: f279294e9ee2 ("ath10k: add support for configuring management
packet rate") Cc: stable@vger.kernel.org Reviewed-by: Brian Norris
<briannorris@chromium.org> Tested-by: Brian Norris
<briannorris@chromium.org> Tested-by: Claire Chang
<tientzu@chromium.org> Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Kalle Valo
<kvalo@codeaurora.org>
The file was modifieddrivers/net/wireless/ath/ath10k/mac.c (diff)
Commit dfbd199a7cfe3e3cd8531e1353cdbd7175bfbc5e by paul
selinux: use kernel linux/socket.h for genheaders and mdp
When compiling genheaders and mdp from a newer host kernel, the
following error happens:
    In file included from scripts/selinux/genheaders/genheaders.c:18:
   ./security/selinux/include/classmap.h:238:2: error: #error New
   address family defined, please update secclass_map.  #error New
   address family defined, please update secclass_map.  ^~~~~
   make[3]: *** [scripts/Makefile.host:107:
   scripts/selinux/genheaders/genheaders] Error 1 make[2]: ***
   [scripts/Makefile.build:599: scripts/selinux/genheaders] Error 2
   make[1]: *** [scripts/Makefile.build:599: scripts/selinux] Error 2
   make[1]: *** Waiting for unfinished jobs....
Instead of relying on the host definition, include linux/socket.h in
classmap.h to have PF_MAX.
Cc: stable@vger.kernel.org Signed-off-by: Paulo Alcantara
<paulo@paulo.ac> Acked-by: Stephen Smalley <sds@tycho.nsa.gov>
[PM: manually merge in mdp.c, subject line tweaks] Signed-off-by: Paul
Moore <paul@paul-moore.com>
The file was modifiedscripts/selinux/genheaders/genheaders.c (diff)
The file was modifiedsecurity/selinux/include/classmap.h (diff)
The file was modifiedscripts/selinux/mdp/mdp.c (diff)
Commit 6a5c5d26c4c6c3cc486fef0bf04ff9551132611b by torvalds
rdma: fix build errors on s390 and MIPS due to bad ZERO_PAGE use
The parameter to ZERO_PAGE() was wrong, but since all architectures
except for MIPS and s390 ignore it, it wasn't noticed until 0-day
reported the build error.
Fixes: 67f269b37f9b ("RDMA/ucontext: Fix regression with disassociate")
Cc: stable@vger.kernel.org Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Leon Romanovsky <leonro@mellanox.com> Cc: Jason Gunthorpe
<jgg@mellanox.com> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifieddrivers/infiniband/core/uverbs_main.c (diff)
Commit 80871482fd5cb1cb396ea232237a7d9c540854f9 by torvalds
x86: make ZERO_PAGE() at least parse its argument
This doesn't really do anything, but at least we now parse teh
ZERO_PAGE() address argument so that we'll catch the most obvious errors
in usage next time they'll happen.
See commit 6a5c5d26c4c6 ("rdma: fix build errors on s390 and MIPS due to
bad ZERO_PAGE use") what happens when we don't have any use of the macro
argument at all.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedarch/x86/include/asm/pgtable.h (diff)
Commit 95c169251bf734aa555a1e8043e4d88ec97a04ec by davem
ipv6: invert flowlabel sharing check in process and user mode
A request for a flowlabel fails in process or user exclusive mode must
fail if the caller pid or uid does not match. Invert the test.
Previously, the test was unsafe wrt PID recycling, but indeed tested for
inequality: fl1->owner != fl->owner
Fixes: 4f82f45730c68 ("net ip6 flowlabel: Make owner a union of struct
pid* and kuid_t") Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv6/ip6_flowlabel.c (diff)
Commit ca2fe2956acef2f87f6c55549874fdd2e92d9824 by davem
tcp: add sanity tests in tcp_add_backlog()
Richard and Bruno both reported that my commit added a bug, and Bruno
was able to determine the problem came when a segment wih a FIN packet
was coalesced to a prior one in tcp backlog queue.
It turns out the header prediction in tcp_rcv_established() looks back
to TCP headers in the packet, not in the metadata
(aka TCP_SKB_CB(skb)->tcp_flags)
The fast path in tcp_rcv_established() is not supposed to handle a FIN
flag (it does not call tcp_fin())
Therefore we need to make sure to propagate the FIN flag, so that the
coalesced packet does not go through the fast path, the same than a GRO
packet carrying a FIN flag.
While we are at it, make sure we do not coalesce packets with RST or
SYN, or if they do not have ACK set.
Many thanks to Richard and Bruno for pinpointing the bad commit, and to
Richard for providing a first version of the fix.
Fixes: 4f693b55c3d2 ("tcp: implement coalescing on backlog queue")
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: Richard
Purdie <richard.purdie@linuxfoundation.org> Reported-by: Bruno Prémont
<bonbons@sysophe.eu> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv4/tcp_ipv4.c (diff)
Commit 1d3fd8a10bedb09006cfc963bfcf051c3021f626 by davem
vrf: Use orig netdev to count Ip6InNoRoutes and a fresh route lookup
when sending dest unreach
When there is no route to an IPv6 dest addr, skb_dst(skb) points to
loopback dev in the case of that the IP6CB(skb)->iif is enslaved to a
vrf. This causes Ip6InNoRoutes to be incremented on the loopback dev.
This also causes the lookup to fail on icmpv6_send() and the dest
unreachable to not sent and Ip6OutNoRoutes gets incremented on the
loopback dev.
To reproduce:
* Gateway configuration:
       ip link add dev vrf_258 type vrf table 258
       ip link set dev enp0s9 master vrf_258
       ip addr add 66:1/64 dev enp0s9
       ip -6 route add unreachable default metric 8192 table 258
       sysctl -w net.ipv6.conf.all.forwarding=1
       sysctl -w net.ipv6.conf.enp0s9.forwarding=1
* Sender configuration:
       ip addr add 66::2/64 dev enp0s9
       ip -6 route add default via 66::1 and ping 67::1 for example from
the sender.
Fix this by counting on the original netdev and reset the skb dst to
force a fresh lookup.
v2: Fix typo of destination address in the repro steps. v3: Simplify the
loopback check (per David Ahern) and use reverse
   Christmas tree format (per David Miller).
Signed-off-by: Stephen Suryaputra <ssuryaextr@gmail.com> Reviewed-by:
David Ahern <dsahern@gmail.com> Tested-by: David Ahern
<dsahern@gmail.com> Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv6/route.c (diff)
Commit 6c0afef5fb0c27758f4d52b2210c61b6bd8b4470 by davem
ipv6/flowlabel: wait rcu grace period before put_pid()
syzbot was able to catch a use-after-free read in pid_nr_ns() [1]
ip6fl_seq_show() seems to use RCU protection, dereferencing
fl->owner.pid but fl_free() releases fl->owner.pid before rcu grace
period is started.
[1]
BUG: KASAN: use-after-free in pid_nr_ns+0x128/0x140 kernel/pid.c:407
Read of size 4 at addr ffff888094012a04 by task syz-executor.0/18087
CPU: 0 PID: 18087 Comm: syz-executor.0 Not tainted 5.1.0-rc6+ #89
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
__asan_report_load4_noabort+0x14/0x20 mm/kasan/generic_report.c:131
pid_nr_ns+0x128/0x140 kernel/pid.c:407
ip6fl_seq_show+0x2f8/0x4f0 net/ipv6/ip6_flowlabel.c:794
seq_read+0xad3/0x1130 fs/seq_file.c:268
proc_reg_read+0x1fe/0x2c0 fs/proc/inode.c:227
do_loop_readv_writev fs/read_write.c:701 [inline]
do_loop_readv_writev fs/read_write.c:688 [inline]
do_iter_read+0x4a9/0x660 fs/read_write.c:922
vfs_readv+0xf0/0x160 fs/read_write.c:984
kernel_readv fs/splice.c:358 [inline]
default_file_splice_read+0x475/0x890 fs/splice.c:413
do_splice_to+0x12a/0x190 fs/splice.c:876
splice_direct_to_actor+0x2d2/0x970 fs/splice.c:953
do_splice_direct+0x1da/0x2a0 fs/splice.c:1062
do_sendfile+0x597/0xd00 fs/read_write.c:1443
__do_sys_sendfile64 fs/read_write.c:1498 [inline]
__se_sys_sendfile64 fs/read_write.c:1490 [inline]
__x64_sys_sendfile64+0x15a/0x220 fs/read_write.c:1490
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x458da9 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:00007f300d24bc78
EFLAGS: 00000246 ORIG_RAX: 0000000000000028 RAX: ffffffffffffffda RBX:
0000000000000004 RCX: 0000000000458da9 RDX: 00000000200000c0 RSI:
0000000000000008 RDI: 0000000000000007 RBP: 000000000073bf00 R08:
0000000000000000 R09: 0000000000000000 R10: 000000000000005a R11:
0000000000000246 R12: 00007f300d24c6d4 R13: 00000000004c5fa3 R14:
00000000004da748 R15: 00000000ffffffff
Allocated by task 17543:
save_stack+0x45/0xd0 mm/kasan/common.c:75
set_track mm/kasan/common.c:87 [inline]
__kasan_kmalloc mm/kasan/common.c:497 [inline]
__kasan_kmalloc.constprop.0+0xcf/0xe0 mm/kasan/common.c:470
kasan_slab_alloc+0xf/0x20 mm/kasan/common.c:505
slab_post_alloc_hook mm/slab.h:437 [inline]
slab_alloc mm/slab.c:3393 [inline]
kmem_cache_alloc+0x11a/0x6f0 mm/slab.c:3555
alloc_pid+0x55/0x8f0 kernel/pid.c:168
copy_process.part.0+0x3b08/0x7980 kernel/fork.c:1932
copy_process kernel/fork.c:1709 [inline]
_do_fork+0x257/0xfd0 kernel/fork.c:2226
__do_sys_clone kernel/fork.c:2333 [inline]
__se_sys_clone kernel/fork.c:2327 [inline]
__x64_sys_clone+0xbf/0x150 kernel/fork.c:2327
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Freed by task 7789:
save_stack+0x45/0xd0 mm/kasan/common.c:75
set_track mm/kasan/common.c:87 [inline]
__kasan_slab_free+0x102/0x150 mm/kasan/common.c:459
kasan_slab_free+0xe/0x10 mm/kasan/common.c:467
__cache_free mm/slab.c:3499 [inline]
kmem_cache_free+0x86/0x260 mm/slab.c:3765
put_pid.part.0+0x111/0x150 kernel/pid.c:111
put_pid+0x20/0x30 kernel/pid.c:105
fl_free+0xbe/0xe0 net/ipv6/ip6_flowlabel.c:102
ip6_fl_gc+0x295/0x3e0 net/ipv6/ip6_flowlabel.c:152
call_timer_fn+0x190/0x720 kernel/time/timer.c:1325
expire_timers kernel/time/timer.c:1362 [inline]
__run_timers kernel/time/timer.c:1681 [inline]
__run_timers kernel/time/timer.c:1649 [inline]
run_timer_softirq+0x652/0x1700 kernel/time/timer.c:1694
__do_softirq+0x266/0x95a kernel/softirq.c:293
The buggy address belongs to the object at ffff888094012a00
which belongs to the cache pid_2 of size 88 The buggy address is located
4 bytes inside of
88-byte region [ffff888094012a00, ffff888094012a58) The buggy address
belongs to the page: page:ffffea0002500480 count:1 mapcount:0
mapping:ffff88809a483080 index:0xffff888094012980 flags:
0x1fffc0000000200(slab) raw: 01fffc0000000200 ffffea00018a3508
ffffea0002524a88 ffff88809a483080 raw: ffff888094012980 ffff888094012000
000000010000001b 0000000000000000 page dumped because: kasan: bad access
detected
Memory state around the buggy address:
ffff888094012900: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
ffff888094012980: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
>ffff888094012a00: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
                  ^
ffff888094012a80: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
ffff888094012b00: fb fb fb fb fb fb fb fb fb fb fb fc fc fc fc fc
Fixes: 4f82f45730c6 ("net ip6 flowlabel: Make owner a union of struct
pid * and kuid_t") Signed-off-by: Eric Dumazet <edumazet@google.com> Cc:
Eric W. Biederman <ebiederm@xmission.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv6/ip6_flowlabel.c (diff)
Commit 9a4f26cc98d81b67ecc23b890c28e2df324e29f3 by mingo
sched/cpufreq: Fix kobject memleak
Currently the error return path from kobject_init_and_add() is not
followed by a call to kobject_put() - which means we are leaking the
kobject.
Fix it by adding a call to kobject_put() in the error path of
kobject_init_and_add().
Signed-off-by: Tobin C. Harding <tobin@kernel.org> Cc: Greg
Kroah-Hartman <gregkh@linuxfoundation.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tobin C. Harding <tobin@kernel.org> Cc: Vincent Guittot
<vincent.guittot@linaro.org> Cc: Viresh Kumar <viresh.kumar@linaro.org>
Link: http://lkml.kernel.org/r/20190430001144.24890-1-tobin@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/sched/cpufreq_schedutil.c (diff)
Commit ab042b824c11502bd39abfdfd4c7f285347d483a by kraxel
Revert "drm/qxl: drop prime import/export callbacks"
This reverts commit f4c34b1e2a37d5676180901fa6ff188bcb6371f8.
Simliar to commit a0cecc23cfcb Revert "drm/virtio: drop prime
import/export callbacks".  We have to do the same with qxl, for the same
reasons (it breaks DRI3).
Drop the WARN_ON_ONCE().
Fixes: f4c34b1e2a37d5676 ("drm/qxl: drop prime import/export callbacks")
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Link:
http://patchwork.freedesktop.org/patch/msgid/20190426053324.26443-1-kraxel@redhat.com
Acked-by: Daniel Vetter <daniel@ffwll.ch>
The file was modifieddrivers/gpu/drm/qxl/qxl_drv.c (diff)
The file was modifieddrivers/gpu/drm/qxl/qxl_prime.c (diff)
Commit 3887c26c0e24d50a4d0ce20cf4726737cee1a2fd by tiwai
ALSA: hda/realtek - Apply the fixup for ASUS Q325UAR
Some ASUS models like Q325UAR with ALC295 codec requires the same fixup
that has been applied to ALC294 codec.  Just copy the entry with the pin
matching to cover ALC295 too.
BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1784485
Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit b13023421b5179413421333f602850914f6a7ad8 by davem
rxrpc: Fix net namespace cleanup
In rxrpc_destroy_all_calls(), there are two phases: (1) make sure the
->calls list is empty, emitting error messages if not, and (2) wait for
the RCU cleanup to happen on outstanding calls (ie. ->nr_calls becomes
0).
To avoid taking the call_lock, the function prechecks ->calls and if
empty, it returns to avoid taking the lock - this is wrong, however: it
still needs to go and do the second phase and wait for ->nr_calls to
become 0.
Without this, the rxrpc_net struct may get deallocated before we get to
the RCU cleanup for the last calls.  This can lead to:
  Slab corruption (Not tainted): kmalloc-16k start=ffff88802b178000,
len=16384
050: 6b 6b 6b 6b 6b 6b 6b 6b 61 6b 6b 6b 6b 6b 6b 6b  kkkkkkkkakkkkkkk
Note the "61" at offset 0x58.  This corresponds to the ->nr_calls member
of struct rxrpc_net (which is >9k in size, and thus allocated out of the
16k slab).
Fix this by flipping the condition on the if-statement, putting the
locked section inside the if-body and dropping the return from there.
The function will then always go on to wait for the RCU cleanup on
outstanding calls.
Fixes: 2baec2c3f854 ("rxrpc: Support network namespacing")
Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifiednet/rxrpc/call_object.c (diff)
Commit f949a12fd697479f68d99dc65e9bbab68ee49043 by davem
net: dsa: bcm_sf2: fix buffer overflow doing set_rxnfc
The "fs->location" is a u32 that comes from the user in
ethtool_set_rxnfc(). We can't pass unclamped values to test_bit() or it
results in an out of bounds access beyond the end of the bitmap.
Fixes: 7318166cacad ("net: dsa: bcm_sf2: Add support for
ethtool::rxnfc") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/bcm_sf2_cfp.c (diff)
Commit c93ad1337ad06a718890a89cdd85188ff9a5a5cc by davem
appletalk: Set error code if register_snap_client failed
If register_snap_client fails in atalk_init, error code should be set,
otherwise it will triggers NULL pointer dereference while unloading
module.
Fixes: 9804501fa122 ("appletalk: Fix potential NULL pointer dereference
in unregister_snap_client") Signed-off-by: YueHaibing
<yuehaibing@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/appletalk/ddp.c (diff)
Commit a622b40035d16196bf19b2b33b854862595245fc by davem
l2ip: fix possible use-after-free
Before taking a refcount on a rcu protected structure, we need to make
sure the refcount is not zero.
syzbot reported :
refcount_t: increment on 0; use-after-free. WARNING: CPU: 1 PID: 23533
at lib/refcount.c:156 refcount_inc_checked lib/refcount.c:156 [inline]
WARNING: CPU: 1 PID: 23533 at lib/refcount.c:156
refcount_inc_checked+0x61/0x70 lib/refcount.c:154 Kernel panic - not
syncing: panic_on_warn set ... CPU: 1 PID: 23533 Comm: syz-executor.2
Not tainted 5.1.0-rc7+ #93 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
panic+0x2cb/0x65c kernel/panic.c:214
__warn.cold+0x20/0x45 kernel/panic.c:571
report_bug+0x263/0x2b0 lib/bug.c:186
fixup_bug arch/x86/kernel/traps.c:179 [inline]
fixup_bug arch/x86/kernel/traps.c:174 [inline]
do_error_trap+0x11b/0x200 arch/x86/kernel/traps.c:272
do_invalid_op+0x37/0x50 arch/x86/kernel/traps.c:291
invalid_op+0x14/0x20 arch/x86/entry/entry_64.S:973 RIP:
0010:refcount_inc_checked lib/refcount.c:156 [inline] RIP:
0010:refcount_inc_checked+0x61/0x70 lib/refcount.c:154 Code: 1d 98 2b 2a
06 31 ff 89 de e8 db 2c 40 fe 84 db 75 dd e8 92 2b 40 fe 48 c7 c7 20 7a
a1 87 c6 05 78 2b 2a 06 01 e8 7d d9 12 fe <0f> 0b eb c1 90 90 90 90 90
90 90 90 90 90 90 55 48 89 e5 41 57 41 RSP: 0018:ffff888069f0fba8
EFLAGS: 00010286 RAX: 0000000000000000 RBX: 0000000000000000 RCX:
0000000000000000 RDX: 000000000000f353 RSI: ffffffff815afcb6 RDI:
ffffed100d3e1f67 RBP: ffff888069f0fbb8 R08: ffff88809b1845c0 R09:
ffffed1015d23ef1 R10: ffffed1015d23ef0 R11: ffff8880ae91f787 R12:
ffff8880a8f26968 R13: 0000000000000004 R14: dffffc0000000000 R15:
ffff8880a49a6440
l2tp_tunnel_inc_refcount net/l2tp/l2tp_core.h:240 [inline]
l2tp_tunnel_get+0x250/0x580 net/l2tp/l2tp_core.c:173
pppol2tp_connect+0xc00/0x1c70 net/l2tp/l2tp_ppp.c:702
__sys_connect+0x266/0x330 net/socket.c:1808
__do_sys_connect net/socket.c:1819 [inline]
__se_sys_connect net/socket.c:1816 [inline]
__x64_sys_connect+0x73/0xb0 net/socket.c:1816
Fixes: 54652eb12c1b ("l2tp: hold tunnel while looking up sessions in
l2tp_netlink") Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com> Cc: Guillaume Nault
<g.nault@alphalink.fr> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/l2tp/l2tp_core.c (diff)
Commit 8449eedaa1da6a51d67190c905b1b54243e095f6 by axboe
io_uring: fix handling SQEs requesting NOWAIT
Not all request types set REQ_F_FORCE_NONBLOCK when they needed async
punting; reverse logic instead and set REQ_F_NOWAIT if request mustn't
be punted.
Signed-off-by: Stefan Bühler <source@stbuehler.de>
Merged with my previous patch for this.
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 1e84b97b7377bd0198f87b49ad3e396e84bf0458 by axboe
io_uring: fix notes on barriers
The application reading the CQ ring needs a barrier to pair with the
smp_store_release in io_commit_cqring, not the barrier after it.
Also a write barrier *after* writing something (but not *before* writing
anything interesting) doesn't order anything, so an smp_wmb() after
writing SQ tail is not needed.
Additionally consider reading SQ head and writing CQ tail in the notes.
Also add some clarifications how the various other fields in the ring
buffers are used.
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 4f7067c3fb7f2974363a28c597a41949d971af02 by axboe
io_uring: remove unnecessary barrier before wq_has_sleeper
wq_has_sleeper has a full barrier internally. The smp_rmb barrier in
io_uring_poll synchronizes with it.
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 115e12e58dbc055e98c965e3255aed7b20214f95 by axboe
io_uring: remove unnecessary barrier before reading cq head
The memory operations before reading cq head are unrelated and we don't
care about their order.
Document that the control dependency in combination with READ_ONCE and
WRITE_ONCE forms a barrier we need.
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 9e4c15a3939448d2ea9b9bf59561183bbe3fdc49 by axboe
io_uring: remove unnecessary barrier after updating SQ head
There is no operation afterwards to order with.
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 82ab082c0e2f8592c2ff6b2ab99a92d8406c8c2c by axboe
io_uring: remove unnecessary barrier before reading SQ tail
There is no operation before to order with.
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit b841f19524a16cd93a39f9306191f85c549a2bc2 by axboe
io_uring: remove unnecessary barrier after incrementing dropped counter
smp_store_release in io_commit_sqring already orders the store to
dropped before the update to SQ head.
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 62977281a6384d3904c02272a638cc3ac3bac54d by axboe
io_uring: remove unnecessary barrier after unsetting
IORING_SQ_NEED_WAKEUP
There is no operation to order with afterwards, and removing the flag is
not critical in any way.
There will always be a "race condition" where the application will
trigger IORING_ENTER_SQ_WAKEUP when it isn't actually needed.
Signed-off-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit b51ce3744f115850166f3d6c292b9c8cb849ad4f by bp
x86/mm/mem_encrypt: Disable all instrumentation for early SME setup
Enablement of AMD's Secure Memory Encryption feature is determined very
early after start_kernel() is entered. Part of this procedure involves
scanning the command line for the parameter 'mem_encrypt'.
To determine intended state, the function sme_enable() uses library
functions cmdline_find_option() and strncmp(). Their use occurs early
enough such that it cannot be assumed that any instrumentation subsystem
is initialized.
For example, making calls to a KASAN-instrumented function before KASAN
is set up will result in the use of uninitialized memory and a boot
failure.
When AMD's SME support is enabled, conditionally disable instrumentation
of these dependent functions in lib/string.c and arch/x86/lib/cmdline.c.
[ bp: Get rid of intermediary nostackp var and cleanup whitespace. ]
Fixes: aca20d546214 ("x86/mm: Add support to make use of Secure Memory
Encryption") Reported-by: Li RongQing <lirongqing@baidu.com>
Signed-off-by: Gary R Hook <gary.hook@amd.com> Signed-off-by: Borislav
Petkov <bp@suse.de> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Andrew Morton
<akpm@linux-foundation.org> Cc: Andy Shevchenko
<andriy.shevchenko@linux.intel.com> Cc: Boris Brezillon
<bbrezillon@kernel.org> Cc: Coly Li <colyli@suse.de> Cc:
"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com> Cc: "H.
Peter Anvin" <hpa@zytor.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Kees
Cook <keescook@chromium.org> Cc: Kent Overstreet
<kent.overstreet@gmail.com> Cc: "luto@kernel.org" <luto@kernel.org> Cc:
Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Matthew Wilcox
<willy@infradead.org> Cc: "mingo@redhat.com" <mingo@redhat.com> Cc:
"peterz@infradead.org" <peterz@infradead.org> Cc: Sebastian Andrzej
Siewior <bigeasy@linutronix.de> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86-ml <x86@kernel.org> Link:
https://lkml.kernel.org/r/155657657552.7116.18363762932464011367.stgit@sosrh3.amd.com
The file was modifiedarch/x86/lib/Makefile (diff)
The file was modifiedlib/Makefile (diff)
Commit 2c2a2fb1e2a9256714338875bede6b7cbd4b9542 by rafael.j.wysocki
Revert "ACPICA: Clear status of GPEs before enabling them"
Revert commit c8b1917c8987 ("ACPICA: Clear status of GPEs before
enabling them") that causes problems with Thunderbolt controllers to
occur if a dock device is connected at init time (the xhci_hcd and
thunderbolt modules crash which prevents peripherals connected through
them from working).
Commit c8b1917c8987 effectively causes commit ecc1165b8b74 ("ACPICA:
Dispatch active GPEs at init time") to get undone, so the problem
addressed by commit ecc1165b8b74 appears again as a result of it.
Fixes: c8b1917c8987 ("ACPICA: Clear status of GPEs before enabling
them") Link:
https://lore.kernel.org/lkml/s5hy33siofw.wl-tiwai@suse.de/T/#u Link:
https://bugzilla.opensuse.org/show_bug.cgi?id=1132943 Reported-by:
Michael Hirmke <opensuse@mike.franken.de> Reported-by: Takashi Iwai
<tiwai@suse.de> Cc: 4.17+ <stable@vger.kernel.org> # 4.17+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
The file was modifieddrivers/acpi/acpica/evgpe.c (diff)
Commit 8764ed55c9705e426d889ff16c26f398bba70b9b by pbonzini
KVM: x86: Whitelist port 0x7e for pre-incrementing %rip
KVM's recent bug fix to update %rip after emulating I/O broke userspace
that relied on the previous behavior of incrementing %rip prior to
exiting to userspace.  When running a Windows XP guest on AMD hardware,
Qemu may patch "OUT 0x7E" instructions in reaction to the OUT itself.
Because KVM's old behavior was to increment %rip before exiting to
userspace to handle the I/O, Qemu manually adjusted %rip to account for
the OUT instruction.
Arguably this is a userspace bug as KVM requires userspace to re-enter
the kernel to complete instruction emulation before taking any other
actions.  That being said, this is a bit of a grey area and breaking
userspace that has worked for many years is bad.
Pre-increment %rip on OUT to port 0x7e before exiting to userspace to
hack around the issue.
Fixes: 45def77ebf79e ("KVM: x86: update %rip after emulating IO")
Reported-by: Simon Becherer <simon@becherer.de> Reported-and-tested-by:
Iakov Karpov <srid@rkmail.ru> Reported-by: Gabriele Balducci
<balducci@units.it> Reported-by: Antti Antinoja <reader@fennosys.fi> Cc:
stable@vger.kernel.org Cc: Takashi Iwai <tiwai@suse.com> Cc: Jiri Slaby
<jslaby@suse.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/x86.c (diff)
The file was modifiedarch/x86/include/uapi/asm/kvm.h (diff)
Commit 0699c64a4be6e4a6137240379a1f82c752e663d8 by pbonzini
x86/kvm/mmu: reset MMU context when 32-bit guest switches PAE
Commit 47c42e6b4192 ("KVM: x86: fix handling of role.cr4_pae and rename
it to 'gpte_size'") introduced a regression: 32-bit PAE guests stopped
working. The issue appears to be: when guest switches (enables) PAE we
need to re-initialize MMU context (set context->root_level, do
reset_rsvds_bits_mask(), ...) but init_kvm_tdp_mmu() doesn't do that
because we threw away is_pae(vcpu) flag from mmu role. Restore it to
kvm_mmu_extended_role (as we now don't need it in base role) to fix the
issue.
Fixes: 47c42e6b4192 ("KVM: x86: fix handling of role.cr4_pae and rename
it to 'gpte_size'") Signed-off-by: Vitaly Kuznetsov
<vkuznets@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/include/asm/kvm_host.h (diff)
The file was modifiedarch/x86/kvm/mmu.c (diff)
Commit 76d58e0f07ec203bbdfcaabd9a9fc10a5a3ed5ea by pbonzini
KVM: fix KVM_CLEAR_DIRTY_LOG for memory slots of unaligned size
If a memory slot's size is not a multiple of 64 pages (256K), then the
KVM_CLEAR_DIRTY_LOG API is unusable: clearing the final 64 pages either
requires the requested page range to go beyond memslot->npages, or
requires log->num_pages to be unaligned, and kvm_clear_dirty_log_protect
requires log->num_pages to be both in range and aligned.
To allow this case, allow log->num_pages not to be a multiple of 64 if
it ends exactly on the last page of the slot.
Reported-by: Peter Xu <peterx@redhat.com> Fixes: 98938aa8edd6 ("KVM:
validate userspace input in kvm_clear_dirty_log_protect()", 2019-01-02)
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedDocumentation/virtual/kvm/api.txt (diff)
The file was modifiedtools/testing/selftests/kvm/dirty_log_test.c (diff)
The file was modifiedvirt/kvm/kvm_main.c (diff)
Commit b904cb8dff824b79233e82c078837627ebd52717 by pbonzini
KVM: lapic: Check for in-kernel LAPIC before deferencing apic pointer
...to avoid dereferencing a null pointer when querying the per-vCPU
timer advance.
Fixes: 39497d7660d98 ("KVM: lapic: Track lapic timer advance per vCPU")
Reported-by: syzbot+f7e65445a40d3e0e4ebf@syzkaller.appspotmail.com
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/x86.c (diff)
The file was modifiedarch/x86/kvm/lapic.c (diff)
Commit eba3afde1cea7dbd7881683232f2a85e2ed86bfe by pbonzini
KVM: selftests: make hyperv_cpuid test pass on AMD
Enlightened VMCS is only supported on Intel CPUs but the test shouldn't
fail completely.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by:
Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedtools/testing/selftests/kvm/x86_64/hyperv_cpuid.c (diff)
Commit e8ab8d24b488632d07ce5ddb261f1d454114415b by pbonzini
KVM: nVMX: Fix size checks in vmx_set_nested_state
The size checks in vmx_nested_state are wrong because the calculations
are made based on the size of a pointer to a struct kvm_nested_state
rather than the size of a struct kvm_nested_state.
Reported-by: Felix Wilhelm  <fwilhelm@google.com> Signed-off-by: Jim
Mattson <jmattson@google.com> Reviewed-by: Drew Schmitt
<dasch@google.com> Reviewed-by: Marc Orr <marcorr@google.com>
Reviewed-by: Peter Shier <pshier@google.com> Reviewed-by: Krish
Sadhukhan <krish.sadhukhan@oracle.com> Fixes:
8fcc4b5923af5de58b80b53a069453b135693304 Cc: stable@ver.kernel.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit 0e2338749192ce0e52e7174c5352f627632f478a by davem
ipv6: fix races in ip6_dst_destroy()
We had many syzbot reports that seem to be caused by use-after-free of
struct fib6_info.
ip6_dst_destroy(), fib6_drop_pcpu_from() and rt6_remove_exception() are
writers vs rt->from, and use non consistent synchronization among
themselves.
Switching to xchg() will solve the issues with no possible lockdep
issues.
BUG: KASAN: user-memory-access in atomic_dec_and_test
include/asm-generic/atomic-instrumented.h:747 [inline] BUG: KASAN:
user-memory-access in fib6_info_release include/net/ip6_fib.h:294
[inline] BUG: KASAN: user-memory-access in fib6_info_release
include/net/ip6_fib.h:292 [inline] BUG: KASAN: user-memory-access in
fib6_drop_pcpu_from net/ipv6/ip6_fib.c:927 [inline] BUG: KASAN:
user-memory-access in fib6_purge_rt+0x4f6/0x670 net/ipv6/ip6_fib.c:960
Write of size 4 at addr 0000000000ffffb4 by task syz-executor.1/7649
CPU: 0 PID: 7649 Comm: syz-executor.1 Not tainted 5.1.0-rc6+ #183
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
kasan_report.cold+0x5/0x40 mm/kasan/report.c:321
check_memory_region_inline mm/kasan/generic.c:185 [inline]
check_memory_region+0x123/0x190 mm/kasan/generic.c:191
kasan_check_write+0x14/0x20 mm/kasan/common.c:108
atomic_dec_and_test include/asm-generic/atomic-instrumented.h:747
[inline]
fib6_info_release include/net/ip6_fib.h:294 [inline]
fib6_info_release include/net/ip6_fib.h:292 [inline]
fib6_drop_pcpu_from net/ipv6/ip6_fib.c:927 [inline]
fib6_purge_rt+0x4f6/0x670 net/ipv6/ip6_fib.c:960
fib6_del_route net/ipv6/ip6_fib.c:1813 [inline]
fib6_del+0xac2/0x10a0 net/ipv6/ip6_fib.c:1844
fib6_clean_node+0x3a8/0x590 net/ipv6/ip6_fib.c:2006
fib6_walk_continue+0x495/0x900 net/ipv6/ip6_fib.c:1928
fib6_walk+0x9d/0x100 net/ipv6/ip6_fib.c:1976
fib6_clean_tree+0xe0/0x120 net/ipv6/ip6_fib.c:2055
__fib6_clean_all+0x118/0x2a0 net/ipv6/ip6_fib.c:2071
fib6_clean_all+0x2b/0x40 net/ipv6/ip6_fib.c:2082
rt6_sync_down_dev+0x134/0x150 net/ipv6/route.c:4057
rt6_disable_ip+0x27/0x5f0 net/ipv6/route.c:4062
addrconf_ifdown+0xa2/0x1220 net/ipv6/addrconf.c:3705
addrconf_notify+0x19a/0x2260 net/ipv6/addrconf.c:3630
notifier_call_chain+0xc7/0x240 kernel/notifier.c:93
__raw_notifier_call_chain kernel/notifier.c:394 [inline]
raw_notifier_call_chain+0x2e/0x40 kernel/notifier.c:401
call_netdevice_notifiers_info+0x3f/0x90 net/core/dev.c:1753
call_netdevice_notifiers_extack net/core/dev.c:1765 [inline]
call_netdevice_notifiers net/core/dev.c:1779 [inline]
dev_close_many+0x33f/0x6f0 net/core/dev.c:1522
rollback_registered_many+0x43b/0xfd0 net/core/dev.c:8177
rollback_registered+0x109/0x1d0 net/core/dev.c:8242
unregister_netdevice_queue net/core/dev.c:9289 [inline]
unregister_netdevice_queue+0x1ee/0x2c0 net/core/dev.c:9282
unregister_netdevice include/linux/netdevice.h:2658 [inline]
__tun_detach+0xd5b/0x1000 drivers/net/tun.c:727
tun_detach drivers/net/tun.c:744 [inline]
tun_chr_close+0xe0/0x180 drivers/net/tun.c:3443
__fput+0x2e5/0x8d0 fs/file_table.c:278
____fput+0x16/0x20 fs/file_table.c:309
task_work_run+0x14a/0x1c0 kernel/task_work.c:113
exit_task_work include/linux/task_work.h:22 [inline]
do_exit+0x90a/0x2fa0 kernel/exit.c:876
do_group_exit+0x135/0x370 kernel/exit.c:980
__do_sys_exit_group kernel/exit.c:991 [inline]
__se_sys_exit_group kernel/exit.c:989 [inline]
__x64_sys_exit_group+0x44/0x50 kernel/exit.c:989
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x458da9 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:00007ffeafc2a6a8
EFLAGS: 00000246 ORIG_RAX: 00000000000000e7 RAX: ffffffffffffffda RBX:
000000000000001c RCX: 0000000000458da9 RDX: 0000000000412a80 RSI:
0000000000a54ef0 RDI: 0000000000000043 RBP: 00000000004be552 R08:
000000000000000c R09: 000000000004c0d1 R10: 0000000002341940 R11:
0000000000000246 R12: 00000000ffffffff R13: 00007ffeafc2a7f0 R14:
000000000004c065 R15: 00007ffeafc2a800
Fixes: a68886a69180 ("net/ipv6: Make from in rt6_info rcu protected")
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Cc: David Ahern <dsahern@gmail.com>
Reviewed-by: David Ahern <dsahern@gmail.com> Acked-by: Martin KaFai Lau
<kafai@fb.com> Acked-by: Wei Wang <weiwan@google.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv6/route.c (diff)
The file was modifiednet/ipv6/ip6_fib.c (diff)
Commit 5c8b0b54db22c54f2aec991b388f550d3a927f26 by axboe
io_uring: have submission side sqe errors post a cqe
Currently we only post a cqe if we get an error OUTSIDE of submission.
For submission, we return the error directly through io_uring_enter().
This is a bit awkward for applications, and it makes more sense to
always post a cqe with an error, if the error happens on behalf of an
sqe.
This changes submission behavior a bit. io_uring_enter() returns -ERROR
for an error, and > 0 for number of sqes submitted. Before this change,
if you wanted to submit 8 entries and had an error on the 5th entry,
io_uring_enter() would return 4 (for number of entries successfully
submitted) and rewind the sqring. The application would then have to
peek at the sqring and figure out what was wrong with the head sqe, and
then skip it itself. With this change, we'll return 5 since we did
consume 5 sqes, and the last sqe (with the error) will result in a cqe
being posted with the error.
This makes the logic easier to handle in the application, and it cleans
up the submission part.
Suggested-by: Stefan Bühler <source@stbuehler.de> Signed-off-by: Jens
Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 799381e49b4e7b0177664cdbc54a2de8b41647a8 by davem
Documentation: fix netdev-FAQ.rst markup warning
Fix ReST underline warning:
./Documentation/networking/netdev-FAQ.rst:135: WARNING: Title underline
too short.
Q: I made changes to only a few patches in a patch series should I
resend only those changed?
--------------------------------------------------------------------------------------------
Fixes: ffa91253739c ("Documentation: networking: Update netdev-FAQ
regarding patches") Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiedDocumentation/networking/netdev-FAQ.rst (diff)
Commit 37e9c087c81447cebd4ca022226829e319b0e280 by davem
stmmac: pci: Fix typo in IOT2000 comment
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Reviewed-by: Andy
Shevchenko <andy.shevchenko@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/stmmac_pci.c (diff)
Commit fbd019737d71e405f86549fd738f81e2ff3dd073 by davem
sctp: avoid running the sctp state machine recursively
Ying triggered a call trace when doing an asconf testing:
  BUG: scheduling while atomic: swapper/12/0/0x10000100
Call Trace:
  <IRQ>  [<ffffffffa4375904>] dump_stack+0x19/0x1b
  [<ffffffffa436fcaf>] __schedule_bug+0x64/0x72
  [<ffffffffa437b93a>] __schedule+0x9ba/0xa00
  [<ffffffffa3cd5326>] __cond_resched+0x26/0x30
  [<ffffffffa437bc4a>] _cond_resched+0x3a/0x50
  [<ffffffffa3e22be8>] kmem_cache_alloc_node+0x38/0x200
  [<ffffffffa423512d>] __alloc_skb+0x5d/0x2d0
  [<ffffffffc0995320>] sctp_packet_transmit+0x610/0xa20 [sctp]
  [<ffffffffc098510e>] sctp_outq_flush+0x2ce/0xc00 [sctp]
  [<ffffffffc098646c>] sctp_outq_uncork+0x1c/0x20 [sctp]
  [<ffffffffc0977338>] sctp_cmd_interpreter.isra.22+0xc8/0x1460 [sctp]
  [<ffffffffc0976ad1>] sctp_do_sm+0xe1/0x350 [sctp]
  [<ffffffffc099443d>] sctp_primitive_ASCONF+0x3d/0x50 [sctp]
  [<ffffffffc0977384>] sctp_cmd_interpreter.isra.22+0x114/0x1460 [sctp]
  [<ffffffffc0976ad1>] sctp_do_sm+0xe1/0x350 [sctp]
  [<ffffffffc097b3a4>] sctp_assoc_bh_rcv+0xf4/0x1b0 [sctp]
  [<ffffffffc09840f1>] sctp_inq_push+0x51/0x70 [sctp]
  [<ffffffffc099732b>] sctp_rcv+0xa8b/0xbd0 [sctp]
As it shows, the first sctp_do_sm() running under atomic context (NET_RX
softirq) invoked sctp_primitive_ASCONF() that uses GFP_KERNEL flag
later, and this flag is supposed to be used in non-atomic context only.
Besides, sctp_do_sm() was called recursively, which is not expected.
Vlad tried to fix this recursive call in Commit c0786693404c ("sctp: Fix
oops when sending queued ASCONF chunks") by introducing a new command
SCTP_CMD_SEND_NEXT_ASCONF. But it didn't work as this command is still
used in the first sctp_do_sm() call, and sctp_primitive_ASCONF() will be
called in this command again.
To avoid calling sctp_do_sm() recursively, we send the next queued
ASCONF not by sctp_primitive_ASCONF(), but by sctp_sf_do_prm_asconf() in
the 1st sctp_do_sm() directly.
Reported-by: Ying Xu <yinxu@redhat.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>
The file was modifiednet/sctp/sm_statefuns.c (diff)
The file was modifiedinclude/net/sctp/command.h (diff)
The file was modifiednet/sctp/sm_sideeffect.c (diff)
Commit 975554b03eddc1df73bda3a764a09e18cadd5f1c by axboe
io_uring: fix SQPOLL cpu validation
In io_sq_offload_start(), we call cpu_possible() on an unbounded cpu
value from userspace. On v5.1-rc7 on arm64 with
CONFIG_DEBUG_PER_CPU_MAPS, this results in a splat:
  WARNING: CPU: 1 PID: 27601 at include/linux/cpumask.h:121
cpu_max_bits_warn include/linux/cpumask.h:121 [inline]
There was an attempt to fix this in commit:
  917257daa0fea7a0 ("io_uring: only test SQPOLL cpu after we've verified
it")
... by adding a check after the cpu value had been limited to NR_CPU_IDS
using array_index_nospec(). However, this left an unbound check at the
start of the function, for which the warning still fires.
Let's fix this correctly by checking that the cpu value is bound by
nr_cpu_ids before passing it to cpu_possible(). Note that only
nr_cpu_ids of a cpumask are guaranteed to exist at runtime, and
nr_cpu_ids can be significantly smaller than NR_CPUs. For example, an
arm64 defconfig has NR_CPUS=256, while my test VM has 4 vCPUs.
Following the intent from the commit message for 917257daa0fea7a0, the
check is moved under the SQ_AFF branch, which is the only branch where
the cpu values is consumed. The check is performed before bounding the
value with array_index_nospec() so that we don't silently accept bogus
cpu values from userspace, where array_index_nospec() would force these
values to 0.
I suspect we can remove the array_index_nospec() call entirely, but I've
conservatively left that in place, updated to use nr_cpu_ids to match
the prior check.
Tested on arm64 with the Syzkaller reproducer:
  https://syzkaller.appspot.com/bug?extid=cd714a07c6de2bc34293
https://syzkaller.appspot.com/x/repro.syz?x=15d8b397200000
Full splat from before this patch:
WARNING: CPU: 1 PID: 27601 at include/linux/cpumask.h:121
cpu_max_bits_warn include/linux/cpumask.h:121 [inline] WARNING: CPU: 1
PID: 27601 at include/linux/cpumask.h:121 cpumask_check
include/linux/cpumask.h:128 [inline] WARNING: CPU: 1 PID: 27601 at
include/linux/cpumask.h:121 cpumask_test_cpu include/linux/cpumask.h:344
[inline] WARNING: CPU: 1 PID: 27601 at include/linux/cpumask.h:121
io_sq_offload_start fs/io_uring.c:2244 [inline] WARNING: CPU: 1 PID:
27601 at include/linux/cpumask.h:121 io_uring_create fs/io_uring.c:2864
[inline] WARNING: CPU: 1 PID: 27601 at include/linux/cpumask.h:121
io_uring_setup+0x1108/0x15a0 fs/io_uring.c:2916 Kernel panic - not
syncing: panic_on_warn set ... CPU: 1 PID: 27601 Comm: syz-executor.0
Not tainted 5.1.0-rc7 #3 Hardware name: linux,dummy-virt (DT) Call
trace:
dump_backtrace+0x0/0x2f0 include/linux/compiler.h:193
show_stack+0x20/0x30 arch/arm64/kernel/traps.c:158
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x110/0x190 lib/dump_stack.c:113
panic+0x384/0x68c kernel/panic.c:214
__warn+0x2bc/0x2c0 kernel/panic.c:571
report_bug+0x228/0x2d8 lib/bug.c:186
bug_handler+0xa0/0x1a0 arch/arm64/kernel/traps.c:956
call_break_hook arch/arm64/kernel/debug-monitors.c:301 [inline]
brk_handler+0x1d4/0x388 arch/arm64/kernel/debug-monitors.c:316
do_debug_exception+0x1a0/0x468 arch/arm64/mm/fault.c:831
el1_dbg+0x18/0x8c
cpu_max_bits_warn include/linux/cpumask.h:121 [inline]
cpumask_check include/linux/cpumask.h:128 [inline]
cpumask_test_cpu include/linux/cpumask.h:344 [inline]
io_sq_offload_start fs/io_uring.c:2244 [inline]
io_uring_create fs/io_uring.c:2864 [inline]
io_uring_setup+0x1108/0x15a0 fs/io_uring.c:2916
__do_sys_io_uring_setup fs/io_uring.c:2929 [inline]
__se_sys_io_uring_setup fs/io_uring.c:2926 [inline]
__arm64_sys_io_uring_setup+0x50/0x70 fs/io_uring.c:2926
__invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
invoke_syscall arch/arm64/kernel/syscall.c:47 [inline]
el0_svc_common.constprop.0+0x148/0x2e0 arch/arm64/kernel/syscall.c:83
el0_svc_handler+0xdc/0x100 arch/arm64/kernel/syscall.c:129
el0_svc+0x8/0xc arch/arm64/kernel/entry.S:948 SMP: stopping secondary
CPUs Dumping ftrace buffer:
  (ftrace buffer empty) Kernel Offset: disabled CPU features:
0x002,23000438 Memory Limit: none Rebooting in 1 seconds..
Fixes: 917257daa0fea7a0 ("io_uring: only test SQPOLL cpu after we've
verified it") Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc:
Jens Axboe <axboe@kernel.dk> Cc: Alexander Viro
<viro@zeniv.linux.org.uk> Cc: linux-block@vger.kernel.org Cc:
linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org
Simplied the logic
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 52e04ef4c9d459cba3afd86ec335a411b40b7fd2 by axboe
io_uring: free allocated io_memory once
If io_allocate_scq_urings() fails to allocate an sq_* region, it will
call io_mem_free() for any previously allocated regions, but leave
dangling pointers to these regions in the ctx. Any regions which have
not yet been allocated are left NULL. Note that when returning
-EOVERFLOW, the previously allocated sq_ring is not freed, which appears
to be an unintentional leak.
When io_allocate_scq_urings() fails, io_uring_create() will call
io_ring_ctx_wait_and_kill(), which calls io_mem_free() on all the sq_*
regions, assuming the pointers are valid and not NULL.
This can result in pages being freed multiple times, which has been
observed to corrupt the page state, leading to subsequent fun. This can
also result in virt_to_page() on NULL, resulting in the use of bogus
page addresses, and yet more subsequent fun. The latter can be detected
with CONFIG_DEBUG_VIRTUAL on arm64.
Adding a cleanup path to io_allocate_scq_urings() complicates the logic,
so let's leave it to io_ring_ctx_free() to consistently free these
pointers, and simplify the io_allocate_scq_urings() error paths.
Full splats from before this patch below. Note that the pointer logged
by the DEBUG_VIRTUAL "non-linear address" warning has been hashed, and
is actually NULL.
[   26.098129] page:ffff80000e949a00 count:0 mapcount:-128
mapping:0000000000000000 index:0x0
[   26.102976] flags: 0x63fffc000000()
[   26.104373] raw: 000063fffc000000 ffff80000e86c188 ffff80000ea3df08
0000000000000000
[   26.108917] raw: 0000000000000000 0000000000000001 00000000ffffff7f
0000000000000000
[   26.137235] page dumped because: VM_BUG_ON_PAGE(page_ref_count(page)
== 0)
[   26.143960] ------------[ cut here ]------------
[   26.146020] kernel BUG at include/linux/mm.h:547!
[   26.147586] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
[   26.149163] Modules linked in:
[   26.150287] Process syz-executor.21 (pid: 20204, stack limit =
0x000000000e9cefeb)
[   26.153307] CPU: 2 PID: 20204 Comm: syz-executor.21 Not tainted
5.1.0-rc7-00004-g7d30b2ea43d6 #18
[   26.156566] Hardware name: linux,dummy-virt (DT)
[   26.158089] pstate: 40400005 (nZcv daif +PAN -UAO)
[   26.159869] pc : io_mem_free+0x9c/0xa8
[   26.161436] lr : io_mem_free+0x9c/0xa8
[   26.162720] sp : ffff000013003d60
[   26.164048] x29: ffff000013003d60 x28: ffff800025048040
[   26.165804] x27: 0000000000000000 x26: ffff800025048040
[   26.167352] x25: 00000000000000c0 x24: ffff0000112c2820
[   26.169682] x23: 0000000000000000 x22: 0000000020000080
[   26.171899] x21: ffff80002143b418 x20: ffff80002143b400
[   26.174236] x19: ffff80002143b280 x18: 0000000000000000
[   26.176607] x17: 0000000000000000 x16: 0000000000000000
[   26.178997] x15: 0000000000000000 x14: 0000000000000000
[   26.181508] x13: 00009178a5e077b2 x12: 0000000000000001
[   26.183863] x11: 0000000000000000 x10: 0000000000000980
[   26.186437] x9 : ffff000013003a80 x8 : ffff800025048a20
[   26.189006] x7 : ffff8000250481c0 x6 : ffff80002ffe9118
[   26.191359] x5 : ffff80002ffe9118 x4 : 0000000000000000
[   26.193863] x3 : ffff80002ffefe98 x2 : 44c06ddd107d1f00
[   26.196642] x1 : 0000000000000000 x0 : 000000000000003e
[   26.198892] Call trace:
[   26.199893]  io_mem_free+0x9c/0xa8
[   26.201155]  io_ring_ctx_wait_and_kill+0xec/0x180
[   26.202688]  io_uring_setup+0x6c4/0x6f0
[   26.204091]  __arm64_sys_io_uring_setup+0x18/0x20
[   26.205576]  el0_svc_common.constprop.0+0x7c/0xe8
[   26.207186]  el0_svc_handler+0x28/0x78
[   26.208389]  el0_svc+0x8/0xc
[   26.209408] Code: aa0203e0 d0006861 9133a021 97fcdc3c (d4210000)
[   26.211995] ---[ end trace bdb81cd43a21e50d ]---
[   81.770626] ------------[ cut here ]------------
[   81.825015] virt_to_phys used for non-linear address:
000000000d42f2c7 (          (null))
[   81.827860] WARNING: CPU: 1 PID: 30171 at arch/arm64/mm/physaddr.c:15
__virt_to_phys+0x48/0x68
[   81.831202] Modules linked in:
[   81.832212] CPU: 1 PID: 30171 Comm: syz-executor.20 Not tainted
5.1.0-rc7-00004-g7d30b2ea43d6 #19
[   81.835616] Hardware name: linux,dummy-virt (DT)
[   81.836863] pstate: 60400005 (nZCv daif +PAN -UAO)
[   81.838727] pc : __virt_to_phys+0x48/0x68
[   81.840572] lr : __virt_to_phys+0x48/0x68
[   81.842264] sp : ffff80002cf67c70
[   81.843858] x29: ffff80002cf67c70 x28: ffff800014358e18
[   81.846463] x27: 0000000000000000 x26: 0000000020000080
[   81.849148] x25: 0000000000000000 x24: ffff80001bb01f40
[   81.851986] x23: ffff200011db06c8 x22: ffff2000127e3c60
[   81.854351] x21: ffff800014358cc0 x20: ffff800014358d98
[   81.856711] x19: 0000000000000000 x18: 0000000000000000
[   81.859132] x17: 0000000000000000 x16: 0000000000000000
[   81.861586] x15: 0000000000000000 x14: 0000000000000000
[   81.863905] x13: 0000000000000000 x12: ffff1000037603e9
[   81.866226] x11: 1ffff000037603e8 x10: 0000000000000980
[   81.868776] x9 : ffff80002cf67840 x8 : ffff80001bb02920
[   81.873272] x7 : ffff1000037603e9 x6 : ffff80001bb01f47
[   81.875266] x5 : ffff1000037603e9 x4 : dfff200000000000
[   81.876875] x3 : ffff200010087528 x2 : ffff1000059ecf58
[   81.878751] x1 : 44c06ddd107d1f00 x0 : 0000000000000000
[   81.880453] Call trace:
[   81.881164]  __virt_to_phys+0x48/0x68
[   81.882919]  io_mem_free+0x18/0x110
[   81.886585]  io_ring_ctx_wait_and_kill+0x13c/0x1f0
[   81.891212]  io_uring_setup+0xa60/0xad0
[   81.892881]  __arm64_sys_io_uring_setup+0x2c/0x38
[   81.894398]  el0_svc_common.constprop.0+0xac/0x150
[   81.896306]  el0_svc_handler+0x34/0x88
[   81.897744]  el0_svc+0x8/0xc
[   81.898715] ---[ end trace b4a703802243cbba ]---
Fixes: 2b188cc1bb857a9d ("Add io_uring IO interface") Signed-off-by:
Mark Rutland <mark.rutland@arm.com> Cc: Jens Axboe <axboe@kernel.dk> Cc:
Alexander Viro <viro@zeniv.linux.org.uk> Cc: linux-block@vger.kernel.org
Cc: linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 817869d2519f0cb7be5b3482129dadc806dfb747 by axboe
io_uring: drop req submit reference always in async punt
If we don't end up actually calling submit in io_sq_wq_submit_work(), we
still need to drop the submit reference to the request. If we don't,
then we can leak the request. This can happen if we race with ring
shutdown while flushing the workqueue for requests that require use of
the mm_struct.
Fixes: e65ef56db494 ("io_uring: use regular request ref counts")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit 60a27b906d1a372474669c914c10d6c993858a4a by axboe
block: fix handling for BIO_NO_PAGE_REF
Commit 399254aaf489211 ("block: add BIO_NO_PAGE_REF flag") introduces
BIO_NO_PAGE_REF, and once this flag is set for one bio, all pages in the
bio won't be get/put during IO.
However, if one bio is submitted via __blkdev_direct_IO_simple(), even
though BIO_NO_PAGE_REF is set, pages still may be put.
Fixes this issue by avoiding to put pages if BIO_NO_PAGE_REF is set.
Fixes: 399254aaf489211 ("block: add BIO_NO_PAGE_REF flag") Reviewed-by:
Christoph Hellwig <hch@lst.de> Signed-off-by: Ming Lei
<ming.lei@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/block_dev.c (diff)
Commit f5eb4d3b92a6a1096ef3480b54782a9409281300 by axboe
iov_iter: fix iov_iter_type
Commit 875f1d0769cd ("iov_iter: add ITER_BVEC_FLAG_NO_REF flag")
introduces one extra flag of ITER_BVEC_FLAG_NO_REF, and this flag is
stored into iter->type.
However, iov_iter_type() doesn't consider the new added flag, fix it by
masking this flag in iov_iter_type().
Fixes: 875f1d0769cd ("iov_iter: add ITER_BVEC_FLAG_NO_REF flag")
Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Ming Lei
<ming.lei@redhat.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedinclude/linux/uio.h (diff)
Commit b2cf86e1563e33a14a1c69b3e508d15dc12f804c by davem
packet: in recvmsg msg_name return at least sizeof sockaddr_ll
Packet send checks that msg_name is at least sizeof sockaddr_ll. Packet
recv must return at least this length, so that its output can be passed
unmodified to packet send.
This ceased to be true since adding support for lladdr longer than
sll_addr. Since, the return value uses true address length.
Always return at least sizeof sockaddr_ll, even if address length is
shorter. Zero the padding bytes.
Change v1->v2: do not overwrite zeroed padding again. use copy_len.
Fixes: 0fb375fb9b93 ("[AF_PACKET]: Allow for > 8 byte hardware
addresses.") Suggested-by: David Laight <David.Laight@aculab.com>
Signed-off-by: Willem de Bruijn <willemb@google.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/packet/af_packet.c (diff)
Commit 486efdc8f6ce802b27e15921d2353cc740c55451 by davem
packet: validate msg_namelen in send directly
Packet sockets in datagram mode take a destination address. Verify its
length before passing to dev_hard_header.
Prior to 2.6.14-rc3, the send code ignored sll_halen. This is
established behavior. Directly compare msg_namelen to dev->addr_len.
Change v1->v2: initialize addr in all paths
Fixes: 6b8d95f1795c4 ("packet: validate address length if non-zero")
Suggested-by: David Laight <David.Laight@aculab.com> Signed-off-by:
Willem de Bruijn <willemb@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/packet/af_packet.c (diff)
Commit 15d55bae4e3c43cd9f87fd93c73a263e172d34e1 by davem
selftests: fib_rule_tests: Fix icmp proto with ipv6
A recent commit returns an error if icmp is used as the ip-proto for
IPv6 fib rules. Update fib_rule_tests to send ipv6-icmp instead of icmp.
Fixes: 5e1a99eae8499 ("ipv4: Add ICMPv6 support when parse route
ipproto") Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiedtools/testing/selftests/net/fib_rule_tests.sh (diff)
Commit 2dcb003314032c6efb13a065ffae60d164b2dd35 by davem
net/tls: avoid NULL pointer deref on nskb->sk in fallback
update_chksum() accesses nskb->sk before it has been set by
complete_skb(), move the init up.
Fixes: e8f69799810c ("net/tls: Add generic NIC offload infrastructure")
Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Simon Horman <simon.horman@netronome.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/tls/tls_device_fallback.c (diff)
Commit d4ef647510b1200fe1c996ff1cbf5ac47eb930cc by axboe
io_uring: avoid page allocation warnings
In io_sqe_buffer_register() we allocate a number of arrays based on the
iov_len from the user-provided iov. While we limit iov_len to SZ_1G, we
can still attempt to allocate arrays exceeding MAX_ORDER.
On a 64-bit system with 4KiB pages, for an iov where iov_base = 0x10 and
iov_len = SZ_1G, we'll calculate that nr_pages = 262145. When we try to
allocate a corresponding array of (16-byte) bio_vecs, requiring 4194320
bytes, which is greater than 4MiB. This results in SLUB warning that
we're trying to allocate greater than MAX_ORDER, and failing the
allocation.
Avoid this by using kvmalloc() for allocations dependent on the
user-provided iov_len. At the same time, fix a leak of imu->bvec when
registration fails.
Full splat from before this patch:
WARNING: CPU: 1 PID: 2314 at mm/page_alloc.c:4595
__alloc_pages_nodemask+0x7ac/0x2938 mm/page_alloc.c:4595 Kernel panic -
not syncing: panic_on_warn set ... CPU: 1 PID: 2314 Comm:
syz-executor326 Not tainted 5.1.0-rc7-dirty #4 Hardware name:
linux,dummy-virt (DT) Call trace:
dump_backtrace+0x0/0x2f0 include/linux/compiler.h:193
show_stack+0x20/0x30 arch/arm64/kernel/traps.c:158
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x110/0x190 lib/dump_stack.c:113
panic+0x384/0x68c kernel/panic.c:214
__warn+0x2bc/0x2c0 kernel/panic.c:571
report_bug+0x228/0x2d8 lib/bug.c:186
bug_handler+0xa0/0x1a0 arch/arm64/kernel/traps.c:956
call_break_hook arch/arm64/kernel/debug-monitors.c:301 [inline]
brk_handler+0x1d4/0x388 arch/arm64/kernel/debug-monitors.c:316
do_debug_exception+0x1a0/0x468 arch/arm64/mm/fault.c:831
el1_dbg+0x18/0x8c
__alloc_pages_nodemask+0x7ac/0x2938 mm/page_alloc.c:4595
alloc_pages_current+0x164/0x278 mm/mempolicy.c:2132
alloc_pages include/linux/gfp.h:509 [inline]
kmalloc_order+0x20/0x50 mm/slab_common.c:1231
kmalloc_order_trace+0x30/0x2b0 mm/slab_common.c:1243
kmalloc_large include/linux/slab.h:480 [inline]
__kmalloc+0x3dc/0x4f0 mm/slub.c:3791
kmalloc_array include/linux/slab.h:670 [inline]
io_sqe_buffer_register fs/io_uring.c:2472 [inline]
__io_uring_register fs/io_uring.c:2962 [inline]
__do_sys_io_uring_register fs/io_uring.c:3008 [inline]
__se_sys_io_uring_register fs/io_uring.c:2990 [inline]
__arm64_sys_io_uring_register+0x9e0/0x1bc8 fs/io_uring.c:2990
__invoke_syscall arch/arm64/kernel/syscall.c:35 [inline]
invoke_syscall arch/arm64/kernel/syscall.c:47 [inline]
el0_svc_common.constprop.0+0x148/0x2e0 arch/arm64/kernel/syscall.c:83
el0_svc_handler+0xdc/0x100 arch/arm64/kernel/syscall.c:129
el0_svc+0x8/0xc arch/arm64/kernel/entry.S:948 SMP: stopping secondary
CPUs Dumping ftrace buffer:
  (ftrace buffer empty) Kernel Offset: disabled CPU features:
0x002,23000438 Memory Limit: none Rebooting in 1 seconds..
Fixes: edafccee56ff3167 ("io_uring: add support for pre-mapped user IO
buffers") Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc:
Alexander Viro <viro@zeniv.linux.org.uk> Cc: Jens Axboe
<axboe@kernel.dk> Cc: linux-fsdevel@vger.kernel.org Cc:
linux-block@vger.kernel.org Cc: linux-kernel@vger.kernel.org
Signed-off-by: Jens Axboe <axboe@kernel.dk>
The file was modifiedfs/io_uring.c (diff)
Commit d2f0c961148f65bc73eda72b9fa3a4e80973cb49 by davem
ipv4: ip_do_fragment: Preserve skb_iif during fragmentation
Previously, during fragmentation after forwarding, skb->skb_iif isn't
preserved, i.e. 'ip_copy_metadata' does not copy skb_iif from given
'from' skb.
As a result, ip_do_fragment's creates fragments with zero skb_iif,
leading to inconsistent behavior.
Assume for example an eBPF program attached at tc egress (post
forwarding) that examines __sk_buff->ingress_ifindex:
- the correct iif is observed if forwarding path does not involve
  fragmentation/refragmentation
- a bogus iif is observed if forwarding path involves
  fragmentation/refragmentatiom
Fix, by preserving skb_iif during 'ip_copy_metadata'.
Signed-off-by: Shmulik Ladkani <shmulik.ladkani@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/ip_output.c (diff)
Commit 6f303d60534c46aa1a239f29c321f95c83dda748 by torvalds
gcc-9: silence 'address-of-packed-member' warning
We already did this for clang, but now gcc has that warning too.  Yes,
yes, the address may be unaligned.  And that's kind of the point.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedMakefile (diff)
Commit cf676908846a06443fa5e6724ca3f5dd7460eca1 by torvalds
gcc-9: don't warn about uninitialized variable
I'm not sure what made gcc warn about this code now.  The 'ret' variable
does end up initialized in all cases, but it's definitely not obvious,
so the compiler is quite reasonable to warn about this.
So just add initialization to make it all much more obvious both to
compilers and to humans.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The file was modifieddrivers/i2c/i2c-core-base.c (diff)
Commit 459e3a21535ae3c7a9a123650e54f5c882b8fcbf by torvalds
gcc-9: properly declare the {pv,hv}clock_page storage
The pvlock_page and hvclock_page variables are (as the name implies)
addresses to pages, created by the linker script.
But we declared them as just "extern u8" variables, which _works_, but
now that gcc does some more bounds checking, it causes warnings like
    warning: array subscript 1 is outside array bounds of ‘u8[1]’
when we then access more than one byte from those variables.
Fix this by simply making the declaration of the variables match
reality, which makes the compiler happy too.
Signed-off-by: Linus Torvalds <torvalds@-linux-foundation.org>
The file was modifiedarch/x86/entry/vdso/vclock_gettime.c (diff)
Commit f68d7c44e76532e46f292ad941aa3706cb9e6e40 by davem
selftests: fib_rule_tests: print the result and return 1 if any tests
failed
Fixes: 65b2b4939a64 ("selftests: net: initial fib rule tests")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com> Reviewed-by: David
Ahern <dsahern@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedtools/testing/selftests/net/fib_rule_tests.sh (diff)
Commit 7e74e235bb31a1fefc28d5303da0718b88627ea8 by torvalds
gcc-9: don't warn about uninitialized btrfs extent_type variable
The 'extent_type' variable does seem to be reliably initialized, but
it's _very_ non-obvious, since there's a "goto next" case that jumps
over the normal initialization.  That will then always trigger the
"start >= extent_end" test, which will end up never falling through to
the use of that variable.
But the code is certainly not obvious, and the compiler warning looks
reasonable.  Make 'extent_type' an int, and initialize it to an invalid
negative value, which seems to be the common pattern in other places.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedfs/btrfs/inode.c (diff)
Commit 15d2aba7c602cd9005b20ff011b670547b3882c4 by bhelgaas
PCI/portdrv: Use shared MSI/MSI-X vector for Bandwidth Management
The Interrupt Message Number in the PCIe Capabilities register (PCIe
r4.0, sec 7.5.3.2) indicates which MSI/MSI-X vector is shared by
interrupts related to the PCIe Capability, including Link Bandwidth
Management and Link Autonomous Bandwidth Interrupts (Link Control,
7.5.3.7), Command Completed and Hot-Plug Interrupts (Slot Control,
7.5.3.10), and the PME Interrupt (Root Control, 7.5.3.12).
pcie_message_numbers() checked whether we want to enable PME or Hot-Plug
interrupts but neglected to check for Link Bandwidth Management, so if
we only wanted the Bandwidth Management interrupts, it decided we didn't
need any vectors at all.  Then pcie_port_enable_irq_vec() tried to
reallocate zero vectors, which failed, resulting in fallback to INTx.
On some systems, e.g., an X79-based workstation, that INTx seems broken
or not handled correctly, so we got spurious IRQ16 interrupts for
Bandwidth Management events.
Change pcie_message_numbers() so that if we want Link Bandwidth
Management interrupts, we use the shared MSI/MSI-X vector from the PCIe
Capabilities register.
Fixes: e8303bb7a75c ("PCI/LINK: Report degraded links via link bandwidth
notification") Link:
https://lore.kernel.org/lkml/155597243666.19387.1205950870601742062.stgit@gimli.home
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
[bhelgaas: changelog] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
The file was modifieddrivers/pci/pcie/portdrv_core.c (diff)
Commit f3505745c07ff50c22aeca9dde98762d1c8b5898 by davem
rds: ib: force endiannes annotation
While the endiannes is being handled correctly as indicated by the
comment above the offending line - sparse was unhappy with the missing
annotation as be64_to_cpu() expects a __be64 argument. To mitigate this
annotation all involved variables are changed to a consistent __le64 and
the
conversion to uint64_t delayed to the call to rds_cong_map_updated().
Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org> Acked-by: Santosh
Shilimkar <santosh.shilimkar@oracle.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/rds/ib_recv.c (diff)
Commit 886b7a50100a50f1cbd08a6f8ec5884dfbe082dc by davem
ipv6: A few fixes on dereferencing rt->from
It is a followup after the fix in commit 9c69a1320515 ("route: Avoid
crash from dereferencing NULL rt->from")
rt6_do_redirect(): 1. NULL checking is needed on rt->from because a
parallel
  fib6_info delete could happen that sets rt->from to NULL.
  (e.g. rt6_remove_exception() and fib6_drop_pcpu_from()).
2. fib6_info_hold() is not enough.  Same reason as (1).
  Meaning, holding dst->__refcnt cannot ensure
  rt->from is not NULL or rt->from->fib6_ref is not 0.
   Instead of using fib6_info_hold_safe() which ip6_rt_cache_alloc()
  is already doing, this patch chooses to extend the rcu section
  to keep "from" dereference-able after checking for NULL.
inet6_rtm_getroute(): 1. NULL checking is also needed on rt->from for a
similar reason.
  Note that inet6_rtm_getroute() is using RTNL_FLAG_DOIT_UNLOCKED.
Fixes: a68886a69180 ("net/ipv6: Make from in rt6_info rcu protected")
Signed-off-by: Martin KaFai Lau <kafai@fb.com> Acked-by: Wei Wang
<weiwan@google.com> Reviewed-by: David Ahern <dsahern@gmail.com>
Reviewed-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/ipv6/route.c (diff)
Commit 4dd2b82d5adfbe0b1587ccad7a8f76d826120f37 by davem
udp: fix GRO packet of death
syzbot was able to crash host by sending UDP packets with a 0 payload.
TCP does not have this issue since we do not aggregate packets without
payload.
Since dev_gro_receive() sets gso_size based on skb_gro_len(skb) it seems
not worth trying to cope with padded packets.
BUG: KASAN: slab-out-of-bounds in skb_gro_receive+0xf5f/0x10e0
net/core/skbuff.c:3826 Read of size 16 at addr ffff88808893fff0 by task
syz-executor612/7889
CPU: 0 PID: 7889 Comm: syz-executor612 Not tainted 5.1.0-rc7+ #96
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
__asan_report_load16_noabort+0x14/0x20 mm/kasan/generic_report.c:133
skb_gro_receive+0xf5f/0x10e0 net/core/skbuff.c:3826
udp_gro_receive_segment net/ipv4/udp_offload.c:382 [inline]
call_gro_receive include/linux/netdevice.h:2349 [inline]
udp_gro_receive+0xb61/0xfd0 net/ipv4/udp_offload.c:414
udp4_gro_receive+0x763/0xeb0 net/ipv4/udp_offload.c:478
inet_gro_receive+0xe72/0x1110 net/ipv4/af_inet.c:1510
dev_gro_receive+0x1cd0/0x23c0 net/core/dev.c:5581
napi_gro_frags+0x36b/0xd10 net/core/dev.c:5843
tun_get_user+0x2f24/0x3fb0 drivers/net/tun.c:1981
tun_chr_write_iter+0xbd/0x156 drivers/net/tun.c:2027
call_write_iter include/linux/fs.h:1866 [inline]
do_iter_readv_writev+0x5e1/0x8e0 fs/read_write.c:681
do_iter_write fs/read_write.c:957 [inline]
do_iter_write+0x184/0x610 fs/read_write.c:938
vfs_writev+0x1b3/0x2f0 fs/read_write.c:1002
do_writev+0x15e/0x370 fs/read_write.c:1037
__do_sys_writev fs/read_write.c:1110 [inline]
__se_sys_writev fs/read_write.c:1107 [inline]
__x64_sys_writev+0x75/0xb0 fs/read_write.c:1107
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x441cc0 Code: 05 48
3d 01 f0 ff ff 0f 83 9d 09 fc ff c3 66 2e 0f 1f 84 00 00 00 00 00 66 90
83 3d 51 93 29 00 00 75 14 b8 14 00 00 00 0f 05 <48> 3d 01 f0 ff ff 0f
83 74 09 fc ff c3 48 83 ec 08 e8 ba 2b 00 00 RSP: 002b:00007ffe8c716118
EFLAGS: 00000246 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX:
00007ffe8c716150 RCX: 0000000000441cc0 RDX: 0000000000000001 RSI:
00007ffe8c716170 RDI: 00000000000000f0 RBP: 0000000000000000 R08:
000000000000ffff R09: 0000000000a64668 R10: 0000000020000040 R11:
0000000000000246 R12: 000000000000c2d9 R13: 0000000000402b50 R14:
0000000000000000 R15: 0000000000000000
Allocated by task 5143:
save_stack+0x45/0xd0 mm/kasan/common.c:75
set_track mm/kasan/common.c:87 [inline]
__kasan_kmalloc mm/kasan/common.c:497 [inline]
__kasan_kmalloc.constprop.0+0xcf/0xe0 mm/kasan/common.c:470
kasan_slab_alloc+0xf/0x20 mm/kasan/common.c:505
slab_post_alloc_hook mm/slab.h:437 [inline]
slab_alloc mm/slab.c:3393 [inline]
kmem_cache_alloc+0x11a/0x6f0 mm/slab.c:3555
mm_alloc+0x1d/0xd0 kernel/fork.c:1030
bprm_mm_init fs/exec.c:363 [inline]
__do_execve_file.isra.0+0xaa3/0x23f0 fs/exec.c:1791
do_execveat_common fs/exec.c:1865 [inline]
do_execve fs/exec.c:1882 [inline]
__do_sys_execve fs/exec.c:1958 [inline]
__se_sys_execve fs/exec.c:1953 [inline]
__x64_sys_execve+0x8f/0xc0 fs/exec.c:1953
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Freed by task 5351:
save_stack+0x45/0xd0 mm/kasan/common.c:75
set_track mm/kasan/common.c:87 [inline]
__kasan_slab_free+0x102/0x150 mm/kasan/common.c:459
kasan_slab_free+0xe/0x10 mm/kasan/common.c:467
__cache_free mm/slab.c:3499 [inline]
kmem_cache_free+0x86/0x260 mm/slab.c:3765
__mmdrop+0x238/0x320 kernel/fork.c:677
mmdrop include/linux/sched/mm.h:49 [inline]
finish_task_switch+0x47b/0x780 kernel/sched/core.c:2746
context_switch kernel/sched/core.c:2880 [inline]
__schedule+0x81b/0x1cc0 kernel/sched/core.c:3518
preempt_schedule_irq+0xb5/0x140 kernel/sched/core.c:3745
retint_kernel+0x1b/0x2d
arch_local_irq_restore arch/x86/include/asm/paravirt.h:767 [inline]
kmem_cache_free+0xab/0x260 mm/slab.c:3766
anon_vma_chain_free mm/rmap.c:134 [inline]
unlink_anon_vmas+0x2ba/0x870 mm/rmap.c:401
free_pgtables+0x1af/0x2f0 mm/memory.c:394
exit_mmap+0x2d1/0x530 mm/mmap.c:3144
__mmput kernel/fork.c:1046 [inline]
mmput+0x15f/0x4c0 kernel/fork.c:1067
exec_mmap fs/exec.c:1046 [inline]
flush_old_exec+0x8d9/0x1c20 fs/exec.c:1279
load_elf_binary+0x9bc/0x53f0 fs/binfmt_elf.c:864
search_binary_handler fs/exec.c:1656 [inline]
search_binary_handler+0x17f/0x570 fs/exec.c:1634
exec_binprm fs/exec.c:1698 [inline]
__do_execve_file.isra.0+0x1394/0x23f0 fs/exec.c:1818
do_execveat_common fs/exec.c:1865 [inline]
do_execve fs/exec.c:1882 [inline]
__do_sys_execve fs/exec.c:1958 [inline]
__se_sys_execve fs/exec.c:1953 [inline]
__x64_sys_execve+0x8f/0xc0 fs/exec.c:1953
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
The buggy address belongs to the object at ffff88808893f7c0
which belongs to the cache mm_struct of size 1496 The buggy address is
located 600 bytes to the right of
1496-byte region [ffff88808893f7c0, ffff88808893fd98) The buggy address
belongs to the page: page:ffffea0002224f80 count:1 mapcount:0
mapping:ffff88821bc40ac0 index:0xffff88808893f7c0 compound_mapcount: 0
flags: 0x1fffc0000010200(slab|head) raw: 01fffc0000010200
ffffea00025b4f08 ffffea00027b9d08 ffff88821bc40ac0 raw: ffff88808893f7c0
ffff88808893e440 0000000100000001 0000000000000000 page dumped because:
kasan: bad access detected
Memory state around the buggy address:
ffff88808893fe80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff88808893ff00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
>ffff88808893ff80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
                                                            ^
ffff888088940000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ffff888088940080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Fixes: e20cf8d3f1f7 ("udp: implement GRO for plain UDP sockets.")
Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: Paolo Abeni
<pabeni@redhat.com> Reported-by: syzbot <syzkaller@googlegroups.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/udp_offload.c (diff)
Commit 12f363511d47f86c49b7766c349989cb33fd61a8 by mpe
powerpc/32s: Fix BATs setting with CONFIG_STRICT_KERNEL_RWX
Serge reported some crashes with CONFIG_STRICT_KERNEL_RWX enabled on a
book3s32 machine.
Analysis shows two issues:
- BATs addresses and sizes are not properly aligned.
- There is a gap between the last address covered by BATs and the
   first address covered by pages.
Memory mapped with DBATs: 0: 0xc0000000-0xc07fffff 0x00000000 Kernel RO
coherent 1: 0xc0800000-0xc0bfffff 0x00800000 Kernel RO coherent 2:
0xc0c00000-0xc13fffff 0x00c00000 Kernel RW coherent 3:
0xc1400000-0xc23fffff 0x01400000 Kernel RW coherent 4:
0xc2400000-0xc43fffff 0x02400000 Kernel RW coherent 5:
0xc4400000-0xc83fffff 0x04400000 Kernel RW coherent 6:
0xc8400000-0xd03fffff 0x08400000 Kernel RW coherent 7:
0xd0400000-0xe03fffff 0x10400000 Kernel RW coherent
Memory mapped with pages: 0xe1000000-0xefffffff  0x21000000       240M 
     rw       present           dirty  accessed
This patch fixes both issues. With the patch, we get the following which
is as expected:
Memory mapped with DBATs: 0: 0xc0000000-0xc07fffff 0x00000000 Kernel RO
coherent 1: 0xc0800000-0xc0bfffff 0x00800000 Kernel RO coherent 2:
0xc0c00000-0xc0ffffff 0x00c00000 Kernel RW coherent 3:
0xc1000000-0xc1ffffff 0x01000000 Kernel RW coherent 4:
0xc2000000-0xc3ffffff 0x02000000 Kernel RW coherent 5:
0xc4000000-0xc7ffffff 0x04000000 Kernel RW coherent 6:
0xc8000000-0xcfffffff 0x08000000 Kernel RW coherent 7:
0xd0000000-0xdfffffff 0x10000000 Kernel RW coherent
Memory mapped with pages: 0xe0000000-0xefffffff  0x20000000       256M 
     rw       present           dirty  accessed
Fixes: 63b2bc619565 ("powerpc/mm/32s: Use BATs for STRICT_KERNEL_RWX")
Reported-by: Serge Belyshev <belyshev@depni.sinp.msu.ru> Acked-by:
Segher Boessenkool <segher@kernel.crashing.org> Signed-off-by:
Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Michael
Ellerman <mpe@ellerman.id.au>
The file was modifiedarch/powerpc/mm/ppc_mmu_32.c (diff)
Commit 4e9036042fedaffcd868d7f7aa948756c48c637d by viro
ufs: fix braino in ufs_get_inode_gid() for solaris UFS flavour
To choose whether to pick the GID from the old (16bit) or new (32bit)
field, we should check if the old gid field is set to 0xffff.  Mainline
checks the old *UID* field instead - cut'n'paste from the corresponding
code in ufs_get_inode_uid().
Fixes: 252e211e90ce Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
The file was modifiedfs/ufs/util.h (diff)
Commit 2078e1e7f7e0e21bd0291908f3037c39e666d27b by bhelgaas
PCI/LINK: Add Kconfig option (default off)
e8303bb7a75c ("PCI/LINK: Report degraded links via link bandwidth
notification") added dmesg logging whenever a link changes speed or
width to a state that is considered degraded.  Unfortunately, it cannot
differentiate signal integrity-related link changes from those
intentionally initiated by an endpoint driver, including drivers that
may live in userspace or VMs when making use of vfio-pci.  Some GPU
drivers actively manage the link state to save power, which generates a
stream of messages like this:
  vfio-pci 0000:07:00.0: 32.000 Gb/s available PCIe bandwidth, limited
by 2.5 GT/s x16 link at 0000:00:02.0 (capable of 64.000 Gb/s with 5 GT/s
x16 link)
Since we can't distinguish the intentional changes from the signal
integrity issues, leave the reporting turned off by default.  Add a
Kconfig option to turn it on if desired.
Fixes: e8303bb7a75c ("PCI/LINK: Report degraded links via link bandwidth
notification") Link:
https://lore.kernel.org/linux-pci/20190501142942.26972-1-keith.busch@intel.com
Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Bjorn
Helgaas <bhelgaas@google.com>
The file was modifieddrivers/pci/pcie/Kconfig (diff)
The file was modifieddrivers/pci/pcie/Makefile (diff)
The file was modifieddrivers/pci/pcie/portdrv.h (diff)
Commit 6bac9bc273cdab6157ad7a2ead09400aabfc445b by wsa
i2c: designware: ratelimit 'transfer when suspended' errors
There are two problems with dev_err() here. One: It is not ratelimited.
Two: We don't see which driver tried to transfer something with a
suspended adapter. Switch to dev_WARN_ONCE to fix both issues. Drawback
is that we don't see if multiple drivers are trying to transfer while
suspended. They need to be discovered one after the other now. This is
better than a high CPU load because a really broken driver might try to
resend endlessly.
Link: https://bugs.archlinux.org/task/62391 Fixes: 275154155538 ("i2c:
designware: Do not allow i2c_dw_xfer() calls while suspended")
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reported-by: skidnik <skidnik@gmail.com> Acked-by: Jarkko Nikula
<jarkko.nikula@linux.intel.com> Reviewed-by: Andy Shevchenko
<andriy.shevchenko@linux.intel.com> Tested-by: skidnik
<skidnik@gmail.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
The file was modifieddrivers/i2c/busses/i2c-designware-master.c (diff)
Commit 0e3b74e26280f2cf8753717a950b97d424da6046 by mingo
perf/x86/amd: Update generic hardware cache events for Family 17h
Add a new amd_hw_cache_event_ids_f17h assignment structure set for AMD
families 17h and above, since a lot has changed.  Specifically:
L1 Data Cache
The data cache access counter remains the same on Family 17h.
For DC misses, PMCx041's definition changes with Family 17h, so instead
we use the L2 cache accesses from L1 data cache misses counter
(PMCx060,umask=0xc8).
For DC hardware prefetch events, Family 17h breaks compatibility for
PMCx067 "Data Prefetcher", so instead, we use PMCx05a "Hardware Prefetch
DC Fills."
L1 Instruction Cache
PMCs 0x80 and 0x81 (32-byte IC fetches and misses) are backward
compatible on Family 17h.
For prefetches, we remove the erroneous PMCx04B assignment which counts
how many software data cache prefetch load instructions were dispatched.
LL - Last Level Cache
Removing PMCs 7D, 7E, and 7F assignments, as they do not exist on Family
17h, where the last level cache is L3.  L3 counters can be accessed
using the existing AMD Uncore driver.
Data TLB
On Intel machines, data TLB accesses ("dTLB-loads") are assigned to
counters that count load/store instructions retired.  This is
inconsistent with instruction TLB accesses, where Intel implementations
report iTLB misses that hit in the STLB.
Ideally, dTLB-loads would count higher level dTLB misses that hit in
lower level TLBs, and dTLB-load-misses would report those that also
missed in those lower-level TLBs, therefore causing a page table walk.
That would be consistent with instruction TLB operation, remove the
redundancy between dTLB-loads and L1-dcache-loads, and prevent perf from
producing artificially low percentage ratios, i.e. the "0.01%" below:
        42,550,869      L1-dcache-loads
       41,591,860      dTLB-loads
            4,802      dTLB-load-misses          #    0.01% of all dTLB
cache hits
        7,283,682      L1-dcache-stores
        7,912,392      dTLB-stores
              310      dTLB-store-misses
On AMD Families prior to 17h, the "Data Cache Accesses" counter is used,
which is slightly better than load/store instructions retired, but still
counts in terms of individual load/store operations instead of TLB
operations.
So, for AMD Families 17h and higher, this patch assigns "dTLB-loads" to
a counter for L1 dTLB misses that hit in the L2 dTLB, and
"dTLB-load-misses" to a counter for L1 DTLB misses that caused L2 DTLB
misses and therefore also caused page table walks.  This results in a
much more accurate view of data TLB performance:
        60,961,781      L1-dcache-loads
            4,601      dTLB-loads
              963      dTLB-load-misses          #   20.93% of all dTLB
cache hits
Note that for all AMD families, data loads and stores are combined in a
single accesses counter, so no 'L1-dcache-stores' are reported
separately, and stores are counted with loads in 'L1-dcache-loads'.
Also note that the "% of all dTLB cache hits" string is misleading
because (a) "dTLB cache": although TLBs can be considered caches for
page tables, in this context, it can be misinterpreted as data cache
hits because the figures are similar (at least on Intel), and (b) not
all those loads (technically accesses) technically "hit" at that
hardware level.  "% of all dTLB accesses" would be more clear/accurate.
Instruction TLB
On Intel machines, 'iTLB-loads' measure iTLB misses that hit in the
STLB, and 'iTLB-load-misses' measure iTLB misses that also missed in the
STLB and completed a page table walk.
For AMD Family 17h and above, for 'iTLB-loads' we replace the erroneous
instruction cache fetches counter with PMCx084
"L1 ITLB Miss, L2 ITLB Hit".
For 'iTLB-load-misses' we still use PMCx085 "L1 ITLB Miss, L2 ITLB
Miss", but set a 0xff umask because without it the event does not get
counted.
Branch Predictor (BPU)
PMCs 0xc2 and 0xc3 continue to be valid across all AMD Families.
Node Level Events
Family 17h does not have a PMCx0e9 counter, and corresponding counters
have not been made available publicly, so for now, we mark them as
unsupported for Families 17h and above.
Reference:
  "Open-Source Register Reference For AMD Family 17h Processors Models
00h-2Fh"
Released 7/17/2018, Publication #56255, Revision 3.03:
https://www.amd.com/system/files/TechDocs/56255_OSRR.pdf
[ mingo: tidied up the line breaks. ] Signed-off-by: Kim Phillips
<kim.phillips@amd.com> Cc: <stable@vger.kernel.org> # v4.9+ Cc:
Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Arnaldo
Carvalho de Melo <acme@redhat.com> Cc: Borislav Petkov <bp@alien8.de>
Cc: H. Peter Anvin <hpa@zytor.com> Cc: Janakarajan Natarajan
<Janakarajan.Natarajan@amd.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc:
Linus Torvalds <torvalds@linux-foundation.org> Cc: Martin Liška
<mliska@suse.cz> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Pu Wen <puwen@hygon.cn> Cc: Stephane
Eranian <eranian@google.com> Cc: Suravee Suthikulpanit
<Suravee.Suthikulpanit@amd.com> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Thomas Lendacky <Thomas.Lendacky@amd.com> Cc: Vince Weaver
<vincent.weaver@maine.edu> Cc: linux-kernel@vger.kernel.org Cc:
linux-perf-users@vger.kernel.org Fixes: e40ed1542dd7 ("perf/x86: Add
perf support for AMD family-17h processors") Signed-off-by: Ingo Molnar
<mingo@kernel.org>
The file was modifiedarch/x86/events/amd/core.c (diff)
Commit 1804569d87de903b4d746ba71512c3ed0a890d65 by mingo
MAINTAINERS: Include vendor specific files under arch/*/events/*
Add an explicit subdirectory specification for arch/x86/events/amd to
the MAINTAINERS file, to distinguish it from its parent. This will
produce the correct set of maintainers for the files found therein.
Signed-off-by: Kim Phillips <kim.phillips@amd.com> Cc: Alexander
Shishkin <alexander.shishkin@linux.intel.com> Cc: Borislav Petkov
<bp@alien8.de> Cc: Gary Hook <Gary.Hook@amd.com> Cc: H. Peter Anvin
<hpa@zytor.com> Cc: Janakarajan Natarajan
<Janakarajan.Natarajan@amd.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc:
Linus Torvalds <torvalds@linux-foundation.org> Cc: Martin Liška
<mliska@suse.cz> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter
Zijlstra <peterz@infradead.org> Cc: Pu Wen <puwen@hygon.cn> Cc: Stephane
Eranian <eranian@google.com> Cc: Suravee Suthikulpanit
<Suravee.Suthikulpanit@amd.com> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Thomas Lendacky <Thomas.Lendacky@amd.com> Cc: Vince Weaver
<vincent.weaver@maine.edu> Cc: linux-kernel@vger.kernel.org Fixes:
39b0332a2158 ("perf/x86: Move perf_event_amd.c ........... =>
x86/events/amd/core.c") Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedMAINTAINERS (diff)
Commit fb31fbef9c35fbc4fc15cbf8bfafa96e5638d8d5 by wsa
MAINTAINERS: friendly takeover of i2c-gpio driver
I haven't heard from Haavard in years despite putting him to the CC list
for i2c-gpio related mails. Since I was doing the work on this driver
for a while now, let me take official maintainership, so it will be more
clear to users.
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Acked-by:
Haavard Skinnemoen <hskinnemoen@gmail.com> Signed-off-by: Wolfram Sang
<wsa@the-dreams.de>
The file was modifiedMAINTAINERS (diff)
Commit 95e0cf3caeb11e1b0398c747b5cfa12828263824 by wsa
i2c: synquacer: fix enumeration of slave devices
The I2C host driver for SynQuacer fails to populate the of_node and ACPI
companion fields of the struct i2c_adapter it instantiates, resulting in
enumeration of the subordinate I2C bus to fail.
Fixes: 0d676a6c4390 ("i2c: add support for Socionext SynQuacer I2C
controller") Cc: <stable@vger.kernel.org> # v4.19+ Signed-off-by: Ard
Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Wolfram Sang
<wsa@the-dreams.de>
The file was modifieddrivers/i2c/busses/i2c-synquacer.c (diff)
Commit 72bfcee11cf89509795c56b0e40a3785ab00bbdd by wsa
i2c: Prevent runtime suspend of adapter when Host Notify is required
Multiple users have reported their Synaptics touchpad has stopped
working between v4.20.1 and v4.20.2 when using SMBus interface.
The culprit for this appeared to be commit c5eb1190074c ("PCI / PM:
Allow runtime PM without callback functions") that fixed the runtime PM
for i2c-i801 SMBus adapter. Those Synaptics touchpad are using i2c-i801
for SMBus communication and testing showed they are able to get back
working by preventing the runtime suspend of adapter.
Normally when i2c-i801 SMBus adapter transmits with the client it
resumes before operation and autosuspends after.
However, if client requires SMBus Host Notify protocol, what those
Synaptics touchpads do, then the host adapter must not go to runtime
suspend since then it cannot process incoming SMBus Host Notify commands
the client may send.
Fix this by keeping I2C/SMBus adapter active in case client requires
Host Notify.
Reported-by: Keijo Vaara <ferdasyn@rocketmail.com> Link:
https://bugzilla.kernel.org/show_bug.cgi?id=203297 Fixes: c5eb1190074c
("PCI / PM: Allow runtime PM without callback functions") Cc:
stable@vger.kernel.org # v4.20+ Signed-off-by: Jarkko Nikula
<jarkko.nikula@linux.intel.com> Acked-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Tested-by: Keijo Vaara
<ferdasyn@rocketmail.com> Signed-off-by: Wolfram Sang
<wsa@the-dreams.de>
The file was modifieddrivers/i2c/i2c-core-base.c (diff)
Commit 2e712675ffd1331bb527dfc851b0e98cd684c2f1 by acme
perf bpf: Return value with unlocking in perf_env__find_btf()
In perf_env__find_btf(), we're returning without unlocking
"env->bpf_progs.lock". There may be cause lockdep issue.
Detected by CoversityScan, CID# 1444762:(program hangs(LOCK))
Signed-off-by: Bo YU <tsu.yubo@gmail.com> Acked-by: Jiri Olsa
<jolsa@kernel.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc:
Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Alexei
Starovoitov <ast@kernel.org> Cc: Daniel Borkmann <daniel@iogearbox.net>
Cc: Martin KaFai Lau <kafai@fb.com> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Song
Liu <songliubraving@fb.com> Cc: Yonghong Song <yhs@fb.com> Cc:
bpf@vger.kernel.org Cc: netdev@vger.kernel.org Fixes: 2db7b1e0bd49d:
(perf bpf: Return NULL when RB tree lookup fails in
perf_env__find_btf()) Link:
http://lkml.kernel.org/r/20190422080138.10088-1-tsu.yubo@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/env.c (diff)
Commit 24e45b49eef07814e0507507161cd06f15b8ee1b by acme
tools uapi x86: Sync vmx.h with the kernel
To pick up the changes from:
  2b27924bb1d4 ("KVM: nVMX: always use early vmcs check when EPT is
disabled")
That causes this object in the tools/perf build process to be rebuilt:
  CC       /tmp/build/perf/arch/x86/util/kvm-stat.o
But it isn't using VMX_ABORT_ prefixed constants, so no change in
behaviour.
This silences this perf build warning:
  Warning: Kernel ABI header at 'tools/arch/x86/include/uapi/asm/vmx.h'
differs from latest version at 'arch/x86/include/uapi/asm/vmx.h'
diff -u tools/arch/x86/include/uapi/asm/vmx.h
arch/x86/include/uapi/asm/vmx.h
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Paolo
Bonzini <pbonzini@redhat.com> Link:
https://lkml.kernel.org/n/tip-bjbo3zc0r8i8oa0udpvftya6@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/arch/x86/include/uapi/asm/vmx.h (diff)
Commit 01e985e900d3e602e9b1a55372a8e5274012a417 by acme
perf annotate: Fix build on 32 bit for BPF annotation
Commit 6987561c9e86 ("perf annotate: Enable annotation of BPF programs")
adds support for BPF programs annotations but the new code does not
build on 32-bit.
Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@canonical.com>
Acked-by: Song Liu <songliubraving@fb.com> Fixes: 6987561c9e86 ("perf
annotate: Enable annotation of BPF programs") Link:
http://lkml.kernel.org/r/20190403194452.10845-1-cascardo@canonical.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/annotate.c (diff)
Commit 5f05182fab9a29fea6c4ab8113be45adf0c11bf0 by acme
tools lib traceevent: Change tag string for error
The traceevent lib is used by the perf tool, and when executing
  perf test -v 6
it outputs error log on the ARM64 platform:
  running test 33 '*:*'trace-cmd: No such file or directory
  [...]
  trace-cmd: Invalid argument
The trace event parsing code originally came from trace-cmd so it keeps
the tag string "trace-cmd" for errors, this easily introduces the
impression that the perf tool launches trace-cmd command for trace event
parsing, but in fact the related parsing is accomplished by the
traceevent lib.
This patch changes the tag string to "libtraceevent" so that we can
avoid confusion and let users to more easily connect the error with
traceevent lib.
Signed-off-by: Leo Yan <leo.yan@linaro.org> Acked-by: Steven Rostedt
(VMware) <rostedt@goodmis.org> Link:
http://lkml.kernel.org/r/20190424013802.27569-1-leo.yan@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/lib/traceevent/parse-utils.c (diff)
Commit bf561d3c13423fc54daa19b5d49dc15fafdb7acc by acme
perf bench numa: Add define for RUSAGE_THREAD if not present
While cross building perf to the ARC architecture on a fedora 30 host,
we were failing with:
      CC       /tmp/build/perf/bench/numa.o
bench/numa.c: In function ‘worker_thread’:
bench/numa.c:1261:12: error: ‘RUSAGE_THREAD’ undeclared (first use in
this function); did you mean ‘SIGEV_THREAD’?
   getrusage(RUSAGE_THREAD, &rusage);
             ^~~~~~~~~~~~~
             SIGEV_THREAD
bench/numa.c:1261:12: note: each undeclared identifier is reported only
once for each function it appears in
[perfbuilder@60d5802468f6 perf]$
/arc_gnu_2019.03-rc1_prebuilt_uclibc_le_archs_linux_install/bin/arc-linux-gcc
--version | head -1 arc-linux-gcc (ARCv2 ISA Linux uClibc toolchain
2019.03-rc1) 8.3.1 20190225
[perfbuilder@60d5802468f6 perf]$
Trying to reproduce a report by Vineet, I noticed that, with just
cross-built zlib and numactl libraries, I ended up with the above
failure.
So, since RUSAGE_THREAD is available as a define, check for that and
numactl libraries, I ended up with the above failure.
So, since RUSAGE_THREAD is available as a define in the system headers,
check if it is defined in the 'perf bench numa' sources and define it if
not.
Now it builds and I have to figure out if the problem reported by Vineet
only takes place if we have libelf or some other library available.
Cc: Arnd Bergmann <arnd@arndb.de> Cc: Jiri Olsa <jolsa@kernel.org> Cc:
linux-snps-arc@lists.infradead.org Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Vineet Gupta <Vineet.Gupta1@synopsys.com>
Link:
https://lkml.kernel.org/n/tip-2wb4r1gir9xrevbpq7qp0amk@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/bench/numa.c (diff)
Commit 167e418fa0871c083e2c74508d73012abb01e6f7 by acme
perf report: Report OOM in status line in the GTK UI
An -ENOMEM error is not reported in the GTK GUI.  Instead this error
message pops up on the screen:
[root@m35lp76 perf]# ./perf  report -i perf.data.error68-1
Processing events... [974K/3M]
Error:failed to process sample
0xf4198 [0x8]: failed to process type: 68
However when I use the same perf.data file with --stdio it works:
[root@m35lp76 perf]# ./perf  report -i perf.data.error68-1 --stdio \
| head -12
  # Total Lost Samples: 0
#
# Samples: 76K of event 'cycles'
# Event count (approx.): 99056160000
#
# Overhead  Command          Shared Object      Symbol
# ........  ...............  .................  .........
#
    8.81%  find             [kernel.kallsyms]  [k] ftrace_likely_update
    8.74%  swapper          [kernel.kallsyms]  [k] ftrace_likely_update
    8.34%  sshd             [kernel.kallsyms]  [k] ftrace_likely_update
    2.19%  kworker/u512:1-  [kernel.kallsyms]  [k] ftrace_likely_update
The sample precentage is a bit low.....
The GUI always fails in the FINISHED_ROUND event (68) and does not
indicate the reason why.
When happened is the following. Perf report calls a lot of functions and
down deep when a FINISHED_ROUND event is processed, these functions are
called:
  perf_session__process_event()
+ perf_session__process_user_event()
   + process_finished_round()
     + ordered_events__flush()
       + __ordered_events__flush()
  + do_flush()
    + ordered_events__deliver_event()
      + perf_session__deliver_event()
        + machine__deliver_event()
          + perf_evlist__deliver_event()
            + process_sample_event()
              + hist_entry_iter_add() --> only called in GUI case!!!
                + hist_iter__report__callback()
                  + symbol__inc_addr_sample()
                    Now this functions runs out of memory and
    returns -ENOMEM. This is reported all the way up
    until function
perf_session__process_event() returns to its caller, where -ENOMEM is
changed to -EINVAL and processing stops:
if ((skip = perf_session__process_event(session, event, head)) < 0) {
     pr_err("%#" PRIx64 " [%#x]: failed to process type: %d\n",
     head, event->header.size, event->header.type);
     err = -EINVAL;
     goto out_err;
}
This occurred in the FINISHED_ROUND event when it has to process some
10000 entries and ran out of memory.
This patch indicates the root cause and displays it in the status line
of ther perf report GUI.
Output before (on GUI status line):
  0xf4198 [0x8]: failed to process type: 68
Output after:
  0xf4198 [0x8]: failed to process type: 68 [not enough memory]
Committer notes:
the 'skip' variable needs to be initialized to -EINVAL, so that when the
size is less than sizeof(struct perf_event_attr) we avoid this valid
compiler warning:
  util/session.c: In function ‘perf_session__process_events’:
util/session.c:1936:7: error: ‘skip’ may be used uninitialized in this
function [-Werror=maybe-uninitialized]
    err = skip;
    ~~~~^~~~~~
util/session.c:1874:6: note: ‘skip’ was declared here
   s64 skip;
       ^~~~
cc1: all warnings being treated as errors
Signed-off-by: Thomas Richter <tmricht@linux.ibm.com> Reviewed-by:
Hendrik Brueckner <brueckner@linux.ibm.com> Reviewed-by: Jiri Olsa
<jolsa@redhat.com> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc:
Martin Schwidefsky <schwidefsky@de.ibm.com> Link:
http://lkml.kernel.org/r/20190423105303.61683-1-tmricht@linux.ibm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/session.c (diff)
Commit cf0c37b6dbf74fb71bea07b516612d29e00dcbc4 by acme
perf cs-etm: Don't check cs_etm_queue::prev_packet validity
Since cs_etm_queue::prev_packet is allocated for all cases, it will
never be NULL pointer; now validity checking prev_packet is pointless,
remove all of them.
Signed-off-by: Leo Yan <leo.yan@linaro.org> Tested-by: Robert Walker
<robert.walker@arm.com> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Mike Leach
<mike.leach@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc:
Suzuki K Poulouse <suzuki.poulose@arm.com> Cc:
linux-arm-kernel@lists.infradead.org Link:
http://lkml.kernel.org/r/20190428083228.20246-2-leo.yan@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/cs-etm.c (diff)
Commit 35bb59c10a6d0578806dd500477dae9cb4be344e by acme
perf cs-etm: Always allocate memory for cs_etm_queue::prev_packet
Robert Walker reported a segmentation fault is observed when process
CoreSight trace data; this issue can be easily reproduced by the command
'perf report --itrace=i1000i' for decoding tracing data.
If neither the 'b' flag (synthesize branches events) nor 'l' flag
(synthesize last branch entries) are specified to option '--itrace',
cs_etm_queue::prev_packet will not been initialised.  After merging the
code to support exception packets and sample flags, there introduced a
number of uses of cs_etm_queue::prev_packet without checking whether it
is valid, for these cases any accessing to uninitialised prev_packet
will cause crash.
As cs_etm_queue::prev_packet is used more widely now and it's already
hard to follow which functions have been called in a context where the
validity of cs_etm_queue::prev_packet has been checked, this patch
always allocates memory for cs_etm_queue::prev_packet.
Reported-by: Robert Walker <robert.walker@arm.com> Suggested-by: Robert
Walker <robert.walker@arm.com> Signed-off-by: Leo Yan
<leo.yan@linaro.org> Tested-by: Robert Walker <robert.walker@arm.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jiri
Olsa <jolsa@redhat.com> Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
Cc: Mike Leach <mike.leach@linaro.org> Cc: Namhyung Kim
<namhyung@kernel.org> Cc: Suzuki K Poulouse <suzuki.poulose@arm.com> Cc:
linux-arm-kernel@lists.infradead.org Fixes: 7100b12cf474 ("perf cs-etm:
Generate branch sample for exception packet") Fixes: 24fff5eb2b93 ("perf
cs-etm: Avoid stale branch samples when flush packet") Link:
http://lkml.kernel.org/r/20190428083228.20246-1-leo.yan@linaro.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/cs-etm.c (diff)
Commit c638417e1a64b1f43ebab589e697d1cd1a127a74 by acme
tools build: Add -ldl to the disassembler-four-args feature test
Thomas Backlund reported that the perf build was failing on the Mageia 7
distro, that is because it uses:
  cat /tmp/build/perf/feature/test-disassembler-four-args.make.output
/usr/bin/ld: /usr/lib64/libbfd.a(plugin.o): in function
`try_load_plugin':

/home/iurt/rpmbuild/BUILD/binutils-2.32/objs/bfd/../../bfd/plugin.c:243:
undefined reference to `dlopen'
/usr/bin/ld:

/home/iurt/rpmbuild/BUILD/binutils-2.32/objs/bfd/../../bfd/plugin.c:271:
undefined reference to `dlsym'
/usr/bin/ld:

/home/iurt/rpmbuild/BUILD/binutils-2.32/objs/bfd/../../bfd/plugin.c:256:
undefined reference to `dlclose'
/usr/bin/ld:

/home/iurt/rpmbuild/BUILD/binutils-2.32/objs/bfd/../../bfd/plugin.c:246:
undefined reference to `dlerror'
as we allow dynamic linking and loading
Mageia 7 uses these linker flags:
$ rpm --eval %ldflags
   -Wl,--as-needed -Wl,--no-undefined -Wl,-z,relro -Wl,-O1
-Wl,--build-id -Wl,--enable-new-dtags
So add -ldl to this feature LDFLAGS.
Reported-by: Thomas Backlund <tmb@mageia.org> Tested-by: Thomas Backlund
<tmb@mageia.org> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri
Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Song
Liu <songliubraving@fb.com> Link:
https://lkml.kernel.org/r/20190501173158.GC21436@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/Makefile.config (diff)
Commit 18f90d372cf35b387663f1567de701e5393f6eb5 by acme
tools arch uapi: Copy missing unistd.h headers for arc, hexagon and
riscv
Since those were introduced in:
  c8ce48f06503 ("asm-generic: Make time32 syscall numbers optional")
But when the asm-generic/unistd.h was sync'ed with tools/ in:
  1a787fc5ba18 ("tools headers uapi: Sync copy of asm-generic/unistd.h
with the kernel sources")
I forgot to copy the files for the architectures that define
__ARCH_WANT_TIME32_SYSCALLS, so the perf build was breaking there, as
reported by Vineet Gupta for the ARC architecture.
After updating my ARC container to use the glibc based toolchain + cross
building libnuma, zlib and elfutils, I finally managed to reproduce the
problem and verify that this now is fixed and will not regress as will
be tested before each pull req sent upstream.
Reported-by: Vineet Gupta <Vineet.Gupta1@synopsys.com> Cc: Adrian Hunter
<adrian.hunter@intel.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Jiri
Olsa <jolsa@kernel.org> CC: linux-snps-arc@lists.infradead.org Cc:
Namhyung Kim <namhyung@kernel.org> Link:
https://lkml.kernel.org/r/20190426193531.GC28586@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was addedtools/arch/riscv/include/uapi/asm/unistd.h
The file was addedtools/arch/arc/include/uapi/asm/unistd.h
The file was addedtools/arch/hexagon/include/uapi/asm/unistd.h
Commit 7e221b811f1472d0c58c7d4e0fe84fcacd22580a by acme
perf tools: Remove needless asm/unistd.h include fixing build in some
places
We were including sys/syscall.h and asm/unistd.h, since sys/syscall.h
includes asm/unistd.h, sometimes this leads to the redefinition of
defines, breaking the build.
Noticed on ARC with uCLibc.
Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Arnaldo Carvalho de Melo
<arnaldo.melo@gmail.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Jiri Olsa
<jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Rich
Felker <dalias@libc.org> Cc: Vineet Gupta <Vineet.Gupta1@synopsys.com>
Link:
https://lkml.kernel.org/n/tip-xjpf80o64i2ko74aj2jih0qg@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
The file was modifiedtools/perf/util/cloexec.c (diff)
Commit 26ae4f4406f88d82d79c85c11ac5fae18213cd38 by mingo
perf/ring_buffer: Fix AUX software double buffering
This recent commit:
  5768402fd9c6e87 ("perf/ring_buffer: Use high order allocations for AUX
buffers optimistically")
overlooked the fact that the previous one page granularity of the AUX
buffer provided an implicit double buffering capability to the PMU
driver, which went away when the entire buffer became one high-order
page.
Always make the full-trace mode AUX allocation at least two-part to
preserve the previous behavior and allow the implicit double buffering
to continue.
Reported-by: Ammy Yi <ammy.yi@intel.com> Signed-off-by: Alexander
Shishkin <alexander.shishkin@linux.intel.com> Acked-by: Peter Zijlstra
<a.p.zijlstra@chello.nl> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Stephane Eranian
<eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vince
Weaver <vincent.weaver@maine.edu> Cc: adrian.hunter@intel.com Fixes:
5768402fd9c6e87 ("perf/ring_buffer: Use high order allocations for AUX
buffers optimistically") Link:
http://lkml.kernel.org/r/20190503085536.24119-2-alexander.shishkin@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedkernel/events/ring_buffer.c (diff)
Commit 72e830f68428ab9ea9eca65d160795f4e02cecfc by mingo
perf/x86/intel/pt: Remove software double buffering PMU capability
Now that all AUX allocations are high-order by default, the software
double buffering PMU capability doesn't make sense any more, get rid of
it. In case some PMUs choose to opt out, we can re-introduce it.
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Arnaldo Carvalho
de Melo <acme@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus
Torvalds <torvalds@linux-foundation.org> Cc: Stephane Eranian
<eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Vince
Weaver <vincent.weaver@maine.edu> Cc: adrian.hunter@intel.com Link:
http://lkml.kernel.org/r/20190503085536.24119-3-alexander.shishkin@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/events/intel/pt.c (diff)
The file was modifiedinclude/linux/perf_event.h (diff)
Commit 6f55967ad9d9752813e36de6d5fdbd19741adfc7 by mingo
perf/x86/intel: Fix race in intel_pmu_disable_event()
New race in x86_pmu_stop() was introduced by replacing the atomic
__test_and_clear_bit() of cpuc->active_mask by separate test_bit() and
__clear_bit() calls in the following commit:
  3966c3feca3f ("x86/perf/amd: Remove need to check "running" bit in NMI
handler")
The race causes panic for PEBS events with enabled callchains:
  BUG: unable to handle kernel NULL pointer dereference at
0000000000000000
...
RIP: 0010:perf_prepare_sample+0x8c/0x530
Call Trace:
  <NMI>
  perf_event_output_forward+0x2a/0x80
  __perf_event_overflow+0x51/0xe0
  handle_pmi_common+0x19e/0x240
  intel_pmu_handle_irq+0xad/0x170
  perf_event_nmi_handler+0x2e/0x50
  nmi_handle+0x69/0x110
  default_do_nmi+0x3e/0x100
  do_nmi+0x11a/0x180
  end_repeat_nmi+0x16/0x1a
RIP: 0010:native_write_msr+0x6/0x20
...
  </NMI>
  intel_pmu_disable_event+0x98/0xf0
  x86_pmu_stop+0x6e/0xb0
  x86_pmu_del+0x46/0x140
  event_sched_out.isra.97+0x7e/0x160
...
The event is configured to make samples from PEBS drain code, but when
it's disabled, we'll go through NMI path instead, where data->callchain
will not get allocated and we'll crash:
          x86_pmu_stop
           test_bit(hwc->idx, cpuc->active_mask)
           intel_pmu_disable_event(event)
           {
             ...
             intel_pmu_pebs_disable(event);
             ...
EVENT OVERFLOW ->  <NMI>
                    intel_pmu_handle_irq
                      handle_pmi_common
  TEST PASSES ->        test_bit(bit, cpuc->active_mask))
                          perf_event_overflow
                            perf_prepare_sample
                            {
                              ...
                              if (!(sample_type &
__PERF_SAMPLE_CALLCHAIN_EARLY))
                                    data->callchain =
perf_callchain(event, regs);
         CRASH ->              size += data->callchain->nr;
                            }
                  </NMI>
             ...
             x86_pmu_disable_event(event)
           }
            __clear_bit(hwc->idx, cpuc->active_mask);
Fixing this by disabling the event itself before setting off the PEBS
bit.
Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo
<acme@redhat.com> Cc: David Arcari <darcari@redhat.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: Lendacky Thomas <Thomas.Lendacky@amd.com> Cc:
Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Cc:
Thomas Gleixner <tglx@linutronix.de> Cc: Vince Weaver
<vincent.weaver@maine.edu> Fixes: 3966c3feca3f ("x86/perf/amd: Remove
need to check "running" bit in NMI handler") Link:
http://lkml.kernel.org/r/20190504151556.31031-1-jolsa@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedarch/x86/events/intel/core.c (diff)
The file was modifiedMakefile (diff)
Commit 8aabc7c45fc660d9cf5ae507db8105a92dec35ee 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/mm.c
The file was addeddrivers/gpu/pvr/servicesint.h
The file was addeddrivers/gpu/pvr/sgxfeaturedefs.h
The file was addeddrivers/gpu/pvr/services_headers.h
The file was addeddrivers/gpu/pvr/bufferclass_example_linux.h
The file was addeddrivers/gpu/pvr/hash.c
The file was addeddrivers/gpu/pvr/pvrmodule.h
The file was addeddrivers/gpu/pvr/pb.c
The file was addeddrivers/gpu/pvr/tools/dbgdriv.c
The file was addeddrivers/gpu/pvr/osfunc.c
The file was addeddrivers/gpu/pvr/sysconfig.h
The file was addeddrivers/gpu/pvr/osperproc.h
The file was addeddrivers/gpu/pvr/devicemem.c
The file was addeddrivers/gpu/pvr/services.h
The file was addeddrivers/gpu/pvr/proc.h
The file was addeddrivers/gpu/pvr/tools/ioctl.h
The file was addeddrivers/gpu/pvr/ocpdefs.h
The file was addeddrivers/gpu/pvr/pvrversion.h
The file was addeddrivers/gpu/pvr/osfunc.h
The file was addeddrivers/gpu/pvr/Kconfig
The file was addeddrivers/gpu/pvr/resman.h
The file was addeddrivers/gpu/pvr/sgxutils.c
The file was addeddrivers/gpu/pvr/lock.h
The file was addeddrivers/gpu/pvr/pdump_common.c
The file was addeddrivers/gpu/pvr/kernelbuffer.h
The file was addeddrivers/gpu/pvr/sysutils.c
The file was addeddrivers/gpu/pvr/bridged_support.c
The file was addeddrivers/gpu/pvr/bridged_sgx_bridge.h
The file was addeddrivers/gpu/pvr/tools/hotkey.c
The file was addedinclude/video/sgx-util.h
The file was addeddrivers/gpu/pvr/README
The file was addeddrivers/gpu/pvr/sgxinfokm.h
The file was addeddrivers/gpu/pvr/handle.h
The file was addeddrivers/gpu/pvr/ra.h
The file was addeddrivers/gpu/pvr/sgxscript.h
The file was addeddrivers/gpu/pvr/sysconfig.c
The file was addeddrivers/gpu/pvr/mmap.c
The file was addeddrivers/gpu/pvr/sgxpower.c
The file was addeddrivers/gpu/pvr/mem.c
The file was addeddrivers/gpu/pvr/ra.c
The file was addeddrivers/gpu/pvr/bridged_support.h
The file was addeddrivers/gpu/pvr/power.c
The file was addeddrivers/gpu/pvr/pdump_km.h
The file was addeddrivers/gpu/pvr/perproc.c
The file was addeddrivers/gpu/pvr/sgx530defs.h
The file was addeddrivers/gpu/pvr/sgxtransfer.c
The file was addeddrivers/gpu/pvr/buffer_manager.h
The file was addeddrivers/gpu/pvr/perproc.h
The file was addeddrivers/gpu/pvr/pvrsrv.c
The file was addeddrivers/gpu/pvr/sgxreset.c
The file was addeddrivers/gpu/pvr/queue.h
The file was addeddrivers/gpu/pvr/osperproc.c
The file was addeddrivers/gpu/pvr/bufferclass_example_private.c
The file was addeddrivers/gpu/pvr/mm.h
The file was addeddrivers/gpu/pvr/img_types.h
The file was addeddrivers/gpu/pvr/tools/ioctl.c
The file was addeddrivers/gpu/pvr/env_data.h
The file was addeddrivers/gpu/pvr/pvr_debug.h
The file was addeddrivers/gpu/pvr/deviceclass.c
The file was addeddrivers/gpu/pvr/sgxconfig.h
The file was addeddrivers/gpu/pvr/mmu.c
The file was addeddrivers/gpu/pvr/sgxutils.h
The file was addeddrivers/gpu/pvr/bufferclass_example_linux.c
The file was addeddrivers/gpu/pvr/COPYING
The file was addeddrivers/gpu/pvr/sysinfo.h
The file was addeddrivers/gpu/pvr/sgxapi_km.h
The file was addeddrivers/gpu/pvr/pvr_bridge_k.c
The file was addeddrivers/gpu/pvr/queue.c
The file was addeddrivers/gpu/pvr/mmap.h
The file was addeddrivers/gpu/pvr/img_defs.h
The file was addeddrivers/gpu/pvr/servicesext.h
The file was addeddrivers/gpu/pvr/Makefile
The file was addeddrivers/gpu/pvr/buffer_manager.c
The file was addeddrivers/gpu/pvr/syslocal.h
The file was modifieddrivers/video/Kconfig (diff)
The file was addeddrivers/gpu/pvr/power.h
The file was addeddrivers/gpu/pvr/sgxerrata.h
The file was addeddrivers/gpu/pvr/pvr_bridge_km.h
The file was addeddrivers/gpu/pvr/tools/dbgdriv.h
The file was addeddrivers/gpu/pvr/bridged_pvr_bridge.c
The file was addeddrivers/gpu/pvr/pdumpdefs.h
The file was addeddrivers/gpu/pvr/event.c
The file was addeddrivers/gpu/pvr/tools/Makefile
The file was addeddrivers/gpu/pvr/device.h
The file was addeddrivers/gpu/pvr/pvr_bridge.h
The file was addeddrivers/gpu/pvr/omaplfb.h
The file was addeddrivers/gpu/pvr/oemfuncs.h
The file was addeddrivers/gpu/pvr/ioctldef.h
The file was addeddrivers/gpu/pvr/private_data.h
The file was addeddrivers/gpu/pvr/sgxinit.c
The file was addeddrivers/gpu/pvr/tools/hostfunc.c
The file was addeddrivers/gpu/pvr/proc.c
The file was addeddrivers/gpu/pvr/bufferclass_example_private.h
The file was addeddrivers/gpu/pvr/tools/hotkey.h
The file was addeddrivers/gpu/pvr/resman.c
The file was addeddrivers/gpu/pvr/bufferclass_example.h
The file was addeddrivers/gpu/pvr/handle.c
The file was addeddrivers/gpu/pvr/module.c
The file was addeddrivers/gpu/pvr/pdump.c
The file was addeddrivers/gpu/pvr/bridged_pvr_bridge.h
The file was addeddrivers/gpu/pvr/mmu.h
The file was addeddrivers/gpu/pvr/hash.h
The file was addeddrivers/gpu/pvr/sgxkick.c
The file was addeddrivers/gpu/pvr/event.h
The file was addeddrivers/gpu/pvr/pvrmmap.h
The file was addeddrivers/gpu/pvr/tools/main.c
The file was modifieddrivers/gpu/Makefile (diff)
The file was addeddrivers/gpu/pvr/omaplfb_linux.c
The file was addeddrivers/gpu/pvr/pvr_debug.c
The file was addeddrivers/gpu/pvr/sgx_options.h
The file was addeddrivers/gpu/pvr/sgxmmu.h
The file was addeddrivers/gpu/pvr/pvrconfig.h
The file was addeddrivers/gpu/pvr/omaplfb_displayclass.c
The file was addeddrivers/gpu/pvr/sgxinfo.h
The file was addeddrivers/gpu/pvr/syscommon.h
The file was addeddrivers/gpu/pvr/srvkm.h
The file was addeddrivers/gpu/pvr/mutils.h
The file was addeddrivers/gpu/pvr/sgx_bridge_km.h
The file was addeddrivers/gpu/pvr/sgxdefs.h
The file was addeddrivers/gpu/pvr/dbgdrvif.h
The file was addeddrivers/gpu/pvr/env_perproc.h
The file was addeddrivers/gpu/pvr/sgxcoretypes.h
The file was addeddrivers/gpu/pvr/kerneldisplay.h
The file was addeddrivers/gpu/pvr/tools/hostfunc.h
The file was addeddrivers/gpu/pvr/mutex.h
The file was addeddrivers/gpu/pvr/tools/linuxsrv.h
The file was addeddrivers/gpu/pvr/bufferclass_example.c
The file was addeddrivers/gpu/pvr/sgx_bridge.h
The file was addeddrivers/gpu/pvr/bridged_sgx_bridge.c
Commit c19a94368246f8b2aeb6897223192fc61ae12907 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/resman.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/mm.c (diff)
Commit 324961bd0d458cb36ec6b09f5516454efa3d4bac 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 e1fe9c5f3744727834ad928cfd0ade8b76aa270b 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/sysconfig.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/syslocal.h (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
The file was addedinclude/linux/pvr.h
Commit 28745364f9ba44cefe73f68228ecba95875ce3cd 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/event.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was removeddrivers/gpu/pvr/lock.h
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was removeddrivers/gpu/pvr/mutex.h
The file was modifieddrivers/gpu/pvr/mm.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
Commit f5e31d7d2bc8cb71f3ac73f133d27c58cdce1bac 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 c40859bed806896f95c6d2b692a239064a069aa3 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 598da837ebe07afc292f500f2ef442fc53271a3f 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 9f3f224d622e737153bd9f3e8e5f226c93ec959d 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 973663f1969515cd3f80d520c73d1b619edaee54 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 26baf0e3cab7f9d39735fdb5efbcf43bb817cd67 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 76aaa8503cba8a9db47d5bdc74842392992b22b4 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/syscommon.h (diff)
The file was modifieddrivers/gpu/pvr/queue.c (diff)
Commit af46201adf41d0e5c9e1d489eddf74c7a10ed8b6 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 bdfb8d7649905c824cf76bf17e4199be11f791af 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/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.h (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.h (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit 9241c9b1f017393129bd71df487a09aecf5ffe10 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 ae1a9b0cc9b0433381ca1a43318c75e15ad82b61 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.h (diff)
The file was modifieddrivers/gpu/pvr/resman.c (diff)
Commit 6f964473f91f4c8f1ed440810c004563849f03b9 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 259472cb62b7661c9ab3d8d4512e39b7d4808c50 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/bufferclass_example_linux.c (diff)
The file was modifieddrivers/gpu/pvr/syslocal.h (diff)
The file was modifieddrivers/gpu/pvr/sgx_options.h (diff)
The file was modifieddrivers/gpu/pvr/ra.c (diff)
The file was modifieddrivers/gpu/pvr/resman.c (diff)
The file was modifieddrivers/gpu/pvr/pvrconfig.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/pb.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.h (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/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/omaplfb.h (diff)
The file was modifieddrivers/gpu/pvr/handle.c (diff)
The file was modifieddrivers/gpu/pvr/mm.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
Commit c11fe9f152e5edbca6076c38d15c7925b0948c43 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/handle.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/resman.c (diff)
Commit 27ab93556893f5e6222597afd5701c2ece44aec5 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 82b7c2a0b31d82eb9c7ec7cf9b703b62d3e552a8 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.h (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/power.c (diff)
Commit ff56a6b829ad615aebf3ac510f392073a8cca079 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/power.h (diff)
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit e4dac83de1655589c933388d50180cac5aa289f7 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/power.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
Commit ac92b866b33357f1213c64feacc803e1b600b932 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/osfunc.h (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
Commit baa05b0f3a396749ca1ecb62d411cdb1842268c7 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/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
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 ec3b173abaf570593502960e2a32cea1068775ff 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/deviceclass.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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit 540ba8b3ab3fbfc5fa2457292c8a3b3b8fe10c41 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 db2c39a38dd617af70815eba7f2ae512d2a02c3c 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/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit 0ffc18bad7ca3bdb18e96f1ecbba8bb72561c093 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 923985b493d9a9be66f751016271c3d1e60500e3 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.h (diff)
Commit e8a28ac602ae6f28033a4e55cb498f35152b206a 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 be230ab0d5aa46b1613577d3a0327d6091892b91 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 4602ac3729bbfb30dcedbe1e3faa7554ed1924ee 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 0d385ad09d4884db3b22665fc8c41ee84ffd6209 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/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit eca0b57b7be6b0154f23a68b52fdcd42234c2bed 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 c353cfeda3a3af937b212eb1f1e65fe1d0c97ffd 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 01ad8f199c460ad8b76d741cd5cf6b36dcd23756 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 09bcd9d922acebeb43be6108dec491530212ca80 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 2be3c0e26ecfe8da37acb9dfb086515a8338fa29 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/sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit 0c944e28eb21a694f5b9262fcc1bccf06fb8e56b 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 addeddrivers/gpu/pvr/pvr_events.c
The file was addeddrivers/gpu/pvr/pvr_events.h
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/private_data.h (diff)
Commit 60d99b0d548736424505d8fa01454069cca8b94e 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.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
Commit 3eeea8db9e6387d4a0cf8a8369cde79a1e356153 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 33b08628cb9ace402bb20fb27dc0de1f8cbe05bb 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/Makefile (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (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_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit c0771dcd04de8700b50e477c38fd2cf5c6ff78c1 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/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit 4939a0ccee610db102ef400b683bafea0dc703c1 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 252396f7cf8947b4a79f69d6ddd72de0c687b20b 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/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
Commit ebab9d2dc7d7d1d2203f84e4968947a2c70a118a 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 a86a949b07d296b8bd2948727c29364125b453cf 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_k.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit 63dc3110c7c846cce275c582bad75c74fd3fede2 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/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/event.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit fe6da88b17f25c04c173bd18b2791e1567930d45 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/servicesint.h (diff)
The file was modifieddrivers/gpu/pvr/device.h (diff)
The file was modifieddrivers/gpu/pvr/devicemem.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit 830a141aecb0080c388b25d33ff896a5a7d12357 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 6270b6d82d538806cfea9c4db622b0e9380df32c 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/sgx_bridge.h (diff)
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/pvr_events.h (diff)
Commit b685bd8cf4d49e02ba84f1e749897a5f6624439d 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 e54e445a139592693d81aa2560dfab79dc67dcc9 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/module.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit 35f5ef02b054c5b847a6b5ac19be753621860eef 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 c1d3c207681483d0f3f587d195765c76857e12d7 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.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 0416b945a75c6bc1ec473cc3a14ff64c1e91a0c7 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
Commit 58a02bb2820ccd2c56e727dd358f4cdcc8b12c02 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/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
Commit 984896f6678973c630ce55056af43a7904be40d6 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 85554ea82badd325ac8204f829c8ebf568cc0099 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 35dbeebe8914b35343205dc9c6a6f6bb037f480d 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 b7d9e59a5165554748448b148b90d2ba1ba2e017 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 eca304f181bdc3137d11c6cb8eaec2daf33de891 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 4c24c43bf4425052c41c203fb367f00b78e0e697 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 7cebbf0150ec405fe70aca33367bd41adb821881 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 a5a1680b6fcbe87a6d9a050e3b104a11632b9ea6 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 867eedce27da158f114c41ccbbd11183765932f3 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 b424a035e12f225144800b9eb741f54605d4d887 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 a3975a49a68103e4339e4c8eb86d9627a336073c 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 b72825fb2e6d3349d206e5b4579cf135a5f2740b 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 66e7425a6631dfd242a6732d46af2b2986709f3a 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 322431a4187459f700d0619a245f5baf10bf407d 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 d43bd533a8e2ed4c058c8962ed90092e0716cef5 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 6dd6cbf896f5dac0faa102c4376920b371eb341a 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 d5f13b997a7beea68434678fb4252ff889b4bdcd 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 a220a7c5bcb0f0c83d0487d0c724f69cff95dde8 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 228e9cee8ad72cd3982e54e4d653e67a9f4b59b3 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 48a6b5c056f9eeaad92049cca1d4b4806945ad76 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/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxapi_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit 8ba8fe6de11c92d0156369aca794c0a08cd6719e 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 6ba495ccde0be846fb187ffc3b6f12d77d30e30f 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 7c558585125cc7ea0fc626ce779752d01a042473 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 71776fbfe9949feb49e5188944f463a3e13e5057 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 5ed4d8869928a9970312368fbebf81f670bb1c61 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/sgxpower.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
Commit ff12c95ea9807e43e5328e6c4291669681e343a0 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 be039c8b0b2b397b6ce333e3d9613b2acd2e63fa 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 1a4cb8dfd687843fd65e2d97c1d32312e83c0f96 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/sgxtransfer.c (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit 5263e7103375adc4a6eddddaaf3e392f8209eefd 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/sgx_bridge.h (diff)
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/pvr_events.h (diff)
Commit 6ec4d9d7e328e4478e1696e40d6dfefb13f3cee9 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 a968c3f5bf3429edd9f76b206af2632d8dd5f404 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/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_options.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 e4b77732c903220722dd6e806064c53560d6bb46 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/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.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)
Commit fbce120af752b9bc3cf076eeae109a9f3d2ce3e0 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 4fa34f948458594f36d2ec1e23568e3b07344100 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 bde92ee6b40d10f8d3d509049c97bb6b2a044304 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 e2be86ce79b89ee27724fa311234998fb9d8b812 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.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit e2714964b0c0c3295014a8182b96bfb28f6415fc 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 fd10734d6b0b63a0ad84164aebdef5a4757d7e7d 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 107487c39ffc4437a6e891d2f0cfd46fd5ce2b3a 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 01b97343278b1d54df8f70197eea8843cab64420 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.c (diff)
The file was modifieddrivers/gpu/pvr/perproc.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge_km.h (diff)
Commit 1a90fd91136e85af99d8a62d55dff1fa039df58b 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/bridged_sgx_bridge.c (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/sgxapi_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
Commit c18da138ca22ec4dca9d7354f8e916df8f3fbca8 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 a3346a429083615f16c00e4a1b77a88b54d92332 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxapi_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfo.h (diff)
Commit b2beddd09fd2d7fb4ba9126d07d765ed85152fc4 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.c (diff)
The file was modifieddrivers/gpu/pvr/ra.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
Commit dda867c23920f93cc0ce427f198a4ded7ebfe124 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/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit 00a0590e3cdaf1d70ae559dd405aa389efdfc425 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 40592f437d1498d3a7b2c6803293826c2c35e416 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 modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was addeddrivers/gpu/pvr/pvr_debugfs.h
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was addeddrivers/gpu/pvr/pvr_debugfs.c
Commit 55c1aadc90e6c9a783b36e27294d04f7982f6076 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.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
Commit 976680cb4615c90c91f92f4707fcfda603e3f15f 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.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
Commit 50d44d618b6f35737ecac0bd2fab4b97e9e20ab9 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.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/mmu.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 661f719c41b8ef36ccfd29e5697dfbbb6edf61f0 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
Commit 19a8340f75aaccf764418b066006b918494094b8 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/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
Commit a0229d958907242bfdbac1b33e2f001bb8cc7178 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 43b7ff599d149aefaa6871d39b1efc0f5495ddae 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/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
Commit ab5886e9cce21e3de9242eaad45a81e4052fbdda 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.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 2de853e78041939851a07673df56cb8587c04d39 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/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/dbgdrvif.h (diff)
Commit 02964714292b28a48da172c1c1d5fa95d7511873 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_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
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/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
Commit 66c8f6524def19006b864beaa6bcadaa2483533e 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 75ed552c0d1625b407af7f5c34b1b2bc528550da 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/main.c
The file was modifieddrivers/gpu/pvr/pvrconfig.h (diff)
The file was removeddrivers/gpu/pvr/tools/dbgdriv.h
The file was removeddrivers/gpu/pvr/tools/hotkey.h
The file was removeddrivers/gpu/pvr/tools/hotkey.c
The file was removeddrivers/gpu/pvr/tools/ioctl.c
The file was removeddrivers/gpu/pvr/tools/linuxsrv.h
The file was removeddrivers/gpu/pvr/tools/ioctl.h
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
The file was removeddrivers/gpu/pvr/ioctldef.h
The file was removeddrivers/gpu/pvr/tools/hostfunc.h
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was removeddrivers/gpu/pvr/tools/Makefile
The file was removeddrivers/gpu/pvr/tools/dbgdriv.c
The file was removeddrivers/gpu/pvr/dbgdrvif.h
The file was removeddrivers/gpu/pvr/tools/hostfunc.c
Commit 05620957c49afcbeb8c5567a0ad131c966ce5d90 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 ebfaf2e3b0968d43ffe3dd5a5f805570ae20b3e6 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 541e3896af34039e409fbaa7694337c66b1fe2d1 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 ed3b6eb1c49bc5ad55b2c1d53b8ab98a5850713e 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.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/pdump_common.c (diff)
Commit 7351f995bfa030db87e2dedfc5b20e0fbd3c8473 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 cb9cbc95b23a2be75337c231a62aac1ada5b9d9c 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 6105ba47e8d8d9fc15d270136cdcd36af7e15d1d 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 a8a28478e9e7e31f584a00d025a7c05da626c627 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 6d5651dd0681b578ecb4aa6f1bee75069bc33068 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/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
Commit b9ddc65b55d5e6a259c7ff703e54b0ed81940382 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 51e893051bb6b544d6c8d946d663f884380e2780 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 180fefe8d68f32b830fea33b1609d4849150638e 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 c6c9e218a3e801d6cce827c531053088c1c87f2e 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 removeddrivers/gpu/pvr/pdump_common.c
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
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/pdump_km.h (diff)
Commit 7eb075cd60f583874ab3bb0cfc5a543154a5b5c1 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 modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pb.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/sgxreset.c (diff)
The file was removeddrivers/gpu/pvr/pdump_km.h
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was addeddrivers/gpu/pvr/pvr_pdump.c
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
The file was removeddrivers/gpu/pvr/pdump.c
The file was addeddrivers/gpu/pvr/pvr_pdump.h
The file was modifieddrivers/gpu/pvr/sgxtransfer.c (diff)
The file was modifieddrivers/gpu/pvr/devicemem.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit f5de31a180a8143b6983abf41ca203acad4abe52 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/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.h (diff)
The file was modifieddrivers/gpu/pvr/sgxreset.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit 79e403e78533b67065c56107a7e94beadc11b2a8 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 74c6ba8da4d7dba2fbacd65efc657e7e6de10a35 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 b39c7ef158f0eab4a826c8dca3b686a1328e10ed 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.h
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was addeddrivers/gpu/pvr/pvr_pdumpfs.c
The file was modifieddrivers/gpu/pvr/Makefile (diff)
Commit d4bbe37ea94c58e808569f04a6932192693e460e 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_pdumpfs.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
Commit 9e66521566c41b38baaed1867a01e730b8fca349 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/pvr_debug.h (diff)
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_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
Commit 78463ca79d843467fcf9a673cbfd6cb0b3e985b9 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_pdumpfs.h (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_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit ecc155a07d91f70d6b75bfc06560726086594f86 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/Kconfig (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
Commit 22bb68ef064515ce3bbd0909bed1170281e79c3e 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 22992aefb3db8fed7e5cd60e5b028073a6ca7f7e 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 efce3b26b8301867548572fef1662982e2fc3640 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 751863def23433220407871fb1dbe15c71d28567 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 2dced559501ac0365ec1061ffa2a715662dbbc28 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 34aeee30bbb0ee152061d2089bf8defa6192c0f9 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 66909efdb2e0b4768c28e53f8d13afc764a7eb2c 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 b55a2af048bfc2066eef8eb18daeee8deaa21444 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/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 4d785ca05911c5870bb56f9defbec5e7094f7545 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 db2c00005c66ec9bc698328000da19d51a95cae1 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 b51f62d1382e053e0844fc34afc28fc649ac2a2d 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 ea45506b1a915c9cb02ac8f0642e7f49bf3cf621 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 f77fa567a17acdbe313672b2643bf42b39c5c249 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 7d6151eb5055144599c8c929b4cdacad3ce7be0c 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 f587a728cf925576abf99cfd413da6a889a45930 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 6ed38fa9a0f0be7236916af0ad66cc336ff160e0 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 2826397411fa5049dcfc5d2bd1a8abd26bdfd25a 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 04749ed530653605ff4e535c7fccf2ede1e413ce 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 79551cdcaec2e6f9a26d98a4e2c81fbf75b2b23a 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 b717e05e665ff625929763236a5d60bb2cca4155 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 8795dc9bf1ed09d6a7b4ae986705b49d4339f4f2 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/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit 21850f22ffb93c41ec54cbfcfe993ec42cb7bf5b 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/private_data.h (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
Commit 0d040fdadb7ca733665fbe2b4d45f5795af18527 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 bf3707ec6f80106fe2f211e2ae2b7a32deb7489d 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.h (diff)
The file was modifieddrivers/gpu/pvr/perproc.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.h (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
Commit 7a057a5e08122f0e66f6506ccc6d7c495f1ffda5 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 96bb5e6b1673272b3eb305c1a178c97f1922ebcf 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 modifieddrivers/gpu/pvr/Kconfig (diff)
The file was addeddrivers/gpu/pvr/pvr_trace_cmd.h
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was addeddrivers/gpu/pvr/pvr_trace_cmd.c
Commit d57d981180e947758787e0c35949358a992f7c99 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/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgxtransfer.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge_km.h (diff)
Commit 69f8af01a04c8eeeeb37f6580a35713b92094a4f 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 018f20357765291328b710224a3afff5986acfe3 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 8a54c8ed0037ab6000a735c2b29c386f2a2552d9 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 9297fa580994cce918aed86d4bb97d2d6af35213 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 546ca26a0459f47357e647bc44b3170bb8d19528 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 1ad3bbf5e3cd3fb71b1f247c943eca6c7f49450d 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/devicemem.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.h (diff)
Commit b644f401d8a836cb2a222b0b77ed9891d9f436b3 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 5e2de82bcc34b5ea2a7bc2f1fd5c01b9ce5f8ecc 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/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/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit 04549c4136ea4d714499a29eb66d977d3c9bd00f 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 801602be5df1acc42e71b7783675c3eb00457838 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 bdb77769a44a02df31800fa6fb1e50b8f2fc6829 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/pvr_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 0bc1856e63105716d60edfcbb9e4ce0b70e62ced 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 3edfddbf2702f0f1f7f5d086b3542b7e85791c5a 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 07f8bddcfeb3efb92a2add4666a6279cba8eeae7 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 b0f1ef2c4784687b50f39c1e2bb1b9495dbb6b4b 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/sysconfig.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 6dd1b7818faf72ac045765cabddc5f555ec1cb90 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 d785d9496aba71b9c86ed00aba8dc7741204b577 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 b2c6574e89dc25785f12935dd017d7d927ac300f 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 8cf7c370a2c3946a951055988fae6430ba205717 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/omaplfb_linux.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit 8eca84bd403321d76c7fbf2a0c4dde14724c13b9 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 7e03abf2afef3d8c6d1e73e3487a8be2245bcf8f 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 5d77c48ab12795e046de5da6cba1c314f0c80edf 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 c27b216297a5638fe51b41314c5c3c855c19efb2 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 6c02a8796c26777848e0141d73327585cd2f59ae 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 d6b31416044468060208e03189e51d85617b2639 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/omaplfb_linux.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit 30e437bde2f3f9c4942315f1b09d84cb8ba85204 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/proc.h (diff)
The file was modifieddrivers/gpu/pvr/event.c (diff)
Commit 2978338efa02530824db6fb3150e76bcc54b636e by Arthur D.
gpu: pvr: convert file permissions to numeric
See https://lwn.net/Articles/696227/
The file was modifieddrivers/gpu/pvr/proc.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 7fce12e445f2a193e801d21a48a80d3c37a9ca37 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/queue.c (diff)
The file was modifieddrivers/gpu/pvr/mm.c (diff)
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/queue.h (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/ra.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
Commit 520d3474706133a91e9176746ee2f9e2de6a01ac by Arthur D.
gpu: pvr: proc: use file_inode() macro
The file was modifieddrivers/gpu/pvr/proc.c (diff)
Commit 492360114c7a8b1568bb6d7029cfb393edc20d4f by Arthur D.
gpu: pvr: update write handlers for proc files
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/proc.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit 1787c7cb75f10092f2b290106a79e1db801684b7 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 1199cdca24c65e2866a39b8a6f7f0bc92a5ec4b9 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 11c7f7fb27d751ffb0736dc366393b569486a503 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/osfunc.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit 8a4f4743f71e55725cb34b3b20ed20fd87acb5b0 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 cb3051aefafdc34afb864a41f9f00b9f044c8414 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 36922babde1b08fee034ccf513cb28e38f1e2cec 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 2fbc9a97d8d85480d3f0b5a049905cfae642ad3c 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 c608f16d03845c02e8c823ce0f57bc71272c4daf by Arthur D.
gpu: pvr: proc: rename variables
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/proc.c (diff)
Commit 5bbe29e3237387eff8204d37cfad17679c8d6367 by Arthur D.
gpu: pvr: rewrite proc files write handling
The file was modifieddrivers/gpu/pvr/proc.h (diff)
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.c (diff)
Commit 08629256ff5cd689133cc01e9e7c040e31f08e20 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 5c02678274ebdd8fb5c39b3250a036eed57e7f5d by Arthur D.
gpu: pvr: include dma.h for dmac_map_area()
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was addeddrivers/gpu/pvr/dma.h
Commit 044a665940a486cedf6a7727d10450ec565bbbfa 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 0c73a0a95da7f7805ebd2a15a0f4f50ac4b7c9c7 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 02ce3f39a49ccf9a5150c5c4f938e40b020bb726 by Arthur D.
gpu: pvr: make sysutils.o build
The file was addeddrivers/gpu/pvr/mach-omap2
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 1a3292026a8865cb43f5579ddbe01bc47e823f91 by Arthur D.
gpu: pvr: add header for cpu_clock()
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
Commit 3017b6c10b18b9eb2fdac40901c279e024228537 by Arthur D.
gpu: pvr: events: remove unused do_gettimeofday()
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit 4d5c76789013c4bf91d99e17956256eba1511094 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 aae297371bb79347afd5b11a224d2f8481ebd5e5 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 0e60564b4feece863ed47f28b28a55d875af0fef 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 b80161d697f7e86697e5596ba445324652ad64c6 by Arthur D.
gpu: pvr: add device tree support
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
Commit b166117824c35054bcdb0629d5045539594697c8 by Arthur D.
ARM: dts: omap34xx: add GPU entry
The file was modifiedarch/arm/boot/dts/omap34xx.dtsi (diff)
Commit 70ce9b8b800e4961e663caad6b13aead912fd411 by Arthur D.
gpu: pvr: update for common clk framework
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
Commit c0b9e00a857e729d940f11809f71494c7ffc4a71 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 504d0d47a73f6e721a1c76750c136c9d856b0b94 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 06e04740ca8b73a87a29fc09cff6222276ca7843 by Arthur D.
gpu: pvr: remove line wraps
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/power.c (diff)
Commit ff497c281bf6dfa104d91a1ec191bae632a8768d 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 f3404a3b990e1849064d0d6407111b74e1a3a600 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/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/mm.c (diff)
Commit 8d14d153f3297c10b415b1d792ac5030bde6adba 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/sgxreset.c (diff)
The file was modifieddrivers/gpu/pvr/syslocal.h (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
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/sysutils.c (diff)
Commit 06c03ac53c0a8042ec959d5ebe1c4e24698fcdfa by Arthur D.
gpu: pvr: fix CONFIG_PVR_TRACE_CMD=y compilation
The file was modifieddrivers/gpu/pvr/pvr_trace_cmd.c (diff)
Commit 3a7e9140b7fd8c704353cab17af1a16efd30a4b5 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 3087ccf83cf1016c2e130427b9329580d4a4c928 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_trace_cmd.c (diff)
Commit e5c0729b37f7a3e600934d56fd60ffb7b02492cf 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/apply.c (diff)
The file was modifieddrivers/video/fbdev/omap2/omapfb/dss/dss.h (diff)
The file was modifiedinclude/video/omapfb_dss.h (diff)
Commit 227d64a19504d114eaff126313489eebc67304d2 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 18b2254ae7d4beec46e802f15c97872a057c363d 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 35e9c94fb265213848d4cd2b0d062dec62cdfb0a 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 fbc4ce7a84e59215914a8981afe918002b191493 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 59bc57ceba140a5276288dfcbb1f941af3168f1d 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 595cdaa55684afafb479dd6608bacc76b97902fd 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 894c26009ecec6dccff1127b2d9c1f077396e058 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 cab6f5719411760456e848c79f22a94b5a3ea0be 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 a5403ae22eb9a87431c5c32c1fcc26b6dc6c4b6a 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 39b179291f69ebde8fdbd6392cb23523222fd4aa 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 43d93361e03019253ad37524e0456e0c77675a9f 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 64eb20ec2818f65098fd71beafaf8b1f94c775df 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 7590e1c646b74c9f6f0c5243d3b35ff5ec4fea5d 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 550956aebac2b4e454e1b3df6ac0bfd6b71bf10e 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 025eb523984f38a9c422c8b85244e891dae940ac 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 b468b85defe6aed65c5ebf54dd7afe5c607b5c6a 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 1d6c58c054099060264fd95d092da3e8996f0014 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 4cc500c8878519783232526b48c1bee886e645e1 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 6122c8a1720736640661a7229d202e1f31e8934c 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 afdfee446032f34bd0bfc256c4af02d68efb99f6 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 6be967aed56a1f471b367b8e6e63b7a68214d1b9 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 24b790da7f24baa68cadf552d279666a306d455e 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 e3a470f600015e06f758a8e84e71678544310472 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 dc18f833962a7ee6fd2770512b05352c270d6e82 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 3d977ead186dac05293cd8246bf27a21f1abecf0 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 7233a283a3510641b25af7a2425116d1f286b4e6 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 07a76ff5d8dbb0cb46a7f0e07e76006592f138ed 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 566c6e9f41fd0fefed5451052c468de159ca4684 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 1d6174003776f08c99bc2ca0e2178fd20629fa8a 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 e80b35d6035606d7cc3d377395c4be8aa3bc1106 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 5b0205be4381c50fd37e711d9585660aa03c18db 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 7cabaf3179bedfefdde15988327071f2e876364a 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 fdebfb44624ac6c716e682e653589d186961cda3 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 bbdbf1ae04aedf35bdda77bc0dbd1a1116985973 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 06977adf244f6c4d2a6b7e6e8bcc76cb023c329a 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 cae5661919e92612d28aab45b62903bf8900291d 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 c6f61062e95d4cbeceda9e7f11900af0adf6e98b 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 4608bd17fd7be5a48c482df10843cf863afb4b34 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 739c0a8b92e64f342d2fcb0d2223573f2f05a534 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 7f4fa3797761d1522e233da4d86a6fa1cfcd61a6 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 c7f7df555184052c79f349c950c5ccb626334207 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 7bcf33fb47b7497e2647098f7a024aab76a8688b 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 f5eaac78ad8900fe74abdc8c0fad55b3482e1105 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 02db2b67d6ed6f3b237ded4640e60641ece10a66 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 e5a61ff91ef46a3a29f566acd8cb15095aa4aefe 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 e7370c61f0ad543e292081e9c01952e022983934 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 9834fe1a91dae202fe01205ce41698f652232947 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 70362051f05c2859a7ced8b32ea816b5b53f90cf 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 0d99a47d798e79780f7f508128ec78daa03a9ede 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 a7f6a24decb8fbc7e3dd3f670994b46c8e6b0d67 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 ff1ba14407df86ce8dd00cd34e96d17c88b19a36 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 9f5fcfd4ec3591261496a3476a91935f955e76b9 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 821db5292e201e5c34f9b513c38210309d81ec30 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 515194f301ee0b27c9bbeb101ccbb85c3b9c2ac7 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 801fef97cf7fe0e644f36e9e2e38e17c8ff428d6 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 da0589deeb9f362ee204815ebf98e89a490841b7 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 333c5292f48e9b8d4372b8a0be7309878f2c06aa 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 c800b32fa2f1d7ef2a160dd8f5edd4d55d6cae19 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 0b596193dadab9caf9e5c8537affcf3e3af08a02 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 aeba0b168785236eca0a49b21fac507194bddc3a 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 5f93bb97f1711ec7a7abc49c464570d14eecb7dd 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 2c11c6a010189f94e47a90e1985318eb6dc38a53 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 8ca1b59f806599a1ce3e30cf36467dcf5ca4d732 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 117f81a211c540f347b739fc70caae3bb6770b61 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 9e0e49e565a2825f0a61f39f9a7bdaa9f67989c5 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 cb6cc0c55a1fb7579c4709659ea4b6a99be5df72 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 e730a20e2d66f530d1542618765b65e4f393294c 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 91449d0e4081b1713f4175f3fc916dccd4606b23 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 a35f70c40752a16f17c35e326522393411eedefb 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 2d474182d8f49128d576fadd8dd8f7b1e0730b70 by Merlijn Boris Wolf Wajer
ARM: n900_defconfig: add twl4030-vibra
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit c5a650c12cd1c51609eb62378cc05c203b6eea12 by Merlijn Boris Wolf Wajer
ARM: n900_defconfig: add nf/iptables maasquerade
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit 32c23c45466d15fb4414f2e6f70ddf7317ac2f14 by Merlijn Boris Wolf Wajer
debian: preserve /debian/ on 'make clean'
The file was modifiedscripts/package/Makefile (diff)
Commit c7cb99e329b4c9e64c3928e5b8ee6c93251b34c1 by Merlijn Boris Wolf Wajer
debian: remove /debian/ from .gitignore
The file was modified.gitignore (diff)
Commit c8cb467b6d83c39ea827f141ba41733de4e5b514 by Merlijn Boris Wolf Wajer
debian: fill /debian/ directory with content
The file was addeddebian/control
The file was addeddebian/changelog
The file was addeddebian/compat
The file was addeddebian/README
The file was addeddebian/clean
The file was addeddebian/source/format
The file was addeddebian/copyright
The file was addeddebian/rules
The file was addeddebian/postinst.in
Commit 845aaf21c7600cb8573ef20e4ced233fed4864c9 by Merlijn Boris Wolf Wajer
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 modifiedscripts/package/builddeb (diff)
The file was modifieddebian/rules (diff)
The file was modifieddebian/control (diff)
The file was removeddebian/postinst.in
Commit 9aeb5c3ac2e7415800c3d18b0138b7784777c0a7 by Merlijn Boris Wolf Wajer
Update debian/changelog (5.0.5-1)
The file was modifieddebian/changelog (diff)
Commit 45aec9673b1a646525194b3a72afed3c7b86a6a7 by Merlijn Boris Wolf Wajer
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/control (diff)
The file was modifieddebian/rules (diff)
Commit d0f375e90bf79cbf083351a5f9a5af301e61c28b by Merlijn Boris Wolf Wajer
debian: add gbp.conf needed by jenkins-debian-glue
The file was addeddebian/gbp.conf
Commit ccc49cc48b3e18c9beb2a09b41924348e20b050a by Merlijn Boris Wolf Wajer
debian: update README for default config management
The file was modifieddebian/README (diff)
Commit eb7fb85bdb0e48bd48c7ef09ce5861042b87ea8c by Merlijn Boris Wolf Wajer
debian: rules: fix warning: 'build-arch' is missing
The file was modifieddebian/rules (diff)
Commit eb3c930cbbd11082f5bfd3b94bd38b549d48f5f6 by Merlijn Boris Wolf Wajer
Update debian/changelog (5.0.5-2)
The file was modifieddebian/changelog (diff)
Commit 62c237e14c91aead1878ac6ce3b95a5dde0f0d74 by Merlijn Boris Wolf Wajer
Update debian/changelog (5.0.5-3)
The file was modifieddebian/changelog (diff)
Commit c3047d7b7482f5826aad307425102fe6c4dc32a5 by Merlijn Boris Wolf Wajer
Update debian/changelog (5.0.7-1)
The file was modifieddebian/changelog (diff)
Commit 62e160ed5a503a86f90a8536edb2cd2017f9743c by Merlijn Boris Wolf Wajer
Update debian/changelog (5.0.9-1)
The file was modifieddebian/changelog (diff)
Commit b041374475a2de74590579d6309c795f532c202a by Merlijn Boris Wolf Wajer
Update debian/changelog (5.0.14-1)
The file was modifieddebian/changelog (diff)
Commit 3bfa918449447b5138a53dbb5c77355cb08020ce by Merlijn Boris Wolf Wajer
Update debian/changelog (5.1-1)
The file was modifieddebian/changelog (diff)
Commit d1d36d6fe139cc0fdf0ebb8655dfe844b3c9013a by Merlijn Boris Wolf Wajer
debian/changelog: bump for config change
The file was modifieddebian/changelog (diff)
Commit c062db6233ff76321479411dd0f3aea9455de520 by Merlijn Boris Wolf Wajer
debian/changelog: add iptables masquerade support
The file was modifieddebian/changelog (diff)