FailedChanges

Summary

  1. signal: Restore the stop PTRACE_EVENT_EXIT (details)
  2. drm/amdgpu/psp11: TA firmware is optional (v3) (details)
  3. netfilter: nft_compat: use-after-free when deleting targets (details)
  4. KVM: nVMX: Restore a preemption timer consistency check (details)
  5. net/mlx5e: Fix NULL pointer derefernce in set channels error flow (details)
  6. net/mlx5: No command allowed when command interface is not ready (details)
  7. net/mlx5: Fix a compilation warning in events.c (details)
  8. net/mlx5e: XDP, fix redirect resources availability check (details)
  9. sctp: call gso_reset_checksum when computing checksum in (details)
  10. sctp: set stream ext to NULL after freeing it in (details)
  11. net: phy: fix interrupt handling in non-started states (details)
  12. dsa: mv88e6xxx: Ensure all pending interrupts are handled prior to exit (details)
  13. net: fix possible overflow in __sk_mem_raise_allocated() (details)
  14. net: dsa: bcm_sf2: potential array overflow in bcm_sf2_sw_suspend() (details)
  15. ALSA: hda/realtek - Headset microphone and internal speaker support for (details)
  16. ALSA: hda/realtek: Disable PC beep in passthrough on alc285 (details)
  17. gpio: pxa: avoid attempting to set pin direction via pinctrl on MMP2 (details)
  18. x86/CPU: Add Icelake model number (details)
  19. KVM: x86: Recompute PID.ON when clearing PID.SN (details)
  20. kvm: vmx: Fix entry number check for add_atomic_switch_msr() (details)
  21. selftests: fix timestamping Makefile (details)
  22. net: phy: don't use locking in phy_is_started (details)
  23. net: phy: fix potential race in the phylib state machine (details)
  24. mm: page_alloc: fix ref bias in page_frag_alloc() for 1-byte allocs (details)
  25. net: hns: Fix object reference leaks in hns_dsaf_roce_reset() (details)
  26. Revert "nfsd4: return default lease period" (details)
  27. net: ethernet: freescale: set FEC ethtool regs version (details)
  28. Revert "gfs2: read journal in large chunks to locate the head" (details)
  29. Revert "exec: load_script: don't blindly truncate shebang string" (details)
  30. dm thin: fix bug where bio that overwrites thin block ignores FUA (details)
  31. drm: Use array_size() when creating lease (details)
  32. i2c: cadence: Fix the hold bit setting (details)
  33. i2c: bcm2835: Clear current buffer pointers and counts after a transfer (details)
  34. mac80211: Use linked list instead of rhashtable walk for mesh tables (details)
  35. mac80211: Free mpath object when rhashtable insertion fails (details)
  36. mac80211: Restore vif beacon interval if start ap fails (details)
  37. x86/platform/UV: Use efi_runtime_lock to serialise BIOS calls (details)
  38. netfilter: nf_tables: fix flush after rule deletion in the same batch (details)
  39. cxgb4: Export sge_host_page_size to ulds (details)
  40. iw_cxgb4: cq/qp mask depends on bar2 pages in a host page (details)
  41. kprobe: Do not use uaccess functions to access kernel memory that can (details)
  42. tracing: Fix number of entries in trace header (details)
  43. auxdisplay: ht16k33: fix potential user-after-free on module unload (details)
  44. lib/crc32.c: mark crc32_le_base/__crc32c_le_base aliases as __pure (details)
  45. Compiler Attributes: add support for __copy (gcc >= 9) (details)
  46. include/linux/module.h: copy __init/__exit attrs to init/cleanup_module (details)
  47. sunrpc: fix 4 more call sites that were using stack memory with a (details)
  48. KEYS: allow reaching the keys quotas exactly (details)
  49. assoc_array: Fix shortcut creation (details)
  50. keys: Fix dependency loop between construction record and auth key (details)
  51. keys: Timestamp new keys (details)
  52. MIPS: eBPF: Always return sign extended 32b values (details)
  53. MIPS: eBPF: Remove REG_32BIT_ZERO_EX (details)
  54. scsi: libiscsi: Fix race between iscsi_xmit_task and iscsi_complete_task (details)
  55. scsi: sd_zbc: Fix sd_zbc_report_zones() buffer allocation (details)
  56. scsi: libsas: Fix rphy phy_identifier for PHYs with end devices attached (details)
  57. scsi: core: reset host byte in DID_NEXUS_FAILURE case (details)
  58. net: ip6_gre: initialize erspan_ver just for erspan tunnels (details)
  59. net: phy: xgmiitorgmii: Support generic PHY status read (details)
  60. net: Fix for_each_netdev_feature on Big endian (details)
  61. net: validate untrusted gso packets without csum offload (details)
  62. net: dsa: b53: Fix default VLAN ID (details)
  63. net: dsa: b53: Properly account for VLAN filtering (details)
  64. net: systemport: Fix reception of BPDUs (details)
  65. net: dsa: bcm_sf2: Do not assume DSA master supports WoL (details)
  66. net: dsa: b53: Do not program CPU port's PVID (details)
  67. ipvs: fix warning on unused variable (details)
  68. arm64, mm, efi: Account for GICv3 LPI tables in static memblock reserve (details)
  69. efi/arm: Revert "Defer persistent reservations until after (details)
  70. net: Add header for usage of fls64() (details)
  71. powerpc/64s: Fix possible corruption on big endian due to (details)
  72. Input: apanel - switch to using brightness_set_blocking() (details)
  73. Input: st-keyscan - fix potential zalloc NULL dereference (details)
  74. Input: elan_i2c - add ACPI ID for touchpad in Lenovo V330-15ISK (details)
  75. mlxsw: __mlxsw_sp_port_headroom_set(): Fix a use of local variable (details)
  76. pinctrl: meson: meson8b: fix the sdxc_a data 1..3 pins (details)
  77. Documentation: change linux-4.x references to 5.x (details)
  78. doc: Mention MSG_ZEROCOPY implementation for UDP (details)
  79. net: stmmac: handle endianness in dwmac4_get_timestamp (details)
  80. qmi_wwan: apply SET_DTR quirk to Sierra WP7607 (details)
  81. net: mv643xx_eth: disable clk on error path in (details)
  82. tcp: clear icsk_backoff in tcp_write_queue_purge() (details)
  83. tcp: tcp_v4_err() should be more careful (details)
  84. mm: Use fixed constant in page_frag_alloc instead of size + 1 (details)
  85. net: Do not allocate page fragments that are not skb aligned (details)
  86. Linux 5.0-rc7 (details)
  87. xfrm: Fix inbound traffic via XFRM interfaces across network namespaces (details)
  88. arm64: fix SSBS sanitization (details)
  89. arm64/neon: Disable -Wincompatible-pointer-types when building with (details)
  90. mailbox: Export mbox_flush() (details)
  91. mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush timeout issue (details)
  92. libceph: handle an empty authorize reply (details)
  93. ceph: avoid repeatedly adding inode to mdsc->snap_flush_list (details)
  94. ASoC: topology: free created components in tplg load error (details)
  95. ASoC: simple-card: fixup refcount_t underflow (details)
  96. net: crypto set sk to NULL when af_alg_release. (details)
  97. net/mlx4_en: fix spelling mistake: "quiting" -> "quitting" (details)
  98. bpf/test_run: fix unkillable BPF_PROG_TEST_RUN (details)
  99. mac80211: mesh: fix missing unlock on error in table_path_del() (details)
  100. r8152: Add support for MAC address pass through on RTL8153-BD (details)
  101. exec: load_script: Do not exec truncated interpreter path (details)
  102. powerpc/powernv/sriov: Register IOMMU groups for VFs (details)
  103. qed: Fix iWARP buffer size provided for syn packet processing. (details)
  104. qed: Fix iWARP syn packet mac address validation. (details)
  105. net: stmmac: Fix a race in EEE enable callback (details)
  106. net: hns: Fixes the missing put_device in positive leg for roce reset (details)
  107. net: netcp: Fix ethss driver probe issue (details)
  108. cpufreq: scmi: Fix use-after-free in scmi_cpufreq_exit() (details)
  109. ARM: dts: armada-xp: fix Armada XP boards NAND description (details)
  110. arm64: dts: clearfog-gt-8k: fix SGMII PHY reset signal (details)
  111. ARM: dts: am335x-evmsk: Fix PHY mode for ethernet (details)
  112. ARM: dts: am335x-evm: Fix PHY mode for ethernet (details)
  113. gpu: drm: radeon: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime (details)
  114. drm/amdgpu: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime (details)
  115. drm/amdgpu: Update sdma golden setting for vega20 (details)
  116. drm/amd/display: Fix MST reboot/poweroff sequence (details)
  117. drm/amd/display: Raise dispclk value for dce11 (details)
  118. vhost: correctly check the return value of translate_desc() in (details)
  119. sky2: Increase D3 delay again (details)
  120. drm/i915/fbdev: Actually configure untiled displays (details)
  121. arm64: Relax GIC version check during early boot (details)
  122. ARM: tegra: Restore DT ABI on Tegra124 Chromebooks (details)
  123. net: dsa: fix unintended change of bridge interface STP state (details)
  124. clk: at91: fix at91sam9x5 peripheral clock number (details)
  125. clk: at91: fix masterck name (details)
  126. orangefs: remove two un-needed BUG_ONs... (details)
  127. drm/amd/display: Fix negative cursor pos programming (details)
  128. drm/amd/display: fix optimize_bandwidth func pointer for dce80 (details)
  129. drm/amd/display: set clocks to 0 on suspend on dce80 (details)
  130. drm/amdgpu: disable bulk moves for now (details)
  131. net: marvell: mvneta: fix DMA debug warning (details)
  132. missing barriers in some of unix_sock ->addr and ->path accesses (details)
  133. PM-runtime: Fix deadlock when canceling hrtimer (details)
  134. Revert "xsk: simplify AF_XDP socket teardown" (details)
  135. revert "initramfs: cleanup incomplete rootfs" (details)
  136. numa: change get_mempolicy() to use nr_node_ids instead of MAX_NUMNODES (details)
  137. kasan: fix assigning tags twice (details)
  138. kasan, kmemleak: pass tagged pointers to kmemleak (details)
  139. kmemleak: account for tagged pointers when calculating pointer range (details)
  140. kasan, slub: move kasan_poison_slab hook before page_address (details)
  141. kasan, slub: fix conflicts with CONFIG_SLAB_FREELIST_HARDENED (details)
  142. kasan, slub: fix more conflicts with CONFIG_SLAB_FREELIST_HARDENED (details)
  143. slub: fix SLAB_CONSISTENCY_CHECKS + KASAN_SW_TAGS (details)
  144. proc, oom: do not report alien mms when setting oom_score_adj (details)
  145. mm/debug.c: fix __dump_page() for poisoned pages (details)
  146. mm, page_alloc: fix a division by zero error when boosting watermarks v2 (details)
  147. mm: handle lru_add_drain_all for UP properly (details)
  148. psi: avoid divide-by-zero crash inside virtual machines (details)
  149. tmpfs: fix link accounting when a tmpfile is linked in (details)
  150. kasan: fix random seed generation for tag-based mode (details)
  151. kasan: prevent tracing of tags.c (details)
  152. kasan, slab: fix conflicts with CONFIG_HARDENED_USERCOPY (details)
  153. kasan, slab: make freelist stored without tags (details)
  154. kasan, slab: remove redundant kasan_slab_alloc hooks (details)
  155. slub: fix a crash with SLUB_DEBUG + KASAN_SW_TAGS (details)
  156. mm: don't let userspace spam allocations warnings (details)
  157. mm, memory_hotplug: fix off-by-one in is_pageblock_removable (details)
  158. ipv6: route: enforce RCU protection in rt6_update_exception_stamp_rt() (details)
  159. ipv6: route: enforce RCU protection in ip6_route_check_nh_onlink() (details)
  160. net/smc: fix smc_poll in SMC_INIT state (details)
  161. ixgbe: fix older devices that do not support IXGBE_MRQC_L3L4TXSWEN (details)
  162. i40e: fix potential RX buffer starvation for AF_XDP (details)
  163. ixgbe: fix potential RX buffer starvation for AF_XDP (details)
  164. ARCv2: Enable unaligned access in early ASM code (details)
  165. ARCv2: lib: memcpy: fix doing prefetchw outside of buffer (details)
  166. ARC: fix actionpoints configuration detection (details)
  167. ARC: uacces: remove lp_start, lp_end from clobber list (details)
  168. ARCv2: support manual regfile save on interrupts (details)
  169. ARC: U-boot: check arguments paranoidly (details)
  170. ARC: enable uboot support unconditionally (details)
  171. ARC: define ARCH_SLAB_MINALIGN = 8 (details)
  172. i40e: fix XDP_REDIRECT/XDP xmit ring cleanup race (details)
  173. parisc: Fix ptrace syscall number modification (details)
  174. ixgbe: don't do any AF_XDP zero-copy transmit if netif is not OK (details)
  175. CREDITS/MAINTAINERS: Retire parisc-linux.org email domain (details)
  176. MAINTAINERS: mark CAIF as orphan (details)
  177. net: vrf: remove MTU limits for vrf device (details)
  178. bonding: fix PACKET_ORIGDEV regression (details)
  179. tipc: improve function tipc_wait_for_cond() (details)
  180. tipc: improve function tipc_wait_for_rcvmsg() (details)
  181. net: avoid false positives in untrusted gso validation (details)
  182. ARCv2: don't assume core 0x54 has dual issue (details)
  183. net: ip_gre: do not report erspan_ver for gre or gretap (details)
  184. net: ip6_gre: do not report erspan_ver for ip6gre or ip6gretap (details)
  185. phonet: fix building with clang (details)
  186. crypto: ccree - add missing inline qualifier (details)
  187. crypto: sha256/arm - fix crash bug in Thumb2 build (details)
  188. crypto: sha512/arm - fix crash bug in Thumb2 build (details)
  189. mac80211_hwsim: propagate genlmsg_reply return code (details)
  190. mac80211: Change default tx_sk_pacing_shift to 7 (details)
  191. mac80211: allocate tailroom for forwarded mesh packets (details)
  192. bpf, lpm: fix lookup bug in map_delete_elem (details)
  193. KEYS: user: Align the payload buffer (details)
  194. KEYS: always initialize keyring_index_key::desc_len (details)
  195. x86/kvm/mmu: fix switch between root and guest MMUs (details)
  196. kvm: x86: Return LA57 feature based on hardware capability (details)
  197. KVM: MMU: record maximum physical address width in kvm_mmu_extended_role (details)
  198. sctp: don't compare hb_timer expire date before starting it (details)
  199. ipvlan: disallow userns cap_net_admin to change global mode/flags (details)
  200. r8152: Fix an error on RTL8153-BD MAC Address Passthrough support (details)
  201. team: use operstate consistently for linkup (details)
  202. net: ip6_gre: fix possible NULL pointer dereference in (details)
  203. net: thunderx: correct typo in macro name (details)
  204. net: thunderx: replace global nicvf_rx_mode_wq work queue for all VFs to (details)
  205. net: thunderx: make CFG_DONE message to run through generic send-ack (details)
  206. net: thunderx: add nicvf_send_msg_to_pf result check for (details)
  207. net: thunderx: rework xcast message structure to make it fit into 64 bit (details)
  208. net: thunderx: add mutex to protect mailbox from concurrent calls for (details)
  209. net: thunderx: move link state polling function to VF (details)
  210. net: thunderx: remove link change polling code and info from nicpf (details)
  211. ipv6: route: purge exception on removal (details)
  212. net: socket: add check for negative optlen in compat setsockopt (details)
  213. Documentation: networking: switchdev: Update port parent ID section (details)
  214. nfp: bpf: fix code-gen bug on BPF_ALU | BPF_XOR | BPF_K (details)
  215. nfp: bpf: fix ALU32 high bits clearance bug (details)
  216. bnxt_en: Fix typo in firmware message timeout logic. (details)
  217. bnxt_en: Wait longer for the firmware message response to complete. (details)
  218. net: Set rtm_table to RT_TABLE_COMPAT for ipv6 for tables > 255 (details)
  219. mdio_bus: Fix use-after-free on device_register fails (details)
  220. udpv6: add the required annotation to mib type (details)
  221. fou6: fix proto error handler argument type (details)
  222. udpv6: fix possible user after free in error handler (details)
  223. udp: fix possible user after free in error handler (details)
  224. bpf, doc: add bpf list as secondary entry to maintainers file (details)
  225. net: phy: marvell10g: Fix Multi-G advertisement to only advertise 10G (details)
  226. net: set static variable an initial value in atl2_probe() (details)
  227. selftests: fib_tests: sleep after changing carrier. again. (details)
  228. Revert "bridge: do not add port to router list when receives query with (details)
  229. net: dsa: Remove documentation for port_fdb_prepare (details)
  230. net/x25: fix a race in x25_bind() (details)
  231. tcp: repaired skbs must init their tso_segs (details)
  232. net: phy: realtek: Dummy IRQ calls for RTL8366RB (details)
  233. Linux 5.0-rc8 (details)
  234. net/sched: act_ipt: fix refcount leak when replace fails (details)
  235. net/sched: act_skbedit: fix refcount leak when replace fails (details)
  236. net: dsa: lantiq: Add GPHY firmware files (details)
  237. tun: fix blocking read (details)
  238. ARM: dts: gemini: Re-enable display controller (details)
  239. mmc: spi: Fix card detection during probe (details)
  240. mmc: tmio_mmc_core: don't claim spurious interrupts (details)
  241. Revert "x86/fault: BUG() when uaccess helpers fault on kernel addresses" (details)
  242. net: dsa: fix a leaked reference by adding missing of_node_put (details)
  243. net: sched: act_tunnel_key: fix NULL pointer dereference during init (details)
  244. net: socket: set sock->sk to NULL after calling proto_ops::release() (details)
  245. x86/uaccess: Don't leak the AC flag into __put_user() value evaluation (details)
  246. tmpfs: fix uninitialized return value in shmem_link (details)
  247. afs: Fix manually set volume location server list (details)
  248. MIPS: BCM63XX: provide DMA masks for ethernet devices (details)
  249. tun: remove unnecessary memory barrier (details)
  250. net: Add __icmp_send helper. (details)
  251. net: avoid use IPCB in cipso_v4_error (details)
  252. scsi: lpfc: fix calls to dma_set_mask_and_coherent() (details)
  253. scsi: 3w-9xxx: fix calls to dma_set_mask_and_coherent() (details)
  254. scsi: 3w-sas: fix calls to dma_set_mask_and_coherent() (details)
  255. scsi: aic94xx: fix calls to dma_set_mask_and_coherent() (details)
  256. scsi: bfa: fix calls to dma_set_mask_and_coherent() (details)
  257. scsi: csiostor: fix calls to dma_set_mask_and_coherent() (details)
  258. scsi: hisi_sas: fix calls to dma_set_mask_and_coherent() (details)
  259. scsi: hptiop: fix calls to dma_set_mask() (details)
  260. mmc: tmio: fix access width of Block Count Register (details)
  261. iommu/dmar: Fix buffer overflow during PCI bus notification (details)
  262. bpf: decrease usercnt if bpf_map_new_fd() fails in (details)
  263. ipv4: Return error for RTA_VIA attribute (details)
  264. ipv6: Return error for RTA_VIA attribute (details)
  265. mpls: Return error for RTA_GATEWAY attribute (details)
  266. hv_netvsc: Fix IP header checksum for coalesced packets (details)
  267. tipc: fix race condition causing hung sendto (details)
  268. arm64: dts: qcom: msm8998: Extend TZ reserved memory area (details)
  269. mmc: core: Fix NULL ptr crash from mmc_should_fail_request (details)
  270. scsi: core: Avoid that system resume triggers a kernel warning (details)
  271. mmc: cqhci: fix space allocated for transfer descriptor (details)
  272. mmc: cqhci: Fix a tiny potential memory leak on error condition (details)
  273. mmc: core: align max segment size with logical block size (details)
  274. bnxt_en: Drop oversize TX packets to prevent errors. (details)
  275. net: dev: Use unsigned integer as an argument to left-shift (details)
  276. enc28j60: Correct description of debug module parameter (details)
  277. net: phy: Micrel KSZ8061: link failure after cable connect (details)
  278. drm/amd/display: Use vrr friendly pageflip throttling in DC. (details)
  279. net: nfc: Fix NULL dereference on nfc_llcp_build_tlv fails (details)
  280. mm: enforce min addr even if capable() in expand_downwards() (details)
  281. MIPS: fix memory setup for platforms with PHYS_OFFSET != 0 (details)
  282. drm: Block fb changes for async plane updates (details)
  283. drm/bochs: Fix the ID mismatch error (details)
  284. net: phy: dp83867: add soft reset delay (details)
  285. selftests: pmtu: disable DAD in all namespaces (details)
  286. selftests: pmtu: add explicit tests for PMTU exceptions cleanup (details)
  287. ipv4: Pass original device to ip_rcv_finish_core (details)
  288. netlabel: fix out-of-bounds memory accesses (details)
  289. crypto: arm64/chacha - fix chacha_4block_xor_neon() for big endian (details)
  290. crypto: arm64/chacha - fix hchacha_block_neon() for big endian (details)
  291. tee: optee: add missing of_node_put after of_device_is_available (details)
  292. x86/hyper-v: Fix definition of HV_MAX_FLUSH_REP_COUNT (details)
  293. mmc: sdhci-esdhc-imx: correct the fix of ERR004536 (details)
  294. kvm: properly check debugfs dentry before using it (details)
  295. net: netem: fix skb length BUG_ON in __skb_to_sgvec (details)
  296. sctp: chunk.c: correct format string for size_t in printk (details)
  297. xen-netback: fix occasional leak of grant ref mappings under memory (details)
  298. xen-netback: don't populate the hash cache on XenBus disconnect (details)
  299. net: dsa: mv88e6xxx: Fix u64 statistics (details)
  300. net: dsa: mv88e6xxx: power serdes on/off for 10G interfaces on 6390X (details)
  301. bpf: drop refcount if bpf_map_new_fd() fails in map_create() (details)
  302. kasan: turn off asan-stack for clang-8 and earlier (details)
  303. hugetlbfs: fix races and page leaks during migration (details)
  304. selftests: fixes for UDP GRO (details)
  305. net: aquantia: regression on cpus with high cores: set mode with 8 (details)
  306. net: phy: phylink: fix uninitialized variable in phylink_get_mac_state (details)
  307. lan743x: Fix TX Stall Issue (details)
  308. MIPS: eBPF: Fix icache flush end address (details)
  309. ipv4: Add ICMPv6 support when parse route ipproto (details)
  310. bpf: fix sanitation rewrite in case of non-pointers (details)
  311. net: dsa: mv88e6xxx: prevent interrupt storm caused by (details)
  312. geneve: correctly handle ipv6.disable module parameter (details)
  313. net: dsa: mv88e6xxx: Fix statistics on mv88e6161 (details)
  314. net: sit: fix memory leak in sit_init_net() (details)
  315. Linux 5.0 (details)
  316. cpufreq: Use struct kobj_attribute instead of struct global_attr (details)
  317. staging: erofs: fix mis-acted TAIL merging behavior (details)
  318. binder: create node flag to request sender's security context (details)
  319. USB: serial: option: add Telit ME910 ECM composition (details)
  320. USB: serial: cp210x: add ID for Ingenico 3070 (details)
  321. USB: serial: ftdi_sio: add ID for Hjelmslund Electronics USB485 (details)
  322. driver core: Postpone DMA tear-down until after devres release (details)
  323. staging: erofs: fix fast symlink w/o xattr when fs xattr is on (details)
  324. staging: erofs: fix memleak of inode's shared xattr array (details)
  325. staging: erofs: fix race of initializing xattrs of a inode at the same (details)
  326. staging: erofs: fix illegal address access under memory pressure (details)
  327. staging: comedi: ni_660x: fix missing break in switch statement (details)
  328. staging: wilc1000: fix to set correct value for 'vif_num' (details)
  329. staging: android: ion: fix sys heap pool's gfp_flags (details)
  330. staging: android: ashmem: Don't call fallocate() with ashmem_mutex held. (details)
  331. staging: android: ashmem: Avoid range_alloc() allocation with (details)
  332. ip6mr: Do not call __IP6_INC_STATS() from preemptible context (details)
  333. net: dsa: mv88e6xxx: add call to mv88e6xxx_ports_cmode_init to probe for (details)
  334. net: dsa: mv88e6xxx: handle unknown duplex modes gracefully in (details)
  335. net: dsa: mv8e6xxx: fix number of internal PHYs for 88E6x90 family (details)
  336. net: mscc: Enable all ports in QSGMII (details)
  337. net: sched: put back q.qlen into a single location (details)
  338. net-sysfs: Fix mem leak in netdev_register_kobject (details)
  339. qmi_wwan: Add support for Quectel EG12/EM12 (details)
  340. sctp: call iov_iter_revert() after sending ABORT (details)
  341. sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79 (details)
  342. team: Free BPF filter when unregistering netdev (details)
  343. tipc: fix RDM/DGRAM connect() regression (details)
  344. x86/CPU/AMD: Set the CPB bit unconditionally on F17h (details)
  345. x86/boot/compressed/64: Do not read legacy ROM on EFI system (details)
  346. tracing: Fix event filters and triggers to handle negative numbers (details)
  347. xhci: tegra: Prevent error pointer dereference (details)
  348. usb: xhci: Fix for Enabling USB ROLE SWITCH QUIRK on (details)
  349. applicom: Fix potential Spectre v1 vulnerabilities (details)
  350. alpha: wire up io_pgetevents system call (details)
  351. MIPS: irq: Allocate accurate order pages for irq stack (details)
  352. aio: Fix locking in aio_poll() (details)
  353. xtensa: fix get_wchan (details)
  354. gnss: sirf: fix premature wakeup interrupt enable (details)
  355. USB: serial: cp210x: fix GPIO in autosuspend (details)
  356. Revert "selftests: firmware: add CONFIG_FW_LOADER_USER_HELPER_FALLBACK (details)
  357. Revert "selftests: firmware: remove use of non-standard diff -Z option" (details)
  358. selftests: firmware: fix verify_reqs() return value (details)
  359. Bluetooth: btrtl: Restore old logic to assume firmware is already loaded (details)
  360. Bluetooth: Fix locking in bt_accept_enqueue() for BH context (details)
  361. exec: Fix mem leak in kernel_read_file (details)
  362. Linux 5.0.1 (details)
  363. media: uvcvideo: Fix 'type' check leading to overflow (details)
  364. Input: wacom_serial4 - add support for Wacom ArtPad II tablet (details)
  365. Input: elan_i2c - add id for touchpad found in Lenovo s21e-20 (details)
  366. iscsi_ibft: Fix missing break in switch statement (details)
  367. scsi: aacraid: Fix missing break in switch statement (details)
  368. x86/PCI: Fixup RTIT_BAR of Intel Denverton Trace Hub (details)
  369. arm64: dts: zcu100-revC: Give wifi some time after power-on (details)
  370. arm64: dts: hikey: Give wifi some time after power-on (details)
  371. arm64: dts: hikey: Revert "Enable HS200 mode on eMMC" (details)
  372. ARM: dts: exynos: Fix pinctrl definition for eMMC RTSN line on Odroid (details)
  373. ARM: dts: exynos: Add minimal clkout parameters to Exynos3250 PMU (details)
  374. ARM: dts: exynos: Fix max voltage for buck8 regulator on Odroid XU3/XU4 (details)
  375. drm: disable uncached DMA optimization for ARM and arm64 (details)
  376. media: Revert "media: rc: some events are dropped by userspace" (details)
  377. Revert "PCI/PME: Implement runtime PM callbacks" (details)
  378. bpf: Stop the psock parser before canceling its work (details)
  379. gfs2: Fix missed wakeups in find_insert_glock (details)
  380. staging: erofs: keep corrupted fs from crashing kernel in erofs_namei() (details)
  381. staging: erofs: compressed_pages should not be accessed again after (details)
  382. scripts/gdb: replace flags (MS_xyz -> SB_xyz) (details)
  383. ath9k: Avoid OF no-EEPROM quirks without qca,no-eeprom (details)
  384. perf/x86/intel: Make cpuc allocations consistent (details)
  385. perf/x86/intel: Generalize dynamic constraint creation (details)
  386. x86: Add TSX Force Abort CPUID/MSR (details)
  387. perf/x86/intel: Implement support for TSX Force Abort (details)
  388. Linux 5.0.2 (details)
  389. connector: fix unsafe usage of ->real_parent (details)
  390. fou, fou6: avoid uninit-value in gue_err() and gue6_err() (details)
  391. gro_cells: make sure device is up in gro_cells_receive() (details)
  392. ipv4/route: fail early when inet dev is missing (details)
  393. l2tp: fix infoleak in l2tp_ip6_recvmsg() (details)
  394. lan743x: Fix RX Kernel Panic (details)
  395. lan743x: Fix TX Stall Issue (details)
  396. net: hns3: add dma_rmb() for rx description (details)
  397. net: hsr: fix memory leak in hsr_dev_finalize() (details)
  398. net/hsr: fix possible crash in add_timer() (details)
  399. net: sit: fix UBSAN Undefined behaviour in check_6rd (details)
  400. net/x25: fix use-after-free in x25_device_event() (details)
  401. net/x25: reset state in x25_connect() (details)
  402. pptp: dst_release sk_dst_cache in pptp_sock_destruct (details)
  403. ravb: Decrease TxFIFO depth of Q3 and Q2 to one (details)
  404. route: set the deleted fnhe fnhe_daddr to 0 in ip_del_fnhe to fix a race (details)
  405. rxrpc: Fix client call queueing, waiting for channel (details)
  406. sctp: remove sched init from sctp_stream_init (details)
  407. tcp: do not report TCP_CM_INQ of 0 for closed connections (details)
  408. tcp: Don't access TCP_SKB_CB before initializing it (details)
  409. tcp: handle inet_csk_reqsk_queue_add() failures (details)
  410. vxlan: Fix GRO cells race condition between receive and link delete (details)
  411. vxlan: test dev->flags & IFF_UP before calling gro_cells_receive() (details)
  412. net/mlx4_core: Fix reset flow when in command polling mode (details)
  413. net/mlx4_core: Fix locking in SRIOV mode when switching between events (details)
  414. net/mlx4_core: Fix qp mtt size calculation (details)
  415. net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports (details)
  416. net: hns3: fix to stop multiple HNS reset due to the AER changes (details)
  417. vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock (details)
  418. net: sched: flower: insert new filter to idr after setting its mask (details)
  419. f2fs: wait on atomic writes to count F2FS_CP_WB_DATA (details)
  420. perf/x86: Fixup typo in stub functions (details)
  421. ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against (details)
  422. ALSA: firewire-motu: fix construction of PCM frame for capture direction (details)
  423. ALSA: hda: Extend i915 component bind timeout (details)
  424. ALSA: hda - add more quirks for HP Z2 G4 and HP Z240 (details)
  425. ALSA: hda/realtek: Enable audio jacks of ASUS UX362FA with ALC294 (details)
  426. ALSA: hda/realtek - Reduce click noise on Dell Precision 5820 headphone (details)
  427. ALSA: hda/realtek: Enable headset MIC of Acer TravelMate X514-51T with (details)
  428. perf/x86/intel: Fix memory corruption (details)
  429. perf/x86/intel: Make dev_attr_allow_tsx_force_abort static (details)
  430. It's wrong to add len to sector_nr in raid10 reshape twice (details)
  431. drm: Block fb changes for async plane updates (details)
  432. Linux 5.0.3 (details)
  433. 9p: use inode->i_lock to protect i_size_write() under 32-bit (details)
  434. 9p/net: fix memory leak in p9_client_create (details)
  435. ASoC: fsl_esai: fix register setting issue in RIGHT_J mode (details)
  436. ASoC: codecs: pcm186x: fix wrong usage of DECLARE_TLV_DB_SCALE() (details)
  437. ASoC: codecs: pcm186x: Fix energysense SLEEP bit (details)
  438. iio: adc: exynos-adc: Fix NULL pointer exception on unbind (details)
  439. iio: adc: exynos-adc: Use proper number of channels for Exynos4x12 (details)
  440. mei: hbm: clean the feature flags on link reset (details)
  441. mei: bus: move hw module get/put to probe/release (details)
  442. stm class: Prevent division by zero (details)
  443. stm class: Fix an endless loop in channel allocation (details)
  444. crypto: caam - fix hash context DMA unmap size (details)
  445. crypto: ccree - fix missing break in switch statement (details)
  446. crypto: caam - fixed handling of sg list (details)
  447. crypto: caam - fix DMA mapping of stack memory (details)
  448. crypto: ccree - fix free of unallocated mlli buffer (details)
  449. crypto: ccree - unmap buffer before copying IV (details)
  450. crypto: ccree - don't copy zero size ciphertext (details)
  451. crypto: cfb - add missing 'chunksize' property (details)
  452. crypto: cfb - remove bogus memcpy() with src == dest (details)
  453. crypto: ofb - fix handling partial blocks and make thread-safe (details)
  454. crypto: ahash - fix another early termination in hash walk (details)
  455. crypto: rockchip - fix scatterlist nents error (details)
  456. crypto: rockchip - update new iv to device in multiple operations (details)
  457. dax: Flush partial PMDs correctly (details)
  458. nfit: Fix nfit_intel_shutdown_status() command submission (details)
  459. nfit: acpi_nfit_ctl(): Check out_obj->type in the right place (details)
  460. acpi/nfit: Fix bus command validation (details)
  461. nfit/ars: Attempt a short-ARS whenever the ARS state is idle at boot (details)
  462. nfit/ars: Attempt short-ARS even in the no_init_ars case (details)
  463. libnvdimm/label: Clear 'updating' flag after label-set update (details)
  464. libnvdimm, pfn: Fix over-trim in trim_pfn_device() (details)
  465. libnvdimm/pmem: Honor force_raw for legacy pmem regions (details)
  466. libnvdimm: Fix altmap reservation size calculation (details)
  467. fix cgroup_do_mount() handling of failure exits (details)
  468. crypto: aead - set CRYPTO_TFM_NEED_KEY if ->setkey() fails (details)
  469. crypto: aegis - fix handling chunked inputs (details)
  470. crypto: arm/crct10dif - revert to C code for short inputs (details)
  471. crypto: arm64/aes-neonbs - fix returning final keystream block (details)
  472. crypto: arm64/crct10dif - revert to C code for short inputs (details)
  473. crypto: hash - set CRYPTO_TFM_NEED_KEY if ->setkey() fails (details)
  474. crypto: morus - fix handling chunked inputs (details)
  475. crypto: pcbc - remove bogus memcpy()s with src == dest (details)
  476. crypto: skcipher - set CRYPTO_TFM_NEED_KEY if ->setkey() fails (details)
  477. crypto: testmgr - skip crc32c context test for ahash algorithms (details)
  478. crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP (details)
  479. crypto: x86/aesni-gcm - fix crash on empty plaintext (details)
  480. crypto: x86/morus - fix handling chunked inputs and MAY_SLEEP (details)
  481. crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling (details)
  482. crypto: arm64/aes-ccm - fix bugs in non-NEON fallback routine (details)
  483. CIFS: Fix leaking locked VFS cache pages in writeback retry (details)
  484. CIFS: Do not reset lease state to NONE on lease break (details)
  485. CIFS: Do not skip SMB2 message IDs on send failures (details)
  486. CIFS: Fix read after write for files with read caching (details)
  487. smb3: make default i/o size for smb3 mounts larger (details)
  488. tracing: Use strncpy instead of memcpy for string keys in hist triggers (details)
  489. tracing: Do not free iter->trace in fail path of tracing_open_pipe() (details)
  490. tracing/perf: Use strndup_user() instead of buggy open-coded version (details)
  491. vmw_balloon: release lock on error in vmballoon_reset() (details)
  492. xen: fix dom0 boot on huge systems (details)
  493. ACPI / device_sysfs: Avoid OF modalias creation for removed device (details)
  494. mmc: sdhci-esdhc-imx: fix HS400 timing issue (details)
  495. mmc: renesas_sdhi: Fix card initialization failure in high speed mode (details)
  496. mmc:fix a bug when max_discard is 0 (details)
  497. spi: ti-qspi: Fix mmap read when more than one CS in use (details)
  498. spi: pxa2xx: Setup maximum supported DMA transfer length (details)
  499. spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch (details)
  500. spi: spi-gpio: fix SPI_CS_HIGH capability (details)
  501. regulator: s2mps11: Fix steps for buck7, buck8 and LDO35 (details)
  502. regulator: max77620: Initialize values for DT properties (details)
  503. regulator: s2mpa01: Fix step values for some LDOs (details)
  504. mt76: fix corrupted software generated tx CCMP PN (details)
  505. clocksource/drivers/exynos_mct: Move one-shot check from tick clear to (details)
  506. clocksource/drivers/exynos_mct: Clear timer interrupt when shutdown (details)
  507. clocksource/drivers/arch_timer: Workaround for Allwinner A64 timer (details)
  508. s390: vfio_ap: link the vfio_ap devices to the vfio_ap bus subsystem (details)
  509. s390/setup: fix early warning messages (details)
  510. s390/virtio: handle find on invalid queue gracefully (details)
  511. scsi: virtio_scsi: don't send sc payload with tmfs (details)
  512. scsi: aacraid: Fix performance issue on logical drives (details)
  513. scsi: sd: Optimal I/O size should be a multiple of physical block size (details)
  514. scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock (details)
  515. scsi: qla2xxx: Fix LUN discovery if loop id is not assigned yet by (details)
  516. scsi: qla2xxx: Avoid PCI IRQ affinity mapping when multiqueue is not (details)
  517. scsi: qla2xxx: Use complete switch scan for RSCN events (details)
  518. fs/devpts: always delete dcache dentry-s in dput() (details)
  519. splice: don't merge into linked buffers (details)
  520. ovl: During copy up, first copy up data and then xattrs (details)
  521. ovl: Do not lose security.capability xattr over metadata file copy-up (details)
  522. m68k: Add -ffreestanding to CFLAGS (details)
  523. Btrfs: setup a nofs context for memory allocation at btrfs_create_tree() (details)
  524. Btrfs: setup a nofs context for memory allocation at __btrfs_set_acl (details)
  525. btrfs: scrub: fix circular locking dependency warning (details)
  526. btrfs: drop the lock on error in btrfs_dev_replace_cancel (details)
  527. btrfs: ensure that a DUP or RAID1 block group has exactly two stripes (details)
  528. btrfs: init csum_list before possible free (details)
  529. Btrfs: fix corruption reading shared and compressed extents after hole (details)
  530. Btrfs: fix deadlock between clone/dedupe and rename (details)
  531. soc: qcom: rpmh: Avoid accessing freed memory from batch API (details)
  532. libertas_tf: don't set URB_ZERO_PACKET on IN USB transfer (details)
  533. irqchip/gic-v3-its: Avoid parsing _indirect_ twice for Device table (details)
  534. irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code (details)
  535. x86/kprobes: Prohibit probing on optprobe template code (details)
  536. cpufreq: kryo: Release OPP tables on module removal (details)
  537. cpufreq: tegra124: add missing of_node_put() (details)
  538. cpufreq: pxa2xx: remove incorrect __init annotation (details)
  539. ext4: fix check of inode in swap_inode_boot_loader (details)
  540. ext4: cleanup pagecache before swap i_data (details)
  541. mm: hwpoison: fix thp split handing in soft_offline_in_use_page() (details)
  542. mm/vmalloc: fix size check for remap_vmalloc_range_partial() (details)
  543. mm/memory.c: do_fault: avoid usage of stale vm_area_struct (details)
  544. kernel/sysctl.c: add missing range check in do_proc_dointvec_minmax_conv (details)
  545. nvmem: core: don't check the return value of notifier chain call (details)
  546. device property: Fix the length used in PROPERTY_ENTRY_STRING() (details)
  547. intel_th: Don't reference unassigned outputs (details)
  548. parport_pc: fix find_superio io compare code, should use equal test. (details)
  549. i2c: tegra: fix maximum transfer size (details)
  550. i2c: tegra: update maximum transfer size (details)
  551. media: i2c: ov5640: Fix post-reset delay (details)
  552. gpio: pca953x: Fix dereference of irq data in shutdown (details)
  553. ext4: update quota information while swapping boot loader inode (details)
  554. ext4: add mask of ext4 flags to swap (details)
  555. ext4: fix crash during online resizing (details)
  556. dma: Introduce dma_max_mapping_size() (details)
  557. swiotlb: Introduce swiotlb_max_mapping_size() (details)
  558. swiotlb: Add is_swiotlb_active() function (details)
  559. PCI/ASPM: Use LTR if already enabled by platform (details)
  560. PCI/DPC: Fix print AER status in DPC event handling (details)
  561. PCI: qcom: Don't deassert reset GPIO during probe (details)
  562. PCI: dwc: skip MSI init if MSIs have been explicitly disabled (details)
  563. PCI: pciehp: Disable Data Link Layer State Changed event on suspend (details)
  564. PCI: pci-bridge-emul: Create per-bridge copy of register behavior (details)
  565. PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags (details)
  566. IB/hfi1: Close race condition on user context disable and close (details)
  567. IB/rdmavt: Fix loopback send with invalidate ordering (details)
  568. IB/rdmavt: Fix concurrency panics in QP post_send and modify to error (details)
  569. cxl: Wrap iterations over afu slices inside 'afu_list_lock' (details)
  570. ext2: Fix underflow in ext2_max_size() (details)
  571. clk: uniphier: Fix update register for CPU-gear (details)
  572. clk: clk-twl6040: Fix imprecise external abort for pdmclk (details)
  573. clk: samsung: exynos5: Fix possible NULL pointer exception on (details)
  574. clk: samsung: exynos5: Fix kfree() of const memory on setting (details)
  575. clk: ingenic: Fix round_rate misbehaving with non-integer dividers (details)
  576. clk: ingenic: Fix doc of ingenic_cgu_div_info (details)
  577. usb: chipidea: tegra: Fix missed ci_hdrc_remove_device() (details)
  578. usb: typec: tps6598x: handle block writes separately with plain-I2C (details)
  579. dmaengine: usb-dmac: Make DMAC system sleep callbacks explicit (details)
  580. serial: uartps: Fix stuck ISR if RX disabled with non-empty FIFO (details)
  581. serial: 8250_of: assume reg-shift of 2 for mrvl,mmp-uart (details)
  582. serial: 8250_pci: Fix number of ports for ACCES serial cards (details)
  583. serial: 8250_pci: Have ACCES cards that use the four port Pericom (details)
  584. jbd2: clear dirty flag when revoking a buffer from an older transaction (details)
  585. jbd2: fix compile warning when using JBUFFER_TRACE (details)
  586. selinux: add the missing walk_size + len check in (details)
  587. security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock (details)
  588. powerpc/32: Clear on-stack exception marker upon exception return (details)
  589. powerpc/wii: properly disable use of BATs when requested. (details)
  590. powerpc/powernv: Make opal log only readable by root (details)
  591. powerpc/83xx: Also save/restore SPRG4-7 during suspend (details)
  592. powerpc/kvm: Save and restore host AMR/IAMR/UAMOR (details)
  593. powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit (details)
  594. powerpc/64s/hash: Fix assert_slb_presence() use of the slbfee. (details)
  595. powerpc: Fix 32-bit KVM-PR lockup and host crash with MacOS guest (details)
  596. powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning (details)
  597. powerpc/hugetlb: Don't do runtime allocation of 16G pages in LPAR (details)
  598. powerpc/smp: Fix NMI IPI timeout (details)
  599. powerpc/smp: Fix NMI IPI xmon timeout (details)
  600. powerpc/traps: fix recoverability of machine check handling on book3s/32 (details)
  601. powerpc/traps: Fix the message printed when stack overflows (details)
  602. ARM: s3c24xx: Fix boolean expressions in osiris_dvs_notify (details)
  603. arm64: Fix HCR.TGE status for NMI contexts (details)
  604. arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals (details)
  605. arm64: debug: Ensure debug handlers check triggering exception level (details)
  606. arm64: KVM: Fix architecturally invalid reset value for FPEXC32_EL2 (details)
  607. Revert "KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()" (details)
  608. ipmi_si: Fix crash when using hard-coded device (details)
  609. ipmi_si: fix use-after-free of resource->name (details)
  610. dm: fix to_sector() for 32bit (details)
  611. dm integrity: limit the rate of error messages (details)
  612. media: cx25840: mark pad sig_types to fix cx231xx init (details)
  613. mfd: sm501: Fix potential NULL pointer dereference (details)
  614. cpcap-charger: generate events for userspace (details)
  615. cpuidle: governor: Add new governors to cpuidle_governors again (details)
  616. NFS: Fix I/O request leakages (details)
  617. NFS: Fix an I/O request leakage in nfs_do_recoalesce (details)
  618. NFS: Don't recoalesce on error in nfs_pageio_complete_mirror() (details)
  619. nfsd: fix performance-limiting session calculation (details)
  620. nfsd: fix memory corruption caused by readdir (details)
  621. nfsd: fix wrong check in write_v4_end_grace() (details)
  622. NFSv4.1: Reinitialise sequence results before retransmitting a request (details)
  623. svcrpc: fix UDP on servers with lots of threads (details)
  624. PM / wakeup: Rework wakeup source timer cancellation (details)
  625. PM / OPP: Update performance state when freq == old_freq (details)
  626. bcache: never writeback a discard operation (details)
  627. bcache: treat stale && dirty keys as bad keys (details)
  628. bcache: use (REQ_META|REQ_PRIO) to indicate bio for metadata (details)
  629. stable-kernel-rules.rst: add link to networking patch queue (details)
  630. vt: perform safe console erase in the right order (details)
  631. x86/unwind/orc: Fix ORC unwind table alignment (details)
  632. perf intel-pt: Fix CYC timestamp calculation after OVF (details)
  633. perf tools: Fix split_kallsyms_for_kcore() for trampoline symbols (details)
  634. perf auxtrace: Define auxtrace record alignment (details)
  635. perf intel-pt: Fix overlap calculation for padding (details)
  636. perf/x86/intel/uncore: Fix client IMC events return huge result (details)
  637. perf intel-pt: Fix divide by zero when TSC is not available (details)
  638. md: Fix failed allocation of md_register_thread (details)
  639. x86/kvmclock: set offset for kvm unstable clock (details)
  640. x86/ftrace: Fix warning and considate ftrace_jmp_replace() and (details)
  641. tpm/tpm_crb: Avoid unaligned reads in crb_recv() (details)
  642. tpm: Unify the send callback behaviour (details)
  643. rcu: Do RCU GP kthread self-wakeup from softirq and interrupt (details)
  644. media: imx: prpencvf: Stop upstream before disabling IDMA channel (details)
  645. media: lgdt330x: fix lock status reporting (details)
  646. media: sun6i: Fix CSI regmap's max_register (details)
  647. media: uvcvideo: Avoid NULL pointer dereference at the end of streaming (details)
  648. media: vimc: Add vimc-streamer for stream control (details)
  649. media: imx-csi: Input connections to CSI should be optional (details)
  650. media: imx: csi: Disable CSI immediately after last EOF (details)
  651. media: imx: csi: Stop upstream before disabling IDMA channel (details)
  652. drm/fb-helper: generic: Fix drm_fbdev_client_restore() (details)
  653. drm/radeon/evergreen_cs: fix missing break in switch statement (details)
  654. drm/amd/powerplay: correct power reading on fiji (details)
  655. drm/amd/display: don't call dm_pp_ function from an fpu block (details)
  656. KVM: Call kvm_arch_memslots_updated() before updating memslots (details)
  657. KVM: VMX: Compare only a single byte for VMCS' "launched" in vCPU-run (details)
  658. KVM: VMX: Zero out *all* general purpose registers after VM-Exit (details)
  659. KVM: x86/mmu: Detect MMIO generation wrap in any address space (details)
  660. KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux (details)
  661. KVM: nVMX: Sign extend displacements of VMX instr's mem operands (details)
  662. KVM: nVMX: Apply addr size mask to effective address for VMX (details)
  663. KVM: nVMX: Ignore limit checks on VMX instructions using flat segments (details)
  664. KVM: nVMX: Check a single byte for VMCS "launched" in nested early (details)
  665. net: dsa: lantiq_gswip: fix use-after-free on failed probe (details)
  666. net: dsa: lantiq_gswip: fix OF child-node lookups (details)
  667. s390/setup: fix boot crash for machine without EDAT-1 (details)
  668. SUNRPC: Prevent thundering herd when the socket is not connected (details)
  669. SUNRPC: Fix up RPC back channel transmission (details)
  670. SUNRPC: Respect RPC call timeouts when retrying transmission (details)
  671. Linux 5.0.4 (details)
  672. ALSA: hda - add Lenovo IdeaCentre B550 to the power_save_blacklist (details)
  673. ALSA: firewire-motu: use 'version' field of unit directory to identify (details)
  674. mmc: pxamci: fix enum type confusion (details)
  675. mmc: alcor: fix DMA reads (details)
  676. mmc: mxcmmc: "Revert mmc: mxcmmc: handle highmem pages" (details)
  677. mmc: renesas_sdhi: limit block count to 16 bit for old revisions (details)
  678. drm/amdgpu: fix invalid use of change_bit (details)
  679. drm/vmwgfx: Don't double-free the mode stored in par->set_mode (details)
  680. drm/vmwgfx: Return 0 when gmrid::get_node runs out of ID's (details)
  681. iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE (details)
  682. iommu/iova: Fix tracking of recently failed iova address (details)
  683. libceph: wait for latest osdmap in ceph_monc_blacklist_add() (details)
  684. udf: Fix crash on IO error during truncate (details)
  685. mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction. (details)
  686. MIPS: Ensure ELF appended dtb is relocated (details)
  687. MIPS: Fix kernel crash for R6 in jump label branch function (details)
  688. powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038 (details)
  689. powerpc/security: Fix spectre_v2 reporting (details)
  690. net/mlx5: Fix DCT creation bad flow (details)
  691. scsi: core: Avoid that a kernel warning appears during system resume (details)
  692. scsi: qla2xxx: Fix FC-AL connection target discovery (details)
  693. scsi: ibmvscsi: Protect ibmvscsi_head from concurrent modificaiton (details)
  694. scsi: ibmvscsi: Fix empty event pool access during host removal (details)
  695. futex: Ensure that futex address is aligned in handle_futex_death() (details)
  696. cifs: allow guest mounts to work for smb3.11 (details)
  697. perf probe: Fix getting the kernel map (details)
  698. objtool: Move objtool_file struct off the stack (details)
  699. irqchip/gic-v3-its: Fix comparison logic in lpi_range_cmp (details)
  700. clocksource/drivers/riscv: Fix clocksource mask (details)
  701. SMB3: Fix SMB3.1.1 guest mounts to Samba (details)
  702. ALSA: hda - Don't trigger jackpoll_work in azx_resume (details)
  703. ALSA: ac97: Fix of-node refcount unbalance (details)
  704. ext4: fix NULL pointer dereference while journal is aborted (details)
  705. ext4: fix data corruption caused by unaligned direct AIO (details)
  706. ext4: brelse all indirect buffer in ext4_ind_remove_space() (details)
  707. media: v4l2-ctrls.c/uvc: zero v4l2_event (details)
  708. Bluetooth: hci_uart: Check if socket buffer is ERR_PTR in h4_recv_buf() (details)
  709. Bluetooth: Fix decrementing reference count twice in releasing socket (details)
  710. Bluetooth: hci_ldisc: Initialize hci_dev before open() (details)
  711. Bluetooth: hci_ldisc: Postpone HCI_UART_PROTO_READY bit set in (details)
  712. drm/vkms: Fix flush_work() without INIT_WORK(). (details)
  713. RDMA/cma: Rollback source IP address if failing to acquire device (details)
  714. f2fs: fix to avoid deadlock of atomic file operations (details)
  715. aio: simplify - and fix - fget/fput for io_submit() (details)
  716. netfilter: ebtables: remove BUGPRINT messages (details)
  717. loop: access lo_backing_file only when the loop device is Lo_bound (details)
  718. x86/unwind: Handle NULL pointer calls better in frame unwinder (details)
  719. x86/unwind: Add hardcoded ORC entry for NULL (details)
  720. locking/lockdep: Add debug_locks check in __lock_downgrade() (details)
  721. ALSA: hda - Record the current power state before suspend/resume calls (details)
  722. ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec (details)
  723. Linux 5.0.5 (details)
  724. gpu: pvr: Add PVR GPU driver (details)
  725. gpu: pvr: compilation fixes for kernel > 2.6.33 (details)
  726. gpu: pvr: move device registration into board file (details)
  727. gpu: pvr: add support to set board specific max SGX functional clk rate (details)
  728. gpu: pvr: add pvr_lock/remove unneeded lock headers (details)
  729. gpu: pvr: bail out from SGXOSTimer if it's been canceled (details)
  730. gpu: pvr: fix locking on the HW interrupt path (details)
  731. gpu: pvr: acquire the pvr lock on the SGX HW recovery path (details)
  732. gpu: pvr: fix locking in pvr_dbg_reset (details)
  733. gpu: pvr: BUG if pvr_lock is not held in HWRecoveryResetSGX (details)
  734. gpu: pvr: fix indent error (details)
  735. gpu: pvr: remove unused per device variable (details)
  736. gpu: pvr: make sure the device is powered on in SGX_MISRHandler (details)
  737. gpu: pvr: add support for finding the BM context from the DL (details)
  738. gpu: pvr: clean up FreeResourceByCriteria (details)
  739. gpu: pvr: add helpers to look up resource context and proc info (details)
  740. gpu: pvr: dump process info at HW recovery reset (details)
  741. gpu: pvr: add option for extra debugging information (details)
  742. gpu: pvr: enable debug trace for basic debug build (details)
  743. gpu: pvr: fix locking on SGX load calculating thread (details)
  744. gpu: pvr: fix locking on the DVFS path (details)
  745. gpu: pvr: remove PVRSRVPowerLock() (details)
  746. gpu: pvr: remove sPowerStateChangeResource lock (details)
  747. gpu: pvr: remove sQProcessResource/OSLockResource interface (details)
  748. gpu: pvr: remove unused function args from PVRSRVSetDevicePowerStateKM (details)
  749. gpu: pvr: remove unused function args from PVRSRVProcessQueues (details)
  750. gpu: pvr: no need to check for retry failures in PVRSRVMISR (details)
  751. gpu: pvr: remove unused function args from HWRecoveryResetSGX (details)
  752. gpu: pvr: no need to check for retry failures in SGXScheduleCCBCommandKM (details)
  753. gpu: pvr: no need to check for IRQ context in SGXCommandComplete (details)
  754. gpu: pvr: no need to check for retry failures in SGXTestActivePowerEvent (details)
  755. gpu: pvr: no need to delay queue processing in SGXPostActivePowerEvent (details)
  756. gpu: pvr: remove unused function args from SGXPostActivePowerEvent (details)
  757. gpu: pvr: remove unused function args from SGXTestActivePowerEvent (details)
  758. gpu: pvr: remove unrelevant comments about caller ID (details)
  759. gpu: pvr: fix PDUMP configuartion in release build (details)
  760. gpu: pvr: remove support for broken LINUX_MEM_AREAS_DEBUG (details)
  761. gpu: pvr: round the SGX fclock rate to the nearest supported (details)
  762. gpu: pvr: replace boolean by flags in blits complete query (details)
  763. gpu: pvr: support for events (details)
  764. gpu: pvr: support for polling events (details)
  765. gpu: pvr: support for render complete events (details)
  766. gpu: pvr: enable render complete events (details)
  767. gpu: pvr: support for user data in events (details)
  768. gpu: pvr: more accurate error reporting when clk_set_rate fails (details)
  769. gpu: pvr: fix lockdep problem (details)
  770. gpu: pvr: move ocp_cleanup() later during device deinit (details)
  771. gpu: pvr: optimize pvr_lock() by inlining it (details)
  772. gpu: pvr: Disable driver if SGX HW recovery fails (details)
  773. gpu: pvr: Reuse the same syncobject across all wraps (details)
  774. gpu: pvr: fix handle allocation when sharing sync objects (details)
  775. gpu: pvr: Add support for flip complete events (details)
  776. gpu: pvr: Reduce code duplication (details)
  777. gpu: pvr: Use DSS notifier to signal flip complete events (details)
  778. gpu: pvr: omaplfb: remove unnecessary fb unblanking (details)
  779. gpu: pvr: add SGXScheduleProcessQueues to prepare for pvr_dev_lock (details)
  780. gpu: pvr: add dvfs lock (details)
  781. gpu: pvr: rename pvr_dvfs_lock to pvr_dev_lock (details)
  782. gpu: pvr: fix locking around HWRecoveryResetSGX (details)
  783. gpu: pvr: Remove needless NULL check in BM_ImportMemory. (details)
  784. gpu: pvr: Remove needless NULL check in BM_DestroyHeap. (details)
  785. gpu: pvr: Fixed formatting in buffer_manager.c (details)
  786. gpu: pvr: Remove needless NULL check in WrapMemory. (details)
  787. gpu: pvr: Remove needless NULL check in BM_CreateHeap. (details)
  788. gpu: pvr: Remove needless NULL check in PVRSRVWrapExtMemoryKM. (details)
  789. gpu: pvr: Changed error-path condtion. (details)
  790. gpu: pvr: Changed ReallocMem. (details)
  791. gpu: pvr: Check OSAllocMem return value. (details)
  792. gpu: pvr: Check OSAllocMem return value. (details)
  793. gpu: pvr: Remove FIRST_PHYSICAL_PFN define. (details)
  794. gpu: pvr: Removed needless NULL check in MMU_BIFResetPDAlloc. (details)
  795. gpu: pvr: Check OSAllocMem return value. (details)
  796. gpu: pvr: Check OSAllocMem return value. (details)
  797. gpu: pvr: Check OSAllocMem return value. (details)
  798. gpu: pvr: Remove SysAcquireData call in pvr_cleanup. (details)
  799. gpu: pvr: Check SysAcquireData return value. (details)
  800. gpu: pvr: pass IOCTL in param size to dispatch func (details)
  801. gpu: pvr: Increase the max number of 3D TA status vals in kick requests (details)
  802. gpu: pvr: Fixed error path in cache flush function. (details)
  803. gpu: pvr: fix locking on the HW recovery reset error path (details)
  804. gpu: pvr: remove unnecessary udelay from the HW poll loop (details)
  805. gpu: pvr: fix typo in SGXDoKickBW (details)
  806. gpu: pvr: split out setting power down delay into its own function (details)
  807. gpu: pvr: fix SysGetSGXTimingInformation for cases when the HW is off (details)
  808. gpu: pvr: add support for dynamic timing of SGX HW power down (details)
  809. gpu: pvr: wire in the dynamic power-down delay calculation (details)
  810. gpu: pvr: Expose new display events to user space (details)
  811. gpu: pvr: Snapshot pending write ops during event request (details)
  812. gpu: pvr: remove build time ABI dependency on the EDM trace option (details)
  813. gpu: pvr: make the IOCTL i/f compatible for old ABI users (details)
  814. gpu: pvr: fix Kconfig description for EDM tracing (details)
  815. gpu: pvr: remove runtime dependency on the EDM trace option (details)
  816. gpu: pvr: move debugfs entries under a new pvr dir (details)
  817. gpu: pvr: make debugfs available in release build too (details)
  818. gpu: pvr: add snprint_edm_trace (details)
  819. gpu: pvr: add debugfs entry to read the EDM trace (details)
  820. gpu: pvr: print some init failure messages in release mode too (details)
  821. gpu: pvr: remove ABI compatibility hack from SGXInitPart2 IOCTL (details)
  822. gpu: pvr: remove ABI compatibility hack from SGXKick IOCTL (details)
  823. gpu: pvr: refactor dump_process_info (details)
  824. gpu: pvr: dump render status buffers during SGX HW recovery (details)
  825. gpu: pvr: improve per process procfs entry/dir handling (details)
  826. gpu: pvr: disable sgx active power management while pvrtune is running (details)
  827. gpu: pvr: fix error path during SGX device initialization (details)
  828. gpu: pvr: move debugfs infrastructure to its own files (details)
  829. gpu: pvr: debugfs: add initial hwrec dumping infrastructure (details)
  830. gpu: pvr: debugfs: add hwrec register dump (details)
  831. gpu: pvr: debugfs: add hwrec context dump (details)
  832. gpu: pvr: debugfs: add hwrec edm trace (details)
  833. gpu: pvr: debugfs: add hwrec status buffer dumping (details)
  834. gpu: pvr: pdump: SYS_DATA::bPowerUpPDumped is unused (details)
  835. gpu: pvr: pdump: consolidate some code inside PDUMP defines (details)
  836. gpu: pvr: pdump: remove unused bridge calls (details)
  837. gpu: pvr: pdump: remove unused pdump functions (details)
  838. gpu: pvr: pdump: remove lastframe support (details)
  839. gpu: pvr: pdump: stop depending on dbgdrvif.h (details)
  840. gpu: pvr: pdump: remove dbgdrv (details)
  841. gpu: pvr: pdump: remove wrapping of globals in pdump.c (details)
  842. gpu: pvr: pdump: remove pdump marker code (details)
  843. gpu: pvr: pdump: move functions around to better reflect dependencies (details)
  844. gpu: pvr: pdump: reduce error propagation from pdump to userspace (details)
  845. gpu: pvr: pdump: rewrite PDumpWriteString2() to pdump_print() (details)
  846. gpu: pvr: pdump: rewrite PDumpCommentKM (details)
  847. gpu: pvr: pdump: remove param offset handling (details)
  848. gpu: pvr: pdump: review use of PDumpSuspended (details)
  849. gpu: pvr: pdump: assume that SGX_MMU_PAGE_SIZE equals PAGE_SIZE (details)
  850. gpu: pvr: pdump: clean up logic across pdump.c (details)
  851. gpu: pvr: pdump: remove page offset juggling (details)
  852. gpu: pvr: pdump: sanitise stream handling (details)
  853. gpu: pvr: pdump: rewrite PDumpMemUM() (details)
  854. gpu: pvr: pdump: move pdump.c and pdump_km.h to pvr_pdump.[ch] (details)
  855. gpu: pvr: pdump: remove unused arguments (details)
  856. gpu: pvr: pdump: rename PDumpMem2KM to PDumpPageTableKM (details)
  857. gpu: pvr: pdump: silence sparse warnings in sgx_bridge pdump code (details)
  858. gpu: pvr: pdump: move empty back-end into pvr_pdumpfs.[ch] (details)
  859. gpu: pvr: pdumpfs: add pdumpfs_mutex (details)
  860. gpu: pvr: pdumpfs: add Kconfig and debugfs pdump mode handling (details)
  861. gpu: pvr: pdumpfs: add frame struct and initial frame handling code (details)
  862. gpu: pvr: pdumpfs: make frame_count_max configurable (details)
  863. gpu: pvr: pdumpfs: start storing pdump data (details)
  864. gpu: pvr: pdumpfs: add initial frame handling and debugfs support (details)
  865. gpu: pvr: pdumpfs: add debugfs entries for the current frame (details)
  866. gpu: pvr: pdumpfs: add stream offset tracking (details)
  867. gpu: pvr: pdumpfs: add stream_frames debugfs entry (details)
  868. gpu: pvr: pdumpfs: fix for imgtec simulator (details)
  869. gpu: pvr: change snprintf to scnprintf (details)
  870. gpu: pvr: reinstate dumping EDM trace to syslog (details)
  871. gpu: pvr: fix error path in PVRSRVRegisterBCDeviceKM (details)
  872. gpu: pvr: refactor error path in PVRSRVOpenBCDeviceKM (details)
  873. gpu: pvr: fix incorrect free size in PVRSRVOpenBCDeviceKM (details)
  874. gpu: pvr: fix error path in PVRSRVOpenBCDeviceKM (details)
  875. gpu: pvr: refactor error path in PVRSRVOpenDCDeviceKM (details)
  876. gpu: pvr: fix error path in PVRSRVOpenDCDeviceKM (details)
  877. gpu: pvr: fix PVRSRVWrapExtMemoryKM for user provided physical pages (details)
  878. gpu: pvr: fix error path in hash _Resize (details)
  879. gpu: pvr: optimize mem clear in hash _Resize (details)
  880. gpu: pvr: fix error path in MMU_Initialise (details)
  881. gpu: pvr: fix state buffer validation (details)
  882. gpu: pvr: fix error path in SysInitialise (details)
  883. gpu: pvr: remove dead code from the PVRSRVGetFBStatsKM code path (details)
  884. gpu: pvr: get rid of unnecessary hash lookups for the proc object (details)
  885. gpu: pvr: add missing headers to osfunc.h (details)
  886. gpu: pvr: get proc name during process attach time (details)
  887. gpu: pvr: use already existing proc name in pr_err_process info (details)
  888. gpu: pvr: add command tracing support (details)
  889. gpu: pvr: pass proc info to sgxkick and sgxtransfer (details)
  890. gpu: pvr: add tracing to the SGX kick and transfer commands (details)
  891. gpu: pvr: add tracing to the SGX queryblits command (details)
  892. gpu: pvr: add tracing for PVR events (details)
  893. gpu: pvr: add debugfs interface for the command trace (details)
  894. gpu: pvr: print the command trace to syslog during HWrec (details)
  895. gpu: pvr: fix memory context refcount problem leading to leaked handle (details)
  896. gpu: pvr: report IOCTL failures (details)
  897. gpu: pvr: remove CommonBridgeInit() (details)
  898. gpu: pvr: move ioctl checking error messagess to pr_err() (details)
  899. gpu: pvr: fix init script handling for pdump/non-pdump (details)
  900. gpu: pvr: move pdump ioctls to its own range at 192 (details)
  901. gpu: pvr: debugfs: add registers file (details)
  902. gpu: pvr: hwrec: fix hwrec_mem_pages type change warnings (details)
  903. gpu: pvr: fix pdumpfs_stream_buffer_clear (details)
  904. gpu: pvr: fix missing return value warning when CONFIG_BUG=n (details)
  905. gpu: pvr: V2: Find and fix all incorrect sync counter completion checks (details)
  906. gpu: pvr: kick: check for duplicate src syncs (details)
  907. gpu: pvr: add slab.h include in order to make driver build on 2.6.35.3 (details)
  908. SGX: display.h -> omapdss.h (details)
  909. SGX: console_sem -> console_lock (details)
  910. SGX: clk_notifier_register -> cpufreq_register_notifier (details)
  911. SGX: Add export.h include to pvr_debugfs.c (details)
  912. gpu: pvr: Use DMA mapping API for cache invalidation (details)
  913. gpu: pvr: update config dependency name (details)
  914. gpu: pvr: use video/omapfb_dss.h header file (details)
  915. gpu: pvr: remove includes for asm/system.h (details)
  916. gpu: pvr: convert file permissions to numeric (details)
  917. gpu: pvr: convert proc files to seq_file interface (details)
  918. gpu: pvr: proc: use file_inode() macro (details)
  919. gpu: pvr: update write handlers for proc files (details)
  920. gpu: pvr: convert timer to use timer_setup() (details)
  921. gpu: pvr: kill vma flag VM_RESERVED (details)
  922. gpu: pvr: remove the first parameter of OSAccessOK() (details)
  923. gpu: pvr: page_cache_release() -> put_page() (details)
  924. gpu: pvr: update get_user_pages() for changed API (details)
  925. gpu: pvr: remove __dev* attributes (details)
  926. gpu: pvr: ignore return value of misc_deregister() (details)
  927. gpu: pvr: proc: rename variables (details)
  928. gpu: pvr: rewrite proc files write handling (details)
  929. gpu: pvr: don't dereference pointers to proc_dir_entry (details)
  930. gpu: pvr: include dma.h for dmac_map_area() (details)
  931. ARM: export cache flush management symbols when !MULTI_CACHE (details)
  932. gpu: pvr: remove unused omap_pm_set_min_bus_tput() (details)
  933. gpu: pvr: make sysutils.o build (details)
  934. gpu: pvr: add header for cpu_clock() (details)
  935. gpu: pvr: events: remove unused do_gettimeofday() (details)
  936. gpu: pvr: debugfs: get rid of do_gettimeofday() (details)
  937. gpu: pvr: events: get rid of do_gettimeofday() (details)
  938. gpu: pvr: set proper SGX maximum clock rate (details)
  939. gpu: pvr: add device tree support (details)
  940. ARM: dts: omap34xx: add GPU entry (details)
  941. gpu: pvr: update for common clk framework (details)
  942. gpu: pvr: remove irrelevant clk_set_parent() (details)
  943. gpu: pvr: cpufreq_register_notifier -> clk_notifier_register (details)
  944. gpu: pvr: remove line wraps (details)
  945. gpu: pvr: set FMODE_UNSIGNED_OFFSET (details)
  946. gpu: pvr: debug: show memory stats in /proc/slabinfo (details)
  947. gpu: pvr: enhance debugging (details)
  948. gpu: pvr: minor fix (details)
  949. gpu: pvr: fix CONFIG_PVR_TRACE_CMD=y compilation (details)
  950. gpu: pvr: trace_cmd: fix empty buffer (details)
  951. gpu: pvr: trace_cmd: rewrite with seq_file (details)
  952. OMAP: DSS2: apply patch from Nemo Adaptation (details)
  953. OMAP: DSS2: fix state checking (details)
  954. Input: tsc200x-core - add 'disable' sysfs attribute (details)
  955. ARM: dts: n900: remove rx51-battery (details)
  956. ARM: dts: n900: increase charge current limit to 950mA (details)
  957. bq27x00: use cached flags (details)
  958. ARM: dts: n900: ignore mmc1 card detect gpio (details)
  959. ARM: n900_defconfig: rename omap2plus_defconfig (details)
  960. ARM: n900_defconfig: update for current kernel (details)
  961. ARM: n900_defconfig: disable lock debugging (details)
  962. ARM: n900_defconfig: disable SMP (details)
  963. ARM: n900_defconfig: disable DRM (details)
  964. ARM: n900_defconfig: make display work (details)
  965. ARM: n900_defconfig: enable PowerVR SGX (details)
  966. ARM: n900_defconfig: enable WiFi (details)
  967. ARM: n900_defconfig: set kernel compression mode to LZ4 (details)
  968. ARM: n900_defconfig: don't store .config in kernel (details)
  969. ARM: n900_defconfig: increase kernel log buffer size (details)
  970. ARM: n900_defconfig: disable swap controller (cgroup) (details)
  971. ARM: n900_defconfig: remove obsolete sysfs syscall (details)
  972. ARM: n900_defconfig: select SLUB as slab allocator (details)
  973. ARM: n900_defconfig: disable ARMv6 (details)
  974. ARM: n900_defconfig: remove excessive systems (details)
  975. ARM: n900_defconfig: clean up SoC specific features (details)
  976. ARM: n900_defconfig: clean up common clock framework (details)
  977. ARM: n900_defconfig: disable extraneous erratas (details)
  978. ARM: n900_defconfig: disable L2x0 PrimeCell (details)
  979. ARM: n900_defconfig: disable PCI (details)
  980. ARM: n900_defconfig: set preemption model to "Desktop" (details)
  981. ARM: n900_defconfig: optimize kernel for size (details)
  982. ARM: n900_defconfig: build in Thumb-2 mode (details)
  983. ARM: n900_defconfig: disable Thumb-2 bug workaround (details)
  984. ARM: n900_defconfig: set timer frequency to 200 Hz (details)
  985. ARM: n900_defconfig: disable highmem interaction code (details)
  986. ARM: n900_defconfig: disable ATAGS (details)
  987. ARM: n900_defconfig: disable SATA/PATA (details)
  988. ARM: n900_defconfig: clean up 'Power supply' (details)
  989. ARM: n900_defconfig: clean up 'Keyboards' (details)
  990. ARM: n900_defconfig: clean up 'Touchscreens' (details)
  991. ARM: n900_defconfig: clean up 'Real Time Clock' (details)
  992. ARM: n900_defconfig: compile RTC driver in kernel (details)
  993. ARM: n900_defconfig: compile watchdog drivers in kernel (details)
  994. ARM: n900_defconfig: enable ZRAM (details)
  995. ARM: n900_defconfig: enable ZSWAP (details)
  996. ARM: n900_defconfig: change cmdline 'console' param (details)
  997. ARM: n900_defconfig: add common filesystems (details)
  998. ARM: n900_defconfig: filesystems native language (details)
  999. ARM: n900_defconfig: systemd related options (details)
  1000. ARM: n900_defconfig: PowerTOP related options (details)
  1001. ARM: n900_defconfig: disable ethernet drivers (details)
  1002. ARM: n900_defconfig: compile PHY devices drivers as modules (details)
  1003. ARM: n900_defconfig: enable nokia modem (details)
  1004. ARM: n900_defconfig: enable accelerometer (details)
  1005. ARM: n900_defconfig: change compiler debug options (details)
  1006. ARM: n900_defconfig: disable initramfs/initrd (details)
  1007. ARM: n900_defconfig: enable crypto accelerators (details)
  1008. ARM: n900_defconfig: enable thermal driver (details)
  1009. ARM: n900_defconfig: analog to digital converters (details)
  1010. ARM: n900_defconfig: enable light sensor (details)
  1011. ARM: n900_defconfig: enable front LED (details)
  1012. ARM: n900_defconfig: enable radio driver (details)
  1013. ARM: n900_defconfig: enable flash LED (details)
  1014. ARM: n900_defconfig: enable cameras (details)
  1015. ARM: n900_defconfig: enable bluetooth radio (details)
  1016. debian: preserve /debian/ on 'make clean' (details)
  1017. debian: remove /debian/ from .gitignore (details)
  1018. debian: fill /debian/ directory with content (details)
  1019. debian: use linux native scripts for packaging (details)
  1020. Update debian/changelog (5.0.5-1) (details)
  1021. debian: fix linux-headers-n900 when crossbuilding (details)
  1022. debian: add gbp.conf needed by jenkins-debian-glue (details)
  1023. Update debian/changelog (5.0.5-2) (details)
  1024. debian: update README for default config management (details)
Commit cf43a757fd49442bc38f76088b70c2299eed2c2f by ebiederm
signal: Restore the stop PTRACE_EVENT_EXIT
In the middle of do_exit() there is there is a call
"ptrace_event(PTRACE_EVENT_EXIT, code);" That call places the process in
TACKED_TRACED aka "(TASK_WAKEKILL | __TASK_TRACED)" and waits for for
the debugger to release the task or SIGKILL to be delivered.
Skipping past dequeue_signal when we know a fatal signal has already
been delivered resulted in SIGKILL remaining pending and TIF_SIGPENDING
remaining set.  This in turn caused the scheduler to not sleep in
PTACE_EVENT_EXIT as it figured a fatal signal was pending.  This also
caused ptrace_freeze_traced in ptrace_check_attach to fail because it
left a per thread SIGKILL pending which is what fatal_signal_pending
tests for.
This difference in signal state caused strace to report strace: Exit of
unknown pid NNNNN ignored
Therefore update the signal handling state like dequeue_signal would
when removing a per thread SIGKILL, by removing SIGKILL from the per
thread signal mask and clearing TIF_SIGPENDING.
Acked-by: Oleg Nesterov <oleg@redhat.com> Reported-by: Oleg Nesterov
<oleg@redhat.com> Reported-by: Ivan Delalande <colona@arista.com> Cc:
stable@vger.kernel.org Fixes: 35634ffa1751 ("signal: Always notice
exiting tasks") Signed-off-by: "Eric W. Biederman"
<ebiederm@xmission.com>
The file was modifiedkernel/signal.c (diff)
Commit 1d69511e49b0107c0a60ff5ef488f5a2512a50ae by alexander.deucher
drm/amdgpu/psp11: TA firmware is optional (v3)
Don't warn or fail if it's missing.
v2: handle xgmi case more gracefully. v3: handle older kernels properly
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com> Tested-by: James Zhu
<James.Zhu@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/amdgpu/amdgpu_psp.c (diff)
The file was modifieddrivers/gpu/drm/amd/amdgpu/psp_v11_0.c (diff)
Commit 753c111f655e38bbd52fc01321266633f022ebe2 by pablo
netfilter: nft_compat: use-after-free when deleting targets
Fetch pointer to module before target object is released.
Fixes: 29e3880109e3 ("netfilter: nf_tables: fix use-after-free when
deleting compat expressions") Fixes: 0ca743a55991 ("netfilter:
nf_tables: add compatibility layer for x_tables") Signed-off-by: Pablo
Neira Ayuso <pablo@netfilter.org>
The file was modifiednet/netfilter/nft_compat.c (diff)
Commit bc44121190aea96de171408310db3d3c87e2cc11 by pbonzini
KVM: nVMX: Restore a preemption timer consistency check
A recently added preemption timer consistency check was unintentionally
dropped when the consistency checks were being reorganized to match the
SDM's ordering.
Fixes: 461b4ba4c7ad ("KVM: nVMX: Move the checks for VM-Execution
Control Fields to a separate helper function") Cc: Krish Sadhukhan
<krish.sadhukhan@oracle.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/nested.c (diff)
Commit fb35c534b7881c0f7f94b01ddd95a9b17483252f by saeedm
net/mlx5e: Fix NULL pointer derefernce in set channels error flow
New channels are applied to the priv channels only after they are
successfully opened. Then, the indirection table should be built
according to the new number of channels. Currently, such build is
preformed independently of whether the channels opening is successful,
and is not reverted on failure.
The bug is caused due to removal of rss params from channels struct and
moving it to priv struct. That change cause to independency between
channels and rss params. This causes a crash on a later point, when
accessing rqn of a non existing channel.
This patch fixes it by moving the indirection table build right before
switching the priv channels to new channels struct, after the new set of
channels was successfully opened.
Fixes: bbeb53b8b2c9 ("net/mlx5e: Move RSS params to a dedicated struct")
Signed-off-by: Maria Pasechnik <mariap@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_ethtool.c (diff)
Commit 4cab346bcf74f44665d57726ec2bccff6e679619 by saeedm
net/mlx5: No command allowed when command interface is not ready
When EEH is injected and PCI bus stalls, mlx5's pci error detect
function is called to deactivate the command interface and tear down the
device. The issue is that there can be a thread that already passed
MLX5_DEVICE_STATE_INTERNAL_ERROR check, it will send the command and
stuck in the wait_func.
Solution: Add function mlx5_cmd_flush to disable command interface and
clear all the pending commands. When device state is set to
MLX5_DEVICE_STATE_INTERNAL_ERROR, call mlx5_cmd_flush to ensure all
pending threads waiting for firmware commands completion are terminated.
Fixes: c1d4d2e92ad6 ("net/mlx5: Avoid calling sleeping function by the
health poll thread") Signed-off-by: Huy Nguyen <huyn@mellanox.com>
Reviewed-by: Daniel Jurgens <danielj@mellanox.com> Signed-off-by: Saeed
Mahameed <saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/health.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/cmd.c (diff)
Commit 5400261e4d293d741c5b71a07f6eaabe2c8d3f1b by saeedm
net/mlx5: Fix a compilation warning in events.c
Eliminate the following compilation warning:
drivers/net/ethernet/mellanox/mlx5/core/events.c: warning: 'error_str'
may be used uninitialized in this function [-Wuninitialized]:  => 238:3
Fixes: c2fb3db22d35 ("net/mlx5: Rework handling of port module events")
Signed-off-by: Tariq Toukan <tariqt@mellanox.com> Reviewed-by: Mikhael
Goikhman <migo@mellanox.com> Signed-off-by: Saeed Mahameed
<saeedm@mellanox.com>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/events.c (diff)
Commit 407e17b1a69a51ba9a512a04342da56c1f931df4 by saeedm
net/mlx5e: XDP, fix redirect resources availability check
Currently mlx5 driver creates xdp redirect hw queues unconditionally on
netdevice open, This is great until someone starts redirecting XDP
traffic via ndo_xdp_xmit on mlx5 device and changes the device
configuration at the same time, this might cause crashes, since the
other device's napi is not aware of the mlx5 state change (resources
un-availability).
To fix this we must synchronize with other devices napi's on the system.
Added a new flag under mlx5e_priv to determine XDP TX resources are
available, set/clear it up when necessary and use synchronize_rcu() when
the flag is turned off, so other napi's are in-sync with it, before we
actually cleanup the hw resources.
The flag is tested prior to committing to transmit on mlx5e_xdp_xmit,
and it is sufficient to determine if it safe to transmit or not. The
other two internal flags (MLX5E_STATE_OPENED and MLX5E_SQ_STATE_ENABLED)
become unnecessary. Thus, they are removed from data path.
Fixes: 58b99ee3e3eb ("net/mlx5e: Add support for XDP_REDIRECT in
device-out side") Reported-by: Toke Høiland-Jørgensen <toke@redhat.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_main.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en.h (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en/xdp.c (diff)
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/en/xdp.h (diff)
Commit fc228abc2347e106a44c0e9b29ab70b712c4ca51 by davem
sctp: call gso_reset_checksum when computing checksum in
sctp_gso_segment
Jianlin reported a panic when running sctp gso over gre over vlan
device:
  [   84.772930] RIP: 0010:do_csum+0x6d/0x170
[   84.790605] Call Trace:
[   84.791054]  csum_partial+0xd/0x20
[   84.791657]  gre_gso_segment+0x2c3/0x390
[   84.792364]  inet_gso_segment+0x161/0x3e0
[   84.793071]  skb_mac_gso_segment+0xb8/0x120
[   84.793846]  __skb_gso_segment+0x7e/0x180
[   84.794581]  validate_xmit_skb+0x141/0x2e0
[   84.795297]  __dev_queue_xmit+0x258/0x8f0
[   84.795949]  ? eth_header+0x26/0xc0
[   84.796581]  ip_finish_output2+0x196/0x430
[   84.797295]  ? skb_gso_validate_network_len+0x11/0x80
[   84.798183]  ? ip_finish_output+0x169/0x270
[   84.798875]  ip_output+0x6c/0xe0
[   84.799413]  ? ip_append_data.part.50+0xc0/0xc0
[   84.800145]  iptunnel_xmit+0x144/0x1c0
[   84.800814]  ip_tunnel_xmit+0x62d/0x930 [ip_tunnel]
[   84.801699]  gre_tap_xmit+0xac/0xf0 [ip_gre]
[   84.802395]  dev_hard_start_xmit+0xa5/0x210
[   84.803086]  sch_direct_xmit+0x14f/0x340
[   84.803733]  __dev_queue_xmit+0x799/0x8f0
[   84.804472]  ip_finish_output2+0x2e0/0x430
[   84.805255]  ? skb_gso_validate_network_len+0x11/0x80
[   84.806154]  ip_output+0x6c/0xe0
[   84.806721]  ? ip_append_data.part.50+0xc0/0xc0
[   84.807516]  sctp_packet_transmit+0x716/0xa10 [sctp]
[   84.808337]  sctp_outq_flush+0xd7/0x880 [sctp]
It was caused by SKB_GSO_CB(skb)->csum_start not set in
sctp_gso_segment. sctp_gso_segment() calls skb_segment() with 'feature |
NETIF_F_HW_CSUM', which causes SKB_GSO_CB(skb)->csum_start not to be set
in skb_segment().
For TCP/UDP, when feature supports HW_CSUM, CHECKSUM_PARTIAL will be set
and gso_reset_checksum will be called to set
SKB_GSO_CB(skb)->csum_start.
So SCTP should do the same as TCP/UDP, to call gso_reset_checksum() when
computing checksum in sctp_gso_segment.
Reported-by: Jianlin Shi <jishi@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/offload.c (diff)
Commit af98c5a78517c04adb5fd68bb64b1ad6fe3d473f by davem
sctp: set stream ext to NULL after freeing it in
sctp_stream_outq_migrate
In sctp_stream_init(), after sctp_stream_outq_migrate() freed the
surplus streams' ext, but sctp_stream_alloc_out() returns -ENOMEM,
stream->outcnt will not be set to 'outcnt'.
With the bigger value on stream->outcnt, when closing the assoc and
freeing its streams, the ext of those surplus streams will be freed
again since those stream exts were not set to NULL after freeing in
sctp_stream_outq_migrate(). Then the invalid-free issue reported by
syzbot would be triggered.
We fix it by simply setting them to NULL after freeing.
Fixes: 5bbbbe32a431 ("sctp: introduce stream scheduler foundations")
Reported-by: syzbot+58e480e7b28f2d890bfd@syzkaller.appspotmail.com
Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Neil Horman
<nhorman@tuxdriver.com> Acked-by: Marcelo Ricardo Leitner
<marcelo.leitner@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/sctp/stream.c (diff)
Commit b79555d5d8d32643e9d7193341dcaff13bf9ffcd by davem
net: phy: fix interrupt handling in non-started states
phylib enables interrupts before phy_start() has been called, and if we
receive an interrupt in a non-started state, the interrupt handler
returns IRQ_NONE. This causes problems with at least one Marvell chip as
reported by Andrew. Fix this by handling interrupts the same as in
phy_mac_interrupt(), basically always running the phylib state machine.
It knows when it has to do something and when not. This change allows to
handle interrupts gracefully even if they occur in a non-started state.
Fixes: 2b3e88ea6528 ("net: phy: improve phy state checking")
Reported-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Heiner Kallweit
<hkallweit1@gmail.com> Reviewed-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/phy.c (diff)
Commit 7c0db24cc431e2196d98a5d5ddaa9088e2fcbfe5 by davem
dsa: mv88e6xxx: Ensure all pending interrupts are handled prior to exit
The GPIO interrupt controller on the espressobin board only supports
edge interrupts. If one enables the use of hardware interrupts in the
device tree for the 88E6341, it is possible to miss an edge.  When this
happens, the INTn pin on the Marvell switch is stuck low and no further
interrupts occur.
I found after adding debug statements to mv88e6xxx_g1_irq_thread_work()
that there is a race in handling device interrupts (e.g. PHY link
interrupts).  Some interrupts are directly cleared by reading the Global
1 status register.  However, the device interrupt flag, for example, is
not cleared until all the unmasked SERDES and PHY ports are serviced.
This is done by reading the relevant SERDES and PHY status register.
The code only services interrupts whose status bit is set at the time of
reading its status register.  If an interrupt event occurs after its
status is read and before all interrupts are serviced, then this event
will not be serviced and the INTn output pin will remain low.
This is not a problem with polling or level interrupts since the handler
will be called again to process the event.  However, it's a big problem
when using level interrupts.
The fix presented here is to add a loop around the code servicing switch
interrupts.  If any pending interrupts remain after the current set has
been handled, we loop and process the new set.  If there are no pending
interrupts after servicing, we are sure that INTn has gone high and we
will get an edge when a new event occurs.
Tested on espressobin board.
Fixes: dc30c35be720 ("net: dsa: mv88e6xxx: Implement interrupt
support.") Signed-off-by:  John David Anglin <dave.anglin@bell.net>
Tested-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.c (diff)
Commit 5bf325a53202b8728cf7013b72688c46071e212e by davem
net: fix possible overflow in __sk_mem_raise_allocated()
With many active TCP sockets, fat TCP sockets could fool
__sk_mem_raise_allocated() thanks to an overflow.
They would increase their share of the memory, instead of decreasing it.
Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifiedinclude/net/sock.h (diff)
The file was modifiednet/core/sock.c (diff)
Commit 8d6ea932856c7087ce8c3d0e79494b7d5386f962 by davem
net: dsa: bcm_sf2: potential array overflow in bcm_sf2_sw_suspend()
The value of ->num_ports comes from bcm_sf2_sw_probe() and it is less
than or equal to DSA_MAX_PORTS.  The ds->ports[] array is used inside
the dsa_is_user_port() and dsa_is_cpu_port() functions.  The ds->ports[]
array is allocated in dsa_switch_alloc() and it has ds->num_ports
elements so this leads to a static checker warning about a potential out
of bounds read.
Fixes: 8cfa94984c9c ("net: dsa: bcm_sf2: add suspend/resume callbacks")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by:
Vivien Didelot <vivien.didelot@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/dsa/bcm_sf2.c (diff)
Commit 7f665b1c3283aae5b61843136d0a8ee808ba3199 by tiwai
ALSA: hda/realtek - Headset microphone and internal speaker support for
System76 oryp5
On the System76 Oryx Pro (oryp5), there is a headset microphone input
attached to 0x19 that does not have a jack detect. In order to get it
working, the pin configuration needs to be set correctly, and the
ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC fixup needs to be applied. This is
similar to the MIC_NO_PRESENCE fixups for some Dell laptops, except we
have a separate microphone jack that is already configured correctly.
Since the ALC1220 does not have a fixup similar to
ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC, I have exposed the fixup from the
ALC269 in a way that it can be accessed from the
alc1220_fixup_system76_oryp5 function. In addition, the
alc1220_fixup_clevo_p950 needs to be applied to gain speaker output.
Signed-off-by: Jeremy Soller <jeremy@system76.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 c8c6ee611926685a7d753409e0a6e48b9e1b8748 by tiwai
ALSA: hda/realtek: Disable PC beep in passthrough on alc285
It is reported that there's a constant background "hum/whitenoise" in
the headset on the Lenovo X1 machines with the codec alc285, and it is
confirmed that if we run the command below, the noise will stop.
sudo hda-verb /dev/snd/hwC0D0 0x1d SET_PIN_WIDGET_CONTROL 0x0
Then I consulted this issue with Kailang, he told me the pin 0x1d on
this codec is used for PC beep in, the noise probably comes from this
pin and we can also disable the PC beep in passthrough, then the PC beep
in will not affect other sound playback.
Fixes: c4cfcf6f4297 ("ALSA: hda/realtek - fix the pop noise on headphone
for lenovo laptops") Bugzilla:
https://bugzilla.redhat.com/show_bug.cgi?id=1660581 Cc:
<stable@vger.kernel.org> Signed-off-by: Kailang Yang
<kailang@realtek.com> 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 af14b2c98adb85e9517390bb88309338b9075350 by linus.walleij
gpio: pxa: avoid attempting to set pin direction via pinctrl on MMP2
Similarly to PXA3xx, pinctrl-single can't set pin direction on MMP2
either. See also: commit 9dabfdd84bdfa ("gpio: pxa: disable pinctrl
calls for PXA3xx")
Cc: stable@vger.kernel.org Fixes: a770d946371e ("gpio: pxa: add pin
control gpio direction and request") Signed-off-by: Lubomir Rintel
<lkundrak@v3.sk> Acked-by: Pavel Machek <pavel@ucw.cz> Signed-off-by:
Linus Walleij <linus.walleij@linaro.org>
The file was modifieddrivers/gpio/gpio-pxa.c (diff)
Commit 8cd8f0ce0d6aafe661cb3d6781c8b82bc696c04d by bp
x86/CPU: Add Icelake model number
Add the CPUID model number of Icelake (ICL) mobile processors to the
Intel family list. Icelake U/Y series uses model number 0x7E.
Signed-off-by: Rajneesh Bhardwaj <rajneesh.bhardwaj@linux.intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de> Cc: Andy Shevchenko
<andriy.shevchenko@linux.intel.com> Cc: Dave Hansen
<dave.hansen@linux.intel.com> Cc: "David E. Box" <david.e.box@intel.com>
Cc: dvhart@infradead.org Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo
Molnar <mingo@redhat.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc:
Peter Zijlstra <peterz@infradead.org> Cc:
platform-driver-x86@vger.kernel.org Cc: Qiuxu Zhuo
<qiuxu.zhuo@intel.com> Cc: Srinivas Pandruvada
<srinivas.pandruvada@linux.intel.com> Cc: Thomas Gleixner
<tglx@linutronix.de> Cc: x86-ml <x86@kernel.org> Link:
https://lkml.kernel.org/r/20190214115712.19642-2-rajneesh.bhardwaj@linux.intel.com
The file was modifiedarch/x86/include/asm/intel-family.h (diff)
Commit c112b5f50232a257056903040c66d97efb536889 by pbonzini
KVM: x86: Recompute PID.ON when clearing PID.SN
Some Posted-Interrupts from passthrough devices may be lost or
overwritten when the vCPU is in runnable state.
The SN (Suppress Notification) of PID (Posted Interrupt Descriptor) will
be set when the vCPU is preempted (vCPU in KVM_MP_STATE_RUNNABLE state
but not running on physical CPU). If a posted interrupt comes at this
time, the irq remapping facility will set the bit of PIR (Posted
Interrupt Requests) but not ON (Outstanding Notification).  Then, the
interrupt will not be seen by KVM, which always expects PID.ON=1 if
PID.PIR=1 as documented in the Intel processor SDM but not in the VT-d
specification. To fix this, restore the invariant after PID.SN is
cleared.
Signed-off-by: Luwei Kang <luwei.kang@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.h (diff)
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
Commit 98ae70cc476e833332a2c6bb72f941a25f0de226 by pbonzini
kvm: vmx: Fix entry number check for add_atomic_switch_msr()
Commit ca83b4a7f2d068da79a0 ("x86/KVM/VMX: Add find_msr() helper
function") introduces the helper function find_msr(), which returns
-ENOENT when not find the msr in vmx->msr_autoload.guest/host. Correct
checking contion of no more available entry in vmx->msr_autoload.
Fixes: ca83b4a7f2d0 ("x86/KVM/VMX: Add find_msr() helper function") Cc:
stable@vger.kernel.org Signed-off-by: Xiaoyao Li
<xiaoyao.li@linux.intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
Commit 39c133196237335e8ee9e3694ef7921241cf6a41 by davem
selftests: fix timestamping Makefile
The clean target in the makefile conflicts with the generic kselftests
lib.mk, and fails to properly remove the compiled test programs.
Remove the redundant rule, the TEST_GEN_FILES will be already removed by
the CLEAN macro in lib.mk.
Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com> Acked-by: Shuah
Khan <shuah@kernel.org> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedtools/testing/selftests/networking/timestamping/Makefile (diff)
Commit a2fc9d7e36f6d484d9be4a0a204400aaf6059544 by davem
net: phy: don't use locking in phy_is_started
Russell suggested to remove the locking from phy_is_started() because
the read is atomic anyway and actually the locking may be more
misleading.
Fixes: 2b3e88ea6528 ("net: phy: improve phy state checking")
Suggested-by: Russell King - ARM Linux admin <linux@armlinux.org.uk>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by:
Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/linux/phy.h (diff)
The file was modifieddrivers/net/phy/phy.c (diff)
Commit a20049071796691cf99eb6433968fc3c27632b95 by davem
net: phy: fix potential race in the phylib state machine
Russell reported the following race in the phylib state machine
(quoting from his mail):
if (phy_polling_mode(phydev) && phy_is_started(phydev))
phy_queue_state_machine(phydev, PHY_STATE_TIME);
state = PHY_UP thread 0 thread 1
phy_disconnect()
+-phy_is_started() phy_is_started()                |
`-phy_stop()
  +-phydev->state = PHY_HALTED
  `-phy_stop_machine()
    `-cancel_delayed_work_sync()
phy_queue_state_machine()
`-mod_delayed_work()
At this point, the phydev->state_queue() has been added back onto the
system workqueue despite phy_stop_machine() having been called and
cancel_delayed_work_sync() called on it.
Fix this by protecting the complete operation in thread 0.
Fixes: 2b3e88ea6528 ("net: phy: improve phy state checking")
Reported-by: Russell King - ARM Linux admin <linux@armlinux.org.uk>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by:
Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/phy/phy.c (diff)
Commit 2c2ade81741c66082f8211f0b96cf509cc4c0218 by davem
mm: page_alloc: fix ref bias in page_frag_alloc() for 1-byte allocs
The basic idea behind ->pagecnt_bias is: If we pre-allocate the maximum
number of references that we might need to create in the fastpath later,
the bump-allocation fastpath only has to modify the non-atomic bias
value that tracks the number of extra references we hold instead of the
atomic refcount. The maximum number of allocations we can serve (under
the assumption that no allocation is made with size 0) is nc->size, so
that's the bias used.
However, even when all memory in the allocation has been given away, a
reference to the page is still held; and in the `offset < 0` slowpath,
the page may be reused if everyone else has dropped their references.
This means that the necessary number of references is actually
`nc->size+1`.
Luckily, from a quick grep, it looks like the only path that can call
page_frag_alloc(fragsz=1) is TAP with the IFF_NAPI_FRAGS flag, which
requires CAP_NET_ADMIN in the init namespace and is only intended to be
used for kernel testing and fuzzing.
To test for this issue, put a `WARN_ON(page_ref_count(page) == 0)` in
the
`offset < 0` path, below the virt_to_page() call, and then repeatedly
call writev() on a TAP device with
IFF_TAP|IFF_NO_PI|IFF_NAPI_FRAGS|IFF_NAPI, with a vector consisting of
15 elements containing 1 byte each.
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiedmm/page_alloc.c (diff)
Commit c969c6e7ab8cb42b5c787c567615474fdbad9d6a by davem
net: hns: Fix object reference leaks in hns_dsaf_roce_reset()
The of_find_device_by_node() takes a reference to the underlying device
structure, we should release that reference.
Signed-off-by: Huang Zijiang <huang.zijiang@zte.com.cn> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/hisilicon/hns/hns_dsaf_main.c (diff)
Commit 3bf6b57ec2ec945e5a6edf5c202a754f1e852ecd by bfields
Revert "nfsd4: return default lease period"
This reverts commit d6ebf5088f09472c1136cd506bdc27034a6763f8.
I forgot that the kernel's default lease period should never be
decreased!
After a kernel upgrade, the kernel has no way of knowing on its own what
the previous lease time was.  Unless userspace tells it otherwise, it
will assume the previous lease period was the same.
So if we decrease this value in a kernel upgrade, we end up enforcing a
grace period that's too short, and clients will fail to reclaim state in
time.  Symptoms may include EIO and log messages like "NFS:
nfs4_reclaim_open_state: Lock reclaim failed!"
There was no real justification for the lease period decrease anyway.
Reported-by: Donald Buczek <buczek@molgen.mpg.de> Fixes: d6ebf5088f09
"nfsd4: return default lease period" Cc: stable@vger.kernel.org
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
The file was modifiedfs/nfsd/nfsctl.c (diff)
Commit f9bcc9f3ee4fbbe8f11dfec76745476f5780517e by davem
net: ethernet: freescale: set FEC ethtool regs version
Currently the ethtool_regs version is set to 0 for FEC devices.
Use this field to store the register dump version exposed by the kernel.
The choosen version 2 corresponds to the kernel compile test:
        #if defined(CONFIG_M523x) || defined(CONFIG_M527x)
       || defined(CONFIG_M528x) || defined(CONFIG_M520x)
       || defined(CONFIG_M532x) || defined(CONFIG_ARM)
       || defined(CONFIG_ARM64) || defined(CONFIG_COMPILE_TEST)
and version 1 corresponds to the opposite. Binaries of ethtool unaware
of this version will dump the whole set as usual.
Signed-off-by: Vivien Didelot <vivien.didelot@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/freescale/fec_main.c (diff)
Commit 23e93c9b2cde73f9912d0d8534adbddd3dcc48f4 by torvalds
Revert "gfs2: read journal in large chunks to locate the head"
This reverts commit 2a5f14f279f59143139bcd1606903f2f80a34241.
This patch causes xfstests generic/311 to fail. Reverting this for now
until we have a proper fix.
Signed-off-by: Abhi Das <adas@redhat.com> Signed-off-by: Bob Peterson
<rpeterso@redhat.com> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedfs/gfs2/ops_fstype.c (diff)
The file was modifiedfs/gfs2/lops.h (diff)
The file was modifiedfs/gfs2/log.c (diff)
The file was modifiedfs/gfs2/super.c (diff)
The file was modifiedfs/gfs2/lops.c (diff)
The file was modifiedfs/gfs2/recovery.h (diff)
The file was modifiedfs/gfs2/glops.c (diff)
The file was modifiedfs/gfs2/recovery.c (diff)
Commit cb5b020a8d38f77209d0472a0fea755299a8ec78 by torvalds
Revert "exec: load_script: don't blindly truncate shebang string"
This reverts commit 8099b047ecc431518b9bb6bdbba3549bbecdc343.
It turns out that people do actually depend on the shebang string being
truncated, and on the fact that an interpreter (like perl) will often
just re-interpret it entirely to get the full argument list.
Reported-by: Samuel Dionne-Riel <samuel@dionne-riel.com> Acked-by: Kees
Cook <keescook@chromium.org> Cc: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedfs/binfmt_script.c (diff)
Commit 4ae280b4ee3463fa57bbe6eede26b97daff8a0f1 by snitzer
dm thin: fix bug where bio that overwrites thin block ignores FUA
When provisioning a new data block for a virtual block, either because
the block was previously unallocated or because we are breaking sharing,
if the whole block of data is being overwritten the bio that triggered
the provisioning is issued immediately, skipping copying or zeroing of
the data block.
When this bio completes the new mapping is inserted in to the pool's
metadata by process_prepared_mapping(), where the bio completion is
signaled to the upper layers.
This completion is signaled without first committing the metadata.  If
the bio in question has the REQ_FUA flag set and the system crashes
right after its completion and before the next metadata commit, then the
write is lost despite the REQ_FUA flag requiring that I/O completion for
this request must only be signaled after the data has been committed to
non-volatile storage.
Fix this by deferring the completion of overwrite bios, with the REQ_FUA
flag set, until after the metadata has been committed.
Cc: stable@vger.kernel.org Signed-off-by: Nikos Tsironis
<ntsironis@arrikto.com> Acked-by: Joe Thornber <ejt@redhat.com>
Acked-by: Mikulas Patocka <mpatocka@redhat.com> Signed-off-by: Mike
Snitzer <snitzer@redhat.com>
The file was modifieddrivers/md/dm-thin.c (diff)
Commit 69ef943dbc14b21987c79f8399ffea08f9a1b446 by airlied
drm: Use array_size() when creating lease
Passing an object_count of sufficient size will make object_count * 4
wrap around to be very small, then a later function will happily iterate
off the end of the object_ids array.  Using array_size() will saturate
at SIZE_MAX, the kmalloc() will fail and we'll return an -ENOMEM to the
norty userspace.
Fixes: 62884cd386b8 ("drm: Add four ioctls for managing drm mode object
leases [v7]") Signed-off-by: Matthew Wilcox <willy@infradead.org>
Acked-by: Kees Cook <keescook@chromium.org> Acked-by: Daniel Vetter
<daniel.vetter@ffwll.ch> Cc: <stable@vger.kernel.org> # v4.15+
Signed-off-by: Dave Airlie <airlied@redhat.com>
The file was modifieddrivers/gpu/drm/drm_lease.c (diff)
Commit d358def706880defa4c9e87381c5bf086a97d5f9 by wsa
i2c: cadence: Fix the hold bit setting
In case the hold bit is not needed we are carrying the old values. Fix
the same by resetting the bit when not needed.
Fixes the sporadic i2c bus lockups on National Instruments Zynq-based
devices.
Fixes: df8eb5691c48 ("i2c: Add driver for Cadence I2C controller")
Reported-by: Kyle Roeschley <kyle.roeschley@ni.com> Acked-by: Michal
Simek <michal.simek@xilinx.com> Signed-off-by: Shubhrajyoti Datta
<shubhrajyoti.datta@xilinx.com> Tested-by: Kyle Roeschley
<kyle.roeschley@ni.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
The file was modifieddrivers/i2c/busses/i2c-cadence.c (diff)
Commit f275a4659484716259cc46268d9043424e51cf0f by wsa
i2c: bcm2835: Clear current buffer pointers and counts after a transfer
The driver's interrupt handler checks whether a message is currently
being handled with the curr_msg pointer. When it is NULL, the interrupt
is considered to be unexpected. Similarly, the i2c_start_transfer
routine checks for the remaining number of messages to handle in
num_msgs.
However, these values are never cleared and always keep the message and
number relevant to the latest transfer (which might be done already and
the underlying message memory might have been freed).
When an unexpected interrupt hits with the DONE bit set, the isr will
then try to access the flags field of the curr_msg structure, leading to
a fatal page fault.
The msg_buf and msg_buf_remaining fields are also never cleared at the
end of the transfer, which can lead to similar pitfalls.
Fix these issues by introducing a cleanup function and always calling it
after a transfer is finished.
Fixes: e2474541032d ("i2c: bcm2835: Fix hang for writing messages larger
than 16 bytes") Signed-off-by: Paul Kocialkowski
<paul.kocialkowski@bootlin.com> Acked-by: Stefan Wahren
<stefan.wahren@i2se.com> Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
The file was modifieddrivers/i2c/busses/i2c-bcm2835.c (diff)
Commit b4c3fbe6360178dc2181b7b43b7ae793a192b282 by johannes.berg
mac80211: Use linked list instead of rhashtable walk for mesh tables
The mesh table code walks over hash tables for two purposes.  First of
all it's used as part of a netlink dump process, but it is also used for
looking up entries to delete using criteria other than the hash key.
The second purpose is directly contrary to the design specification of
rhashtable walks.  It is only meant for use by netlink dumps.
This is because rhashtable is resizable and you cannot obtain a stable
walk over it during a resize process.
In fact mesh's use of rhashtable for dumping is bogus too.  Rather than
using rhashtable walk's iterator to keep track of the current position,
it always converts the current position to an integer which defeats the
purpose of the iterator.
Therefore this patch converts all uses of rhashtable walk into a simple
linked list.
This patch also adds a new spin lock to protect the hash table
insertion/removal as well as the walk list modifications.  In fact the
previous code was buggy as the removals can race with each other,
potentially resulting in a double-free.
Cc: stable@vger.kernel.org Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Johannes Berg
<johannes.berg@intel.com>
The file was modifiednet/mac80211/mesh.h (diff)
The file was modifiednet/mac80211/mesh_pathtbl.c (diff)
Commit 4ff3a9d14c6c06eaa4e5976c61599ea2bd9e81b2 by johannes.berg
mac80211: Free mpath object when rhashtable insertion fails
When rhashtable insertion fails the mesh table code doesn't free the
now-orphan mesh path object.  This patch fixes that.
Cc: stable@vger.kernel.org Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Johannes Berg
<johannes.berg@intel.com>
The file was modifiednet/mac80211/mesh_pathtbl.c (diff)
Commit 83e37e0bdd1470bbe6612250b745ad39b1a7b130 by johannes.berg
mac80211: Restore vif beacon interval if start ap fails
The starting of AP interface can fail due to invalid beacon interval,
which does not match the minimum gcd requirement set by the wifi driver.
In such case, the beacon interval of that interface gets updated with
that invalid beacon interval.
The next time that interface is brought up in AP mode, an interface
combination check is performed and the beacon interval is taken from the
previously set value.
In a case where an invalid beacon interval, i.e. a beacon interval value
which does not satisfy the minimum gcd criteria set by the driver, is
set, all the subsequent trials to bring that interface in AP mode will
fail, even if the subsequent trials have a valid beacon interval.
To avoid this, in case of a failure in bringing up an interface in AP
mode due to interface combination error, the interface beacon interval
which is stored in bss conf, needs to be restored with the last working
value of beacon interval.
Tested on ath10k using WCN3990.
Cc: stable@vger.kernel.org Fixes: 0c317a02ca98 ("cfg80211: support
virtual interfaces with different beacon intervals") Signed-off-by:
Rakesh Pillai <pillair@codeaurora.org> Signed-off-by: Johannes Berg
<johannes.berg@intel.com>
The file was modifiednet/mac80211/cfg.c (diff)
Commit f331e766c4be33f4338574f3c9f7f77e98ab4571 by bp
x86/platform/UV: Use efi_runtime_lock to serialise BIOS calls
Calls into UV firmware must be protected against concurrency, expose the
efi_runtime_lock to the UV platform, and use it to serialise UV BIOS
calls.
Signed-off-by: Hedi Berriche <hedi.berriche@hpe.com> Signed-off-by:
Borislav Petkov <bp@suse.de> Reviewed-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Reviewed-by: Russ Anderson <rja@hpe.com>
Reviewed-by: Dimitri Sivanich <sivanich@hpe.com> Reviewed-by: Mike
Travis <mike.travis@hpe.com> Cc: Andy Shevchenko <andy@infradead.org>
Cc: Bhupesh Sharma <bhsharma@redhat.com> Cc: Darren Hart
<dvhart@infradead.org> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo
Molnar <mingo@redhat.com> Cc: linux-efi <linux-efi@vger.kernel.org> Cc:
platform-driver-x86@vger.kernel.org Cc: stable@vger.kernel.org # v4.9+
Cc: Steve Wahl <steve.wahl@hpe.com> Cc: Thomas Gleixner
<tglx@linutronix.de> Cc: x86-ml <x86@kernel.org> Link:
https://lkml.kernel.org/r/20190213193413.25560-5-hedi.berriche@hpe.com
The file was modifiedarch/x86/include/asm/uv/bios.h (diff)
The file was modifieddrivers/firmware/efi/runtime-wrappers.c (diff)
The file was modifiedarch/x86/platform/uv/bios_uv.c (diff)
Commit 23b7ca4f745f21c2b9cfcb67fdd33733b3ae7e66 by pablo
netfilter: nf_tables: fix flush after rule deletion in the same batch
Flush after rule deletion bogusly hits -ENOENT. Skip rules that have
been already from nft_delrule_by_chain() which is always called from the
flush path.
Fixes: cf9dc09d0949 ("netfilter: nf_tables: fix missing rules flushing
per table") Reported-by: Phil Sutter <phil@nwl.cc> Acked-by: Phil Sutter
<phil@nwl.cc> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
The file was modifiednet/netfilter/nf_tables_api.c (diff)
Commit fc4144e7815b7747b6aba140d7a91da45ee9dd8c by jgg
cxgb4: Export sge_host_page_size to ulds
Export the sge_host_page_size field to ULDs via cxgb4_lld_info, so that
iw_cxgb4 can make use of this in calculating the correct qp/cq mask.
Fixes: 2391b0030e24 ("cxgb4: Remove SGE_HOST_PAGE_SIZE dependency on
page size") Signed-off-by: Raju Rangoju <rajur@chelsio.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
The file was modifieddrivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.c (diff)
The file was modifieddrivers/net/ethernet/chelsio/cxgb4/cxgb4_uld.h (diff)
Commit f09ef134a7ca3f0d2ce485a757f5b79809ebb803 by jgg
iw_cxgb4: cq/qp mask depends on bar2 pages in a host page
Adjust the cq/qp mask based on the number of bar2 pages in a host page.
For user-mode rdma, the granularity of the BAR2 memory mapped to a user
rdma process during queue allocation must be based on the host page
size. The lld attributes udb_density and ucq_density are used to figure
out how many sge contexts are in a bar2 page. So the rdev->qpmask and
rdev->cqmask in iw_cxgb4 need to now be adjusted based on how many sge
bar2 pages are in a host page.
Otherwise the device fails to work on non 4k page size systems.
Fixes: 2391b0030e24 ("cxgb4: Remove SGE_HOST_PAGE_SIZE dependency on
page size") Signed-off-by: Raju Rangoju <rajur@chelsio.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
The file was modifieddrivers/infiniband/hw/cxgb4/device.c (diff)
Commit 2c4f1fcbef0bc324830bc2fb1a264c08ec93dec5 by rostedt
kprobe: Do not use uaccess functions to access kernel memory that can
fault
The userspace can ask kprobe to intercept strings at any memory address,
including invalid kernel address. In this case, fetch_store_strlen()
would crash since it uses general usercopy function, and user access
functions are no longer allowed to access kernel memory.
For example, we can crash the kernel by doing something as below:
$ sudo kprobe 'p:do_sys_open +0(+0(%si)):string'
[  103.620391] BUG: GPF in non-whitelisted uaccess (non-canonical
address?)
[  103.622104] general protection fault: 0000 [#1] SMP PTI
[  103.623424] CPU: 10 PID: 1046 Comm: cat Not tainted
5.0.0-rc3-00130-gd73aba1-dirty #96
[  103.625321] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS
rel-1.12.0-2-g628b2e6-dirty-20190104_103505-linux 04/01/2014
[  103.628284] RIP: 0010:process_fetch_insn+0x1ab/0x4b0
[  103.629518] Code: 10 83 80 28 2e 00 00 01 31 d2 31 ff 48 8b 74 24 28
eb 0c 81 fa ff 0f 00 00 7f 1c 85 c0 75 18 66 66 90 0f ae e8 48 63
ca 89 f8 <8a> 0c 31 66 66 90 83 c2 01 84 c9 75 dc 89 54 24 34 89 44 24
28 48
[  103.634032] RSP: 0018:ffff88845eb37ce0 EFLAGS: 00010246
[  103.635312] RAX: 0000000000000000 RBX: ffff888456c4e5a8 RCX:
0000000000000000
[  103.637057] RDX: 0000000000000000 RSI: 2e646c2f6374652f RDI:
0000000000000000
[  103.638795] RBP: 0000000000000000 R08: 0000000000000000 R09:
0000000000000000
[  103.640556] R10: 0000000000000001 R11: 0000000000000000 R12:
0000000000000000
[  103.642297] R13: 0000000000000000 R14: 0000000000000000 R15:
0000000000000000
[  103.644040] FS:  0000000000000000(0000) GS:ffff88846f000000(0000)
knlGS:0000000000000000
[  103.646019] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  103.647436] CR2: 00007ffc79758038 CR3: 0000000463360006 CR4:
0000000000020ee0
[  103.649147] Call Trace:
[  103.649781]  ? sched_clock_cpu+0xc/0xa0
[  103.650747]  ? do_sys_open+0x5/0x220
[  103.651635]  kprobe_trace_func+0x303/0x380
[  103.652645]  ? do_sys_open+0x5/0x220
[  103.653528]  kprobe_dispatcher+0x45/0x50
[  103.654682]  ? do_sys_open+0x1/0x220
[  103.655875]  kprobe_ftrace_handler+0x90/0xf0
[  103.657282]  ftrace_ops_assist_func+0x54/0xf0
[  103.658564]  ? __call_rcu+0x1dc/0x280
[  103.659482]  0xffffffffc00000bf
[  103.660384]  ? __ia32_sys_open+0x20/0x20
[  103.661682]  ? do_sys_open+0x1/0x220
[  103.662863]  do_sys_open+0x5/0x220
[  103.663988]  do_syscall_64+0x60/0x210
[  103.665201]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[  103.666862] RIP: 0033:0x7fc22fadccdd
[  103.668034] Code: 48 89 54 24 e0 41 83 e2 40 75 32 89 f0 25 00 00 41
00 3d 00 00 41 00 74 24 89 f2 b8 01 01 00 00 48 89 fe bf 9c ff ff
ff 0f 05 <48> 3d 00 f0 ff ff 77 33 f3 c3 66 0f 1f 84 00 00 00 00 00 48
8d 44
[  103.674029] RSP: 002b:00007ffc7972c3a8 EFLAGS: 00000287 ORIG_RAX:
0000000000000101
[  103.676512] RAX: ffffffffffffffda RBX: 0000562f86147a21 RCX:
00007fc22fadccdd
[  103.678853] RDX: 0000000000080000 RSI: 00007fc22fae1428 RDI:
00000000ffffff9c
[  103.681151] RBP: ffffffffffffffff R08: 0000000000000000 R09:
0000000000000000
[  103.683489] R10: 0000000000000000 R11: 0000000000000287 R12:
00007fc22fce90a8
[  103.685774] R13: 0000000000000001 R14: 0000000000000000 R15:
0000000000000000
[  103.688056] Modules linked in:
[  103.689131] ---[ end trace 43792035c28984a1 ]---
This can be fixed by using probe_mem_read() instead, as it can handle
faulting kernel memory addresses, which kprobes can legitimately do.
Link:
http://lkml.kernel.org/r/20190125151051.7381-1-changbin.du@gmail.com
Cc: stable@vger.kernel.org Fixes: 9da3f2b7405 ("x86/fault: BUG() when
uaccess helpers fault on kernel addresses") Signed-off-by: Changbin Du
<changbin.du@gmail.com> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org>
The file was modifiedkernel/trace/trace_kprobe.c (diff)
Commit 9e7382153f80ba45a0bbcd540fb77d4b15f6e966 by rostedt
tracing: Fix number of entries in trace header
The following commit
  441dae8f2f29 ("tracing: Add support for display of tgid in trace
output")
removed the call to print_event_info() from print_func_help_header_irq()
which results in the ftrace header not reporting the number of entries
written in the buffer. As this wasn't the original intent of the patch,
re-introduce the call to print_event_info() to restore the orginal
behaviour.
Link:
http://lkml.kernel.org/r/20190214152950.4179-1-quentin.perret@arm.com
Acked-by: Joel Fernandes <joelaf@google.com> Cc: stable@vger.kernel.org
Fixes: 441dae8f2f29 ("tracing: Add support for display of tgid in trace
output") Signed-off-by: Quentin Perret <quentin.perret@arm.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
The file was modifiedkernel/trace/trace.c (diff)
Commit 69ef9bc54715fb1cb7786ada15774e469e822209 by miguel.ojeda.sandonis
auxdisplay: ht16k33: fix potential user-after-free on module unload
On module unload/remove, we need to ensure that work does not run after
we have freed resources. Concretely, cancel_delayed_work() may return
while the callback function is still running.
From kernel/workqueue.c:
    The work callback function may still be running on return,
   unless it returns true and the work doesn't re-arm itself.
   Explicitly flush or use cancel_delayed_work_sync() to wait on it.
Link:
https://lore.kernel.org/lkml/20190204220952.30761-1-TheSven73@googlemail.com/
Reported-by: Sven Van Asbroeck <thesven73@gmail.com> Reviewed-by: Dmitry
Torokhov <dmitry.torokhov@gmail.com> Reviewed-by: Sven Van Asbroeck
<TheSven73@gmail.com> Acked-by: Robin van der Gracht <robin@protonic.nl>
Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
The file was modifieddrivers/auxdisplay/ht16k33.c (diff)
Commit ff98e20ef2081b8620dada28fc2d4fb24ca0abf2 by miguel.ojeda.sandonis
lib/crc32.c: mark crc32_le_base/__crc32c_le_base aliases as __pure
The upcoming GCC 9 release extends the -Wmissing-attributes warnings
(enabled by -Wall) to C and aliases: it warns when particular function
attributes are missing in the aliases but not in their target.
In particular, it triggers here because crc32_le_base/__crc32c_le_base
aren't __pure while their target crc32_le/__crc32c_le are.
These aliases are used by architectures as a fallback in accelerated
versions of CRC32. See commit 9784d82db3eb ("lib/crc32: make core
crc32() routines weak so they can be overridden").
Therefore, being fallbacks, it is likely that even if the aliases were
called from C, there wouldn't be any optimizations possible. Currently,
the only user is arm64, which calls this from asm.
Still, marking the aliases as __pure makes sense and is a good idea for
documentation purposes and possible future optimizations, which also
silences the warning.
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Tested-by: Laura
Abbott <labbott@redhat.com> Signed-off-by: Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com>
The file was modifiedlib/crc32.c (diff)
Commit c0d9782f5b6d7157635ae2fd782a4b27d55a6013 by miguel.ojeda.sandonis
Compiler Attributes: add support for __copy (gcc >= 9)
From the GCC manual:
  copy
copy(function)
    The copy attribute applies the set of attributes with which function
   has been declared to the declaration of the function to which
   the attribute is applied. The attribute is designed for libraries
   that define aliases or function resolvers that are expected
   to specify the same set of attributes as their targets. The copy
   attribute can be used with functions, variables, or types. However,
   the kind of symbol to which the attribute is applied (either
   function or variable) must match the kind of symbol to which
   the argument refers. The copy attribute copies only syntactic and
   semantic attributes but not attributes that affect a symbol’s
   linkage or visibility such as alias, visibility, or weak.
   The deprecated attribute is also not copied.
  https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
The upcoming GCC 9 release extends the -Wmissing-attributes warnings
(enabled by -Wall) to C and aliases: it warns when particular function
attributes are missing in the aliases but not in their target, e.g.:
    void __cold f(void) {}
   void __alias("f") g(void);
diagnoses:
    warning: 'g' specifies less restrictive attribute than
   its target 'f': 'cold' [-Wmissing-attributes]
Using __copy(f) we can copy the __cold attribute from f to g:
    void __cold f(void) {}
   void __copy(f) __alias("f") g(void);
This attribute is most useful to deal with situations where an alias is
declared but we don't know the exact attributes the target has.
For instance, in the kernel, the widely used module_init/exit macros
define the init/cleanup_module aliases, but those cannot be marked
always as __init/__exit since some modules do not have their functions
marked as such.
Suggested-by: Martin Sebor <msebor@gcc.gnu.org> Reviewed-by: Nick
Desaulniers <ndesaulniers@google.com> Signed-off-by: Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com>
The file was modifiedinclude/linux/compiler_attributes.h (diff)
Commit a6e60d84989fa0e91db7f236eda40453b0e44afa by miguel.ojeda.sandonis
include/linux/module.h: copy __init/__exit attrs to init/cleanup_module
The upcoming GCC 9 release extends the -Wmissing-attributes warnings
(enabled by -Wall) to C and aliases: it warns when particular function
attributes are missing in the aliases but not in their target.
In particular, it triggers for all the init/cleanup_module aliases in
the kernel (defined by the module_init/exit macros), ending up being
very noisy.
These aliases point to the __init/__exit functions of a module, which
are defined as __cold (among other attributes). However, the aliases
themselves do not have the __cold attribute.
Since the compiler behaves differently when compiling a __cold function
as well as when compiling paths leading to calls to __cold functions,
the warning is trying to point out the possibly-forgotten attribute in
the alias.
In order to keep the warning enabled, we decided to silence this case.
Ideally, we would mark the aliases directly as __init/__exit. However,
there are currently around 132 modules in the kernel which are missing
__init/__exit in their init/cleanup functions (either because they are
missing, or for other reasons, e.g. the functions being called from
somewhere else); and a section mismatch is a hard error.
A conservative alternative was to mark the aliases as __cold only.
However, since we would like to eventually enforce __init/__exit to be
always marked,  we chose to use the new __copy function attribute
(introduced by GCC 9 as well to deal with this). With it, we copy the
attributes used by the target functions into the aliases. This way,
functions that were not marked as __init/__exit won't have their aliases
marked either, and therefore there won't be a section mismatch.
Note that the warning would go away marking either the extern
declaration, the definition, or both. However, we only mark the
definition of the alias, since we do not want callers
(which only see the declaration) to be compiled as if the function was
__cold (and therefore the paths leading to those calls would be assumed
to be unlikely).
Link: https://lore.kernel.org/lkml/20190123173707.GA16603@gmail.com/
Link: https://lore.kernel.org/lkml/20190206175627.GA20399@gmail.com/
Suggested-by: Martin Sebor <msebor@gcc.gnu.org> Acked-by: Jessica Yu
<jeyu@kernel.org> Signed-off-by: Miguel Ojeda
<miguel.ojeda.sandonis@gmail.com>
The file was modifiedinclude/linux/module.h (diff)
Commit e7afe6c1d486b516ed586dcc10b3e7e3e85a9c2b by bfields
sunrpc: fix 4 more call sites that were using stack memory with a
scatterlist
While trying to reproduce a reported kernel panic on arm64, I discovered
that AUTH_GSS basically doesn't work at all with older enctypes on arm64
systems with CONFIG_VMAP_STACK enabled.  It turns out there still a few
places using stack memory with scatterlists, causing krb5_encrypt() and
krb5_decrypt() to produce incorrect results (or a BUG if CONFIG_DEBUG_SG
is enabled).
Tested with cthon on v4.0/v4.1/v4.2 with krb5/krb5i/krb5p using
des3-cbc-sha1 and arcfour-hmac-md5.
Signed-off-by: Scott Mayhew <smayhew@redhat.com> Cc:
stable@vger.kernel.org Signed-off-by: J. Bruce Fields
<bfields@redhat.com>
The file was modifiednet/sunrpc/auth_gss/gss_krb5_seqnum.c (diff)
Commit a08bf91ce28ed3ae7b6fef35d843fef8dc8c2cd9 by james.morris
KEYS: allow reaching the keys quotas exactly
If the sysctl 'kernel.keys.maxkeys' is set to some number n, then
actually users can only add up to 'n - 1' keys.  Likewise for
'kernel.keys.maxbytes' and the root_* versions of these sysctls.  But
these sysctls are apparently supposed to be *maximums*, as per their
names and all documentation I could find -- the keyrings(7) man page,
Documentation/security/keys/core.rst, and all the mentions of EDQUOT
meaning that the key quota was *exceeded* (as opposed to reached).
Thus, fix the code to allow reaching the quotas exactly.
Fixes: 0b77f5bfb45c ("keys: make the keyring quotas controllable through
/proc/sys") Cc: stable@vger.kernel.org Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <james.morris@microsoft.com>
The file was modifiedsecurity/keys/key.c (diff)
Commit bb2ba2d75a2d673e76ddaf13a9bd30d6a8b1bb08 by james.morris
assoc_array: Fix shortcut creation
Fix the creation of shortcuts for which the length of the index key
value is an exact multiple of the machine word size.  The problem is
that the code that blanks off the unused bits of the shortcut value
malfunctions if the number of bits in the last word equals machine word
size.  This is due to the "<<" operator being given a shift of zero in
this case, and so the mask that should be all zeros is all ones instead.
This causes the subsequent masking operation to clear everything rather
than clearing nothing.
Ordinarily, the presence of the hash at the beginning of the tree index
key makes the issue very hard to test for, but in this case, it was
encountered due to a development mistake that caused the hash output to
be either 0
(keyring) or 1 (non-keyring) only.  This made it susceptible to the
keyctl/unlink/valid test in the keyutils package.
The fix is simply to skip the blanking if the shift would be 0.  For
example, an index key that is 64 bits long would produce a 0 shift and
thus a 'blank' of all 1s.  This would then be inverted and AND'd onto
the index_key, incorrectly clearing the entire last word.
Fixes: 3cb989501c26 ("Add a generic associative array implementation.")
Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: James
Morris <james.morris@microsoft.com>
The file was modifiedlib/assoc_array.c (diff)
Commit 822ad64d7e46a8e2c8b8a796738d7b657cbb146d by james.morris
keys: Fix dependency loop between construction record and auth key
In the request_key() upcall mechanism there's a dependency loop by which
if a key type driver overrides the ->request_key hook and the userspace
side manages to lose the authorisation key, the auth key and the
internal construction record (struct key_construction) can keep each
other pinned.
Fix this by the following changes:
(1) Killing off the construction record and using the auth key instead.
(2) Including the operation name in the auth key payload and making the
    payload available outside of security/keys/.
(3) The ->request_key hook is given the authkey instead of the cons
    record and operation name.
Changes (2) and (3) allow the auth key to naturally be cleaned up if the
keyring it is in is destroyed or cleared or the auth key is unlinked.
Fixes: 7ee02a316600 ("keys: Fix dependency loop between construction
record and auth key") Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: James Morris <james.morris@microsoft.com>
The file was modifiedsecurity/keys/process_keys.c (diff)
The file was modifiedfs/nfs/nfs4idmap.c (diff)
The file was modifiedsecurity/keys/keyctl.c (diff)
The file was modifiedsecurity/keys/request_key.c (diff)
The file was modifiedsecurity/keys/request_key_auth.c (diff)
The file was addedinclude/keys/request_key_auth-type.h
The file was modifiedinclude/linux/key-type.h (diff)
The file was modifiedsecurity/keys/internal.h (diff)
Commit 7c1857bdbdf1e4c541e45eab477ee23ed4333ea4 by james.morris
keys: Timestamp new keys
Set the timestamp on new keys rather than leaving it unset.
Fixes: 31d5a79d7f3d ("KEYS: Do LRU discard in full keyrings")
Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: James
Morris <james.morris@microsoft.com>
The file was modifiedsecurity/keys/key.c (diff)
Commit 13443154f6cac61d148471ede6d7f1f6b5ea946a by daniel
MIPS: eBPF: Always return sign extended 32b values
The function prototype used to call JITed eBPF code (ie. the type of the
struct bpf_prog bpf_func field) returns an unsigned int. The MIPS n64
ABI that MIPS64 kernels target defines that 32 bit integers should
always be sign extended when passed in registers as either arguments or
return values.
This means that when returning any value which may not already be sign
extended (ie. of type REG_64BIT or REG_32BIT_ZERO_EX) we need to perform
that sign extension in order to comply with the n64 ABI. Without this we
see strange looking test failures from test_bpf.ko, such as:
  test_bpf: #65 ALU64_MOV_X:
   dst = 4294967295 jited:1 ret -1 != -1 FAIL (1 times)
Although the return value printed matches the expected value, this is
only because printf is only examining the least significant 32 bits of
the 64 bit register value we returned. The register holding the expected
value is sign extended whilst the v0 register was set to a zero extended
value by our JITed code, so when compared by a conditional branch
instruction the values are not equal.
We already handle this when the return value register is of type
REG_32BIT_ZERO_EX, so simply extend this to also cover REG_64BIT.
Signed-off-by: Paul Burton <paul.burton@mips.com> Fixes: b6bd53f9c4e8
("MIPS: Add missing file for eBPF JIT.") Cc: stable@vger.kernel.org #
v4.13+ Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
The file was modifiedarch/mips/net/ebpf_jit.c (diff)
Commit 1910faebf61d85a5b7138c0c1c600672e41f82a3 by daniel
MIPS: eBPF: Remove REG_32BIT_ZERO_EX
REG_32BIT_ZERO_EX and REG_64BIT are always handled in exactly the same
way, and reg_val_propagate_range() never actually sets any register to
type REG_32BIT_ZERO_EX.
Remove the redundant & unused REG_32BIT_ZERO_EX.
Signed-off-by: Paul Burton <paul.burton@mips.com> Signed-off-by: Daniel
Borkmann <daniel@iogearbox.net>
The file was modifiedarch/mips/net/ebpf_jit.c (diff)
Commit 79edd00dc6a96644d76b4a1cb97d94d49e026768 by martin.petersen
scsi: libiscsi: Fix race between iscsi_xmit_task and iscsi_complete_task
When a target sends Check Condition, whilst initiator is busy xmiting
re-queued data, could lead to race between iscsi_complete_task() and
iscsi_xmit_task() and eventually crashing with the following kernel
backtrace.
[3326150.987523] ALERT: BUG: unable to handle kernel NULL pointer
dereference at 0000000000000078
[3326150.987549] ALERT: IP: [<ffffffffa05ce70d>]
iscsi_xmit_task+0x2d/0xc0 [libiscsi]
[3326150.987571] WARN: PGD 569c8067 PUD 569c9067 PMD 0
[3326150.987582] WARN: Oops: 0002 [#1] SMP
[3326150.987593] WARN: Modules linked in: tun nfsv3 nfs fscache
dm_round_robin
[3326150.987762] WARN: CPU: 2 PID: 8399 Comm: kworker/u32:1 Tainted: G O
4.4.0+2 #1
[3326150.987774] WARN: Hardware name: Dell Inc. PowerEdge R720/0W7JN5,
BIOS 2.5.4 01/22/2016
[3326150.987790] WARN: Workqueue: iscsi_q_13 iscsi_xmitworker [libiscsi]
[3326150.987799] WARN: task: ffff8801d50f3800 ti: ffff8801f5458000
task.ti: ffff8801f5458000
[3326150.987810] WARN: RIP: e030:[<ffffffffa05ce70d>]
[<ffffffffa05ce70d>] iscsi_xmit_task+0x2d/0xc0 [libiscsi]
[3326150.987825] WARN: RSP: e02b:ffff8801f545bdb0 EFLAGS: 00010246
[3326150.987831] WARN: RAX: 00000000ffffffc3 RBX: ffff880282d2ab20 RCX:
ffff88026b6ac480
[3326150.987842] WARN: RDX: 0000000000000000 RSI: 00000000fffffe01 RDI:
ffff880282d2ab20
[3326150.987852] WARN: RBP: ffff8801f545bdc8 R08: 0000000000000000 R09:
0000000000000008
[3326150.987862] WARN: R10: 0000000000000000 R11: 000000000000fe88 R12:
0000000000000000
[3326150.987872] WARN: R13: ffff880282d2abe8 R14: ffff880282d2abd8 R15:
ffff880282d2ac08
[3326150.987890] WARN: FS: 00007f5a866b4840(0000)
GS:ffff88028a640000(0000) knlGS:0000000000000000
[3326150.987900] WARN: CS: e033 DS: 0000 ES: 0000 CR0: 0000000080050033
[3326150.987907] WARN: CR2: 0000000000000078 CR3: 0000000070244000 CR4:
0000000000042660
[3326150.987918] WARN: Stack:
[3326150.987924] WARN: ffff880282d2ad58 ffff880282d2ab20
ffff880282d2abe8 ffff8801f545be18
[3326150.987938] WARN: ffffffffa05cea90 ffff880282d2abf8
ffff88026b59cc80 ffff88026b59cc00
[3326150.987951] WARN: ffff88022acf32c0 ffff880289491800
ffff880255a80800 0000000000000400
[3326150.987964] WARN: Call Trace:
[3326150.987975] WARN: [<ffffffffa05cea90>] iscsi_xmitworker+0x2f0/0x360
[libiscsi]
[3326150.987988] WARN: [<ffffffff8108862c>] process_one_work+0x1fc/0x3b0
[3326150.987997] WARN: [<ffffffff81088f95>] worker_thread+0x2a5/0x470
[3326150.988006] WARN: [<ffffffff8159cad8>] ? __schedule+0x648/0x870
[3326150.988015] WARN: [<ffffffff81088cf0>] ? rescuer_thread+0x300/0x300
[3326150.988023] WARN: [<ffffffff8108ddf5>] kthread+0xd5/0xe0
[3326150.988031] WARN: [<ffffffff8108dd20>] ? kthread_stop+0x110/0x110
[3326150.988040] WARN: [<ffffffff815a0bcf>] ret_from_fork+0x3f/0x70
[3326150.988048] WARN: [<ffffffff8108dd20>] ? kthread_stop+0x110/0x110
[3326150.988127] ALERT: RIP [<ffffffffa05ce70d>]
iscsi_xmit_task+0x2d/0xc0 [libiscsi]
[3326150.988138] WARN: RSP <ffff8801f545bdb0>
[3326150.988144] WARN: CR2: 0000000000000078
[3326151.020366] WARN: ---[ end trace 1c60974d4678d81b ]---
Commit 6f8830f5bbab ("scsi: libiscsi: add lock around task lists to fix
list corruption regression") introduced "taskqueuelock" to fix list
corruption during the race, but this wasn't enough.
Re-setting of conn->task to NULL, could race with iscsi_xmit_task().
iscsi_complete_task()
{
   ....
   if (conn->task == task)
       conn->task = NULL;
}
conn->task in iscsi_xmit_task() could be NULL and so will be task.
__iscsi_get_task(task) will crash (NullPtr de-ref), trying to access
refcount.
iscsi_xmit_task()
{
   struct iscsi_task *task = conn->task;
    __iscsi_get_task(task);
}
This commit will take extra conn->session->back_lock in
iscsi_xmit_task() to ensure iscsi_xmit_task() waits for
iscsi_complete_task(), if iscsi_complete_task() wins the race.  If
iscsi_xmit_task() wins the race, iscsi_xmit_task() increments
task->refcount
(__iscsi_get_task) ensuring iscsi_complete_task() will not
iscsi_free_task().
Signed-off-by: Anoob Soman <anoob.soman@citrix.com> Signed-off-by: Bob
Liu <bob.liu@oracle.com> Acked-by: Lee Duncan <lduncan@suse.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
The file was modifieddrivers/scsi/libiscsi.c (diff)
Commit 515ce60613128be7a176a8b82b20c7624f3b440d by martin.petersen
scsi: sd_zbc: Fix sd_zbc_report_zones() buffer allocation
The function sd_zbc_do_report_zones() issues a REPORT ZONES command with
a buffer size calculated based on the number of zones requested by the
caller. This value should however not exceed the capabilities of the
hardware maximum command size, that is, should not exceed the
max_hw_sectors limit of the device. This problem leads to failures of
report zones commands when re-validating disks with some SAS HBAs.
Fix this by limiting a report zone command buffer size to the minimum of
the device max_hw_sectors and calculated value based on the requested
number of zones. This does not change the semantic of the report_zones
file operation as report zones can always return less zone reports than
requested. Short reports are handled using a loop execution of the
report_zones file operation in the function blk_report_zones().
[Damien] Before patch 'e76239a3748c ("block: add a report_zones
method")', report zones buffer allocation was limited to max_sectors
when allocated in blk_report_zones(). This however does not consider the
actual format of the device reply which is interface dependent.
Limiting the allocation based on the size of the expected reply format
rather than the size of the array of generic sturct blkzone passed by
blk_report_zones() makes more sense.
Fixes: e76239a3748c ("block: add a report_zones method") Cc:
stable@vger.kernel.org Signed-off-by: Masato Suzuki
<masato.suzuki@wdc.com> Signed-off-by: Damien Le Moal
<damien.lemoal@wdc.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com>
The file was modifieddrivers/scsi/sd_zbc.c (diff)
Commit ffeafdd2bf0b280d67ec1a47ea6287910d271f3f by martin.petersen
scsi: libsas: Fix rphy phy_identifier for PHYs with end devices attached
The sysfs phy_identifier attribute for a sas_end_device comes from the
rphy phy_identifier value.
Currently this is not being set for rphys with an end device attached,
so we see incorrect symlinks from systemd disk/by-path:
root@localhost:~# ls -l /dev/disk/by-path/ total 0 lrwxrwxrwx 1 root
root  9 Feb 13 12:26
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy0-lun-0 -> ../../sdb
lrwxrwxrwx 1 root root 10 Feb 13 12:26
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy0-lun-0-part1 ->
../../sdb1 lrwxrwxrwx 1 root root 10 Feb 13 12:26
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy0-lun-0-part2 ->
../../sdb2 lrwxrwxrwx 1 root root 10 Feb 13 12:26
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy0-lun-0-part3 ->
../../sdc3
Indeed, each sas_end_device phy_identifier value is 0:
root@localhost:/# more
sys/class/sas_device/end_device-0\:0\:2/phy_identifier 0
root@localhost:/# more
sys/class/sas_device/end_device-0\:0\:10/phy_identifier 0
This patch fixes the discovery code to set the phy_identifier.  With
this, we now get proper symlinks:
root@localhost:~# ls -l /dev/disk/by-path/ total 0 lrwxrwxrwx 1 root
root  9 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy10-lun-0 -> ../../sdg
lrwxrwxrwx 1 root root  9 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy11-lun-0 -> ../../sdh
lrwxrwxrwx 1 root root  9 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy2-lun-0 -> ../../sda
lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy2-lun-0-part1 ->
../../sda1 lrwxrwxrwx 1 root root  9 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy3-lun-0 -> ../../sdb
lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy3-lun-0-part1 ->
../../sdb1 lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy3-lun-0-part2 ->
../../sdb2 lrwxrwxrwx 1 root root  9 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy4-lun-0 -> ../../sdc
lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy4-lun-0-part1 ->
../../sdc1 lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy4-lun-0-part2 ->
../../sdc2 lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy4-lun-0-part3 ->
../../sdc3 lrwxrwxrwx 1 root root  9 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy5-lun-0 -> ../../sdd
lrwxrwxrwx 1 root root  9 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy7-lun-0 -> ../../sde
lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy7-lun-0-part1 ->
../../sde1 lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy7-lun-0-part2 ->
../../sde2 lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy7-lun-0-part3 ->
../../sde3 lrwxrwxrwx 1 root root  9 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy8-lun-0 -> ../../sdf
lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy8-lun-0-part1 ->
../../sdf1 lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy8-lun-0-part2 ->
../../sdf2 lrwxrwxrwx 1 root root 10 Feb 13 11:53
platform-HISI0162:01-sas-exp0x500e004aaaaaaa1f-phy8-lun-0-part3 ->
../../sdf3
Fixes: 2908d778ab3e ("[SCSI] aic94xx: new driver") Reported-by: dann
frazier <dann.frazier@canonical.com> Signed-off-by: John Garry
<john.garry@huawei.com> Reviewed-by: Jason Yan <yanaijie@huawei.com>
Tested-by: dann frazier <dann.frazier@canonical.com> Signed-off-by:
Martin K. Petersen <martin.petersen@oracle.com>
The file was modifieddrivers/scsi/libsas/sas_expander.c (diff)
Commit 4a067cf823d9d8e50d41cfb618011c0d4a969c72 by martin.petersen
scsi: core: reset host byte in DID_NEXUS_FAILURE case
Up to 4.12, __scsi_error_from_host_byte() would reset the host byte to
DID_OK for various cases including DID_NEXUS_FAILURE.  Commit
2a842acab109 ("block: introduce new block status code type") replaced
this function with scsi_result_to_blk_status() and removed the host-byte
resetting code for the DID_NEXUS_FAILURE case.  As the line
set_host_byte(cmd, DID_OK) was preserved for the other cases, I suppose
this was an editing mistake.
The fact that the host byte remains set after 4.13 is causing problems
with the sg_persist tool, which now returns success rather then exit
status 24 when a RESERVATION CONFLICT error is encountered.
Fixes: 2a842acab109 "block: introduce new block status code type"
Signed-off-by: Martin Wilck <mwilck@suse.com> Reviewed-by: Hannes
Reinecke <hare@suse.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
The file was modifieddrivers/scsi/scsi_lib.c (diff)
Commit 4974d5f678abb34401558559d47e2ea3d1c15cba by davem
net: ip6_gre: initialize erspan_ver just for erspan tunnels
After commit c706863bc890 ("net: ip6_gre: always reports o_key to
userspace"), ip6gre and ip6gretap tunnels started reporting TUNNEL_KEY
output flag even if it is not configured. ip6gre_fill_info checks
erspan_ver value to add TUNNEL_KEY for erspan tunnels, however in commit
84581bdae9587 ("erspan: set erspan_ver to 1 by default when adding an
erspan dev") erspan_ver is initialized to 1 even for ip6gre or ip6gretap
Fix the issue moving erspan_ver initialization in a dedicated routine
Fixes: c706863bc890 ("net: ip6_gre: always reports o_key to userspace")
Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Reviewed-by: Greg Rose <gvrose8192@gmail.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/ipv6/ip6_gre.c (diff)
Commit 197f9ab7f08ce4b9ece662f747c3991b2f0fbb57 by davem
net: phy: xgmiitorgmii: Support generic PHY status read
Some PHY drivers like the generic one do not provide a read_status
callback on their own but rely on genphy_read_status being called
directly.
With the current code, this results in a NULL function pointer call.
Call genphy_read_status instead when there is no specific callback.
Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/phy/xilinx_gmii2rgmii.c (diff)
Commit 3b89ea9c5902acccdbbdec307c85edd1bf52515e by davem
net: Fix for_each_netdev_feature on Big endian
The features attribute is of type u64 and stored in the native endianes
on the system. The for_each_set_bit() macro takes a pointer to a 32 bit
array and goes over the bits in this area. On little Endian systems this
also works with an u64 as the most significant bit is on the highest
address, but on big endian the words are swapped. When we expect bit 15
here we get bit 47 (15 + 32).
This patch converts it more or less to its own for_each_set_bit()
implementation which works on 64 bit integers directly. This is then
completely in host endianness and should work like expected.
Fixes: fd867d51f ("net/core: generic support for disabling netdev
features down stack") Signed-off-by: Hauke Mehrtens
<hauke.mehrtens@intel.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/linux/netdev_features.h (diff)
The file was modifiednet/core/dev.c (diff)
Commit d5be7f632bad0f489879eed0ff4b99bd7fe0b74c by davem
net: validate untrusted gso packets without csum offload
Syzkaller again found a path to a kernel crash through bad gso input. By
building an excessively large packet to cause an skb field to wrap.
If VIRTIO_NET_HDR_F_NEEDS_CSUM was set this would have been dropped in
skb_partial_csum_set.
GSO packets that do not set checksum offload are suspicious and rare.
Most callers of virtio_net_hdr_to_skb already pass them to
skb_probe_transport_header.
Move that test forward, change it to detect parse failure and drop
packets on failure as those cleary are not one of the legitimate
VIRTIO_NET_HDR_GSO types.
Fixes: bfd5f4a3d605 ("packet: Add GSO/csum offload support.") Fixes:
f43798c27684 ("tun: Allow GSO using virtio_net_hdr") Reported-by: syzbot
<syzkaller@googlegroups.com> Signed-off-by: Willem de Bruijn
<willemb@google.com> Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedinclude/linux/virtio_net.h (diff)
The file was modifiedinclude/linux/skbuff.h (diff)
Commit fea83353177a55540c71c140887737c282137aa2 by davem
net: dsa: b53: Fix default VLAN ID
We were not consistent in how the default VID of a given port was
defined, b53_br_leave() would make sure the VLAN ID would be either 0/1
depending on the switch generation, but b53_configure_vlan(), which is
the default configuration would unconditionally set it to 1. The correct
value is 1 for 5325/5365 series and 0 otherwise. To avoid repeating that
mistake ever again, introduce a helper function: b53_default_pvid() to
factor that out.
Fixes: 967dd82ffc52 ("net: dsa: b53: Add support for Broadcom
RoboSwitch") Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/b53/b53_common.c (diff)
Commit dad8d7c6452b5b9f9828c9e2c7ca143205fd40c7 by davem
net: dsa: b53: Properly account for VLAN filtering
VLAN filtering can be built into the kernel, and also dynamically turned
on/off through the bridge master device. Allow re-configuring the switch
appropriately to account for that by deciding whether VLAN table
(v_table) misses should lead to a drop or forward.
Fixes: a2482d2ce349 ("net: dsa: b53: Plug in VLAN support")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/b53/b53_priv.h (diff)
The file was modifieddrivers/net/dsa/b53/b53_common.c (diff)
Commit a40061ea2e39494104602b3048751341bda374a1 by davem
net: systemport: Fix reception of BPDUs
SYSTEMPORT has its RXCHK parser block that attempts to validate the
packet structures, unfortunately setting the L2 header check bit will
cause Bridge PDUs (BPDUs) to be incorrectly rejected because they look
like LLC/SNAP packets with a non-IPv4 or non-IPv6 Ethernet Type.
Fixes: 4e8aedfe78c7 ("net: systemport: Turn on offloads by default")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/broadcom/bcmsysport.c (diff)
Commit c3152ec4c0691e351f35a2f63347a464b5f35151 by davem
net: dsa: bcm_sf2: Do not assume DSA master supports WoL
We assume in the bcm_sf2 driver that the DSA master network device
supports ethtool_ops::{get,set}_wol operations, which is not a given.
Avoid de-referencing potentially non-existent function pointers and
check them as we should.
Fixes: 96e65d7f3f88 ("net: dsa: bcm_sf2: add support for Wake-on-LAN")
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/bcm_sf2.c (diff)
Commit 10163aaee9671b01b2f4737922e1a4f43581047a by davem
net: dsa: b53: Do not program CPU port's PVID
The CPU port is special and does not need to obey VLAN restrictions as
far as untagged traffic goes, also, having the CPU port be part of a
particular PVID is against the idea of keeping it tagged in all VLANs.
Fixes: ca8931948344 ("net: dsa: b53: Keep CPU port as tagged in all
VLANs") Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/b53/b53_common.c (diff)
Commit c93a49b9769e435990c82297aa0baa31e1538790 by pablo
ipvs: fix warning on unused variable
When CONFIG_IP_VS_IPV6 is not defined, build produced this warning:
net/netfilter/ipvs/ip_vs_ctl.c:899:6: warning: unused variable ‘ret’
[-Wunused-variable]
int ret = 0;
     ^~~
Fix this by moving the declaration of 'ret' in the CONFIG_IP_VS_IPV6
section in the same function.
While at it, drop its unneeded initialisation.
Fixes: 098e13f5b21d ("ipvs: fix dependency on nf_defrag_ipv6")
Reported-by: Stefano Brivio <sbrivio@redhat.com> Signed-off-by: Andrea
Claudi <aclaudi@redhat.com> Reviewed-by: Stefano Brivio
<sbrivio@redhat.com> Signed-off-by: Pablo Neira Ayuso
<pablo@netfilter.org>
The file was modifiednet/netfilter/ipvs/ip_vs_ctl.c (diff)
Commit 8a5b403d71affa098009cc3dff1b2c45113021ad by mingo
arm64, mm, efi: Account for GICv3 LPI tables in static memblock reserve
table
In the irqchip and EFI code, we have what basically amounts to a quirk
to work around a peculiarity in the GICv3 architecture, which permits
the system memory address of LPI tables to be programmable only once
after a CPU reset. This means kexec kernels must use the same memory as
the first kernel, and thus ensure that this memory has not been given
out for other purposes by the time the ITS init code runs, which is not
very early for secondary CPUs.
On systems with many CPUs, these reservations could overflow the
memblock reservation table, and this was addressed in commit:
  eff896288872 ("efi/arm: Defer persistent reservations until after
paging_init()")
However, this turns out to have made things worse, since the allocation
of page tables and heap space for the resized memblock reservation table
itself may overwrite the regions we are attempting to reserve, which may
cause all kinds of corruption, also considering that the ITS will still
be poking bits into that memory in response to incoming MSIs.
So instead, let's grow the static memblock reservation table on such
systems so it can accommodate these reservations at an earlier time.
This will permit us to revert the above commit in a subsequent patch.
[ mingo: Minor cleanups. ]
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Mike
Rapoport <rppt@linux.ibm.com> Acked-by: Will Deacon
<will.deacon@arm.com> Acked-by: Marc Zyngier <marc.zyngier@arm.com> Cc:
Andrew Morton <akpm@linux-foundation.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc:
linux-arm-kernel@lists.infradead.org Cc: linux-efi@vger.kernel.org Link:
http://lkml.kernel.org/r/20190215123333.21209-2-ard.biesheuvel@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedinclude/linux/memblock.h (diff)
The file was modifiedarch/arm64/include/asm/memory.h (diff)
The file was modifiedmm/memblock.c (diff)
Commit 582a32e708823e5957fd73ccd78dc4a9e49d21ea by mingo
efi/arm: Revert "Defer persistent reservations until after
paging_init()"
This reverts commit eff896288872d687d9662000ec9ae11b6d61766f, which
deferred the processing of persistent memory reservations to a point
where the memory may have already been allocated and overwritten,
defeating the purpose.
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Will
Deacon <will.deacon@arm.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Mike Rapoport <rppt@linux.ibm.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc:
linux-arm-kernel@lists.infradead.org Cc: linux-efi@vger.kernel.org Link:
http://lkml.kernel.org/r/20190215123333.21209-3-ard.biesheuvel@linaro.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
The file was modifiedinclude/linux/efi.h (diff)
The file was modifiedarch/arm64/kernel/setup.c (diff)
The file was modifieddrivers/firmware/efi/libstub/arm-stub.c (diff)
The file was modifieddrivers/firmware/efi/efi.c (diff)
Commit 8681ef1f3d295bd3600315325f3b3396d76d02f6 by davem
net: Add header for usage of fls64()
Fixes: 3b89ea9c5902 ("net: Fix for_each_netdev_feature on Big endian")
Suggested-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifiedinclude/linux/netdev_features.h (diff)
Commit a58007621be33e9f7c7bed5d5ff8ecb914e1044a by mpe
powerpc/64s: Fix possible corruption on big endian due to
pgd/pud_present()
In v4.20 we changed our pgd/pud_present() to check for _PAGE_PRESENT
rather than just checking that the value is non-zero, e.g.:
  static inline int pgd_present(pgd_t pgd)
{
-       return !pgd_none(pgd);
+       return (pgd_raw(pgd) & cpu_to_be64(_PAGE_PRESENT));
}
Unfortunately this is broken on big endian, as the result of the bitwise
& is truncated to int, which is always zero because
_PAGE_PRESENT is 0x8000000000000000ul. This means pgd_present() and
pud_present() are always false at compile time, and the compiler elides
the subsequent code.
Remarkably with that bug present we are still able to boot and run with
few noticeable effects. However under some work loads we are able to
trigger a warning in the ext4 code:
  WARNING: CPU: 11 PID: 29593 at fs/ext4/inode.c:3927
.ext4_set_page_dirty+0x70/0xb0
CPU: 11 PID: 29593 Comm: debugedit Not tainted 4.20.0-rc1 #1
...
NIP .ext4_set_page_dirty+0x70/0xb0
LR  .set_page_dirty+0xa0/0x150
Call Trace:
  .set_page_dirty+0xa0/0x150
  .unmap_page_range+0xbf0/0xe10
  .unmap_vmas+0x84/0x130
  .unmap_region+0xe8/0x190
  .__do_munmap+0x2f0/0x510
  .__vm_munmap+0x80/0x110
  .__se_sys_munmap+0x14/0x30
  system_call+0x5c/0x70
The fix is simple, we need to convert the result of the bitwise & to an
int before returning it.
Thanks to Erhard, Jan Kara and Aneesh for help with debugging.
Fixes: da7ad366b497 ("powerpc/mm/book3s: Update pmd_present to look at
_PAGE_PRESENT bit") Cc: stable@vger.kernel.org # v4.20+ Reported-by:
Erhard F. <erhard_f@mailbox.org> 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/book3s/64/pgtable.h (diff)
Commit 1cd48dc51857899e8fb28dd45d4b936c94ea1dab by dmitry.torokhov
Input: apanel - switch to using brightness_set_blocking()
Now that LEDs core allows "blocking" flavor of "set brightness" method
we can use it and get rid of private work item. As a bonus, we are no
longer forgetting to cancel it when we unbind the driver.
Reviewed-by: Sven Van Asbroeck <TheSven73@gmail.com> Signed-off-by:
Dmitry Torokhov <dmitry.torokhov@gmail.com>
The file was modifieddrivers/input/misc/apanel.c (diff)
Commit 2439d37e1bf8a34d437573c086572abe0f3f1b15 by dmitry.torokhov
Input: st-keyscan - fix potential zalloc NULL dereference
This patch fixes the following static checker warning:
drivers/input/keyboard/st-keyscan.c:156 keyscan_probe() error: potential
zalloc NULL dereference: 'keypad_data->input_dev'
Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by:
Gabriel Fernandez <gabriel.fernandez@st.com> Signed-off-by: Dmitry
Torokhov <dmitry.torokhov@gmail.com>
The file was modifieddrivers/input/keyboard/st-keyscan.c (diff)
Commit 7ad222b3aed350adfc27ee7eec4587ffe55dfdce by dmitry.torokhov
Input: elan_i2c - add ACPI ID for touchpad in Lenovo V330-15ISK
This adds ELAN0617 to the ACPI table to support Elan touchpad found in
Lenovo V330-15ISK.
Signed-off-by: Mauro Ciancio <mauro@acadeu.com> Cc:
stable@vger.kernel.org Signed-off-by: Dmitry Torokhov
<dmitry.torokhov@gmail.com>
The file was modifieddrivers/input/mouse/elan_i2c_core.c (diff)
Commit 289460404f6947ef1c38e67d680be9a84161250b by davem
mlxsw: __mlxsw_sp_port_headroom_set(): Fix a use of local variable
The function-local variable "delay" enters the loop interpreted as delay
in bits. However, inside the loop it gets overwritten by the result of
mlxsw_sp_pg_buf_delay_get(), and thus leaves the loop as quantity in
cells. Thus on second and further loop iterations, the headroom for a
given priority is configured with a wrong size.
Fix by introducing a loop-local variable, delay_cells. Rename thres to
thres_cells for consistency.
Fixes: f417f04da589 ("mlxsw: spectrum: Refactor port buffer
configuration") Signed-off-by: Petr Machata <petrm@mellanox.com>
Acked-by: Jiri Pirko <jiri@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 c17abcfa93bf0be5e48bb011607d237ac2bfc839 by linus.walleij
pinctrl: meson: meson8b: fix the sdxc_a data 1..3 pins
Fix the mismatch between the "sdxc_d13_1_a" pin group definition from
meson8b_cbus_groups and the entry in sdxc_a_groups ("sdxc_d0_13_1_a").
This makes it possible to use "sdxc_d13_1_a" in device-tree files to
route the MMC data 1..3 pins to GPIOX_1..3.
Fixes: 0fefcb6876d0d6 ("pinctrl: Add support for Meson8b")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
The file was modifieddrivers/pinctrl/meson/pinctrl-meson8b.c (diff)
Commit 0358affb5cd8bbd685a6ab163a36dd28a818da73 by corbet
Documentation: change linux-4.x references to 5.x
As linux-5.0.x is coming up soon, the documentation should match, in
particular the README.rst file, so change all 4.x references
accordingly. There was a mix of lowercase and uppercase X here, which I
changed to using lowercase consistently.
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Jonathan
Corbet <corbet@lwn.net>
The file was modifiedDocumentation/process/applying-patches.rst (diff)
The file was modifiedDocumentation/admin-guide/README.rst (diff)
The file was modifiedDocumentation/translations/it_IT/admin-guide/README.rst (diff)
Commit 31a1b8d528fa4aedaa207b38d7fafc4e9b0a0d6c by davem
doc: Mention MSG_ZEROCOPY implementation for UDP
MSG_ZEROCOPY implementation for UDP was merged in v5.0, 6e360f733113
("Merge branch 'udp-msg_zerocopy'").
Signed-off-by: Petr Vorel <pvorel@suse.cz> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiedDocumentation/networking/msg_zerocopy.rst (diff)
Commit 4012e7d09d99b62d80046790657c0b0e32310d50 by davem
net: stmmac: handle endianness in dwmac4_get_timestamp
GMAC IP is little-endian and used on several kind of CPU (big or little
endian). Main callbacks functions of the stmmac drivers take care about
it. It was not the case for dwmac4_get_timestamp function.
Fixes: ba1ffd74df74 ("stmmac: fix PTP support for GMAC4") Signed-off-by:
Alexandre Torgue <alexandre.torgue@st.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/dwmac4_descs.c (diff)
Commit 97dc47a1308a3af46a09b1546cfb869f2e382a81 by davem
qmi_wwan: apply SET_DTR quirk to Sierra WP7607
The 1199:68C0 USB ID is reused by Sierra WP7607 which requires the DTR
quirk to be detected. Apply QMI_QUIRK_SET_DTR unconditionally as already
done for other IDs shared between different devices.
Signed-off-by: Beniamino Galvani <bgalvani@redhat.com> Acked-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 e928b5d6b75e239feb9c6d5488974b6646a0ebc8 by davem
net: mv643xx_eth: disable clk on error path in
mv643xx_eth_shared_probe()
If mv643xx_eth_shared_of_probe() fails, mv643xx_eth_shared_probe()
leaves clk enabled.
Found by Linux Driver Verification project (linuxtesting.org).
Signed-off-by: Alexey Khoroshilov <khoroshilov@ispras.ru> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/marvell/mv643xx_eth.c (diff)
Commit 04c03114be82194d4a4858d41dba8e286ad1787c by davem
tcp: clear icsk_backoff in tcp_write_queue_purge()
soukjin bae reported a crash in tcp_v4_err() handling ICMP_DEST_UNREACH
after tcp_write_queue_head(sk) returned a NULL pointer.
Current logic should have prevented this :
  if (seq != tp->snd_una  || !icsk->icsk_retransmits ||
     !icsk->icsk_backoff || fastopen)
     break;
Problem is the write queue might have been purged and icsk_backoff has
not been cleared.
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: soukjin
bae <soukjin.bae@samsung.com> Acked-by: Neal Cardwell
<ncardwell@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv4/tcp.c (diff)
Commit 2c4cc9712364c051b1de2d175d5fbea6be948ebf by davem
tcp: tcp_v4_err() should be more careful
ICMP handlers are not very often stressed, we should make them more
resilient to bugs that might surface in the future.
If there is no packet in retransmit queue, we should avoid a NULL deref.
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: soukjin
bae <soukjin.bae@samsung.com> Acked-by: Neal Cardwell
<ncardwell@google.com> Acked-by: Soheil Hassas Yeganeh
<soheil@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/tcp_ipv4.c (diff)
Commit 8644772637deb121f7ac2df690cbf83fa63d3b70 by davem
mm: Use fixed constant in page_frag_alloc instead of size + 1
This patch replaces the size + 1 value introduced with the recent fix
for 1 byte allocs with a constant value.
The idea here is to reduce code overhead as the previous logic would
have to read size into a register, then increment it, and write it back
to whatever field was being used. By using a constant we can avoid those
memory reads and arithmetic operations in favor of just encoding the
maximum value into the operation itself.
Fixes: 2c2ade81741c ("mm: page_alloc: fix ref bias in page_frag_alloc()
for 1-byte allocs") Signed-off-by: Alexander Duyck
<alexander.h.duyck@linux.intel.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedmm/page_alloc.c (diff)
Commit 3bed3cc4156eedf652b4df72bdb35d4f1a2a739d by davem
net: Do not allocate page fragments that are not skb aligned
This patch addresses the fact that there are drivers, specifically tun,
that will call into the network page fragment allocators with buffer
sizes that are not cache aligned. Doing this could result in data
alignment and DMA performance issues as these fragment pools are also
shared with the skb allocator and any other devices that will use
napi_alloc_frags or netdev_alloc_frags.
Fixes: ffde7328a36d ("net: Split netdev_alloc_frag into
__alloc_page_frag and add __napi_alloc_frag") Reported-by: Jann Horn
<jannh@google.com> Signed-off-by: Alexander Duyck
<alexander.h.duyck@linux.intel.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/core/skbuff.c (diff)
The file was modifiedMakefile (diff)
Commit 660899ddf06ae8bb5bbbd0a19418b739375430c5 by steffen.klassert
xfrm: Fix inbound traffic via XFRM interfaces across network namespaces
After moving an XFRM interface to another namespace it stays associated
with the original namespace (net in `struct xfrm_if` and the list keyed
with `xfrmi_net_id`), allowing processes in the new namespace to use
SAs/policies that were created in the original namespace.  For instance,
this allows a keying daemon in one namespace to establish IPsec SAs for
other namespaces without processes there having access to the keys or
IKE credentials.
This worked fine for outbound traffic, however, for inbound traffic the
lookup for the interfaces and the policies used the incorrect namespace
(the one the XFRM interface was moved to).
Fixes: f203b76d7809 ("xfrm: Add virtual xfrm interfaces") Signed-off-by:
Tobias Brunner <tobias@strongswan.org> Signed-off-by: Steffen Klassert
<steffen.klassert@secunet.com>
The file was modifiednet/xfrm/xfrm_policy.c (diff)
The file was modifiednet/xfrm/xfrm_interface.c (diff)
Commit f54dada8274643e3ff4436df0ea124aeedc43cae by will.deacon
arm64: fix SSBS sanitization
In valid_user_regs() we treat SSBS as a RES0 bit, and consequently it is
unexpectedly cleared when we restore a sigframe or fiddle with GPRs via
ptrace.
This patch fixes valid_user_regs() to account for this, updating the
function to refer to the latest ARM ARM (ARM DDI 0487D.a). For AArch32
tasks, SSBS appears in bit 23 of SPSR_EL1, matching its position in the
AArch32-native PSR format, and we don't need to translate it as we have
to for DIT.
There are no other bit assignments that we need to account for today. As
the recent documentation describes the DIT bit, we can drop our comment
regarding DIT.
While removing SSBS from the RES0 masks, existing inconsistent
whitespace is corrected.
Fixes: d71be2b6c0e19180 ("arm64: cpufeature: Detect SSBS and advertise
to userspace") Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc:
Catalin Marinas <catalin.marinas@arm.com> Cc: Suzuki K Poulose
<suzuki.poulose@arm.com> Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
The file was modifiedarch/arm64/kernel/ptrace.c (diff)
Commit 0738c8b5915c7eaf1e6007b441008e8f3b460443 by will.deacon
arm64/neon: Disable -Wincompatible-pointer-types when building with
Clang
After commit cc9f8349cb33 ("arm64: crypto: add NEON accelerated XOR
implementation"), Clang builds for arm64 started failing with the
following error message.
arch/arm64/lib/xor-neon.c:58:28: error: incompatible pointer types
assigning to 'const unsigned long *' from 'uint64_t *' (aka 'unsigned
long long *') [-Werror,-Wincompatible-pointer-types]
               v3 = veorq_u64(vld1q_u64(dp1 +  6), vld1q_u64(dp2 + 6));
                                        ^~~~~~~~
/usr/lib/llvm-9/lib/clang/9.0.0/include/arm_neon.h:7538:47: note:
expanded from macro 'vld1q_u64'
__ret = (uint64x2_t) __builtin_neon_vld1q_v(__p0, 51); \
                                             ^~~~
There has been quite a bit of debate and triage that has gone into
figuring out what the proper fix is, viewable at the link below, which
is still ongoing. Ard suggested disabling this warning with Clang with a
pragma so no neon code will have this type of error. While this is not
at all an ideal solution, this build error is the only thing preventing
KernelCI from having successful arm64 defconfig and allmodconfig builds
on linux-next. Getting continuous integration running is more important
so new warnings/errors or boot failures can be caught and fixed quickly.
Link: https://github.com/ClangBuiltLinux/linux/issues/283 Suggested-by:
Ard Biesheuvel <ard.biesheuvel@linaro.org> Acked-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Nathan Chancellor
<natechancellor@gmail.com> Signed-off-by: Will Deacon
<will.deacon@arm.com>
The file was modifiedarch/arm64/include/asm/neon-intrinsics.h (diff)
Commit 4f0557795e76d049f0a1687f1f050addf4df2dac by jaswinder.singh
mailbox: Export mbox_flush()
The mbox_flush() function can be used by drivers that are built as
modules, so the function needs to be exported.
Reported-by: Mark Brown <broonie@kernel.org> Signed-off-by: Thierry
Reding <treding@nvidia.com> Signed-off-by: Jassi Brar
<jaswinder.singh@linaro.org>
The file was modifieddrivers/mailbox/mailbox.c (diff)
Commit d7bf31a0f85faaf63c63c39d55154825a1eaaea9 by jaswinder.singh
mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush timeout issue
RING_CONTROL reg was not written due to wrong address, hence all the
subsequent ring flush was timing out.
Fixes: a371c10ea4b3 ("mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush
sequence")
Signed-off-by: Rayagonda Kokatanur <rayagonda.kokatanur@broadcom.com>
Signed-off-by: Ray Jui <ray.jui@broadcom.com> Reviewed-by: Scott Branden
<scott.branden@broadcom.com> Signed-off-by: Jassi Brar
<jaswinder.singh@linaro.org>
The file was modifieddrivers/mailbox/bcm-flexrm-mailbox.c (diff)
Commit 0fd3fd0a9bb0b02b6435bb7070e9f7b82a23f068 by idryomov
libceph: handle an empty authorize reply
The authorize reply can be empty, for example when the ticket used to
build the authorizer is too old and TAG_BADAUTHORIZER is returned from
the service.  Calling ->verify_authorizer_reply() results in an attempt
to decrypt and validate (somewhat) random data in au->buf (most likely
the signature block from calc_signature()), which fails and ends up in
con_fault_finish() with !con->auth_retry.  The ticket isn't invalidated
and the connection is retried again and again until a new ticket is
obtained from the monitor:
  libceph: osd2 192.168.122.1:6809 bad authorize reply
libceph: osd2 192.168.122.1:6809 bad authorize reply
libceph: osd2 192.168.122.1:6809 bad authorize reply
libceph: osd2 192.168.122.1:6809 bad authorize reply
Let TAG_BADAUTHORIZER handler kick in and increment con->auth_retry.
Cc: stable@vger.kernel.org Fixes: 5c056fdc5b47 ("libceph: verify
authorize reply on connect") Link: https://tracker.ceph.com/issues/20164
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Sage Weil
<sage@redhat.com>
The file was modifiednet/ceph/messenger.c (diff)
Commit 04242ff3ac0abbaa4362f97781dac268e6c3541a by idryomov
ceph: avoid repeatedly adding inode to mdsc->snap_flush_list
Otherwise, mdsc->snap_flush_list may get corrupted.
Cc: stable@vger.kernel.org Signed-off-by: "Yan, Zheng" <zyan@redhat.com>
Reviewed-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Ilya
Dryomov <idryomov@gmail.com>
The file was modifiedfs/ceph/snap.c (diff)
Commit 304017d31df36fb61eb2ed3ebf65fb6870b3c731 by broonie
ASoC: topology: free created components in tplg load error
Topology resources are no longer needed if any element failed to load.
Signed-off-by: Bard liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The file was modifiedsound/soc/soc-topology.c (diff)
Commit 19dd0777773ab17b4d97f7105e836867c0cdecb4 by broonie
ASoC: simple-card: fixup refcount_t underflow
commit da215354eb55c ("ASoC: simple-card: merge simple-scu-card") merged
simple-card and simple-scu-card. Then it had refcount underflow bug.
This patch fixup it. We will get below error without this patch.
OF: ERROR: Bad of_node_put() on /sound
CPU: 3 PID: 237 Comm: kworker/3:1 Not tainted 5.0.0-rc6+ #1514
Hardware name: Renesas H3ULCB Kingfisher board based on r8a7795 ES2.0+
(DT)
Workqueue: events deferred_probe_work_func
Call trace:
dump_backtrace+0x0/0x150
show_stack+0x24/0x30
dump_stack+0xb0/0xec
of_node_release+0xd0/0xd8
kobject_put+0x74/0xe8
of_node_put+0x24/0x30
__of_get_next_child+0x50/0x70
of_get_next_child+0x40/0x68
asoc_simple_card_probe+0x604/0x730
platform_drv_probe+0x58/0xa8
... Reported-by: Vicente Bergas <vicencb@gmail.com> Signed-off-by:
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
The file was modifiedsound/soc/generic/simple-card.c (diff)
Commit 9060cb719e61b685ec0102574e10337fa5f445ea by davem
net: crypto set sk to NULL when af_alg_release.
KASAN has found use-after-free in sockfs_setattr. The existed commit
6d8c50dcb029 ("socket: close race condition between sock_close() and
sockfs_setattr()") is to fix this simillar issue, but it seems to ignore
that crypto module forgets to set the sk to NULL after af_alg_release.
KASAN report details as below: BUG: KASAN: use-after-free in
sockfs_setattr+0x120/0x150 Write of size 4 at addr ffff88837b956128 by
task syz-executor0/4186
CPU: 2 PID: 4186 Comm: syz-executor0 Not tainted xxx + #1 Hardware name:
QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
Call Trace:
dump_stack+0xca/0x13e
print_address_description+0x79/0x330
? vprintk_func+0x5e/0xf0
kasan_report+0x18a/0x2e0
? sockfs_setattr+0x120/0x150
sockfs_setattr+0x120/0x150
? sock_register+0x2d0/0x2d0
notify_change+0x90c/0xd40
? chown_common+0x2ef/0x510
chown_common+0x2ef/0x510
? chmod_common+0x3b0/0x3b0
? __lock_is_held+0xbc/0x160
? __sb_start_write+0x13d/0x2b0
? __mnt_want_write+0x19a/0x250
do_fchownat+0x15c/0x190
? __ia32_sys_chmod+0x80/0x80
? trace_hardirqs_on_thunk+0x1a/0x1c
__x64_sys_fchownat+0xbf/0x160
? lockdep_hardirqs_on+0x39a/0x5e0
do_syscall_64+0xc8/0x580
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x462589 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:00007fb4b2c83c58
EFLAGS: 00000246 ORIG_RAX: 0000000000000104 RAX: ffffffffffffffda RBX:
000000000072bfa0 RCX: 0000000000462589 RDX: 0000000000000000 RSI:
00000000200000c0 RDI: 0000000000000007 RBP: 0000000000000005 R08:
0000000000001000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007fb4b2c846bc R13: 00000000004bc733 R14:
00000000006f5138 R15: 00000000ffffffff
Allocated by task 4185:
kasan_kmalloc+0xa0/0xd0
__kmalloc+0x14a/0x350
sk_prot_alloc+0xf6/0x290
sk_alloc+0x3d/0xc00
af_alg_accept+0x9e/0x670
hash_accept+0x4a3/0x650
__sys_accept4+0x306/0x5c0
__x64_sys_accept4+0x98/0x100
do_syscall_64+0xc8/0x580
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Freed by task 4184:
__kasan_slab_free+0x12e/0x180
kfree+0xeb/0x2f0
__sk_destruct+0x4e6/0x6a0
sk_destruct+0x48/0x70
__sk_free+0xa9/0x270
sk_free+0x2a/0x30
af_alg_release+0x5c/0x70
__sock_release+0xd3/0x280
sock_close+0x1a/0x20
__fput+0x27f/0x7f0
task_work_run+0x136/0x1b0
exit_to_usermode_loop+0x1a7/0x1d0
do_syscall_64+0x461/0x580
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Syzkaller reproducer: r0 = perf_event_open(&(0x7f0000000000)={0x0, 0x70,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
@perf_config_ext}, 0x0, 0x0, 0xffffffffffffffff, 0x0) r1 =
socket$alg(0x26, 0x5, 0x0) getrusage(0x0, 0x0) bind(r1,
&(0x7f00000001c0)=@alg={0x26, 'hash\x00', 0x0, 0x0,
'sha256-ssse3\x00'}, 0x80) r2 = accept(r1, 0x0, 0x0) r3 =
accept4$unix(r2, 0x0, 0x0, 0x0) r4 = dup3(r3, r0, 0x0) fchownat(r4,
&(0x7f00000000c0)='\x00', 0x0, 0x0, 0x1000)
Fixes: 6d8c50dcb029 ("socket: close race condition between sock_close()
and sockfs_setattr()") Signed-off-by: Mao Wenan <maowenan@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedcrypto/af_alg.c (diff)
Commit 21d2cb491b9e10bfdf10424673b43cd9eddc2da1 by davem
net/mlx4_en: fix spelling mistake: "quiting" -> "quitting"
There is a spelling mistake in a en_err error message. Fix it.
Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by:
Tariq Toukan <tariqt@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/mellanox/mlx4/en_netdev.c (diff)
Commit df1a2cb7c74b3d3abc8d8c2d690f82c8ebc3490a by daniel
bpf/test_run: fix unkillable BPF_PROG_TEST_RUN
Syzbot found out that running BPF_PROG_TEST_RUN with repeat=0xffffffff
makes process unkillable. The problem is that when CONFIG_PREEMPT is
enabled, we never see need_resched() return true. This is due to the
fact that preempt_enable() (which we do in bpf_test_run_one on each
iteration) now handles resched if it's needed.
Let's disable preemption for the whole run, not per test. In this case
we can properly see whether resched is needed. Let's also properly
return -EINTR to the userspace in case of a signal interrupt.
See recent discussion:
http://lore.kernel.org/netdev/CAH3MdRWHr4N8jei8jxDppXjmw-Nw=puNDLbu1dQOFQHxfU2onA@mail.gmail.com
I'll follow up with the same fix bpf_prog_test_run_flow_dissector in
bpf-next.
Reported-by: syzbot <syzkaller@googlegroups.com> Signed-off-by:
Stanislav Fomichev <sdf@google.com> Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net>
The file was modifiednet/bpf/test_run.c (diff)
Commit f2ffff085d287eec499f1fccd682796ad8010303 by davem
mac80211: mesh: fix missing unlock on error in table_path_del()
spin_lock_bh() is used in table_path_del() but rcu_read_unlock() is used
for unlocking. Fix it by using spin_unlock_bh() instead of
rcu_read_unlock() in the error handling case.
Fixes: b4c3fbe63601 ("mac80211: Use linked list instead of rhashtable
walk for mesh tables") Acked-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Wei Yongjun
<weiyongjun1@huawei.com> Signed-off-by: Johannes Berg
<johannes.berg@intel.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/mac80211/mesh_pathtbl.c (diff)
Commit 8e29d23e28ee7fb995a00c1ca7e1a4caf5070b12 by davem
r8152: Add support for MAC address pass through on RTL8153-BD
RTL8153-BD is used in Dell DA300 type-C dongle. It should be added to
the whitelist of devices to activate MAC address pass through.
Per confirming with Realtek all devices containing RTL8153-BD should
activate MAC pass through and there won't use pass through bit on efuse
like in RTL8153-AD.
Signed-off-by: David Chen <david.chen7@dell.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/usb/r8152.c (diff)
Commit b5372fe5dc84235dbe04998efdede3c4daa866a9 by torvalds
exec: load_script: Do not exec truncated interpreter path
Commit 8099b047ecc4 ("exec: load_script: don't blindly truncate shebang
string") was trying to protect against a confused exec of a truncated
interpreter path. However, it was overeager and also refused to truncate
arguments as well, which broke userspace, and it was reverted. This
attempts the protection again, but allows arguments to remain truncated.
In an effort to improve readability, helper functions and comments have
been added.
Co-developed-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Kees Cook <keescook@chromium.org> Cc: Andrew Morton
<akpm@linux-foundation.org> Cc: Oleg Nesterov <oleg@redhat.com> Cc:
Samuel Dionne-Riel <samuel@dionne-riel.com> Cc: Richard Weinberger
<richard.weinberger@gmail.com> Cc: Graham Christensen
<graham@grahamc.com> Cc: Michal Hocko <mhocko@suse.com> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedfs/binfmt_script.c (diff)
Commit 8f5b27347e88b171c755562f0090ce40e514fc00 by mpe
powerpc/powernv/sriov: Register IOMMU groups for VFs
The compound IOMMU group rework moved iommu_register_group() together in
pnv_pci_ioda_setup_iommu_api() (which is a part of
ppc_md.pcibios_fixup). As the result, pnv_ioda_setup_bus_iommu_group()
does not create groups any more, it only adds devices to groups.
This works fine for boot time devices. However IOMMU groups for SRIOV's
VFs were added by pnv_ioda_setup_bus_iommu_group() so this got broken:
pnv_tce_iommu_bus_notifier() expects a group to be registered for VF and
it is not.
This adds missing group registration and adds a NULL pointer check into
the bus notifier so we won't crash if there is no group, although it is
not expected to happen now because of the change above.
Example oops seen prior to this patch:
  $ echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/sriov_numvfs
Unable to handle kernel paging request for data at address 0x00000030
Faulting instruction address: 0xc0000000004a6018
Oops: Kernel access of bad area, sig: 11 [#1]
LE SMP NR_CPUS=2048 NUMA PowerNV
CPU: 46 PID: 7006 Comm: bash Not tainted 4.15-ish
NIP:  c0000000004a6018 LR: c0000000004a6014 CTR: 0000000000000000
REGS: c000008fc876b400 TRAP: 0300   Not tainted  (4.15-ish)
MSR:  900000000280b033 <SF,HV,VEC,VSX,EE,FP,ME,IR,DR,RI,LE>
CFAR: c000000000d0be20 DAR: 0000000000000030 DSISR: 40000000 SOFTE: 1
...
NIP sysfs_do_create_link_sd.isra.0+0x68/0x150
LR  sysfs_do_create_link_sd.isra.0+0x64/0x150
Call Trace:
   pci_dev_type+0x0/0x30 (unreliable)
   iommu_group_add_device+0x8c/0x600
   iommu_add_device+0xe8/0x180
   pnv_tce_iommu_bus_notifier+0xb0/0xf0
   notifier_call_chain+0x9c/0x110
   blocking_notifier_call_chain+0x64/0xa0
   device_add+0x524/0x7d0
   pci_device_add+0x248/0x450
   pci_iov_add_virtfn+0x294/0x3e0
   pci_enable_sriov+0x43c/0x580
   mlx5_core_sriov_configure+0x15c/0x2f0 [mlx5_core]
   sriov_numvfs_store+0x180/0x240
   dev_attr_store+0x3c/0x60
   sysfs_kf_write+0x64/0x90
   kernfs_fop_write+0x1ac/0x240
   __vfs_write+0x3c/0x70
   vfs_write+0xd8/0x220
   SyS_write+0x6c/0x110
   system_call+0x58/0x6c
Fixes: 0bd971676e68 ("powerpc/powernv/npu: Add compound IOMMU groups")
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reported-by:
Santwana Samantray <santwana.samantray@in.ibm.com> Signed-off-by:
Michael Ellerman <mpe@ellerman.id.au>
The file was modifiedarch/powerpc/platforms/powernv/pci-ioda.c (diff)
The file was modifiedarch/powerpc/platforms/powernv/pci.c (diff)
Commit 9addc92730df55e2c05e8d3f69267a89d65bcba8 by davem
qed: Fix iWARP buffer size provided for syn packet processing.
The assumption that the maximum size of a syn packet is 128 bytes is
wrong. Tunneling headers were not accounted for. Allocate buffers large
enough for mtu.
Signed-off-by: Ariel Elior <ariel.elior@marvell.com> Signed-off-by:
Michal Kalderon <michal.kalderon@marvell.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_iwarp.c (diff)
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_iwarp.h (diff)
Commit 8be3dadf04050c2907760ec1955ca1c8fbc25585 by davem
qed: Fix iWARP syn packet mac address validation.
The ll2 forwards all syn packets to the driver without validating the
mac address. Add validation check in the driver's iWARP listener flow
and drop the packet if it isn't intended for the device.
Signed-off-by: Ariel Elior <ariel.elior@marvell.com> Signed-off-by:
Michal Kalderon <michal.kalderon@marvell.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/qlogic/qed/qed_iwarp.c (diff)
Commit 8a7493e58ad688eb23b81e45461c5d314f4402f1 by davem
net: stmmac: Fix a race in EEE enable callback
We are saving the status of EEE even before we try to enable it. This
leads to a race with XMIT function that tries to arm EEE timer before we
set it up.
Fix this by only saving the EEE parameters after all operations are
performed with success.
Signed-off-by: Jose Abreu <joabreu@synopsys.com> Fixes: d765955d2ae0
("stmmac: add the Energy Efficient Ethernet support") Cc: Joao Pinto
<jpinto@synopsys.com> Cc: David S. Miller <davem@davemloft.net> Cc:
Giuseppe Cavallaro <peppe.cavallaro@st.com> Cc: Alexandre Torgue
<alexandre.torgue@st.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c (diff)
Commit 4d96e13ee9cd1f7f801e8c7f4b12f09d1da4a5d8 by davem
net: hns: Fixes the missing put_device in positive leg for roce reset
This patch fixes the missing device reference release-after-use in the
positive leg of the roce reset API of the HNS DSAF.
Fixes: c969c6e7ab8c ("net: hns: Fix object reference leaks in
hns_dsaf_roce_reset()") Reported-by: John Garry <john.garry@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@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 1f43f400a2cbb02f3d34de8fe30075c070254816 by davem
net: netcp: Fix ethss driver probe issue
Recent commit below has introduced a bug in netcp driver that causes the
ethss driver probe failure and thus break the networking function on K2
SoCs such as K2HK, K2L, K2E etc. This patch fixes the issue to restore
networking on the above SoCs.
Fixes: 21c328dcecfc ("net: ethernet: Convert to using %pOFn instead of
device_node.name") Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/ti/netcp_core.c (diff)
Commit 8cbd468bdeb5ed3acac2d7a9f7494d5b77e46297 by rafael.j.wysocki
cpufreq: scmi: Fix use-after-free in scmi_cpufreq_exit()
This issue was detected with the help of Coccinelle. So change the order
of function calls to fix it.
Fixes: 1690d8bb91e37 (cpufreq: scpi/scmi: Fix freeing of dynamic OPPs)
Signed-off-by: Yangtao Li <tiny.windzz@gmail.com> Acked-by: Viresh Kumar
<viresh.kumar@linaro.org> Acked-by: Sudeep Holla <sudeep.holla@arm.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/cpufreq/scmi-cpufreq.c (diff)
Commit 6fc979179c98d2591784937d5618edc3e5cd31c1 by gregory.clement
ARM: dts: armada-xp: fix Armada XP boards NAND description
Commit 3b79919946cd2cf4dac47842afc9a893acec4ed7 ("ARM: dts:
armada-370-xp: update NAND node with new bindings") updated some Marvell
Armada DT description to use the new NAND controller bindings, but did
it incorrectly for a number of boards: armada-xp-gp, armada-xp-db and
armada-xp-lenovo-ix4-300d. Due to this, the NAND is no longer detected
on those platforms.
This commit fixes that by properly using the new NAND DT binding. This
commit was runtime-tested on Armada XP GP, the two other platforms are
only compile-tested.
Fixes: 3b79919946cd2 ("ARM: dts: armada-370-xp: update NAND node with
new bindings") Cc: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Gregory CLEMENT <gregory.clement@bootlin.com>
The file was modifiedarch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts (diff)
The file was modifiedarch/arm/boot/dts/armada-xp-db.dts (diff)
The file was modifiedarch/arm/boot/dts/armada-xp-gp.dts (diff)
Commit bdd22a41d55bb0068c8685e28839ed9492e96aba by gregory.clement
arm64: dts: clearfog-gt-8k: fix SGMII PHY reset signal
The PHY reset signal goes to mpp43 on CP0.
Fixes: babc5544c293 ("arm64: dts: clearfog-gt-8k: 1G eth PHY reset
signal") Reported-by: Denis Odintsov <oversun@me.com> Signed-off-by:
Baruch Siach <baruch@tkos.co.il> Signed-off-by: Gregory CLEMENT
<gregory.clement@bootlin.com>
The file was modifiedarch/arm64/boot/dts/marvell/armada-8040-clearfog-gt-8k.dts (diff)
Commit 759c962d3c9bb1a60e3b4b780daa66ee6d4be13a by tony
ARM: dts: am335x-evmsk: Fix PHY mode for ethernet
The PHY must add both tx and rx delay and not only on the tx clock. The
board uses AR8031_AL1A PHY where the rx delay is enabled by default, the
tx dealy is disabled.
The reason why rgmii-txid worked because the rx delay was not disabled
by the driver so essentially we ended up with rgmii-id PHY mode.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by:
Tony Lindgren <tony@atomide.com>
The file was modifiedarch/arm/boot/dts/am335x-evmsk.dts (diff)
Commit 37685f6a63eeca2135d1f704e7638409a071b1f6 by tony
ARM: dts: am335x-evm: Fix PHY mode for ethernet
The PHY must add both tx and rx delay and not only on the tx clock. The
board uses AR8031_AL1A PHY where the rx delay is enabled by default, the
tx dealy is disabled.
The reason why rgmii-txid worked because the rx delay was not disabled
by the driver so essentially we ended up with rgmii-id PHY mode.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Signed-off-by:
Tony Lindgren <tony@atomide.com>
The file was modifiedarch/arm/boot/dts/am335x-evm.dts (diff)
Commit 450d007d199e632a1a4c4b91302deacd7d56815f by alexander.deucher
gpu: drm: radeon: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime
On HP ProBook 4540s, if PM-runtime is enabled in the radeon driver and
the direct-complete optimization is used for the radeon device during
system-wide suspend, the system doesn't resume.
Preventing direct-complete from being used with the radeon device by
setting the DPM_FLAG_NEVER_SKIP driver flag for it makes the problem go
away, which indicates that direct-complete is not safe for the radeon
driver in general and should not be used with it (at least for now).
This fixes a regression introduced by commit c62ec4610c40
("PM / core: Fix direct_complete handling for devices with no
callbacks") which allowed direct-complete to be applied to devices
without PM callbacks (again) which in turn unlocked direct-complete for
radeon on HP ProBook 4540s.
Fixes: c62ec4610c40 ("PM / core: Fix direct_complete handling for
devices with no callbacks") Link:
https://bugzilla.kernel.org/show_bug.cgi?id=201519 Reported-by: Ярослав
Семченко <ukrkyi@gmail.com> Tested-by: Ярослав Семченко
<ukrkyi@gmail.com> Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Cc: stable@vger.kernel.org
The file was modifieddrivers/gpu/drm/radeon/radeon_kms.c (diff)
Commit d33158530660bc89be3cc870a2152e4e9a76cac7 by alexander.deucher
drm/amdgpu: Set DPM_FLAG_NEVER_SKIP when enabling PM-runtime
Based on a similar patch from Rafael for radeon.
When using ATPX to control dGPU power, the state is not retained across
suspend and resume cycles by default.  This can probably be loosened for
Hybrid Graphics (_PR3) laptops where I think the state is properly
retained.
Fixes: c62ec4610c40 ("PM / core: Fix direct_complete handling for
devices with no callbacks") Cc: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Acked-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Cc: stable@vger.kernel.org
The file was modifieddrivers/gpu/drm/amd/amdgpu/amdgpu_kms.c (diff)
Commit 9db97d8aa8f8a518c421196a504dbfc942ef8d40 by alexander.deucher
drm/amdgpu: Update sdma golden setting for vega20
According to hardware engineer, WRITE_BURST_LENGTH [9:8] in register
SDMA0_CHICKEN_BITS need to change to 3 for better performance
Signed-off-by: shaoyunl <shaoyun.liu@amd.com> Acked-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/amdgpu/sdma_v4_0.c (diff)
Commit d2f0b53bda3193874f3905bc839888f895d1c0cf by alexander.deucher
drm/amd/display: Fix MST reboot/poweroff sequence
[Why]
drm_dp_mst_topology_mgr_suspend() is added into the new reboot sequence,
which disables the UP request at the beginning. Therefore sideband
messages are blocked.
[How]
Finish MST sideband message transaction before UP request is suppressed.
Signed-off-by: Leo (Hanghong) Ma <hanghong.ma@amd.com> Reviewed-by:
Roman Li <Roman.Li@amd.com> Acked-by: Leo Li <sunpeng.li@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc:
stable@vger.kernel.org
The file was modifieddrivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c (diff)
Commit 8852ae9a82498207c15262b6294d14aea1796966 by alexander.deucher
drm/amd/display: Raise dispclk value for dce11
[Why] The visual corruption due to low display clock value. Observed on
Carrizo 4K@60Hz.
[How] There was earlier patch for dce_update_clocks: Adding +15%
workaround also to to dce11_update_clocks
Signed-off-by: Roman Li <Roman.Li@amd.com> Reviewed-by: Nicholas
Kazlauskas <Nicholas.Kazlauskas@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_clk_mgr.c (diff)
Commit 816db7663565cd23f74ed3d5c9240522e3fb0dda by davem
vhost: correctly check the return value of translate_desc() in
log_used()
When fail, translate_desc() returns negative value, otherwise the number
of iovs. So we should fail when the return value is negative instead of
a blindly check against zero.
Detected by CoverityScan, CID# 1442593:  Control flow issues  (DEADCODE)
Fixes: cc5e71075947 ("vhost: log dirty page correctly") Acked-by:
Michael S. Tsirkin <mst@redhat.com> Reported-by: Stephen Hemminger
<stephen@networkplumber.org> Signed-off-by: Jason Wang
<jasowang@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/vhost/vhost.c (diff)
Commit 1765f5dcd00963e33f1b8a4e0f34061fbc0e2f7f by davem
sky2: Increase D3 delay again
Another platform requires even longer delay to make the device work
correctly after S3.
So increase the delay to 300ms.
BugLink: https://bugs.launchpad.net/bugs/1798921
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/marvell/sky2.c (diff)
Commit d179b88deb3bf6fed4991a31fd6f0f2cad21fab5 by jani.nikula
drm/i915/fbdev: Actually configure untiled displays
If we skipped all the connectors that were not part of a tile, we would
leave conn_seq=0 and conn_configured=0, convincing ourselves that we had
stagnated in our configuration attempts. Avoid this situation by
starting conn_seq=ALL_CONNECTORS, and repeating until we find no more
connectors to configure.
Fixes: 754a76591b12 ("drm/i915/fbdev: Stop repeating tile configuration
on stagnation") Reported-by: Maarten Lankhorst
<maarten.lankhorst@linux.intel.com> Signed-off-by: Chris Wilson
<chris@chris-wilson.co.uk> Cc: Maarten Lankhorst
<maarten.lankhorst@linux.intel.com> Reviewed-by: Maarten Lankhorst
<maarten.lankhorst@linux.intel.com> Link:
https://patchwork.freedesktop.org/patch/msgid/20190215123019.32283-1-chris@chris-wilson.co.uk
Cc: <stable@vger.kernel.org> # v3.19+
(cherry picked from commit d9b308b1f8a1acc0c3279f443d4fe0f9f663252e)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
The file was modifieddrivers/gpu/drm/i915/intel_fbdev.c (diff)
Commit 74698f6971f25d045301139413578865fc2bd8f9 by will.deacon
arm64: Relax GIC version check during early boot
Updates to the GIC architecture allow ID_AA64PFR0_EL1.GIC to have values
other than 0 or 1. At the moment, Linux is quite strict in the way it
handles this field at early boot stage (cpufeature is fine) and will
refuse to use the system register CPU interface if it doesn't find the
value 1.
Fixes: 021f653791ad17e03f98aaa7fb933816ae16f161 ("irqchip: gic-v3:
Initial support for GICv3") Reported-by: Chase Conklin
<Chase.Conklin@arm.com> Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Vladimir Murzin <vladimir.murzin@arm.com> Signed-off-by:
Will Deacon <will.deacon@arm.com>
The file was modifiedarch/arm64/kernel/head.S (diff)
Commit 94d9b9337d09bdd27735005b3251d97ab29f7273 by arnd
ARM: tegra: Restore DT ABI on Tegra124 Chromebooks
Commit 482997699ef0 ("ARM: tegra: Fix unit_address_vs_reg DTC warnings
for /memory") inadventently broke device tree ABI by adding a unit-
address to the "/memory" node because the device tree compiler flagged
the missing unit-address as a warning.
Tegra124 Chromebooks (a.k.a. Nyan) use a bootloader that relies on the
full name of the memory node in device tree being exactly "/memory". It
can be argued whether this was a good decision or not, and some other
bootloaders (such as U-Boot) do accept a unit-address in the name of the
node, but the device tree is an ABI and we can't break existing setups
just because the device tree compiler considers it bad practice to omit
the unit-address nowadays.
This partially reverts the offending commit and restores device tree ABI
compatibility.
Fixes: 482997699ef0 ("ARM: tegra: Fix unit_address_vs_reg DTC warnings
for /memory") Reported-by: Tristan Bastian <tristan-c.bastian@gmx.de>
Signed-off-by: Thierry Reding <treding@nvidia.com> Tested-by: Tristan
Bastian <tristan-c.bastian@gmx.de> Signed-off-by: Arnd Bergmann
<arnd@arndb.de>
The file was modifiedarch/arm/boot/dts/tegra124-nyan.dtsi (diff)
Commit 9c2054a5cf415a9dc32c91ffde78399955deb571 by davem
net: dsa: fix unintended change of bridge interface STP state
When a DSA port is added to a bridge and brought up, the resulting STP
state programmed into the hardware depends on the order that these
operations are performed.  However, the Linux bridge code believes that
the port is in disabled mode.
If the DSA port is first added to a bridge and then brought up, it will
be in blocking mode.  If it is brought up and then added to the bridge,
it will be in disabled mode.
This difference is caused by DSA always setting the STP mode in
dsa_port_enable() whether or not this port is part of a bridge.  Since
bridge always sets the STP state when the port is added, brought up or
taken down, it is unnecessary for us to manipulate the STP state.
Apparently, this code was copied from Rocker, and the very next day a
similar fix for Rocker was merged but was not propagated to DSA.  See
e47172ab7e41 ("rocker: put port in FORWADING state after leaving
bridge")
Fixes: b73adef67765 ("net: dsa: integrate with SWITCHDEV for HW
bridging") Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Vivien Didelot <vivien.didelot@gmail.com> Reviewed-by:
Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/dsa/port.c (diff)
Commit 1b328a2e095a009518ebac05e937cc0fc242fede by sboyd
clk: at91: fix at91sam9x5 peripheral clock number
nck() looks at the last id in an array and unfortunately,
at91sam9x35_periphck has a sentinel, hence the id is 0 and the
calculated number of peripheral clocks is 1 instead of a maximum of 31.
Fixes: 1eabdc2f9dd8 ("clk: at91: add at91sam9x5 PMCs driver")
Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com> Cc:
<stable@vger.kernel.org> # v4.20+ Signed-off-by: Stephen Boyd
<sboyd@kernel.org>
The file was modifieddrivers/clk/at91/at91sam9x5.c (diff)
Commit 65a91e2e597dea62a798a8b771edc44859037e7f by sboyd
clk: at91: fix masterck name
The master clock is actually named masterck earlier in the driver.
Having
"mck" in the parent list means that it can never be selected.
Fixes: 1eabdc2f9dd8 ("clk: at91: add at91sam9x5 PMCs driver") Fixes:
a2038077de9a ("clk: at91: add sama5d2 PMC driver") Fixes: 084b696bb509
("clk: at91: add sama5d4 pmc driver") Signed-off-by: Alexandre Belloni
<alexandre.belloni@bootlin.com> Acked-by: Nicolas Ferre
<nicolas.ferre@microchip.com> Cc: <stable@vger.kernel.org> # v4.20+
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
The file was modifieddrivers/clk/at91/sama5d4.c (diff)
The file was modifieddrivers/clk/at91/at91sam9x5.c (diff)
The file was modifieddrivers/clk/at91/sama5d2.c (diff)
Commit 6e356d45950e2d26b63531a2fd112c987da7a933 by hubcap
orangefs: remove two un-needed BUG_ONs...
Signed-off-by: Mike Marshall <hubcap@omnibond.com>
The file was modifiedfs/orangefs/file.c (diff)
Commit 0921c41e19028314830b33daa681e46b46477c5e by alexander.deucher
drm/amd/display: Fix negative cursor pos programming
[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.
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_hw_sequencer.c (diff)
Commit 9f7ddbea2bb826a2147309f735726a8b09950944 by alexander.deucher
drm/amd/display: fix optimize_bandwidth func pointer for dce80
[Why] optimize_bandwidth was using dce100_prepare_bandwidth this is
incorrect
[How] change it to dce100_optimize_bandwidth
Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Reviewed-by: Charlene Liu <Charlene.Liu@amd.com> Acked-by: Leo Li
<sunpeng.li@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Cc: stable@vger.kernel.org
The file was modifieddrivers/gpu/drm/amd/display/dc/dce80/dce80_hw_sequencer.c (diff)
The file was modifieddrivers/gpu/drm/amd/display/dc/dce100/dce100_hw_sequencer.h (diff)
Commit 4ece61a22be5ab5d49cc5fc20a19a0afa24a019d by alexander.deucher
drm/amd/display: set clocks to 0 on suspend on dce80
[Why] When a dce80 asic was suspended, the clocks were not set to 0.
Upon resume, the new clock was compared to the existing clock, they were
found to be the same, and so the clock was not set. This resulted in a
blackscreen.
[How] In atomic commit, check to see if there are any active pipes. If
no, set clocks to 0
Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com> Acked-by:
Leo Li <sunpeng.li@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Cc: stable@vger.kernel.org
The file was modifieddrivers/gpu/drm/amd/display/dc/dce80/dce80_resource.c (diff)
Commit a213c2c7e235cfc0e0a161a558f7fdf2fb3a624a by alexander.deucher
drm/amdgpu: disable bulk moves for now
The changes to fix those are two invasive for backporting.
Just disable the feature in 4.20 and 5.0.
Acked-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by:
Christian König <christian.koenig@amd.com> Cc: <stable@vger.kernel.org>
  [4.20+] Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/amdgpu/amdgpu_vm.c (diff)
Commit a8fef9ba58c9966ddb1fec916d8d8137c9d8bc89 by davem
net: marvell: mvneta: fix DMA debug warning
Booting 4.20 on SolidRun Clearfog issues this warning with DMA API debug
enabled:
WARNING: CPU: 0 PID: 555 at kernel/dma/debug.c:1230
check_sync+0x514/0x5bc mvneta f1070000.ethernet: DMA-API: device driver
tries to sync DMA memory it has not allocated [device
address=0x000000002dd7dc00] [size=240 bytes] Modules linked in: ahci
mv88e6xxx dsa_core xhci_plat_hcd xhci_hcd devlink armada_thermal
marvell_cesa des_generic ehci_orion phy_armada38x_comphy mcp3021
spi_orion evbug sfp mdio_i2c ip_tables x_tables CPU: 0 PID: 555 Comm:
bridge-network- Not tainted 4.20.0+ #291 Hardware name: Marvell Armada
380/385 (Device Tree)
[<c0019638>] (unwind_backtrace) from [<c0014888>] (show_stack+0x10/0x14)
[<c0014888>] (show_stack) from [<c07f54e0>] (dump_stack+0x9c/0xd4)
[<c07f54e0>] (dump_stack) from [<c00312bc>] (__warn+0xf8/0x124)
[<c00312bc>] (__warn) from [<c00313b0>] (warn_slowpath_fmt+0x38/0x48)
[<c00313b0>] (warn_slowpath_fmt) from [<c00b0370>]
(check_sync+0x514/0x5bc)
[<c00b0370>] (check_sync) from [<c00b04f8>]
(debug_dma_sync_single_range_for_cpu+0x6c/0x74)
[<c00b04f8>] (debug_dma_sync_single_range_for_cpu) from [<c051bd14>]
(mvneta_poll+0x298/0xf58)
[<c051bd14>] (mvneta_poll) from [<c0656194>] (net_rx_action+0x128/0x424)
[<c0656194>] (net_rx_action) from [<c000a230>] (__do_softirq+0xf0/0x540)
[<c000a230>] (__do_softirq) from [<c00386e0>] (irq_exit+0x124/0x144)
[<c00386e0>] (irq_exit) from [<c009b5e0>]
(__handle_domain_irq+0x58/0xb0)
[<c009b5e0>] (__handle_domain_irq) from [<c03a63c4>]
(gic_handle_irq+0x48/0x98)
[<c03a63c4>] (gic_handle_irq) from [<c0009a10>] (__irq_svc+0x70/0x98)
...
This appears to be caused by mvneta_rx_hwbm() calling
dma_sync_single_range_for_cpu() with the wrong struct device pointer, as
the buffer manager device pointer is used to map and unmap the buffer.
Fix this.
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/marvell/mvneta.c (diff)
Commit ae3b564179bfd06f32d051b9e5d72ce4b2a07c37 by davem
missing barriers in some of unix_sock ->addr and ->path accesses
Several u->addr and u->path users are not holding any locks in common
with unix_bind().  unix_state_lock() is useless for those purposes.
u->addr is assign-once and *(u->addr) is fully set up by the time we set
u->addr (all under unix_table_lock).  u->path is also set in the same
critical area, also before setting u->addr, and any unix_sock with
->path filled will have non-NULL ->addr.
So setting ->addr with smp_store_release() is all we need for those
"lockless" users - just have them fetch ->addr with smp_load_acquire()
and don't even bother looking at ->path if they see NULL ->addr.
Users of ->addr and ->path fall into several classes now:
   1) ones that do smp_load_acquire(u->addr) and access *(u->addr) and
u->path only if smp_load_acquire() has returned non-NULL.
   2) places holding unix_table_lock.  These are guaranteed that
*(u->addr) is seen fully initialized.  If unix_sock is in one of the
"bound" chains, so's ->path.
   3) unix_sock_destructor() using ->addr is safe.  All places that set
u->addr are guaranteed to have seen all stores *(u->addr) while holding
a reference to u and unix_sock_destructor() is called when (atomic)
refcount hits zero.
   4) unix_release_sock() using ->path is safe.  unix_bind() is
serialized wrt unix_release() (normally - by struct file refcount), and
for the instances that had ->path set by unix_bind() unix_release_sock()
comes from unix_release(), so they are fine. Instances that had it set
in unix_stream_connect() either end up attached to a socket (in
unix_accept()), in which case the call chain to unix_release_sock() and
serialization are the same as in the previous case, or they never get
accept'ed and unix_release_sock() is called when the listener is shut
down and its queue gets purged. In that case the listener's queue lock
provides the barriers needed - unix_stream_connect() shoves our
unix_sock into listener's queue under that lock right after having set
->path and eventual unix_release_sock() caller picks them from that
queue under the same lock right before calling unix_release_sock().
   5) unix_find_other() use of ->path is pointless, but safe - it
happens with successful lookup by (abstract) name, so ->path.dentry is
guaranteed to be NULL there.
earlier-variant-reviewed-by: "Paul E. McKenney" <paulmck@linux.ibm.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/unix/af_unix.c (diff)
The file was modifiednet/unix/diag.c (diff)
The file was modifiedsecurity/lsm_audit.c (diff)
Commit 74fb44863084275b952f21ec6a024af0e2e75cb8 by rafael.j.wysocki
PM-runtime: Fix deadlock when canceling hrtimer
When rpm_resume() desactivates the autosuspend timer, it should only try
to cancel hrtimer but not wait for the handler to finish, because both
rpm_resume() and pm_suspend_timer_fn() take the power.lock.
A deadlock is possible as follows:
CPU0                              CPU1 rpm_resume()
spin_lock_irqsave
                                 pm_suspend_timer_fn()
                                   spin_lock_irqsave
pm_runtime_deactivate_timer()
   hrtimer_cancel()
It is sufficient to call hrtimer_try_to_cancel() from
pm_runtime_deactivate_timer(), because dev->power.timer_expires reset to
0 by it, so use that function instead of hrtimer_cancel().
Fixes: 8234f6734c5d ("PM-runtime: Switch autosuspend over to using
hrtimers") Reported-by: Sunzhaosheng Sun(Zhaosheng)
<sunzhaosheng@hisilicon.com> Signed-off-by: Vincent Guittot
<vincent.guittot@linaro.org>
[ rjw: Changelog ] Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com>
The file was modifieddrivers/base/power/runtime.c (diff)
Commit 11fe9262ed226c127f67ca4bd85977b22589b68a by daniel
Revert "xsk: simplify AF_XDP socket teardown"
This reverts commit e2ce3674883ecba2605370404208c9d4a07ae1c3.
It turns out that the sock destructor xsk_destruct was needed after all.
The cleanup simplification broke the skb transmit cleanup path, due to
that the umem was prematurely destroyed.
The umem cannot be destroyed until all outstanding skbs are freed, which
means that we cannot remove the umem until the sk_destruct has been
called.
Signed-off-by: Björn Töpel <bjorn.topel@intel.com> Signed-off-by: Daniel
Borkmann <daniel@iogearbox.net>
The file was modifiednet/xdp/xsk.c (diff)
Commit a841c673f1352f607fd3ba85de6c9c49ff2c1e12 by torvalds
revert "initramfs: cleanup incomplete rootfs"
Revert ff1522bb7d9845 ("initramfs: cleanup incomplete rootfs").
Andy reports
: This breaks my setup where I have U-boot provided more size of
initramfs
: than needed.  This allows a bit of flexibility to increase or decrease
: initramfs compressed image without taking care of bootloader.  The
proper
: solution is to do this if we sure that we didn't get enough memory,
: otherwise I can't consider the error fatal to clean up rootfs.
Fixes: ff1522bb7d9845 ("initramfs: cleanup incomplete rootfs")
Reported-by: Andy Shevchenko <andy.shevchenko@gmail.com> Tested-by: Andy
Shevchenko <andy.shevchenko@gmail.com> Cc: David Engraf
<david.engraf@sysgo.com> Cc: Dominik Brodowski
<linux@dominikbrodowski.net> Cc: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: Philippe Ombredanne
<pombredanne@nexb.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Luc Van
Oostenryck <luc.vanoostenryck@gmail.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedinit/initramfs.c (diff)
Commit 050c17f239fd53adb55aa768d4f41bc76c0fe045 by torvalds
numa: change get_mempolicy() to use nr_node_ids instead of MAX_NUMNODES
The system call, get_mempolicy() [1], passes an unsigned long *nodemask
pointer and an unsigned long maxnode argument which specifies the length
of the user's nodemask array in bits (which is rounded up).  The manual
page says that if the maxnode value is too small, get_mempolicy will
return EINVAL but there is no system call to return this minimum value.
To determine this value, some programs search /proc/<pid>/status for a
line starting with "Mems_allowed:" and use the number of digits in the
mask to determine the minimum value.  A recent change to the way this
line is formatted [2] causes these programs to compute a value less than
MAX_NUMNODES so get_mempolicy() returns EINVAL.
Change get_mempolicy(), the older compat version of get_mempolicy(), and
the copy_nodes_to_user() function to use nr_node_ids instead of
MAX_NUMNODES, thus preserving the defacto method of computing the
minimum size for the nodemask array and the maxnode argument.
[1] http://man7.org/linux/man-pages/man2/get_mempolicy.2.html
[2]
https://lore.kernel.org/lkml/1545405631-6808-1-git-send-email-longman@redhat.com
Link:
http://lkml.kernel.org/r/20190211180245.22295-1-rcampbell@nvidia.com
Fixes: 4fb8e5b89bcbbbb ("include/linux/nodemask.h: use nr_node_ids (not
MAX_NUMNODES) in __nodemask_pr_numnodes()") Signed-off-by: Ralph
Campbell <rcampbell@nvidia.com> Suggested-by: Alexander Duyck
<alexander.duyck@gmail.com> Cc: Waiman Long <longman@redhat.com> Cc:
<stable@vger.kernel.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/mempolicy.c (diff)
Commit e1db95befb3e9e3476629afec6e0f5d0707b9825 by torvalds
kasan: fix assigning tags twice
When an object is kmalloc()'ed, two hooks are called: kasan_slab_alloc()
and kasan_kmalloc().  Right now we assign a tag twice, once in each of
the hooks.  Fix it by assigning a tag only in the former hook.
Link:
http://lkml.kernel.org/r/ce8c6431da735aa7ec051fd6497153df690eb021.1549921721.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Cc: Alexander
Potapenko <glider@google.com> Cc: Andrey Ryabinin
<aryabinin@virtuozzo.com> Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Christoph Lameter <cl@linux.com> Cc: David Rientjes
<rientjes@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Evgeniy
Stepanov <eugenis@google.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Kostya Serebryany <kcc@google.com> Cc: Pekka Enberg
<penberg@kernel.org> Cc: Qian Cai <cai@lca.pw> Cc: Vincenzo Frascino
<vincenzo.frascino@arm.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/kasan/common.c (diff)
Commit 53128245b43daad600d9fe72940206570e064112 by torvalds
kasan, kmemleak: pass tagged pointers to kmemleak
Right now we call kmemleak hooks before assigning tags to pointers in
KASAN hooks.  As a result, when an objects gets allocated, kmemleak sees
a differently tagged pointer, compared to the one it sees when the
object gets freed.  Fix it by calling KASAN hooks before kmemleak's
ones.
Link:
http://lkml.kernel.org/r/cd825aa4897b0fc37d3316838993881daccbe9f5.1549921721.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Reported-by:
Qian Cai <cai@lca.pw> Cc: Alexander Potapenko <glider@google.com> Cc:
Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: Catalin Marinas
<catalin.marinas@arm.com> Cc: Christoph Lameter <cl@linux.com> Cc: David
Rientjes <rientjes@google.com> Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Evgeniy Stepanov <eugenis@google.com> Cc: Joonsoo Kim
<iamjoonsoo.kim@lge.com> Cc: Kostya Serebryany <kcc@google.com> Cc:
Pekka Enberg <penberg@kernel.org> Cc: Vincenzo Frascino
<vincenzo.frascino@arm.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/slab_common.c (diff)
The file was modifiedmm/slub.c (diff)
The file was modifiedmm/slab.h (diff)
Commit a2f775751d964e638818487544fa8320180d106e by torvalds
kmemleak: account for tagged pointers when calculating pointer range
kmemleak keeps two global variables, min_addr and max_addr, which store
the range of valid (encountered by kmemleak) pointer values, which it
later uses to speed up pointer lookup when scanning blocks.
With tagged pointers this range will get bigger than it needs to be.
This patch makes kmemleak untag pointers before saving them to min_addr
and max_addr and when performing a lookup.
Link:
http://lkml.kernel.org/r/16e887d442986ab87fe87a755815ad92fa431a5f.1550066133.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Tested-by: Qian
Cai <cai@lca.pw> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Cc:
Alexander Potapenko <glider@google.com> Cc: Andrey Ryabinin
<aryabinin@virtuozzo.com> Cc: Christoph Lameter <cl@linux.com> Cc: David
Rientjes <rientjes@google.com> Cc: Dmitry Vyukov <dvyukov@google.com>
Cc: Evgeniy Stepanov <eugenis@google.com> Cc: Joonsoo Kim
<iamjoonsoo.kim@lge.com> Cc: Kostya Serebryany <kcc@google.com> Cc:
Pekka Enberg <penberg@kernel.org> Cc: Vincenzo Frascino
<vincenzo.frascino@arm.com> 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)
The file was modifiedmm/slab_common.c (diff)
The file was modifiedmm/slab.h (diff)
The file was modifiedmm/slub.c (diff)
Commit a71012242837fe5e67d8c999cfc357174ed5dba0 by torvalds
kasan, slub: move kasan_poison_slab hook before page_address
With tag based KASAN page_address() looks at the page flags to see
whether the resulting pointer needs to have a tag set.  Since we don't
want to set a tag when page_address() is called on SLAB pages, we call
page_kasan_tag_reset() in kasan_poison_slab().  However in
allocate_slab() page_address() is called before kasan_poison_slab().
Fix it by changing the order.
[andreyknvl@google.com: fix compilation error when CONFIG_SLUB_DEBUG=n]
Link:
http://lkml.kernel.org/r/ac27cc0bbaeb414ed77bcd6671a877cf3546d56e.1550066133.git.andreyknvl@google.com
Link:
http://lkml.kernel.org/r/cd895d627465a3f1c712647072d17f10883be2a1.1549921721.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Cc: Alexander
Potapenko <glider@google.com> Cc: Andrey Ryabinin
<aryabinin@virtuozzo.com> Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Christoph Lameter <cl@linux.com> Cc: David Rientjes
<rientjes@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Evgeniy
Stepanov <eugenis@google.com> Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Cc: Kostya Serebryany <kcc@google.com> Cc: Pekka Enberg
<penberg@kernel.org> Cc: Qian Cai <cai@lca.pw> Cc: Vincenzo Frascino
<vincenzo.frascino@arm.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/slub.c (diff)
Commit 18e506610238eda2b0c5a19a123d3d6ec0ab2de6 by torvalds
kasan, slub: fix conflicts with CONFIG_SLAB_FREELIST_HARDENED
CONFIG_SLAB_FREELIST_HARDENED hashes freelist pointer with the address
of the object where the pointer gets stored.  With tag based KASAN we
don't account for that when building freelist, as we call
set_freepointer() with the first argument untagged.  This patch changes
the code to properly propagate tags throughout the loop.
Link:
http://lkml.kernel.org/r/3df171559c52201376f246bf7ce3184fe21c1dc7.1549921721.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Reported-by:
Qian Cai <cai@lca.pw> Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc:
Alexander Potapenko <glider@google.com> Cc: Dmitry Vyukov
<dvyukov@google.com> Cc: Catalin Marinas <catalin.marinas@arm.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: Vincenzo Frascino
<vincenzo.frascino@arm.com> Cc: Kostya Serebryany <kcc@google.com> Cc:
Evgeniy Stepanov <eugenis@google.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/slub.c (diff)
Commit d36a63a943e37081e92e4abdf4a207fd2e83a006 by torvalds
kasan, slub: fix more conflicts with CONFIG_SLAB_FREELIST_HARDENED
When CONFIG_KASAN_SW_TAGS is enabled, ptr_addr might be tagged.
Normally, this doesn't cause any issues, as both set_freepointer() and
get_freepointer() are called with a pointer with the same tag.  However,
there are some issues with CONFIG_SLUB_DEBUG code.  For example, when
__free_slub() iterates over objects in a cache, it passes untagged
pointers to check_object().  check_object() in turns calls
get_freepointer() with an untagged pointer, which causes the freepointer
to be restored incorrectly.
Add kasan_reset_tag to freelist_ptr(). Also add a detailed comment.
Link:
http://lkml.kernel.org/r/bf858f26ef32eb7bd24c665755b3aee4bc58d0e4.1550103861.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Reported-by:
Qian Cai <cai@lca.pw> Tested-by: Qian Cai <cai@lca.pw> 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/slub.c (diff)
Commit 338cfaad4993d3bc35a740e28981747770a65f90 by torvalds
slub: fix SLAB_CONSISTENCY_CHECKS + KASAN_SW_TAGS
Enabling SLUB_DEBUG's SLAB_CONSISTENCY_CHECKS with KASAN_SW_TAGS
triggers endless false positives during boot below due to
check_valid_pointer() checks tagged pointers which have no addresses
that is valid within slab pages:
  BUG radix_tree_node (Tainted: G    B            ): Freelist Pointer
check fails

-----------------------------------------------------------------------------
  INFO: Slab objects=69 used=69 fp=0x          (null)
flags=0x7ffffffc000200
INFO: Object @offset=15060037153926966016 fp=0x
  Redzone: bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb bb
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 18 6b 06 00 08 80 ff d0
.........k......
Object : 18 6b 06 00 08 80 ff d0 00 00 00 00 00 00 00 00
.k..............
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Object : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
................
Redzone: bb bb bb bb bb bb bb bb                          ........
Padding: 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a 5a
ZZZZZZZZZZZZZZZZ
CPU: 0 PID: 0 Comm: swapper/0 Tainted: G    B             5.0.0-rc5+
#18
Call trace:
   dump_backtrace+0x0/0x450
   show_stack+0x20/0x2c
   __dump_stack+0x20/0x28
   dump_stack+0xa0/0xfc
   print_trailer+0x1bc/0x1d0
   object_err+0x40/0x50
   alloc_debug_processing+0xf0/0x19c
   ___slab_alloc+0x554/0x704
   kmem_cache_alloc+0x2f8/0x440
   radix_tree_node_alloc+0x90/0x2fc
   idr_get_free+0x1e8/0x6d0
   idr_alloc_u32+0x11c/0x2a4
   idr_alloc+0x74/0xe0
   worker_pool_assign_id+0x5c/0xbc
   workqueue_init_early+0x49c/0xd50
   start_kernel+0x52c/0xac4
FIX radix_tree_node: Marking all objects used
Link: http://lkml.kernel.org/r/20190209044128.3290-1-cai@lca.pw
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> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/slub.c (diff)
Commit b2b469939e93458753cfbf8282ad52636495965e by torvalds
proc, oom: do not report alien mms when setting oom_score_adj
Tetsuo has reported that creating a thousands of processes sharing MM
without SIGHAND (aka alien threads) and setting
/proc/<pid>/oom_score_adj will swamp the kernel log and takes ages [1]
to finish.  This is especially worrisome that all that printing is done
under RCU lock and this can potentially trigger RCU stall or softlockup
detector.
The primary reason for the printk was to catch potential users who might
depend on the behavior prior to 44a70adec910 ("mm, oom_adj: make sure
processes sharing mm have same view of oom_score_adj") but after more
than 2 years without a single report I guess it is safe to simply remove
the printk altogether.
The next step should be moving oom_score_adj over to the mm struct and
remove all the tasks crawling as suggested by [2]
[1]
http://lkml.kernel.org/r/97fce864-6f75-bca5-14bc-12c9f890e740@i-love.sakura.ne.jp
[2] http://lkml.kernel.org/r/20190117155159.GA4087@dhcp22.suse.cz
Link: http://lkml.kernel.org/r/20190212102129.26288-1-mhocko@kernel.org
Signed-off-by: Michal Hocko <mhocko@suse.com> Reported-by: Tetsuo Handa
<penguin-kernel@i-love.sakura.ne.jp> Acked-by: Johannes Weiner
<hannes@cmpxchg.org> Cc: David Rientjes <rientjes@google.com> Cc:
Yong-Taek Lee <ytk.lee@samsung.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/base.c (diff)
Commit 311ade0eab192f0abee2f70bce761bf0d66990c4 by torvalds
mm/debug.c: fix __dump_page() for poisoned pages
Evaluating page_mapping() on a poisoned page ends up dereferencing junk
and making PF_POISONED_CHECK() considerably crashier than intended:
    Unable to handle kernel NULL pointer dereference at virtual address
0000000000000006
   Mem abort info:
     ESR = 0x96000005
     Exception class = DABT (current EL), IL = 32 bits
     SET = 0, FnV = 0
     EA = 0, S1PTW = 0
   Data abort info:
     ISV = 0, ISS = 0x00000005
     CM = 0, WnR = 0
   user pgtable: 4k pages, 39-bit VAs, pgdp = 00000000c2f6ac38
   [0000000000000006] pgd=0000000000000000, pud=0000000000000000
   Internal error: Oops: 96000005 [#1] PREEMPT SMP
   Modules linked in:
   CPU: 2 PID: 491 Comm: bash Not tainted 5.0.0-rc1+ #1
   Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno
Development Platform, BIOS EDK II Dec 17 2018
   pstate: 00000005 (nzcv daif -PAN -UAO)
   pc : page_mapping+0x18/0x118
   lr : __dump_page+0x1c/0x398
   Process bash (pid: 491, stack limit = 0x000000004ebd4ecd)
   Call trace:
    page_mapping+0x18/0x118
    __dump_page+0x1c/0x398
    dump_page+0xc/0x18
    remove_store+0xbc/0x120
    dev_attr_store+0x18/0x28
    sysfs_kf_write+0x40/0x50
    kernfs_fop_write+0x130/0x1d8
    __vfs_write+0x30/0x180
    vfs_write+0xb4/0x1a0
    ksys_write+0x60/0xd0
    __arm64_sys_write+0x18/0x20
    el0_svc_common+0x94/0xf8
    el0_svc_handler+0x68/0x70
    el0_svc+0x8/0xc
   Code: f9400401 d1000422 f240003f 9a801040 (f9400402)
   ---[ end trace cdb5eb5bf435cecb ]---
Fix that by not inspecting the mapping until we've determined that it's
likely to be valid.  Now the above condition still ends up stopping the
kernel, but in the correct manner:
    page:ffffffbf20000000 is uninitialized and poisoned
   raw: ffffffffffffffff ffffffffffffffff ffffffffffffffff
ffffffffffffffff
   raw: ffffffffffffffff ffffffffffffffff ffffffffffffffff
ffffffffffffffff
   page dumped because: VM_BUG_ON_PAGE(PagePoisoned(p))
   ------------[ cut here ]------------
   kernel BUG at ./include/linux/mm.h:1006!
   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
   Modules linked in:
   CPU: 1 PID: 483 Comm: bash Not tainted 5.0.0-rc1+ #3
   Hardware name: ARM LTD ARM Juno Development Platform/ARM Juno
Development Platform, BIOS EDK II Dec 17 2018
   pstate: 40000005 (nZcv daif -PAN -UAO)
   pc : remove_store+0xbc/0x120
   lr : remove_store+0xbc/0x120
   ...
Link:
http://lkml.kernel.org/r/03b53ee9d7e76cda4b9b5e1e31eea080db033396.1550071778.git.robin.murphy@arm.com
Fixes: 1c6fb1d89e73 ("mm: print more information about mapping in
__dump_page") Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Acked-by: Michal Hocko <mhocko@suse.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/debug.c (diff)
Commit 94b3334cbebea34d56a7e6321c6fe9d89b309a49 by torvalds
mm, page_alloc: fix a division by zero error when boosting watermarks v2
Yury Norov reported that an arm64 KVM instance could not boot since
after v5.0-rc1 and could addressed by reverting the patches
  1c30844d2dfe272d58c ("mm: reclaim small amounts of memory when an
external
73444bc4d8f92e46a20 ("mm, page_alloc: do not wake kswapd with zone lock
held")
The problem is that a division by zero error is possible if boosting
occurs very early in boot if the system has very little memory.  This
patch avoids the division by zero error.
Link: http://lkml.kernel.org/r/20190213143012.GT9565@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: Yury Norov
<yury.norov@gmail.com> Tested-by: Yury Norov <yury.norov@gmail.com>
Tested-by: Will Deacon <will.deacon@arm.com> Acked-by: Vlastimil Babka
<vbabka@suse.cz> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: David
Rientjes <rientjes@google.com> Cc: Michal Hocko <mhocko@kernel.org> Cc:
Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/page_alloc.c (diff)
Commit 6ea183d60c469560e7b08a83c9804299e84ec9eb by torvalds
mm: handle lru_add_drain_all for UP properly
Since for_each_cpu(cpu, mask) added by commit 2d3854a37e8b767a
("cpumask: introduce new API, without changing anything") did not
evaluate the mask argument if NR_CPUS == 1 due to CONFIG_SMP=n,
lru_add_drain_all() is hitting WARN_ON() at __flush_work() added by
commit 4d43d395fed12463 ("workqueue: Try to catch flush_work() without
INIT_WORK().") by unconditionally calling flush_work() [1].
Workaround this issue by using CONFIG_SMP=n specific lru_add_drain_all
implementation.  There is no real need to defer the implementation to
the workqueue as the draining is going to happen on the local cpu.  So
alias lru_add_drain_all to lru_add_drain which does all the necessary
work.
[akpm@linux-foundation.org: fix various build warnings]
[1]
https://lkml.kernel.org/r/18a30387-6aa5-6123-e67c-57579ecc3f38@roeck-us.net
Link: http://lkml.kernel.org/r/20190213124334.GH4525@dhcp22.suse.cz
Signed-off-by: Michal Hocko <mhocko@suse.com> Reported-by: Guenter Roeck
<linux@roeck-us.net> Debugged-by: Tetsuo Handa
<penguin-kernel@I-love.SAKURA.ne.jp> 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 modifiedmm/swap.c (diff)
Commit 4e37504d1c49eec6434d0cc97278d2b51c9e8763 by torvalds
psi: avoid divide-by-zero crash inside virtual machines
We've been seeing hard-to-trigger psi crashes when running inside VM
instances:
    divide error: 0000 [#1] SMP PTI
   Modules linked in: [...]
   CPU: 0 PID: 212 Comm: kworker/0:2 Not tainted
4.16.18-119_fbk9_3817_gfe944c98d695 #119
   Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 0.0.0
02/06/2015
   Workqueue: events psi_clock
   RIP: 0010:psi_update_stats+0x270/0x490
   RSP: 0018:ffffc90001117e10 EFLAGS: 00010246
   RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff8800a35a13f8
   RDX: 0000000000000000 RSI: ffff8800a35a1340 RDI: 0000000000000000
   RBP: 0000000000000658 R08: ffff8800a35a1470 R09: 0000000000000000
   R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
   R13: 0000000000000000 R14: 0000000000000000 R15: 00000000000f8502
   FS:  0000000000000000(0000) GS:ffff88023fc00000(0000)
knlGS:0000000000000000
   CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
   CR2: 00007fbe370fa000 CR3: 00000000b1e3a000 CR4: 00000000000006f0
   DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
   DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
   Call Trace:
    psi_clock+0x12/0x50
    process_one_work+0x1e0/0x390
    worker_thread+0x2b/0x3c0
    ? rescuer_thread+0x330/0x330
    kthread+0x113/0x130
    ? kthread_create_worker_on_cpu+0x40/0x40
    ? SyS_exit_group+0x10/0x10
    ret_from_fork+0x35/0x40
   Code: 48 0f 47 c7 48 01 c2 45 85 e4 48 89 16 0f 85 e6 00 00 00 4c 8b
49 10 4c 8b 51 08 49 69 d9 f2 07 00 00 48 6b c0 64 4c 8b 29 31 d2 <48>
f7 f7 49 69 d5 8d 06 00 00 48 89 c5 4c 69 f0 00 98 0b 00 48
The Code-line points to `period` being 0 inside update_stats(), and we
divide by that when calculating that period's pressure percentage.
The elapsed period should never be 0.  The reason this can happen is due
to an off-by-one in the idle time / missing period calculation combined
with a coarse sched_clock() in the virtual machine.
The target time for aggregation is advanced into the future on a fixed
grid to prevent clock drift.  So when an aggregation runs after some
idle period, we can not just set it to "now + psi_period", but have to
calculate the downtime and advance the target time relative to itself.
However, if the aggregator was disabled exactly one psi_period (ns), we
drop one idle period in the calculation due to a > when we should do >=.
In that case, next_update will be advanced from 'now - psi_period' to
'now' when it should be moved to 'now + psi_period'.  The run finishes
with last_update == next_update == sched_clock().
With hardware clocks, this exact nanosecond match isn't likely in the
first place; but if it does happen, the clock will still have moved on
and the period non-zero by the time the worker runs.  A pointlessly
short period, but besides the extra work, no harm no foul.  However, a
slow sched_clock() like we have on VMs might not have advanced either by
the time the worker runs again.  And when we calculate the elapsed
period, the result, our pressure divisor, will be 0.  Ouch.
Fix this by correctly handling the situation when the elapsed time
between aggregation runs is precisely two periods, and advance the
expiration timestamp correctly to period into the future.
Link: http://lkml.kernel.org/r/20190214193157.15788-1-hannes@cmpxchg.org
Signed-off-by: Johannes Weiner <hannes@cmpxchg.org> Reported-by: Łukasz
Siudut <lsiudut@fb.com Reviewed-by: Andrew Morton
<akpm@linux-foundation.org> 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/sched/psi.c (diff)
Commit 1062af920c07f5b54cf5060fde3339da6df0cf6b by torvalds
tmpfs: fix link accounting when a tmpfile is linked in
tmpfs has a peculiarity of accounting hard links as if they were
separate inodes: so that when the number of inodes is limited, as it is
by default, a user cannot soak up an unlimited amount of unreclaimable
dcache memory just by repeatedly linking a file.
But when v3.11 added O_TMPFILE, and the ability to use linkat() on the
fd, we missed accommodating this new case in tmpfs: "df -i" shows that
an extra "inode" remains accounted after the file is unlinked and the fd
closed and the actual inode evicted.  If a user repeatedly links
tmpfiles into a tmpfs, the limit will be hit (ENOSPC) even after they
are deleted.
Just skip the extra reservation from shmem_link() in this case: there's
a sense in which this first link of a tmpfile is then cheaper than a
hard link of another file, but the accounting works out, and there's
still good limiting, so no need to do anything more complicated.
Link:
http://lkml.kernel.org/r/alpine.LSU.2.11.1902182134370.7035@eggly.anvils
Fixes: f4e0c30c191 ("allow the temp files created by open() to be linked
to") Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Hugh Dickins <hughd@google.com> Reported-by: Matej
Kupljen <matej.kupljen@gmail.com> Acked-by: Al Viro
<viro@zeniv.linux.org.uk> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/shmem.c (diff)
Commit 3f41b609382388f95c0a05b69b8db0d706adafb4 by torvalds
kasan: fix random seed generation for tag-based mode
There are two issues with assigning random percpu seeds right now:
1. We use for_each_possible_cpu() to iterate over cpus, but cpumask is
  not set up yet at the moment of kasan_init(), and thus we only set
  the seed for cpu #0.
2. A call to get_random_u32() always returns the same number and
produces
  a message in dmesg, since the random subsystem is not yet initialized.
Fix 1 by calling kasan_init_tags() after cpumask is set up.
Fix 2 by using get_cycles() instead of get_random_u32(). This gives us
lower quality random numbers, but it's good enough, as KASAN is meant to
be used as a debugging tool and not a mitigation.
Link:
http://lkml.kernel.org/r/1f815cc914b61f3516ed4cc9bfd9eeca9bd5d9de.1550677973.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Cc: Catalin
Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.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/kasan/tags.c (diff)
The file was modifiedarch/arm64/mm/kasan_init.c (diff)
The file was modifiedarch/arm64/kernel/setup.c (diff)
Commit dc15a8a2543cb9ebe67998eefe2880ce1a20d42e by torvalds
kasan: prevent tracing of tags.c
Similarly to commit 0d0c8de8788b ("kasan: mark file common so ftrace
doesn't trace it") add the -pg flag to mm/kasan/tags.c to prevent
conflicts with tracing.
Link:
http://lkml.kernel.org/r/9c4c3ce5ccfb894c7fe66d91de7c1da2787b4da4.1550602886.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Reported-by:
Qian Cai <cai@lca.pw> Tested-by: Qian Cai <cai@lca.pw> Cc: Andrey
Ryabinin <aryabinin@virtuozzo.com> Cc: Alexander Potapenko
<glider@google.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc: Catalin
Marinas <catalin.marinas@arm.com> Cc: Vincenzo Frascino
<vincenzo.frascino@arm.com> Cc: Kostya Serebryany <kcc@google.com> Cc:
Evgeniy Stepanov <eugenis@google.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/kasan/Makefile (diff)
Commit 219667c23c68eb3dbc0d5662b9246f28477fe529 by torvalds
kasan, slab: fix conflicts with CONFIG_HARDENED_USERCOPY
Similarly to commit 96fedce27e13 ("kasan: make tag based mode work with
CONFIG_HARDENED_USERCOPY"), we need to reset pointer tags in
__check_heap_object() in mm/slab.c before doing any pointer math.
Link:
http://lkml.kernel.org/r/9a5c0f958db10e69df5ff9f2b997866b56b7effc.1550602886.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Tested-by: Qian
Cai <cai@lca.pw> Cc: Alexander Potapenko <glider@google.com> Cc: Andrey
Ryabinin <aryabinin@virtuozzo.com> Cc: Catalin Marinas
<catalin.marinas@arm.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc:
Evgeniy Stepanov <eugenis@google.com> Cc: Kostya Serebryany
<kcc@google.com> Cc: Vincenzo Frascino <vincenzo.frascino@arm.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 51dedad06b5f6c3eea7ec1069631b1ef7796912a by torvalds
kasan, slab: make freelist stored without tags
Similarly to "kasan, slub: move kasan_poison_slab hook before
page_address", move kasan_poison_slab() before alloc_slabmgmt(), which
calls page_address(), to make page_address() return value to be
non-tagged.  This, combined with calling kasan_reset_tag() for off-slab
slab management object, leads to freelist being stored non-tagged.
Link:
http://lkml.kernel.org/r/dfb53b44a4d00de3879a05a9f04c1f55e584f7a1.1550602886.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Tested-by: Qian
Cai <cai@lca.pw> Cc: Alexander Potapenko <glider@google.com> Cc: Andrey
Ryabinin <aryabinin@virtuozzo.com> Cc: Catalin Marinas
<catalin.marinas@arm.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc:
Evgeniy Stepanov <eugenis@google.com> Cc: Kostya Serebryany
<kcc@google.com> Cc: Vincenzo Frascino <vincenzo.frascino@arm.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 557ea25383a231fe3ffc72881ada35c24b960dbc by torvalds
kasan, slab: remove redundant kasan_slab_alloc hooks
kasan_slab_alloc() calls in kmem_cache_alloc() and
kmem_cache_alloc_node() are redundant as they are already called via
slab_alloc/slab_alloc_node()->
slab_post_alloc_hook()->kasan_slab_alloc().  Remove them.
Link:
http://lkml.kernel.org/r/4ca1655cdcfc4379c49c50f7bf80f81c4ad01485.1550602886.git.andreyknvl@google.com
Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Tested-by: Qian
Cai <cai@lca.pw> Cc: Alexander Potapenko <glider@google.com> Cc: Andrey
Ryabinin <aryabinin@virtuozzo.com> Cc: Catalin Marinas
<catalin.marinas@arm.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc:
Evgeniy Stepanov <eugenis@google.com> Cc: Kostya Serebryany
<kcc@google.com> Cc: Vincenzo Frascino <vincenzo.frascino@arm.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 6373dca16c911b2828ef8d836d7f6f1800e1bbbc by torvalds
slub: fix a crash with SLUB_DEBUG + KASAN_SW_TAGS
In process_slab(), "p = get_freepointer()" could return a tagged
pointer, but "addr = page_address()" always return a native pointer.  As
the result, slab_index() is messed up here,
    return (p - addr) / s->size;
All other callers of slab_index() have the same situation where "addr"
is from page_address(), so just need to untag "p".
    # cat /sys/kernel/slab/hugetlbfs_inode_cache/alloc_calls
    Unable to handle kernel paging request at virtual address
2bff808aa4856d48
   Mem abort info:
     ESR = 0x96000007
     Exception class = DABT (current EL), IL = 32 bits
     SET = 0, FnV = 0
     EA = 0, S1PTW = 0
   Data abort info:
     ISV = 0, ISS = 0x00000007
     CM = 0, WnR = 0
   swapper pgtable: 64k pages, 48-bit VAs, pgdp = 0000000002498338
   [2bff808aa4856d48] pgd=00000097fcfd0003, pud=00000097fcfd0003,
pmd=00000097fca30003, pte=00e8008b24850712
   Internal error: Oops: 96000007 [#1] SMP
   CPU: 3 PID: 79210 Comm: read_all Tainted: G             L  
5.0.0-rc7+ #84
   Hardware name: HPE Apollo 70             /C01_APACHE_MB         ,
BIOS L50_5.13_1.0.6 07/10/2018
   pstate: 00400089 (nzcv daIf +PAN -UAO)
   pc : get_map+0x78/0xec
   lr : get_map+0xa0/0xec
   sp : aeff808989e3f8e0
   x29: aeff808989e3f940 x28: ffff800826200000
   x27: ffff100012d47000 x26: 9700000000002500
   x25: 0000000000000001 x24: 52ff8008200131f8
   x23: 52ff8008200130a0 x22: 52ff800820013098
   x21: ffff800826200000 x20: ffff100013172ba0
   x19: 2bff808a8971bc00 x18: ffff1000148f5538
   x17: 000000000000001b x16: 00000000000000ff
   x15: ffff1000148f5000 x14: 00000000000000d2
   x13: 0000000000000001 x12: 0000000000000000
   x11: 0000000020000002 x10: 2bff808aa4856d48
   x9 : 0000020000000000 x8 : 68ff80082620ebb0
   x7 : 0000000000000000 x6 : ffff1000105da1dc
   x5 : 0000000000000000 x4 : 0000000000000000
   x3 : 0000000000000010 x2 : 2bff808a8971bc00
   x1 : ffff7fe002098800 x0 : ffff80082620ceb0
   Process read_all (pid: 79210, stack limit = 0x00000000f65b9361)
   Call trace:
    get_map+0x78/0xec
    process_slab+0x7c/0x47c
    list_locations+0xb0/0x3c8
    alloc_calls_show+0x34/0x40
    slab_attr_show+0x34/0x48
    sysfs_kf_seq_show+0x2e4/0x570
    kernfs_seq_show+0x12c/0x1a0
    seq_read+0x48c/0xf84
    kernfs_fop_read+0xd4/0x448
    __vfs_read+0x94/0x5d4
    vfs_read+0xcc/0x194
    ksys_read+0x6c/0xe8
    __arm64_sys_read+0x68/0xb0
    el0_svc_handler+0x230/0x3bc
    el0_svc+0x8/0xc
   Code: d3467d2a 9ac92329 8b0a0e6a f9800151 (c85f7d4b)
   ---[ end trace a383a9a44ff13176 ]---
   Kernel panic - not syncing: Fatal exception
   SMP: stopping secondary CPUs
   SMP: failed to stop secondary CPUs 1-7,32,40,127
   Kernel Offset: disabled
   CPU features: 0x002,20000c18
   Memory Limit: none
   ---[ end Kernel panic - not syncing: Fatal exception ]---
Link: http://lkml.kernel.org/r/20190220020251.82039-1-cai@lca.pw
Signed-off-by: Qian Cai <cai@lca.pw> Reviewed-by: Andrey Konovalov
<andreyknvl@google.com> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/slub.c (diff)
Commit 6c8fcc096be9d02f478c508052a41a4430506ab3 by torvalds
mm: don't let userspace spam allocations warnings
memdump_user usually gets fed unchecked userspace input.  Blasting a
full backtrace into dmesg every time is a bit excessive - I'm not sure
on the kernel rule in general, but at least in drm we're trying not to
let unpriviledge userspace spam the logs freely.  Definitely not entire
warning backtraces.
It also means more filtering for our CI, because our testsuite exercises
these corner cases and so hits these a lot.
Link:
http://lkml.kernel.org/r/20190220204058.11676-1-daniel.vetter@ffwll.ch
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Reviewed-by:
Andrew Morton <akpm@linux-foundation.org> Acked-by: Michal Hocko
<mhocko@suse.com> Reviewed-by: Kees Cook <keescook@chromium.org> Cc:
Mike Rapoport <rppt@linux.vnet.ibm.com> Cc: Roman Gushchin <guro@fb.com>
Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Jan Stancek
<jstancek@redhat.com> Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc:
"Michael S. Tsirkin" <mst@redhat.com> Cc: Huang Ying
<ying.huang@intel.com> Cc: Bartosz Golaszewski <brgl@bgdev.pl>
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 891cb2a72d821f930a39d5900cb7a3aa752c1d5b by torvalds
mm, memory_hotplug: fix off-by-one in is_pageblock_removable
Rong Chen has reported the following boot crash:
    PGD 0 P4D 0
   Oops: 0000 [#1] PREEMPT SMP PTI
   CPU: 1 PID: 239 Comm: udevd Not tainted 5.0.0-rc4-00149-gefad4e4 #1
   Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1
04/01/2014
   RIP: 0010:page_mapping+0x12/0x80
   Code: 5d c3 48 89 df e8 0e ad 02 00 85 c0 75 da 89 e8 5b 5d c3 0f 1f
44 00 00 53 48 89 fb 48 8b 43 08 48 8d 50 ff a8 01 48 0f 45 da <48> 8b
53 08 48 8d 42 ff 83 e2 01 48 0f 44 c3 48 83 38 ff 74 2f 48
   RSP: 0018:ffff88801fa87cd8 EFLAGS: 00010202
   RAX: ffffffffffffffff RBX: fffffffffffffffe RCX: 000000000000000a
   RDX: fffffffffffffffe RSI: ffffffff820b9a20 RDI: ffff88801e5c0000
   RBP: 6db6db6db6db6db7 R08: ffff88801e8bb000 R09: 0000000001b64d13
   R10: ffff88801fa87cf8 R11: 0000000000000001 R12: ffff88801e640000
   R13: ffffffff820b9a20 R14: ffff88801f145258 R15: 0000000000000001
   FS:  00007fb2079817c0(0000) GS:ffff88801dd00000(0000)
knlGS:0000000000000000
   CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
   CR2: 0000000000000006 CR3: 000000001fa82000 CR4: 00000000000006a0
   Call Trace:
    __dump_page+0x14/0x2c0
    is_mem_section_removable+0x24c/0x2c0
    removable_show+0x87/0xa0
    dev_attr_show+0x25/0x60
    sysfs_kf_seq_show+0xba/0x110
    seq_read+0x196/0x3f0
    __vfs_read+0x34/0x180
    vfs_read+0xa0/0x150
    ksys_read+0x44/0xb0
    do_syscall_64+0x5e/0x4a0
    entry_SYSCALL_64_after_hwframe+0x49/0xbe
and bisected it down to commit efad4e475c31 ("mm, memory_hotplug:
is_mem_section_removable do not pass the end of a zone").
The reason for the crash is that the mapping is garbage for poisoned
(uninitialized) page.  This shouldn't happen as all pages in the zone's
boundary should be initialized.
Later debugging revealed that the actual problem is an off-by-one when
evaluating the end_page.  'start_pfn + nr_pages' resp 'zone_end_pfn'
refers to a pfn after the range and as such it might belong to a
differen memory section.
This along with CONFIG_SPARSEMEM then makes the loop condition
completely bogus because a pointer arithmetic doesn't work for pages
from two different sections in that memory model.
Fix the issue by reworking is_pageblock_removable to be pfn based and
only use struct page where necessary.  This makes the code slightly
easier to follow and we will remove the problematic pointer arithmetic
completely.
Link: http://lkml.kernel.org/r/20190218181544.14616-1-mhocko@kernel.org
Fixes: efad4e475c31 ("mm, memory_hotplug: is_mem_section_removable do
not pass the end of a zone") Signed-off-by: Michal Hocko
<mhocko@suse.com> Reported-by: <rong.a.chen@intel.com> Tested-by:
<rong.a.chen@intel.com> Acked-by: Mike Rapoport <rppt@linux.ibm.com>
Reviewed-by: Oscar Salvador <osalvador@suse.de> Cc: Matthew Wilcox
<willy@infradead.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 193f3685d0546b0cea20c99894aadb70098e47bf by davem
ipv6: route: enforce RCU protection in rt6_update_exception_stamp_rt()
We must access rt6_info->from under RCU read lock: move the dereference
under such lock, with proper annotation.
v1 -> v2:
- avoid using multiple, racy, fetch operations for rt->from
Fixes: a68886a69180 ("net/ipv6: Make from in rt6_info rcu protected")
Signed-off-by: Paolo Abeni <pabeni@redhat.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 bf1dc8bad1d42287164d216d8efb51c5cd381b18 by davem
ipv6: route: enforce RCU protection in ip6_route_check_nh_onlink()
We need a RCU critical section around rt6_info->from deference, and
proper annotation.
Fixes: 4ed591c8ab44 ("net/ipv6: Allow onlink routes to have a device
mismatch if it is the default route") Signed-off-by: Paolo Abeni
<pabeni@redhat.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 d7cf4a3bf3a83c977a29055e1c4ffada7697b31f by davem
net/smc: fix smc_poll in SMC_INIT state
smc_poll() returns with mask bit EPOLLPRI if the connection urg_state is
SMC_URG_VALID. Since SMC_URG_VALID is zero, smc_poll signals EPOLLPRI
errorneously if called in state SMC_INIT before the connection is
created, for instance in a non-blocking connect scenario.
This patch switches to non-zero values for the urg states.
Reviewed-by: Karsten Graul <kgraul@linux.ibm.com> Fixes: de8474eb9d50
("net/smc: urgent data support") Signed-off-by: Ursula Braun
<ubraun@linux.ibm.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/smc/smc.h (diff)
Commit 156a67a9065e3339be85f811d1b13b920e50d73b by jeffrey.t.kirsher
ixgbe: fix older devices that do not support IXGBE_MRQC_L3L4TXSWEN
The enabling L3/L4 filtering for transmit switched packets for all
devices caused unforeseen issue on older devices when trying to send UDP
traffic in an ordered sequence.  This bit was originally intended for
X550 devices, which supported this feature, so limit the scope of this
bit to only X550 devices.
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Tested-by:
Andrew Bowers <andrewx.bowers@intel.com>
The file was modifieddrivers/net/ethernet/intel/ixgbe/ixgbe_main.c (diff)
Commit 14ffeb52f3693ae0b674e59453452a2365ae9fd9 by jeffrey.t.kirsher
i40e: fix potential RX buffer starvation for AF_XDP
When the RX rings are created they are also populated with buffers so
that packets can be received. Usually these are kernel buffers, but for
AF_XDP in zero-copy mode, these are user-space buffers and in this case
the application might not have sent down any buffers to the driver at
this point. And if no buffers are allocated at ring creation time, no
packets can be received and no interrupts will be generated so the NAPI
poll function that allocates buffers to the rings will never get
executed.
To rectify this, we kick the NAPI context of any queue with an attached
AF_XDP zero-copy socket in two places in the code. Once after an XDP
program has loaded and once after the umem is registered. This take care
of both cases: XDP program gets loaded first then AF_XDP socket is
created, and the reverse, AF_XDP socket is created first, then XDP
program is loaded.
Fixes: 0a714186d3c0 ("i40e: add AF_XDP zero-copy Rx support")
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com> Tested-by:
Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher
<jeffrey.t.kirsher@intel.com>
The file was modifieddrivers/net/ethernet/intel/i40e/i40e_main.c (diff)
The file was modifieddrivers/net/ethernet/intel/i40e/i40e_xsk.c (diff)
Commit 4a9b32f30f805ca596d76605903a48eab58e0b88 by jeffrey.t.kirsher
ixgbe: fix potential RX buffer starvation for AF_XDP
When the RX rings are created they are also populated with buffers so
that packets can be received. Usually these are kernel buffers, but for
AF_XDP in zero-copy mode, these are user-space buffers and in this case
the application might not have sent down any buffers to the driver at
this point. And if no buffers are allocated at ring creation time, no
packets can be received and no interrupts will be generated so the NAPI
poll function that allocates buffers to the rings will never get
executed.
To rectify this, we kick the NAPI context of any queue with an attached
AF_XDP zero-copy socket in two places in the code. Once after an XDP
program has loaded and once after the umem is registered.  This take
care of both cases: XDP program gets loaded first then AF_XDP socket is
created, and the reverse, AF_XDP socket is created first, then XDP
program is loaded.
Fixes: d0bcacd0a130 ("ixgbe: add AF_XDP zero-copy Rx support")
Signed-off-by: Magnus Karlsson <magnus.karlsson@intel.com> Tested-by:
Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher
<jeffrey.t.kirsher@intel.com>
The file was modifieddrivers/net/ethernet/intel/ixgbe/ixgbe_main.c (diff)
The file was modifieddrivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c (diff)
Commit 252f6e8eae909bc075a1b1e3b9efb095ae4c0b56 by vgupta
ARCv2: Enable unaligned access in early ASM code
It is currently done in arc_init_IRQ() which might be too late
considering gcc 7.3.1 onwards (GNU 2018.03) generates unaligned memory
accesses by default
Cc: stable@vger.kernel.org #4.4+ Signed-off-by: Eugeniy Paltsev
<Eugeniy.Paltsev@synopsys.com> Signed-off-by: Vineet Gupta
<vgupta@synopsys.com>
[vgupta: rewrote changelog]
The file was modifiedarch/arc/kernel/head.S (diff)
Commit f8a15f97664178f27dfbf86a38f780a532cb6df0 by vgupta
ARCv2: lib: memcpy: fix doing prefetchw outside of buffer
ARCv2 optimized memcpy uses PREFETCHW instruction for prefetching the
next cache line but doesn't ensure that the line is not past the end of
the buffer. PRETECHW changes the line ownership and marks it dirty,
which can cause data corruption if this area is used for DMA IO.
Fix the issue by avoiding the PREFETCHW. This leads to performance
degradation but it is OK as we'll introduce new memcpy implementation
optimized for unaligned memory access using.
We also cut off all PREFETCH instructions at they are quite useless
here:
* we call PREFETCH right before LOAD instruction call.
* we copy 16 or 32 bytes of data (depending on CONFIG_ARC_HAS_LL64)
  in a main logical loop. so we call PREFETCH 4 times (or 2 times)
  for each L1 cache line (in case of 64B L1 cache Line which is
  default case). Obviously this is not optimal.
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
The file was modifiedarch/arc/lib/memcpy-archs.S (diff)
Commit cdf92962adb0cb23efc3c8bcf6465d16ab7c3a81 by vgupta
ARC: fix actionpoints configuration detection
Fix reversed logic while actionpoints configuration (full/min)
detection.
Fixies: 7dd380c338f1e ("ARC: boot log: print Action point details")
Signed-off-by: Eugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
The file was modifiedarch/arc/kernel/setup.c (diff)
Commit d5e3c55e01d8b1774b37b4647c30fb22f1d39077 by vgupta
ARC: uacces: remove lp_start, lp_end from clobber list
Newer ARC gcc handles lp_start, lp_end in a different way and doesn't
like them in the clobber list.
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
The file was modifiedarch/arc/include/asm/uaccess.h (diff)
Commit e494239a007e601448110ac304fe055951f9de3b by vgupta
ARCv2: support manual regfile save on interrupts
There's a hardware bug which affects the HSDK platform, triggered by
micro-ops for auto-saving regfile on taken interrupt. The workaround is
to inhibit autosave.
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
The file was modifiedarch/arc/kernel/intc-arcv2.c (diff)
The file was modifiedarch/arc/Kconfig (diff)
The file was modifiedarch/arc/kernel/entry-arcv2.S (diff)
The file was modifiedarch/arc/include/asm/entry-arcv2.h (diff)
The file was modifiedarch/arc/plat-hsdk/Kconfig (diff)
Commit a66f2e57bd566240d8b3884eedf503928fbbe557 by vgupta
ARC: U-boot: check arguments paranoidly
Handle U-boot arguments paranoidly:
* don't allow to pass unknown tag.
* try to use external device tree blob only if corresponding tag
  (TAG_DTB) is set.
* don't check uboot_tag if kernel build with no ARC_UBOOT_SUPPORT.
NOTE: If U-boot args are invalid we skip them and try to use embedded
device tree blob. We can't panic on invalid U-boot args as we really
pass invalid args due to bug in U-boot code. This happens if we don't
provide external DTB to U-boot and don't set 'bootargs' U-boot
environment variable (which is default case at least for HSDK board) In
that case we will pass
{r0 = 1 (bootargs in r2); r1 = 0; r2 = 0;} to linux which is invalid.
While I'm at it refactor U-boot arguments handling code.
Cc: stable@vger.kernel.org Tested-by: Corentin LABBE
<clabbe@baylibre.com> Signed-off-by: Eugeniy Paltsev
<Eugeniy.Paltsev@synopsys.com> Signed-off-by: Vineet Gupta
<vgupta@synopsys.com>
The file was modifiedarch/arc/kernel/setup.c (diff)
The file was modifiedarch/arc/kernel/head.S (diff)
Commit 493a2f812446e92bcb1e69a77381b4d39808d730 by vgupta
ARC: enable uboot support unconditionally
After reworking U-boot args handling code and adding paranoid arguments
check we can eliminate CONFIG_ARC_UBOOT_SUPPORT and enable uboot support
unconditionally.
For JTAG case we can assume that core registers will come up reset value
of 0 or in worst case we rely on user passing
'-on=clear_regs' to Metaware debugger.
Cc: stable@vger.kernel.org Tested-by: Corentin LABBE
<clabbe@baylibre.com> Signed-off-by: Eugeniy Paltsev
<Eugeniy.Paltsev@synopsys.com> Signed-off-by: Vineet Gupta
<vgupta@synopsys.com>
The file was modifiedarch/arc/kernel/head.S (diff)
The file was modifiedarch/arc/configs/vdk_hs38_defconfig (diff)
The file was modifiedarch/arc/kernel/setup.c (diff)
The file was modifiedarch/arc/configs/nps_defconfig (diff)
The file was modifiedarch/arc/configs/vdk_hs38_smp_defconfig (diff)
The file was modifiedarch/arc/Kconfig (diff)
Commit b6835ea77729e7faf4656ca637ba53f42b8ee3fd by vgupta
ARC: define ARCH_SLAB_MINALIGN = 8
The default value of ARCH_SLAB_MINALIGN in "include/linux/slab.h" is
"__alignof__(unsigned long long)" which for ARC unexpectedly turns out
to be 4. This is not a compiler bug, but as defined by ARC ABI [1]
Thus slab allocator would allocate a struct which is 32-bit aligned,
which is generally OK even if struct has long long members. There was
however potetial problem when it had any atomic64_t which use
LLOCKD/SCONDD instructions which are required by ISA to take 64-bit
addresses. This is the problem we ran into
[    4.015732] EXT4-fs (mmcblk0p2): re-mounted. Opts: (null)
[    4.167881] Misaligned Access
[    4.172356] Path: /bin/busybox.nosuid
[    4.176004] CPU: 2 PID: 171 Comm: rm Not tainted
4.19.14-yocto-standard #1
[    4.182851]
[    4.182851] [ECR   ]: 0x000d0000 => Check Programmer's Manual
[    4.190061] [EFA   ]: 0xbeaec3fc
[    4.190061] [BLINK ]: ext4_delete_entry+0x210/0x234
[    4.190061] [ERET  ]: ext4_delete_entry+0x13e/0x234
[    4.202985] [STAT32]: 0x80080002 : IE K
[    4.207236] BTA: 0x9009329c   SP: 0xbe5b1ec4  FP: 0x00000000
[    4.212790] LPS: 0x9074b118  LPE: 0x9074b120 LPC: 0x00000000
[    4.218348] r00: 0x00000040  r01: 0x00000021 r02: 0x00000001
...
...
[    4.270510] Stack Trace:
[    4.274510]   ext4_delete_entry+0x13e/0x234
[    4.278695]   ext4_rmdir+0xe0/0x238
[    4.282187]   vfs_rmdir+0x50/0xf0
[    4.285492]   do_rmdir+0x9e/0x154
[    4.288802]   EV_Trap+0x110/0x114
The fix is to make sure slab allocations are 64-bit aligned.
Do note that atomic64_t is __attribute__((aligned(8)) which means gcc
does generate 64-bit aligned references, relative to beginning of
container struct. However the issue is if the container itself is not
64-bit aligned, atomic64_t ends up unaligned which is what this patch
ensures.
[1]
https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/wiki/files/ARCv2_ABI.pdf
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Cc:
<stable@vger.kernel.org> # 4.8+ Signed-off-by: Vineet Gupta
<vgupta@synopsys.com>
[vgupta: reworked changelog, added dependency on LL64+LLSC]
The file was modifiedarch/arc/include/asm/cache.h (diff)
Commit 59eb2a884f5380011179acc4662fc2cc2d850454 by jeffrey.t.kirsher
i40e: fix XDP_REDIRECT/XDP xmit ring cleanup race
When the driver clears the XDP xmit ring due to re-configuration or
teardown, in-progress ndo_xdp_xmit must be taken into consideration.
The ndo_xdp_xmit function is typically called from a NAPI context that
the driver does not control. Therefore, we must be careful not to clear
the XDP ring, while the call is on-going. This patch adds a
synchronize_rcu() to wait for napi(s) (preempt-disable regions and
softirqs), prior clearing the queue. Further, the __I40E_CONFIG_BUSY
flag is checked in the ndo_xdp_xmit implementation to avoid touching the
XDP xmit queue during re-configuration.
Fixes: d9314c474d4f ("i40e: add support for XDP_REDIRECT") Fixes:
123cecd427b6 ("i40e: added queue pair disable/enable functions")
Reported-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Signed-off-by: Björn Töpel <bjorn.topel@intel.com> Signed-off-by: Jeff
Kirsher <jeffrey.t.kirsher@intel.com>
The file was modifieddrivers/net/ethernet/intel/i40e/i40e_main.c (diff)
The file was modifieddrivers/net/ethernet/intel/i40e/i40e_txrx.c (diff)
Commit b7dc5a071ddf69c0350396b203cba32fe5bab510 by deller
parisc: Fix ptrace syscall number modification
Commit 910cd32e552e ("parisc: Fix and enable seccomp filter support")
introduced a regression in ptrace-based syscall tampering: when tracer
changes syscall number to -1, the kernel fails to initialize %r28 with
-ENOSYS and subsequently fails to return the error code of the failed
syscall to userspace.
This erroneous behaviour could be observed with a simple strace syscall
fault injection command which is expected to print something like this:
$ strace -a0 -ewrite -einject=write:error=enospc echo hello write(1,
"hello\n", 6) = -1 ENOSPC (No space left on device) (INJECTED) write(2,
"echo: ", 6) = -1 ENOSPC (No space left on device) (INJECTED) write(2,
"write error", 11) = -1 ENOSPC (No space left on device) (INJECTED)
write(2, "\n", 1) = -1 ENOSPC (No space left on device) (INJECTED)
+++ exited with 1 +++
After commit 910cd32e552ea09caa89cdbe328e468979b030dd it loops printing
something like this instead:
write(1, "hello\n", 6../strace: Failed to tamper with process 12345:
unexpectedly got no error (return value 0, error 0)
) = 0 (INJECTED)
This bug was found by strace test suite.
Fixes: 910cd32e552e ("parisc: Fix and enable seccomp filter support")
Cc: stable@vger.kernel.org # v4.5+ Signed-off-by: Dmitry V. Levin
<ldv@altlinux.org> Tested-by: Helge Deller <deller@gmx.de>
Signed-off-by: Helge Deller <deller@gmx.de>
The file was modifiedarch/parisc/kernel/ptrace.c (diff)
Commit c685c69fba71462c3f9f6a1fb6151cded6c74d42 by jeffrey.t.kirsher
ixgbe: don't do any AF_XDP zero-copy transmit if netif is not OK
An issue has been found while testing zero-copy XDP that causes a reset
to be triggered. As it takes some time to turn the carrier on after
setting zc, and we already start trying to transmit some packets,
watchdog considers this as an erroneous state and triggers a reset.
Don't do any work if netif carrier is not OK.
Fixes: 8221c5eba8c13 (ixgbe: add AF_XDP zero-copy Tx support)
Signed-off-by: Jan Sokolowski <jan.sokolowski@intel.com> Signed-off-by:
Jeff Kirsher <jeffrey.t.kirsher@intel.com>
The file was modifieddrivers/net/ethernet/intel/ixgbe/ixgbe_xsk.c (diff)
Commit 71d73a0b43c2b101a960c624290c8a053d174cac by deller
CREDITS/MAINTAINERS: Retire parisc-linux.org email domain
Retire the parisc-linux.org email domain and provide alternative email
addresses for the remaining users, as agreed upon with them.
Signed-off-by: Helge Deller <deller@gmx.de>
The file was modifiedMAINTAINERS (diff)
The file was modifiedCREDITS (diff)
Commit 18de100ed6f0d3bf74036de9fd4528f208d585e6 by davem
MAINTAINERS: mark CAIF as orphan
The listed address for the CAIF maintainer bounces with
"553 5.3.0 <dmitry.tarnyagin@lockless.no>... No such user here", and the
only existing email address of the maintainer in git history hasn't
responded in a week. Therefore, remove the listed maintainer and mark
CAIF as orphan.
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiedMAINTAINERS (diff)
Commit ad49bc6361ca29e3318b6f71a6fc361d2a8c9f26 by davem
net: vrf: remove MTU limits for vrf device
Similiar to commit e94cd8113ce63 ("net: remove MTU limits for dummy and
ifb device"), MTU is irrelevant for VRF device. We init it as 64K while
limit it to [68, 1500] may make users feel confused.
Reported-by: Jianlin Shi <jishi@redhat.com> 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 modifieddrivers/net/vrf.c (diff)
Commit 3c963a3306eada999be5ebf4f293dfa3d3945487 by davem
bonding: fix PACKET_ORIGDEV regression
This patch fixes a subtle PACKET_ORIGDEV regression which was a side
effect of fixes introduced by:
6a9e461f6fe4 bonding: pass link-local packets to bonding master also.
... to:
b89f04c61efe bonding: deliver link-local packets with skb->dev set to
link that packets arrived on
While 6a9e461f6fe4 restored pre-b89f04c61efe presence of link-local
packets on bonding masters (which is required e.g. by linux bridges
participating in spanning tree or needed for lab-like setups created
with group_fwd_mask) it also caused the originating device information
to be lost due to cloning.
Maciej Żenczykowski proposed another solution that doesn't require
packet cloning and retains original device information - instead of
returning RX_HANDLER_PASS for all link-local packets it's now limited
only to packets from inactive slaves.
At the same time, packets passed to bonding masters retain correct
information about the originating device and PACKET_ORIGDEV can be used
to determine it.
This elegantly solves all issues so far:
- link-local packets that were removed from bonding masters
- LLDP daemons being forced to explicitly bind to slave interfaces
- PACKET_ORIGDEV having no effect on bond interfaces
Fixes: 6a9e461f6fe4 (bonding: pass link-local packets to bonding master
also.) Reported-by: Vincent Bernat <vincent@bernat.ch> Signed-off-by:
Michal Soltys <soltys@ziu.info> Signed-off-by: Maciej Żenczykowski
<maze@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/bonding/bond_main.c (diff)
Commit 223b7329ec6a0dae1b7f7db7b770e93f4a069ef9 by davem
tipc: improve function tipc_wait_for_cond()
Commit 844cf763fba6 ("tipc: make macro tipc_wait_for_cond() smp safe")
replaced finish_wait() with remove_wait_queue() but still used
prepare_to_wait(). This causes unnecessary conditional checking  before
adding to wait queue in prepare_to_wait().
This commit replaces prepare_to_wait() with add_wait_queue() as the pair
function with remove_wait_queue().
Acked-by: Ying Xue <ying.xue@windriver.com> Acked-by: Jon Maloy
<jon.maloy@ericsson.com> Signed-off-by: Tung Nguyen
<tung.q.nguyen@dektech.com.au> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tipc/socket.c (diff)
Commit 48766a583c7961af080de2df692f476624a9a21a by davem
tipc: improve function tipc_wait_for_rcvmsg()
This commit replaces schedule_timeout() with wait_woken() in function
tipc_wait_for_rcvmsg(). wait_woken() uses memory barriers in its
implementation to avoid potential race condition when putting a process
into sleeping state and then waking it up.
Acked-by: Ying Xue <ying.xue@windriver.com> Acked-by: Jon Maloy
<jon.maloy@ericsson.com> Signed-off-by: Tung Nguyen
<tung.q.nguyen@dektech.com.au> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tipc/socket.c (diff)
Commit 9e8db5913264d3967b93c765a6a9e464d9c473db by davem
net: avoid false positives in untrusted gso validation
GSO packets with vnet_hdr must conform to a small set of gso_types. The
below commit uses flow dissection to drop packets that do not.
But it has false positives when the skb is not fully initialized.
Dissection needs skb->protocol and skb->network_header.
Infer skb->protocol from gso_type as the two must agree. SKB_GSO_UDP can
use both ipv4 and ipv6, so try both.
Exclude callers for which network header offset is not known.
Fixes: d5be7f632bad ("net: validate untrusted gso packets without csum
offload") Signed-off-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedinclude/linux/virtio_net.h (diff)
Commit 7b2e932f633bcb7b190fc7031ce6dac75f8c3472 by vgupta
ARCv2: don't assume core 0x54 has dual issue
The first release of core4 (0x54) was dual issue only (HS4x). Newer
releases allow hardware to be configured as single issue (HS3x) or dual
issue.
Prevent accessing a HS4x only aux register in HS3x, which otherwise
leads to illegal instruction exceptions
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
The file was modifiedarch/arc/include/asm/arcregs.h (diff)
The file was modifiedarch/arc/kernel/setup.c (diff)
Commit 2bdf700e538828d6456150b9319e5f689b062d54 by davem
net: ip_gre: do not report erspan_ver for gre or gretap
Report erspan version field to userspace in ipgre_fill_info just for
erspan tunnels. The issue can be triggered with the following
reproducer:
$ip link add name gre1 type gre local 192.168.0.1 remote 192.168.1.1
$ip link set dev gre1 up
$ip -d link sh gre1 13: gre1@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu
1476 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
   link/gre 192.168.0.1 peer 192.168.1.1 promiscuity 0 minmtu 0 maxmtu 0
   gre remote 192.168.1.1 local 192.168.0.1 ttl inherit erspan_ver 0
addrgenmode eui64 numtxqueues 1 numrxqueues 1
Fixes: f551c91de262 ("net: erspan: introduce erspan v2 for ip_gre")
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 103d0244d29fcaf38f1339d4538919bbbc051490 by davem
net: ip6_gre: do not report erspan_ver for ip6gre or ip6gretap
Report erspan version field to userspace in ip6gre_fill_info just for
erspan_v6 tunnels. Moreover report IFLA_GRE_ERSPAN_INDEX only for erspan
version 1. The issue can be triggered with the following reproducer:
$ip link add name gre6 type ip6gre local 2001::1 remote 2002::2
$ip link set gre6 up
$ip -d link sh gre6 14: grep6@NONE: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu
1448 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
   link/gre6 2001::1 peer 2002::2 promiscuity 0 minmtu 0 maxmtu 0
   ip6gre remote 2002::2 local 2001::1 hoplimit 64 encaplimit 4 tclass
0x00 flowlabel 0x00000 erspan_index 0 erspan_ver 0 addrgenmode eui64
Fixes: 94d7d8f29287 ("ip6_gre: add erspan v2 support") 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 6321aa197547da397753757bd84c6ce64b3e3d89 by davem
phonet: fix building with clang
clang warns about overflowing the data[] member in the struct pnpipehdr:
net/phonet/pep.c:295:8: warning: array index 4 is past the end of the
array (which contains 1 element) [-Warray-bounds]
                       if (hdr->data[4] == PEP_IND_READY)
                           ^         ~ include/net/phonet/pep.h:66:3:
note: array 'data' declared here
               u8              data[1];
Using a flexible array member at the end of the struct avoids the
warning, but since we cannot have a flexible array member inside of the
union, each index now has to be moved back by one, which makes it a
little uglier.
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Rémi
Denis-Courmont <remi@remlab.net> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/net/phonet/pep.h (diff)
The file was modifiednet/phonet/pep.c (diff)
Commit f1071c3e2473ae19a7f5d892a187c4cab1a61f2e by herbert
crypto: ccree - add missing inline qualifier
Commit 1358c13a48c4 ("crypto: ccree - fix resume race condition on
init") was missing a "inline" qualifier for stub function used when
CONFIG_PM is not set causing a build warning.
Fixes: 1358c13a48c4 ("crypto: ccree - fix resume race condition on
init") Cc: stable@kernel.org # v4.20 Signed-off-by: Gilad Ben-Yossef
<gilad@benyossef.com> Acked-by: Geert Uytterhoeven
<geert@linux-m68k.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au>
The file was modifieddrivers/crypto/ccree/cc_pm.h (diff)
Commit 69216a545cf81b2b32d01948f7039315abaf75a0 by herbert
crypto: sha256/arm - fix crash bug in Thumb2 build
The SHA256 code we adopted from the OpenSSL project uses a rather
peculiar way to take the address of the round constant table: it takes
the address of the sha256_block_data_order() routine, and substracts a
constant known quantity to arrive at the base of the table, which is
emitted by the same assembler code right before the routine's entry
point.
However, recent versions of binutils have helpfully changed the behavior
of references emitted via an ADR instruction when running in Thumb2
mode: it now takes the Thumb execution mode bit into account, which is
bit 0 af the address. This means the produced table address also has bit
0 set, and so we end up with an address value pointing 1 byte past the
start of the table, which results in crashes such as
  Unable to handle kernel paging request at virtual address bf825000
pgd = 42f44b11
[bf825000] *pgd=80000040206003, *pmd=5f1bd003, *pte=00000000
Internal error: Oops: 207 [#1] PREEMPT SMP THUMB2
Modules linked in: sha256_arm(+) sha1_arm_ce sha1_arm ...
CPU: 7 PID: 396 Comm: cryptomgr_test Not tainted 5.0.0-rc6+ #144
Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
PC is at sha256_block_data_order+0xaaa/0xb30 [sha256_arm]
LR is at __this_module+0x17fd/0xffffe800 [sha256_arm]
pc : [<bf820bca>]    lr : [<bf824ffd>]    psr: 800b0033
sp : ebc8bbe8  ip : faaabe1c  fp : 2fdd3433
r10: 4c5f1692  r9 : e43037df  r8 : b04b0a5a
r7 : c369d722  r6 : 39c3693e  r5 : 7a013189  r4 : 1580d26b
r3 : 8762a9b0  r2 : eea9c2cd  r1 : 3e9ab536  r0 : 1dea4ae7
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA Thumb  Segment user
Control: 70c5383d  Table: 6b8467c0  DAC: dbadc0de
Process cryptomgr_test (pid: 396, stack limit = 0x69e1fe23)
Stack: (0xebc8bbe8 to 0xebc8c000)
...
unwind: Unknown symbol address bf820bca
unwind: Index not found bf820bca
Code: 441a ea80 40f9 440a (f85e) 3b04
---[ end trace e560cce92700ef8a ]---
Given that this affects older kernels as well, in case they are built
with a recent toolchain, apply a minimal backportable fix, which is to
emit another non-code label at the start of the routine, and reference
that instead. (This is similar to the current upstream state of this
file in OpenSSL)
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au>
The file was modifiedarch/arm/crypto/sha256-armv4.pl (diff)
The file was modifiedarch/arm/crypto/sha256-core.S_shipped (diff)
Commit c64316502008064c158fa40cc250665e461b0f2a by herbert
crypto: sha512/arm - fix crash bug in Thumb2 build
The SHA512 code we adopted from the OpenSSL project uses a rather
peculiar way to take the address of the round constant table: it takes
the address of the sha256_block_data_order() routine, and substracts a
constant known quantity to arrive at the base of the table, which is
emitted by the same assembler code right before the routine's entry
point.
However, recent versions of binutils have helpfully changed the behavior
of references emitted via an ADR instruction when running in Thumb2
mode: it now takes the Thumb execution mode bit into account, which is
bit 0 af the address. This means the produced table address also has bit
0 set, and so we end up with an address value pointing 1 byte past the
start of the table, which results in crashes such as
  Unable to handle kernel paging request at virtual address bf825000
pgd = 42f44b11
[bf825000] *pgd=80000040206003, *pmd=5f1bd003, *pte=00000000
Internal error: Oops: 207 [#1] PREEMPT SMP THUMB2
Modules linked in: sha256_arm(+) sha1_arm_ce sha1_arm ...
CPU: 7 PID: 396 Comm: cryptomgr_test Not tainted 5.0.0-rc6+ #144
Hardware name: QEMU KVM Virtual Machine, BIOS 0.0.0 02/06/2015
PC is at sha256_block_data_order+0xaaa/0xb30 [sha256_arm]
LR is at __this_module+0x17fd/0xffffe800 [sha256_arm]
pc : [<bf820bca>]    lr : [<bf824ffd>]    psr: 800b0033
sp : ebc8bbe8  ip : faaabe1c  fp : 2fdd3433
r10: 4c5f1692  r9 : e43037df  r8 : b04b0a5a
r7 : c369d722  r6 : 39c3693e  r5 : 7a013189  r4 : 1580d26b
r3 : 8762a9b0  r2 : eea9c2cd  r1 : 3e9ab536  r0 : 1dea4ae7
Flags: Nzcv  IRQs on  FIQs on  Mode SVC_32  ISA Thumb  Segment user
Control: 70c5383d  Table: 6b8467c0  DAC: dbadc0de
Process cryptomgr_test (pid: 396, stack limit = 0x69e1fe23)
Stack: (0xebc8bbe8 to 0xebc8c000)
...
unwind: Unknown symbol address bf820bca
unwind: Index not found bf820bca
Code: 441a ea80 40f9 440a (f85e) 3b04
---[ end trace e560cce92700ef8a ]---
Given that this affects older kernels as well, in case they are built
with a recent toolchain, apply a minimal backportable fix, which is to
emit another non-code label at the start of the routine, and reference
that instead. (This is similar to the current upstream state of this
file in OpenSSL)
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au>
The file was modifiedarch/arm/crypto/sha512-armv4.pl (diff)
The file was modifiedarch/arm/crypto/sha512-core.S_shipped (diff)
Commit 17407715240456448e4989bee46ffc93991add83 by johannes.berg
mac80211_hwsim: propagate genlmsg_reply return code
genlmsg_reply can fail, so propagate its return code
Signed-off-by: Li RongQing <lirongqing@baidu.com> Signed-off-by:
Johannes Berg <johannes.berg@intel.com>
The file was modifieddrivers/net/wireless/mac80211_hwsim.c (diff)
Commit 5c14a4d05f68415af9e41a4e667d1748d41d1baf by johannes.berg
mac80211: Change default tx_sk_pacing_shift to 7
When we did the original tests for the optimal value of sk_pacing_shift,
we came up with 6 ms of buffering as the default. Sadly, 6 is not a
power of two, so when picking the shift value I erred on the size of
less buffering and picked 4 ms instead of 8. This was probably wrong;
those 2 ms of extra buffering makes a larger difference than I thought.
So, change the default pacing shift to 7, which corresponds to 8 ms of
buffering. The point of diminishing returns really kicks in after 8 ms,
and so having this as a default should cut down on the need for
extensive per-device testing and overrides needed in the drivers.
Cc: stable@vger.kernel.org Signed-off-by: Toke Høiland-Jørgensen
<toke@redhat.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
The file was modifiednet/mac80211/main.c (diff)
Commit 51d0af222f6fa43134c6187ab4f374630f6e0d96 by johannes.berg
mac80211: allocate tailroom for forwarded mesh packets
Forwarded packets enter the tx path through ieee80211_add_pending_skb,
which skips the ieee80211_skb_resize call. Fixes WARN_ON in
ccmp_encrypt_skb and resulting packet loss.
Cc: stable@vger.kernel.org Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
The file was modifiednet/mac80211/rx.c (diff)
Commit 7c0cdf0b3940f63d9777c3fcf250a2f83859ca54 by daniel
bpf, lpm: fix lookup bug in map_delete_elem
trie_delete_elem() was deleting an entry even though it was not matching
if the prefixlen was correct. This patch adds a check on matchlen.
Reproducer:
$ sudo bpftool map create /sys/fs/bpf/mylpm type lpm_trie key 8 value 1
entries 128 name mylpm flags 1
$ sudo bpftool map update pinned /sys/fs/bpf/mylpm key hex 10 00 00 00
aa bb cc dd value hex 01
$ sudo bpftool map dump pinned /sys/fs/bpf/mylpm key: 10 00 00 00 aa bb
cc dd  value: 01 Found 1 element
$ sudo bpftool map delete pinned /sys/fs/bpf/mylpm key hex 10 00 00 00
ff ff ff ff
$ echo $? 0
$ sudo bpftool map dump pinned /sys/fs/bpf/mylpm Found 0 elements
A similar reproducer is added in the selftests.
Without the patch:
$ sudo ./tools/testing/selftests/bpf/test_lpm_map test_lpm_map:
test_lpm_map.c:485: test_lpm_delete: Assertion
`bpf_map_delete_elem(map_fd, key) == -1 && errno == ENOENT' failed.
Aborted
With the patch: test_lpm_map runs without errors.
Fixes: e454cf595853 ("bpf: Implement map_delete_elem for
BPF_MAP_TYPE_LPM_TRIE") Cc: Craig Gallek <kraig@google.com>
Signed-off-by: Alban Crequy <alban@kinvolk.io> Acked-by: Craig Gallek
<kraig@google.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
The file was modifiedtools/testing/selftests/bpf/test_lpm_map.c (diff)
The file was modifiedkernel/bpf/lpm_trie.c (diff)
Commit cc1780fc42c76c705dd07ea123f1143dc5057630 by james.morris
KEYS: user: Align the payload buffer
Align the payload of "user" and "logon" keys so that users of the
keyrings service can access it as a struct that requires more than
2-byte alignment.  fscrypt currently does this which results in the read
of fscrypt_key::size being misaligned as it needs 4-byte alignment.
Align to __alignof__(u64) rather than __alignof__(long) since in the
future it's conceivable that people would use structs beginning with
u64, which on some platforms would require more than 'long' alignment.
Reported-by: Aaro Koskinen <aaro.koskinen@iki.fi> Fixes: 2aa349f6e37c
("[PATCH] Keys: Export user-defined keyring operations") Fixes:
88bd6ccdcdd6 ("ext4 crypto: add encryption key management facilities")
Cc: stable@vger.kernel.org Signed-off-by: Eric Biggers
<ebiggers@google.com> Tested-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: James
Morris <james.morris@microsoft.com>
The file was modifiedinclude/keys/user-type.h (diff)
Commit ede0fa98a900e657d1fcd80b50920efc896c1a4c by james.morris
KEYS: always initialize keyring_index_key::desc_len
syzbot hit the 'BUG_ON(index_key->desc_len == 0);' in __key_link_begin()
called from construct_alloc_key() during sys_request_key(), because the
length of the key description was never calculated.
The problem is that we rely on ->desc_len being initialized by
search_process_keyrings(), specifically by search_nested_keyrings().
But, if the process isn't subscribed to any keyrings that never happens.
Fix it by always initializing keyring_index_key::desc_len as soon as the
description is set, like we already do in some places.
The following program reproduces the BUG_ON() when it's run as root and
no session keyring has been installed.  If it doesn't work, try removing
pam_keyinit.so from /etc/pam.d/login and rebooting.
    #include <stdlib.h>
   #include <unistd.h>
   #include <keyutils.h>
    int main(void)
   {
           int id = add_key("keyring", "syz", NULL, 0,
KEY_SPEC_USER_KEYRING);
            keyctl_setperm(id, KEY_OTH_WRITE);
           setreuid(5000, 5000);
           request_key("user", "desc", "", id);
   }
Reported-by: syzbot+ec24e95ea483de0a24da@syzkaller.appspotmail.com
Fixes: b2a4df200d57 ("KEYS: Expand the capacity of a keyring")
Signed-off-by: Eric Biggers <ebiggers@google.com> Signed-off-by: David
Howells <dhowells@redhat.com> Cc: stable@vger.kernel.org Signed-off-by:
James Morris <james.morris@microsoft.com>
The file was modifiedsecurity/keys/proc.c (diff)
The file was modifiedsecurity/keys/request_key.c (diff)
The file was modifiedsecurity/keys/keyring.c (diff)
The file was modifiedsecurity/keys/request_key_auth.c (diff)
Commit ad7dc69aeb23138cc23c406cac25003b97e8ee17 by pbonzini
x86/kvm/mmu: fix switch between root and guest MMUs
Commit 14c07ad89f4d ("x86/kvm/mmu: introduce guest_mmu") brought one
subtle change: previously, when switching back from L2 to L1, we were
resetting MMU hooks (like mmu->get_cr3()) in kvm_init_mmu() called from
nested_vmx_load_cr3() and now we do that in
nested_ept_uninit_mmu_context() when we re-target vcpu->arch.mmu
pointer. The change itself looks logical: if
nested_ept_init_mmu_context() changes something than
nested_ept_uninit_mmu_context() restores it back. There is, however, one
thing: the following call chain:
nested_vmx_load_cr3()
kvm_mmu_new_cr3()
   __kvm_mmu_new_cr3()
     fast_cr3_switch()
       cached_root_available()
now happens with MMU hooks pointing to the new MMU (root MMU in our
case) while previously it was happening with the old one.
cached_root_available() tries to stash current root but it is incorrect
to read current CR3 with mmu->get_cr3(), we need to use
old_mmu->get_cr3() which in case we're switching from L2 to L1 is
guest_mmu. (BTW, in shadow page tables case this is a non-issue because
we don't switch MMU).
While we could've tried to guess that we're switching between MMUs and
call the right ->get_cr3() from cached_root_available() this seems to be
overly complicated. Instead, just stash the corresponding CR3 when
setting root_hpa and make cached_root_available() use the stashed value.
Fixes: 14c07ad89f4d ("x86/kvm/mmu: introduce guest_mmu") 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/mmu.c (diff)
The file was modifiedarch/x86/include/asm/kvm_host.h (diff)
Commit 511da98d207d5c0675a10351b01e37cbe50a79e5 by pbonzini
kvm: x86: Return LA57 feature based on hardware capability
Previously, 'commit 372fddf70904 ("x86/mm: Introduce the 'no5lvl' kernel
parameter")' cleared X86_FEATURE_LA57 in boot_cpu_data, if Linux chooses
to not run in 5-level paging mode. Yet boot_cpu_data is queried by
do_cpuid_ent() as the host capability later when creating vcpus, and
Qemu will not be able to detect this feature and create VMs with LA57
feature.
As discussed earlier, VMs can still benefit from extended linear address
width, e.g. to enhance features like ASLR. So we would like to fix this,
by return the true hardware capability when Qemu queries.
Signed-off-by: Yu Zhang <yu.c.zhang@linux.intel.com> Cc:
stable@vger.kernel.org Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com>
The file was modifiedarch/x86/kvm/cpuid.c (diff)
Commit de3ccd26fafc707b09792d9b633c8b5b48865315 by pbonzini
KVM: MMU: record maximum physical address width in kvm_mmu_extended_role
Previously, commit 7dcd57552008 ("x86/kvm/mmu: check if tdp/shadow MMU
reconfiguration is needed") offered some optimization to avoid the
unnecessary reconfiguration. Yet one scenario is broken - when cpuid
changes VM's maximum physical address width, reconfiguration is needed
to reset the reserved bits.  Also, the TDP may need to reset its
shadow_root_level when this value is changed.
To fix this, a new field, maxphyaddr, is introduced in the extended role
structure to keep track of the configured guest physical address width.
Signed-off-by: Yu Zhang <yu.c.zhang@linux.intel.com> Cc:
stable@vger.kernel.org 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 d1f20c03f48102e52eb98b8651d129b83134cae4 by davem
sctp: don't compare hb_timer expire date before starting it
hb_timer might not start at all for a particular transport because its
start is conditional. In a result a node is not sending heartbeats.
Function sctp_transport_reset_hb_timer has two roles:
   - initial start of hb_timer for a given transport,
   - update expire date of hb_timer for a given transport. The function
is optimized to update timer's expire only if it is before a new
calculated one but this comparison is invalid for a timer which has not
yet started. Such a timer has expire == 0 and if a new expire value is
bigger than (MAX_JIFFIES / 2 + 2) then "time_before" macro will fail and
timer will not start resulting in no heartbeat packets send by the node.
This was found when association was initialized within first 5 mins
after system boot due to jiffies init value which is near to
MAX_JIFFIES.
Test kernel version: 4.9.154 (ARCH=arm) hb_timer.expire = 0;           
   //initialized, not started timer new_expire = MAX_JIFFIES / 2 + 2; 
//or more time_before(hb_timer.expire, new_expire) == false
Fixes: ba6f5e33bdbb ("sctp: avoid refreshing heartbeat timer too often")
Reported-by: Marcin Stojek <marcin.stojek@nokia.com> Tested-by: Marcin
Stojek <marcin.stojek@nokia.com> Signed-off-by: Maciej Kwiecien
<maciej.kwiecien@nokia.com> Reviewed-by: Alexander Sverdlin
<alexander.sverdlin@nokia.com> Acked-by: Marcelo Ricardo Leitner
<marcelo.leitner@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/sctp/transport.c (diff)
Commit 7cc9f7003a969d359f608ebb701d42cafe75b84a by davem
ipvlan: disallow userns cap_net_admin to change global mode/flags
When running Docker with userns isolation e.g. --userns-remap="default"
and spawning up some containers with CAP_NET_ADMIN under this realm, I
noticed that link changes on ipvlan slave device inside that container
can affect all devices from this ipvlan group which are in other net
namespaces where the container should have no permission to make changes
to, such as the init netns, for example.
This effectively allows to undo ipvlan private mode and switch globally
to bridge mode where slaves can communicate directly without going
through hostns, or it allows to switch between global operation mode
(l2/l3/l3s) for everyone bound to the given ipvlan master device.
libnetwork plugin here is creating an ipvlan master and ipvlan slave in
hostns and a slave each that is moved into the container's netns upon
creation event.
* In hostns:
  # ip -d a
[...]
8: cilium_host@bond0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500
qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 0c:c4:7a:e1:3d:cc brd ff:ff:ff:ff:ff:ff promiscuity 0
minmtu 68 maxmtu 65535
    ipvlan  mode l3 bridge numtxqueues 1 numrxqueues 1 gso_max_size
65536 gso_max_segs 65535
    inet 10.41.0.1/32 scope link cilium_host
      valid_lft forever preferred_lft forever
[...]
* Spawn container & change ipvlan mode setting inside of it:
  # docker run -dt --cap-add=NET_ADMIN --network cilium-net --name
client -l app=test cilium/netperf
9fff485d69dcb5ce37c9e33ca20a11ccafc236d690105aadbfb77e4f4170879c
  # docker exec -ti client ip -d a
[...]
10: cilium0@if4: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UNKNOWN group default qlen 1000
     link/ether 0c:c4:7a:e1:3d:cc brd ff:ff:ff:ff:ff:ff promiscuity 0
minmtu 68 maxmtu 65535
     ipvlan  mode l3 bridge numtxqueues 1 numrxqueues 1 gso_max_size
65536 gso_max_segs 65535
     inet 10.41.197.43/32 brd 10.41.197.43 scope global cilium0
        valid_lft forever preferred_lft forever
  # docker exec -ti client ip link change link cilium0 name cilium0 type
ipvlan mode l2
  # docker exec -ti client ip -d a
[...]
10: cilium0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UNKNOWN group default qlen 1000
     link/ether 0c:c4:7a:e1:3d:cc brd ff:ff:ff:ff:ff:ff promiscuity 0
minmtu 68 maxmtu 65535
     ipvlan  mode l2 bridge numtxqueues 1 numrxqueues 1 gso_max_size
65536 gso_max_segs 65535
     inet 10.41.197.43/32 brd 10.41.197.43 scope global cilium0
        valid_lft forever preferred_lft forever
* In hostns (mode switched to l2):
  # ip -d a
[...]
8: cilium_host@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UNKNOWN group default qlen 1000
     link/ether 0c:c4:7a:e1:3d:cc brd ff:ff:ff:ff:ff:ff promiscuity 0
minmtu 68 maxmtu 65535
     ipvlan  mode l2 bridge numtxqueues 1 numrxqueues 1 gso_max_size
65536 gso_max_segs 65535
     inet 10.41.0.1/32 scope link cilium_host
        valid_lft forever preferred_lft forever
[...]
Same l3 -> l2 switch would also happen by creating another slave inside
the container's network namespace when specifying the existing cilium0
link to derive the actual (bond0) master:
  # docker exec -ti client ip link add link cilium0 name cilium1 type
ipvlan mode l2
  # docker exec -ti client ip -d a
[...]
2: cilium1@if4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
group default qlen 1000
     link/ether 0c:c4:7a:e1:3d:cc brd ff:ff:ff:ff:ff:ff promiscuity 0
minmtu 68 maxmtu 65535
     ipvlan  mode l2 bridge numtxqueues 1 numrxqueues 1 gso_max_size
65536 gso_max_segs 65535
10: cilium0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UNKNOWN group default qlen 1000
     link/ether 0c:c4:7a:e1:3d:cc brd ff:ff:ff:ff:ff:ff promiscuity 0
minmtu 68 maxmtu 65535
     ipvlan  mode l2 bridge numtxqueues 1 numrxqueues 1 gso_max_size
65536 gso_max_segs 65535
     inet 10.41.197.43/32 brd 10.41.197.43 scope global cilium0
        valid_lft forever preferred_lft forever
* In hostns:
  # ip -d a
[...]
8: cilium_host@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
noqueue state UNKNOWN group default qlen 1000
     link/ether 0c:c4:7a:e1:3d:cc brd ff:ff:ff:ff:ff:ff promiscuity 0
minmtu 68 maxmtu 65535
     ipvlan  mode l2 bridge numtxqueues 1 numrxqueues 1 gso_max_size
65536 gso_max_segs 65535
     inet 10.41.0.1/32 scope link cilium_host
        valid_lft forever preferred_lft forever
[...]
One way to mitigate it is to check CAP_NET_ADMIN permissions of the
ipvlan master device's ns, and only then allow to change mode or flags
for all devices bound to it. Above two cases are then disallowed after
the patch.
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Mahesh
Bandewar <maheshb@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/ipvlan/ipvlan_main.c (diff)
Commit c286909fe5458f69e533c845b757fd2c35064d26 by davem
r8152: Fix an error on RTL8153-BD MAC Address Passthrough support
RTL8153-BD is used in Dell DA300 type-C dongle. Added RTL8153-BD support
to activate MAC address pass through on DA300. Apply correction on
previously submitted patch in net.git tree.
Signed-off-by: David Chen <david.chen7@dell.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/usb/r8152.c (diff)
Commit 8c7a77267eec81dd81af8412f29e50c0b1082548 by davem
team: use operstate consistently for linkup
When a port is added to a team, its initial state is derived from
netif_carrier_ok rather than netif_oper_up. If it is carrier up but
operationally down at the time of being added, the port state.linkup
will be set prematurely. port state.linkup should be set consistently
using netif_oper_up rather than netif_carrier_ok.
Fixes: f1d22a1e0595 ("team: account for oper state") Signed-off-by:
George Wilkie <gwilkie@vyatta.att-mail.com> Acked-by: Jiri Pirko
<jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/team/team.c (diff)
Commit efcc9bcaf77c07df01371a7c34e50424c291f3ac by davem
net: ip6_gre: fix possible NULL pointer dereference in
ip6erspan_set_version
Fix a possible NULL pointer dereference in ip6erspan_set_version
checking nlattr data pointer
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: 1 PID: 7549 Comm: syz-executor432 Not tainted
5.0.0-rc6-next-20190218
#37 Hardware name: Google Google Compute Engine/Google Compute Engine,
BIOS Google 01/01/2011 RIP: 0010:ip6erspan_set_version+0x5c/0x350
net/ipv6/ip6_gre.c:1726 Code: 07 38 d0 7f 08 84 c0 0f 85 9f 02 00 00 49
8d bc 24 b0 00 00 00 c6 43 54 01 48 b8 00 00 00 00 00 fc ff df 48 89 fa
48 c1 ea 03 <80> 3c 02 00 0f 85 9a 02 00 00 4d 8b ac 24 b0 00 00 00 4d
85 ed 0f RSP: 0018:ffff888089ed7168 EFLAGS: 00010202 RAX:
dffffc0000000000 RBX: ffff8880869d6e58 RCX: 0000000000000000 RDX:
0000000000000016 RSI: ffffffff862736b4 RDI: 00000000000000b0 RBP:
ffff888089ed7180 R08: 1ffff11010d3adcb R09: ffff8880869d6e58 R10:
ffffed1010d3add5 R11: ffff8880869d6eaf R12: 0000000000000000 R13:
ffffffff8931f8c0 R14: ffffffff862825d0 R15: ffff8880869d6e58 FS:
0000000000b3d880(0000) GS:ffff8880ae900000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000020000184
CR3: 0000000092cc5000 CR4: 00000000001406e0 DR0: 0000000000000000 DR1:
0000000000000000 DR2: 0000000000000000 DR3: 0000000000000000 DR6:
00000000fffe0ff0 DR7: 0000000000000400 Call Trace:
ip6erspan_newlink+0x66/0x7b0 net/ipv6/ip6_gre.c:2210
__rtnl_newlink+0x107b/0x16c0 net/core/rtnetlink.c:3176
rtnl_newlink+0x69/0xa0 net/core/rtnetlink.c:3234
rtnetlink_rcv_msg+0x465/0xb00 net/core/rtnetlink.c:5192
netlink_rcv_skb+0x17a/0x460 net/netlink/af_netlink.c:2485
rtnetlink_rcv+0x1d/0x30 net/core/rtnetlink.c:5210
netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
netlink_unicast+0x536/0x720 net/netlink/af_netlink.c:1336
netlink_sendmsg+0x8ae/0xd70 net/netlink/af_netlink.c:1925
sock_sendmsg_nosec net/socket.c:621 [inline]
sock_sendmsg+0xdd/0x130 net/socket.c:631
___sys_sendmsg+0x806/0x930 net/socket.c:2136
__sys_sendmsg+0x105/0x1d0 net/socket.c:2174
__do_sys_sendmsg net/socket.c:2183 [inline]
__se_sys_sendmsg net/socket.c:2181 [inline]
__x64_sys_sendmsg+0x78/0xb0 net/socket.c:2181
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x440159 Code: 18 89
d0 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 48 89 f8 48 89 f7 48 89 d6
48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f
83 fb 13 fc ff c3 66 2e 0f 1f 84 00 00 00 00 RSP: 002b:00007fffa69156e8
EFLAGS: 00000246 ORIG_RAX: 000000000000002e RAX: ffffffffffffffda RBX:
00000000004002c8 RCX: 0000000000440159 RDX: 0000000000000000 RSI:
0000000020001340 RDI: 0000000000000003 RBP: 00000000006ca018 R08:
0000000000000001 R09: 00000000004002c8 R10: 0000000000000011 R11:
0000000000000246 R12: 00000000004019e0 R13: 0000000000401a70 R14:
0000000000000000 R15: 0000000000000000 Modules linked in:
---[ end trace 09f8a7d13b4faaa1 ]--- RIP:
0010:ip6erspan_set_version+0x5c/0x350 net/ipv6/ip6_gre.c:1726 Code: 07
38 d0 7f 08 84 c0 0f 85 9f 02 00 00 49 8d bc 24 b0 00 00 00 c6 43 54 01
48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85
9a 02 00 00 4d 8b ac 24 b0 00 00 00 4d 85 ed 0f RSP:
0018:ffff888089ed7168 EFLAGS: 00010202 RAX: dffffc0000000000 RBX:
ffff8880869d6e58 RCX: 0000000000000000 RDX: 0000000000000016 RSI:
ffffffff862736b4 RDI: 00000000000000b0 RBP: ffff888089ed7180 R08:
1ffff11010d3adcb R09: ffff8880869d6e58 R10: ffffed1010d3add5 R11:
ffff8880869d6eaf R12: 0000000000000000 R13: ffffffff8931f8c0 R14:
ffffffff862825d0 R15: ffff8880869d6e58 FS:  0000000000b3d880(0000)
GS:ffff8880ae900000(0000) knlGS:0000000000000000 CS:  0010 DS: 0000 ES:
0000 CR0: 0000000080050033 CR2: 0000000020000184 CR3: 0000000092cc5000
CR4: 00000000001406e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400
Fixes: 4974d5f678ab ("net: ip6_gre: initialize erspan_ver just for
erspan tunnels") Reported-and-tested-by:
syzbot+30191cf1057abd3064af@syzkaller.appspotmail.com Signed-off-by:
Lorenzo Bianconi <lorenzo.bianconi@redhat.com> Reviewed-by: Greg Rose
<gvrose8192@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv6/ip6_gre.c (diff)
Commit f6d25aca1ba3f46b76dabf6023a0dc2062dc792e by davem
net: thunderx: correct typo in macro name
Correct STREERING to STEERING at macro name for BGX steering register.
Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/thunder_bgx.c (diff)
The file was modifieddrivers/net/ethernet/cavium/thunder/thunder_bgx.h (diff)
Commit 2ecbe4f4a027890a5d74a5100075aa6a373bea2c by davem
net: thunderx: replace global nicvf_rx_mode_wq work queue for all VFs to
private for each of them.
Having one work queue for receive mode configuration ndo_set_rx_mode()
call for all VFs results in making each of them wait till the
set_rx_mode() call completes for another VF if any of close, set receive
mode and change flags calls being already invoked. Potentially this
could cause device state change before appropriate call of receive mode
configuration completes, so the call itself became meaningless, corrupt
data or break configuration sequence.
We don't need any delays in NIC VF configuration sequence so having
delayed work call with 0 delay has no sense.
This commit is to implement one work queue for each NIC VF for
set_rx_mode task and to let them work independently and replacing
delayed_work with work_struct.
Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_main.c (diff)
The file was modifieddrivers/net/ethernet/cavium/thunder/nic.h (diff)
Commit 0dd563b9a62c4cbabf5d4fd6596440c2491e72b1 by davem
net: thunderx: make CFG_DONE message to run through generic send-ack
sequence
At the end of NIC VF initialization VF sends CFG_DONE message to PF
without using nicvf_msg_send_to_pf routine. This potentially could
re-write data in mailbox. This commit is to implement common way of
sending CFG_DONE message by the same way with other configuration
messages by using nicvf_send_msg_to_pf() routine.
Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_main.c (diff)
The file was modifieddrivers/net/ethernet/cavium/thunder/nic_main.c (diff)
Commit 7db730d9d2f7b6af6aeac621b1890ea477a0cb8d by davem
net: thunderx: add nicvf_send_msg_to_pf result check for
set_rx_mode_task
The rx_set_mode invokes number of messages to be send to PF for receive
mode configuration. In case if there any issues we need to stop sending
messages and release allocated memory.
This commit is to implement check of nicvf_msg_send_to_pf() result.
Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_main.c (diff)
Commit 5354439612894033e3f3b934f0bc03afb5f4ddc5 by davem
net: thunderx: rework xcast message structure to make it fit into 64 bit
To communicate to PF each of ThunderX NIC VF uses mailbox which is pair
of 64 bit registers available to both VFn and PF.
This commit is to change the xcast message structure in order to fit it
into 64 bit.
Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nic.h (diff)
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_main.c (diff)
The file was modifieddrivers/net/ethernet/cavium/thunder/nic_main.c (diff)
Commit 609ea65c65a0f801c285abf524d36d1f4635d942 by davem
net: thunderx: add mutex to protect mailbox from concurrent calls for
same VF
In some cases it could happen that nicvf_send_msg_to_pf() could be
called concurrently for the same NIC VF, and thus re-writing mailbox
contents and breaking messaging sequence with PF by re-writing NICVF
data.
This commit is to implement mutex for NICVF to protect mailbox registers
and NICVF messaging control data from concurrent access.
Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nic.h (diff)
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_main.c (diff)
Commit 2c632ad8bc744d2ad59dd381ce56fae143cf1e0a by davem
net: thunderx: move link state polling function to VF
Move the link change polling task to VF side in order to prevent races
between VF and PF while sending link change message(s). This commit is
to implement link change request to be initiated by VF.
Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nic.h (diff)
The file was modifieddrivers/net/ethernet/cavium/thunder/nic_main.c (diff)
The file was modifieddrivers/net/ethernet/cavium/thunder/nicvf_main.c (diff)
Commit 2e1c3fff5e496621ccbb1a207b775c1dd1d524ac by davem
net: thunderx: remove link change polling code and info from nicpf
Since link change polling routine was moved to nicvf side, we don't need
anymore polling function at nicpf side along with link status info for
all enabled Vfs as at VF side this info is already tracked.
This commit is to remove unnecessary code & fields from nicpf structure.
Signed-off-by: Vadim Lomovtsev <vlomovtsev@marvell.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/cavium/thunder/nic_main.c (diff)
Commit f5b51fe804ec2a6edce0f8f6b11ea57283f5857b by davem
ipv6: route: purge exception on removal
When a netdevice is unregistered, we flush the relevant exception via
rt6_sync_down_dev() -> fib6_ifdown() -> fib6_del() -> fib6_del_route().
Finally, we end-up calling rt6_remove_exception(), where we release the
relevant dst, while we keep the references to the related fib6_info and
dev. Such references should be released later when the dst will be
destroyed.
There are a number of caches that can keep the exception around for an
unlimited amount of time - namely dst_cache, possibly even socket cache.
As a result device registration may hang, as demonstrated by this
script:
ip netns add cl ip netns add rt ip netns add srv ip netns exec rt sysctl
-w net.ipv6.conf.all.forwarding=1
ip link add name cl_veth type veth peer name cl_rt_veth ip link set dev
cl_veth netns cl ip -n cl link set dev cl_veth up ip -n cl addr add dev
cl_veth 2001::2/64 ip -n cl route add default via 2001::1
ip -n cl link add tunv6 type ip6tnl mode ip6ip6 local 2001::2 remote
2002::1 hoplimit 64 dev cl_veth ip -n cl link set tunv6 up ip -n cl addr
add 2013::2/64 dev tunv6
ip link set dev cl_rt_veth netns rt ip -n rt link set dev cl_rt_veth up
ip -n rt addr add dev cl_rt_veth 2001::1/64
ip link add name rt_srv_veth type veth peer name srv_veth ip link set
dev srv_veth netns srv ip -n srv link set dev srv_veth up ip -n srv addr
add dev srv_veth 2002::1/64 ip -n srv route add default via 2002::2
ip -n srv link add tunv6 type ip6tnl mode ip6ip6 local 2002::1 remote
2001::2 hoplimit 64 dev srv_veth ip -n srv link set tunv6 up ip -n srv
addr add 2013::1/64 dev tunv6
ip link set dev rt_srv_veth netns rt ip -n rt link set dev rt_srv_veth
up ip -n rt addr add dev rt_srv_veth 2002::2/64
ip netns exec srv netserver & sleep 0.1 ip netns exec cl ping6 -c 4
2013::1 ip netns exec cl netperf -H 2013::1 -t TCP_STREAM -l 3 & sleep 1
ip -n rt link set dev rt_srv_veth mtu 1400 wait %2
ip -n cl link del cl_veth
This commit addresses the issue purging all the references held by the
exception at time, as we currently do for e.g. ipv6 pcpu dst entries.
v1 -> v2:
- re-order the code to avoid accessing dst and net after dst_dev_put()
Fixes: 93531c674315 ("net/ipv6: separate handling of FIB entries from
dst based routes") Signed-off-by: Paolo Abeni <pabeni@redhat.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 52baf9878b65872a7fc735d7fae3350ea9f30646 by davem
net: socket: add check for negative optlen in compat setsockopt
__sys_setsockopt() already checks for `optlen < 0`. Add an equivalent
check to the compat path for robustness. This has to be `> INT_MAX`
instead of
`< 0` because the signedness of `optlen` is different here.
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/compat.c (diff)
Commit 80d79ad224ba22381e8d26b54674a86433e75d18 by davem
Documentation: networking: switchdev: Update port parent ID section
Update the section about switchdev drivers having to implement a
switchdev_port_attr_get() function to return
SWITCHDEV_ATTR_ID_PORT_PARENT_ID since that is no longer valid after
commit bccb30254a4a ("net: Get rid of
SWITCHDEV_ATTR_ID_PORT_PARENT_ID").
Fixes: bccb30254a4a ("net: Get rid of SWITCHDEV_ATTR_ID_PORT_PARENT_ID")
Reviewed-by: Ido Schimmel <idosch@mellanox.com> Acked-by: Jiri Pirko
<jiri@mellanox.com> Signed-off-by: Florian Fainelli
<f.fainelli@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedDocumentation/networking/switchdev.txt (diff)
Commit 71c190249f0ced5b26377ea6bf829ab3af77a40c by daniel
nfp: bpf: fix code-gen bug on BPF_ALU | BPF_XOR | BPF_K
The intended optimization should be A ^ 0 = A, not A ^ -1 = A.
Fixes: cd7df56ed3e6 ("nfp: add BPF to NFP code translator") Reviewed-by:
Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Jiong Wang
<jiong.wang@netronome.com> Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net>
The file was modifieddrivers/net/ethernet/netronome/nfp/bpf/jit.c (diff)
Commit f036ebd9bfbe1e91a3d855e85e05fc5ff156b641 by daniel
nfp: bpf: fix ALU32 high bits clearance bug
NFP BPF JIT compiler is doing a couple of small optimizations when
jitting ALU imm instructions, some of these optimizations could save
code-gen, for example:
  A & -1 =  A
A |  0 =  A
A ^  0 =  A
However, for ALU32, high 32-bit of the 64-bit register should still be
cleared according to ISA semantics.
Fixes: cd7df56ed3e6 ("nfp: add BPF to NFP code translator") Reviewed-by:
Jakub Kicinski <jakub.kicinski@netronome.com> Signed-off-by: Jiong Wang
<jiong.wang@netronome.com> Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net>
The file was modifieddrivers/net/ethernet/netronome/nfp/bpf/jit.c (diff)
Commit 67681d02aaa1db9044a16df4ca9c77cde1221a3e by davem
bnxt_en: Fix typo in firmware message timeout logic.
The logic that polls for the firmware message response uses a shorter
sleep interval for the first few passes.  But there was a typo so it was
using the wrong counter (larger counter) for these short sleep passes.
The result is a slightly shorter timeout period for these firmware
messages than intended.  Fix it by using the proper counter.
Fixes: 9751e8e71487 ("bnxt_en: reduce timeout on initial HWRM calls")
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 0000b81a063b5f3ab82fa18041c28327ce72c312 by davem
bnxt_en: Wait longer for the firmware message response to complete.
The code waits up to 20 usec for the firmware response to complete once
we've seen the valid response header in the buffer.  It turns out that
in some scenarios, this wait time is not long enough. Extend it to 150
usec and use usleep_range() instead of udelay().
Fixes: 9751e8e71487 ("bnxt_en: reduce timeout on initial HWRM calls")
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.h (diff)
The file was modifieddrivers/net/ethernet/broadcom/bnxt/bnxt.c (diff)
Commit 97f0082a0592212fc15d4680f5a4d80f79a1687c by davem
net: Set rtm_table to RT_TABLE_COMPAT for ipv6 for tables > 255
Set rtm_table to RT_TABLE_COMPAT for ipv6 for tables > 255 to keep
legacy software happy. This is similar to what was done for ipv4 in
commit 709772e6e065 ("net: Fix routing tables with id > 255 for legacy
software").
Signed-off-by: Kalash Nainwal <kalash@arista.com> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifiednet/ipv6/route.c (diff)
Commit 6ff7b060535e87c2ae14dd8548512abfdda528fb by davem
mdio_bus: Fix use-after-free on device_register fails
KASAN has found use-after-free in fixed_mdio_bus_init, commit
0c692d07842a ("drivers/net/phy/mdio_bus.c: call put_device on
device_register() failure") call put_device() while device_register()
fails,give up the last reference to the device and allow mdiobus_release
to be executed
,kfreeing the bus. However in most drives, mdiobus_free be called to
free the bus while mdiobus_register fails. use-after-free occurs when
access bus again, this patch revert it to let mdiobus_free free the bus.
KASAN report details as below:
BUG: KASAN: use-after-free in mdiobus_free+0x85/0x90
drivers/net/phy/mdio_bus.c:482 Read of size 4 at addr ffff8881dc824d78
by task syz-executor.0/3524
CPU: 1 PID: 3524 Comm: syz-executor.0 Not tainted 5.0.0-rc7+ #45
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.10.2-1ubuntu1 04/01/2014 Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0xfa/0x1ce lib/dump_stack.c:113
print_address_description+0x65/0x270 mm/kasan/report.c:187
kasan_report+0x149/0x18d mm/kasan/report.c:317
mdiobus_free+0x85/0x90 drivers/net/phy/mdio_bus.c:482
fixed_mdio_bus_init+0x283/0x1000 [fixed_phy]
? 0xffffffffc0e40000
? 0xffffffffc0e40000
? 0xffffffffc0e40000
do_one_initcall+0xfa/0x5ca init/main.c:887
do_init_module+0x204/0x5f6 kernel/module.c:3460
load_module+0x66b2/0x8570 kernel/module.c:3808
__do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x462e99 Code: f7 d8
64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6
48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73
01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f6215c19c58
EFLAGS: 00000246 ORIG_RAX: 0000000000000139 RAX: ffffffffffffffda RBX:
000000000073bf00 RCX: 0000000000462e99 RDX: 0000000000000000 RSI:
0000000020000080 RDI: 0000000000000003 RBP: 00007f6215c19c70 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007f6215c1a6bc R13: 00000000004bcefb R14:
00000000006f7030 R15: 0000000000000004
Allocated by task 3524:
set_track mm/kasan/common.c:85 [inline]
__kasan_kmalloc.constprop.3+0xa0/0xd0 mm/kasan/common.c:496
kmalloc include/linux/slab.h:545 [inline]
kzalloc include/linux/slab.h:740 [inline]
mdiobus_alloc_size+0x54/0x1b0 drivers/net/phy/mdio_bus.c:143
fixed_mdio_bus_init+0x163/0x1000 [fixed_phy]
do_one_initcall+0xfa/0x5ca init/main.c:887
do_init_module+0x204/0x5f6 kernel/module.c:3460
load_module+0x66b2/0x8570 kernel/module.c:3808
__do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Freed by task 3524:
set_track mm/kasan/common.c:85 [inline]
__kasan_slab_free+0x130/0x180 mm/kasan/common.c:458
slab_free_hook mm/slub.c:1409 [inline]
slab_free_freelist_hook mm/slub.c:1436 [inline]
slab_free mm/slub.c:2986 [inline]
kfree+0xe1/0x270 mm/slub.c:3938
device_release+0x78/0x200 drivers/base/core.c:919
kobject_cleanup lib/kobject.c:662 [inline]
kobject_release lib/kobject.c:691 [inline]
kref_put include/linux/kref.h:67 [inline]
kobject_put+0x146/0x240 lib/kobject.c:708
put_device+0x1c/0x30 drivers/base/core.c:2060
__mdiobus_register+0x483/0x560 drivers/net/phy/mdio_bus.c:382
fixed_mdio_bus_init+0x26b/0x1000 [fixed_phy]
do_one_initcall+0xfa/0x5ca init/main.c:887
do_init_module+0x204/0x5f6 kernel/module.c:3460
load_module+0x66b2/0x8570 kernel/module.c:3808
__do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
The buggy address belongs to the object at ffff8881dc824c80
which belongs to the cache kmalloc-2k of size 2048 The buggy address is
located 248 bytes inside of
2048-byte region [ffff8881dc824c80, ffff8881dc825480) The buggy address
belongs to the page: page:ffffea0007720800 count:1 mapcount:0
mapping:ffff8881f6c02800 index:0x0 compound_mapcount: 0 flags:
0x2fffc0000010200(slab|head) raw: 02fffc0000010200 0000000000000000
0000000500000001 ffff8881f6c02800 raw: 0000000000000000 00000000800f000f
00000001ffffffff 0000000000000000 page dumped because: kasan: bad access
detected
Memory state around the buggy address:
ffff8881dc824c00: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
ffff8881dc824c80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>ffff8881dc824d00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                                                               ^
ffff8881dc824d80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
ffff8881dc824e00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
Fixes: 0c692d07842a ("drivers/net/phy/mdio_bus.c: call put_device on
device_register() failure") Signed-off-by: YueHaibing
<yuehaibing@huawei.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/phy/mdio_bus.c (diff)
Commit 543fc3fb41834a7f2e4cfa1dcf8aa9c472a52e9a by davem
udpv6: add the required annotation to mib type
In commit 029a37434880 ("udp6: cleanup stats accounting in recvmsg()") I
forgot to add the percpu annotation for the mib pointer. Add it, and
make sparse happy.
Fixes: 029a37434880 ("udp6: cleanup stats accounting in recvmsg()")
Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/ipv6/udp.c (diff)
Commit 5de362df44d71fc8f6b153ae4eaa2a1284c84490 by davem
fou6: fix proto error handler argument type
Last argument of gue6_err_proto_handler() has a wrong type annotation,
fix it and make sparse happy again.
Fixes: b8a51b38e4d4 ("fou, fou6: ICMP error handlers for FoU and GUE")
Signed-off-by: Paolo Abeni <pabeni@redhat.com> Acked-by: Stefano Brivio
<sbrivio@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv6/fou6.c (diff)
Commit 424a7cd078401591fc45587ffb2c012d7f402fb7 by davem
udpv6: fix possible user after free in error handler
Before derefencing the encap pointer, commit e7cc082455cb ("udp: Support
for error handlers of tunnels with arbitrary destination port") checks
for a NULL value, but the two fetch operation can race with removal. Fix
the above using a single access. Also fix a couple of type annotations,
to make sparse happy.
Fixes: e7cc082455cb ("udp: Support for error handlers of tunnels with
arbitrary destination port") Signed-off-by: Paolo Abeni
<pabeni@redhat.com> Acked-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv6/udp.c (diff)
Commit 92b95364235b6441a36861ff0ca4541a13351d60 by davem
udp: fix possible user after free in error handler
Similar to the previous commit, this addresses the same issue for ipv4:
use a single fetch operation and use the correct rcu annotation.
Fixes: e7cc082455cb ("udp: Support for error handlers of tunnels with
arbitrary destination port") Signed-off-by: Paolo Abeni
<pabeni@redhat.com> Acked-by: Stefano Brivio <sbrivio@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/udp.c (diff)
Commit b4b8bb69c104a9345c528692cde5aa520d885360 by daniel
bpf, doc: add bpf list as secondary entry to maintainers file
We recently created a bpf@vger.kernel.org list
(https://lore.kernel.org/bpf/) for BPF related discussions, originally
in context of BPF track at LSF/MM for topic discussions. It's *optional*
but *desirable* to keep it in Cc for BPF related
kernel/loader/llvm/tooling threads, meaning also infrastructure like
llvm that sits on top of kernel but is crucial to BPF. In any case,
netdev with it's bpf delegate is *as-is* today primary list for patches,
so nothing changes in the workflow. Main purpose is to have some more
awareness for the bpf@vger.kernel.org list that folks can Cc for BPF
specific topics.
Acked-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Daniel
Borkmann <daniel@iogearbox.net>
The file was modifiedMAINTAINERS (diff)
Commit 61a65d32fe91c2b6ea3aed47c5f1efc7acd89ba2 by davem
net: phy: marvell10g: Fix Multi-G advertisement to only advertise 10G
Some Marvell Alaska PHYs support 2.5G, 5G and 10G BaseT links. Their
default behaviour is to advertise all of these modes, but at the moment,
only 10GBaseT is supported. To prevent link partners from establishing
link at that speed, clear these modes upon configuring aneg parameters.
Fixes: 20b2af32ff3f ("net: phy: add Marvell Alaska X 88X3310 10Gigabit
PHY support") Signed-off-by: Maxime Chevallier
<maxime.chevallier@bootlin.com> Reported-by: Russell King
<linux@armlinux.org.uk> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/phy/marvell10g.c (diff)
Commit 4593403fa516a5a4cffe6883c5062d60932cbfbe by davem
net: set static variable an initial value in atl2_probe()
cards_found is a static variable, but when it enters atl2_probe(),
cards_found is set to zero, the value is not consistent with last probe,
so next behavior is not our expect.
Signed-off-by: Mao Wenan <maowenan@huawei.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/atheros/atlx/atl2.c (diff)
Commit af548a27b158d548d41e56255e6eaca1658cc3be by davem
selftests: fib_tests: sleep after changing carrier. again.
Just like commit e2ba732a1681 ("selftests: fib_tests: sleep after
changing carrier"), wait one second to allow linkwatch to propagate the
carrier change to the stack.
There are two sets of carrier tests. The first slept after the carrier
was set to off, and when the second set ran, it was likely that the
linkwatch would be able to run again without much delay, reducing the
likelihood of a race. However, if you run 'fib_tests.sh -t carrier' on a
loop, you will quickly notice the failures.
Sleeping on the second set of tests make the failures go away.
Cc: David Ahern <dsahern@gmail.com> Signed-off-by: Thadeu Lima de Souza
Cascardo <cascardo@canonical.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_tests.sh (diff)
Commit 278e2148c07559dd4ad8602f22366d61eb2ee7b7 by davem
Revert "bridge: do not add port to router list when receives query with
source 0.0.0.0"
This reverts commit 5a2de63fd1a5 ("bridge: do not add port to router
list when receives query with source 0.0.0.0") and commit 0fe5119e267f
("net: bridge: remove ipv6 zero address check in mcast queries")
The reason is RFC 4541 is not a standard but suggestive. Currently we
will elect 0.0.0.0 as Querier if there is no ip address configured on
bridge. If we do not add the port which recives query with source
0.0.0.0 to router list, the IGMP reports will not be about to forward to
Querier, IGMP data will also not be able to forward to dest.
As Nikolay suggested, revert this change first and add a boolopt api to
disable none-zero election in future if needed.
Reported-by: Linus Lüssing <linus.luessing@c0d3.blue> Reported-by:
Sebastian Gottschall <s.gottschall@newmedia-net.de> Fixes: 5a2de63fd1a5
("bridge: do not add port to router list when receives query with source
0.0.0.0") Fixes: 0fe5119e267f ("net: bridge: remove ipv6 zero address
check in mcast queries") Signed-off-by: Hangbin Liu
<liuhangbin@gmail.com> Acked-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 99407d8fa3abfe41b04d9321a9df0a0e30a57fae by davem
net: dsa: Remove documentation for port_fdb_prepare
This callback was removed some time ago, also remove the documentation.
Fixes: 1b6dd556c304 ("net: dsa: Remove prepare phase for FDB")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Reviewed-by: Florian
Fainelli <f.fainelli@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedDocumentation/networking/dsa/dsa.txt (diff)
Commit 797a22bd5298c2674d927893f46cadf619dad11d by davem
net/x25: fix a race in x25_bind()
syzbot was able to trigger another soft lockup [1]
I first thought it was the O(N^2) issue I mentioned in my prior fix
(f657d22ee1f "net/x25: do not hold the cpu too long in x25_new_lci()"),
but I eventually found that x25_bind() was not checking SOCK_ZAPPED
state under socket lock protection.
This means that multiple threads can end up calling x25_insert_socket()
for the same socket, and corrupt x25_list
[1] watchdog: BUG: soft lockup - CPU#0 stuck for 123s!
[syz-executor.2:10492] Modules linked in: irq event stamp: 27515
hardirqs last  enabled at (27514): [<ffffffff81006673>]
trace_hardirqs_on_thunk+0x1a/0x1c hardirqs last disabled at (27515):
[<ffffffff8100668f>] trace_hardirqs_off_thunk+0x1a/0x1c softirqs last
enabled at (32): [<ffffffff8632ee73>] x25_get_neigh+0xa3/0xd0
net/x25/x25_link.c:336 softirqs last disabled at (34):
[<ffffffff86324bc3>] x25_find_socket+0x23/0x140 net/x25/af_x25.c:341
CPU: 0 PID: 10492 Comm: syz-executor.2 Not tainted 5.0.0-rc7+ #88
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
Google 01/01/2011 RIP: 0010:__sanitizer_cov_trace_pc+0x4/0x50
kernel/kcov.c:97 Code: f4 ff ff ff e8 11 9f ea ff 48 c7 05 12 fb e5 08
00 00 00 00 e9 c8 e9 ff ff 90 90 90 90 90 90 90 90 90 90 90 90 90 55 48
89 e5 <48> 8b 75 08 65 48 8b 04 25 40 ee 01 00 65 8b 15 38 0c 92 7e 81
e2 RSP: 0018:ffff88806e94fc48 EFLAGS: 00000286 ORIG_RAX:
ffffffffffffff13 RAX: 1ffff1100d84dac5 RBX: 0000000000000001 RCX:
ffffc90006197000 RDX: 0000000000040000 RSI: ffffffff86324bf3 RDI:
ffff88806c26d628 RBP: ffff88806e94fc48 R08: ffff88806c1c6500 R09:
fffffbfff1282561 R10: fffffbfff1282560 R11: ffffffff89412b03 R12:
ffff88806c26d628 R13: ffff888090455200 R14: dffffc0000000000 R15:
0000000000000000 FS:  00007f3a107e4700(0000) GS:ffff8880ae800000(0000)
knlGS:0000000000000000 CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f3a107e3db8 CR3: 00000000a5544000 CR4: 00000000001406f0 DR0:
0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 DR3:
0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 Call Trace:
__x25_find_socket net/x25/af_x25.c:327 [inline]
x25_find_socket+0x7d/0x140 net/x25/af_x25.c:342
x25_new_lci net/x25/af_x25.c:355 [inline]
x25_connect+0x380/0xde0 net/x25/af_x25.c:784
__sys_connect+0x266/0x330 net/socket.c:1662
__do_sys_connect net/socket.c:1673 [inline]
__se_sys_connect net/socket.c:1670 [inline]
__x64_sys_connect+0x73/0xb0 net/socket.c:1670
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x457e29 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:00007f3a107e3c78
EFLAGS: 00000246 ORIG_RAX: 000000000000002a RAX: ffffffffffffffda RBX:
0000000000000003 RCX: 0000000000457e29 RDX: 0000000000000012 RSI:
0000000020000200 RDI: 0000000000000005 RBP: 000000000073c040 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007f3a107e46d4 R13: 00000000004be362 R14:
00000000004ceb98 R15: 00000000ffffffff Sending NMI from CPU 0 to CPUs 1:
NMI backtrace for cpu 1 CPU: 1 PID: 10493 Comm: syz-executor.3 Not
tainted 5.0.0-rc7+ #88 Hardware name: Google Google Compute
Engine/Google Compute Engine, BIOS Google 01/01/2011 RIP:
0010:__read_once_size include/linux/compiler.h:193 [inline] RIP:
0010:queued_write_lock_slowpath+0x143/0x290 kernel/locking/qrwlock.c:86
Code: 4c 8d 2c 01 41 83 c7 03 41 0f b6 45 00 41 38 c7 7c 08 84 c0 0f 85
0c 01 00 00 8b 03 3d 00 01 00 00 74 1a f3 90 41 0f b6 55 00 <41> 38 d7
7c eb 84 d2 74 e7 48 89 df e8 cc aa 4e 00 eb dd be 04 00 RSP:
0018:ffff888085c47bd8 EFLAGS: 00000206 RAX: 0000000000000300 RBX:
ffffffff89412b00 RCX: 1ffffffff1282560 RDX: 0000000000000000 RSI:
0000000000000004 RDI: ffffffff89412b00 RBP: ffff888085c47c70 R08:
1ffffffff1282560 R09: fffffbfff1282561 R10: fffffbfff1282560 R11:
ffffffff89412b03 R12: 00000000000000ff R13: fffffbfff1282560 R14:
1ffff11010b88f7d R15: 0000000000000003 FS:  00007fdd04086700(0000)
GS:ffff8880ae900000(0000) knlGS:0000000000000000 CS:  0010 DS: 0000 ES:
0000 CR0: 0000000080050033 CR2: 00007fdd04064db8 CR3: 0000000090be0000
CR4: 00000000001406e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400 Call Trace:
queued_write_lock include/asm-generic/qrwlock.h:104 [inline]
do_raw_write_lock+0x1d6/0x290 kernel/locking/spinlock_debug.c:203
__raw_write_lock_bh include/linux/rwlock_api_smp.h:204 [inline]
_raw_write_lock_bh+0x3b/0x50 kernel/locking/spinlock.c:312
x25_insert_socket+0x21/0xe0 net/x25/af_x25.c:267
x25_bind+0x273/0x340 net/x25/af_x25.c:703
__sys_bind+0x23f/0x290 net/socket.c:1481
__do_sys_bind net/socket.c:1492 [inline]
__se_sys_bind net/socket.c:1490 [inline]
__x64_sys_bind+0x73/0xb0 net/socket.c:1490
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x457e29
Fixes: 90c27297a9bf ("X.25 remove bkl in bind") Signed-off-by: Eric
Dumazet <edumazet@google.com> Cc: andrew hendry
<andrew.hendry@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/x25/af_x25.c (diff)
Commit bf50b606cfd85ac8d3d0adb711f3e22204059848 by davem
tcp: repaired skbs must init their tso_segs
syzbot reported a WARN_ON(!tcp_skb_pcount(skb)) in tcp_send_loss_probe()
[1]
This was caused by TCP_REPAIR sent skbs that inadvertenly were missing a
call to tcp_init_tso_segs()
[1] WARNING: CPU: 1 PID: 0 at net/ipv4/tcp_output.c:2534
tcp_send_loss_probe+0x771/0x8a0 net/ipv4/tcp_output.c:2534 Kernel panic
- not syncing: panic_on_warn set ... CPU: 1 PID: 0 Comm: swapper/1 Not
tainted 5.0.0-rc7+ #77 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
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:178 [inline]
fixup_bug arch/x86/kernel/traps.c:173 [inline]
do_error_trap+0x11b/0x200 arch/x86/kernel/traps.c:271
do_invalid_op+0x37/0x50 arch/x86/kernel/traps.c:290
invalid_op+0x14/0x20 arch/x86/entry/entry_64.S:973 RIP:
0010:tcp_send_loss_probe+0x771/0x8a0 net/ipv4/tcp_output.c:2534 Code: 88
fc ff ff 4c 89 ef e8 ed 75 c8 fb e9 c8 fc ff ff e8 43 76 c8 fb e9 63 fd
ff ff e8 d9 75 c8 fb e9 94 f9 ff ff e8 bf 03 91 fb <0f> 0b e9 7d fa ff
ff e8 b3 03 91 fb 0f b6 1d 37 43 7a 03 31 ff 89 RSP:
0018:ffff8880ae907c60 EFLAGS: 00010206 RAX: ffff8880a989c340 RBX:
0000000000000000 RCX: ffffffff85dedbdb RDX: 0000000000000100 RSI:
ffffffff85dee0b1 RDI: 0000000000000005 RBP: ffff8880ae907c90 R08:
ffff8880a989c340 R09: ffffed10147d1ae1 R10: ffffed10147d1ae0 R11:
ffff8880a3e8d703 R12: ffff888091b90040 R13: ffff8880a3e8d540 R14:
0000000000008000 R15: ffff888091b90860
tcp_write_timer_handler+0x5c0/0x8a0 net/ipv4/tcp_timer.c:583
tcp_write_timer+0x10e/0x1d0 net/ipv4/tcp_timer.c:607
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:292
invoke_softirq kernel/softirq.c:373 [inline]
irq_exit+0x180/0x1d0 kernel/softirq.c:413
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
</IRQ> RIP: 0010:native_safe_halt+0x2/0x10
arch/x86/include/asm/irqflags.h:58 Code: ff ff ff 48 89 c7 48 89 45 d8
e8 59 0c a1 fa 48 8b 45 d8 e9 ce fe ff ff 48 89 df e8 48 0c a1 fa eb 82
90 90 90 90 90 90 fb f4 <c3> 0f 1f 00 66 2e 0f 1f 84 00 00 00 00 00 f4
c3 90 90 90 90 90 90 RSP: 0018:ffff8880a98afd78 EFLAGS: 00000286
ORIG_RAX: ffffffffffffff13 RAX: 1ffffffff1125061 RBX: ffff8880a989c340
RCX: 0000000000000000 RDX: dffffc0000000000 RSI: 0000000000000001 RDI:
ffff8880a989cbbc RBP: ffff8880a98afda8 R08: ffff8880a989c340 R09:
0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12:
0000000000000001 R13: ffffffff889282f8 R14: 0000000000000001 R15:
0000000000000000
arch_cpu_idle+0x10/0x20 arch/x86/kernel/process.c:555
default_idle_call+0x36/0x90 kernel/sched/idle.c:93
cpuidle_idle_call kernel/sched/idle.c:153 [inline]
do_idle+0x386/0x570 kernel/sched/idle.c:262
cpu_startup_entry+0x1b/0x20 kernel/sched/idle.c:353
start_secondary+0x404/0x5c0 arch/x86/kernel/smpboot.c:271
secondary_startup_64+0xa4/0xb0 arch/x86/kernel/head_64.S:243 Kernel
Offset: disabled Rebooting in 86400 seconds..
Fixes: 79861919b889 ("tcp: fix TCP_REPAIR xmit queue setup")
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Cc: Andrey Vagin <avagin@openvz.org> Cc:
Soheil Hassas Yeganeh <soheil@google.com> Cc: Neal Cardwell
<ncardwell@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_output.c (diff)
Commit 4c8e0459b585e2a7b367545be3e102737f1e489f by davem
net: phy: realtek: Dummy IRQ calls for RTL8366RB
This fixes a regression introduced by commit
0d2e778e38e0ddffab4bb2b0e9ed2ad5165c4bf7
"net: phy: replace PHY_HAS_INTERRUPT with a check for config_intr and
ack_interrupt".
This assumes that a PHY cannot trigger interrupt unless it has
.config_intr() or .ack_interrupt() implemented. A later patch makes the
code assume both need to be implemented for interrupts to be present.
But this PHY (which is inside a DSA) will happily fire interrupts
without either callback.
Implement dummy callbacks for .config_intr() and
.ack_interrupt() in the phy header to fix this.
Tested on the RTL8366RB on D-Link DIR-685.
Fixes: 0d2e778e38e0 ("net: phy: replace PHY_HAS_INTERRUPT with a check
for config_intr and ack_interrupt") Cc: Heiner Kallweit
<hkallweit1@gmail.com> Signed-off-by: Linus Walleij
<linus.walleij@linaro.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedinclude/linux/phy.h (diff)
The file was modifieddrivers/net/phy/realtek.c (diff)
The file was modifiedMakefile (diff)
Commit 8f67c90ee9148eab3d2b4393c3cf76489b27f87c by davem
net/sched: act_ipt: fix refcount leak when replace fails
After commit 4e8ddd7f1758 ("net: sched: don't release reference on
action overwrite"), the error path of all actions was converted to drop
refcount also when the action was being overwritten. But we forgot
act_ipt_init(), in case allocation of 'tname' was not successful:
# tc action add action xt -j LOG --log-prefix hello index 100
tablename: mangle hook: NF_IP_POST_ROUTING
        target:  LOG level warning prefix "hello" index 100
# tc action show action xt
total acts 1
         action order 0: tablename: mangle  hook: NF_IP_POST_ROUTING
        target  LOG level warning prefix "hello"
        index 100 ref 1 bind 0
# tc action replace action xt -j LOG --log-prefix world index 100
tablename: mangle hook: NF_IP_POST_ROUTING
        target:  LOG level warning prefix "world" index 100
RTNETLINK answers: Cannot allocate memory
We have an error talking to the kernel
# tc action show action xt
total acts 1
         action order 0: tablename: mangle  hook: NF_IP_POST_ROUTING
        target  LOG level warning prefix "hello"
        index 100 ref 2 bind 0
Ensure we call tcf_idr_release(), in case 'tname' allocation failed,
also when the action is being replaced.
Fixes: 4e8ddd7f1758 ("net: sched: don't release reference on action
overwrite") Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/sched/act_ipt.c (diff)
Commit 6191da98062d25276a3b88fb2a94dcbcfb3ea65d by davem
net/sched: act_skbedit: fix refcount leak when replace fails
when act_skbedit was converted to use RCU in the data plane, we added an
error path, but we forgot to drop the action refcount in case of failure
during a 'replace' operation:
# tc actions add action skbedit ptype otherhost pass index 100
# tc action show action skbedit
total acts 1
         action order 0: skbedit  ptype otherhost pass
         index 100 ref 1 bind 0
# tc actions replace action skbedit ptype otherhost drop index 100
RTNETLINK answers: Cannot allocate memory
We have an error talking to the kernel
# tc action show action skbedit
total acts 1
         action order 0: skbedit  ptype otherhost pass
         index 100 ref 2 bind 0
Ensure we call tcf_idr_release(), in case 'params_new' allocation
failed, also when the action is being replaced.
Fixes: c749cdda9089 ("net/sched: act_skbedit: don't use spinlock in the
data path") Signed-off-by: Davide Caratti <dcaratti@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/sched/act_skbedit.c (diff)
Commit cffde20164d2a1e7d647b63b4d8fac11bf48b500 by davem
net: dsa: lantiq: Add GPHY firmware files
This adds the file names of the FW files which this driver handles into
the module description.
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/lantiq_gswip.c (diff)
Commit 71828b2240692cec0e68b8d867bc00e1745e7fae by davem
tun: fix blocking read
This patch moves setting of the current state into the loop. Otherwise
the task may end up in a busy wait loop if none of the break conditions
are met.
Signed-off-by: Timur Celik <mail@timurcelik.de> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/tun.c (diff)
Commit 014e90ca44eeb8434f135e26a3cc17e57d64d85d by arnd
ARM: dts: gemini: Re-enable display controller
commit 137cd7100ec6fa36d610e106df00acb4d8af99df
"ARM: dts: Enable Gemini flash access" contained a bug by disabling the
display controller, while the whole idea with the patch was to enable
flash access AND the display controller, simultaneously. Fix it up.
Fixes: 137cd7100ec6 ("ARM: dts: Enable Gemini flash access")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Arnd Bergmann <arnd@arndb.de>
The file was modifiedarch/arm/boot/dts/gemini-dlink-dir-685.dts (diff)
Commit c9bd505dbd9d3dc80c496f88eafe70affdcf1ba6 by ulf.hansson
mmc: spi: Fix card detection during probe
When using the mmc_spi driver with a card-detect pin, I noticed that the
card was not detected immediately after probe, but only after it was
unplugged and plugged back in (and the CD IRQ fired).
The call tree looks something like this:
mmc_spi_probe
mmc_add_host
   mmc_start_host
     _mmc_detect_change
       mmc_schedule_delayed_work(&host->detect, 0)
         mmc_rescan
           host->bus_ops->detect(host)
             mmc_detect
               _mmc_detect_card_removed
                 host->ops->get_cd(host)
                   mmc_gpio_get_cd -> -ENOSYS (ctx->cd_gpio not set)
mmc_gpiod_request_cd
   ctx->cd_gpio = desc
To fix this issue, call mmc_detect_change after the card-detect GPIO/IRQ
is registered.
Signed-off-by: Jonathan Neuschäfer <j.neuschaefer@gmx.net> Reviewed-by:
Linus Walleij <linus.walleij@linaro.org> Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
The file was modifieddrivers/mmc/host/mmc_spi.c (diff)
Commit 5c27ff5db1491a947264d6d4e4cbe43ae6535bae by ulf.hansson
mmc: tmio_mmc_core: don't claim spurious interrupts
I have encountered an interrupt storm during the eMMC chip probing (and
the chip finally didn't get detected).  It turned out that U-Boot left
the DMAC interrupts enabled while the Linux driver  didn't use those.
The SDHI driver's interrupt handler somehow assumes that, even if an
SDIO interrupt didn't happen, it should return IRQ_HANDLED.  I think
that if none of the enabled interrupts happened and got handled, we
should return IRQ_NONE -- that way the kernel IRQ code recoginizes a
spurious interrupt and masks it off pretty quickly...
Fixes: 7729c7a232a9 ("mmc: tmio: Provide separate interrupt handlers")
Signed-off-by: Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Tested-by:
Wolfram Sang <wsa+renesas@sang-engineering.com> Reviewed-by: Simon
Horman <horms+renesas@verge.net.au> Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
The file was modifieddrivers/mmc/host/tmio_mmc_core.c (diff)
Commit 53a41cb7ed381edee91029cdcabe9b3250f43f4d by torvalds
Revert "x86/fault: BUG() when uaccess helpers fault on kernel addresses"
This reverts commit 9da3f2b74054406f87dff7101a569217ffceb29b.
It was well-intentioned, but wrong.  Overriding the exception tables for
instructions for random reasons is just wrong, and that is what the new
code did.
It caused problems for tracing, and it caused problems for
strncpy_from_user(), because the new checks made perfectly valid use
cases break, rather than catch things that did bad things.
Unchecked user space accesses are a problem, but that's not a reason to
add invalid checks that then people have to work around with silly flags
(in this case, that 'kernel_uaccess_faults_ok' flag, which is just an
odd way to say "this commit was wrong" and was sprinked into random
places to hide the wrongness).
The real fix to unchecked user space accesses is to get rid of the
special "let's not check __get_user() and __put_user() at all" logic.
Make __{get|put}_user() be just aliases to the regular {get|put}_user()
functions, and make it impossible to access user space without having
the proper checks in places.
The raison d'être of the special double-underscore versions used to be
that the range check was expensive, and if you did multiple user
accesses, you'd do the range check up front (like the signal frame
handling code, for example).  But SMAP (on x86) and PAN (on ARM) have
made that optimization pointless, because the _real_ expense is the "set
CPU flag to allow user space access".
Do let's not break the valid cases to catch invalid cases that shouldn't
even exist.
Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Kees Cook
<keescook@chromium.org> Cc: Tobin C. Harding <tobin@kernel.org> Cc:
Borislav Petkov <bp@alien8.de> Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Andy Lutomirski <luto@kernel.org> Cc: Jann Horn <jannh@google.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedarch/x86/mm/extable.c (diff)
The file was modifiedfs/namespace.c (diff)
The file was modifiedmm/maccess.c (diff)
The file was modifiedinclude/linux/sched.h (diff)
Commit 9919a363a5cb57c2b64c4803b4d2dd45e90bf230 by davem
net: dsa: fix a leaked reference by adding missing of_node_put
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:
./net/dsa/port.c:294:1-7: ERROR: missing of_node_put; acquired a node
pointer with refcount incremented on line 284, but without a
corresponding object release within this function.
./net/dsa/dsa2.c:627:3-9: ERROR: missing of_node_put; acquired a node
pointer with refcount incremented on line 618, but without a
corresponding object release within this function.
./net/dsa/dsa2.c:630:3-9: ERROR: missing of_node_put; acquired a node
pointer with refcount incremented on line 618, but without a
corresponding object release within this function.
./net/dsa/dsa2.c:636:3-9: ERROR: missing of_node_put; acquired a node
pointer with refcount incremented on line 618, but without a
corresponding object release within this function.
./net/dsa/dsa2.c:639:1-7: ERROR: missing of_node_put; acquired a node
pointer with refcount incremented on line 618, but without a
corresponding object release within this function.
Signed-off-by: Wen Yang <wen.yang99@zte.com.cn> Reviewed-by: Vivien
Didelot <vivien.didelot@gmail.com> Cc: Andrew Lunn <andrew@lunn.ch> Cc:
Vivien Didelot <vivien.didelot@gmail.com> Cc: Florian Fainelli
<f.fainelli@gmail.com> Cc: "David S. Miller" <davem@davemloft.net> Cc:
Vivien Didelot <vivien.didelot@gmail.com> Cc: netdev@vger.kernel.org Cc:
linux-kernel@vger.kernel.org Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/dsa/port.c (diff)
The file was modifiednet/dsa/dsa2.c (diff)
Commit a3df633a3c92bb96b06552c3f828d7c267774379 by davem
net: sched: act_tunnel_key: fix NULL pointer dereference during init
Metadata pointer is only initialized for action TCA_TUNNEL_KEY_ACT_SET,
but it is unconditionally dereferenced in tunnel_key_init() error
handler. Verify that metadata pointer is not NULL before dereferencing
it in tunnel_key_init error handling code.
Fixes: ee28bb56ac5b ("net/sched: fix memory leak in
act_tunnel_key_init()") Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Reviewed-by: Davide Caratti <dcaratti@redhat.com> Signed-off-by: David
S. Miller <davem@davemloft.net>
The file was modifiednet/sched/act_tunnel_key.c (diff)
Commit ff7b11aa481f682e0e9711abfeb7d03f5cd612bf by davem
net: socket: set sock->sk to NULL after calling proto_ops::release()
Commit 9060cb719e61 ("net: crypto set sk to NULL when af_alg_release.")
fixed a use-after-free in sockfs_setattr() when an AF_ALG socket is
closed concurrently with fchownat().  However, it ignored that many
other proto_ops::release() methods don't set sock->sk to NULL and
therefore allow the same use-after-free:
    - base_sock_release
   - bnep_sock_release
   - cmtp_sock_release
   - data_sock_release
   - dn_release
   - hci_sock_release
   - hidp_sock_release
   - iucv_sock_release
   - l2cap_sock_release
   - llcp_sock_release
   - llc_ui_release
   - rawsock_release
   - rfcomm_sock_release
   - sco_sock_release
   - svc_release
   - vcc_release
   - x25_release
Rather than fixing all these and relying on every socket type to get
this right forever, just make __sock_release() set sock->sk to NULL
itself after calling proto_ops::release().
Reproducer that produces the KASAN splat when any of these socket types
are configured into the kernel:
    #include <pthread.h>
   #include <stdlib.h>
   #include <sys/socket.h>
   #include <unistd.h>
    pthread_t t;
   volatile int fd;
    void *close_thread(void *arg)
   {
       for (;;) {
           usleep(rand() % 100);
           close(fd);
       }
   }
    int main()
   {
       pthread_create(&t, NULL, close_thread, NULL);
       for (;;) {
           fd = socket(rand() % 50, rand() % 11, 0);
           fchownat(fd, "", 1000, 1000, 0x1000);
           close(fd);
       }
   }
Fixes: 86741ec25462 ("net: core: Add a UID field to struct sock.")
Signed-off-by: Eric Biggers <ebiggers@google.com> Acked-by: Cong Wang
<xiyou.wangcong@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/socket.c (diff)
Commit 2a418cf3f5f1caf911af288e978d61c9844b0695 by bp
x86/uaccess: Don't leak the AC flag into __put_user() value evaluation
When calling __put_user(foo(), ptr), the __put_user() macro would call
foo() in between __uaccess_begin() and __uaccess_end().  If that code
were buggy, then those bugs would be run without SMAP protection.
Fortunately, there seem to be few instances of the problem in the
kernel. Nevertheless, __put_user() should be fixed to avoid doing this.
Therefore, evaluate __put_user()'s argument before setting AC.
This issue was noticed when an objtool hack by Peter Zijlstra complained
about genregs_get() and I compared the assembly output to the C source.
[ bp: Massage commit message and fixed up whitespace. ]
Fixes: 11f1a4b9755f ("x86: reorganize SMAP handling in user space
accesses") Signed-off-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Borislav Petkov <bp@suse.de> Acked-by: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Brian Gerst <brgerst@gmail.com> Cc: Josh
Poimboeuf <jpoimboe@redhat.com> Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: stable@vger.kernel.org Link:
http://lkml.kernel.org/r/20190225125231.845656645@infradead.org
The file was modifiedarch/x86/include/asm/uaccess.h (diff)
Commit 29b00e609960ae0fcff382f4c7079dd0874a5311 by torvalds
tmpfs: fix uninitialized return value in shmem_link
When we made the shmem_reserve_inode call in shmem_link conditional, we
forgot to update the declaration for ret so that it always has a known
value.  Dan Carpenter pointed out this deficiency in the original patch.
Fixes: 1062af920c07 ("tmpfs: fix link accounting when a tmpfile is
linked in") Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by:
Hugh Dickins <hughd@google.com> Cc: Matej Kupljen
<matej.kupljen@gmail.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc:
Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/shmem.c (diff)
Commit 7d762d69145a54d169f58e56d6dac57a5508debc by torvalds
afs: Fix manually set volume location server list
When a cell with a volume location server list is added manually by
echoing the details into /proc/net/afs/cells, a record is added but the
flag saying it has been looked up isn't set.
This causes the VL server rotation code to wait forever, with the top of
/proc/pid/stack looking like:
afs_select_vlserver+0x3a6/0x6f3
afs_vl_lookup_vldb+0x4b/0x92
afs_create_volume+0x25/0x1b9
...
with the thread stuck in afs_start_vl_iteration() waiting for
AFS_CELL_FL_NO_LOOKUP_YET to be cleared.
Fix this by clearing AFS_CELL_FL_NO_LOOKUP_YET when setting up a record
if that record's details were supplied manually.
Fixes: 0a5143f2f89c ("afs: Implement VL server rotation") Reported-by:
Dave Botsch <dwb7@cornell.edu> Signed-off-by: David Howells
<dhowells@redhat.com> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedfs/afs/cell.c (diff)
Commit 18836b48ebae20850631ee2916d0cdbb86df813d by paul.burton
MIPS: BCM63XX: provide DMA masks for ethernet devices
The switch to the generic dma ops made dma masks mandatory, breaking
devices having them not set. In case of bcm63xx, it broke ethernet with
the following warning when trying to up the device:
[    2.633123] ------------[ cut here ]------------
[    2.637949] WARNING: CPU: 0 PID: 325 at
./include/linux/dma-mapping.h:516 bcm_enetsw_open+0x160/0xbbc
[    2.647423] Modules linked in: gpio_button_hotplug
[    2.652361] CPU: 0 PID: 325 Comm: ip Not tainted 4.19.16 #0
[    2.658080] Stack : 80520000 804cd3ec 00000000 00000000 804ccc00
87085bdc 87d3f9d4 804f9a17
[    2.666707]         8049cf18 00000145 80a942a0 00000204 80ac0000
10008400 87085b90 eb3d5ab7
[    2.675325]         00000000 00000000 80ac0000 000022b0 00000000
00000000 00000007 00000000
[    2.683954]         0000007a 80500000 0013b381 00000000 80000000
00000000 804a1664 80289878
[    2.692572]         00000009 00000204 80ac0000 00000200 00000002
00000000 00000000 80a90000
[    2.701191]         ...
[    2.703701] Call Trace:
[    2.706244] [<8001f3c8>] show_stack+0x58/0x100
[    2.710840] [<800336e4>] __warn+0xe4/0x118
[    2.715049] [<800337d4>] warn_slowpath_null+0x48/0x64
[    2.720237] [<80289878>] bcm_enetsw_open+0x160/0xbbc
[    2.725347] [<802d1d4c>] __dev_open+0xf8/0x16c
[    2.729913] [<802d20cc>] __dev_change_flags+0x100/0x1c4
[    2.735290] [<802d21b8>] dev_change_flags+0x28/0x70
[    2.740326] [<803539e0>] devinet_ioctl+0x310/0x7b0
[    2.745250] [<80355fd8>] inet_ioctl+0x1f8/0x224
[    2.749939] [<802af290>] sock_ioctl+0x30c/0x488
[    2.754632] [<80112b34>] do_vfs_ioctl+0x740/0x7dc
[    2.759459] [<80112c20>] ksys_ioctl+0x50/0x94
[    2.763955] [<800240b8>] syscall_common+0x34/0x58
[    2.768782] ---[ end trace fb1a6b14d74e28b6 ]---
[    2.773544] bcm63xx_enetsw bcm63xx_enetsw.0: cannot allocate rx ring
512
Fix this by adding appropriate DMA masks for the platform devices.
Fixes: f8c55dc6e828 ("MIPS: use generic dma noncoherent ops for simple
noncoherent platforms") Signed-off-by: Jonas Gorski
<jonas.gorski@gmail.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> Signed-off-by: Paul
Burton <paul.burton@mips.com> Cc: linux-mips@linux-mips.org Cc:
linux-kernel@vger.kernel.org Cc: Ralf Baechle <ralf@linux-mips.org> Cc:
James Hogan <jhogan@kernel.org> Cc: stable@vger.kernel.org # v4.19+
The file was modifiedarch/mips/bcm63xx/dev-enet.c (diff)
Commit ecef67cb10db7b83b3b71c61dbb29aa070ab0112 by davem
tun: remove unnecessary memory barrier
Replace set_current_state with __set_current_state since no memory
barrier is needed at this point.
Signed-off-by: Timur Celik <mail@timurcelik.de> Reviewed-by: Eric
Dumazet <edumazet@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/tun.c (diff)
Commit 9ef6b42ad6fd7929dd1b6092cb02014e382c6a91 by davem
net: Add __icmp_send helper.
Add __icmp_send function having ip_options struct parameter
Signed-off-by: Sergey Nazarov <s-nazarov@yandex.ru> Reviewed-by: Paul
Moore <paul@paul-moore.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/net/icmp.h (diff)
The file was modifiednet/ipv4/icmp.c (diff)
Commit 3da1ed7ac398f34fff1694017a07054d69c5f5c5 by davem
net: avoid use IPCB in cipso_v4_error
Extract IP options in cipso_v4_error and use __icmp_send.
Signed-off-by: Sergey Nazarov <s-nazarov@yandex.ru> Acked-by: Paul Moore
<paul@paul-moore.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedinclude/net/ip.h (diff)
The file was modifiednet/ipv4/ip_options.c (diff)
The file was modifiednet/ipv4/cipso_ipv4.c (diff)
Commit 56de8357049c707e5c881cc9d0e5ffed76388423 by martin.petersen
scsi: lpfc: fix calls to dma_set_mask_and_coherent()
The change to use dma_set_mask_and_coherent() incorrectly made a second
call with the 32 bit DMA mask value when the call with the 64 bit DMA
mask value succeeded.  This resulted in NVMe/FC connections failing due
to corrupted data buffers, and various other SCSI/FCP I/O errors.
Fixes: f30e1bfd6154 ("scsi: lpfc: use dma_set_mask_and_coherent") Cc:
<stable@vger.kernel.org> Suggested-by: Don Dutile <ddutile@redhat.com>
Signed-off-by: Ewan D. Milne <emilne@redhat.com> Signed-off-by: Hannes
Reinecke <hare@suse.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ewan D. Milne <emilne@redhat.com> Signed-off-by: Martin K.
Petersen <martin.petersen@oracle.com>
The file was modifieddrivers/scsi/lpfc/lpfc_init.c (diff)
Commit 33d6667416c73eb0b37f0f10f56d825b15389dab by martin.petersen
scsi: 3w-9xxx: fix calls to dma_set_mask_and_coherent()
The change to use dma_set_mask_and_coherent() incorrectly made a second
call with the 32 bit DMA mask value when the call with the 64 bit DMA
mask value succeeded.
Fixes: b000bced5739 ("scsi: 3w-9xxx: fully convert to the generic DMA
API") Cc: <stable@vger.kernel.org> Signed-off-by: Hannes Reinecke
<hare@suse.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by:
Ewan D. Milne <emilne@redhat.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com>
The file was modifieddrivers/scsi/3w-9xxx.c (diff)
Commit 1feb3b02294994ee3a067c9b6cda6c244fd0ee18 by martin.petersen
scsi: 3w-sas: fix calls to dma_set_mask_and_coherent()
The change to use dma_set_mask_and_coherent() incorrectly made a second
call with the 32 bit DMA mask value when the call with the 64 bit DMA
mask value succeeded.
Fixes: b1fa122930c4 ("scsi: 3w-sas: fully convert to the generic DMA
API") Cc: <stable@vger.kernel.org> Signed-off-by: Hannes Reinecke
<hare@suse.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by:
Ewan D. Milne <emilne@redhat.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com>
The file was modifieddrivers/scsi/3w-sas.c (diff)
Commit c326de562f1fc149da4855a1b9d0433300c2a85d by martin.petersen
scsi: aic94xx: fix calls to dma_set_mask_and_coherent()
The change to use dma_set_mask_and_coherent() incorrectly made a second
call with the 32 bit DMA mask value when the call with the 64 bit DMA
mask value succeeded.
[mkp: fixed subject]
Fixes: 3a21986f1a59 ("scsi: aic94xx: fully convert to the generic DMA
API") Cc: <stable@vger.kernel.org> Signed-off-by: Hannes Reinecke
<hare@suse.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by:
Ewan D. Milne <emilne@redhat.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com>
The file was modifieddrivers/scsi/aic94xx/aic94xx_init.c (diff)
Commit 11ea3824140ca994f4560c4bec6a32d257ef3e83 by martin.petersen
scsi: bfa: fix calls to dma_set_mask_and_coherent()
The change to use dma_set_mask_and_coherent() incorrectly made a second
call with the 32 bit DMA mask value when the call with the 64 bit DMA
mask value succeeded.
[mkp: fixed commit message]
Fixes: a69b080025ea ("scsi: bfa: use dma_set_mask_and_coherent") Cc:
<stable@vger.kernel.org> Suggested-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Christoph
Hellwig <hch@lst.de> Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
The file was modifieddrivers/scsi/bfa/bfad.c (diff)
Commit 732f3238dcf27acb92959a99b7923dc49395980e by martin.petersen
scsi: csiostor: fix calls to dma_set_mask_and_coherent()
The change to use dma_set_mask_and_coherent() incorrectly made a second
call with the 32 bit DMA mask value when the call with the 64 bit DMA
mask value succeeded.
Fixes: c22b332d811b ("scsi: csiostor: switch to generic DMA API") Cc:
<stable@vger.kernel.org> Signed-off-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Ewan D. Milne
<emilne@redhat.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com>
The file was modifieddrivers/scsi/csiostor/csio_init.c (diff)
Commit d9a00459effc30f6de2cdd887b64f15c6c54ae71 by martin.petersen
scsi: hisi_sas: fix calls to dma_set_mask_and_coherent()
The change to use dma_set_mask_and_coherent() incorrectly made a second
call with the 32 bit DMA mask value when the call with the 64 bit DMA
mask value succeeded.
[mkp: fixed commit message]
Fixes: e4db40e7a1a2 ("scsi: hisi_sas: use dma_set_mask_and_coherent")
Cc: <stable@vger.kernel.org> Suggested-by: Ewan D. Milne
<emilne@redhat.com> Signed-off-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Hannes
Reinecke <hare@suse.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com>
The file was modifieddrivers/scsi/hisi_sas/hisi_sas_v3_hw.c (diff)
The file was modifieddrivers/scsi/hisi_sas/hisi_sas_main.c (diff)
Commit 3e344b6cec8e675e692ffddf9977c52638337006 by martin.petersen
scsi: hptiop: fix calls to dma_set_mask()
The change to use dma_set_mask() incorrectly made a second call with the
32 bit DMA mask value when the call with the 64 bit DMA mask value
succeeded.
Fixes: 453cd3700ca3 ("scsi: hptiop: use dma_set_mask") Cc:
<stable@vger.kernel.org> Suggested-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Christoph
Hellwig <hch@lst.de> Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
The file was modifieddrivers/scsi/hptiop.c (diff)
Commit 5603731a15ef9ca317c122cc8c959f1dee1798b4 by ulf.hansson
mmc: tmio: fix access width of Block Count Register
In R-Car Gen2 or later, the maximum number of transfer blocks are
changed from 0xFFFF to 0xFFFFFFFF. Therefore, Block Count Register
should use iowrite32().
If another system (U-boot, Hypervisor OS, etc) uses bit[31:16], this
value will not be cleared. So, SD/MMC card initialization fails.
So, check for the bigger register and use apropriate write. Also, mark
the register as extended on Gen2.
Signed-off-by: Takeshi Saito <takeshi.saito.xv@renesas.com>
[wsa: use max_blk_count in if(), add Gen2, update commit message]
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Cc:
stable@kernel.org Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
[Ulf: Fixed build error] Signed-off-by: Ulf Hansson
<ulf.hansson@linaro.org>
The file was modifieddrivers/mmc/host/renesas_sdhi_sys_dmac.c (diff)
The file was modifieddrivers/mmc/host/tmio_mmc_core.c (diff)
The file was modifieddrivers/mmc/host/tmio_mmc.h (diff)
Commit cffaaf0c816238c45cd2d06913476c83eb50f682 by jroedel
iommu/dmar: Fix buffer overflow during PCI bus notification
Commit 57384592c433 ("iommu/vt-d: Store bus information in RMRR PCI
device path") changed the type of the path data, however, the change in
path type was not reflected in size calculations.  Update to use the
correct type and prevent a buffer overflow.
This bug manifests in systems with deep PCI hierarchies, and can lead to
an overflow of the static allocated buffer (dmar_pci_notify_info_buf),
or can lead to overflow of slab-allocated data.
   BUG: KASAN: global-out-of-bounds in
dmar_alloc_pci_notify_info+0x1d5/0x2e0
  Write of size 1 at addr ffffffff90445d80 by task swapper/0/1
  CPU: 0 PID: 1 Comm: swapper/0 Tainted: G        W     
4.14.87-rt49-02406-gd0a0e96 #1
  Call Trace:
   ? dump_stack+0x46/0x59
   ? print_address_description+0x1df/0x290
   ? dmar_alloc_pci_notify_info+0x1d5/0x2e0
   ? kasan_report+0x256/0x340
   ? dmar_alloc_pci_notify_info+0x1d5/0x2e0
   ? e820__memblock_setup+0xb0/0xb0
   ? dmar_dev_scope_init+0x424/0x48f
   ? __down_write_common+0x1ec/0x230
   ? dmar_dev_scope_init+0x48f/0x48f
   ? dmar_free_unused_resources+0x109/0x109
   ? cpumask_next+0x16/0x20
   ? __kmem_cache_create+0x392/0x430
   ? kmem_cache_create+0x135/0x2f0
   ? e820__memblock_setup+0xb0/0xb0
   ? intel_iommu_init+0x170/0x1848
   ? _raw_spin_unlock_irqrestore+0x32/0x60
   ? migrate_enable+0x27a/0x5b0
   ? sched_setattr+0x20/0x20
   ? migrate_disable+0x1fc/0x380
   ? task_rq_lock+0x170/0x170
   ? try_to_run_init_process+0x40/0x40
   ? locks_remove_file+0x85/0x2f0
   ? dev_prepare_static_identity_mapping+0x78/0x78
   ? rt_spin_unlock+0x39/0x50
   ? lockref_put_or_lock+0x2a/0x40
   ? dput+0x128/0x2f0
   ? __rcu_read_unlock+0x66/0x80
   ? __fput+0x250/0x300
   ? __rcu_read_lock+0x1b/0x30
   ? mntput_no_expire+0x38/0x290
   ? e820__memblock_setup+0xb0/0xb0
   ? pci_iommu_init+0x25/0x63
   ? pci_iommu_init+0x25/0x63
   ? do_one_initcall+0x7e/0x1c0
   ? initcall_blacklisted+0x120/0x120
   ? kernel_init_freeable+0x27b/0x307
   ? rest_init+0xd0/0xd0
   ? kernel_init+0xf/0x120
   ? rest_init+0xd0/0xd0
   ? ret_from_fork+0x1f/0x40
  The buggy address belongs to the variable:
   dmar_pci_notify_info_buf+0x40/0x60
Fixes: 57384592c433 ("iommu/vt-d: Store bus information in RMRR PCI
device path") Signed-off-by: Julia Cartwright <julia@ni.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
The file was modifieddrivers/iommu/dmar.c (diff)
Commit 781e62823cb81b972dc8652c1827205cda2ac9ac by daniel
bpf: decrease usercnt if bpf_map_new_fd() fails in
bpf_map_get_fd_by_id()
In bpf/syscall.c, bpf_map_get_fd_by_id() use bpf_map_inc_not_zero() to
increase the refcount, both map->refcnt and map->usercnt. Then, if
bpf_map_new_fd() fails, should handle map->usercnt too.
Fixes: bd5f5f4ecb78 ("bpf: Add BPF_MAP_GET_FD_BY_ID") Signed-off-by:
Peng Sun <sironhide0null@gmail.com> Acked-by: Martin KaFai Lau
<kafai@fb.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
The file was modifiedkernel/bpf/syscall.c (diff)
Commit b6e9e5df4ecf100f6a10ab2ade8e46d47a4b9779 by davem
ipv4: Return error for RTA_VIA attribute
IPv4 currently does not support nexthops outside of the AF_INET family.
Specifically, it does not handle RTA_VIA attribute. If it is passed in a
route add request, the actual route added only uses the device which is
clearly not what the user intended:
  $ ip ro add 172.16.1.0/24 via inet6 2001:db8:1::1 dev eth0
$ ip ro ls
...
172.16.1.0/24 dev eth0
Catch this and fail the route add:
$ ip ro add 172.16.1.0/24 via inet6 2001:db8:1::1 dev eth0
Error: IPv4 does not support RTA_VIA attribute.
Fixes: 03c0566542f4c ("mpls: Netlink commands to add, remove, and dump
routes") Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/fib_frontend.c (diff)
Commit e3818541b49fb88650ba339d33cc53e4095da5b3 by davem
ipv6: Return error for RTA_VIA attribute
IPv6 currently does not support nexthops outside of the AF_INET6 family.
Specifically, it does not handle RTA_VIA attribute. If it is passed in a
route add request, the actual route added only uses the device which is
clearly not what the user intended:
  $ ip -6 ro add 2001:db8:2::/64 via inet 172.16.1.1 dev eth0
$ ip ro ls
...
2001:db8:2::/64 dev eth0 metric 1024 pref medium
Catch this and fail the route add:
$ ip -6 ro add 2001:db8:2::/64 via inet 172.16.1.1 dev eth0
Error: IPv6 does not support RTA_VIA attribute.
Fixes: 03c0566542f4c ("mpls: Netlink commands to add, remove, and dump
routes") Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv6/route.c (diff)
Commit be48220edd48ca0d569782992840488a52373a24 by davem
mpls: Return error for RTA_GATEWAY attribute
MPLS does not support nexthops with an MPLS address family.
Specifically, it does not handle RTA_GATEWAY attribute. Make it clear by
returning an error.
Fixes: 03c0566542f4c ("mpls: Netlink commands to add, remove, and dump
routes") Signed-off-by: David Ahern <dsahern@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifiednet/mpls/af_mpls.c (diff)
Commit bf48648d650db1146b75b9bd358502431e86cf4f by davem
hv_netvsc: Fix IP header checksum for coalesced packets
Incoming packets may have IP header checksum verified by the host. They
may not have IP header checksum computed after coalescing. This patch
re-compute the checksum when necessary, otherwise the packets may be
dropped, because Linux network stack always checks it.
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/hyperv/netvsc_drv.c (diff)
Commit bfd07f3dd4f111b884d7922b37eb239280f83d8c by davem
tipc: fix race condition causing hung sendto
When sending multicast messages via blocking socket, if sending link is
congested (tsk->cong_link_cnt is set to 1), the sending thread will be
put into sleeping state. However, tipc_sk_filter_rcv() is called under
socket spin lock but tipc_wait_for_cond() is not. So, there is no
guarantee that the setting of tsk->cong_link_cnt to 0 in
tipc_sk_proto_rcv() in CPU-1 will be perceived by CPU-0. If that is the
case, the sending thread in CPU-0 after being waken up, will continue to
see tsk->cong_link_cnt as 1 and put the sending thread into sleeping
state again. The sending thread will sleep forever.
CPU-0                                | CPU-1 tipc_wait_for_cond()      
         |
{                                    |
// condition_ = !tsk->cong_link_cnt |
while ((rc_ = !(condition_))) {     |
...                                |
release_sock(sk_);                 |
wait_woken();                      |
                                    | if (!sock_owned_by_user(sk))
                                    |  tipc_sk_filter_rcv()
                                    |  {
                                    |   ...
                                    |   tipc_sk_proto_rcv()
                                    |   {
                                    |    ...
                                    |    tsk->cong_link_cnt--;
                                    |    ...
                                    |    sk->sk_write_space(sk);
                                    |    ...
                                    |   }
                                    |   ...
                                    |  }
sched_annotate_sleep();            |
lock_sock(sk_);                    |
remove_wait_queue();               |
}                                   |
}                                    |
This commit fixes it by adding memory barrier to tipc_sk_proto_rcv() and
tipc_wait_for_cond().
Acked-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: Tung Nguyen
<tung.q.nguyen@dektech.com.au> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/tipc/socket.c (diff)
Commit 6e53330909672bd9a8c9f826e989a5945d9d9fdf by andy.gross
arm64: dts: qcom: msm8998: Extend TZ reserved memory area
My console locks up as soon as Linux writes to [88800000,88f00000[
AFAIU, that memory area is reserved for trustzone.
Extend TZ reserved memory range, to prevent Linux from stepping on
trustzone's toes.
Cc: stable@vger.kernel.org # 4.20+ Reviewed-by: Sibi Sankar
<sibis@codeaurora.org> Fixes: c7833949564ec ("arm64: dts: qcom: msm8998:
Add smem related nodes") Signed-off-by: Marc Gonzalez
<marc.w.gonzalez@free.fr> Signed-off-by: Andy Gross
<andy.gross@linaro.org>
The file was modifiedarch/arm64/boot/dts/qcom/msm8998.dtsi (diff)
Commit e5723f95d6b493dd437f1199cacb41459713b32f by ulf.hansson
mmc: core: Fix NULL ptr crash from mmc_should_fail_request
In case of CQHCI, mrq->cmd may be NULL for data requests (non DCMD). In
such case mmc_should_fail_request is directly dereferencing mrq->cmd
while cmd is NULL. Fix this by checking for mrq->cmd pointer.
Fixes: 72a5af554df8 ("mmc: core: Add support for handling CQE requests")
Signed-off-by: Ritesh Harjani <riteshh@codeaurora.org> Cc:
stable@vger.kernel.org Signed-off-by: Ulf Hansson
<ulf.hansson@linaro.org>
The file was modifieddrivers/mmc/core/core.c (diff)
Commit 388b4e6a00bb3097278ed1648ac5a1cb48c894e6 by martin.petersen
scsi: core: Avoid that system resume triggers a kernel warning
scsi_device_quiesce() and scsi_device_resume() are called during
system-wide suspend and resume. scsi_device_quiesce() only succeeds for
SCSI devices that are in one of the RUNNING, OFFLINE or
TRANSPORT_OFFLINE states (see also scsi_set_device_state()).  This patch
avoids that the following warning is triggered when resuming a system
for which quiescing a SCSI device failed:
WARNING: CPU: 2 PID: 11303 at drivers/scsi/scsi_lib.c:2600
scsi_device_resume+0x4f/0x58 CPU: 2 PID: 11303 Comm: kworker/u8:70 Not
tainted 5.0.0-rc1+ #50 Hardware name: LENOVO 80E3/Lancer 5B2, BIOS
A2CN45WW(V2.13) 08/04/2016 Workqueue: events_unbound async_run_entry_fn
Call Trace:
scsi_dev_type_resume+0x2e/0x60
async_run_entry_fn+0x32/0xd8
process_one_work+0x1f4/0x420
worker_thread+0x28/0x3c0
kthread+0x118/0x130
ret_from_fork+0x22/0x40
Cc: Przemek Socha <soprwa@gmail.com> Reported-by: Przemek Socha
<soprwa@gmail.com> Fixes: 3a0a529971ec ("block, scsi: Make SCSI quiesce
and resume work reliably") # v4.15 Signed-off-by: Bart Van Assche
<bvanassche@acm.org> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com>
The file was modifieddrivers/scsi/scsi_lib.c (diff)
Commit 27ec9dc17c48ea2e642ccb90b4ebf7fd47468911 by ulf.hansson
mmc: cqhci: fix space allocated for transfer descriptor
There is not enough space being allocated when DCMD is disabled.
CQE_DCMD is not necessary to be enabled when CQE is enabled.
(Software could halt CQE to send command)
In the case that CQE_DCMD is not enabled, it still needs to allocate
space for data transfer. For instance:
CQE_DCMD is enabled:  31 slots space (one slot used by DCMD)
CQE_DCMD is disabled: 32 slots space
Fixes: a4080225f51d ("mmc: cqhci: support for command queue enabled
host") Signed-off-by: Alamy Liu <alamy.liu@gmail.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/cqhci.c (diff)
Commit d07e9fadf3a6b466ca3ae90fa4859089ff20530f by ulf.hansson
mmc: cqhci: Fix a tiny potential memory leak on error condition
Free up the allocated memory in the case of error return
The value of mmc_host->cqe_enabled stays 'false'. Thus, cqhci_disable
(mmc_cqe_ops->cqe_disable) won't be called to free the memory.  Also,
cqhci_disable() seems to be designed to disable and free all resources,
not suitable to handle this corner case.
Fixes: a4080225f51d ("mmc: cqhci: support for command queue enabled
host") Signed-off-by: Alamy Liu <alamy.liu@gmail.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/cqhci.c (diff)
Commit c53336c8f5f29043fded57912cc06c24e12613d7 by ulf.hansson
mmc: core: align max segment size with logical block size
Logical block size is the lowest possible block size that the storage
device can address. Max segment size is often related with controller's
DMA capability. And it is reasonable to align max segment size with
logical block size.
SDHCI sets un-aligned max segment size, and causes ADMA error, so fix it
by aligning max segment size with logical block size.
Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org> Cc: Christoph
Hellwig <hch@lst.de> Cc: Naresh Kamboju <naresh.kamboju@linaro.org> Cc:
Faiz Abbas <faiz_abbas@ti.com> Cc: linux-block@vger.kernel.org
Signed-off-by: Ming Lei <ming.lei@redhat.com> Signed-off-by: Ulf Hansson
<ulf.hansson@linaro.org>
The file was modifieddrivers/mmc/core/block.c (diff)
The file was modifieddrivers/mmc/core/queue.c (diff)
Commit 2b3c6885386020b1b9d92d45e8349637e27d1f66 by davem
bnxt_en: Drop oversize TX packets to prevent errors.
There have been reports of oversize UDP packets being sent to the driver
to be transmitted, causing error conditions.  The issue is likely caused
by the dst of the SKB switching between 'lo' with 64K MTU and the
hardware device with a smaller MTU.  Patches are being proposed by
Mahesh Bandewar <maheshb@google.com> to fix the issue.
In the meantime, add a quick length check in the driver to prevent the
error.  The driver uses the TX packet size as index to look up an array
to setup the TX BD.  The array is large enough to support all MTU sizes
supported by the driver.  The oversize TX packet causes the driver to
index beyond the array and put garbage values into the TX BD.  Add a
simple check to prevent this.
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 f4d7b3e23d259c44f1f1c39645450680fcd935d6 by davem
net: dev: Use unsigned integer as an argument to left-shift
1 << 31 is Undefined Behaviour according to the C standard. Use U type
modifier to avoid theoretical overflow.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedinclude/linux/netdevice.h (diff)
Commit 287beb284f14796160be00db15f87ab3531715a2 by davem
enc28j60: Correct description of debug module parameter
The netif_msg_init() API takes on input the amount of bits to be set.
The description of debug parameter in the enc28j60 module is misleading
in this sense and passing 0xffff does not give an expected behaviour.
Fix the description of debug module parameter to show what exactly is
expected.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/microchip/enc28j60.c (diff)
Commit 232ba3a51cc224b339c7114888ed7f0d4d95695e by davem
net: phy: Micrel KSZ8061: link failure after cable connect
With Micrel KSZ8061 PHY, the link may occasionally not come up after
Ethernet cable connect. The vendor's (Microchip, former Micrel) errata
sheet 80000688A.pdf descripes the problem and possible workarounds in
detail, see below. The batch implements workaround 1, which permanently
fixes the issue.
DESCRIPTION Link-up may not occur properly when the Ethernet cable is
initially connected. This issue occurs more commonly when the cable is
connected slowly, but it may occur any time a cable is connected. This
issue occurs in the auto-negotiation circuit, and will not occur if
auto-negotiation is disabled (which requires that the two link partners
be set to the same speed and duplex).
END USER IMPLICATIONS When this issue occurs, link is not established.
Subsequent cable plug/unplaug cycle will not correct the issue.
WORk AROUND There are four approaches to work around this issue: 1. This
issue can be prevented by setting bit 15 in MMD device address 1,
  register 2, prior to connecting the cable or prior to setting the
  Restart Auto-negotiation bit in register 0h. The MMD registers are
  accessed via the indirect access registers Dh and Eh, or via the
Micrel
  EthUtil utility as shown here:
  . if using the EthUtil utility (usually with a Micrel KSZ8061
    Evaluation Board), type the following commands:
    > address 1
    > mmd 1
    > iw 2 b61a
  . Alternatively, write the following registers to write to the
    indirect MMD register:
    Write register Dh, data 0001h
    Write register Eh, data 0002h
    Write register Dh, data 4001h
    Write register Eh, data B61Ah 2. The issue can be avoided by
disabling auto-negotiation in the KSZ8061,
  either by the strapping option, or by clearing bit 12 in register 0h.
  Care must be taken to ensure that the KSZ8061 and the link partner
  will link with the same speed and duplex. Note that the KSZ8061
  defaults to full-duplex when auto-negotiation is off, but other
  devices may default to half-duplex in the event of failed
  auto-negotiation. 3. The issue can be avoided by connecting the cable
prior to powering-up
  or resetting the KSZ8061, and leaving it plugged in thereafter. 4. If
the above measures are not taken and the problem occurs, link can
  be recovered by setting the Restart Auto-Negotiation bit in
  register 0h, or by resetting or power cycling the device. Reset may
  be either hardware reset or software reset (register 0h, bit 15).
PLAN This errata will not be corrected in the future revision.
Fixes: 7ab59dc15e2f ("drivers/net/phy/micrel_phy: Add support for new
PHYs") Signed-off-by: Alexander Onnasch
<alexander.onnasch@landisgyr.com> Signed-off-by: Rajasingh Thavamani
<T.Rajasingh@landisgyr.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/phy/micrel.c (diff)
Commit d63716658ac16c515d1223a9fbf5edbf76b1b333 by alexander.deucher
drm/amd/display: Use vrr friendly pageflip throttling in DC.
In VRR mode, keep track of the vblank count of the last completed
pageflip in amdgpu_crtc->last_flip_vblank, as recorded in the pageflip
completion handler after each completed flip.
Use that count to prevent mmio programming a new pageflip within the
same vblank in which the last pageflip completed, iow. to throttle
pageflips to at most one flip per video frame, while at the same time
allowing to request a flip not only before start of vblank, but also
anywhere within vblank.
The old logic did the same, and made sense for regular fixed refresh
rate flipping, but in vrr mode it prevents requesting a flip anywhere
inside the possibly huge vblank, thereby reducing framerate in vrr mode
instead of improving it, by delaying a slightly delayed flip requests up
to a maximum vblank duration + 1 scanout duration. This would limit VRR
usefulness to only help applications with a very high GPU demand, which
can submit the flip request before start of vblank, but then have to
wait long for fences to complete.
With this method a flip can be both requested and - after fences have
completed - executed, ie. it doesn't matter if the request
(amdgpu_dm_do_flip()) gets delayed until deep into the extended vblank
due to cpu execution delays. This also allows clients which want to
regulate framerate within the vrr range a much more fine-grained control
of flip timing, a feature that might be useful for video playback, and
is very useful for neuroscience/vision research applications.
In regular non-VRR mode, retain the old flip submission behavior. This
to keep flip scheduling for fullscreen X11/GLX OpenGL clients intact, if
they use the GLX_OML_sync_control extensions glXSwapBufferMscOML(, ...,
target_msc,...) function with a specific target_msc target vblank count.
glXSwapBuffersMscOML() or DRI3/Present PresentPixmap() will not flip at
the proper target_msc for a non-zero target_msc if VRR mode is active
with this patch. They'd often flip one frame too early. However, this
limitation should not matter much in VRR mode, as scheduling based on
vblank counts is pretty futile/unusable under variable refresh duration
anyway, so no real extra harm is done.
Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com> Cc: Nicholas
Kazlauskas <nicholas.kazlauskas@amd.com> Cc: Harry Wentland
<harry.wentland@amd.com> Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Michel Dänzer <michel@daenzer.net> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com>
The file was modifieddrivers/gpu/drm/amd/amdgpu/amdgpu_mode.h (diff)
The file was modifieddrivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c (diff)
Commit 58bdd544e2933a21a51eecf17c3f5f94038261b5 by davem
net: nfc: Fix NULL dereference on nfc_llcp_build_tlv fails
KASAN report this:
BUG: KASAN: null-ptr-deref in nfc_llcp_build_gb+0x37f/0x540 [nfc] Read
of size 3 at addr 0000000000000000 by task syz-executor.0/5401
CPU: 0 PID: 5401 Comm: syz-executor.0 Not tainted 5.0.0-rc7+ #45
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS
1.10.2-1ubuntu1 04/01/2014 Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0xfa/0x1ce lib/dump_stack.c:113
kasan_report+0x171/0x18d mm/kasan/report.c:321
memcpy+0x1f/0x50 mm/kasan/common.c:130
nfc_llcp_build_gb+0x37f/0x540 [nfc]
nfc_llcp_register_device+0x6eb/0xb50 [nfc]
nfc_register_device+0x50/0x1d0 [nfc]
nfcsim_device_new+0x394/0x67d [nfcsim]
? 0xffffffffc1080000
nfcsim_init+0x6b/0x1000 [nfcsim]
do_one_initcall+0xfa/0x5ca init/main.c:887
do_init_module+0x204/0x5f6 kernel/module.c:3460
load_module+0x66b2/0x8570 kernel/module.c:3808
__do_sys_finit_module+0x238/0x2a0 kernel/module.c:3902
do_syscall_64+0x147/0x600 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x462e99 Code: f7 d8
64 89 02 b8 ff ff ff ff c3 66 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6
48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73
01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007f9cb79dcc58
EFLAGS: 00000246 ORIG_RAX: 0000000000000139 RAX: ffffffffffffffda RBX:
000000000073bf00 RCX: 0000000000462e99 RDX: 0000000000000000 RSI:
0000000020000280 RDI: 0000000000000003 RBP: 00007f9cb79dcc70 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007f9cb79dd6bc R13: 00000000004bcefb R14:
00000000006f7030 R15: 0000000000000004
nfc_llcp_build_tlv will return NULL on fails, caller should check it,
otherwise will trigger a NULL dereference.
Reported-by: Hulk Robot <hulkci@huawei.com> Fixes: eda21f16a5ed ("NFC:
Set MIU and RW values from CONNECT and CC LLCP frames") Fixes:
d646960f7986 ("NFC: Initial LLCP support") Signed-off-by: YueHaibing
<yuehaibing@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/nfc/llcp_commands.c (diff)
The file was modifiednet/nfc/llcp_core.c (diff)
Commit 0a1d52994d440e21def1c2174932410b4f2a98a1 by torvalds
mm: enforce min addr even if capable() in expand_downwards()
security_mmap_addr() does a capability check with current_cred(), but we
can reach this code from contexts like a VFS write handler where
current_cred() must not be used.
This can be abused on systems without SMAP to make NULL pointer
dereferences exploitable again.
Fixes: 8869477a49c3 ("security: protect from stack expansion into low vm
addresses") Cc: stable@kernel.org Signed-off-by: Jann Horn
<jannh@google.com> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedmm/mmap.c (diff)
Commit e0bf304e4a00d66d90904a6c5b93141f177cf6d2 by paul.burton
MIPS: fix memory setup for platforms with PHYS_OFFSET != 0
For platforms, which use a PHYS_OFFSET != 0, symbol _end also contains
that offset. So when calling memblock_reserve() for reserving kernel the
size argument needs to be adjusted.
Fixes: bcec54bf3118 ("mips: switch to NO_BOOTMEM") Acked-by: Mike
Rapoport <rppt@linux.ibm.com> Signed-off-by: Thomas Bogendoerfer
<tbogendoerfer@suse.de> 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 Cc: Mike Rapoport <rppt@linux.vnet.ibm.com>
Cc: stable@vger.kernel.org # v4.20+
The file was modifiedarch/mips/kernel/setup.c (diff)
Commit 2216322919c8608a448d7ebc560a845238a5d6b6 by airlied
drm: Block fb changes for async plane updates
The prepare_fb call always happens on new_plane_state.
The drm_atomic_helper_cleanup_planes checks to see if plane state
pointer has changed when deciding to call cleanup_fb on either the
new_plane_state or the old_plane_state.
For a non-async atomic commit the state pointer is swapped, so this
helper calls prepare_fb on the new_plane_state and cleanup_fb on the
old_plane_state. This makes sense, since we want to prepare the
framebuffer we are going to use and cleanup the the framebuffer we are
no longer using.
For the async atomic update helpers this differs. The async atomic
update helpers perform in-place updates on the existing state. They call
drm_atomic_helper_cleanup_planes but the state pointer is not swapped.
This means that prepare_fb is called on the new_plane_state and
cleanup_fb is called on the new_plane_state (not the old).
In the case where old_plane_state->fb == new_plane_state->fb then there
should be no behavioral difference between an async update and a
non-async commit. But there are issues that arise when
old_plane_state->fb != new_plane_state->fb.
The first is that the new_plane_state->fb is immediately cleaned up
after it has been prepared, so we're using a fb that we shouldn't be.
The second occurs during a sequence of async atomic updates and
non-async regular atomic commits. Suppose there are two framebuffers
being interleaved in a double-buffering scenario, fb1 and fb2:
- Async update, oldfb = NULL, newfb = fb1, prepare fb1, cleanup fb1
- Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb2
- Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2
We call cleanup_fb on fb2 twice in this example scenario, and any
further use will result in use-after-free.
The simple fix to this problem is to block framebuffer changes in the
drm_atomic_helper_async_check function for now.
v2: Move check by itself, add a FIXME (Daniel)
Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Harry Wentland
<harry.wentland@amd.com> Cc: Andrey Grodzovsky
<andrey.grodzovsky@amd.com> Cc: <stable@vger.kernel.org> # v4.14+ Fixes:
fef9df8b5945 ("drm/atomic: initial support for asynchronous plane
update") Signed-off-by: Nicholas Kazlauskas
<nicholas.kazlauskas@amd.com> Acked-by: Andrey Grodzovsky
<andrey.grodzovsky@amd.com> Acked-by: Harry Wentland
<harry.wentland@amd.com> Reviewed-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Harry Wentland <harry.wentland@amd.com> Link:
https://patchwork.freedesktop.org/patch/275364/ Signed-off-by: Dave
Airlie <airlied@redhat.com>
The file was modifieddrivers/gpu/drm/drm_atomic_helper.c (diff)
Commit 17fb465f16027ea22225b282295f5b8af19992e0 by airlied
drm/bochs: Fix the ID mismatch error
When running RISC-V QEMU with the Bochs device attached via PCIe the
probe of the Bochs device fails with:
   [drm:bochs_hw_init] *ERROR* ID mismatch
This was introduced by this commit:
   7780eb9ce8 bochs: convert to drm_dev_register
To fix the error we ensure that pci_enable_device() is called before
bochs_load().
Fixes: 7780eb9ce80f ("bochs: convert to drm_dev_register")
Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Reported-by:
David Abdurachmanov <david.abdurachmanov@gmail.com> Link:
http://patchwork.freedesktop.org/patch/msgid/20190221003231.31625-1-alistair.francis@wdc.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Dave
Airlie <airlied@redhat.com>
The file was modifieddrivers/gpu/drm/bochs/bochs_drv.c (diff)
Commit 72a7d452b0f09dcd5d3e18cff1e3839f8b1acc1f by davem
net: phy: dp83867: add soft reset delay
Similar to dp83640 delay after soft reset is needed to set up registers
correctly.
Signed-off-by: Max Uvarov <muvarov@gmail.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/phy/dp83867.c (diff)
Commit 651eb32e569e50564803891cf2a8d22e49e979a5 by davem
selftests: pmtu: disable DAD in all namespaces
Otherwise, the configured IPv6 address could be still "tentative" at
test time, possibly causing tests failures. We can also drop some sleep
along the code and decrease the timeout for most commands so that the
test runtime decreases.
v1 -> v2:
- fix comment (Stefano)
Fixes: d1f1b9cbf34c ("selftests: net: Introduce first PMTU test")
Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: David Ahern
<dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedtools/testing/selftests/net/pmtu.sh (diff)
Commit b3cc4f8a8a411bbf07a7d7213ce9c7571ded38b9 by davem
selftests: pmtu: add explicit tests for PMTU exceptions cleanup
Add a couple of new tests, explicitly checking that the kernel timely
releases PMTU exceptions on related device removal. This is mostly a
regression test vs the issue fixed by commit f5b51fe804ec ("ipv6: route:
purge exception on removal")
Only 2 new test cases have been added, instead of extending all the
existing ones, because the reproducer requires executing several
commands and would slow down too much the tests otherwise.
v2 -> v3:
- more cleanup, still from Stefano
v1 -> v2:
- several script cleanups, as suggested by Stefano
Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: David Ahern
<dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiedtools/testing/selftests/net/pmtu.sh (diff)
Commit a1fd1ad2552fad9e649eeb85fd79301e2880a886 by davem
ipv4: Pass original device to ip_rcv_finish_core
ip_route_input_rcu expects the original ingress device (e.g., for proper
multicast handling). The skb->dev can be changed by l3mdev_ip_rcv, so
dev needs to be saved prior to calling it. This was the behavior prior
to the listify changes.
Fixes: 5fa12739a53d0 ("net: ipv4: listify ip_rcv_finish") Cc: Edward
Cree <ecree@solarflare.com> Signed-off-by: David Ahern
<dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifiednet/ipv4/ip_input.c (diff)
Commit 5578de4834fe0f2a34fedc7374be691443396d1f by davem
netlabel: fix out-of-bounds memory accesses
There are two array out-of-bounds memory accesses, one in
cipso_v4_map_lvl_valid(), the other in netlbl_bitmap_walk().  Both
errors are embarassingly simple, and the fixes are straightforward.
As a FYI for anyone backporting this patch to kernels prior to v4.8,
you'll want to apply the netlbl_bitmap_walk() patch to
cipso_v4_bitmap_walk() as netlbl_bitmap_walk() doesn't exist before
Linux v4.8.
Reported-by: Jann Horn <jannh@google.com> Fixes: 446fda4f2682
("[NetLabel]: CIPSOv4 engine") Fixes: 3faa8f982f95 ("netlabel: Move
bitmap manipulation functions to the NetLabel core.") Signed-off-by:
Paul Moore <paul@paul-moore.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/netlabel/netlabel_kapi.c (diff)
The file was modifiednet/ipv4/cipso_ipv4.c (diff)
Commit 4b6d196c9cec548a6b1cf5bb07b4a8b8d375829d by herbert
crypto: arm64/chacha - fix chacha_4block_xor_neon() for big endian
The change to encrypt a fifth ChaCha block using scalar instructions
caused the chacha20-neon, xchacha20-neon, and xchacha12-neon self-tests
to start failing on big endian arm64 kernels.  The bug is that the
keystream block produced in 32-bit scalar registers is directly XOR'd
with the data words, which are loaded and stored in native endianness.
Thus in big endian mode the data bytes end up XOR'd with the wrong
bytes.  Fix it by byte-swapping the keystream words in big endian mode.
Fixes: 2fe55987b262 ("crypto: arm64/chacha - use combined SIMD/ALU
routine for more speed") Signed-off-by: Eric Biggers
<ebiggers@google.com> Reviewed-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au>
The file was modifiedarch/arm64/crypto/chacha-neon-core.S (diff)
Commit f86d17e9efe010b894db231329ee36b24bcc1b24 by herbert
crypto: arm64/chacha - fix hchacha_block_neon() for big endian
On big endian arm64 kernels, the xchacha20-neon and xchacha12-neon
self-tests fail because hchacha_block_neon() outputs little endian words
but the C code expects native endianness.  Fix it to output the words in
native endianness (which also makes it match the arm32 version).
Fixes: cc7cf991e9eb ("crypto: arm64/chacha20 - add XChaCha20 support")
Signed-off-by: Eric Biggers <ebiggers@google.com> Reviewed-by: Ard
Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au>
The file was modifiedarch/arm64/crypto/chacha-neon-core.S (diff)
Commit c7c0d8df0b94a67377555a550b8d66ee2ad2f4ed by jens.wiklander
tee: optee: add missing of_node_put after of_device_is_available
Add an of_node_put when a tested device node is not available.
The semantic patch that fixes this problem is as follows
(http://coccinelle.lip6.fr):
// <smpl>
@@ identifier f; local idexpression e; expression x;
@@
e = f(...);
... when != of_node_put(e)
   when != x = e
   when != e = x
   when any if (<+...of_device_is_available(e)...+>) {
... when != of_node_put(e)
(
return e;
|
+ of_node_put(e);
return ...;
)
}
// </smpl>
Fixes: db878f76b9ff ("tee: optee: take DT status property into account")
Signed-off-by: Julia Lawall <Julia.Lawall@lip6.fr> Signed-off-by: Jens
Wiklander <jens.wiklander@linaro.org>
The file was modifieddrivers/tee/optee/core.c (diff)
Commit 9cd05ad2910b55238e3c720c99ad896dc538301b by tglx
x86/hyper-v: Fix definition of HV_MAX_FLUSH_REP_COUNT
The max flush rep count of HvFlushGuestPhysicalAddressList hypercall is
equal with how many entries of union hv_gpa_page_range can be populated
into the input parameter page.
The code lacks parenthesis around PAGE_SIZE - 2 * sizeof(u64) which
results in bogus computations. Add them.
Fixes: cc4edae4b924 ("x86/hyper-v: Add HvFlushGuestAddressList hypercall
support") Signed-off-by: Lan Tianyu <Tianyu.Lan@microsoft.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc:
kys@microsoft.com Cc: haiyangz@microsoft.com Cc: sthemmin@microsoft.com
Cc: sashal@kernel.org Cc: bp@alien8.de Cc: hpa@zytor.com Cc:
gregkh@linuxfoundation.org Cc: devel@linuxdriverproject.org Cc:
stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190225143114.5149-1-Tianyu.Lan@microsoft.com
The file was modifiedarch/x86/include/asm/hyperv-tlfs.h (diff)
Commit e30be063d6dbcc0f18b1eb25fa709fdef89201fb by ulf.hansson
mmc: sdhci-esdhc-imx: correct the fix of ERR004536
Commit 18094430d6b5 ("mmc: sdhci-esdhc-imx: add ADMA Length Mismatch
errata fix") involve the fix of ERR004536, but the fix is incorrect.
Double confirm with IC, need to clear the bit 7 of register 0x6c rather
than set this bit 7. Here is the definition of bit 7 of 0x6c:
   0: enable the new IC fix for ERR004536
   1: do not use the IC fix, keep the same as before
Find this issue on i.MX845s-evk board when enable CMDQ, and let system
in heavy loading.
root@imx8mmevk:~# dd if=/dev/mmcblk2 of=/dev/null bs=1M &
root@imx8mmevk:~# memtester 1000M > /dev/zero & root@imx8mmevk:~# [
139.897220] mmc2: cqhci: timeout for tag 16
[  139.901417] mmc2: cqhci: ============ CQHCI REGISTER DUMP ===========
[  139.907862] mmc2: cqhci: Caps:      0x0000310a | Version:  0x00000510
[  139.914311] mmc2: cqhci: Config:    0x00001001 | Control:  0x00000000
[  139.920753] mmc2: cqhci: Int stat:  0x00000000 | Int enab: 0x00000006
[  139.927193] mmc2: cqhci: Int sig:   0x00000006 | Int Coal: 0x00000000
[  139.933634] mmc2: cqhci: TDL base:  0x7809c000 | TDL up32: 0x00000000
[  139.940073] mmc2: cqhci: Doorbell:  0x00030000 | TCN:      0x00000000
[  139.946518] mmc2: cqhci: Dev queue: 0x00010000 | Dev Pend: 0x00010000
[  139.952967] mmc2: cqhci: Task clr:  0x00000000 | SSC1:     0x00011000
[  139.959411] mmc2: cqhci: SSC2:      0x00000001 | DCMD rsp: 0x00000000
[  139.965857] mmc2: cqhci: RED mask:  0xfdf9a080 | TERRI:    0x00000000
[  139.972308] mmc2: cqhci: Resp idx:  0x0000002e | Resp arg: 0x00000900
[  139.978761] mmc2: sdhci: ============ SDHCI REGISTER DUMP ===========
[  139.985214] mmc2: sdhci: Sys addr:  0xb2c19000 | Version:  0x00000002
[  139.991669] mmc2: sdhci: Blk size:  0x00000200 | Blk cnt:  0x00000400
[  139.998127] mmc2: sdhci: Argument:  0x40110400 | Trn mode: 0x00000033
[  140.004618] mmc2: sdhci: Present:   0x01088a8f | Host ctl: 0x00000030
[  140.011113] mmc2: sdhci: Power:     0x00000002 | Blk gap:  0x00000080
[  140.017583] mmc2: sdhci: Wake-up:   0x00000008 | Clock:    0x0000000f
[  140.024039] mmc2: sdhci: Timeout:   0x0000008f | Int stat: 0x00000000
[  140.030497] mmc2: sdhci: Int enab:  0x107f4000 | Sig enab: 0x107f4000
[  140.036972] mmc2: sdhci: AC12 err:  0x00000000 | Slot int: 0x00000502
[  140.043426] mmc2: sdhci: Caps:      0x07eb0000 | Caps_1:   0x8000b407
[  140.049867] mmc2: sdhci: Cmd:       0x00002c1a | Max curr: 0x00ffffff
[  140.056314] mmc2: sdhci: Resp[0]:   0x00000900 | Resp[1]:  0xffffffff
[  140.062755] mmc2: sdhci: Resp[2]:   0x328f5903 | Resp[3]:  0x00d00f00
[  140.069195] mmc2: sdhci: Host ctl2: 0x00000008
[  140.073640] mmc2: sdhci: ADMA Err:  0x00000007 | ADMA Ptr: 0x7809c108
[  140.080079] mmc2: sdhci: ============================================
[  140.086662] mmc2: running CQE recovery
Fixes: 18094430d6b5 ("mmc: sdhci-esdhc-imx: add ADMA Length Mismatch
errata fix") Signed-off-by: Haibo Chen <haibo.chen@nxp.com> Cc:
stable@vger.kernel.org Signed-off-by: Ulf Hansson
<ulf.hansson@linaro.org>
The file was modifieddrivers/mmc/host/sdhci-esdhc-imx.c (diff)
Commit 8ed0579c12b2fe56a1fac2f712f58fc26c1dc49b by torvalds
kvm: 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").  syzbot has found a way to trigger multiple debugfs
files attempting to be created, which fails, and then the error code
gets passed to dentry_path_raw() which obviously does not like it.
Reported-by: Eric Biggers <ebiggers@kernel.org> Reported-and-tested-by:
syzbot+7857962b4d45e602b8ad@syzkaller.appspotmail.com Cc: "Radim Krčmář"
<rkrcmar@redhat.com> Cc: kvm@vger.kernel.org Acked-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org>
The file was modifiedvirt/kvm/kvm_main.c (diff)
Commit 5845f706388a4cde0f6b80f9e5d33527e942b7d9 by davem
net: netem: fix skb length BUG_ON in __skb_to_sgvec
It can be reproduced by following steps: 1. virtio_net NIC is configured
with gso/tso on 2. configure nginx as http server with an index file
bigger than 1M bytes 3. use tc netem to produce duplicate packets and
delay:
  tc qdisc add dev eth0 root netem delay 100ms 10ms 30% duplicate 90% 4.
continually curl the nginx http server to get index file on client 5.
BUG_ON is seen quickly
[10258690.371129] kernel BUG at net/core/skbuff.c:4028!
[10258690.371748] invalid opcode: 0000 [#1] SMP PTI
[10258690.372094] CPU: 5 PID: 0 Comm: swapper/5 Tainted: G        W    
   5.0.0-rc6 #2
[10258690.372094] RSP: 0018:ffffa05797b43da0 EFLAGS: 00010202
[10258690.372094] RBP: 00000000000005ea R08: 0000000000000000 R09:
00000000000005ea
[10258690.372094] R10: ffffa0579334d800 R11: 00000000000002c0 R12:
0000000000000002
[10258690.372094] R13: 0000000000000000 R14: ffffa05793122900 R15:
ffffa0578f7cb028
[10258690.372094] FS:  0000000000000000(0000) GS:ffffa05797b40000(0000)
knlGS:0000000000000000
[10258690.372094] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[10258690.372094] CR2: 00007f1a6dc00868 CR3: 000000001000e000 CR4:
00000000000006e0
[10258690.372094] Call Trace:
[10258690.372094]  <IRQ>
[10258690.372094]  skb_to_sgvec+0x11/0x40
[10258690.372094]  start_xmit+0x38c/0x520 [virtio_net]
[10258690.372094]  dev_hard_start_xmit+0x9b/0x200
[10258690.372094]  sch_direct_xmit+0xff/0x260
[10258690.372094]  __qdisc_run+0x15e/0x4e0
[10258690.372094]  net_tx_action+0x137/0x210
[10258690.372094]  __do_softirq+0xd6/0x2a9
[10258690.372094]  irq_exit+0xde/0xf0
[10258690.372094]  smp_apic_timer_interrupt+0x74/0x140
[10258690.372094]  apic_timer_interrupt+0xf/0x20
[10258690.372094]  </IRQ>
In __skb_to_sgvec(), the skb->len is not equal to the sum of the skb's
linear data size and nonlinear data size, thus BUG_ON triggered. Because
the skb is cloned and a part of nonlinear data is split off.
Duplicate packet is cloned in netem_enqueue() and may be delayed some
time in qdisc. When qdisc len reached the limit and returns
NET_XMIT_DROP, the skb will be retransmit later in write queue. the skb
will be fragmented by tso_fragment(), the limit size that depends on
cwnd and mss decrease, the skb's nonlinear data will be split off. The
length of the skb cloned by netem will not be updated. When we use
virtio_net NIC and invoke skb_to_sgvec(), the BUG_ON trigger.
To fix it, netem returns NET_XMIT_SUCCESS to upper stack when it clones
a duplicate packet.
Fixes: 35d889d1 ("sch_netem: fix skb leak in netem_enqueue()")
Signed-off-by: Sheng Lan <lansheng@huawei.com> Reported-by: Qin Ji
<jiqin.ji@huawei.com> Suggested-by: Eric Dumazet
<eric.dumazet@gmail.com> Signed-off-by: Eric Dumazet
<edumazet@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/sched/sch_netem.c (diff)
Commit ac5105052dc8be5cef34d79e1f4186d39b2f3ca3 by davem
sctp: chunk.c: correct format string for size_t in printk
According to Documentation/core-api/printk-formats.rst, size_t should be
printed with %zu, rather than %Zu.
In addition, using %Zu triggers a warning on clang
(-Wformat-extra-args):
net/sctp/chunk.c:196:25: warning: data argument not used by format
string [-Wformat-extra-args]
                                   __func__, asoc, max_data);
                                   ~~~~~~~~~~~~~~~~^~~~~~~~~
./include/linux/printk.h:440:49: note: expanded from macro
'pr_warn_ratelimited'
       printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
./include/linux/printk.h:424:17: note: expanded from macro
'printk_ratelimited'
               printk(fmt, ##__VA_ARGS__);                             \
                      ~~~    ^
Fixes: 5b5e0928f742 ("lib/vsprintf.c: remove %Z support") Link:
https://github.com/ClangBuiltLinux/linux/issues/378 Signed-off-by:
Matthias Maennich <maennich@google.com> Acked-by: Marcelo Ricardo
Leitner <marcelo.leitner@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/sctp/chunk.c (diff)
Commit 99e87f56b48f490fb16b6e0f74691c1e664dea95 by davem
xen-netback: fix occasional leak of grant ref mappings under memory
pressure
Zero-copy callback flag is not yet set on frag list skb at the moment
xenvif_handle_frag_list() returns -ENOMEM. This eventually results in
leaking grant ref mappings since xenvif_zerocopy_callback() is never
called for these fragments. Those eventually build up and cause Xen to
kill Dom0 as the slots get reused for new mappings:
"d0v0 Attempt to implicitly unmap a granted PTE c010000329fce005"
That behavior is observed under certain workloads where sudden spikes of
page cache writes coexist with active atomic skb allocations from
network traffic. Additionally, rework the logic to deal with frag_list
deallocation in a single place.
Signed-off-by: Paul Durrant <paul.durrant@citrix.com> Signed-off-by:
Igor Druzhinin <igor.druzhinin@citrix.com> Acked-by: Wei Liu
<wei.liu2@citrix.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/xen-netback/netback.c (diff)
Commit a2288d4e355992d369c50c45d017a85f6061ff71 by davem
xen-netback: don't populate the hash cache on XenBus disconnect
Occasionally, during the disconnection procedure on XenBus which
includes hash cache deinitialization there might be some packets still
in-flight on other processors. Handling of these packets includes
hashing and hash cache population that finally results in hash cache
data structure corruption.
In order to avoid this we prevent hashing of those packets if there are
no queues initialized. In that case RCU protection of queues guards the
hash cache as well.
Signed-off-by: Igor Druzhinin <igor.druzhinin@citrix.com> Reviewed-by:
Paul Durrant <paul.durrant@citrix.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifieddrivers/net/xen-netback/interface.c (diff)
The file was modifieddrivers/net/xen-netback/hash.c (diff)
Commit 6e46e2d821bb22b285ae8187959096b65d063b0d by davem
net: dsa: mv88e6xxx: Fix u64 statistics
The switch maintains u64 counters for the number of octets sent and
received. These are kept as two u32's which need to be combined.  Fix
the combing, which wrongly worked on u16's.
Fixes: 80c4627b2719 ("dsa: mv88x6xxx: Refactor getting a single
statistic") Reported-by: Chris Healy <Chris.Healy@zii.aero>
Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.c (diff)
Commit d235c48b40d399328585a68f3f9bf7cc3062d586 by davem
net: dsa: mv88e6xxx: power serdes on/off for 10G interfaces on 6390X
Upon setting the cmode on 6390 and 6390X, the associated serdes
interfaces must be powered off/on.
Both 6390X and 6390 share code to do so, but it currently uses the 6390
specific helper mv88e6390_serdes_power() to disable and enable the
serdes interface.
This call will fail silently on 6390X when trying so set a 10G interface
such as XAUI or RXAUI, since mv88e6390_serdes_power() internally grabs
the lane number based on modes supported by the 6390, and returns 0 when
getting -ENODEV as a lane number.
Using mv88e6390x_serdes_power() should be safe here, since we explicitly
rule-out all ports but the 9 and 10, and because modes supported by 6390
ports 9 and 10 are a subset of those supported on 6390X.
This was tested on 6390X using RXAUI mode.
Fixes: 364e9d7776a3 ("net: dsa: mv88e6xxx: Power on/off SERDES on cmode
change") Signed-off-by: Maxime Chevallier
<maxime.chevallier@bootlin.com> Reviewed-by: Andrew Lunn
<andrew@lunn.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/mv88e6xxx/port.c (diff)
Commit 352d20d611414715353ee65fc206ee57ab1a6984 by daniel
bpf: drop refcount if bpf_map_new_fd() fails in map_create()
In bpf/syscall.c, map_create() first set map->usercnt to 1, a file
descriptor is supposed to return to userspace. When bpf_map_new_fd()
fails, drop the refcount.
Fixes: bd5f5f4ecb78 ("bpf: Add BPF_MAP_GET_FD_BY_ID") Signed-off-by:
Peng Sun <sironhide0null@gmail.com> Acked-by: Martin KaFai Lau
<kafai@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
The file was modifiedkernel/bpf/syscall.c (diff)
Commit 6baec880d7a53cbc2841123e56ee31e830df9b49 by torvalds
kasan: turn off asan-stack for clang-8 and earlier
Building an arm64 allmodconfig kernel with clang results in over 140
warnings about overly large stack frames, the worst ones being:
  drivers/gpu/drm/panel/panel-sitronix-st7789v.c:196:12: error: stack
frame size of 20224 bytes in function 'st7789v_prepare'

drivers/video/fbdev/omap2/omapfb/displays/panel-tpo-td028ttec1.c:196:12:
error: stack frame size of 13120 bytes in function
'td028ttec1_panel_enable'
drivers/usb/host/max3421-hcd.c:1395:1: error: stack frame size of 10048
bytes in function 'max3421_spi_thread'
drivers/net/wan/slic_ds26522.c:209:12: error: stack frame size of 9664
bytes in function 'slic_ds26522_probe'
drivers/crypto/ccp/ccp-ops.c:2434:5: error: stack frame size of 8832
bytes in function 'ccp_run_cmd'
drivers/media/dvb-frontends/stv0367.c:1005:12: error: stack frame size
of 7840 bytes in function 'stv0367ter_algo'
None of these happen with gcc today, and almost all of these are the
result of a single known issue in llvm.  Hopefully it will eventually
get fixed with the clang-9 release.
In the meantime, the best idea I have is to turn off asan-stack for
clang-8 and earlier, so we can produce a kernel that is safe to run.
I have posted three patches that address the frame overflow warnings
that are not addressed by turning off asan-stack, so in combination with
this change, we get much closer to a clean allmodconfig build, which in
turn is necessary to do meaningful build regression testing.
It is still possible to turn on the CONFIG_ASAN_STACK option on all
versions of clang, and it's always enabled for gcc, but when
CONFIG_COMPILE_TEST is set, the option remains invisible, so
allmodconfig and randconfig builds (which are normally done with a
forced CONFIG_COMPILE_TEST) will still result in a mostly clean build.
Link: http://lkml.kernel.org/r/20190222222950.3997333-1-arnd@arndb.de
Link: https://bugs.llvm.org/show_bug.cgi?id=38809 Signed-off-by: Arnd
Bergmann <arnd@arndb.de> Reviewed-by: Qian Cai <cai@lca.pw> Reviewed-by:
Mark Brown <broonie@kernel.org> Acked-by: Andrey Ryabinin
<aryabinin@virtuozzo.com> Cc: Dmitry Vyukov <dvyukov@google.com> Cc:
Nick Desaulniers <ndesaulniers@google.com> Cc: Kostya Serebryany
<kcc@google.com> Cc: Andrey Konovalov <andreyknvl@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedscripts/Makefile.kasan (diff)
The file was modifiedlib/Kconfig.kasan (diff)
Commit cb6acd01e2e43fd8bad11155752b7699c3d0fb76 by torvalds
hugetlbfs: fix races and page leaks during migration
hugetlb pages should only be migrated if they are 'active'.  The
routines set/clear_page_huge_active() modify the active state of hugetlb
pages.
When a new hugetlb page is allocated at fault time, set_page_huge_active
is called before the page is locked.  Therefore, another thread could
race and migrate the page while it is being added to page table by the
fault code.  This race is somewhat hard to trigger, but can be seen by
strategically adding udelay to simulate worst case scheduling behavior.
Depending on 'how' the code races, various BUG()s could be triggered.
To address this issue, simply delay the set_page_huge_active call until
after the page is successfully added to the page table.
Hugetlb pages can also be leaked at migration time if the pages are
associated with a file in an explicitly mounted hugetlbfs filesystem.
For example, consider a two node system with 4GB worth of huge pages
available.  A program mmaps a 2G file in a hugetlbfs filesystem.  It
then migrates the pages associated with the file from one node to
another.  When the program exits, huge page counts are as follows:
  node0
1024    free_hugepages
1024    nr_hugepages
  node1
0       free_hugepages
1024    nr_hugepages
  Filesystem                         Size  Used Avail Use% Mounted on
nodev                              4.0G  2.0G  2.0G  50%
/var/opt/hugepool
That is as expected.  2G of huge pages are taken from the free_hugepages
counts, and 2G is the size of the file in the explicitly mounted
filesystem.  If the file is then removed, the counts become:
  node0
1024    free_hugepages
1024    nr_hugepages
  node1
1024    free_hugepages
1024    nr_hugepages
  Filesystem                         Size  Used Avail Use% Mounted on
nodev                              4.0G  2.0G  2.0G  50%
/var/opt/hugepool
Note that the filesystem still shows 2G of pages used, while there
actually are no huge pages in use.  The only way to 'fix' the filesystem
accounting is to unmount the filesystem
If a hugetlb page is associated with an explicitly mounted filesystem,
this information in contained in the page_private field.  At migration
time, this information is not preserved.  To fix, simply transfer
page_private from old to new page at migration time if necessary.
There is a related race with removing a huge page from a file and
migration.  When a huge page is removed from the pagecache, the
page_mapping() field is cleared, yet page_private remains set until the
page is actually freed by free_huge_page().  A page could be migrated
while in this state.  However, since page_mapping() is not set the
hugetlbfs specific routine to transfer page_private is not called and we
leak the page count in the filesystem.
To fix that, check for this condition before migrating a huge page.  If
the condition is detected, return EBUSY for the page.
Link:
http://lkml.kernel.org/r/74510272-7319-7372-9ea6-ec914734c179@oracle.com
Link:
http://lkml.kernel.org/r/20190212221400.3512-1-mike.kravetz@oracle.com
Fixes: bcc54222309c ("mm: hugetlb: introduce page_huge_active")
Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com> Reviewed-by: Naoya
Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Michal Hocko
<mhocko@kernel.org> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc:
"Kirill A . Shutemov" <kirill.shutemov@linux.intel.com> Cc: Mel Gorman
<mgorman@techsingularity.net> Cc: Davidlohr Bueso <dave@stgolabs.net>
Cc: <stable@vger.kernel.org>
[mike.kravetz@oracle.com: v2]
Link:
http://lkml.kernel.org/r/7534d322-d782-8ac6-1c8d-a8dc380eb3ab@oracle.com
[mike.kravetz@oracle.com: update comment and changelog]
Link:
http://lkml.kernel.org/r/420bcfd6-158b-38e4-98da-26d0cd85bd01@oracle.com
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
The file was modifiedmm/migrate.c (diff)
The file was modifiedfs/hugetlbfs/inode.c (diff)
The file was modifiedmm/hugetlb.c (diff)
Commit ada641ff6ed34a125fbf62ec79733352ffd4305d by davem
selftests: fixes for UDP GRO
The current implementation for UDP GRO tests is racy: the receiver may
flush the RX queue while the sending is still transmitting and
incorrectly report RX errors, with a wrong number of packet received.
Add explicit timeouts to the receiver for both connection activation
(first packet received for UDP) and reception completion, so that in the
above critical scenario the receiver will wait for the transfer
completion.
Fixes: 3327a9c46352 ("selftests: add functionals test for UDP GRO")
Signed-off-by: Paolo Abeni <pabeni@redhat.com> Acked-by: Willem de
Bruijn <willemb@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiedtools/testing/selftests/net/udpgro.sh (diff)
The file was modifiedtools/testing/selftests/net/udpgso_bench_rx.c (diff)
Commit 15f3ddf53d4d26c4e338c355abffb3eaf4b3112f by davem
net: aquantia: regression on cpus with high cores: set mode with 8
queues
Recently the maximum number of queues was increased up to 8, but NIC was
not fully configured for 8 queues. In setups with more than 4 CPU cores
parts of TX traffic gets lost if the kernel routes it to queues 4th-8th.
This patch sets a tx hw traffic mode with 8 queues.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202651
Fixes: 71a963cfc50b ("net: aquantia: increase max number of hw queues")
Reported-by: Nicholas Johnson <nicholas.johnson@outlook.com.au>
Signed-off-by: Dmitry Bogdanov <dmitry.bogdanov@aquantia.com>
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.c (diff)
The file was modifieddrivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh.h (diff)
The file was modifieddrivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_llh_internal.h (diff)
The file was modifieddrivers/net/ethernet/aquantia/atlantic/hw_atl/hw_atl_b0.c (diff)
Commit d25ed413d5e51644e18f66e34eec049f17a7abcb by davem
net: phy: phylink: fix uninitialized variable in phylink_get_mac_state
When debugging an issue I found implausible values in state->pause.
Reason in that state->pause isn't initialized and later only single bits
are changed. Also the struct itself isn't initialized in
phylink_resolve(). So better initialize state->pause and other not yet
initialized fields.
v2:
- use right function name in subject v3:
- initialize additional fields
Fixes: 9525ae83959b ("phylink: add phylink infrastructure")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/phy/phylink.c (diff)
Commit 90490ef7269906423a1c1b917fc24be8b1602658 by davem
lan743x: Fix TX Stall Issue
It has been observed that tx queue stalls while downloading from certain
web sites (example www.speedtest.net)
The cause has been tracked down to a corner case where dma descriptors
where not setup properly. And there for a tx completion interrupt was
not signaled.
This fix corrects the problem by properly marking the end of a multi
descriptor transmission.
Fixes: 23f0703c125b ("lan743x: Add main source files for new lan743x
driver") Signed-off-by: Bryan Whitehead <Bryan.Whitehead@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/ethernet/microchip/lan743x_main.c (diff)
Commit d1a2930d8a992fb6ac2529449f81a0056e1b98d1 by daniel
MIPS: eBPF: Fix icache flush end address
The MIPS eBPF JIT calls flush_icache_range() in order to ensure the
icache observes the code that we just wrote. Unfortunately it gets the
end address calculation wrong due to some bad pointer arithmetic.
The struct jit_ctx target field is of type pointer to u32, and as such
adding one to it will increment the address being pointed to by 4 bytes.
Therefore in order to find the address of the end of the code we simply
need to add the number of 4 byte instructions emitted, but we mistakenly
add the number of instructions multiplied by 4. This results in the call
to flush_icache_range() operating on a memory region 4x larger than
intended, which is always wasteful and can cause crashes if we overrun
into an unmapped page.
Fix this by correcting the pointer arithmetic to remove the bogus
multiplication, and use braces to remove the need for a set of brackets
whilst also making it obvious that the target field is a pointer.
Signed-off-by: Paul Burton <paul.burton@mips.com> Fixes: b6bd53f9c4e8
("MIPS: Add missing file for eBPF JIT.") Cc: Alexei Starovoitov
<ast@kernel.org> Cc: Daniel Borkmann <daniel@iogearbox.net> Cc: Martin
KaFai Lau <kafai@fb.com> Cc: Song Liu <songliubraving@fb.com> Cc:
Yonghong Song <yhs@fb.com> Cc: netdev@vger.kernel.org Cc:
bpf@vger.kernel.org Cc: linux-mips@vger.kernel.org Cc:
stable@vger.kernel.org # v4.13+ Signed-off-by: Daniel Borkmann
<daniel@iogearbox.net>
The file was modifiedarch/mips/net/ebpf_jit.c (diff)
Commit 5e1a99eae84999a2536f50a0beaf5d5262337f40 by davem
ipv4: Add ICMPv6 support when parse route ipproto
For ip rules, we need to use 'ipproto ipv6-icmp' to match ICMPv6
headers. But for ip -6 route, currently we only support tcp, udp and
icmp.
Add ICMPv6 support so we can match ipv6-icmp rules for route lookup.
v2: As David Ahern and Sabrina Dubroca suggested, Add an argument to
rtm_getroute_parse_ip_proto() to handle ICMP/ICMPv6 with different
family.
Reported-by: Jianlin Shi <jishi@redhat.com> Fixes: eacb9384a3fe ("ipv6:
support sport, dport and ip_proto in RTM_GETROUTE") Signed-off-by:
Hangbin Liu <liuhangbin@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net>
The file was modifiednet/ipv4/netlink.c (diff)
The file was modifiednet/ipv6/route.c (diff)
The file was modifiedinclude/net/ip.h (diff)
The file was modifiednet/ipv4/route.c (diff)
Commit 3612af783cf52c74a031a2f11b82247b2599d3cd by ast
bpf: fix sanitation rewrite in case of non-pointers
Marek reported that he saw an issue with the below snippet in that
timing measurements where off when loaded as unpriv while results were
reasonable when loaded as privileged:
    [...]
   uint64_t a = bpf_ktime_get_ns();
   uint64_t b = bpf_ktime_get_ns();
   uint64_t delta = b - a;
   if ((int64_t)delta > 0) {
   [...]
Turns out there is a bug where a corner case is missing in the fix
d3bd7413e0ca ("bpf: fix sanitation of alu op with pointer / scalar type
from different paths"), namely fixup_bpf_calls() only checks whether aux
has a non-zero alu_state, but it also needs to test for the case of
BPF_ALU_NON_POINTER since in both occasions we need to skip the masking
rewrite (as there is nothing to mask).
Fixes: d3bd7413e0ca ("bpf: fix sanitation of alu op with pointer /
scalar type from different paths") Reported-by: Marek Majkowski
<marek@cloudflare.com> Reported-by: Arthur Fabre <afabre@cloudflare.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Link:
https://lore.kernel.org/netdev/CAJPywTJqP34cK20iLM5YmUMz9KXQOdu1-+BZrGMAGgLuBWz7fg@mail.gmail.com/T/
Acked-by: Song Liu <songliubraving@fb.com> Signed-off-by: Alexei
Starovoitov <ast@kernel.org>
The file was modifiedkernel/bpf/verifier.c (diff)
Commit ed8fe20205ac054bf585156709de3913d1890f30 by davem
net: dsa: mv88e6xxx: prevent interrupt storm caused by
mv88e6390x_port_set_cmode
When debugging another issue I faced an interrupt storm in this driver
(88E6390, port 9 in SGMII mode), consisting of alternating link-up /
link-down interrupts. Analysis showed that the driver wanted to set a
cmode that was set already. But so far mv88e6390x_port_set_cmode()
doesn't check this and powers down SERDES, what causes the link to
break, and eventually results in the described interrupt storm.
Fix this by checking whether the cmode actually changes. We want that
the very first call to mv88e6390x_port_set_cmode() always configures the
registers, therefore initialize port.cmode with a value that is
different from any supported cmode value. We have to take care that we
only init the ports cmode once chip->info->num_ports is set.
v2:
- add small helper and init the number of actual ports only
Fixes: 364e9d7776a3 ("net: dsa: mv88e6xxx: Power on/off SERDES on cmode
change") Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.c (diff)
The file was modifieddrivers/net/dsa/mv88e6xxx/port.c (diff)
The file was modifieddrivers/net/dsa/mv88e6xxx/port.h (diff)
Commit cf1c9ccba7308e48a68fa77f476287d9d614e4c7 by davem
geneve: correctly handle ipv6.disable module parameter
When IPv6 is compiled but disabled at runtime, geneve_sock_add returns
-EAFNOSUPPORT. For metadata based tunnels, this causes failure of the
whole operation of bringing up the tunnel.
Ignore failure of IPv6 socket creation for metadata based tunnels caused
by IPv6 not being available.
This is the same fix as what commit d074bf960044 ("vxlan: correctly
handle ipv6.disable module parameter") is doing for vxlan.
Note there's also commit c0a47e44c098 ("geneve: should not call
rt6_lookup() when ipv6 was disabled") which fixes a similar issue but
for regular tunnels, while this patch is needed for metadata based
tunnels.
Signed-off-by: Jiri Benc <jbenc@redhat.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifieddrivers/net/geneve.c (diff)
Commit a6da21bb0eae459a375d5bd48baed821d14301d0 by davem
net: dsa: mv88e6xxx: Fix statistics on mv88e6161
Despite what the datesheet says, the silicon implements the older way of
snapshoting the statistics. Change the op.
Reported-by: Chris.Healy@zii.aero Tested-by: Chris.Healy@zii.aero Fixes:
0ac64c394900 ("net: dsa: mv88e6xxx: mv88e6161 uses mv88e6320 stats
snapshot") Signed-off-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by:
David S. Miller <davem@davemloft.net>
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.c (diff)
Commit 07f12b26e21ab359261bf75cfcb424fdc7daeb6d by davem
net: sit: fix memory leak in sit_init_net()
If register_netdev() is failed to register sitn->fb_tunnel_dev, it will
go to err_reg_dev and forget to free netdev(sitn->fb_tunnel_dev).
BUG: memory leak unreferenced object 0xffff888378daad00 (size 512):
comm "syz-executor.1", pid 4006, jiffies 4295121142 (age 16.115s)
hex dump (first 32 bytes):
   00 e6 ed c0 83 88 ff ff 00 00 00 00 00 00 00 00  ................
   00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
backtrace:
   [<00000000d6dcb63e>] kvmalloc include/linux/mm.h:577 [inline]
   [<00000000d6dcb63e>] kvzalloc include/linux/mm.h:585 [inline]
   [<00000000d6dcb63e>] netif_alloc_netdev_queues net/core/dev.c:8380
[inline]
   [<00000000d6dcb63e>] alloc_netdev_mqs+0x600/0xcc0 net/core/dev.c:8970
   [<00000000867e172f>] sit_init_net+0x295/0xa40 net/ipv6/sit.c:1848
   [<00000000871019fa>] ops_init+0xad/0x3e0 net/core/net_namespace.c:129
   [<00000000319507f6>] setup_net+0x2ba/0x690
net/core/net_namespace.c:314
   [<0000000087db4f96>] copy_net_ns+0x1dc/0x330
net/core/net_namespace.c:437
   [<0000000057efc651>] create_new_namespaces+0x382/0x730
kernel/nsproxy.c:107
   [<00000000676f83de>] copy_namespaces+0x2ed/0x3d0 kernel/nsproxy.c:165
   [<0000000030b74bac>] copy_process.part.27+0x231e/0x6db0
kernel/fork.c:1919
   [<00000000fff78746>] copy_process kernel/fork.c:1713 [inline]
   [<00000000fff78746>] _do_fork+0x1bc/0xe90 kernel/fork.c:2224
   [<000000001c2e0d1c>] do_syscall_64+0xc8/0x580
arch/x86/entry/common.c:290
   [<00000000ec48bd44>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
   [<0000000039acff8a>] 0xffffffffffffffff
Signed-off-by: Mao Wenan <maowenan@huawei.com> Signed-off-by: David S.
Miller <davem@davemloft.net>
The file was modifiednet/ipv6/sit.c (diff)
The file was modifiedMakefile (diff)
Commit e36e066ffa78ded681272ff6b5b253e1a165f44c by gregkh
cpufreq: Use struct kobj_attribute instead of struct global_attr
commit 625c85a62cb7d3c79f6e16de3cfa972033658250 upstream.
The cpufreq_global_kobject is created using kobject_create_and_add()
helper, which assigns the kobj_type as dynamic_kobj_ktype and show/store
routines are set to kobj_attr_show() and kobj_attr_store().
These routines pass struct kobj_attribute as an argument to the
show/store callbacks. But all the cpufreq files created using the
cpufreq_global_kobject expect the argument to be of type struct
attribute. Things work fine currently as no one accesses the "attr"
argument. We may not see issues even if the argument is used, as struct
kobj_attribute has struct attribute as its first element and so they
will both get same address.
But this is logically incorrect and we should rather use struct
kobj_attribute instead of struct global_attr in the cpufreq core and
drivers and the show/store callbacks should take struct kobj_attribute
as argument instead.
This bug is caught using CFI CLANG builds in android kernel which
catches mismatch in function prototypes for such callbacks.
Reported-by: Donghee Han <dh.han@samsung.com> Reported-by: Sangkyu Kim
<skwith.kim@samsung.com> Signed-off-by: Viresh Kumar
<viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/cpufreq/cpufreq.c (diff)
The file was modifieddrivers/cpufreq/intel_pstate.c (diff)
The file was modifiedinclude/linux/cpufreq.h (diff)
Commit e93cd6500ff940c3f394868e31f4036622936c7a by gregkh
staging: erofs: fix mis-acted TAIL merging behavior
commit a112152f6f3a2a88caa6f414d540bd49e406af60 upstream.
EROFS has an optimized path called TAIL merging, which is designed to
merge multiple reads and the corresponding decompressions into one if
these requests read continuous pages almost at the same time.
In general, it behaves as follows:
________________________________________________________________
... |  TAIL  .  HEAD  |  PAGE  |  PAGE  |  TAIL    . HEAD | ...
_____|_combined page A_|________|________|_combined page B_|____
       1  ]  ->  [  2                          ]  ->  [ 3 If the above
three reads are requested in the order 1-2-3, it will generate a large
work chain rather than 3 individual work chains to reduce scheduling
overhead and boost up sequential read.
However, if Read 2 is processed slightly earlier than Read 1, currently
it still generates 2 individual work chains (chain 1, 2) but it does
in-place decompression for combined page A, moreover, if chain 2
decompresses ahead of chain 1, it will be a race and lead to corrupted
decompressed page. This patch fixes it.
Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression
support") Cc: <stable@vger.kernel.org> # 4.19+ Signed-off-by: Gao Xiang
<gaoxiang25@huawei.com> Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/erofs/unzip_vle.c (diff)
Commit ed1776bb5d0b38dc134de0487c06f8080cde0b8d by gregkh
binder: create node flag to request sender's security context
commit ec74136ded792deed80780a2f8baf3521eeb72f9 upstream.
To allow servers to verify client identity, allow a node flag to be set
that causes the sender's security context to be delivered with the
transaction. The BR_TRANSACTION command is extended in
BR_TRANSACTION_SEC_CTX to contain a pointer to the security context
string.
Signed-off-by: Todd Kjos <tkjos@google.com> Reviewed-by: Joel Fernandes
(Google) <joel@joelfernandes.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/uapi/linux/android/binder.h (diff)
The file was modifieddrivers/android/binder.c (diff)
Commit 8510d6a23c3d1182c209764f7efebcedd7b8ee53 by gregkh
USB: serial: option: add Telit ME910 ECM composition
commit 6431866b6707d27151be381252d6eef13025cfce upstream.
This patch adds Telit ME910 family ECM composition 0x1102.
Signed-off-by: Daniele Palmas <dnlplm@gmail.com> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/option.c (diff)
Commit eefd31d3c9af3c494a15d5cb852f6248135c569f by gregkh
USB: serial: cp210x: add ID for Ingenico 3070
commit dd9d3d86b08d6a106830364879c42c78db85389c upstream.
Here is how this device appears in kernel log:
usb 3-1: new full-speed USB device number 18 using xhci_hcd
usb 3-1: New USB device found, idVendor=0b00, idProduct=3070
usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 3-1: Product: Ingenico 3070
usb 3-1: Manufacturer: Silicon Labs
usb 3-1: SerialNumber: 0001
Apparently this is a POS terminal with embedded USB-to-Serial converter.
Cc: stable@vger.kernel.org Signed-off-by: Ivan Mironov
<mironov.ivan@gmail.com> Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/cp210x.c (diff)
Commit 0e14eb6e3f423a4b380a631653790a1f41da77ed by gregkh
USB: serial: ftdi_sio: add ID for Hjelmslund Electronics USB485
commit 8d7fa3d4ea3f0ca69554215e87411494e6346fdc upstream.
This adds the USB ID of the Hjelmslund Electronics USB485 Iso stick.
Signed-off-by: Mans Rullgard <mans@mansr.com> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/ftdi_sio_ids.h (diff)
The file was modifieddrivers/usb/serial/ftdi_sio.c (diff)
Commit 091520a140861d43fc8973a26996202ce3062acd by gregkh
driver core: Postpone DMA tear-down until after devres release
commit 376991db4b6464e906d699ef07681e2ffa8ab08c upstream.
When unbinding the (IOMMU-enabled) R-Car SATA device on Salvator-XS
(R-Car H3 ES2.0), in preparation of rebinding against vfio-platform for
device pass-through for virtualization:
    echo ee300000.sata > /sys/bus/platform/drivers/sata_rcar/unbind
the kernel crashes with:
    Unable to handle kernel paging request at virtual address
ffffffbf029ffffc
    Mem abort info:
      ESR = 0x96000006
      Exception class = DABT (current EL), IL = 32 bits
      SET = 0, FnV = 0
      EA = 0, S1PTW = 0
    Data abort info:
      ISV = 0, ISS = 0x00000006
      CM = 0, WnR = 0
    swapper pgtable: 4k pages, 39-bit VAs, pgdp = 000000007e8c586c
    [ffffffbf029ffffc] pgd=000000073bfc6003, pud=000000073bfc6003,
pmd=0000000000000000
    Internal error: Oops: 96000006 [#1] SMP
    Modules linked in:
    CPU: 0 PID: 1098 Comm: bash Not tainted
5.0.0-rc5-salvator-x-00452-g37596f884f4318ef #287
    Hardware name: Renesas Salvator-X 2nd version board based on r8a7795
ES2.0+ (DT)
    pstate: 60400005 (nZCv daif +PAN -UAO)
    pc : __free_pages+0x8/0x58
    lr : __dma_direct_free_pages+0x50/0x5c
    sp : ffffff801268baa0
    x29: ffffff801268baa0 x28: 0000000000000000
    x27: ffffffc6f9c60bf0 x26: ffffffc6f9c60bf0
    x25: ffffffc6f9c60810 x24: 0000000000000000
    x23: 00000000fffff000 x22: ffffff8012145000
    x21: 0000000000000800 x20: ffffffbf029fffc8
    x19: 0000000000000000 x18: ffffffc6f86c42c8
    x17: 0000000000000000 x16: 0000000000000070
    x15: 0000000000000003 x14: 0000000000000000
    x13: ffffff801103d7f8 x12: 0000000000000028
    x11: ffffff8011117604 x10: 0000000000009ad8
    x9 : ffffff80110126d0 x8 : ffffffc6f7563000
    x7 : 6b6b6b6b6b6b6b6b x6 : 0000000000000018
    x5 : ffffff8011cf3cc8 x4 : 0000000000004000
    x3 : 0000000000080000 x2 : 0000000000000001
    x1 : 0000000000000000 x0 : ffffffbf029fffc8
    Process bash (pid: 1098, stack limit = 0x00000000c38e3e32)
    Call trace:
     __free_pages+0x8/0x58
     __dma_direct_free_pages+0x50/0x5c
     arch_dma_free+0x1c/0x98
     dma_direct_free+0x14/0x24
     dma_free_attrs+0x9c/0xdc
     dmam_release+0x18/0x20
     release_nodes+0x25c/0x28c
     devres_release_all+0x48/0x4c
     device_release_driver_internal+0x184/0x1f0
     device_release_driver+0x14/0x1c
     unbind_store+0x70/0xb8
     drv_attr_store+0x24/0x34
     sysfs_kf_write+0x4c/0x64
     kernfs_fop_write+0x154/0x1c4
     __vfs_write+0x34/0x164
     vfs_write+0xb4/0x16c
     ksys_write+0x5c/0xbc
     __arm64_sys_write+0x14/0x1c
     el0_svc_common+0x98/0x114
     el0_svc_handler+0x1c/0x24
     el0_svc+0x8/0xc
    Code: d51b4234 17fffffa a9bf7bfd 910003fd (b9403404)
    ---[ end trace 8c564cdd3a1a840f ]---
While I've bisected this to commit e8e683ae9a736407 ("iommu/of: Fix
probe-deferral"), and reverting that commit on post-v5.0-rc4 kernels
does fix the problem, this turned out to be a red herring.
On arm64, arch_teardown_dma_ops() resets dev->dma_ops to NULL. Hence if
a driver has used a managed DMA allocation API, the allocated DMA memory
will be freed using the direct DMA ops, while it may have been allocated
using a custom DMA ops (iommu_dma_ops in this case).
Fix this by reversing the order of the calls to devres_release_all() and
arch_teardown_dma_ops().
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be> Acked-by:
Christoph Hellwig <hch@lst.de> Reviewed-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Cc: stable <stable@vger.kernel.org>
Reviewed-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/base/dd.c (diff)
Commit 27f2f4877a004fa0360d63b8c5baa3ec90e6f022 by gregkh
staging: erofs: fix fast symlink w/o xattr when fs xattr is on
commit 7077fffcb0b0b65dc75e341306aeef4d0e7f2ec6 upstream.
Currently, this will hit a BUG_ON for these symlinks as follows:
- kernel message
------------[ cut here ]------------ kernel BUG at
drivers/staging/erofs/xattr.c:59! SMP PTI CPU: 1 PID: 1170 Comm:
getllxattr Not tainted 4.20.0-rc6+ #92 Hardware name: QEMU Standard PC
(i440FX + PIIX, 1996), BIOS 1.10.2-2.fc27 04/01/2014 RIP:
0010:init_inode_xattrs+0x22b/0x270 Code: 48 0f 45 ea f0 ff 4d 34 74 0d
41 83 4c 24 e0 01 31 c0 e9 00 fe ff ff 48 89 ef e8 e0 31 9e ff eb e9 89
e8 e9 ef fd ff ff 0f 0$
<0f> 0b 48 89 ef e8 fb f6 9c ff 48 8b 45 08 a8 01 75 24 f0 ff 4d 34 RSP:
0018:ffffa03ac026bdf8 EFLAGS: 00010246
------------[ cut here ]------------
... Call Trace:
erofs_listxattr+0x30/0x2c0
? selinux_inode_listxattr+0x5a/0x80
? kmem_cache_alloc+0x33/0x170
? security_inode_listxattr+0x27/0x40
listxattr+0xaf/0xc0
path_listxattr+0x5a/0xa0
do_syscall_64+0x43/0xf0
entry_SYSCALL_64_after_hwframe+0x44/0xa9
...
---[ end trace 3c24b49408dc0c72 ]---
Fix it by checking ->xattr_isize in init_inode_xattrs(), and it also
fixes improper return value -ENOTSUPP
(it should be -ENODATA if xattr is enabled) for those inodes.
Fixes: b17500a0fdba ("staging: erofs: introduce xattr & acl support")
Cc: <stable@vger.kernel.org> # 4.19+ Reported-by: Li Guifu
<bluce.liguifu@huawei.com> Tested-by: Li Guifu
<bluce.liguifu@huawei.com> Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Gao Xiang <gaoxiang25@huawei.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/erofs/xattr.c (diff)
The file was modifieddrivers/staging/erofs/inode.c (diff)
Commit 6df0b3ebdade371d94663353654fa6d6f0d1ca1a by gregkh
staging: erofs: fix memleak of inode's shared xattr array
commit 3b1b5291f79d040d549d7c746669fc30e8045b9b upstream.
If it fails to read a shared xattr page, the inode's shared xattr array
is not freed. The next time the inode's xattr is accessed, the
previously allocated array is leaked.
Signed-off-by: Sheng Yong <shengyong1@huawei.com> Fixes: b17500a0fdba
("staging: erofs: introduce xattr & acl support") Cc:
<stable@vger.kernel.org> # 4.19+ Reviewed-by: Gao Xiang
<gaoxiang25@huawei.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/erofs/xattr.c (diff)
Commit fa42199d9dab6c82222d4786ed9674f12909611b by gregkh
staging: erofs: fix race of initializing xattrs of a inode at the same
time
commit 62dc45979f3f8cb0ea67302a93bff686f0c46c5a upstream.
In real scenario, there could be several threads accessing xattrs of the
same xattr-uninitialized inode, and init_inode_xattrs() almost at the
same time.
That's actually an unexpected behavior, this patch closes the race.
Fixes: b17500a0fdba ("staging: erofs: introduce xattr & acl support")
Cc: <stable@vger.kernel.org> # 4.19+ Reviewed-by: Chao Yu
<yuchao0@huawei.com> Signed-off-by: Gao Xiang <gaoxiang25@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/erofs/xattr.c (diff)
The file was modifieddrivers/staging/erofs/internal.h (diff)
Commit 116ad909da648d58a6a84024a537274106c68819 by gregkh
staging: erofs: fix illegal address access under memory pressure
commit 1e5ceeab6929585512c63d05911d6657064abf7b upstream.
Considering a read request with two decompressed file pages, If a
decompression work cannot be started on the previous page due to memory
pressure but in-memory LTP map lookup is done, builder->work should be
still NULL.
Moreover, if the current page also belongs to the same map, it won't try
to start the decompression work again and then run into trouble.
This patch aims to solve the above issue only with little changes as
much as possible in order to make the fix backport easier.
kernel message is:
<4>[1051408.015930s]SLUB: Unable to allocate memory on node -1,
gfp=0x2408040(GFP_NOFS|__GFP_ZERO)
<4>[1051408.015930s]  cache: erofs_compress, object size: 144, buffer
size: 144, default order: 0, min order: 0
<4>[1051408.015930s]  node 0: slabs: 98, objs: 2744, free: 0
* Cannot allocate the decompression work
<3>[1051408.015960s]erofs: z_erofs_vle_normalaccess_readpages, readahead
error at page 1008 of nid 5391488
* Note that the previous page was failed to read
<0>[1051408.015960s]Internal error: Accessing user space memory outside
uaccess.h routines: 96000005 [#1] PREEMPT SMP
...
<4>[1051408.015991s]Hardware name: kirin710 (DT)
...
<4>[1051408.016021s]PC is at z_erofs_vle_work_add_page+0xa0/0x17c
<4>[1051408.016021s]LR is at z_erofs_do_read_page+0x12c/0xcf0
...
<4>[1051408.018096s][<ffffff80c6fb0fd4>]
z_erofs_vle_work_add_page+0xa0/0x17c
<4>[1051408.018096s][<ffffff80c6fb3814>]
z_erofs_vle_normalaccess_readpages+0x1a0/0x37c
<4>[1051408.018096s][<ffffff80c6d670b8>] read_pages+0x70/0x190
<4>[1051408.018127s][<ffffff80c6d6736c>]
__do_page_cache_readahead+0x194/0x1a8
<4>[1051408.018127s][<ffffff80c6d59318>] filemap_fault+0x398/0x684
<4>[1051408.018127s][<ffffff80c6d8a9e0>] __do_fault+0x8c/0x138
<4>[1051408.018127s][<ffffff80c6d8f90c>] handle_pte_fault+0x730/0xb7c
<4>[1051408.018127s][<ffffff80c6d8fe04>] __handle_mm_fault+0xac/0xf4
<4>[1051408.018157s][<ffffff80c6d8fec8>] handle_mm_fault+0x7c/0x118
<4>[1051408.018157s][<ffffff80c8c52998>] do_page_fault+0x354/0x474
<4>[1051408.018157s][<ffffff80c8c52af8>] do_translation_fault+0x40/0x48
<4>[1051408.018157s][<ffffff80c6c002f4>] do_mem_abort+0x80/0x100
<4>[1051408.018310s]---[ end trace 9f4009a3283bd78b ]---
Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression
support") Cc: <stable@vger.kernel.org> # 4.19+ Signed-off-by: Gao Xiang
<gaoxiang25@huawei.com> Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/erofs/unzip_vle.c (diff)
Commit e872d586158c27401f98a1f5bedaa6e4b9b1fd63 by gregkh
staging: comedi: ni_660x: fix missing break in switch statement
commit 479826cc86118e0d87e5cefb3df5b748e0480924 upstream.
Add missing break statement in order to prevent the code from falling
through to the default case and return -EINVAL every time.
This bug was found thanks to the ongoing efforts to enable
-Wimplicit-fallthrough.
Fixes: aa94f2888825 ("staging: comedi: ni_660x: tidy up
ni_660x_set_pfi_routing()") Cc: stable@vger.kernel.org Signed-off-by:
Gustavo A. R. Silva <gustavo@embeddedor.com> Reviewed-by: Ian Abbott
<abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/comedi/drivers/ni_660x.c (diff)
Commit f14ab1e367d2f0623b01780cf3a6a01a1fd16f09 by gregkh
staging: wilc1000: fix to set correct value for 'vif_num'
commit dda037057a572f5c82ac2499eb4e6fb17600ba3e upstream.
Set correct value in '->vif_num' for the total number of interfaces and
set '->idx' value using 'i'.
Fixes: 735bb39ca3be ("staging: wilc1000: simplify vif[i]->ndev
accesses") Fixes: 0e490657c721 ("staging: wilc1000: Fix problem with
wrong vif index") Cc: <stable@vger.kernel.org> Suggested-by: Dan
Carpenter <dan.carpenter@oracle.com> Reviewed-by: Dan Carpenter
<dan.carpenter@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/wilc1000/linux_wlan.c (diff)
Commit 6e2cda2e854bbaa3d72b5eff9edf06bac205ccec by gregkh
staging: android: ion: fix sys heap pool's gfp_flags
commit 9bcf065e28122588a6cbee08cf847826dacbb438 upstream.
In the first loop, gfp_flags will be modified to high_order_gfp_flags,
and there will be no chance to change back to low_order_gfp_flags.
Fixes: e7f63771b60e ("ION: Sys_heap: Add cached pool to spead up cached
buffer alloc") Signed-off-by: Qing Xia <saberlily.xia@hisilicon.com> Cc:
stable <stable@vger.kernel.org> Signed-off-by: Jing Xia
<jing.xia@unisoc.com> Reviewed-by: Yuming Han <yuming.han@unisoc.com>
Reviewed-by: Zhaoyang Huang <zhaoyang.huang@unisoc.com> Reviewed-by:
Orson Zhai <orson.zhai@unisoc.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/android/ion/ion_system_heap.c (diff)
Commit 6a6b0c1b4731bde4d28e73f7a0eb9d6ddcc84724 by gregkh
staging: android: ashmem: Don't call fallocate() with ashmem_mutex held.
commit fb4415a12632f0b9078a0aa80c16745d48fcfc74 upstream.
syzbot is hitting lockdep warnings [1][2][3]. This patch tries to fix
the warning by eliminating ashmem_shrink_scan() =>
{shmem|vfs}_fallocate() sequence.
[1]
https://syzkaller.appspot.com/bug?id=87c399f6fa6955006080b24142e2ce7680295ad4
[2]
https://syzkaller.appspot.com/bug?id=7ebea492de7521048355fc84210220e1038a7908
[3]
https://syzkaller.appspot.com/bug?id=e02419c12131c24e2a957ea050c2ab6dcbbc3270
Reported-by: syzbot
<syzbot+a76129f18c89f3e2ddd4@syzkaller.appspotmail.com> Reported-by:
syzbot <syzbot+148c2885d71194f18d28@syzkaller.appspotmail.com>
Reported-by: syzbot
<syzbot+4b8b031b89e6b96c4b2e@syzkaller.appspotmail.com> Signed-off-by:
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Cc:
stable@vger.kernel.org Acked-by: Joel Fernandes (Google)
<joel@joelfernandes.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/android/ashmem.c (diff)
Commit b592247edd6ba2498cf4948b61913632443ab782 by gregkh
staging: android: ashmem: Avoid range_alloc() allocation with
ashmem_mutex held.
commit ecd182cbf4e107928077866399100228d2359c60 upstream.
ashmem_pin() is calling range_shrink() without checking whether
range_alloc() succeeded. Also, doing memory allocation with ashmem_mutex
held should be avoided because ashmem_shrink_scan() tries to hold it.
Therefore, move memory allocation for range_alloc() to
ashmem_pin_unpin() and make range_alloc() not to fail.
This patch is mostly meant for backporting purpose for fuzz testing on
stable/distributor kernels, for there is a plan to remove this code in
near future.
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Cc:
stable@vger.kernel.org Reviewed-by: Joel Fernandes
<joel@joelfernandes.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/android/ashmem.c (diff)
Commit 9b3149338ace20a0f40bbf0b03091d7ea6f4c2fd by gregkh
ip6mr: Do not call __IP6_INC_STATS() from preemptible context
[ Upstream commit 87c11f1ddbbad38ad8bad47af133a8208985fbdf ]
Similar to commit 44f49dd8b5a6 ("ipmr: fix possible race resulting from
improper usage of IP_INC_STATS_BH() in preemptible context."), we cannot
assume preemption is disabled when incrementing the counter and
accessing a per-CPU variable.
Preemption can be enabled when we add a route in process context that
corresponds to packets stored in the unresolved queue, which are then
forwarded using this route [1].
Fix this by using IP6_INC_STATS() which takes care of disabling
preemption on architectures where it is needed.
[1]
[  157.451447] BUG: using __this_cpu_add() in preemptible [00000000]
code: smcrouted/2314
[  157.460409] caller is ip6mr_forward2+0x73e/0x10e0
[  157.460434] CPU: 3 PID: 2314 Comm: smcrouted Not tainted
5.0.0-rc7-custom-03635-g22f2712113f1 #1336
[  157.460449] Hardware name: Mellanox Technologies Ltd.
MSN2100-CB2FO/SA001017, BIOS 5.6.5 06/07/2016
[  157.460461] Call Trace:
[  157.460486]  dump_stack+0xf9/0x1be
[  157.460553]  check_preemption_disabled+0x1d6/0x200
[  157.460576]  ip6mr_forward2+0x73e/0x10e0
[  157.460705]  ip6_mr_forward+0x9a0/0x1510
[  157.460771]  ip6mr_mfc_add+0x16b3/0x1e00
[  157.461155]  ip6_mroute_setsockopt+0x3cb/0x13c0
[  157.461384]  do_ipv6_setsockopt.isra.8+0x348/0x4060
[  157.462013]  ipv6_setsockopt+0x90/0x110
[  157.462036]  rawv6_setsockopt+0x4a/0x120
[  157.462058]  __sys_setsockopt+0x16b/0x340
[  157.462198]  __x64_sys_setsockopt+0xbf/0x160
[  157.462220]  do_syscall_64+0x14d/0x610
[  157.462349]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
Fixes: 0912ea38de61 ("[IPV6] MROUTE: Add stats in multicast routing
module method ip6_mr_forward().") Signed-off-by: Ido Schimmel
<idosch@mellanox.com> Reported-by: Amit Cohen <amitc@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/ipv6/ip6mr.c (diff)
Commit 9590cdffe8c4ccc7d9201751aa1fd48203db6027 by gregkh
net: dsa: mv88e6xxx: add call to mv88e6xxx_ports_cmode_init to probe for
new DSA framework
[ Upstream commit 3acca1dd17060332cfab15693733cdaf9fba1c90 ]
In the original patch I missed to add mv88e6xxx_ports_cmode_init() to
the second probe function, the one for the new DSA framework.
Fixes: ed8fe20205ac ("net: dsa: mv88e6xxx: prevent interrupt storm
caused by mv88e6390x_port_set_cmode") Reported-by: Shaokun Zhang
<zhangshaokun@hisilicon.com> Suggested-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by:
Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.c (diff)
Commit c2e346e38c2ab9977f38fbd1943eaa63f295e8b7 by gregkh
net: dsa: mv88e6xxx: handle unknown duplex modes gracefully in
mv88e6xxx_port_set_duplex
[ Upstream commit c6195a8bdfc62a7cecf7df685e64847a4b700275 ]
When testing another issue I faced the problem that
mv88e6xxx_port_setup_mac() failed due to DUPLEX_UNKNOWN being passed as
argument to mv88e6xxx_port_set_duplex(). We should handle this case
gracefully and return -EOPNOTSUPP, like e.g. mv88e6xxx_port_set_speed()
is doing it.
Fixes: 7f1ae07b51e8 ("net: dsa: mv88e6xxx: add port duplex setter")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by:
Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/mv88e6xxx/port.c (diff)
Commit 050c7ff6f46c9d368b2dab7fa88c838cc07b3f9e by gregkh
net: dsa: mv8e6xxx: fix number of internal PHYs for 88E6x90 family
[ Upstream commit 95150f29ae480276e76368cdf8a9524b5a96c0ca ]
Ports 9 and 10 don't have internal PHY's but are (dependent on the
version) SERDES/SGMII/XAUI/RXAUI ports.
v2:
- fix it for all 88E6x90 family members
Fixes: bc3931557d1d ("net: dsa: mv88e6xxx: Add number of internal PHYs")
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Reviewed-by:
Andrew Lunn <andrew@lunn.ch> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.c (diff)
Commit e1c9e3fe2d343758f189cd682c3b23cdd4f20601 by gregkh
net: mscc: Enable all ports in QSGMII
[ Upstream commit 084e5bb16bd7dc2b551bbd9fb358bf73e03ee8d8 ]
When Ocelot phy-mode is QSGMII, all 4 ports involved in QSGMII shall be
kept out of reset and Tx lanes shall be enabled to pass the data.
Fixes: a556c76adc05 ("net: mscc: Add initial Ocelot switch support")
Signed-off-by: Kavya Sree Kotagiri <kavyasree.kotagiri@microchip.com>
Signed-off-by: Steen Hegelund <Steen.Hegelund@microchip.com>
Co-developed-by: Steen Hegelund <Steen.Hegelund@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/mscc/ocelot_board.c (diff)
Commit cd267ea6a70cf261eadac6273bcb13b198f29062 by gregkh
net: sched: put back q.qlen into a single location
[ Upstream commit 46b1c18f9deb326a7e18348e668e4c7ab7c7458b ]
In the series fc8b81a5981f ("Merge branch 'lockless-qdisc-series'") John
made the assumption that the data path had no need to read the qdisc
qlen (number of packets in the qdisc).
It is true when pfifo_fast is used as the root qdisc, or as direct
MQ/MQPRIO children.
But pfifo_fast can be used as leaf in class full qdiscs, and existing
logic needs to access the child qlen in an efficient way.
HTB breaks badly, since it uses cl->leaf.q->q.qlen in :
htb_activate() -> WARN_ON()
htb_dequeue_tree() to decide if a class can be htb_deactivated
when it has no more packets.
HFSC, DRR, CBQ, QFQ have similar issues, and some calls to
qdisc_tree_reduce_backlog() also read q.qlen directly.
Using qdisc_qlen_sum() (which iterates over all possible cpus) in the
data path is a non starter.
It seems we have to put back qlen in a central location, at least for
stable kernels.
For all qdisc but pfifo_fast, qlen is guarded by the qdisc lock, so the
existing q.qlen{++|--} are correct.
For 'lockless' qdisc (pfifo_fast so far), we need to use
atomic_{inc|dec}() because the spinlock might be not held (for example
from pfifo_fast_enqueue() and pfifo_fast_dequeue())
This patch adds atomic_qlen (in the same location than qlen) and renames
the following helpers, since we want to express they can be used without
qdisc lock, and that qlen is no longer percpu.
- qdisc_qstats_cpu_qlen_dec -> qdisc_qstats_atomic_qlen_dec()
- qdisc_qstats_cpu_qlen_inc -> qdisc_qstats_atomic_qlen_inc()
Later (net-next) we might revert this patch by tracking all these qlen
uses and replace them by a more efficient method (not having to access a
precise qlen, but an empty/non_empty status that might be less expensive
to maintain/track).
Another possibility is to have a legacy pfifo_fast version that would be
used when used a a child qdisc, since the parent qdisc needs a spinlock
anyway. But then, future lockless qdiscs would also have the same
problem.
Fixes: 7e66016f2c65 ("net: sched: helpers to sum qlen and qlen for per
cpu logic") Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: John
Fastabend <john.fastabend@gmail.com> Cc: Jamal Hadi Salim
<jhs@mojatatu.com> Cc: Cong Wang <xiyou.wangcong@gmail.com> Cc: Jiri
Pirko <jiri@resnulli.us> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/net/sch_generic.h (diff)
The file was modifiednet/sched/sch_generic.c (diff)
The file was modifiednet/core/gen_stats.c (diff)
Commit 1ba2882157049c54324cd703060a11dc4e493efe by gregkh
net-sysfs: Fix mem leak in netdev_register_kobject
[ Upstream commit 895a5e96dbd6386c8e78e5b78e067dcc67b7f0ab ]
syzkaller report this: BUG: memory leak unreferenced object
0xffff88837a71a500 (size 256):
comm "syz-executor.2", pid 9770, jiffies 4297825125 (age 17.843s)
hex dump (first 32 bytes):
   00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00  .....N..........
   ff ff ff ff ff ff ff ff 20 c0 ef 86 ff ff ff ff  ........ .......
backtrace:
   [<00000000db12624b>] netdev_register_kobject+0x124/0x2e0
net/core/net-sysfs.c:1751
   [<00000000dc49a994>] register_netdevice+0xcc1/0x1270
net/core/dev.c:8516
   [<00000000e5f3fea0>] tun_set_iff drivers/net/tun.c:2649 [inline]
   [<00000000e5f3fea0>] __tun_chr_ioctl+0x2218/0x3d20
drivers/net/tun.c:2883
   [<000000001b8ac127>] vfs_ioctl fs/ioctl.c:46 [inline]
   [<000000001b8ac127>] do_vfs_ioctl+0x1a5/0x10e0 fs/ioctl.c:690
   [<0000000079b269f8>] ksys_ioctl+0x89/0xa0 fs/ioctl.c:705
   [<00000000de649beb>] __do_sys_ioctl fs/ioctl.c:712 [inline]
   [<00000000de649beb>] __se_sys_ioctl fs/ioctl.c:710 [inline]
   [<00000000de649beb>] __x64_sys_ioctl+0x74/0xb0 fs/ioctl.c:710
   [<000000007ebded1e>] do_syscall_64+0xc8/0x580
arch/x86/entry/common.c:290
   [<00000000db315d36>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
   [<00000000115be9bb>] 0xffffffffffffffff
It should call kset_unregister to free 'dev->queues_kset' in error path
of register_queue_kobjects, otherwise will cause a mem leak.
Reported-by: Hulk Robot <hulkci@huawei.com> Fixes: 1d24eb4815d1 ("xps:
Transmit Packet Steering") Signed-off-by: YueHaibing
<yuehaibing@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/core/net-sysfs.c (diff)
Commit 43610748b73d309c17276a2042d94e6fa06df27e by gregkh
qmi_wwan: Add support for Quectel EG12/EM12
[ Upstream commit 822e44b45eb991c63487c5e2ce7d636411870a8d ]
Quectel EG12 (module)/EM12 (M.2 card) is a Cat. 12 LTE modem. The modem
behaves in the same way as the EP06, so the "set DTR"-quirk must be
applied and the diagnostic-interface check performed. Since the
diagnostic-check now applies to more modems, I have renamed the function
from quectel_ep06_diag_detected() to quectel_diag_detected().
Signed-off-by: Kristian Evensen <kristian.evensen@gmail.com> Acked-by:
Bjørn Mork <bjorn@mork.no> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/usb/qmi_wwan.c (diff)
Commit 9dc9563fbb3885826d9786eb5d5000995dc57b75 by gregkh
sctp: call iov_iter_revert() after sending ABORT
[ Upstream commit 901efe12318b1ea8d3e2c88a7b75ed6e6d5d7245 ]
The user msg is also copied to the abort packet when doing SCTP_ABORT in
sctp_sendmsg_check_sflags(). When SCTP_SENDALL is set, iov_iter_revert()
should have been called for sending abort on the next asoc with copying
this msg. Otherwise, memcpy_from_msg() in sctp_make_abort_user() will
fail and return error.
Fixes: 4910280503f3 ("sctp: add support for snd flag SCTP_SENDALL
process in sendmsg") Reported-by: Ying Xu <yinxu@redhat.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Neil Horman
<nhorman@tuxdriver.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sctp/socket.c (diff)
Commit 3445d44b8330ab2219f3fb77d453c6068f11406c by gregkh
sky2: Disable MSI on Dell Inspiron 1545 and Gateway P-79
[ Upstream commit b33b7cd6fd86478dd2890a9abeb6f036aa01fdf7 ]
Some sky2 chips fire IRQ after S3, before the driver is fully resumed:
[ 686.804877] do_IRQ: 1.37 No irq handler for vector
This is likely a platform bug that device isn't fully quiesced during
S3. Use MSI-X, maskable MSI or INTx can prevent this issue from
happening.
Since MSI-X and maskable MSI are not supported by this device, fallback
to use INTx on affected platforms.
BugLink: https://bugs.launchpad.net/bugs/1807259 BugLink:
https://bugs.launchpad.net/bugs/1809843 Signed-off-by: Kai-Heng Feng
<kai.heng.feng@canonical.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/marvell/sky2.c (diff)
Commit b0c649843a76cece77a569702a13183d9991c5d8 by gregkh
team: Free BPF filter when unregistering netdev
[ Upstream commit 692c31bd4054212312396b1d303bffab2c5b93a7 ]
When team is used in loadbalance mode a BPF filter can be used to
provide a hash which will determine the Tx port.
When the netdev is later unregistered the filter is not freed which
results in memory leaks [1].
Fix by freeing the program and the corresponding filter when
unregistering the netdev.
[1] unreferenced object 0xffff8881dbc47cc8 (size 16):
comm "teamd", pid 3068, jiffies 4294997779 (age 438.247s)
hex dump (first 16 bytes):
   a3 00 6b 6b 6b 6b 6b 6b 88 a5 82 e1 81 88 ff ff  ..kkkkkk........
backtrace:
   [<000000008a3b47e3>] team_nl_cmd_options_set+0x88f/0x11b0
   [<00000000c4f4f27e>] genl_family_rcv_msg+0x78f/0x1080
   [<00000000610ef838>] genl_rcv_msg+0xca/0x170
   [<00000000a281df93>] netlink_rcv_skb+0x132/0x380
   [<000000004d9448a2>] genl_rcv+0x29/0x40
   [<000000000321b2f4>] netlink_unicast+0x4c0/0x690
   [<000000008c25dffb>] netlink_sendmsg+0x929/0xe10
   [<00000000068298c5>] sock_sendmsg+0xc8/0x110
   [<0000000082a61ff0>] ___sys_sendmsg+0x77a/0x8f0
   [<00000000663ae29d>] __sys_sendmsg+0xf7/0x250
   [<0000000027c5f11a>] do_syscall_64+0x14d/0x610
   [<000000006cfbc8d3>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
   [<00000000e23197e2>] 0xffffffffffffffff unreferenced object
0xffff8881e182a588 (size 2048):
comm "teamd", pid 3068, jiffies 4294997780 (age 438.247s)
hex dump (first 32 bytes):
   20 00 00 00 02 00 00 00 30 00 00 00 28 f0 ff ff   .......0...(...
   07 00 00 00 00 00 00 00 28 00 00 00 00 00 00 00  ........(.......
backtrace:
   [<000000002daf01fb>] lb_bpf_func_set+0x45c/0x6d0
   [<000000008a3b47e3>] team_nl_cmd_options_set+0x88f/0x11b0
   [<00000000c4f4f27e>] genl_family_rcv_msg+0x78f/0x1080
   [<00000000610ef838>] genl_rcv_msg+0xca/0x170
   [<00000000a281df93>] netlink_rcv_skb+0x132/0x380
   [<000000004d9448a2>] genl_rcv+0x29/0x40
   [<000000000321b2f4>] netlink_unicast+0x4c0/0x690
   [<000000008c25dffb>] netlink_sendmsg+0x929/0xe10
   [<00000000068298c5>] sock_sendmsg+0xc8/0x110
   [<0000000082a61ff0>] ___sys_sendmsg+0x77a/0x8f0
   [<00000000663ae29d>] __sys_sendmsg+0xf7/0x250
   [<0000000027c5f11a>] do_syscall_64+0x14d/0x610
   [<000000006cfbc8d3>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
   [<00000000e23197e2>] 0xffffffffffffffff
Fixes: 01d7f30a9f96 ("team: add loadbalance mode") Signed-off-by: Ido
Schimmel <idosch@mellanox.com> Reported-by: Amit Cohen
<amitc@mellanox.com> Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/team/team_mode_loadbalance.c (diff)
Commit 258c4bfcea44f0729187c05185a99bfc3ccc77e1 by gregkh
tipc: fix RDM/DGRAM connect() regression
[ Upstream commit 0e63208915a8d7590d0a6218dadb2a6a00ac705a ]
Fix regression bug introduced in commit 365ad353c256 ("tipc: reduce risk
of user starvation during link congestion")
Only signal -EDESTADDRREQ for RDM/DGRAM if we don't have a cached
sockaddr.
Fixes: 365ad353c256 ("tipc: reduce risk of user starvation during link
congestion") Signed-off-by: Erik Hugne <erik.hugne@gmail.com>
Signed-off-by: Jon Maloy <jon.maloy@ericsson.com> Signed-off-by: David
S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/tipc/socket.c (diff)
Commit b8907034edaf2e5d942930711824a1d311517f25 by gregkh
x86/CPU/AMD: Set the CPB bit unconditionally on F17h
commit 0237199186e7a4aa5310741f0a6498a20c820fd7 upstream.
Some F17h models do not have CPB set in CPUID even though the CPU
supports it. Set the feature bit unconditionally on all F17h.
[ bp: Rewrite commit message and patch. ]
Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Signed-off-by:
Borislav Petkov <bp@suse.de> Acked-by: Tom Lendacky
<thomas.lendacky@amd.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Ingo
Molnar <mingo@redhat.com> Cc: Sherry Hurwitz <sherry.hurwitz@amd.com>
Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Cc: Thomas
Gleixner <tglx@linutronix.de> Cc: x86-ml <x86@kernel.org> Link:
https://lkml.kernel.org/r/20181120030018.5185-1-jiaxun.yang@flygoat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/cpu/amd.c (diff)
Commit ad0051c0d6da31261c4795a67ce6f5ca2710bedc by gregkh
x86/boot/compressed/64: Do not read legacy ROM on EFI system
commit 6f913de3231e1d70a871135b38219da7810df218 upstream.
EFI systems do not necessarily provide a legacy ROM. If the ROM is
missing the memory is not mapped at all.
Trying to dereference values in the legacy ROM area leads to a crash on
Macbook Pro.
Only look for values in the legacy ROM area for non-EFI system.
Fixes: 3548e131ec6a ("x86/boot/compressed/64: Find a place for 32-bit
trampoline") Reported-by: Pitam Mitra <pitamm@gmail.com> Signed-off-by:
Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Signed-off-by:
Thomas Gleixner <tglx@linutronix.de> Tested-by: Bockjoo Kim
<bockjoo@phys.ufl.edu> Cc: bp@alien8.de Cc: hpa@zytor.com Cc:
stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190219075224.35058-1-kirill.shutemov@linux.intel.com
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=202351
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/boot/compressed/pgtable_64.c (diff)
Commit 1eadda06dcda82a8fe48b603b346261bdd495542 by gregkh
tracing: Fix event filters and triggers to handle negative numbers
commit 6a072128d262d2b98d31626906a96700d1fc11eb upstream.
Then tracing syscall exit event it is extremely useful to filter exit
codes equal to some negative value, to react only to required errors.
But negative numbers does not work:
[root@snorch sys_exit_read]# echo "ret == -1" > filter bash: echo: write
error: Invalid argument
[root@snorch sys_exit_read]# cat filter ret == -1
       ^ parse_error: Invalid value (did you forget quotes)?
Similar thing happens when setting triggers.
These is a regression in v4.17 introduced by the commit mentioned below,
testing without these commit shows no problem with negative numbers.
Link:
http://lkml.kernel.org/r/20180823102534.7642-1-ptikhomirov@virtuozzo.com
Cc: stable@vger.kernel.org Fixes: 80765597bc58 ("tracing: Rewrite filter
logic to be simpler and faster") Signed-off-by: Pavel Tikhomirov
<ptikhomirov@virtuozzo.com> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedkernel/trace/trace_events_filter.c (diff)
Commit 511ba5f2287c55f45a4bf45358cd5c06012c8d3c by gregkh
xhci: tegra: Prevent error pointer dereference
commit 0326ccb5feac6eac35ba6254260e2774277cd976 upstream.
During initialization, the host and super-speed power domains will
contain an ERR_PTR() encoded error code rather than being NULL. To avoid
a crash, use a !IS_ERR_OR_NULL() condition during cleanup.
Signed-off-by: Thierry Reding <treding@nvidia.com> Fixes: 6494a9ad86de
("usb: xhci: tegra: Add genpd support") Cc: stable
<stable@vger.kernel.org> Reviewed-by: Jon Hunter <jonathanh@nvidia.com>
Acked-by: Mathias Nyman <mathias.nyman@linux.intel.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/host/xhci-tegra.c (diff)
Commit 92424a6839151126bc925c4de05da90a7df23ece by gregkh
usb: xhci: Fix for Enabling USB ROLE SWITCH QUIRK on
INTEL_SUNRISEPOINT_LP_XHCI
commit 8fde481ef3674ae5ad0dbfef4df18ff507c5675a upstream.
This fix enables USB role feature on intel commercial nuc platform which
is based on Kabylake chipset.
Signed-off-by: Balaji Manoharan <m.balaji@intel.com> Reviewed-by: Hans
de Goede <hdegoede@redhat.com> Reviewed-by: Heikki Krogerus
<heikki.krogerus@linux.intel.com> Signed-off-by: Mathias Nyman
<mathias.nyman@linux.intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/host/xhci-pci.c (diff)
Commit 46ce9ec42b78777900447bc4d79ab242b599a26c by gregkh
applicom: Fix potential Spectre v1 vulnerabilities
commit d7ac3c6ef5d8ce14b6381d52eb7adafdd6c8bb3c upstream.
IndexCard is indirectly controlled by user-space, hence leading to a
potential exploitation of the Spectre variant 1 vulnerability.
This issue was detected with the help of Smatch:
drivers/char/applicom.c:418 ac_write() warn: potential spectre issue
'apbs' [r] drivers/char/applicom.c:728 ac_ioctl() warn: potential
spectre issue 'apbs' [r] (local cap)
Fix this by sanitizing IndexCard before using it to index apbs.
Notice that given that speculation windows are large, the policy is to
kill the speculation on the first load and not worry if it can be
completed with a dependent load/store [1].
[1] https://lore.kernel.org/lkml/20180423164740.GY17484@dhcp22.suse.cz/
Cc: stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/char/applicom.c (diff)
Commit a8cc62bd8806809ddc5e172c04483f3553d6c2e8 by gregkh
alpha: wire up io_pgetevents system call
commit d012d1325ba523b8ef3e55ba79c943e220154fdc upstream.
The io_pgetevents system call was added in linux-4.18 but has no entry
for alpha:
warning: #warning syscall io_pgetevents not implemented [-Wcpp]
Assign a the next system call number here.
Cc: stable@vger.kernel.org Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/alpha/kernel/syscalls/syscall.tbl (diff)
Commit 2ac0fa7f3373295a8a9fe8f9dc940fa9ac1a82f8 by gregkh
MIPS: irq: Allocate accurate order pages for irq stack
commit 72faa7a773ca59336f3c889e878de81445c5a85c upstream.
The irq_pages is the number of pages for irq stack, but not the order
which is needed by __get_free_pages(). We can use get_order() to
calculate the accurate order.
Signed-off-by: Liu Xiang <liu.xiang6@zte.com.cn> Signed-off-by: Paul
Burton <paul.burton@mips.com> Fixes: fe8bd18ffea5 ("MIPS: Introduce
irq_stack") Cc: linux-mips@vger.kernel.org Cc: stable@vger.kernel.org #
v4.11+ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/mips/kernel/irq.c (diff)
Commit c9255e2479efb61dd68a5f6bed598631ece21295 by gregkh
aio: Fix locking in aio_poll()
commit d3d6a18d7d351cbcc9b33dbedf710e65f8ce1595 upstream.
wake_up_locked() may but does not have to be called with interrupts
disabled. Since the fuse filesystem calls wake_up_locked() without
disabling interrupts aio_poll_wake() may be called with interrupts
enabled. Since the kioctx.ctx_lock may be acquired from IRQ context, all
code that acquires that lock from thread context must disable
interrupts. Hence change the spin_trylock() call in aio_poll_wake() into
a spin_trylock_irqsave() call. This patch fixes the following lockdep
complaint:
===================================================== WARNING:
SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected
5.0.0-rc4-next-20190131 #23 Not tainted
-----------------------------------------------------
syz-executor2/13779 [HC0[0]:SC0[0]:HE0:SE1] is trying to acquire:
0000000098ac1230 (&fiq->waitq){+.+.}, at: spin_lock
include/linux/spinlock.h:329 [inline] 0000000098ac1230
(&fiq->waitq){+.+.}, at: aio_poll fs/aio.c:1772 [inline]
0000000098ac1230 (&fiq->waitq){+.+.}, at: __io_submit_one fs/aio.c:1875
[inline] 0000000098ac1230 (&fiq->waitq){+.+.}, at:
io_submit_one+0xedf/0x1cf0 fs/aio.c:1908
and this task is already holding: 000000003c46111c
(&(&ctx->ctx_lock)->rlock){..-.}, at: spin_lock_irq
include/linux/spinlock.h:354 [inline] 000000003c46111c
(&(&ctx->ctx_lock)->rlock){..-.}, at: aio_poll fs/aio.c:1771 [inline]
000000003c46111c (&(&ctx->ctx_lock)->rlock){..-.}, at: __io_submit_one
fs/aio.c:1875 [inline] 000000003c46111c
(&(&ctx->ctx_lock)->rlock){..-.}, at: io_submit_one+0xeb6/0x1cf0
fs/aio.c:1908 which would create a new lock dependency:
(&(&ctx->ctx_lock)->rlock){..-.} -> (&fiq->waitq){+.+.}
but this new dependency connects a SOFTIRQ-irq-safe lock:
(&(&ctx->ctx_lock)->rlock){..-.}
... which became SOFTIRQ-irq-safe at:
lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:3826
__raw_spin_lock_irq include/linux/spinlock_api_smp.h:128 [inline]
_raw_spin_lock_irq+0x60/0x80 kernel/locking/spinlock.c:160
spin_lock_irq include/linux/spinlock.h:354 [inline]
free_ioctx_users+0x2d/0x4a0 fs/aio.c:610
percpu_ref_put_many include/linux/percpu-refcount.h:285 [inline]
percpu_ref_put include/linux/percpu-refcount.h:301 [inline]
percpu_ref_call_confirm_rcu lib/percpu-refcount.c:123 [inline]
percpu_ref_switch_to_atomic_rcu+0x3e7/0x520 lib/percpu-refcount.c:158
__rcu_reclaim kernel/rcu/rcu.h:240 [inline]
rcu_do_batch kernel/rcu/tree.c:2486 [inline]
invoke_rcu_callbacks kernel/rcu/tree.c:2799 [inline]
rcu_core+0x928/0x1390 kernel/rcu/tree.c:2780
__do_softirq+0x266/0x95a kernel/softirq.c:292
run_ksoftirqd kernel/softirq.c:654 [inline]
run_ksoftirqd+0x8e/0x110 kernel/softirq.c:646
smpboot_thread_fn+0x6ab/0xa10 kernel/smpboot.c:164
kthread+0x357/0x430 kernel/kthread.c:247
ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
to a SOFTIRQ-irq-unsafe lock:
(&fiq->waitq){+.+.}
... which became SOFTIRQ-irq-unsafe at:
...
lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:3826
__raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
_raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:144
spin_lock include/linux/spinlock.h:329 [inline]
flush_bg_queue+0x1f3/0x3c0 fs/fuse/dev.c:415
fuse_request_queue_background+0x2d1/0x580 fs/fuse/dev.c:676
fuse_request_send_background+0x58/0x120 fs/fuse/dev.c:687
fuse_send_init fs/fuse/inode.c:989 [inline]
fuse_fill_super+0x13bb/0x1730 fs/fuse/inode.c:1214
mount_nodev+0x68/0x110 fs/super.c:1392
fuse_mount+0x2d/0x40 fs/fuse/inode.c:1239
legacy_get_tree+0xf2/0x200 fs/fs_context.c:590
vfs_get_tree+0x123/0x450 fs/super.c:1481
do_new_mount fs/namespace.c:2610 [inline]
do_mount+0x1436/0x2c40 fs/namespace.c:2932
ksys_mount+0xdb/0x150 fs/namespace.c:3148
__do_sys_mount fs/namespace.c:3162 [inline]
__se_sys_mount fs/namespace.c:3159 [inline]
__x64_sys_mount+0xbe/0x150 fs/namespace.c:3159
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
other info that might help us debug this:
Possible interrupt unsafe locking scenario:
       CPU0                    CPU1
      ----                    ----
lock(&fiq->waitq);
                              local_irq_disable();
                              lock(&(&ctx->ctx_lock)->rlock);
                              lock(&fiq->waitq);
<Interrupt>
   lock(&(&ctx->ctx_lock)->rlock);
*** DEADLOCK ***
1 lock held by syz-executor2/13779:
#0: 000000003c46111c (&(&ctx->ctx_lock)->rlock){..-.}, at: spin_lock_irq
include/linux/spinlock.h:354 [inline]
#0: 000000003c46111c (&(&ctx->ctx_lock)->rlock){..-.}, at: aio_poll
fs/aio.c:1771 [inline]
#0: 000000003c46111c (&(&ctx->ctx_lock)->rlock){..-.}, at:
__io_submit_one fs/aio.c:1875 [inline]
#0: 000000003c46111c (&(&ctx->ctx_lock)->rlock){..-.}, at:
io_submit_one+0xeb6/0x1cf0 fs/aio.c:1908
the dependencies between SOFTIRQ-irq-safe lock and the holding lock:
-> (&(&ctx->ctx_lock)->rlock){..-.} {
  IN-SOFTIRQ-W at:
                   lock_acquire+0x16f/0x3f0
kernel/locking/lockdep.c:3826
                   __raw_spin_lock_irq
include/linux/spinlock_api_smp.h:128 [inline]
                   _raw_spin_lock_irq+0x60/0x80
kernel/locking/spinlock.c:160
                   spin_lock_irq include/linux/spinlock.h:354 [inline]
                   free_ioctx_users+0x2d/0x4a0 fs/aio.c:610
                   percpu_ref_put_many
include/linux/percpu-refcount.h:285 [inline]
                   percpu_ref_put include/linux/percpu-refcount.h:301
[inline]
                   percpu_ref_call_confirm_rcu lib/percpu-refcount.c:123
[inline]
                   percpu_ref_switch_to_atomic_rcu+0x3e7/0x520
lib/percpu-refcount.c:158
                   __rcu_reclaim kernel/rcu/rcu.h:240 [inline]
                   rcu_do_batch kernel/rcu/tree.c:2486 [inline]
                   invoke_rcu_callbacks kernel/rcu/tree.c:2799 [inline]
                   rcu_core+0x928/0x1390 kernel/rcu/tree.c:2780
                   __do_softirq+0x266/0x95a kernel/softirq.c:292
                   run_ksoftirqd kernel/softirq.c:654 [inline]
                   run_ksoftirqd+0x8e/0x110 kernel/softirq.c:646
                   smpboot_thread_fn+0x6ab/0xa10 kernel/smpboot.c:164
                   kthread+0x357/0x430 kernel/kthread.c:247
                   ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352
  INITIAL USE at:
                  lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:3826
                  __raw_spin_lock_irq
include/linux/spinlock_api_smp.h:128 [inline]
                  _raw_spin_lock_irq+0x60/0x80
kernel/locking/spinlock.c:160
                  spin_lock_irq include/linux/spinlock.h:354 [inline]
                  __do_sys_io_cancel fs/aio.c:2052 [inline]
                  __se_sys_io_cancel fs/aio.c:2035 [inline]
                  __x64_sys_io_cancel+0xd5/0x5a0 fs/aio.c:2035
                  do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
                  entry_SYSCALL_64_after_hwframe+0x49/0xbe
}
... key      at: [<ffffffff8a574140>] __key.52370+0x0/0x40
... acquired at:
  lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:3826
  __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
  _raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:144
  spin_lock include/linux/spinlock.h:329 [inline]
  aio_poll fs/aio.c:1772 [inline]
  __io_submit_one fs/aio.c:1875 [inline]
  io_submit_one+0xedf/0x1cf0 fs/aio.c:1908
  __do_sys_io_submit fs/aio.c:1953 [inline]
  __se_sys_io_submit fs/aio.c:1923 [inline]
  __x64_sys_io_submit+0x1bd/0x580 fs/aio.c:1923
  do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
  entry_SYSCALL_64_after_hwframe+0x49/0xbe
the dependencies between the lock to be acquired
and SOFTIRQ-irq-unsafe lock:
-> (&fiq->waitq){+.+.} {
  HARDIRQ-ON-W at:
                   lock_acquire+0x16f/0x3f0
kernel/locking/lockdep.c:3826
                   __raw_spin_lock include/linux/spinlock_api_smp.h:142
[inline]
                   _raw_spin_lock+0x2f/0x40
kernel/locking/spinlock.c:144
                   spin_lock include/linux/spinlock.h:329 [inline]
                   flush_bg_queue+0x1f3/0x3c0 fs/fuse/dev.c:415
                   fuse_request_queue_background+0x2d1/0x580
fs/fuse/dev.c:676
                   fuse_request_send_background+0x58/0x120
fs/fuse/dev.c:687
                   fuse_send_init fs/fuse/inode.c:989 [inline]
                   fuse_fill_super+0x13bb/0x1730 fs/fuse/inode.c:1214
                   mount_nodev+0x68/0x110 fs/super.c:1392
                   fuse_mount+0x2d/0x40 fs/fuse/inode.c:1239
                   legacy_get_tree+0xf2/0x200 fs/fs_context.c:590
                   vfs_get_tree+0x123/0x450 fs/super.c:1481
                   do_new_mount fs/namespace.c:2610 [inline]
                   do_mount+0x1436/0x2c40 fs/namespace.c:2932
                   ksys_mount+0xdb/0x150 fs/namespace.c:3148
                   __do_sys_mount fs/namespace.c:3162 [inline]
                   __se_sys_mount fs/namespace.c:3159 [inline]
                   __x64_sys_mount+0xbe/0x150 fs/namespace.c:3159
                   do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
                   entry_SYSCALL_64_after_hwframe+0x49/0xbe
  SOFTIRQ-ON-W at:
                   lock_acquire+0x16f/0x3f0
kernel/locking/lockdep.c:3826
                   __raw_spin_lock include/linux/spinlock_api_smp.h:142
[inline]
                   _raw_spin_lock+0x2f/0x40
kernel/locking/spinlock.c:144
                   spin_lock include/linux/spinlock.h:329 [inline]
                   flush_bg_queue+0x1f3/0x3c0 fs/fuse/dev.c:415
                   fuse_request_queue_background+0x2d1/0x580
fs/fuse/dev.c:676
                   fuse_request_send_background+0x58/0x120
fs/fuse/dev.c:687
                   fuse_send_init fs/fuse/inode.c:989 [inline]
                   fuse_fill_super+0x13bb/0x1730 fs/fuse/inode.c:1214
                   mount_nodev+0x68/0x110 fs/super.c:1392
                   fuse_mount+0x2d/0x40 fs/fuse/inode.c:1239
                   legacy_get_tree+0xf2/0x200 fs/fs_context.c:590
                   vfs_get_tree+0x123/0x450 fs/super.c:1481
                   do_new_mount fs/namespace.c:2610 [inline]
                   do_mount+0x1436/0x2c40 fs/namespace.c:2932
                   ksys_mount+0xdb/0x150 fs/namespace.c:3148
                   __do_sys_mount fs/namespace.c:3162 [inline]
                   __se_sys_mount fs/namespace.c:3159 [inline]
                   __x64_sys_mount+0xbe/0x150 fs/namespace.c:3159
                   do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
                   entry_SYSCALL_64_after_hwframe+0x49/0xbe
  INITIAL USE at:
                  lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:3826
                  __raw_spin_lock include/linux/spinlock_api_smp.h:142
[inline]
                  _raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:144
                  spin_lock include/linux/spinlock.h:329 [inline]
                  flush_bg_queue+0x1f3/0x3c0 fs/fuse/dev.c:415
                  fuse_request_queue_background+0x2d1/0x580
fs/fuse/dev.c:676
                  fuse_request_send_background+0x58/0x120
fs/fuse/dev.c:687
                  fuse_send_init fs/fuse/inode.c:989 [inline]
                  fuse_fill_super+0x13bb/0x1730 fs/fuse/inode.c:1214
                  mount_nodev+0x68/0x110 fs/super.c:1392
                  fuse_mount+0x2d/0x40 fs/fuse/inode.c:1239
                  legacy_get_tree+0xf2/0x200 fs/fs_context.c:590
                  vfs_get_tree+0x123/0x450 fs/super.c:1481
                  do_new_mount fs/namespace.c:2610 [inline]
                  do_mount+0x1436/0x2c40 fs/namespace.c:2932
                  ksys_mount+0xdb/0x150 fs/namespace.c:3148
                  __do_sys_mount fs/namespace.c:3162 [inline]
                  __se_sys_mount fs/namespace.c:3159 [inline]
                  __x64_sys_mount+0xbe/0x150 fs/namespace.c:3159
                  do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
                  entry_SYSCALL_64_after_hwframe+0x49/0xbe
}
... key      at: [<ffffffff8a60dec0>] __key.43450+0x0/0x40
... acquired at:
  lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:3826
  __raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
  _raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:144
  spin_lock include/linux/spinlock.h:329 [inline]
  aio_poll fs/aio.c:1772 [inline]
  __io_submit_one fs/aio.c:1875 [inline]
  io_submit_one+0xedf/0x1cf0 fs/aio.c:1908
  __do_sys_io_submit fs/aio.c:1953 [inline]
  __se_sys_io_submit fs/aio.c:1923 [inline]
  __x64_sys_io_submit+0x1bd/0x580 fs/aio.c:1923
  do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
  entry_SYSCALL_64_after_hwframe+0x49/0xbe
stack backtrace: CPU: 0 PID: 13779 Comm: syz-executor2 Not tainted
5.0.0-rc4-next-20190131 #23 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_bad_irq_dependency kernel/locking/lockdep.c:1573 [inline]
check_usage.cold+0x60f/0x940 kernel/locking/lockdep.c:1605
check_irq_usage kernel/locking/lockdep.c:1650 [inline]
check_prev_add_irq kernel/locking/lockdep_states.h:8 [inline]
check_prev_add kernel/locking/lockdep.c:1860 [inline]
check_prevs_add kernel/locking/lockdep.c:1968 [inline]
validate_chain kernel/locking/lockdep.c:2339 [inline]
__lock_acquire+0x1f12/0x4790 kernel/locking/lockdep.c:3320
lock_acquire+0x16f/0x3f0 kernel/locking/lockdep.c:3826
__raw_spin_lock include/linux/spinlock_api_smp.h:142 [inline]
_raw_spin_lock+0x2f/0x40 kernel/locking/spinlock.c:144
spin_lock include/linux/spinlock.h:329 [inline]
aio_poll fs/aio.c:1772 [inline]
__io_submit_one fs/aio.c:1875 [inline]
io_submit_one+0xedf/0x1cf0 fs/aio.c:1908
__do_sys_io_submit fs/aio.c:1953 [inline]
__se_sys_io_submit fs/aio.c:1923 [inline]
__x64_sys_io_submit+0x1bd/0x580 fs/aio.c:1923
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Reported-by: syzbot <syzkaller@googlegroups.com> Cc: Christoph Hellwig
<hch@lst.de> Cc: Avi Kivity <avi@scylladb.com> Cc: Miklos Szeredi
<miklos@szeredi.hu> Cc: <stable@vger.kernel.org> Fixes: e8693bcfa0b4
("aio: allow direct aio poll comletions for keyed wakeups") # v4.19
Signed-off-by: Miklos Szeredi <miklos@szeredi.hu>
[ bvanassche: added a comment ] Reluctantly-Acked-by: Christoph Hellwig
<hch@lst.de> Signed-off-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/aio.c (diff)
Commit ff204bb4c71b067b91225104b241cd670e7b6fdd by gregkh
xtensa: fix get_wchan
commit d90b88fd3653f1fb66ecc6571b860d5a5749fa56 upstream.
Stack unwinding is implemented incorrectly in xtensa get_wchan: instead
of extracting a0 and a1 registers from the spill location under the
stack pointer it extracts a word pointed to by the stack pointer and
subtracts 4 or 3 from it.
Cc: stable@vger.kernel.org Signed-off-by: Max Filippov
<jcmvbkbc@gmail.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/xtensa/kernel/process.c (diff)
Commit 02c66213c80ab85a78b494711d530ac20760efb2 by gregkh
gnss: sirf: fix premature wakeup interrupt enable
commit 82f844c22588bf47132c82faeda50b6db473162c upstream.
Make sure the receiver is powered (and booted) before enabling the
wakeup interrupt to avoid spurious interrupts due to a floating input.
Similarly, disable the interrupt before powering off on probe errors and
on unbind.
Fixes: d2efbbd18b1e ("gnss: add driver for sirfstar-based receivers")
Cc: stable <stable@vger.kernel.org> # 4.19 Signed-off-by: Johan Hovold
<johan@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gnss/sirf.c (diff)
Commit 44c81a48231012e510267b9fe26403325465a19a by gregkh
USB: serial: cp210x: fix GPIO in autosuspend
commit 7b0b644b9aa2de5032db0f468fddca091d0b7b90 upstream.
Current GPIO code in cp210x fails to take USB autosuspend into account,
making it practically impossible to use GPIOs with autosuspend enabled
without user configuration. Fix this like for ftdi_sio in a previous
patch. Tested on a CP2102N.
Signed-off-by: Karoly Pados <pados@pados.hu> Fixes: cf5276ce7867 ("USB:
serial: cp210x: Adding GPIO support for CP2105") Cc: stable
<stable@vger.kernel.org> Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/serial/cp210x.c (diff)
Commit 66da661f94ebb943b54bb07e788a7371116d0a86 by gregkh
Revert "selftests: firmware: add CONFIG_FW_LOADER_USER_HELPER_FALLBACK
to config"
commit d2b284d356e9758d2bafd505d482e3c9433ef424 upstream.
This reverts commit 7492902e8d22b568463897fa967c0886764cf034.
The commit tried to address an issue discovered by Dan where he got a
message saying:
'usermode helper disabled so ignoring test'.
Dans's commit is forcing CONFIG_FW_LOADER_USER_HELPER_FALLBACK but just
having CONFIG_FW_LOADER_USER_HELPER suffices to emulate the_FALLBACK
functionality.
Dan's commit is trying to fix an issue which is hidden from a previous
commit. That issue will be addressed properly next.
Fixes: 7492902e8d22 ("selftests: firmware: add
CONFIG_FW_LOADER_USER_HELPER_FALLBACK to config") Cc: stable
<stable@vger.kernel.org> Signed-off-by: Luis Chamberlain
<mcgrof@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedtools/testing/selftests/firmware/config (diff)
Commit 5e73c19ca66e14f2eb62fff77ba31202e729ffea by gregkh
Revert "selftests: firmware: remove use of non-standard diff -Z option"
commit 13ac7db09c914e4991a08b7ad578267d5cdd9856 upstream.
This reverts commit f70b472e937bb659a7b7a14e64f07308e230888c.
This breaks testing on Debian, and this patch was NACKed anyway. The
proper way to address this is a quirk for busybox as that is where the
issue is present.
Signed-off-by: Luis Chamberlain <mcgrof@kernel.org> Fixes: f70b472e937b
("selftests: firmware: remove use of non-standard diff -Z option") Cc:
stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedtools/testing/selftests/firmware/fw_filesystem.sh (diff)
Commit 302f4908d4f99ff84b714f2c9a990df8a667e91a by gregkh
selftests: firmware: fix verify_reqs() return value
commit 344c0152d878922365464b7140c74c2a5e073d99 upstream.
commit a6a9be9270c87 ("selftests: firmware: return Kselftest Skip code
for skipped tests") by Shuah modified failures to return the special
error code of $ksft_skip (4). We have a corner case issue where we
*do* want to verify_reqs().
Cc: <stable@vger.kernel.org> # >= 4.18 Fixes: a6a9be9270c87 ("selftests:
firmware: return Kselftest Skip code for for skipped tests")
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/testing/selftests/firmware/fw_lib.sh (diff)
Commit 95b6840860ee06e1826ace0c30561d8b7703a838 by gregkh
Bluetooth: btrtl: Restore old logic to assume firmware is already loaded
commit 00df214b1faae520880cc5c57e206f21239ef741 upstream.
Realtek bluetooth may not work after reboot:
[   12.446130] Bluetooth: hci0: RTL: rtl: unknown IC info, lmp subver
a99e, hci rev 826c, hci ver 0008
This is a regression introduced by commit 26503ad25de8 ("Bluetooth:
btrtl: split the device initialization into smaller parts"). The new
logic errors out early when no matching IC info can be found, in this
case it means the firmware is already loaded.
So let's assume the firmware is already loaded when we can't find
matching IC info, like the old logic did.
Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=201921 Fixes:
26503ad25de8 ("Bluetooth: btrtl: split the device initialization into
smaller parts") Cc: stable@vger.kernel.org # 4.19+ Signed-off-by:
Kai-Heng Feng <kai.heng.feng@canonical.com> Signed-off-by: Marcel
Holtmann <marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/bluetooth/btrtl.c (diff)
Commit bc60931448e779c1f5650f7e0a27d2569df57841 by gregkh
Bluetooth: Fix locking in bt_accept_enqueue() for BH context
commit c4f5627f7eeecde1bb6b646d8c0907b96dc2b2a6 upstream.
With commit e16337622016 ("Bluetooth: Handle bt_accept_enqueue() socket
atomically") lock_sock[_nested]() is used to acquire the socket lock
before manipulating the socket. lock_sock[_nested]() may block, which is
problematic since bt_accept_enqueue() can be called in bottom half
context (e.g. from rfcomm_connect_ind()):
[<ffffff80080d81ec>] __might_sleep+0x4c/0x80
[<ffffff800876c7b0>] lock_sock_nested+0x24/0x58
[<ffffff8000d7c27c>] bt_accept_enqueue+0x48/0xd4 [bluetooth]
[<ffffff8000e67d8c>] rfcomm_connect_ind+0x190/0x218 [rfcomm]
Add a parameter to bt_accept_enqueue() to indicate whether the function
is called from BH context, and acquire the socket lock with
bh_lock_sock_nested() if that's the case.
Also adapt all callers of bt_accept_enqueue() to pass the new parameter:
- l2cap_sock_new_connection_cb()
- uses lock_sock() to lock the parent socket => process context
- rfcomm_connect_ind()
- acquires the parent socket lock with bh_lock_sock() => BH
   context
- __sco_chan_add()
- called from sco_chan_add(), which is called from sco_connect().
   parent is NULL, hence bt_accept_enqueue() isn't called in this
   code path and we can ignore it
- also called from sco_conn_ready(). uses bh_lock_sock() to acquire
   the parent lock => BH context
Fixes: e16337622016 ("Bluetooth: Handle bt_accept_enqueue() socket
atomically") Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Reviewed-by: Douglas Anderson <dianders@chromium.org> Signed-off-by:
Marcel Holtmann <marcel@holtmann.org> Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/bluetooth/af_bluetooth.c (diff)
The file was modifiedinclude/net/bluetooth/bluetooth.h (diff)
The file was modifiednet/bluetooth/l2cap_sock.c (diff)
The file was modifiednet/bluetooth/rfcomm/sock.c (diff)
The file was modifiednet/bluetooth/sco.c (diff)
Commit a9bda122bd77a784933edde4120e12a28847aafd by gregkh
exec: Fix mem leak in kernel_read_file
commit f612acfae86af7ecad754ae6a46019be9da05b8e upstream.
syzkaller report this: BUG: memory leak unreferenced object
0xffffc9000488d000 (size 9195520):
comm "syz-executor.0", pid 2752, jiffies 4294787496 (age 18.757s)
hex dump (first 32 bytes):
   ff ff ff ff ff ff ff ff a8 00 00 00 01 00 00 00  ................
   02 00 00 00 00 00 00 00 80 a1 7a c1 ff ff ff ff  ..........z.....
backtrace:
   [<000000000863775c>] __vmalloc_node mm/vmalloc.c:1795 [inline]
   [<000000000863775c>] __vmalloc_node_flags mm/vmalloc.c:1809 [inline]
   [<000000000863775c>] vmalloc+0x8c/0xb0 mm/vmalloc.c:1831
   [<000000003f668111>] kernel_read_file+0x58f/0x7d0 fs/exec.c:924
   [<000000002385813f>] kernel_read_file_from_fd+0x49/0x80 fs/exec.c:993
   [<0000000011953ff1>] __do_sys_finit_module+0x13b/0x2a0
kernel/module.c:3895
   [<000000006f58491f>] do_syscall_64+0x147/0x600
arch/x86/entry/common.c:290
   [<00000000ee78baf4>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
   [<00000000241f889b>] 0xffffffffffffffff
It should goto 'out_free' lable to free allocated buf while kernel_read
fails.
Fixes: 39d637af5aa7 ("vfs: forbid write access when reading a file into
memory") Signed-off-by: YueHaibing <yuehaibing@huawei.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Cc: Thibaut Sautereau
<thibaut@sautereau.fr> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/exec.c (diff)
The file was modifiedMakefile (diff)
Commit e83b05c4c17e36fb5af028a4f84b5888c80584bc by gregkh
media: uvcvideo: Fix 'type' check leading to overflow
commit 47bb117911b051bbc90764a8bff96543cbd2005f upstream.
When initially testing the Camera Terminal Descriptor wTerminalType
field (buffer[4]), no mask is used. Later in the function, the MSB is
overloaded to store the descriptor subtype, and so a mask of 0x7fff is
used to check the type.
If a descriptor is specially crafted to set this overloaded bit in the
original wTerminalType field, the initial type check will fail (falling
through, without adjusting the buffer size), but the later type checks
will pass, assuming the buffer has been made suitably large, causing an
overflow.
Avoid this problem by checking for the MSB in the wTerminalType field.
If the bit is set, assume the descriptor is bad, and abort parsing it.
Originally reported here:
https://groups.google.com/forum/#!topic/syzkaller/Ot1fOE6v1d8 A similar
(non-compiling) patch was provided at that time.
Reported-by: syzbot <syzkaller@googlegroups.com> Signed-off-by: Alistair
Strachan <astrachan@google.com> Signed-off-by: Laurent Pinchart
<laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/media/usb/uvc/uvc_driver.c (diff)
Commit 4a33538bd42566a7f86008f055245d3a999d7924 by gregkh
Input: wacom_serial4 - add support for Wacom ArtPad II tablet
commit 44fc95e218a09d7966a9d448941fdb003f6bb69f upstream.
Tablet initially begins communicating at 9600 baud, so this command
should be used to connect to the device:
    $ inputattach --daemon --baud 9600 --wacom_iv /dev/ttyS0
https://github.com/linuxwacom/xf86-input-wacom/issues/40
Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com> Cc:
stable@vger.kernel.org Signed-off-by: Dmitry Torokhov
<dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/input/tablet/wacom_serial4.c (diff)
Commit 61f7963e347db8699dc8aee94bd165d30e5f780c by gregkh
Input: elan_i2c - add id for touchpad found in Lenovo s21e-20
commit e154ab69321ce2c54f19863d75c77b4e2dc9d365 upstream.
Lenovo s21e-20 uses ELAN0601 in its ACPI tables for the Elan touchpad.
Signed-off-by: Vincent Batts <vbatts@hashbangbash.com> Cc:
stable@vger.kernel.org Signed-off-by: Dmitry Torokhov
<dmitry.torokhov@gmail.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/input/mouse/elan_i2c_core.c (diff)
Commit d4f05a4aaf98d14c15ffa867459cdc78e899d590 by gregkh
iscsi_ibft: Fix missing break in switch statement
commit df997abeebadaa4824271009e2d2b526a70a11cb upstream.
Add missing break statement in order to prevent the code from falling
through to case ISCSI_BOOT_TGT_NAME, which is unnecessary.
This bug was found thanks to the ongoing efforts to enable
-Wimplicit-fallthrough.
Fixes: b33a84a38477 ("ibft: convert iscsi_ibft module to iscsi boot
lib") Cc: stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/firmware/iscsi_ibft.c (diff)
Commit 1830d0d33dcd21c55288a94cffe85d2434fba1ee by gregkh
scsi: aacraid: Fix missing break in switch statement
commit 5e420fe635813e5746b296cfc8fff4853ae205a2 upstream.
Add missing break statement and fix identation issue.
This bug was found thanks to the ongoing efforts to enable
-Wimplicit-fallthrough.
Fixes: 9cb62fa24e0d ("aacraid: Log firmware AIF messages") Cc:
stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/aacraid/commsup.c (diff)
Commit 39ab777e42eca09cceb71ba354a3e7eaa82fb1df by gregkh
x86/PCI: Fixup RTIT_BAR of Intel Denverton Trace Hub
commit 2e095ce7b6ecce2f3e2ff330527f12056ed1e1a1 upstream.
On Denverton's integration of the Intel(R) Trace Hub (for a reference
and overview see Documentation/trace/intel_th.rst) the reported size of
one of its resources (RTIT_BAR) doesn't match its actual size, which
leads to overlaps with other devices' resources.
In practice, it overlaps with XHCI MMIO space, which results in the xhci
driver bailing out after seeing its registers as 0xffffffff, and
perceived disappearance of all USB devices:
  intel_th_pci 0000:00:1f.7: enabling device (0004 -> 0006)
xhci_hcd 0000:00:15.0: xHCI host controller not responding, assume dead
xhci_hcd 0000:00:15.0: xHC not responding in xhci_irq, assume
controller is dead
xhci_hcd 0000:00:15.0: HC died; cleaning up
usb 1-1: USB disconnect, device number 2
For this reason, we need to resize the RTIT_BAR on Denverton to its
actual size, which in this case is 4MB.  The corresponding erratum is
DNV36 at the link below:
  DNV36.       Processor Host Root Complex May Incorrectly Route Memory
              Accesses to Intel® Trace Hub
  Problem:     The Intel® Trace Hub RTIT_BAR (B0:D31:F7 offset 20h) is
       reported as a 2KB memory range.  Due to this erratum, the
       processor Host Root Complex will forward addresses from
       RTIT_BAR to RTIT_BAR + 4MB -1 to Intel® Trace Hub.
  Implication: Devices assigned within the RTIT_BAR to RTIT_BAR + 4MB -1
              space may not function correctly.
  Workaround:  A BIOS code change has been identified and may be
              implemented as a workaround for this erratum.
  Status:      No Fix.
Note that 5118ccd34780 ("intel_th: pci: Add Denverton SOC support")
updates the Trace Hub driver so it claims the Denverton device, but the
resource overlap exists regardless of whether that driver is loaded or
that commit is included.
Link:
https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/atom-c3000-family-spec-update.pdf
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
[bhelgaas: include erratum text, clarify relationship with 5118ccd34780]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Cc:
stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/pci/fixup.c (diff)
Commit bab3cf9d1531b6d4f67b2479cd5f51c55f418014 by gregkh
arm64: dts: zcu100-revC: Give wifi some time after power-on
commit 35a4f89cd4731ac6ec985cd29ddc1630903006b7 upstream.
Somewhere along recent changes to power control of the wl1831, power-on
became very unreliable on the Ultra96, failing like this:
wl1271_sdio: probe of mmc2:0001:1 failed with error -16 wl1271_sdio:
probe of mmc2:0001:2 failed with error -16
After playing with some dt parameters and comparing to other users of
this chip, it turned out we need some power-on delay to make things
stable again. In contrast to those other users which define 200 ms,
Ultra96 is already happy with 10 ms.
Fixes: 5869ba0653b9 ("arm64: zynqmp: Add support for Xilinx
zcu100-revC") Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Acked-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Michal
Simek <michal.simek@xilinx.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/boot/dts/xilinx/zynqmp-zcu100-revC.dts (diff)
Commit 34294e18762244fa1011dc0da6e3f54f388a1838 by gregkh
arm64: dts: hikey: Give wifi some time after power-on
commit 83b944174ad79825ae84a47af1a0354485b24602 upstream.
Somewhere along recent changes to power control of the wl1835, power-on
became very unreliable on the hikey, failing like this:
wl1271_sdio: probe of mmc2:0001:1 failed with error -16 wl1271_sdio:
probe of mmc2:0001:2 failed with error -16
After playing with some dt parameters and comparing to other users of
this chip, it turned out we need some power-on delay to make things
stable again. In contrast to those other users which define 200 ms, the
hikey would already be happy with 1 ms. Still, we use the safer 10 ms,
like on the Ultra96.
Fixes: ea452678734e ("arm64: dts: hikey: Fix WiFi support") Cc:
<stable@vger.kernel.org> #4.12+ Signed-off-by: Jan Kiszka
<jan.kiszka@siemens.com> Acked-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Wei Xu <xuwei5@hisilicon.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/boot/dts/hisilicon/hi6220-hikey.dts (diff)
Commit d2370201967ad9e9ead6565506cc95b215ba8971 by gregkh
arm64: dts: hikey: Revert "Enable HS200 mode on eMMC"
commit 8d26c1390aec795d492b8de5e4437751e8805a1d upstream.
This reverts commit abd7d0972a192ee653efc7b151a6af69db58f2bb. This
change was already partially reverted by John Stultz in commit
9c6d26df1fae ("arm64: dts: hikey: Fix eMMC corruption regression").
This change appears to cause controller resets and block read failures
which prevents successful booting on some hikey boards.
Cc: Ryan Grachek <ryan@edited.us> Cc: Wei Xu <xuwei5@hisilicon.com> Cc:
Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> Cc: Rob Herring
<robh+dt@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc:
linux-arm-kernel@lists.infradead.org Cc: devicetree@vger.kernel.org Cc:
stable <stable@vger.kernel.org> #4.17+ Signed-off-by: Alistair Strachan
<astrachan@google.com> Signed-off-by: John Stultz
<john.stultz@linaro.org> Signed-off-by: Wei Xu <xuwei5@hisilicon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/boot/dts/hisilicon/hi6220-hikey.dts (diff)
Commit 6eb775cb560db998135c50c927c44809f5a7c332 by gregkh
ARM: dts: exynos: Fix pinctrl definition for eMMC RTSN line on Odroid
X2/U3
commit ec33745bccc8f336957c751f4153421cc9ef5a54 upstream.
Commit 225da7e65a03 ("ARM: dts: add eMMC reset line for
exynos4412-odroid-common") added MMC power sequence for eMMC card of
Odroid X2/U3. It reused generic sd1_cd pin control configuration node
and only disabled pull-up. However that time the pinctrl configuration
was not applied during MMC power sequence driver initialization. This
has been changed later by commit d97a1e5d7cd2 ("mmc: pwrseq: convert to
proper platform device").
It turned out then, that the provided pinctrl configuration is not
correct, because the eMMC_RTSN line is being re-configured as 'special
function/card detect function for mmc1 controller' not the simple
'output', thus the power sequence driver doesn't really set the pin
value. This in effect broke the reboot of Odroid X2/U3 boards. Fix this
by providing separate node with eMMC_RTSN pin configuration.
Cc: <stable@vger.kernel.org> Reported-by: Markus Reichl
<m.reichl@fivetechno.de> Suggested-by: Ulf Hansson
<ulf.hansson@linaro.org> Fixes: 225da7e65a03 ("ARM: dts: add eMMC reset
line for exynos4412-odroid-common") Signed-off-by: Marek Szyprowski
<m.szyprowski@samsung.com> Signed-off-by: Krzysztof Kozlowski
<krzk@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm/boot/dts/exynos4412-odroid-common.dtsi (diff)
Commit cc637b0563f7f44367566a1c3fe9bff6dd704e2e by gregkh
ARM: dts: exynos: Add minimal clkout parameters to Exynos3250 PMU
commit a66352e005488ecb4b534ba1af58a9f671eba9b8 upstream.
Add minimal parameters needed by the Exynos CLKOUT driver to Exynos3250
PMU node. This fixes the following warning on boot:
exynos_clkout_init: failed to register clkout clock
Fixes: d19bb397e19e ("ARM: dts: exynos: Update PMU node with CLKOUT
related data") Cc: <stable@vger.kernel.org> Signed-off-by: Marek
Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Krzysztof Kozlowski
<krzk@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm/boot/dts/exynos3250.dtsi (diff)
Commit b7ea06838d14a9ed095be54053376f10a7a6fc6e by gregkh
ARM: dts: exynos: Fix max voltage for buck8 regulator on Odroid XU3/XU4
commit a3238924a820c1d7c977b632b769f3b5690cba09 upstream.
The maximum voltage value for buck8 regulator on Odroid XU3/XU4 boards
is set too low. Increase it to the 2000mV as specified on the board
schematic. So far the board worked fine, because of the bug in the PMIC
driver, which used incorrect step value for that regulator. It
interpreted the voltage value set by the bootloader as 1225mV and kept
it unchanged. The regulator driver has been however fixed recently in
the commit 56b5d4ea778c
("regulator: s2mps11: Fix steps for buck7, buck8 and LDO35"), what
results in reading the proper buck8 value and forcing it to 1500mV on
boot. This is not enough for proper board operation and results in eMMC
errors during heavy IO traffic. Increasing maximum voltage value for
buck8 restores original driver behavior and fixes eMMC issues.
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com> Fixes:
86a2d2ac5e5d ("ARM: dts: Add dts file for Odroid XU3 board") Fixes:
56b5d4ea778c ("regulator: s2mps11: Fix steps for buck7, buck8 and
LDO35") Cc: <stable@vger.kernel.org> Signed-off-by: Krzysztof Kozlowski
<krzk@kernel.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm/boot/dts/exynos5422-odroid-core.dtsi (diff)
Commit e3f5c3cbe16356cd98518765d891aec90dc34e3d by gregkh
drm: disable uncached DMA optimization for ARM and arm64
[ Upstream commit e02f5c1bb2283cfcee68f2f0feddcc06150f13aa ]
The DRM driver stack is designed to work with cache coherent devices
only, but permits an optimization to be enabled in some cases, where for
some buffers, both the CPU and the GPU use uncached mappings, removing
the need for DMA snooping and allocation in the CPU caches.
The use of uncached GPU mappings relies on the correct implementation of
the PCIe NoSnoop TLP attribute by the platform, otherwise the GPU will
use cached mappings nonetheless. On x86 platforms, this does not seem to
matter, as uncached CPU mappings will snoop the caches in any case.
However, on ARM and arm64, enabling this optimization on a platform
where NoSnoop is ignored results in loss of coherency, which breaks
correct operation of the device. Since we have no way of detecting
whether NoSnoop works or not, just disable this optimization entirely
for ARM and arm64.
Cc: Christian Koenig <christian.koenig@amd.com> Cc: Alex Deucher
<alexander.deucher@amd.com> Cc: David Zhou <David1.Zhou@amd.com> Cc:
Huang Rui <ray.huang@amd.com> Cc: Junwei Zhang <Jerry.Zhang@amd.com> Cc:
Michel Daenzer <michel.daenzer@amd.com> Cc: David Airlie
<airlied@linux.ie> Cc: Daniel Vetter <daniel@ffwll.ch> Cc: Maarten
Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Maxime Ripard
<maxime.ripard@bootlin.com> Cc: Sean Paul <sean@poorly.run> Cc: Michael
Ellerman <mpe@ellerman.id.au> Cc: Benjamin Herrenschmidt
<benh@kernel.crashing.org> Cc: Will Deacon <will.deacon@arm.com> Cc:
Christoph Hellwig <hch@infradead.org> Cc: Robin Murphy
<robin.murphy@arm.com> Cc: amd-gfx list <amd-gfx@lists.freedesktop.org>
Cc: dri-devel <dri-devel@lists.freedesktop.org> Reported-by: Carsten
Haitzler <Carsten.Haitzler@arm.com> Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Reviewed-by: Christian König
<christian.koenig@amd.com> Reviewed-by: Alex Deucher
<alexander.deucher@amd.com> Link:
https://patchwork.kernel.org/patch/10778815/ Signed-off-by: Christian
König <christian.koenig@amd.com> Signed-off-by: Sasha Levin
<sashal@kernel.org>
The file was modifiedinclude/drm/drm_cache.h (diff)
Commit fd0b578b41c66874d03c96d55adfed6ebc9cb333 by gregkh
media: Revert "media: rc: some events are dropped by userspace"
commit 05f0edadcc5fccdfc0676825b3e70e75dc0a8a84 upstream.
When an rc device is created, we do not know what key codes it will
support, since a new keymap might be loaded at some later point. So, we
set all keybit in the input device.
The uevent for the input device includes all the key codes, of which
there are now 768. This overflows the size of the uevent
(UEVENT_BUFFER_SIZE) and no event is generated.
Revert for now until we figure out a different solution.
This reverts commit fec225a04330d0f222d24feb5bea045526031675.
Cc: <stable@vger.kernel.org> # 4.20+ Reported-by: Christian Holpert
<christian@holpert.de> Signed-off-by: Sean Young <sean@mess.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/media/rc/rc-main.c (diff)
Commit 5b31a61305cd2ff9049f051a993796527b0ef7b5 by gregkh
Revert "PCI/PME: Implement runtime PM callbacks"
commit c528f7bd362b097eeeafa6fbbeccd9750b79c7ba upstream.
This reverts commit 0e157e52860441cb26051f131dd0b5ae3187a07b.
Heiner reported that the commit in question prevents his network adapter
from triggering PME and waking up when network cable is plugged.
The commit tried to prevent root port waking up from D3cold immediately
but looks like disabing root port PME interrupt is not the right way to
fix that issue so revert it now.  The patch following proposes an
alternative solution to that issue.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=202103 Fixes:
0e157e528604 ("PCI/PME: Implement runtime PM callbacks") Reported-by:
Heiner Kallweit <hkallweit1@gmail.com> Tested-by: Heiner Kallweit
<hkallweit1@gmail.com> Signed-off-by: Mika Westerberg
<mika.westerberg@linux.intel.com> Signed-off-by: Bjorn Helgaas
<bhelgaas@google.com> Acked-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> CC: stable@vger.kernel.org # v4.20+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/pcie/pme.c (diff)
Commit 97e5d51f123aa1c954792867d0f44d58f9fdf827 by gregkh
bpf: Stop the psock parser before canceling its work
commit e8e3437762ad938880dd48a3c52d702e7cf3c124 upstream.
We might have never enabled (started) the psock's parser, in which case
it will not get stopped when destroying the psock. This leads to a
warning when trying to cancel parser's work from psock's deferred
destructor:
[  405.325769] WARNING: CPU: 1 PID: 3216 at
net/strparser/strparser.c:526 strp_done+0x3c/0x40
[  405.326712] Modules linked in: [last unloaded: test_bpf]
[  405.327359] CPU: 1 PID: 3216 Comm: kworker/1:164 Tainted: G        W
       5.0.0 #42
[  405.328294] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS ?-20180531_142017-buildhw-08.phx2.fedoraproject.org-1.fc28
04/01/2014
[  405.329712] Workqueue: events sk_psock_destroy_deferred
[  405.330254] RIP: 0010:strp_done+0x3c/0x40
[  405.330706] Code: 28 e8 b8 d5 6b ff 48 8d bb 80 00 00 00 e8 9c d5 6b
ff 48 8b 7b 18 48 85 ff 74 0d e8 1e a5 e8 ff 48 c7 43 18 00 00 00 00 5b
c3 <0f> 0b eb cf 66 66 66 66 90 55 89 f5 53 48 89 fb 48 83 c7 28 e8 0b
[  405.332862] RSP: 0018:ffffc900026bbe50 EFLAGS: 00010246
[  405.333482] RAX: ffffffff819323e0 RBX: ffff88812cb83640 RCX:
ffff88812cb829e8
[  405.334228] RDX: 0000000000000001 RSI: ffff88812cb837e8 RDI:
ffff88812cb83640
[  405.335366] RBP: ffff88813fd22680 R08: 0000000000000000 R09:
000073746e657665
[  405.336472] R10: 8080808080808080 R11: 0000000000000001 R12:
ffff88812cb83600
[  405.337760] R13: 0000000000000000 R14: ffff88811f401780 R15:
ffff88812cb837e8
[  405.338777] FS:  0000000000000000(0000) GS:ffff88813fd00000(0000)
knlGS:0000000000000000
[  405.339903] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  405.340821] CR2: 00007fb11489a6b8 CR3: 000000012d4d6000 CR4:
00000000000406e0
[  405.341981] DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000
[  405.343131] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400
[  405.344415] Call Trace:
[  405.344821]  sk_psock_destroy_deferred+0x23/0x1b0
[  405.345585]  process_one_work+0x1ae/0x3e0
[  405.346110]  worker_thread+0x3c/0x3b0
[  405.346576]  ? pwq_unbound_release_workfn+0xd0/0xd0
[  405.347187]  kthread+0x11d/0x140
[  405.347601]  ? __kthread_parkme+0x80/0x80
[  405.348108]  ret_from_fork+0x35/0x40
[  405.348566] ---[ end trace a4a3af4026a327d4 ]---
Stop psock's parser just before canceling its work.
Fixes: 1d79895aef18 ("sk_msg: Always cancel strp work before freeing the
psock") Reported-by: kernel test robot <rong.a.chen@intel.com>
Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com> Signed-off-by:
Daniel Borkmann <daniel@iogearbox.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/core/skmsg.c (diff)
Commit 66ad3d56ab6246f20c4ff9c120731c890d015c65 by gregkh
gfs2: Fix missed wakeups in find_insert_glock
commit 605b0487f0bc1ae9963bf52ece0f5c8055186f81 upstream.
Mark Syms has reported seeing tasks that are stuck waiting in
find_insert_glock.  It turns out that struct lm_lockname contains four
padding bytes on 64-bit architectures that function glock_waitqueue
doesn't skip when hashing the glock name.  As a result, we can end up
waking up the wrong waitqueue, and the waiting tasks may be stuck
forever.
Fix that by using ht_parms.key_len instead of sizeof(struct lm_lockname)
for the key length.
Reported-by: Mark Syms <mark.syms@citrix.com> Signed-off-by: Andreas
Gruenbacher <agruenba@redhat.com> Signed-off-by: Bob Peterson
<rpeterso@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/gfs2/glock.c (diff)
Commit a56c9e2637868f859107ab110b352f9e8fd4890f by gregkh
staging: erofs: keep corrupted fs from crashing kernel in erofs_namei()
commit 419d6efc50e94bcf5d6b35cd8c71f79edadec564 upstream.
As Al pointed out, "
... and while we are at it, what happens to
unsigned int nameoff = le16_to_cpu(de[mid].nameoff);
unsigned int matched = min(startprfx, endprfx);
struct qstr dname = QSTR_INIT(data + nameoff,
unlikely(mid >= ndirents - 1) ?
maxsize - nameoff :
le16_to_cpu(de[mid + 1].nameoff) - nameoff);
/* string comparison without already matched prefix */
int ret = dirnamecmp(name, &dname, &matched); if
le16_to_cpu(de[...].nameoff) is not monotonically increasing?  I.e.
what's to prevent e.g. (unsigned)-1 ending up in dname.len?
Corrupted fs image shouldn't oops the kernel.. "
Revisit the related lookup flow to address the issue.
Fixes: d72d1ce60174 ("staging: erofs: add namei functions") Cc:
<stable@vger.kernel.org> # 4.19+ Suggested-by: Al Viro
<viro@ZenIV.linux.org.uk> Signed-off-by: Gao Xiang
<gaoxiang25@huawei.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>

The file was modifieddrivers/staging/erofs/namei.c (diff)
Commit e7b0b71c22e7f9529ae677ba7299efbe6bfbb232 by gregkh
staging: erofs: compressed_pages should not be accessed again after
freed
commit af692e117cb8cd9d3d844d413095775abc1217f9 upstream.
This patch resolves the following page use-after-free issue,
z_erofs_vle_unzip:
   ...
   for (i = 0; i < nr_pages; ++i) {
       ...
       z_erofs_onlinepage_endio(page);  (1)
   }
    for (i = 0; i < clusterpages; ++i) {
       page = compressed_pages[i];
        if (page->mapping == mngda)      (2)
           continue;
       /* recycle all individual staging pages */
       (void)z_erofs_gather_if_stagingpage(page_pool, page); (3)
       WRITE_ONCE(compressed_pages[i], NULL);
   }
   ...
After (1) is executed, page is freed and could be then reused, if
compressed_pages is scanned after that, it could fall info (2) or
(3) by mistake and that could finally be in a mess.
This patch aims to solve the above issue only with little changes as
much as possible in order to make the fix backport easier.
Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression
support") Cc: <stable@vger.kernel.org> # 4.19+ Signed-off-by: Gao Xiang
<gaoxiang25@huawei.com> Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

The file was modifieddrivers/staging/erofs/unzip_vle.h (diff)
The file was modifieddrivers/staging/erofs/unzip_vle_lz4.c (diff)
The file was modifieddrivers/staging/erofs/unzip_vle.c (diff)
Commit 72bc954e8a5f004d1bba809d46b5548a818dbc22 by gregkh
scripts/gdb: replace flags (MS_xyz -> SB_xyz)
commit 663cb6340c6e84fe29aa6d0fa63d85ea6bd6cd19 upstream.
Since commit 1751e8a6cb93 ("Rename superblock flags (MS_xyz ->
SB_xyz)"), scripts/gdb should be updated to replace MS_xyz with SB_xyz.
This change didn't directly affect the running operation of scripts/gdb
until commit e262e32d6bde "vfs: Suppress MS_* flag defs within the
kernel unless explicitly enabled" removed the definitions used by
constants.py.
Update constants.py.in to utilise the new internal flags, matching the
implementation at fs/proc_namespace.c::show_sb_opts.
Note to stable, e262e32d6bde landed in v5.0-rc1 (which was just
released), so we'll want this picked back to 5.0 stable once this patch
hits mainline (akpm just picked it up).  Without this, debugging a
kernel a kernel via GDB+QEMU is broken in the 5.0 release.
[kieran.bingham@ideasonboard.com: add fixes tag, reword commit message]
Link:
http://lkml.kernel.org/r/20190305103014.25847-1-kieran.bingham@ideasonboard.com
Fixes: e262e32d6bde "vfs: Suppress MS_* flag defs within the kernel
unless explicitly enabled" Signed-off-by: Jackie Liu
<liuyun01@kylinos.cn> Signed-off-by: Kieran Bingham
<kieran.bingham@ideasonboard.com> Tested-by: Nick Desaulniers
<ndesaulniers@google.com> Tested-by: Kieran Bingham
<kieran.bingham@ideasonboard.com> Cc: Felipe Balbi
<felipe.balbi@linux.intel.com> Cc: Dan Robertson
<danlrobertson89@gmail.com> Cc: Jan Kiszka <jan.kiszka@siemens.com> Cc:
David Howells <dhowells@redhat.com> Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedscripts/gdb/linux/proc.py (diff)
The file was modifiedscripts/gdb/linux/constants.py.in (diff)
Commit 3dfe7538f80acf0edf33ae4ae4f639c86e3a3be5 by gregkh
ath9k: Avoid OF no-EEPROM quirks without qca,no-eeprom
commit ce938231bd3b1d7af3cbd8836f084801090470e1 upstream.
ath9k_of_init() function[0] was initially written on the assumption that
if someone had an explicit ath9k OF node that "there must be something
wrong, why would someone add an OF node if everything is fine"[1]
(Quoting Martin Blumenstingl <martin.blumenstingl@googlemail.com>)
"it turns out it's not that simple. with your requirements I'm now aware
of two use-cases where the current code in ath9k_of_init() doesn't work
without modifications"[1]
The "your requirements" Martin speaks of is the result of the fact that
I have a device (PowerCloud Systems CR5000) has some kind of default -
not unique mac address - set and requires to set the correct MAC address
via mac-address devicetree property, however:
"some cards come with a physical EEPROM chip [or OTP] so "qca,no-eeprom"
should not be set (your use-case). in this case AH_USE_EEPROM should be
set (which is the default when there is no OF node)"[1]
The other use case is:
the firmware on some PowerMac G5 seems to add a OF node for the ath9k
card automatically. depending on the EEPROM on the card AH_NO_EEP_SWAP
should be unset (which is the default when there is no OF node). see [3]
After this patch to ath9k_of_init() the new behavior will be:
    if there's no OF node then everything is the same as before
   if there's an empty OF node then ath9k will use the hardware EEPROM
     (before ath9k would fail to initialize because no EEPROM data was
     provided by userspace)
   if there's an OF node with only a MAC address then ath9k will use
     the MAC address and the hardware EEPROM (see the case above)
   with "qca,no-eeprom" EEPROM data from userspace will be requested.
     the behavior here will not change
[1]
Martin provides additional background on EEPROM swapping[1].
Thanks to Christian Lamparter <chunkeey@gmail.com> for all his help on
troubleshooting this issue and the basis for this patch.
[0]https://elixir.bootlin.com/linux/v4.20-rc7/source/drivers/net/wireless/ath/ath9k/init.c#L615
[1]https://github.com/openwrt/openwrt/pull/1645#issuecomment-448027058
[2]https://github.com/openwrt/openwrt/pull/1613
[3]https://patchwork.kernel.org/patch/10241731/
Fixes: 138b41253d9c ("ath9k: parse the device configuration from an OF
node") Reviewed-by: Martin Blumenstingl
<martin.blumenstingl@googlemail.com> Tested-by: Martin Blumenstingl
<martin.blumenstingl@googlemail.com> Signed-off-by: Daniel F. Dickinson
<cshored@thecshore.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Cc: Christian Lamparter <chunkeey@gmail.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/wireless/ath/ath9k/init.c (diff)
Commit 3ad8e57560d7652a66da12b41c668a593509f3ad by gregkh
perf/x86/intel: Make cpuc allocations consistent
The cpuc data structure allocation is different between fake and real
cpuc's; use the same code to init/free both.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/perf_event.h (diff)
The file was modifiedarch/x86/events/intel/core.c (diff)
The file was modifiedarch/x86/events/core.c (diff)
Commit 93c2f72c7933f67773d6ffd643e98efd29b03963 by gregkh
perf/x86/intel: Generalize dynamic constraint creation
Such that we can re-use it.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/intel/core.c (diff)
Commit 9870cd07a132c86fb5e9351e3f1206a14dd03827 by gregkh
x86: Add TSX Force Abort CPUID/MSR
Skylake systems will receive a microcode update to address a TSX errata.
This microcode will (by default) clobber PMC3 when TSX instructions are
(speculatively or not) executed.
It also provides an MSR to cause all TSX transaction to abort and
preserve PMC3.
Add the CPUID enumeration and MSR definition.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/include/asm/msr-index.h (diff)
The file was modifiedarch/x86/include/asm/cpufeatures.h (diff)
Commit 84ff8f265a916973bc54ce8cd6fa756ded4966ad by gregkh
perf/x86/intel: Implement support for TSX Force Abort
Skylake (and later) will receive a microcode update to address a TSX
errata. This microcode will, on execution of a TSX instruction
(speculative or not) use (clobber) PMC3. This update will also provide a
new MSR to change this behaviour along with a CPUID bit to enumerate the
presence of this new MSR.
When the MSR gets set; the microcode will no longer use PMC3 but will
Force Abort every TSX transaction (upon executing COMMIT).
When TSX Force Abort (TFA) is allowed (default); the MSR gets set when
PMC3 gets scheduled and cleared when, after scheduling, PMC3 is unused.
When TFA is not allowed; clear PMC3 from all constraints such that it
will not get used.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/perf_event.h (diff)
The file was modifiedarch/x86/events/intel/core.c (diff)
The file was modifiedMakefile (diff)
Commit c4b5717a016849b4eb437013e662f3546a0ed163 by gregkh
connector: fix unsafe usage of ->real_parent
[ Upstream commit 6d2b0f02f5a07a4bf02e4cbc90d7eaa85cac2986 ]
proc_exit_connector() uses ->real_parent lockless. This is not safe that
its parent can go away at any moment, so use RCU to protect it, and
ensure that this task is not released.
[  747.624551]
==================================================================
[  747.632946] BUG: KASAN: use-after-free in
proc_exit_connector+0x1f7/0x310
[  747.640686] Read of size 4 at addr ffff88a0276988e0 by task sshd/2882
[  747.648032]
[  747.649804] CPU: 11 PID: 2882 Comm: sshd Tainted: G            E   
4.19.26-rc2 #11
[  747.658629] Hardware name: IBM x3550M4 -[7914OFV]-/00AM544, BIOS
-[D7E142BUS-1.71]- 07/31/2014
[  747.668419] Call Trace:
[  747.671269]  dump_stack+0xf0/0x19b
[  747.675186]  ? show_regs_print_info+0x5/0x5
[  747.679988]  ? kmsg_dump_rewind_nolock+0x59/0x59
[  747.685302]  print_address_description+0x6a/0x270
[  747.691162]  kasan_report+0x258/0x380
[  747.695835]  ? proc_exit_connector+0x1f7/0x310
[  747.701402]  proc_exit_connector+0x1f7/0x310
[  747.706767]  ? proc_coredump_connector+0x2d0/0x2d0
[  747.712715]  ? _raw_write_unlock_irq+0x29/0x50
[  747.718270]  ? _raw_write_unlock_irq+0x29/0x50
[  747.723820]  ? ___preempt_schedule+0x16/0x18
[  747.729193]  ? ___preempt_schedule+0x16/0x18
[  747.734574]  do_exit+0xa11/0x14f0
[  747.738880]  ? mm_update_next_owner+0x590/0x590
[  747.744525]  ? debug_show_all_locks+0x3c0/0x3c0
[  747.761448]  ? ktime_get_coarse_real_ts64+0xeb/0x1c0
[  747.767589]  ? lockdep_hardirqs_on+0x1a6/0x290
[  747.773154]  ? check_chain_key+0x139/0x1f0
[  747.778345]  ? check_flags.part.35+0x240/0x240
[  747.783908]  ? __lock_acquire+0x2300/0x2300
[  747.789171]  ? _raw_spin_unlock_irqrestore+0x59/0x70
[  747.795316]  ? _raw_spin_unlock_irqrestore+0x59/0x70
[  747.801457]  ? do_raw_spin_unlock+0x10f/0x1e0
[  747.806914]  ? do_raw_spin_trylock+0x120/0x120
[  747.812481]  ? preempt_count_sub+0x14/0xc0
[  747.817645]  ? _raw_spin_unlock+0x2e/0x50
[  747.822708]  ? __handle_mm_fault+0x12db/0x1fa0
[  747.828367]  ? __pmd_alloc+0x2d0/0x2d0
[  747.833143]  ? check_noncircular+0x50/0x50
[  747.838309]  ? match_held_lock+0x7f/0x340
[  747.843380]  ? check_noncircular+0x50/0x50
[  747.848561]  ? handle_mm_fault+0x21a/0x5f0
[  747.853730]  ? check_flags.part.35+0x240/0x240
[  747.859290]  ? check_chain_key+0x139/0x1f0
[  747.864474]  ? __do_page_fault+0x40f/0x760
[  747.869655]  ? __audit_syscall_entry+0x4b/0x1f0
[  747.875319]  ? syscall_trace_enter+0x1d5/0x7b0
[  747.880877]  ? trace_raw_output_preemptirq_template+0x90/0x90
[  747.887895]  ? trace_raw_output_sys_exit+0x80/0x80
[  747.893860]  ? up_read+0x3b/0x90
[  747.898142]  ? stop_critical_timings+0x260/0x260
[  747.903909]  do_group_exit+0xe0/0x1c0
[  747.908591]  ? __x64_sys_exit+0x30/0x30
[  747.913460]  ? trace_raw_output_preemptirq_template+0x90/0x90
[  747.920485]  ? tracer_hardirqs_on+0x270/0x270
[  747.925956]  __x64_sys_exit_group+0x28/0x30
[  747.931214]  do_syscall_64+0x117/0x400
[  747.935988]  ? syscall_return_slowpath+0x2f0/0x2f0
[  747.941931]  ? trace_hardirqs_off_thunk+0x1a/0x1c
[  747.947788]  ? trace_hardirqs_on_caller+0x1d0/0x1d0
[  747.953838]  ? lockdep_sys_exit+0x16/0x8e
[  747.958915]  ? trace_hardirqs_off_thunk+0x1a/0x1c
[  747.964784]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[  747.971021] RIP: 0033:0x7f572f154c68
[  747.975606] Code: Bad RIP value.
[  747.979791] RSP: 002b:00007ffed2dfaa58 EFLAGS: 00000246 ORIG_RAX:
00000000000000e7
[  747.989324] RAX: ffffffffffffffda RBX: 00007f572f431840 RCX:
00007f572f154c68
[  747.997910] RDX: 0000000000000001 RSI: 000000000000003c RDI:
0000000000000001
[  748.006495] RBP: 0000000000000001 R08: 00000000000000e7 R09:
fffffffffffffee0
[  748.015079] R10: 00007f572f4387e8 R11: 0000000000000246 R12:
00007f572f431840
[  748.023664] R13: 000055a7f90f2c50 R14: 000055a7f96e2310 R15:
000055a7f96e2310
[  748.032287]
[  748.034509] Allocated by task 2300:
[  748.038982]  kasan_kmalloc+0xa0/0xd0
[  748.043562]  kmem_cache_alloc_node+0xf5/0x2e0
[  748.049018]  copy_process+0x1781/0x4790
[  748.053884]  _do_fork+0x166/0x9a0
[  748.058163]  do_syscall_64+0x117/0x400
[  748.062943]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[  748.069180]
[  748.071405] Freed by task 15395:
[  748.075591]  __kasan_slab_free+0x130/0x180
[  748.080752]  kmem_cache_free+0xc2/0x310
[  748.085619]  free_task+0xea/0x130
[  748.089901]  __put_task_struct+0x177/0x230
[  748.095063]  finish_task_switch+0x51b/0x5d0
[  748.100315]  __schedule+0x506/0xfa0
[  748.104791]  schedule+0xca/0x260
[  748.108978]  futex_wait_queue_me+0x27e/0x420
[  748.114333]  futex_wait+0x251/0x550
[  748.118814]  do_futex+0x75b/0xf80
[  748.123097]  __x64_sys_futex+0x231/0x2a0
[  748.128065]  do_syscall_64+0x117/0x400
[  748.132835]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[  748.139066]
[  748.141289] The buggy address belongs to the object at
ffff88a027698000
[  748.141289]  which belongs to the cache task_struct of size 12160
[  748.156589] The buggy address is located 2272 bytes inside of
[  748.156589]  12160-byte region [ffff88a027698000, ffff88a02769af80)
[  748.171114] The buggy address belongs to the page:
[  748.177055] page:ffffea00809da600 count:1 mapcount:0
mapping:ffff888107d01e00 index:0x0 compound_mapcount: 0
[  748.189136] flags: 0x57ffffc0008100(slab|head)
[  748.194688] raw: 0057ffffc0008100 ffffea00809a3200 0000000300000003
ffff888107d01e00
[  748.204424] raw: 0000000000000000 0000000000020002 00000001ffffffff
0000000000000000
[  748.214146] page dumped because: kasan: bad access detected
[  748.220976]
[  748.223197] Memory state around the buggy address:
[  748.229128]  ffff88a027698780: fb fb fb fb fb fb fb fb fb fb fb fb fb
fb fb fb
[  748.238271]  ffff88a027698800: fb fb fb fb fb fb fb fb fb fb fb fb fb
fb fb fb
[  748.247414] >ffff88a027698880: fb fb fb fb fb fb fb fb fb fb fb fb fb
fb fb fb
[  748.256564]                                                        ^
[  748.264267]  ffff88a027698900: fb fb fb fb fb fb fb fb fb fb fb fb fb
fb fb fb
[  748.273493]  ffff88a027698980: fb fb fb fb fb fb fb fb fb fb fb fb fb
fb fb fb
[  748.282630]
==================================================================
Fixes: b086ff87251b4a4 ("connector: add parent pid and tgid to coredump
and exit events") Signed-off-by: Zhang Yu <zhangyu31@baidu.com>
Signed-off-by: Li RongQing <lirongqing@baidu.com> Acked-by: Evgeniy
Polyakov <zbr@ioremap.net> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/connector/cn_proc.c (diff)
Commit a9b0ebbf75c3f08e8ac36870d4835497734121ae by gregkh
fou, fou6: avoid uninit-value in gue_err() and gue6_err()
[ Upstream commit 5355ed6388e23b69a00d48398a68d022135e6486 ]
My prior commit missed the fact that these functions were using
udp_hdr() (aka skb_transport_header()) to get access to GUE header.
Since pskb_transport_may_pull() does not exist yet, we have to add
transport_offset to our pskb_may_pull() calls.
BUG: KMSAN: uninit-value in gue_err+0x514/0xfa0 net/ipv4/fou.c:1032 CPU:
1 PID: 10648 Comm: syz-executor.1 Not tainted 5.0.0+ #11 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+0x173/0x1d0 lib/dump_stack.c:113
kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:600
__msan_warning+0x82/0xf0 mm/kmsan/kmsan_instr.c:313
gue_err+0x514/0xfa0 net/ipv4/fou.c:1032
__udp4_lib_err_encap_no_sk net/ipv4/udp.c:571 [inline]
__udp4_lib_err_encap net/ipv4/udp.c:626 [inline]
__udp4_lib_err+0x12e6/0x1d40 net/ipv4/udp.c:665
udp_err+0x74/0x90 net/ipv4/udp.c:737
icmp_socket_deliver net/ipv4/icmp.c:767 [inline]
icmp_unreach+0xb65/0x1070 net/ipv4/icmp.c:884
icmp_rcv+0x11a1/0x1950 net/ipv4/icmp.c:1066
ip_protocol_deliver_rcu+0x584/0xbb0 net/ipv4/ip_input.c:208
ip_local_deliver_finish net/ipv4/ip_input.c:234 [inline]
NF_HOOK include/linux/netfilter.h:289 [inline]
ip_local_deliver+0x624/0x7b0 net/ipv4/ip_input.c:255
dst_input include/net/dst.h:450 [inline]
ip_rcv_finish net/ipv4/ip_input.c:414 [inline]
NF_HOOK include/linux/netfilter.h:289 [inline]
ip_rcv+0x6bd/0x740 net/ipv4/ip_input.c:524
__netif_receive_skb_one_core net/core/dev.c:4973 [inline]
__netif_receive_skb net/core/dev.c:5083 [inline]
process_backlog+0x756/0x10e0 net/core/dev.c:5923
napi_poll net/core/dev.c:6346 [inline]
net_rx_action+0x78b/0x1a60 net/core/dev.c:6412
__do_softirq+0x53f/0x93a kernel/softirq.c:293
invoke_softirq kernel/softirq.c:375 [inline]
irq_exit+0x214/0x250 kernel/softirq.c:416
exiting_irq+0xe/0x10 arch/x86/include/asm/apic.h:536
smp_apic_timer_interrupt+0x48/0x70 arch/x86/kernel/apic/apic.c:1064
apic_timer_interrupt+0x2e/0x40 arch/x86/entry/entry_64.S:814
</IRQ> RIP: 0010:finish_lock_switch+0x2b/0x40 kernel/sched/core.c:2597
Code: 48 89 e5 53 48 89 fb e8 63 e7 95 00 8b b8 88 0c 00 00 48 8b 00 48
85 c0 75 12 48 89 df e8 dd db 95 00 c6 00 00 c6 03 00 fb 5b <5d> c3 e8
4e e6 95 00 eb e7 66 90 66 2e 0f 1f 84 00 00 00 00 00 55 RSP:
0018:ffff888081a0fc80 EFLAGS: 00000296 ORIG_RAX: ffffffffffffff13 RAX:
ffff88821fd6bd80 RBX: ffff888027898000 RCX: ccccccccccccd000 RDX:
ffff88821fca8d80 RSI: ffff888000000000 RDI: 00000000000004a0 RBP:
ffff888081a0fc80 R08: 0000000000000002 R09: ffff888081a0fb08 R10:
0000000000000000 R11: 0000000000000000 R12: 0000000000000001 R13:
ffff88811130e388 R14: ffff88811130da00 R15: ffff88812fdb7d80
finish_task_switch+0xfc/0x2d0 kernel/sched/core.c:2698
context_switch kernel/sched/core.c:2851 [inline]
__schedule+0x6cc/0x800 kernel/sched/core.c:3491
schedule+0x15b/0x240 kernel/sched/core.c:3535
freezable_schedule include/linux/freezer.h:172 [inline]
do_nanosleep+0x2ba/0x980 kernel/time/hrtimer.c:1679
hrtimer_nanosleep kernel/time/hrtimer.c:1733 [inline]
__do_sys_nanosleep kernel/time/hrtimer.c:1767 [inline]
__se_sys_nanosleep+0x746/0x960 kernel/time/hrtimer.c:1754
__x64_sys_nanosleep+0x3e/0x60 kernel/time/hrtimer.c:1754
do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
entry_SYSCALL_64_after_hwframe+0x63/0xe7 RIP: 0033:0x4855a0 Code: 00 00
48 c7 c0 d4 ff ff ff 64 c7 00 16 00 00 00 31 c0 eb be 66 0f 1f 44 00 00
83 3d b1 11 5d 00 00 75 14 b8 23 00 00 00 0f 05 <48> 3d 01 f0 ff ff 0f
83 04 e2 f8 ff c3 48 83 ec 08 e8 3a 55 fd ff RSP: 002b:0000000000a4fd58
EFLAGS: 00000246 ORIG_RAX: 0000000000000023 RAX: ffffffffffffffda RBX:
0000000000085780 RCX: 00000000004855a0 RDX: 0000000000000000 RSI:
0000000000000000 RDI: 0000000000a4fd60 RBP: 00000000000007ec R08:
0000000000000001 R09: 0000000000ceb940 R10: 0000000000000000 R11:
0000000000000246 R12: 0000000000000008 R13: 0000000000a4fdb0 R14:
0000000000085711 R15: 0000000000a4fdc0
Uninit was created at:
kmsan_save_stack_with_flags mm/kmsan/kmsan.c:205 [inline]
kmsan_internal_poison_shadow+0x92/0x150 mm/kmsan/kmsan.c:159
kmsan_kmalloc+0xa6/0x130 mm/kmsan/kmsan_hooks.c:176
kmsan_slab_alloc+0xe/0x10 mm/kmsan/kmsan_hooks.c:185
slab_post_alloc_hook mm/slab.h:445 [inline]
slab_alloc_node mm/slub.c:2773 [inline]
__kmalloc_node_track_caller+0xe9e/0xff0 mm/slub.c:4398
__kmalloc_reserve net/core/skbuff.c:140 [inline]
__alloc_skb+0x309/0xa20 net/core/skbuff.c:208
alloc_skb include/linux/skbuff.h:1012 [inline]
alloc_skb_with_frags+0x186/0xa60 net/core/skbuff.c:5287
sock_alloc_send_pskb+0xafd/0x10a0 net/core/sock.c:2091
sock_alloc_send_skb+0xca/0xe0 net/core/sock.c:2108
__ip_append_data+0x34cd/0x5000 net/ipv4/ip_output.c:998
ip_append_data+0x324/0x480 net/ipv4/ip_output.c:1220
icmp_push_reply+0x23d/0x7e0 net/ipv4/icmp.c:375
__icmp_send+0x2ea3/0x30f0 net/ipv4/icmp.c:737
icmp_send include/net/icmp.h:47 [inline]
ipv4_link_failure+0x6d/0x230 net/ipv4/route.c:1190
dst_link_failure include/net/dst.h:427 [inline]
arp_error_report+0x106/0x1a0 net/ipv4/arp.c:297
neigh_invalidate+0x359/0x8e0 net/core/neighbour.c:992
neigh_timer_handler+0xdf2/0x1280 net/core/neighbour.c:1078
call_timer_fn+0x285/0x600 kernel/time/timer.c:1325
expire_timers kernel/time/timer.c:1362 [inline]
__run_timers+0xdb4/0x11d0 kernel/time/timer.c:1681
run_timer_softirq+0x2e/0x50 kernel/time/timer.c:1694
__do_softirq+0x53f/0x93a kernel/softirq.c:293
Fixes: 26fc181e6cac ("fou, fou6: do not assume linear skbs")
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Cc: Stefano Brivio <sbrivio@redhat.com> Cc:
Sabrina Dubroca <sd@queasysnail.net> Acked-by: Stefano Brivio
<sbrivio@redhat.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/ipv4/fou.c (diff)
The file was modifiednet/ipv6/fou6.c (diff)
Commit ab62510ac2ea672d08c7a35ecb7ccfc6656a3eba by gregkh
gro_cells: make sure device is up in gro_cells_receive()
[ Upstream commit 2a5ff07a0eb945f291e361aa6f6becca8340ba46 ]
We keep receiving syzbot reports [1] that show that tunnels do not play
the rcu/IFF_UP rules properly.
At device dismantle phase, gro_cells_destroy() will be called only after
a full rcu grace period is observed after IFF_UP has been cleared.
This means that IFF_UP needs to be tested before queueing packets into
netif_rx() or gro_cells.
This patch implements the test in gro_cells_receive() because too many
callers do not seem to bother enough.
[1] BUG: unable to handle kernel paging request at fffff4ca0b9ffffe PGD
0 P4D 0 Oops: 0000 [#1] PREEMPT SMP KASAN CPU: 0 PID: 21 Comm:
kworker/u4:1 Not tainted 5.0.0+ #97 Hardware name: Google Google Compute
Engine/Google Compute Engine, BIOS Google 01/01/2011 Workqueue: netns
cleanup_net RIP: 0010:__skb_unlink include/linux/skbuff.h:1929 [inline]
RIP: 0010:__skb_dequeue include/linux/skbuff.h:1945 [inline] RIP:
0010:__skb_queue_purge include/linux/skbuff.h:2656 [inline] RIP:
0010:gro_cells_destroy net/core/gro_cells.c:89 [inline] RIP:
0010:gro_cells_destroy+0x19d/0x360 net/core/gro_cells.c:78 Code: 03 42
80 3c 20 00 0f 85 53 01 00 00 48 8d 7a 08 49 8b 47 08 49 c7 07 00 00 00
00 48 89 f9 49 c7 47 08 00 00 00 00 48 c1 e9 03 <42> 80 3c 21 00 0f 85
10 01 00 00 48 89 c1 48 89 42 08 48 c1 e9 03 RSP: 0018:ffff8880aa3f79a8
EFLAGS: 00010a02 RAX: 00ffffffffffffe8 RBX: ffffe8ffffc64b70 RCX:
1ffff8ca0b9ffffe RDX: ffffc6505cffffe8 RSI: ffffffff858410ca RDI:
ffffc6505cfffff0 RBP: ffff8880aa3f7a08 R08: ffff8880aa3e8580 R09:
fffffbfff1263645 R10: fffffbfff1263644 R11: ffffffff8931b223 R12:
dffffc0000000000 R13: 0000000000000000 R14: ffffe8ffffc64b80 R15:
ffffe8ffffc64b75 kobject: 'loop2' (000000004bd7d84a): kobject_uevent_env
FS:  0000000000000000(0000) GS:ffff8880ae800000(0000)
knlGS:0000000000000000 CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: fffff4ca0b9ffffe CR3: 0000000094941000 CR4: 00000000001406f0 Call
Trace: kobject: 'loop2' (000000004bd7d84a): fill_kobj_path: path =
'/devices/virtual/block/loop2'
ip_tunnel_dev_free+0x19/0x60 net/ipv4/ip_tunnel.c:1010
netdev_run_todo+0x51c/0x7d0 net/core/dev.c:8970
rtnl_unlock+0xe/0x10 net/core/rtnetlink.c:116
ip_tunnel_delete_nets+0x423/0x5f0 net/ipv4/ip_tunnel.c:1124
vti_exit_batch_net+0x23/0x30 net/ipv4/ip_vti.c:495
ops_exit_list.isra.0+0x105/0x160 net/core/net_namespace.c:156
cleanup_net+0x3fb/0x960 net/core/net_namespace.c:551
process_one_work+0x98e/0x1790 kernel/workqueue.c:2173
worker_thread+0x98/0xe40 kernel/workqueue.c:2319
kthread+0x357/0x430 kernel/kthread.c:246
ret_from_fork+0x3a/0x50 arch/x86/entry/entry_64.S:352 Modules linked in:
CR2: fffff4ca0b9ffffe
  [ end trace 513fc9c1338d1cb3 ] RIP: 0010:__skb_unlink
include/linux/skbuff.h:1929 [inline] RIP: 0010:__skb_dequeue
include/linux/skbuff.h:1945 [inline] RIP: 0010:__skb_queue_purge
include/linux/skbuff.h:2656 [inline] RIP: 0010:gro_cells_destroy
net/core/gro_cells.c:89 [inline] RIP: 0010:gro_cells_destroy+0x19d/0x360
net/core/gro_cells.c:78 Code: 03 42 80 3c 20 00 0f 85 53 01 00 00 48 8d
7a 08 49 8b 47 08 49 c7 07 00 00 00 00 48 89 f9 49 c7 47 08 00 00 00 00
48 c1 e9 03 <42> 80 3c 21 00 0f 85 10 01 00 00 48 89 c1 48 89 42 08 48
c1 e9 03 RSP: 0018:ffff8880aa3f79a8 EFLAGS: 00010a02 RAX:
00ffffffffffffe8 RBX: ffffe8ffffc64b70 RCX: 1ffff8ca0b9ffffe RDX:
ffffc6505cffffe8 RSI: ffffffff858410ca RDI: ffffc6505cfffff0 RBP:
ffff8880aa3f7a08 R08: ffff8880aa3e8580 R09: fffffbfff1263645 R10:
fffffbfff1263644 R11: ffffffff8931b223 R12: dffffc0000000000 kobject:
'loop3' (00000000e4ee57a6): kobject_uevent_env R13: 0000000000000000
R14: ffffe8ffffc64b80 R15: ffffe8ffffc64b75 FS:  0000000000000000(0000)
GS:ffff8880ae800000(0000) knlGS:0000000000000000 CS:  0010 DS: 0000 ES:
0000 CR0: 0000000080050033 CR2: fffff4ca0b9ffffe CR3: 0000000094941000
CR4: 00000000001406f0
Fixes: c9e6bc644e55 ("net: add gro_cells infrastructure") Signed-off-by:
Eric Dumazet <edumazet@google.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/core/gro_cells.c (diff)
Commit b41988c24100cf1f0be52a8b6f5573c23f84a11a by gregkh
ipv4/route: fail early when inet dev is missing
[ Upstream commit 22c74764aa2943ecdf9f07c900d8a9c8ba6c9265 ]
If a non local multicast packet reaches ip_route_input_rcu() while the
ingress device IPv4 private data (in_dev) is NULL, we end up doing a
NULL pointer dereference in IN_DEV_MFORWARD().
Since the later call to ip_route_input_mc() is going to fail if
!in_dev, we can fail early in such scenario and avoid the dangerous code
path.
v1 -> v2:
- clarified the commit message, no code changes
Reported-by: Tianhao Zhao <tizhao@redhat.com> Fixes: e58e41596811 ("net:
Enable support for VRF with ipv4 multicast") Signed-off-by: Paolo Abeni
<pabeni@redhat.com> Reviewed-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/ipv4/route.c (diff)
Commit a53dc7db54c72fae9106b03d4bd8be7b9daec913 by gregkh
l2tp: fix infoleak in l2tp_ip6_recvmsg()
[ Upstream commit 163d1c3d6f17556ed3c340d3789ea93be95d6c28 ]
Back in 2013 Hannes took care of most of such leaks in commit
bceaa90240b6 ("inet: prevent leakage of uninitialized memory to user in
recv syscalls")
But the bug in l2tp_ip6_recvmsg() has not been fixed.
syzbot report :
BUG: KMSAN: kernel-infoleak in _copy_to_user+0x16b/0x1f0
lib/usercopy.c:32 CPU: 1 PID: 10996 Comm: syz-executor362 Not tainted
5.0.0+ #11 Hardware name: Google Google Compute Engine/Google Compute
Engine, BIOS Google 01/01/2011 Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x173/0x1d0 lib/dump_stack.c:113
kmsan_report+0x12e/0x2a0 mm/kmsan/kmsan.c:600
kmsan_internal_check_memory+0x9f4/0xb10 mm/kmsan/kmsan.c:694
kmsan_copy_to_user+0xab/0xc0 mm/kmsan/kmsan_hooks.c:601
_copy_to_user+0x16b/0x1f0 lib/usercopy.c:32
copy_to_user include/linux/uaccess.h:174 [inline]
move_addr_to_user+0x311/0x570 net/socket.c:227
___sys_recvmsg+0xb65/0x1310 net/socket.c:2283
do_recvmmsg+0x646/0x10c0 net/socket.c:2390
__sys_recvmmsg net/socket.c:2469 [inline]
__do_sys_recvmmsg net/socket.c:2492 [inline]
__se_sys_recvmmsg+0x1d1/0x350 net/socket.c:2485
__x64_sys_recvmmsg+0x62/0x80 net/socket.c:2485
do_syscall_64+0xbc/0xf0 arch/x86/entry/common.c:291
entry_SYSCALL_64_after_hwframe+0x63/0xe7 RIP: 0033:0x445819 Code: e8 6c
b6 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6
48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f
83 2b 12 fc ff c3 66 2e 0f 1f 84 00 00 00 00 RSP: 002b:00007f64453eddb8
EFLAGS: 00000246 ORIG_RAX: 000000000000012b RAX: ffffffffffffffda RBX:
00000000006dac28 RCX: 0000000000445819 RDX: 0000000000000005 RSI:
0000000020002f80 RDI: 0000000000000003 RBP: 00000000006dac20 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00000000006dac2c R13: 00007ffeba8f87af R14:
00007f64453ee9c0 R15: 20c49ba5e353f7cf
Local variable description: ----addr@___sys_recvmsg Variable was created
at:
___sys_recvmsg+0xf6/0x1310 net/socket.c:2244
do_recvmmsg+0x646/0x10c0 net/socket.c:2390
Bytes 0-31 of 32 are uninitialized Memory access of size 32 starts at
ffff8880ae62fbb0 Data copied to user address 0000000020000000
Fixes: a32e0eec7042 ("l2tp: introduce L2TPv3 IP encapsulation support
for IPv6") Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: syzbot <syzkaller@googlegroups.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/l2tp/l2tp_ip6.c (diff)
Commit 8c223fee4ad43a85efd9fa6a66a765ff2fd8db16 by gregkh
lan743x: Fix RX Kernel Panic
[ Upstream commit dd9d9f5907bb475f8b1796c47d4ecc7fb9b72136 ]
It has been noticed that running the speed test at www.speedtest.net
occasionally causes a kernel panic.
Investigation revealed that under this test RX buffer allocation
sometimes fails and returns NULL. But the lan743x driver did not handle
this case.
This patch fixes this issue by attempting to allocate a buffer before
sending the new rx packet to the OS. If the allocation fails then the
new rx packet is dropped and the existing buffer is reused in the DMA
ring.
Updates for v2:
   Additional 2 locations where allocation was not checked,
       has been changed to reuse existing buffer.
Fixes: 23f0703c125b ("lan743x: Add main source files for new lan743x
driver") Signed-off-by: Bryan Whitehead <Bryan.Whitehead@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/microchip/lan743x_main.c (diff)
Commit 93a96dc0a6109beed7790434fca93393b1700b28 by gregkh
lan743x: Fix TX Stall Issue
[ Upstream commit deb6bfabdbb634e91f36a4e9cb00a7137d72d886 ]
It has been observed that tx queue may stall while downloading from
certain web sites (example www.speedtest.net)
The cause has been tracked down to a corner case where the tx interrupt
vector was disabled automatically, but was not re enabled later.
The lan743x has two mechanisms to enable/disable individual interrupts.
Interrupts can be enabled/disabled by individual source, and they can
also be enabled/disabled by individual vector which has been mapped to
the source. Both must be enabled for interrupts to work properly.
The TX code path, primarily uses the interrupt enable/disable of the TX
source bit, while leaving the vector enabled all the time.
However, while investigating this issue it was noticed that the driver
requested the use of the vector auto clear feature.
The test above revealed a case where the vector enable was cleared
unintentionally.
This patch fixes the issue by deleting the lines that request the vector
auto clear feature to be used.
Fixes: 23f0703c125b ("lan743x: Add main source files for new lan743x
driver") Signed-off-by: Bryan Whitehead <Bryan.Whitehead@microchip.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/microchip/lan743x_main.c (diff)
Commit 4b77303758551eea82c33969c3da6b110ac9fdec by gregkh
net: hns3: add dma_rmb() for rx description
[ Upstream commit d394d33bee22421b39a0bcdc51ca6d68ba308625 ]
HW can not guarantee complete write desc->rx.size, even though
HNS3_RXD_VLD_B has been set. Driver needs to add dma_rmb() instruction
to make sure desc->rx.size is always valid.
Fixes: e55970950556 ("net: hns3: Add handling of GRO Pkts not fully
RX'ed in NAPI poll") Signed-off-by: Jian Shen <shenjian15@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/hisilicon/hns3/hns3_enet.c (diff)
Commit 251eb21781bf4431719c01be5502a4c534647c87 by gregkh
net: hsr: fix memory leak in hsr_dev_finalize()
[ Upstream commit 6caabe7f197d3466d238f70915d65301f1716626 ]
If hsr_add_port(hsr, hsr_dev, HSR_PT_MASTER) failed to add port, it
directly returns res and forgets to free the node that allocated in
hsr_create_self_node(), and forgets to delete the node->mac_list linked
in hsr->self_node_db.
BUG: memory leak unreferenced object 0xffff8881cfa0c780 (size 64):
comm "syz-executor.0", pid 2077, jiffies 4294717969 (age 2415.377s)
hex dump (first 32 bytes):
   e0 c7 a0 cf 81 88 ff ff 00 02 00 00 00 00 ad de  ................
   00 e6 49 cd 81 88 ff ff c0 9b 87 d0 81 88 ff ff  ..I.............
backtrace:
   [<00000000e2ff5070>] hsr_dev_finalize+0x736/0x960 [hsr]
   [<000000003ed2e597>] hsr_newlink+0x2b2/0x3e0 [hsr]
   [<000000003fa8c6b6>] __rtnl_newlink+0xf1f/0x1600
net/core/rtnetlink.c:3182
   [<000000001247a7ad>] rtnl_newlink+0x66/0x90 net/core/rtnetlink.c:3240
   [<00000000e7d1b61d>] rtnetlink_rcv_msg+0x54e/0xb90
net/core/rtnetlink.c:5130
   [<000000005556bd3a>] netlink_rcv_skb+0x129/0x340
net/netlink/af_netlink.c:2477
   [<00000000741d5ee6>] netlink_unicast_kernel
net/netlink/af_netlink.c:1310 [inline]
   [<00000000741d5ee6>] netlink_unicast+0x49a/0x650
net/netlink/af_netlink.c:1336
   [<000000009d56f9b7>] netlink_sendmsg+0x88b/0xdf0
net/netlink/af_netlink.c:1917
   [<0000000046b35c59>] sock_sendmsg_nosec net/socket.c:621 [inline]
   [<0000000046b35c59>] sock_sendmsg+0xc3/0x100 net/socket.c:631
   [<00000000d208adc9>] __sys_sendto+0x33e/0x560 net/socket.c:1786
   [<00000000b582837a>] __do_sys_sendto net/socket.c:1798 [inline]
   [<00000000b582837a>] __se_sys_sendto net/socket.c:1794 [inline]
   [<00000000b582837a>] __x64_sys_sendto+0xdd/0x1b0 net/socket.c:1794
   [<00000000c866801d>] do_syscall_64+0x147/0x600
arch/x86/entry/common.c:290
   [<00000000fea382d9>] entry_SYSCALL_64_after_hwframe+0x49/0xbe
   [<00000000e01dacb3>] 0xffffffffffffffff
Fixes: c5a759117210 ("net/hsr: Use list_head (and rcu) instead of array
for slave devices.") Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Mao Wenan <maowenan@huawei.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/hsr/hsr_framereg.c (diff)
The file was modifiednet/hsr/hsr_framereg.h (diff)
The file was modifiednet/hsr/hsr_device.c (diff)
Commit bfca8925f758fc2366139e8412ecd9bebfa44b3e by gregkh
net/hsr: fix possible crash in add_timer()
[ Upstream commit 1e027960edfaa6a43f9ca31081729b716598112b ]
syzbot found another add_timer() issue, this time in net/hsr [1]
Let's use mod_timer() which is safe.
[1] kernel BUG at kernel/time/timer.c:1136! invalid opcode: 0000 [#1]
PREEMPT SMP KASAN CPU: 0 PID: 15909 Comm: syz-executor.3 Not tainted
5.0.0+ #97 Hardware name: Google Google Compute Engine/Google Compute
Engine, BIOS Google 01/01/2011 kobject: 'loop2' (00000000f5629718):
kobject_uevent_env RIP: 0010:add_timer kernel/time/timer.c:1136 [inline]
RIP: 0010:add_timer+0x654/0xbe0 kernel/time/timer.c:1134 Code: 0f 94 c5
31 ff 44 89 ee e8 09 61 0f 00 45 84 ed 0f 84 77 fd ff ff e8 bb 5f 0f 00
e8 07 10 a0 ff e9 68 fd ff ff e8 ac 5f 0f 00 <0f> 0b e8 a5 5f 0f 00 0f
0b e8 9e 5f 0f 00 4c 89 b5 58 ff ff ff e9 RSP: 0018:ffff8880656eeca0
EFLAGS: 00010246 kobject: 'loop2' (00000000f5629718): fill_kobj_path:
path = '/devices/virtual/block/loop2' RAX: 0000000000040000 RBX:
1ffff1100caddd9a RCX: ffffc9000c436000 RDX: 0000000000040000 RSI:
ffffffff816056c4 RDI: ffff88806a2f6cc8 RBP: ffff8880656eed58 R08:
ffff888067f4a300 R09: ffff888067f4abc8 R10: 0000000000000000 R11:
0000000000000000 R12: ffff88806a2f6cc0 R13: dffffc0000000000 R14:
0000000000000001 R15: ffff8880656eed30 FS:  00007fc2019bf700(0000)
GS:ffff8880ae800000(0000) knlGS:0000000000000000 CS:  0010 DS: 0000 ES:
0000 CR0: 0000000080050033 CR2: 0000000000738000 CR3: 0000000067e8e000
CR4: 00000000001406f0 DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400 Call Trace:
hsr_check_announce net/hsr/hsr_device.c:99 [inline]
hsr_check_carrier_and_operstate+0x567/0x6f0 net/hsr/hsr_device.c:120
hsr_netdev_notify+0x297/0xa00 net/hsr/hsr_main.c:51
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:1739
call_netdevice_notifiers_extack net/core/dev.c:1751 [inline]
call_netdevice_notifiers net/core/dev.c:1765 [inline]
dev_open net/core/dev.c:1436 [inline]
dev_open+0x143/0x160 net/core/dev.c:1424
team_port_add drivers/net/team/team.c:1203 [inline]
team_add_slave+0xa07/0x15d0 drivers/net/team/team.c:1933
do_set_master net/core/rtnetlink.c:2358 [inline]
do_set_master+0x1d4/0x230 net/core/rtnetlink.c:2332
do_setlink+0x966/0x3510 net/core/rtnetlink.c:2493
rtnl_setlink+0x271/0x3b0 net/core/rtnetlink.c:2747
rtnetlink_rcv_msg+0x465/0xb00 net/core/rtnetlink.c:5192
netlink_rcv_skb+0x17a/0x460 net/netlink/af_netlink.c:2485
rtnetlink_rcv+0x1d/0x30 net/core/rtnetlink.c:5210
netlink_unicast_kernel net/netlink/af_netlink.c:1310 [inline]
netlink_unicast+0x536/0x720 net/netlink/af_netlink.c:1336
netlink_sendmsg+0x8ae/0xd70 net/netlink/af_netlink.c:1925
sock_sendmsg_nosec net/socket.c:622 [inline]
sock_sendmsg+0xdd/0x130 net/socket.c:632
sock_write_iter+0x27c/0x3e0 net/socket.c:923
call_write_iter include/linux/fs.h:1869 [inline]
do_iter_readv_writev+0x5e0/0x8e0 fs/read_write.c:680
do_iter_write fs/read_write.c:956 [inline]
do_iter_write+0x184/0x610 fs/read_write.c:937
vfs_writev+0x1b3/0x2f0 fs/read_write.c:1001
do_writev+0xf6/0x290 fs/read_write.c:1036
__do_sys_writev fs/read_write.c:1109 [inline]
__se_sys_writev fs/read_write.c:1106 [inline]
__x64_sys_writev+0x75/0xb0 fs/read_write.c:1106
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x457f29 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:00007fc2019bec78
EFLAGS: 00000246 ORIG_RAX: 0000000000000014 RAX: ffffffffffffffda RBX:
0000000000000003 RCX: 0000000000457f29 RDX: 0000000000000001 RSI:
00000000200000c0 RDI: 0000000000000003 RBP: 000000000073bf00 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007fc2019bf6d4 R13: 00000000004c4a60 R14:
00000000004dd218 R15: 00000000ffffffff
Fixes: f421436a591d ("net/hsr: Add support for the High-availability
Seamless Redundancy protocol (HSRv0)") Signed-off-by: Eric Dumazet
<edumazet@google.com> Reported-by: syzbot <syzkaller@googlegroups.com>
Cc: Arvid Brodin <arvid.brodin@alten.se> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/hsr/hsr_device.c (diff)
Commit 0f27e8de567872cd684267e36c2f2eb9f7b29265 by gregkh
net: sit: fix UBSAN Undefined behaviour in check_6rd
[ Upstream commit a843dc4ebaecd15fca1f4d35a97210f72ea1473b ]
In func check_6rd,tunnel->ip6rd.relay_prefixlen may equal to 32,so UBSAN
complain about it.
UBSAN: Undefined behaviour in net/ipv6/sit.c:781:47 shift exponent 32 is
too large for 32-bit type 'unsigned int' CPU: 6 PID: 20036 Comm:
syz-executor.0 Not tainted 4.19.27 #2 Hardware name: QEMU Standard PC
(i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014 Call Trace:
__dump_stack lib/dump_stack.c:77 [inline] dump_stack+0xca/0x13e
lib/dump_stack.c:113 ubsan_epilogue+0xe/0x81 lib/ubsan.c:159
__ubsan_handle_shift_out_of_bounds+0x293/0x2e8 lib/ubsan.c:425
check_6rd.constprop.9+0x433/0x4e0 net/ipv6/sit.c:781 try_6rd
net/ipv6/sit.c:806 [inline] ipip6_tunnel_xmit net/ipv6/sit.c:866
[inline] sit_tunnel_xmit+0x141c/0x2720 net/ipv6/sit.c:1033
__netdev_start_xmit include/linux/netdevice.h:4300 [inline]
netdev_start_xmit include/linux/netdevice.h:4309 [inline] xmit_one
net/core/dev.c:3243 [inline] dev_hard_start_xmit+0x17c/0x780
net/core/dev.c:3259
__dev_queue_xmit+0x1656/0x2500 net/core/dev.c:3829 neigh_output
include/net/neighbour.h:501 [inline] ip6_finish_output2+0xa36/0x2290
net/ipv6/ip6_output.c:120 ip6_finish_output+0x3e7/0xa20
net/ipv6/ip6_output.c:154 NF_HOOK_COND include/linux/netfilter.h:278
[inline] ip6_output+0x1e2/0x720 net/ipv6/ip6_output.c:171 dst_output
include/net/dst.h:444 [inline] ip6_local_out+0x99/0x170
net/ipv6/output_core.c:176 ip6_send_skb+0x9d/0x2f0
net/ipv6/ip6_output.c:1697 ip6_push_pending_frames+0xc0/0x100
net/ipv6/ip6_output.c:1717 rawv6_push_pending_frames net/ipv6/raw.c:616
[inline] rawv6_sendmsg+0x2435/0x3530 net/ipv6/raw.c:946
inet_sendmsg+0xf8/0x5c0 net/ipv4/af_inet.c:798 sock_sendmsg_nosec
net/socket.c:621 [inline] sock_sendmsg+0xc8/0x110 net/socket.c:631
___sys_sendmsg+0x6cf/0x890 net/socket.c:2114
__sys_sendmsg+0xf0/0x1b0 net/socket.c:2152 do_syscall_64+0xc8/0x580
arch/x86/entry/common.c:290 entry_SYSCALL_64_after_hwframe+0x49/0xbe
Signed-off-by: linmiaohe <linmiaohe@huawei.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/ipv6/sit.c (diff)
Commit 391c4c5228d8cfc64556c47fdeda5a78759da632 by gregkh
net/x25: fix use-after-free in x25_device_event()
[ Upstream commit 95d6ebd53c79522bf9502dbc7e89e0d63f94dae4 ]
In case of failure x25_connect() does a x25_neigh_put(x25->neighbour)
but forgets to clear x25->neighbour pointer, thus triggering
use-after-free.
Since the socket is visible in x25_list, we need to hold x25_list_lock
to protect the operation.
syzbot report :
BUG: KASAN: use-after-free in x25_kill_by_device net/x25/af_x25.c:217
[inline] BUG: KASAN: use-after-free in x25_device_event+0x296/0x2b0
net/x25/af_x25.c:252 Read of size 8 at addr ffff8880a030edd0 by task
syz-executor003/7854
CPU: 0 PID: 7854 Comm: syz-executor003 Not tainted 5.0.0+ #97 Hardware
name: Google Google Compute Engine/Google Compute Engine, BIOS Google
01/01/2011 Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x172/0x1f0 lib/dump_stack.c:113
print_address_description.cold+0x7c/0x20d mm/kasan/report.c:187
kasan_report.cold+0x1b/0x40 mm/kasan/report.c:317
__asan_report_load8_noabort+0x14/0x20 mm/kasan/generic_report.c:135
x25_kill_by_device net/x25/af_x25.c:217 [inline]
x25_device_event+0x296/0x2b0 net/x25/af_x25.c:252
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:1739
call_netdevice_notifiers_extack net/core/dev.c:1751 [inline]
call_netdevice_notifiers net/core/dev.c:1765 [inline]
__dev_notify_flags+0x1e9/0x2c0 net/core/dev.c:7607
dev_change_flags+0x10d/0x170 net/core/dev.c:7643
dev_ifsioc+0x2b0/0x940 net/core/dev_ioctl.c:237
dev_ioctl+0x1b8/0xc70 net/core/dev_ioctl.c:488
sock_do_ioctl+0x1bd/0x300 net/socket.c:995
sock_ioctl+0x32b/0x610 net/socket.c:1096
vfs_ioctl fs/ioctl.c:46 [inline]
file_ioctl fs/ioctl.c:509 [inline]
do_vfs_ioctl+0xd6e/0x1390 fs/ioctl.c:696
ksys_ioctl+0xab/0xd0 fs/ioctl.c:713
__do_sys_ioctl fs/ioctl.c:720 [inline]
__se_sys_ioctl fs/ioctl.c:718 [inline]
__x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:718
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x4467c9 Code: e8 0c
e8 ff ff 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6
48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f
83 5b 07 fc ff c3 66 2e 0f 1f 84 00 00 00 00 RSP: 002b:00007fdbea222d98
EFLAGS: 00000246 ORIG_RAX: 0000000000000010 RAX: ffffffffffffffda RBX:
00000000006dbc58 RCX: 00000000004467c9 RDX: 0000000020000340 RSI:
0000000000008914 RDI: 0000000000000003 RBP: 00000000006dbc50 R08:
00007fdbea223700 R09: 0000000000000000 R10: 00007fdbea223700 R11:
0000000000000246 R12: 00000000006dbc5c R13: 6000030030626669 R14:
0000000000000000 R15: 0000000030626669
Allocated by task 7843:
save_stack+0x45/0xd0 mm/kasan/common.c:73
set_track mm/kasan/common.c:85 [inline]
__kasan_kmalloc mm/kasan/common.c:495 [inline]
__kasan_kmalloc.constprop.0+0xcf/0xe0 mm/kasan/common.c:468
kasan_kmalloc+0x9/0x10 mm/kasan/common.c:509
kmem_cache_alloc_trace+0x151/0x760 mm/slab.c:3615
kmalloc include/linux/slab.h:545 [inline]
x25_link_device_up+0x46/0x3f0 net/x25/x25_link.c:249
x25_device_event+0x116/0x2b0 net/x25/af_x25.c:242
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:1739
call_netdevice_notifiers_extack net/core/dev.c:1751 [inline]
call_netdevice_notifiers net/core/dev.c:1765 [inline]
__dev_notify_flags+0x121/0x2c0 net/core/dev.c:7605
dev_change_flags+0x10d/0x170 net/core/dev.c:7643
dev_ifsioc+0x2b0/0x940 net/core/dev_ioctl.c:237
dev_ioctl+0x1b8/0xc70 net/core/dev_ioctl.c:488
sock_do_ioctl+0x1bd/0x300 net/socket.c:995
sock_ioctl+0x32b/0x610 net/socket.c:1096
vfs_ioctl fs/ioctl.c:46 [inline]
file_ioctl fs/ioctl.c:509 [inline]
do_vfs_ioctl+0xd6e/0x1390 fs/ioctl.c:696
ksys_ioctl+0xab/0xd0 fs/ioctl.c:713
__do_sys_ioctl fs/ioctl.c:720 [inline]
__se_sys_ioctl fs/ioctl.c:718 [inline]
__x64_sys_ioctl+0x73/0xb0 fs/ioctl.c:718
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
Freed by task 7865:
save_stack+0x45/0xd0 mm/kasan/common.c:73
set_track mm/kasan/common.c:85 [inline]
__kasan_slab_free+0x102/0x150 mm/kasan/common.c:457
kasan_slab_free+0xe/0x10 mm/kasan/common.c:465
__cache_free mm/slab.c:3494 [inline]
kfree+0xcf/0x230 mm/slab.c:3811
x25_neigh_put include/net/x25.h:253 [inline]
x25_connect+0x8d8/0xde0 net/x25/af_x25.c:824
__sys_connect+0x266/0x330 net/socket.c:1685
__do_sys_connect net/socket.c:1696 [inline]
__se_sys_connect net/socket.c:1693 [inline]
__x64_sys_connect+0x73/0xb0 net/socket.c:1693
do_syscall_64+0x103/0x610 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
The buggy address belongs to the object at ffff8880a030edc0
which belongs to the cache kmalloc-256 of size 256 The buggy address is
located 16 bytes inside of
256-byte region [ffff8880a030edc0, ffff8880a030eec0) The buggy address
belongs to the page: page:ffffea000280c380 count:1 mapcount:0
mapping:ffff88812c3f07c0 index:0x0 flags: 0x1fffc0000000200(slab) raw:
01fffc0000000200 ffffea0002806788 ffffea00027f0188 ffff88812c3f07c0 raw:
0000000000000000 ffff8880a030e000 000000010000000c 0000000000000000 page
dumped because: kasan: bad access detected
Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by:
syzbot+04babcefcd396fabec37@syzkaller.appspotmail.com Cc: andrew hendry
<andrew.hendry@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/x25/af_x25.c (diff)
Commit a6e37802e050cebc721dcacbffd1194b692a5340 by gregkh
net/x25: reset state in x25_connect()
[ Upstream commit ee74d0bd4325efb41e38affe5955f920ed973f23 ]
In case x25_connect() fails and frees the socket neighbour, we also need
to undo the change done to x25->state.
Before my last bug fix, we had use-after-free so this patch fixes a
latent bug.
syzbot report :
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: 1 PID: 16137 Comm: syz-executor.1 Not tainted
5.0.0+ #117 Hardware name: Google Google Compute Engine/Google Compute
Engine, BIOS Google 01/01/2011 RIP: 0010:x25_write_internal+0x1e8/0xdf0
net/x25/x25_subr.c:173 Code: 00 40 88 b5 e0 fe ff ff 0f 85 01 0b 00 00
48 8b 8b 80 04 00 00 48 ba 00 00 00 00 00 fc ff df 48 8d 79 1c 48 89 fe
48 c1 ee 03 <0f> b6 34 16 48 89 fa 83 e2 07 83 c2 03 40 38 f2 7c 09 40
84 f6 0f RSP: 0018:ffff888076717a08 EFLAGS: 00010207 RAX:
ffff88805f2f2292 RBX: ffff8880a0ae6000 RCX: 0000000000000000 kobject:
'loop5' (0000000018d0d0ee): kobject_uevent_env RDX: dffffc0000000000
RSI: 0000000000000003 RDI: 000000000000001c RBP: ffff888076717b40 R08:
ffff8880950e0580 R09: ffffed100be5e46d R10: ffffed100be5e46c R11:
ffff88805f2f2363 R12: ffff888065579840 kobject: 'loop5'
(0000000018d0d0ee): fill_kobj_path: path =
'/devices/virtual/block/loop5' R13: 1ffff1100ece2f47 R14:
0000000000000013 R15: 0000000000000013 FS:  00007fb88cf43700(0000)
GS:ffff8880ae900000(0000) knlGS:0000000000000000 CS:  0010 DS: 0000 ES:
0000 CR0: 0000000080050033 CR2: 00007f9a42a41028 CR3: 0000000087a67000
CR4: 00000000001406e0 DR0: 0000000000000000 DR1: 0000000000000000 DR2:
0000000000000000 DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7:
0000000000000400 Call Trace:
x25_release+0xd0/0x340 net/x25/af_x25.c:658
__sock_release+0xd3/0x2b0 net/socket.c:579
sock_close+0x1b/0x30 net/socket.c:1162
__fput+0x2df/0x8d0 fs/file_table.c:278
____fput+0x16/0x20 fs/file_table.c:309
task_work_run+0x14a/0x1c0 kernel/task_work.c:113
get_signal+0x1961/0x1d50 kernel/signal.c:2388
do_signal+0x87/0x1940 arch/x86/kernel/signal.c:816
exit_to_usermode_loop+0x244/0x2c0 arch/x86/entry/common.c:162
prepare_exit_to_usermode arch/x86/entry/common.c:197 [inline]
syscall_return_slowpath arch/x86/entry/common.c:268 [inline]
do_syscall_64+0x52d/0x610 arch/x86/entry/common.c:293
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x457f29 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:00007fb88cf42c78
EFLAGS: 00000246 ORIG_RAX: 000000000000002a RAX: fffffffffffffe00 RBX:
0000000000000003 RCX: 0000000000457f29 RDX: 0000000000000012 RSI:
0000000020000080 RDI: 0000000000000004 RBP: 000000000073bf00 R08:
0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11:
0000000000000246 R12: 00007fb88cf436d4 R13: 00000000004be462 R14:
00000000004cec98 R15: 00000000ffffffff Modules linked in:
Fixes: 95d6ebd53c79 ("net/x25: fix use-after-free in
x25_device_event()") Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: andrew hendry <andrew.hendry@gmail.com> Reported-by: syzbot
<syzkaller@googlegroups.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/x25/af_x25.c (diff)
Commit 41b802e6f2a8ce02cedf6264041c6509a2ec509a by gregkh
pptp: dst_release sk_dst_cache in pptp_sock_destruct
[ Upstream commit 9417d81f4f8adfe20a12dd1fadf73a618cbd945d ]
sk_setup_caps() is called to set sk->sk_dst_cache in pptp_connect, so we
have to dst_release(sk->sk_dst_cache) in pptp_sock_destruct, otherwise,
the dst refcnt will leak.
It can be reproduced by this syz log:
  r1 = socket$pptp(0x18, 0x1, 0x2)
bind$pptp(r1, &(0x7f0000000100)={0x18, 0x2, {0x0, @local}}, 0x1e)
connect$pptp(r1, &(0x7f0000000000)={0x18, 0x2, {0x3, @remote}}, 0x1e)
Consecutive dmesg warnings will occur:
  unregister_netdevice: waiting for lo to become free. Usage count = 1
v1->v2:
- use rcu_dereference_protected() instead of rcu_dereference_check(),
   as suggested by Eric.
Fixes: 00959ade36ac ("PPTP: PPP over IPv4 (Point-to-Point Tunneling
Protocol)") Reported-by: Xiumei Mu <xmu@redhat.com> Signed-off-by: Xin
Long <lucien.xin@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ppp/pptp.c (diff)
Commit cfa5b557d9d04fe5273f9d3e0559be9851f2d87b by gregkh
ravb: Decrease TxFIFO depth of Q3 and Q2 to one
[ Upstream commit ae9819e339b451da7a86ab6fe38ecfcb6814e78a ]
Hardware has the CBS (Credit Based Shaper) which affects only Q3 and Q2.
When updating the CBS settings, even if the driver does so after waiting
for Tx DMA finished, there is a possibility that frame data still
remains in TxFIFO.
To avoid this, decrease TxFIFO depth of Q3 and Q2 to one.
This patch has been exercised this using netperf TCP_MAERTS, TCP_STREAM
and UDP_STREAM tests run on an Ebisu board. No performance change was
detected, outside of noise in the tests, both in terms of throughput and
CPU utilisation.
Fixes: c156633f1353 ("Renesas Ethernet AVB driver proper")
Signed-off-by: Masaru Nagai <masaru.nagai.vx@renesas.com> Signed-off-by:
Kazuya Mizuguchi <kazuya.mizuguchi.ks@renesas.com>
[simon: updated changelog] Signed-off-by: Simon Horman
<horms+renesas@verge.net.au> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/renesas/ravb_main.c (diff)
Commit ed98b01c052356e0b6cd3f49d039babab8dfd3ff by gregkh
route: set the deleted fnhe fnhe_daddr to 0 in ip_del_fnhe to fix a race
[ Upstream commit ee60ad219f5c7c4fb2f047f88037770063ef785f ]
The race occurs in __mkroute_output() when 2 threads lookup a dst:
  CPU A                 CPU B
find_exception()
                       find_exception() [fnhe expires]
                       ip_del_fnhe() [fnhe is deleted]
rt_bind_exception()
In rt_bind_exception() it will bind a deleted fnhe with the new dst, and
this dst will get no chance to be freed. It causes a dev defcnt leak and
consecutive dmesg warnings:
  unregister_netdevice: waiting for ethX to become free. Usage count = 1
Especially thanks Jon to identify the issue.
This patch fixes it by setting fnhe_daddr to 0 in ip_del_fnhe() to stop
binding the deleted fnhe with a new dst when checking fnhe's fnhe_daddr
and daddr in rt_bind_exception().
It works as both ip_del_fnhe() and rt_bind_exception() are protected by
fnhe_lock and the fhne is freed by kfree_rcu().
Fixes: deed49df7390 ("route: check and remove route cache when we get
route") Signed-off-by: Jon Maxwell <jmaxwell37@gmail.com> Signed-off-by:
Xin Long <lucien.xin@gmail.com> Reviewed-by: David Ahern
<dsahern@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/ipv4/route.c (diff)
Commit 3aca89318497007525ca44f10d0ffe20a438e153 by gregkh
rxrpc: Fix client call queueing, waiting for channel
[ Upstream commit 69ffaebb90369ce08657b5aea4896777b9d6e8fc ]
rxrpc_get_client_conn() adds a new call to the front of the
waiting_calls queue if the connection it's going to use already exists.
This is bad as it allows calls to get starved out.
Fix this by adding to the tail instead.
Also change the other enqueue point in the same function to put it on
the front (ie. when we have a new connection).  This makes the point
that in the case of a new connection the new call goes at the front
(though it doesn't actually matter since the queue should be
unoccupied).
Fixes: 45025bceef17 ("rxrpc: Improve management and caching of client
connection objects") Signed-off-by: David Howells <dhowells@redhat.com>
Reviewed-by: Marc Dionne <marc.dionne@auristor.com> Signed-off-by: David
S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/rxrpc/conn_client.c (diff)
Commit 05ad31a85e96bba6c2725f41f91f910d6a4ec21e by gregkh
sctp: remove sched init from sctp_stream_init
[ Upstream commit 2e990dfd13974d9eae493006f42ffb48707970ef ]
syzbot reported a NULL-ptr deref caused by that sched->init() in
sctp_stream_init() set stream->rr_next = NULL.
  kasan: GPF could be caused by NULL-ptr deref or user memory access
RIP: 0010:sctp_sched_rr_dequeue+0xd3/0x170
net/sctp/stream_sched_rr.c:141
Call Trace:
   sctp_outq_dequeue_data net/sctp/outqueue.c:90 [inline]
   sctp_outq_flush_data net/sctp/outqueue.c:1079 [inline]
   sctp_outq_flush+0xba2/0x2790 net/sctp/outqueue.c:1205
All sched info is saved in sout->ext now, in sctp_stream_init()
sctp_stream_alloc_out() will not change it, there's no need to call
sched->init() again, since sctp_outq_init() has already done it.
Fixes: 5bbbbe32a431 ("sctp: introduce stream scheduler foundations")
Reported-by: syzbot+4c9934f20522c0efd657@syzkaller.appspotmail.com
Signed-off-by: Xin Long <lucien.xin@gmail.com> Acked-by: Neil Horman
<nhorman@tuxdriver.com> Acked-by: Marcelo Ricardo Leitner
<marcelo.leitner@gmail.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sctp/stream.c (diff)
Commit 75c9b039f9bdf59f4fd74b1cf3db7321497653fa by gregkh
tcp: do not report TCP_CM_INQ of 0 for closed connections
[ Upstream commit 6466e715651f9f358e60c5ea4880e4731325827f ]
Returning 0 as inq to userspace indicates there is no more data to read,
and the application needs to wait for EPOLLIN. For a connection that has
received FIN from the remote peer, however, the application must
continue reading until getting EOF (return value of 0 from tcp_recvmsg)
or an error, if edge-triggered epoll (EPOLLET) is being used. Otherwise,
the application will never receive a new EPOLLIN, since there is no
epoll edge after the FIN.
Return 1 when there is no data left on the queue but the connection has
received FIN, so that the applications continue reading.
Fixes: b75eba76d3d72 (tcp: send in-queue bytes in cmsg upon read)
Signed-off-by: Soheil Hassas Yeganeh <soheil@google.com> Acked-by: Neal
Cardwell <ncardwell@google.com> Signed-off-by: Eric Dumazet
<edumazet@google.com> Acked-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/ipv4/tcp.c (diff)
Commit dfcf44d29a7f4d0a3c177dffa4be0a05205ad1fa by gregkh
tcp: Don't access TCP_SKB_CB before initializing it
[ Upstream commit f2feaefdabb0a6253aa020f65e7388f07a9ed47c ]
Since commit eeea10b83a13 ("tcp: add
tcp_v4_fill_cb()/tcp_v4_restore_cb()"), tcp_vX_fill_cb is only called
after tcp_filter(). That means, TCP_SKB_CB(skb)->end_seq still points to
the IP-part of the cb.
We thus should not mock with it, as this can trigger bugs (thanks
syzkaller):
[   12.349396]
==================================================================
[   12.350188] BUG: KASAN: slab-out-of-bounds in
ip6_datagram_recv_specific_ctl+0x19b3/0x1a20
[   12.351035] Read of size 1 at addr ffff88006adbc208 by task
test_ip6_datagr/1799
Setting end_seq is actually no more necessary in tcp_filter as it gets
initialized later on in tcp_vX_fill_cb.
Cc: Eric Dumazet <edumazet@google.com> Fixes: eeea10b83a13 ("tcp: add
tcp_v4_fill_cb()/tcp_v4_restore_cb()") Signed-off-by: Christoph Paasch
<cpaasch@apple.com> Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiednet/ipv4/tcp_ipv4.c (diff)
Commit 3460bb198560a0dd809544b638114f5418ae3dee by gregkh
tcp: handle inet_csk_reqsk_queue_add() failures
[  Upstream commit 9d3e1368bb45893a75a5dfb7cd21fdebfa6b47af ]
Commit 7716682cc58e ("tcp/dccp: fix another race at listener dismantle")
let inet_csk_reqsk_queue_add() fail, and adjusted
{tcp,dccp}_check_req() accordingly. However, TFO and syncookies weren't
modified, thus leaking allocated resources on error.
Contrary to tcp_check_req(), in both syncookies and TFO cases, we need
to drop the request socket. Also, since the child socket is created with
inet_csk_clone_lock(), we have to unlock it and drop an extra reference
(->sk_refcount is initially set to 2 and inet_csk_reqsk_queue_add()
drops only one ref).
For TFO, we also need to revert the work done by tcp_try_fastopen()
(with reqsk_fastopen_remove()).
Fixes: 7716682cc58e ("tcp/dccp: fix another race at listener dismantle")
Signed-off-by: Guillaume Nault <gnault@redhat.com> Signed-off-by: Eric
Dumazet <edumazet@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/ipv4/syncookies.c (diff)
The file was modifiednet/ipv4/tcp_input.c (diff)
Commit 854b83c7493cb92cdce6d78368b97f4290962e39 by gregkh
vxlan: Fix GRO cells race condition between receive and link delete
[ Upstream commit ad6c9986bcb627c7c22b8f9e9a934becc27df87c ]
If we receive a packet while deleting a VXLAN device, there's a chance
vxlan_rcv() is called at the same time as vxlan_dellink(). This is fine,
except that vxlan_dellink() should never ever touch stuff that's still
in use, such as the GRO cells list.
Otherwise, vxlan_rcv() crashes while queueing packets via
gro_cells_receive().
Move the gro_cells_destroy() to vxlan_uninit(), which runs after the RCU
grace period is elapsed and nothing needs the gro_cells anymore.
This is now done in the same way as commit 8e816df87997 ("geneve: Use
GRO cells infrastructure.") originally implemented for GENEVE.
Reported-by: Jianlin Shi <jishi@redhat.com> Fixes: 58ce31cca1ff ("vxlan:
GRO support at tunnel layer") Signed-off-by: Stefano Brivio
<sbrivio@redhat.com> Reviewed-by: Sabrina Dubroca <sd@queasysnail.net>
Reviewed-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S.
Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/vxlan.c (diff)
Commit 11e457c165d0e695384e96d12965bce198e6c617 by gregkh
vxlan: test dev->flags & IFF_UP before calling gro_cells_receive()
[ Upstream commit 59cbf56fcd98ba2a715b6e97c4e43f773f956393 ]
Same reasons than the ones explained in commit 4179cb5a4c92
("vxlan: test dev->flags & IFF_UP before calling netif_rx()")
netif_rx() or gro_cells_receive() must be called under a strict
contract.
At device dismantle phase, core networking clears IFF_UP and
flush_all_backlogs() is called after rcu grace period to make sure no
incoming packet might be in a cpu backlog and still referencing the
device.
A similar protocol is used for gro_cells infrastructure, as
gro_cells_destroy() will be called only after a full rcu grace period is
observed after IFF_UP has been cleared.
Most drivers call netif_rx() from their interrupt handler, and since the
interrupts are disabled at device dismantle, netif_rx() does not have to
check dev->flags & IFF_UP
Virtual drivers do not have this guarantee, and must therefore make the
check themselves.
Otherwise we risk use-after-free and/or crashes.
Fixes: d342894c5d2f ("vxlan: virtual extensible lan") Signed-off-by:
Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/vxlan.c (diff)
Commit f1ac81bb23a4ca59c25ed37668664d287885d0ac by gregkh
net/mlx4_core: Fix reset flow when in command polling mode
[ Upstream commit e15ce4b8d11227007577e6dc1364d288b8874fbe ]
As part of unloading a device, the driver switches from FW command event
mode to FW command polling mode.
Part of switching over to polling mode is freeing the command context
array memory (unfortunately, currently, without NULLing the command
context array pointer).
The reset flow calls "complete" to complete all outstanding fw commands
(if we are in event mode). The check for event vs. polling mode here is
to test if the command context array pointer is NULL.
If the reset flow is activated after the switch to polling mode, it will
attempt (incorrectly) to complete all the commands in the context array
-- because the pointer was not NULLed when the driver switched over to
polling mode.
As a result, we have a use-after-free situation, which results in a
kernel crash.
For example: BUG: unable to handle kernel NULL pointer dereference at  
       (null) IP: [<ffffffff876c4a8e>] __wake_up_common+0x2e/0x90 PGD 0
Oops: 0000 [#1] SMP Modules linked in: netconsole nfsv3 nfs_acl nfs
lockd grace ... CPU: 2 PID: 940 Comm: kworker/2:3 Kdump: loaded Not
tainted 3.10.0-862.el7.x86_64 #1 Hardware name: Microsoft Corporation
Virtual Machine/Virtual Machine, BIOS 090006  04/28/2016 Workqueue:
events hv_eject_device_work [pci_hyperv] task: ffff8d1734ca0fd0 ti:
ffff8d17354bc000 task.ti: ffff8d17354bc000 RIP:
0010:[<ffffffff876c4a8e>]  [<ffffffff876c4a8e>]
__wake_up_common+0x2e/0x90 RSP: 0018:ffff8d17354bfa38  EFLAGS: 00010082
RAX: 0000000000000000 RBX: ffff8d17362d42c8 RCX: 0000000000000000 RDX:
0000000000000001 RSI: 0000000000000003 RDI: ffff8d17362d42c8 RBP:
ffff8d17354bfa70 R08: 0000000000000000 R09: 0000000000000000 R10:
0000000000000298 R11: ffff8d173610e000 R12: ffff8d17362d42d0 R13:
0000000000000246 R14: 0000000000000000 R15: 0000000000000003 FS:
0000000000000000(0000) GS:ffff8d1802680000(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 0000000000000000
CR3: 00000000f16d8000 CR4: 00000000001406e0 Call Trace:
[<ffffffff876c7adc>] complete+0x3c/0x50
[<ffffffffc04242f0>] mlx4_cmd_wake_completions+0x70/0x90 [mlx4_core]
[<ffffffffc041e7b1>] mlx4_enter_error_state+0xe1/0x380 [mlx4_core]
[<ffffffffc041fa4b>] mlx4_comm_cmd+0x29b/0x360 [mlx4_core]
[<ffffffffc041ff51>] __mlx4_cmd+0x441/0x920 [mlx4_core]
[<ffffffff877f62b1>] ? __slab_free+0x81/0x2f0
[<ffffffff87951384>] ? __radix_tree_lookup+0x84/0xf0
[<ffffffffc043a8eb>] mlx4_free_mtt_range+0x5b/0xb0 [mlx4_core]
[<ffffffffc043a957>] mlx4_mtt_cleanup+0x17/0x20 [mlx4_core]
[<ffffffffc04272c7>] mlx4_free_eq+0xa7/0x1c0 [mlx4_core]
[<ffffffffc042803e>] mlx4_cleanup_eq_table+0xde/0x130 [mlx4_core]
[<ffffffffc0433e08>] mlx4_unload_one+0x118/0x300 [mlx4_core]
[<ffffffffc0434191>] mlx4_remove_one+0x91/0x1f0 [mlx4_core]
The fix is to set the command context array pointer to NULL after
freeing the array.
Fixes: f5aef5aa3506 ("net/mlx4_core: Activate reset flow upon fatal
command cases") Signed-off-by: Jack Morgenstein
<jackm@dev.mellanox.co.il> Signed-off-by: Tariq Toukan
<tariqt@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx4/cmd.c (diff)
Commit 979785bea346a9895576fe0ef1655d72c41c7305 by gregkh
net/mlx4_core: Fix locking in SRIOV mode when switching between events
and polling
[ Upstream commit c07d27927f2f2e96fcd27bb9fb330c9ea65612d0 ]
In procedures mlx4_cmd_use_events() and mlx4_cmd_use_polling(), we need
to guarantee that there are no FW commands in progress on the comm
channel
(for VFs) or wrapped FW commands (on the PF) when SRIOV is active.
We do this by also taking the slave_cmd_mutex when SRIOV is active.
This is especially important when switching from event to polling, since
we free the command-context array during the switch.  If there are FW
commands in progress (e.g., waiting for a completion event), the
completion event handler will access freed memory.
Since the decision to use comm_wait or comm_poll is taken before
grabbing the event_sem/poll_sem in mlx4_comm_cmd_wait/poll, we must take
the slave_cmd_mutex as well (to guarantee that the decision to use
events or polling and the call to the appropriate cmd function are
atomic).
Fixes: a7e1f04905e5 ("net/mlx4_core: Fix deadlock when switching between
polling and event fw commands") Signed-off-by: Jack Morgenstein
<jackm@dev.mellanox.co.il> Signed-off-by: Tariq Toukan
<tariqt@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx4/cmd.c (diff)
Commit 7e30fd0627dbc8c3a5417706ad0bfcbd1e2d2d32 by gregkh
net/mlx4_core: Fix qp mtt size calculation
[ Upstream commit 8511a653e9250ef36b95803c375a7be0e2edb628 ]
Calculation of qp mtt size (in function mlx4_RST2INIT_wrapper)
ultimately depends on function roundup_pow_of_two.
If the amount of memory required by the QP is less than one page,
roundup_pow_of_two is called with argument zero.  In this case, the
roundup_pow_of_two result is undefined.
Calling roundup_pow_of_two with a zero argument resulted in the
following stack trace:
UBSAN: Undefined behaviour in ./include/linux/log2.h:61:13 shift
exponent 64 is too large for 64-bit type 'long unsigned int' CPU: 4 PID:
26939 Comm: rping Tainted: G OE 4.19.0-rc1 Hardware name: Supermicro
X9DR3-F/X9DR3-F, BIOS 3.2a 07/09/2015 Call Trace: dump_stack+0x9a/0xeb
ubsan_epilogue+0x9/0x7c
__ubsan_handle_shift_out_of_bounds+0x254/0x29d
? __ubsan_handle_load_invalid_value+0x180/0x180
? debug_show_all_locks+0x310/0x310
? sched_clock+0x5/0x10
? sched_clock+0x5/0x10
? sched_clock_cpu+0x18/0x260
? find_held_lock+0x35/0x1e0
? mlx4_RST2INIT_QP_wrapper+0xfb1/0x1440 [mlx4_core]
mlx4_RST2INIT_QP_wrapper+0xfb1/0x1440 [mlx4_core]
Fix this by explicitly testing for zero, and returning one if the
argument is zero (assuming that the next higher power of 2 in this case
should be one).
Fixes: c82e9aa0a8bc ("mlx4_core: resource tracking for HCA resources
used by guests") Signed-off-by: Jack Morgenstein
<jackm@dev.mellanox.co.il> Signed-off-by: Tariq Toukan
<tariqt@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx4/resource_tracker.c (diff)
Commit b31539bd3595837a2618c286c56de818c28972bf by gregkh
net: dsa: mv88e6xxx: Set correct interface mode for CPU/DSA ports
[ Upstream commit 7cbbee050c959f41b512599bafd99685f419ce26 ]
By default, the switch driver is expected to configure CPU and DSA ports
to their maximum speed. For the 6341 and 6390 families, the ports
interface mode has to be configured as well. The 6390X range support 10G
ports using XAUI, while the 6341 and 6390 supports 2500BaseX, as their
maximum speed.
Fixes: 787799a9d555 ("net: dsa: mv88e6xxx: Default ports 9/10 6390X
CMODE to 1000BaseX") Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/mv88e6xxx/port.h (diff)
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.c (diff)
The file was modifieddrivers/net/dsa/mv88e6xxx/port.c (diff)
The file was modifieddrivers/net/dsa/mv88e6xxx/chip.h (diff)
Commit c7bc9d62033a5e5df2ac0c69145332ca4d5653e0 by gregkh
net: hns3: fix to stop multiple HNS reset due to the AER changes
[ Upstream commit 69b51bbb03f73e04c486f79d1556b2d9becf4dbc ]
The commit bfcb79fca19d
("PCI/ERR: Run error recovery callbacks for all affected devices")
affected the non-fatal error recovery logic for the HNS and RDMA
devices. This is because each HNS PF under PCIe bus receive callbacks
from the AER driver when an error is reported for one of the PF. This
causes unwanted PF resets because the HNS decides which PF to reset
based on the reset type set. The HNS error handling code sets the reset
type based on the hw error type detected.
This patch provides fix for the above issue for the recovery of the hw
errors in the HNS and RDMA devices.
This patch needs backporting to the kernel v5.0+
Fixes: 332fbf576579 ("net: hns3: add handling of hw ras errors using new
set of commands") Reported-by: Xiaofei Tan <tanxiaofei@huawei.com>
Signed-off-by: Shiju Jose <shiju.jose@huawei.com> Signed-off-by:
Huazhong Tan <tanhuazhong@huawei.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/hisilicon/hns3/hns3_enet.c (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_err.c (diff)
The file was modifieddrivers/net/ethernet/hisilicon/hns3/hnae3.h (diff)
Commit 882e7866ad283b135d0434905551aba1ea93e7d7 by gregkh
vsock/virtio: fix kernel panic from virtio_transport_reset_no_sock
[ Upstream commit 4c404ce23358d5d8fbdeb7a6021a9b33d3c3c167 ]
Previous to commit 22b5c0b63f32 ("vsock/virtio: fix kernel panic after
device hot-unplug"), vsock_core_init() was called from
virtio_vsock_probe(). Now, virtio_transport_reset_no_sock() can be
called before vsock_core_init() has the chance to run.
[Wed Feb 27 14:17:09 2019] BUG: unable to handle kernel NULL pointer
dereference at 0000000000000110
[Wed Feb 27 14:17:09 2019] #PF error: [normal kernel read fault]
[Wed Feb 27 14:17:09 2019] PGD 0 P4D 0
[Wed Feb 27 14:17:09 2019] Oops: 0000 [#1] SMP PTI
[Wed Feb 27 14:17:09 2019] CPU: 3 PID: 59 Comm: kworker/3:1 Not tainted
5.0.0-rc7-390-generic-hvi #390
[Wed Feb 27 14:17:09 2019] Hardware name: QEMU Standard PC (i440FX +
PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
[Wed Feb 27 14:17:09 2019] Workqueue: virtio_vsock
virtio_transport_rx_work [vmw_vsock_virtio_transport]
[Wed Feb 27 14:17:09 2019] RIP:
0010:virtio_transport_reset_no_sock+0x8c/0xc0
[vmw_vsock_virtio_transport_common]
[Wed Feb 27 14:17:09 2019] Code: 35 8b 4f 14 48 8b 57 08 31 f6 44 8b 4f
10 44 8b 07 48 8d 7d c8 e8 84 f8 ff ff 48 85 c0 48 89 c3 74 2a e8 f7 31
03 00 48 89 df <48> 8b 80 10 01 00 00 e8 68 fb 69 ed 48 8b 75 f0 65 48
33 34 25 28
[Wed Feb 27 14:17:09 2019] RSP: 0018:ffffb42701ab7d40 EFLAGS: 00010282
[Wed Feb 27 14:17:09 2019] RAX: 0000000000000000 RBX: ffff9d79637ee080
RCX: 0000000000000003
[Wed Feb 27 14:17:09 2019] RDX: 0000000000000001 RSI: 0000000000000002
RDI: ffff9d79637ee080
[Wed Feb 27 14:17:09 2019] RBP: ffffb42701ab7d78 R08: ffff9d796fae70e0
R09: ffff9d796f403500
[Wed Feb 27 14:17:09 2019] R10: ffffb42701ab7d90 R11: 0000000000000000
R12: ffff9d7969d09240
[Wed Feb 27 14:17:09 2019] R13: ffff9d79624e6840 R14: ffff9d7969d09318
R15: ffff9d796d48ff80
[Wed Feb 27 14:17:09 2019] FS:  0000000000000000(0000)
GS:ffff9d796fac0000(0000) knlGS:0000000000000000
[Wed Feb 27 14:17:09 2019] CS:  0010 DS: 0000 ES: 0000 CR0:
0000000080050033
[Wed Feb 27 14:17:09 2019] CR2: 0000000000000110 CR3: 0000000427f22000
CR4: 00000000000006e0
[Wed Feb 27 14:17:09 2019] DR0: 0000000000000000 DR1: 0000000000000000
DR2: 0000000000000000
[Wed Feb 27 14:17:09 2019] DR3: 0000000000000000 DR6: 00000000fffe0ff0
DR7: 0000000000000400
[Wed Feb 27 14:17:09 2019] Call Trace:
[Wed Feb 27 14:17:09 2019]  virtio_transport_recv_pkt+0x63/0x820
[vmw_vsock_virtio_transport_common]
[Wed Feb 27 14:17:09 2019]  ? kfree+0x17e/0x190
[Wed Feb 27 14:17:09 2019]  ? detach_buf_split+0x145/0x160
[Wed Feb 27 14:17:09 2019]  ? __switch_to_asm+0x40/0x70
[Wed Feb 27 14:17:09 2019]  virtio_transport_rx_work+0xa0/0x106
[vmw_vsock_virtio_transport]
[Wed Feb 27 14:17:09 2019] NET: Registered protocol family 40
[Wed Feb 27 14:17:09 2019]  process_one_work+0x167/0x410
[Wed Feb 27 14:17:09 2019]  worker_thread+0x4d/0x460
[Wed Feb 27 14:17:09 2019]  kthread+0x105/0x140
[Wed Feb 27 14:17:09 2019]  ? rescuer_thread+0x360/0x360
[Wed Feb 27 14:17:09 2019]  ? kthread_destroy_worker+0x50/0x50
[Wed Feb 27 14:17:09 2019]  ret_from_fork+0x35/0x40
[Wed Feb 27 14:17:09 2019] Modules linked in: vmw_vsock_virtio_transport
vmw_vsock_virtio_transport_common input_leds vsock serio_raw i2c_piix4
mac_hid qemu_fw_cfg autofs4 cirrus ttm drm_kms_helper syscopyarea
sysfillrect sysimgblt fb_sys_fops virtio_net psmouse drm net_failover
pata_acpi virtio_blk failover floppy
Fixes: 22b5c0b63f32 ("vsock/virtio: fix kernel panic after device
hot-unplug") Reported-by: Alexandru Herghelegiu
<aherghelegiu@bitdefender.com> Signed-off-by: Adalbert Lazăr
<alazar@bitdefender.com> Co-developed-by: Stefan Hajnoczi
<stefanha@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/vmw_vsock/virtio_transport_common.c (diff)
Commit 15c5945f83c1b167d3f10ca42b27c0f54039f760 by gregkh
net: sched: flower: insert new filter to idr after setting its mask
[ Upstream commit ecb3dea400d3beaf611ce76ac7a51d4230492cf2 ]
When adding new filter to flower classifier, fl_change() inserts it to
handle_idr before initializing filter extensions and assigning it a
mask. Normally this ordering doesn't matter because all flower
classifier ops callbacks assume rtnl lock protection. However, when
filter has an action that doesn't have its kernel module loaded, rtnl
lock is released before call to request_module(). During this time the
filter can be accessed bu concurrent task before its initialization is
completed, which can lead to a crash.
Example case of NULL pointer dereference in concurrent dump:
Task 1                           Task 2
tc_new_tfilter()
fl_change()
idr_alloc_u32(fnew)
fl_set_parms()
  tcf_exts_validate()
   tcf_action_init()
    tcf_action_init_1()
     rtnl_unlock()
     request_module()
     ...                        rtnl_lock()
     tc_dump_tfilter()
       tcf_chain_dump()
   fl_walk()
    idr_get_next_ul()
    tcf_node_dump()
     tcf_fill_node()
      fl_dump()
       mask = &f->mask->key; <- NULL ptr
     rtnl_lock()
Extension initialization and mask assignment don't depend on
fnew->handle that is allocated by idr_alloc_u32(). Move idr allocation
code after action creation and mask assignment in fl_change() to prevent
concurrent access to not fully initialized filter when rtnl lock is
released to load action module.
Fixes: 01683a146999 ("net: sched: refactor flower walk to iterate over
idr") Signed-off-by: Vlad Buslov <vladbu@mellanox.com> Reviewed-by: Roi
Dayan <roid@mellanox.com> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sched/cls_flower.c (diff)
Commit 94f93c5900e3c98d11a3353cd93bee0a0daf2bdc by gregkh
f2fs: wait on atomic writes to count F2FS_CP_WB_DATA
commit 31867b23d7d1ee3535136c6a410a6cf56f666bfc upstream.
Otherwise, we can get wrong counts incurring checkpoint hang.
IO_W (CP:  -24, Data:   24, Flush: (   0    0    1), Discard: (   0  
0))
Thread A                        Thread B
- f2fs_write_data_pages
-  __write_data_page
- f2fs_submit_page_write
  - inc_page_count(F2FS_WB_DATA)
    type is F2FS_WB_DATA due to file is non-atomic one
- f2fs_ioc_start_atomic_write
- set_inode_flag(FI_ATOMIC_FILE)
                               - f2fs_write_end_io
                                - dec_page_count(F2FS_WB_CP_DATA)
                                  type is F2FS_WB_DATA due to file
becomes
                                  atomic one
Cc: <stable@vger.kernel.org> Reviewed-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/f2fs/file.c (diff)
Commit 9826a60a2acadf3b2de5f452c179a29a43c3f28a by gregkh
perf/x86: Fixup typo in stub functions
commit f764c58b7faa26f5714e6907f892abc2bc0de4f8 upstream.
Guenter reported a build warning for CONFIG_CPU_SUP_INTEL=n:
  > With allmodconfig-CONFIG_CPU_SUP_INTEL, this patch results in:
>
> In file included from arch/x86/events/amd/core.c:8:0:
> arch/x86/events/amd/../perf_event.h:1036:45: warning: ‘struct
cpu_hw_event’ declared inside parameter list will not be visible outside
of this definition or declaration
>  static inline int intel_cpuc_prepare(struct cpu_hw_event *cpuc, int
cpu)
While harmless (an unsed pointer is an unused pointer, no matter the
type) it needs fixing.
Reported-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Peter
Zijlstra (Intel) <peterz@infradead.org> Cc: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc:
stable@vger.kernel.org Fixes: d01b1f96a82e ("perf/x86/intel: Make cpuc
allocations consistent") Link:
http://lkml.kernel.org/r/20190315081410.GR5996@hirez.programming.kicks-ass.net
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/perf_event.h (diff)
Commit b072cb42f01eae65d2fafa33e0c9902b3d1d9fed by gregkh
ALSA: bebob: use more identical mod_alias for Saffire Pro 10 I/O against
Liquid Saffire 56
commit 7dc661bd8d3261053b69e4e2d0050cd1ee540fc1 upstream.
ALSA bebob driver has an entry for Focusrite Saffire Pro 10 I/O. The
entry matches vendor_id in root directory and model_id in unit directory
of configuration ROM for IEEE 1394 bus.
On the other hand, configuration ROM of Focusrite Liquid Saffire 56 has
the same vendor_id and model_id. This device is an application of TCAT
Dice (TCD2220 a.k.a Dice Jr.) however ALSA bebob driver can be bound to
it randomly instead of ALSA dice driver. At present, drivers in ALSA
firewire stack can not handle this situation appropriately.
This commit uses more identical mod_alias for Focusrite Saffire Pro 10
I/O in ALSA bebob driver.
$ python2 crpp < /sys/bus/firewire/devices/fw1/config_rom
              ROM header and bus information block
            
----------------------------------------------------------------- 400
042a829d  bus_info_length 4, crc_length 42, crc 33437 404  31333934
bus_name "1394" 408  f0649222  irmc 1, cmc 1, isc 1, bmc 1, pmc 0,
cyc_clk_acc 100,
              max_rec 9 (1024), max_rom 2, gen 2, spd 2 (S400) 40c
00130e01  company_id 00130e     | 410  000606e0  device_id 01000606e0  |
EUI-64 00130e01000606e0
               root directory
            
----------------------------------------------------------------- 414
0009d31c  directory_length 9, crc 54044 418  04000014  hardware version
41c  0c0083c0  node capabilities per IEEE 1394 420  0300130e  vendor 424
81000012  --> descriptor leaf at 46c 428  17000006  model 42c  81000016
--> descriptor leaf at 484 430  130120c2  version 434  d1000002  -->
unit directory at 43c 438  d4000006  --> dependent info directory at 450
               unit directory at 43c
            
----------------------------------------------------------------- 43c
0004707c  directory_length 4, crc 28796 440  1200a02d  specifier id:
1394 TA 444  13010001  version: AV/C 448  17000006  model 44c  81000013
--> descriptor leaf at 498
               dependent info directory at 450
            
----------------------------------------------------------------- 450
000637c7  directory_length 6, crc 14279 454  120007f5  specifier id 458
13000001  version 45c  3affffc7  (immediate value) 460  3b100000
(immediate value) 464  3cffffc7  (immediate value) 468  3d600000
(immediate value)
               descriptor leaf at 46c
            
----------------------------------------------------------------- 46c
00056f3b  leaf_length 5, crc 28475 470  00000000  textual descriptor 474
00000000  minimal ASCII 478  466f6375  "Focu" 47c  73726974  "srit" 480
65000000  "e"
               descriptor leaf at 484
            
----------------------------------------------------------------- 484
0004a165  leaf_length 4, crc 41317 488  00000000  textual descriptor 48c
00000000  minimal ASCII 490  50726f31  "Pro1" 494  30494f00  "0IO"
               descriptor leaf at 498
            
----------------------------------------------------------------- 498
0004a165  leaf_length 4, crc 41317 49c  00000000  textual descriptor 4a0
00000000  minimal ASCII 4a4  50726f31  "Pro1" 4a8  30494f00  "0IO"
$ python2 crpp < /sys/bus/firewire/devices/fw1/config_rom
              ROM header and bus information block
            
----------------------------------------------------------------- 400
040442e4  bus_info_length 4, crc_length 4, crc 17124 404  31333934
bus_name "1394" 408  e0ff8112  irmc 1, cmc 1, isc 1, bmc 0, pmc 0,
cyc_clk_acc 255,
              max_rec 8 (512), max_rom 1, gen 1, spd 2 (S400) 40c
00130e04  company_id 00130e     | 410  018001e9  device_id 04018001e9  |
EUI-64 00130e04018001e9
               root directory
            
----------------------------------------------------------------- 414
00065612  directory_length 6, crc 22034 418  0300130e  vendor 41c
8100000a  --> descriptor leaf at 444 420  17000006  model 424  8100000e
--> descriptor leaf at 45c 428  0c0087c0  node capabilities per IEEE
1394 42c  d1000001  --> unit directory at 430
               unit directory at 430
            
----------------------------------------------------------------- 430
000418a0  directory_length 4, crc 6304 434  1200130e  specifier id 438
13000001  version 43c  17000006  model 440  8100000f  --> descriptor
leaf at 47c
               descriptor leaf at 444
            
----------------------------------------------------------------- 444
00056f3b  leaf_length 5, crc 28475 448  00000000  textual descriptor 44c
00000000  minimal ASCII 450  466f6375  "Focu" 454  73726974  "srit" 458
65000000  "e"
               descriptor leaf at 45c
            
----------------------------------------------------------------- 45c
000762c6  leaf_length 7, crc 25286 460  00000000  textual descriptor 464
00000000  minimal ASCII 468  4c495155  "LIQU" 46c  49445f53  "ID_S" 470
41464649  "AFFI" 474  52455f35  "RE_5" 478  36000000  "6"
               descriptor leaf at 47c
            
----------------------------------------------------------------- 47c
000762c6  leaf_length 7, crc 25286 480  00000000  textual descriptor 484
00000000  minimal ASCII 488  4c495155  "LIQU" 48c  49445f53  "ID_S" 490
41464649  "AFFI" 494  52455f35  "RE_5" 498  36000000  "6"
Cc: <stable@vger.kernel.org> # v3.16+ Fixes: 25784ec2d034 ("ALSA: bebob:
Add support for Focusrite Saffire/SaffirePro series") Signed-off-by:
Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai
<tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/firewire/bebob/bebob.c (diff)
Commit 69bf155eec9e19d3f724281c2349be8e54665460 by gregkh
ALSA: firewire-motu: fix construction of PCM frame for capture direction
commit f97a0944a72b26a2bece72516294e112a890f98a upstream.
In data blocks of common isochronous packet for MOTU devices, PCM frames
are multiplexed in a shape of '24 bit * 4 Audio Pack', described in IEC
61883-6. The frames are not aligned to quadlet.
For capture PCM substream, ALSA firewire-motu driver constructs PCM
frames by reading data blocks byte-by-byte. However this operation
includes bug for lower byte of the PCM sample. This brings invalid
content of the PCM samples.
This commit fixes the bug.
Reported-by: Peter Sjöberg <autopeter@gmail.com> Cc:
<stable@vger.kernel.org> # v4.12+ Fixes: 4641c9394010 ("ALSA:
firewire-motu: add MOTU specific protocol layer") Signed-off-by: Takashi
Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai
<tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/firewire/motu/amdtp-motu.c (diff)
Commit f36b6691acdd6687a0027d8c821a9a5be9160824 by gregkh
ALSA: hda: Extend i915 component bind timeout
commit cfc35f9c128cea8fce6a5513b1de50d36f3b209f upstream.
I set 10 seconds for the timeout of the i915 audio component binding
with a hope that recent machines are fast enough to handle all probe
tasks in that period, but I was too optimistic.  The binding may take
longer than that, and this caused a problem on the machine with both
audio and graphics driver modules loaded in parallel, as Paul Menzel
experienced.  This problem haven't hit so often just because the KMS
driver is loaded in initrd on most machines.
As a simple workaround, extend the timeout to 60 seconds.
Fixes: f9b54e1961c7 ("ALSA: hda/i915: Allow delayed i915 audio component
binding") Reported-by: Paul Menzel <pmenzel+alsa-devel@molgen.mpg.de>
Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/hda/hdac_i915.c (diff)
Commit 19fcfe5ad57c99f218c1fb515747f05e5976e2e6 by gregkh
ALSA: hda - add more quirks for HP Z2 G4 and HP Z240
commit 167897f4b32c2bc18b3b6183029a33fb420a114e upstream.
Apply the HP_MIC_NO_PRESENCE fixups for the more HP Z2 G4 and HP Z240
models.
Reported-by: Jeff Burrell <jeff.burrell@hp.com> Signed-off-by: Jaroslav
Kysela <perex@perex.cz> Cc: <stable@vger.kernel.org> Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
The file was modifiedsound/pci/hda/patch_conexant.c (diff)
Commit 6f63adaf88816b72f74b22aaa40d55fab993c572 by gregkh
ALSA: hda/realtek: Enable audio jacks of ASUS UX362FA with ALC294
commit 8bb37a2a4d7c02affef554f5dc05f6d2e39c31f9 upstream.
The ASUS UX362FA with ALC294 cannot detect the headset MIC and outputs
through the internal speaker and the headphone.  This issue can be fixed
by the quirk in the commit 4e0511067 ALSA: hda/realtek: Enable audio
jacks of ASUS UX533FD with ALC294.
Besides, ASUS UX362FA and UX533FD have the same audio initial pin config
values.  So, this patch replaces SND_PCI_QUIRK of UX533FD with a new
SND_HDA_PIN_QUIRK which benefits both UX362FA and UX533FD.
Fixes: 4e051106730d ("ALSA: hda/realtek: Enable audio jacks of ASUS
UX533FD with ALC294") Signed-off-by: Jian-Hong Pan
<jian-hong@endlessm.com> Signed-off-by: Ming Shuo Chiu
<chiu@endlessm.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi
Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 843a9a5b5675e72814a4e18cbce2ed7c2a077032 by gregkh
ALSA: hda/realtek - Reduce click noise on Dell Precision 5820 headphone
commit c0ca5eced22215c1e03e3ad479f8fab0bbb30772 upstream.
Dell Precision 5820 with ALC3234 codec (which is equivalent with ALC255)
shows click noises at (runtime) PM resume on the headphone. The biggest
source of the noise comes from the cleared headphone pin control at
resume, which is done via the standard shutup procedure.
Although we have an override of the standard shutup callback to replace
with NOP, this would skip other needed stuff (e.g. the pull down of
headset power).  So, instead, this "fixes" the behavior of
alc_fixup_no_shutup() by introducing spec->no_shutup_pins flag. When
this flag is set, Realtek codec won't call the standard
snd_hda_shutup_pins() & co.  Now alc_fixup_no_shutup() just sets this
flag instead of overriding spec->shutup callback itself.  This allows us
to apply the similar fix for other entries easily if needed in future.
Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit 291ad91aad03edf5483350a1997a468ce17010da by gregkh
ALSA: hda/realtek: Enable headset MIC of Acer TravelMate X514-51T with
ALC255
commit cbc05fd6708c1744ee6a61cb4c461ff956d30524 upstream.
The Acer TravelMate X514-51T with ALC255 cannot detect the headset MIC
until ALC255_FIXUP_ACER_HEADSET_MIC quirk applied.  Although, the
internal DMIC uses another module - snd_soc_skl as the driver.  We still
need the NID 0x1a in the quirk to enable the headset MIC.
Signed-off-by: Jian-Hong Pan <jian-hong@endlessm.com> Signed-off-by:
Kailang Yang <kailang@realtek.com> Cc: <stable@vger.kernel.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/patch_realtek.c (diff)
Commit c075798c05d913d20d53ca0eabd36f53f9c7328d by gregkh
perf/x86/intel: Fix memory corruption
commit ede271b059463731cbd6dffe55ffd70d7dbe8392 upstream.
Through:
  validate_event()
   x86_pmu.get_event_constraints(.idx=-1)
     tfa_get_event_constraints()
       dyn_constraint()
cpuc->constraint_list[-1] is used, which is an obvious out-of-bound
access.
In this case, simply skip the TFA constraint code, there is no event
constraint with just PMC3, therefore the code will never result in the
empty set.
Fixes: 400816f60c54 ("perf/x86/intel: Implement support for TSX Force
Abort") Reported-by: Tony Jones <tonyj@suse.com> Reported-by: "DSouza,
Nelson" <nelson.dsouza@intel.com> Signed-off-by: Peter Zijlstra (Intel)
<peterz@infradead.org> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Tested-by: Tony Jones <tonyj@suse.com> Tested-by:
"DSouza, Nelson" <nelson.dsouza@intel.com> Cc: eranian@google.com Cc:
jolsa@redhat.com Cc: stable@kernel.org Link:
https://lkml.kernel.org/r/20190314130705.441549378@infradead.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/intel/core.c (diff)
Commit 0912fa3dfceab294ebad311fbde7ac71dec56e15 by gregkh
perf/x86/intel: Make dev_attr_allow_tsx_force_abort static
commit c634dc6bdedeb0b2c750fc611612618a85639ab2 upstream.
Fixes: 400816f60c54 ("perf/x86/intel: Implement support for TSX Force
Abort") Signed-off-by: kbuild test robot <lkp@intel.com> Signed-off-by:
Thomas Gleixner <tglx@linutronix.de> Cc: "Peter Zijlstra (Intel)"
<peterz@infradead.org> Cc: kbuild-all@01.org Cc: Borislav Petkov
<bp@alien8.de> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Kan Liang
<kan.liang@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Andi
Kleen <ak@linux.intel.com> Cc: stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190313184243.GA10820@lkp-sb-ep06
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/intel/core.c (diff)
Commit a516031202041d880579fd26935e47a105bdeb89 by gregkh
It's wrong to add len to sector_nr in raid10 reshape twice
commit b761dcf1217760a42f7897c31dcb649f59b2333e upstream.
In reshape_request it already adds len to sector_nr already. It's wrong
to add len to sector_nr again after adding pages to bio. If there is bad
block it can't copy one chunk at a time, it needs to goto read_more. Now
the sector_nr is wrong. It can cause data corruption.
Cc: stable@vger.kernel.org # v3.16+ Signed-off-by: Xiao Ni
<xni@redhat.com> Signed-off-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/raid10.c (diff)
Commit 847c02bcb48a17a09b620bfc36b57195ae047cbf by gregkh
drm: Block fb changes for async plane updates
commit 25dc194b34dd5919dd07b8873ee338182e15df9d upstream.
The prepare_fb call always happens on new_plane_state.
The drm_atomic_helper_cleanup_planes checks to see if plane state
pointer has changed when deciding to call cleanup_fb on either the
new_plane_state or the old_plane_state.
For a non-async atomic commit the state pointer is swapped, so this
helper calls prepare_fb on the new_plane_state and cleanup_fb on the
old_plane_state. This makes sense, since we want to prepare the
framebuffer we are going to use and cleanup the the framebuffer we are
no longer using.
For the async atomic update helpers this differs. The async atomic
update helpers perform in-place updates on the existing state. They call
drm_atomic_helper_cleanup_planes but the state pointer is not swapped.
This means that prepare_fb is called on the new_plane_state and
cleanup_fb is called on the new_plane_state (not the old).
In the case where old_plane_state->fb == new_plane_state->fb then there
should be no behavioral difference between an async update and a
non-async commit. But there are issues that arise when
old_plane_state->fb != new_plane_state->fb.
The first is that the new_plane_state->fb is immediately cleaned up
after it has been prepared, so we're using a fb that we shouldn't be.
The second occurs during a sequence of async atomic updates and
non-async regular atomic commits. Suppose there are two framebuffers
being interleaved in a double-buffering scenario, fb1 and fb2:
- Async update, oldfb = NULL, newfb = fb1, prepare fb1, cleanup fb1
- Async update, oldfb = fb1, newfb = fb2, prepare fb2, cleanup fb2
- Non-async commit, oldfb = fb2, newfb = fb1, prepare fb1, cleanup fb2
We call cleanup_fb on fb2 twice in this example scenario, and any
further use will result in use-after-free.
The simple fix to this problem is to block framebuffer changes in the
drm_atomic_helper_async_check function for now.
v2: Move check by itself, add a FIXME (Daniel)
Cc: Daniel Vetter <daniel.vetter@ffwll.ch> Cc: Harry Wentland
<harry.wentland@amd.com> Cc: Andrey Grodzovsky
<andrey.grodzovsky@amd.com> Cc: <stable@vger.kernel.org> # v4.14+ Fixes:
fef9df8b5945 ("drm/atomic: initial support for asynchronous plane
update") Signed-off-by: Nicholas Kazlauskas
<nicholas.kazlauskas@amd.com> Acked-by: Andrey Grodzovsky
<andrey.grodzovsky@amd.com> Acked-by: Harry Wentland
<harry.wentland@amd.com> Reviewed-by: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Harry Wentland <harry.wentland@amd.com> Link:
https://patchwork.freedesktop.org/patch/275364/ Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/drm_atomic_helper.c (diff)
The file was modifiedMakefile (diff)
Commit 3cccba9a38d5119c48eebf60e1071b60c457591f by gregkh
9p: use inode->i_lock to protect i_size_write() under 32-bit
commit 5e3cc1ee1405a7eb3487ed24f786dec01b4cbe1f upstream.
Use inode->i_lock to protect i_size_write(), else i_size_read() in
generic_fillattr() may loop infinitely in read_seqcount_begin() when
multiple processes invoke v9fs_vfs_getattr() or v9fs_vfs_getattr_dotl()
simultaneously under 32-bit SMP environment, and a soft lockup will be
triggered as show below:
  watchdog: BUG: soft lockup - CPU#5 stuck for 22s! [stat:2217]
Modules linked in:
CPU: 5 PID: 2217 Comm: stat Not tainted 5.0.0-rc1-00005-g7f702faf5a9e
#4
Hardware name: Generic DT based system
PC is at generic_fillattr+0x104/0x108
LR is at 0xec497f00
pc : [<802b8898>]    lr : [<ec497f00>]    psr: 200c0013
sp : ec497e20  ip : ed608030  fp : ec497e3c
r10: 00000000  r9 : ec497f00  r8 : ed608030
r7 : ec497ebc  r6 : ec497f00  r5 : ee5c1550  r4 : ee005780
r3 : 0000052d  r2 : 00000000  r1 : ec497f00  r0 : ed608030
Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment none
Control: 10c5387d  Table: ac48006a  DAC: 00000051
CPU: 5 PID: 2217 Comm: stat Not tainted 5.0.0-rc1-00005-g7f702faf5a9e
#4
Hardware name: Generic DT based system
Backtrace:
[<8010d974>] (dump_backtrace) from [<8010dc88>] (show_stack+0x20/0x24)
[<8010dc68>] (show_stack) from [<80a1d194>] (dump_stack+0xb0/0xdc)
[<80a1d0e4>] (dump_stack) from [<80109f34>] (show_regs+0x1c/0x20)
[<80109f18>] (show_regs) from [<801d0a80>]
(watchdog_timer_fn+0x280/0x2f8)
[<801d0800>] (watchdog_timer_fn) from [<80198658>]
(__hrtimer_run_queues+0x18c/0x380)
[<801984cc>] (__hrtimer_run_queues) from [<80198e60>]
(hrtimer_run_queues+0xb8/0xf0)
[<80198da8>] (hrtimer_run_queues) from [<801973e8>]
(run_local_timers+0x28/0x64)
[<801973c0>] (run_local_timers) from [<80197460>]
(update_process_times+0x3c/0x6c)
[<80197424>] (update_process_times) from [<801ab2b8>]
(tick_nohz_handler+0xe0/0x1bc)
[<801ab1d8>] (tick_nohz_handler) from [<80843050>]
(arch_timer_handler_virt+0x38/0x48)
[<80843018>] (arch_timer_handler_virt) from [<80180a64>]
(handle_percpu_devid_irq+0x8c/0x240)
[<801809d8>] (handle_percpu_devid_irq) from [<8017ac20>]
(generic_handle_irq+0x34/0x44)
[<8017abec>] (generic_handle_irq) from [<8017b344>]
(__handle_domain_irq+0x6c/0xc4)
[<8017b2d8>] (__handle_domain_irq) from [<801022e0>]
(gic_handle_irq+0x4c/0x88)
[<80102294>] (gic_handle_irq) from [<80101a30>] (__irq_svc+0x70/0x98)
[<802b8794>] (generic_fillattr) from [<8056b284>]
(v9fs_vfs_getattr_dotl+0x74/0xa4)
[<8056b210>] (v9fs_vfs_getattr_dotl) from [<802b8904>]
(vfs_getattr_nosec+0x68/0x7c)
[<802b889c>] (vfs_getattr_nosec) from [<802b895c>]
(vfs_getattr+0x44/0x48)
[<802b8918>] (vfs_getattr) from [<802b8a74>] (vfs_statx+0x9c/0xec)
[<802b89d8>] (vfs_statx) from [<802b9428>] (sys_lstat64+0x48/0x78)
[<802b93e0>] (sys_lstat64) from [<80101000>]
(ret_fast_syscall+0x0/0x28)
[dominique.martinet@cea.fr: updated comment to not refer to a function
in another subsystem] Link:
http://lkml.kernel.org/r/20190124063514.8571-2-houtao1@huawei.com Cc:
stable@vger.kernel.org Fixes: 7549ae3e81cc ("9p: Use the i_size_[read,
write]() macros instead of using inode->i_size directly.") Reported-by:
Xing Gaopeng <xingaopeng@huawei.com> Signed-off-by: Hou Tao
<houtao1@huawei.com> Signed-off-by: Dominique Martinet
<dominique.martinet@cea.fr> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/9p/vfs_inode.c (diff)
The file was modifiedfs/9p/vfs_inode_dotl.c (diff)
The file was modifiedfs/9p/vfs_file.c (diff)
The file was modifiedfs/9p/v9fs_vfs.h (diff)
The file was modifiedfs/9p/vfs_super.c (diff)
Commit 5ababa4e34db899d8947474df6139641d5347794 by gregkh
9p/net: fix memory leak in p9_client_create
commit bb06c388fa20ae24cfe80c52488de718a7e3a53f upstream.
If msize is less than 4096, we should close and put trans, destroy
tagpool, not just free client. This patch fixes that.
Link:
http://lkml.kernel.org/m/1552464097-142659-1-git-send-email-zhengbin13@huawei.com
Cc: stable@vger.kernel.org Fixes: 574d356b7a02 ("9p/net: put a lower
bound on msize") Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: zhengbin <zhengbin13@huawei.com> Signed-off-by: Dominique
Martinet <dominique.martinet@cea.fr> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/9p/client.c (diff)
Commit a7abca8506b56002a2d168764eaf05ffa3ac22ef by gregkh
ASoC: fsl_esai: fix register setting issue in RIGHT_J mode
commit cc29ea007347f39f4c5a4d27b0b555955a0277f9 upstream.
The ESAI_xCR_xWA is xCR's bit, not the xCCR's bit, driver set it to
wrong register, correct it.
Fixes 43d24e76b698 ("ASoC: fsl_esai: Add ESAI CPU DAI driver") Cc:
<stable@vger.kernel.org> Signed-off-by: Shengjiu Wang
<shengjiu.wang@nxp.com> Reviewed-by: Fabio Estevam <festevam@gmail.com>
Ackedy-by: Nicolin Chen <nicoleotsuka@gmail.com> Signed-off-by: Mark
Brown <broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/soc/fsl/fsl_esai.c (diff)
Commit 5bd4f972e594b381b8d185e734216f5557d4527a by gregkh
ASoC: codecs: pcm186x: fix wrong usage of DECLARE_TLV_DB_SCALE()
commit fcf4daabf08079e6d09958a2992e7446ef8d0438 upstream.
According to DS, the gain is between -12 dB and 40 dB, with a 0.5 dB
step. Tested on pcm1863.
Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Acked-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/soc/codecs/pcm186x.c (diff)
Commit 61328520e0b65bf409845e8e00ee1d691a1ca27c by gregkh
ASoC: codecs: pcm186x: Fix energysense SLEEP bit
commit 05bd7fcdd06b19a10f069af1bea3ad9abac038d7 upstream.
The ADCs are sleeping when the SLEEP bit is set and running when it's
cleared, so the bit should be inverted. Tested on pcm1863.
Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@microchip.com>
Acked-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/soc/codecs/pcm186x.c (diff)
Commit a52251155bab8c569bf697f1eb23302e61fd2beb by gregkh
iio: adc: exynos-adc: Fix NULL pointer exception on unbind
commit 2ea8bab4dd2a9014e723b28091831fa850b82d83 upstream.
Fix NULL pointer exception on device unbind when device tree does not
contain "has-touchscreen" property.  In such case the input device is
not registered so it should not be unregistered.
    $ echo "12d10000.adc" > /sys/bus/platform/drivers/exynos-adc/unbind
    Unable to handle kernel NULL pointer dereference at virtual address
00000474
   ...
   (input_unregister_device) from [<c0772060>]
(exynos_adc_remove+0x20/0x80)
   (exynos_adc_remove) from [<c0587d5c>] (platform_drv_remove+0x20/0x40)
   (platform_drv_remove) from [<c05860f0>]
(device_release_driver_internal+0xdc/0x1ac)
   (device_release_driver_internal) from [<c0583ecc>]
(unbind_store+0x60/0xd4)
   (unbind_store) from [<c031b89c>] (kernfs_fop_write+0x100/0x1e0)
   (kernfs_fop_write) from [<c029709c>] (__vfs_write+0x2c/0x17c)
   (__vfs_write) from [<c0297374>] (vfs_write+0xa4/0x184)
   (vfs_write) from [<c0297594>] (ksys_write+0x4c/0xac)
   (ksys_write) from [<c0101000>] (ret_fast_syscall+0x0/0x28)
Fixes: 2bb8ad9b44c5 ("iio: exynos-adc: add experimental touchscreen
support") Cc: <stable@vger.kernel.org> Signed-off-by: Krzysztof
Kozlowski <krzk@kernel.org> Signed-off-by: Jonathan Cameron
<Jonathan.Cameron@huawei.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/iio/adc/exynos_adc.c (diff)
Commit f644d56fe1d7e8f264c2d86c0eebcfa84883b071 by gregkh
iio: adc: exynos-adc: Use proper number of channels for Exynos4x12
commit 103cda6a3b8d2c10d5f8cd7abad118e9db8f4776 upstream.
Exynos4212 and Exynos4412 have only four ADC channels so using
"samsung,exynos-adc-v1" compatible (for eight channels ADCv1) on them is
wrong.  Add a new compatible for Exynos4x12.
Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org> Cc:
<Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron
<Jonathan.Cameron@huawei.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/iio/adc/exynos_adc.c (diff)
The file was modifiedDocumentation/devicetree/bindings/iio/adc/samsung,exynos-adc.txt (diff)
Commit 55ced4559dbf812384a8e0dc74b6f33866e132b1 by gregkh
mei: hbm: clean the feature flags on link reset
commit 37fd0b623023484ef6df79ed46f21f06ecc611ff upstream.
The list of supported functions can be altered upon link reset, clean
the flags to allow correct selections of supported features.
Cc: <stable@vger.kernel.org> v4.19+ Signed-off-by: Alexander Usyskin
<alexander.usyskin@intel.com> Signed-off-by: Tomas Winkler
<tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/misc/mei/hbm.c (diff)
Commit 1cfec56130907b513d01d04688859d39f9563b2c by gregkh
mei: bus: move hw module get/put to probe/release
commit b5958faa34e2f99f3475ad89c52d98dfea079d33 upstream.
Fix unbalanced module reference counting during internal reset, which
prevents the drivers unloading. Tracking mei_me/txe modules on mei
client bus via mei_cldev_enable/disable is error prone due to possible
internal reset flow, where clients are disconnected underneath. Moving
reference counting to probe and release of mei bus client driver solves
this issue in simplest way, as each client provides only a single
connection to a client bus driver.
Cc: <stable@vger.kernel.org> Signed-off-by: Alexander Usyskin
<alexander.usyskin@intel.com> Signed-off-by: Tomas Winkler
<tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/misc/mei/bus.c (diff)
Commit 2adb36ff325d889e7771c90fdbc413a811873b2d by gregkh
stm class: Prevent division by zero
commit bf7cbaae0831252b416f375ca9b1027ecd4642dd upstream.
Using STP_POLICY_ID_SET ioctl command with dummy_stm device, or any STM
device that supplies zero mmio channel size, will trigger a division by
zero bug in the kernel.
Prevent this by disallowing channel widths other than 1 for such
devices.
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Fixes: 7bd1d4093c2f ("stm class: Introduce an abstraction for System
Trace Module devices") CC: stable@vger.kernel.org # v4.4+ Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/hwtracing/stm/core.c (diff)
Commit 9b2fdbdce1fb6774cd234b64b854e9090f4d6ba9 by gregkh
stm class: Fix an endless loop in channel allocation
commit a1d75dad3a2c689e70a1c4e0214cca9de741d0aa upstream.
There is a bug in the channel allocation logic that leads to an endless
loop when looking for a contiguous range of channels in a range with a
mixture of free and occupied channels. For example, opening three
consequtive channels, closing the first two and requesting 4 channels in
a row will trigger this soft lockup. The bug is that the search loop
forgets to skip over the range once it detects that one channel in that
range is occupied.
Restore the original intent to the logic by fixing the omission.
Signed-off-by: Zhi Jin <zhi.jin@intel.com> Signed-off-by: Alexander
Shishkin <alexander.shishkin@linux.intel.com> Fixes: 7bd1d4093c2f ("stm
class: Introduce an abstraction for System Trace Module devices") CC:
stable@vger.kernel.org # v4.4+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/hwtracing/stm/core.c (diff)
Commit fce3d391401a0fd25955a02a4a4577c7eae85aeb by gregkh
crypto: caam - fix hash context DMA unmap size
commit 65055e2108847af5e577cc7ce6bde45ea136d29a upstream.
When driver started using state->caam_ctxt for storing both running hash
and final hash, it was not updated to handle different DMA unmap
lengths.
Cc: <stable@vger.kernel.org> # v4.19+ Fixes: c19650d6ea99 ("crypto: caam
- fix DMA mapping of stack memory") Signed-off-by: Franck LENORMAND
<franck.lenormand@nxp.com> Signed-off-by: Horia Geantă
<horia.geanta@nxp.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/caam/caamhash.c (diff)
Commit 4a18213573b811d1910964dae36c3b3c358c0ba2 by gregkh
crypto: ccree - fix missing break in switch statement
commit b5be853181a8d4a6e20f2073ccd273d6280cad88 upstream.
Add missing break statement in order to prevent the code from falling
through to case S_DIN_to_DES.
This bug was found thanks to the ongoing efforts to enable
-Wimplicit-fallthrough.
Fixes: 63ee04c8b491 ("crypto: ccree - add skcipher support") Cc:
stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/ccree/cc_cipher.c (diff)
Commit e86dc780320e586fb1a30536f2b017fc7a4beb9c by gregkh
crypto: caam - fixed handling of sg list
commit 42e95d1f10dcf8b18b1d7f52f7068985b3dc5b79 upstream.
when the source sg contains more than 1 fragment and destination sg
contains 1 fragment, the caam driver mishandle the buffers to be sent to
caam.
Fixes: f2147b88b2b1 ("crypto: caam - Convert GCM to new AEAD interface")
Cc: <stable@vger.kernel.org> # 4.2+ Signed-off-by: Pankaj Gupta
<pankaj.gupta@nxp.com> Signed-off-by: Arun Pathak <arun.pathak@nxp.com>
Reviewed-by: Horia Geanta <horia.geanta@nxp.com> Signed-off-by: Herbert
Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/caam/caamalg.c (diff)
Commit 6e905e258c50b32fdda68dff8a7686b8d2636ce7 by gregkh
crypto: caam - fix DMA mapping of stack memory
commit c19650d6ea99bcd903d3e55dd61860026c701339 upstream.
Roland reports the following issue and provides a root cause analysis:
"On a v4.19 i.MX6 system with IMA and CONFIG_DMA_API_DEBUG enabled, a
warning is generated when accessing files on a filesystem for which IMA
measurement is enabled:
    ------------[ cut here ]------------
   WARNING: CPU: 0 PID: 1 at kernel/dma/debug.c:1181
check_for_stack.part.9+0xd0/0x120
   caam_jr 2101000.jr0: DMA-API: device driver maps memory from stack
[addr=b668049e]
   Modules linked in:
   CPU: 0 PID: 1 Comm: switch_root Not tainted 4.19.0-20181214-1 #2
   Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
   Backtrace:
   [<c010efb8>] (dump_backtrace) from [<c010f2d0>]
(show_stack+0x20/0x24)
   [<c010f2b0>] (show_stack) from [<c08b04f4>] (dump_stack+0xa0/0xcc)
   [<c08b0454>] (dump_stack) from [<c012b610>] (__warn+0xf0/0x108)
   [<c012b520>] (__warn) from [<c012b680>] (warn_slowpath_fmt+0x58/0x74)
   [<c012b62c>] (warn_slowpath_fmt) from [<c0199acc>]
(check_for_stack.part.9+0xd0/0x120)
   [<c01999fc>] (check_for_stack.part.9) from [<c019a040>]
(debug_dma_map_page+0x144/0x174)
   [<c0199efc>] (debug_dma_map_page) from [<c065f7f4>]
(ahash_final_ctx+0x5b4/0xcf0)
   [<c065f240>] (ahash_final_ctx) from [<c065b3c4>]
(ahash_final+0x1c/0x20)
   [<c065b3a8>] (ahash_final) from [<c03fe278>]
(crypto_ahash_op+0x38/0x80)
   [<c03fe240>] (crypto_ahash_op) from [<c03fe2e0>]
(crypto_ahash_final+0x20/0x24)
   [<c03fe2c0>] (crypto_ahash_final) from [<c03f19a8>]
(ima_calc_file_hash+0x29c/0xa40)
   [<c03f170c>] (ima_calc_file_hash) from [<c03f2b24>]
(ima_collect_measurement+0x1dc/0x240)
   [<c03f2948>] (ima_collect_measurement) from [<c03f0a60>]
(process_measurement+0x4c4/0x6b8)
   [<c03f059c>] (process_measurement) from [<c03f0cdc>]
(ima_file_check+0x88/0xa4)
   [<c03f0c54>] (ima_file_check) from [<c02d8adc>]
(path_openat+0x5d8/0x1364)
   [<c02d8504>] (path_openat) from [<c02dad24>] (do_filp_open+0x84/0xf0)
   [<c02daca0>] (do_filp_open) from [<c02cf50c>]
(do_open_execat+0x84/0x1b0)
   [<c02cf488>] (do_open_execat) from [<c02d1058>]
(__do_execve_file+0x43c/0x890)
   [<c02d0c1c>] (__do_execve_file) from [<c02d1770>]
(sys_execve+0x44/0x4c)
   [<c02d172c>] (sys_execve) from [<c0101000>]
(ret_fast_syscall+0x0/0x28)
   ---[ end trace 3455789a10e3aefd ]---
The cause is that the struct ahash_request *req is created as a
stack-local variable up in the stack (presumably somewhere in the IMA
implementation), then passed down into the CAAM driver, which tries to
dma_single_map the req->result (indirectly via map_seq_out_ptr_result)
in order to make that buffer available for the CAAM to store the result
of the following hash operation.
The calling code doesn't know how req will be used by the CAAM driver,
and there could be other such occurrences where stack memory is passed
down to the CAAM driver. Therefore we should rather fix this issue in
the CAAM driver where the requirements are known."
Fix this problem by:
-instructing the crypto engine to write the final hash in
state->caam_ctx
-subsequently memcpy-ing the final hash into req->result
Cc: <stable@vger.kernel.org> # v4.19+ Reported-by: Roland Hieber
<rhi@pengutronix.de> Signed-off-by: Horia Geantă <horia.geanta@nxp.com>
Tested-by: Roland Hieber <rhi@pengutronix.de> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/caam/caamhash.c (diff)
Commit 37ff06fd9cb5dd7dbf401a321d0cd3658e918a63 by gregkh
crypto: ccree - fix free of unallocated mlli buffer
commit a49411959ea6d4915a9fd2a7eb5ba220e6284e9a upstream.
In cc_unmap_aead_request(), call dma_pool_free() for mlli buffer only if
an item is allocated from the pool and not always if there is a pool
allocated. This fixes a kernel panic when trying to free a non-allocated
item.
Cc: stable@vger.kernel.org Signed-off-by: Hadar Gat <hadar.gat@arm.com>
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/ccree/cc_buffer_mgr.c (diff)
Commit 4fc9f0e1c9ffe9ae6dd8591055be95c5fc176996 by gregkh
crypto: ccree - unmap buffer before copying IV
commit c139c72e2beb3e3db5148910b3962b7322e24374 upstream.
We were copying the last ciphertext block into the IV field for CBC
before removing the DMA mapping of the output buffer with the result of
the buffer sometime being out-of-sync cache wise and were getting
intermittent cases of bad output IV.
Fix it by moving the DMA buffer unmapping before the copy.
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com> Fixes:
00904aa0cd59 ("crypto: ccree - fix iv handling") Cc:
<stable@vger.kernel.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/ccree/cc_cipher.c (diff)
Commit ded8d6308ffd691475fe2c80e7ff4f3aa3979a99 by gregkh
crypto: ccree - don't copy zero size ciphertext
commit 2b5ac17463dcb2411fed506edcf259a89bb538ba upstream.
For decryption in CBC mode we need to save the last ciphertext block for
use as the next IV. However, we were trying to do this also with zero
sized ciphertext resulting in a panic.
Fix this by only doing the copy if the ciphertext length is at least of
IV size.
Signed-off-by: Gilad Ben-Yossef <gilad@benyossef.com> Cc:
stable@vger.kernel.org Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/ccree/cc_cipher.c (diff)
Commit 64ae3c3d0c16817d2b89c5140dac76e06890ded1 by gregkh
crypto: cfb - add missing 'chunksize' property
commit 394a9e044702e6a8958a5e89d2a291605a587a2a upstream.
Like some other block cipher mode implementations, the CFB
implementation assumes that while walking through the scatterlist, a
partial block does not occur until the end.  But the walk is incorrectly
being done with a blocksize of 1, as 'cra_blocksize' is set to 1 (since
CFB is a stream cipher) but no 'chunksize' is set.  This bug causes
incorrect encryption/decryption for some scatterlist layouts.
Fix it by setting the 'chunksize'.  Also extend the CFB test vectors to
cover this bug as well as cases where the message length is not a
multiple of the block size.
Fixes: a7d85e06ed80 ("crypto: cfb - add support for Cipher FeedBack
mode") Cc: <stable@vger.kernel.org> # v4.17+ Cc: James Bottomley
<James.Bottomley@HansenPartnership.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/cfb.c (diff)
The file was modifiedcrypto/testmgr.h (diff)
Commit 5d894501d42350021f28e2df2fe68394a0e96c3e by gregkh
crypto: cfb - remove bogus memcpy() with src == dest
commit 6c2e322b3621dc8be72e5c86d4fdb587434ba625 upstream.
The memcpy() in crypto_cfb_decrypt_inplace() uses walk->iv as both the
source and destination, which has undefined behavior.  It is unneeded
because walk->iv is already used to hold the previous ciphertext block;
thus, walk->iv is already updated to its final value.  So, remove it.
Also, note that in-place decryption is the only case where the previous
ciphertext block is not directly available.  Therefore, as a related
cleanup I also updated crypto_cfb_encrypt_segment() to directly use the
previous ciphertext block rather than save it into walk->iv.  This makes
it consistent with in-place encryption and out-of-place decryption; now
only in-place decryption is different, because it has to be.
Fixes: a7d85e06ed80 ("crypto: cfb - add support for Cipher FeedBack
mode") Cc: <stable@vger.kernel.org> # v4.17+ Cc: James Bottomley
<James.Bottomley@HansenPartnership.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/cfb.c (diff)
Commit b03aa2833d567ad2b6985dde425e5e7f0978cc7f by gregkh
crypto: ofb - fix handling partial blocks and make thread-safe
commit b3e3e2db7de4a1ffe8845876c3520b866cd48de1 upstream.
Fix multiple bugs in the OFB implementation:
1. It stored the per-request state 'cnt' in the tfm context, which can
be
  used by multiple threads concurrently (e.g. via AF_ALG). 2. It didn't
support messages not a multiple of the block cipher size,
  despite being a stream cipher. 3. It didn't set cra_blocksize to 1 to
indicate it is a stream cipher.
To fix these, set the 'chunksize' property to the cipher block size to
guarantee that when walking through the scatterlist, a partial block can
only occur at the end.  Then change the implementation to XOR a block at
a time at first, then XOR the partial block at the end if needed.  This
is the same way CTR and CFB are implemented.  As a bonus, this also
improves performance in most cases over the current approach.
Fixes: e497c51896b3 ("crypto: ofb - add output feedback mode") Cc:
<stable@vger.kernel.org> # v4.20+ Cc: Gilad Ben-Yossef
<gilad@benyossef.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Gilad Ben-Yossef <gilad@benyossef.com> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedcrypto/ofb.c (diff)
The file was modifiedcrypto/testmgr.h (diff)
Commit 20af3634022b2abda46f8b2c8e06a9154c878bd2 by gregkh
crypto: ahash - fix another early termination in hash walk
commit 77568e535af7c4f97eaef1e555bf0af83772456c upstream.
Hash algorithms with an alignmask set, e.g. "xcbc(aes-aesni)" and
"michael_mic", fail the improved hash tests because they sometimes
produce the wrong digest.  The bug is that in the case where a
scatterlist element crosses pages, not all the data is actually hashed
because the scatterlist walk terminates too early.  This happens because
the 'nbytes' variable in crypto_hash_walk_done() is assigned the number
of bytes remaining in the page, then later interpreted as the number of
bytes remaining in the scatterlist element.  Fix it.
Fixes: 900a081f6912 ("crypto: ahash - Fix early termination in hash
walk") Cc: stable@vger.kernel.org Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/ahash.c (diff)
Commit e400988e1daef9f38aaf6cfe3d9d4491b43d79f2 by gregkh
crypto: rockchip - fix scatterlist nents error
commit 4359669a087633132203c52d67dd8c31e09e7b2e upstream.
In some cases, the nents of src scatterlist is different from dst
scatterlist. So two variables are used to handle the nents of src&dst
scatterlist.
Reported-by: Eric Biggers <ebiggers@google.com> Fixes: 433cd2c617bf
("crypto: rockchip - add crypto driver for rk3288") Cc:
<stable@vger.kernel.org> # v4.5+ Signed-off-by: Zhang Zhijie
<zhangzj@rock-chips.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/rockchip/rk3288_crypto.h (diff)
The file was modifieddrivers/crypto/rockchip/rk3288_crypto.c (diff)
The file was modifieddrivers/crypto/rockchip/rk3288_crypto_ahash.c (diff)
The file was modifieddrivers/crypto/rockchip/rk3288_crypto_ablkcipher.c (diff)
Commit c2ca8161971a964531b4afe23a1a236bcec16022 by gregkh
crypto: rockchip - update new iv to device in multiple operations
commit c1c214adcb56d36433480c8fedf772498e7e539c upstream.
For chain mode in cipher(eg. AES-CBC/DES-CBC), the iv is continuously
updated in the operation. The new iv value should be written to device
register by software.
Reported-by: Eric Biggers <ebiggers@google.com> Fixes: 433cd2c617bf
("crypto: rockchip - add crypto driver for rk3288") Cc:
<stable@vger.kernel.org> # v4.5+ Signed-off-by: Zhang Zhijie
<zhangzj@rock-chips.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/crypto/rockchip/rk3288_crypto.h (diff)
The file was modifieddrivers/crypto/rockchip/rk3288_crypto_ablkcipher.c (diff)
Commit 9cd805133b844a965570723bacb88595b0a62615 by gregkh
dax: Flush partial PMDs correctly
commit e4b3448bc346fedf36db64124a664a959995b085 upstream.
The radix tree would rewind the index in an iterator to the lowest index
of a multi-slot entry.  The XArray iterators instead leave the index
unchanged, but I overlooked that when converting DAX from the radix tree
to the XArray.  Adjust the index that we use for flushing to the start
of the PMD range.
Fixes: c1901cd33cf4 ("page cache: Convert find_get_entries_tag to
XArray") Cc: <stable@vger.kernel.org> Reported-by: Piotr Balcer
<piotr.balcer@intel.com> Tested-by: Dan Williams
<dan.j.williams@intel.com> Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Matthew Wilcox <willy@infradead.org> Signed-off-by: Dan
Williams <dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/dax.c (diff)
Commit 59a0e57f0cd3cfb5afc815247b0c8b9c9977d55d by gregkh
nfit: Fix nfit_intel_shutdown_status() command submission
commit f596c8844fe1d0022007ae6c7a377361fb653eff upstream.
The implementation is broken in all the ways the unit test did not
touch:
1/ The local definition of in_buf and in_obj violated C99 initializer
  expectations for zeroing. By only initializing 2 out of the three
  struct members the compiler was free to zero-initialize the remaining
  entry even though the aliased location in the union was initialized.
2/ The implementation made assumptions about the state of the 'smart'
  payload after command execution that are satisfied by
  acpi_nfit_ctl(), but not acpi_evaluate_dsm().
3/ populate_shutdown_status() is skipped on Intel NVDIMMs due to the
early
  return for skipping the common _LS{I,R,W} enabling.
4/ The input length should be zero.
This breakage was missed due to the unit test implementation only
testing the case where nfit_intel_shutdown_status() returns a valid
payload.
Much of this complexity would be saved if acpi_nfit_ctl() could be used,
but that currently requires a 'struct nvdimm *' argument and one is not
created until later in the init process. The health result is needed
before the device is created because the payload gates whether the
nmemX/nfit/dirty_shutdown property is visible in sysfs.
Cc: <stable@vger.kernel.org> Fixes: 0ead11181fe0 ("acpi, nfit: Collect
shutdown status") Reported-by: Dexuan Cui <decui@microsoft.com>
Reviewed-by: Dexuan Cui <decui@microsoft.com> Signed-off-by: Dan
Williams <dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit a2690301c9762c5c26c33fbd93002384b30be15b by gregkh
nfit: acpi_nfit_ctl(): Check out_obj->type in the right place
commit 43f89877f26671c6309cd87d7364b1a3e66e71cf upstream.
In the case of ND_CMD_CALL, we should also check out_obj->type.
The patch uses out_obj->type, which is a short alias to
out_obj->package.type.
Fixes: 31eca76ba2fc ("nfit, libnvdimm: limited/whitelisted dimm command
marshaling mechanism") Cc: <stable@vger.kernel.org> Signed-off-by:
Dexuan Cui <decui@microsoft.com> Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit 0c79794474895dbbc3c52225f7e9f73cfecbb7dd by gregkh
acpi/nfit: Fix bus command validation
commit ebe9f6f19d80d8978d16078dff3d5bd93ad8d102 upstream.
Commit 11189c1089da "acpi/nfit: Fix command-supported detection" broke
ND_CMD_CALL for bus-level commands. The "func = cmd" assumption is only
valid for:
    ND_CMD_ARS_CAP
   ND_CMD_ARS_START
   ND_CMD_ARS_STATUS
   ND_CMD_CLEAR_ERROR
The function number otherwise needs to be pulled from the command
payload for:
    NFIT_CMD_TRANSLATE_SPA
   NFIT_CMD_ARS_INJECT_SET
   NFIT_CMD_ARS_INJECT_CLEAR
   NFIT_CMD_ARS_INJECT_GET
Update cmd_to_func() for the bus case and call it in the common path.
Fixes: 11189c1089da ("acpi/nfit: Fix command-supported detection") Cc:
<stable@vger.kernel.org> Reviewed-by: Vishal Verma
<vishal.l.verma@intel.com> Reported-by: Grzegorz Burzynski
<grzegorz.burzynski@intel.com> Tested-by: Jeff Moyer <jmoyer@redhat.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit b3971c932d0d10f95c8d7c9e972276c3319941de by gregkh
nfit/ars: Attempt a short-ARS whenever the ARS state is idle at boot
commit c6c5df293bf1b488cf8459aac658aecfdccb13a9 upstream.
If query-ARS reports that ARS has stopped and requires continuation
attempt to retrieve short-ARS results before continuing the long
operation.
Fixes: bc6ba8085842 ("nfit, address-range-scrub: rework and simplify
ARS...") Cc: <stable@vger.kernel.org> Reported-by: Krzysztof Rusocki
<krzysztof.rusocki@intel.com> Reviewed-by: Toshi Kani
<toshi.kani@hpe.com> Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit 5fa9cb709adc46b52c25a45d919563b02c8fca6e by gregkh
nfit/ars: Attempt short-ARS even in the no_init_ars case
commit fa3ed4d981b1fc19acdd07fcb152a4bd3706892b upstream.
The no_init_ars option is meant to prevent long-ARS, but short-ARS
should be allowed to grab any immediate results.
Fixes: bc6ba8085842 ("nfit, address-range-scrub: rework and simplify
ARS...") Cc: <stable@vger.kernel.org> Reported-by: Erwin Tsaur
<erwin.tsaur@oracle.com> Reviewed-by: Toshi Kani <toshi.kani@hpe.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/nfit/core.c (diff)
Commit dd40489f675180171f5c14929c8424e09b68b75a by gregkh
libnvdimm/label: Clear 'updating' flag after label-set update
commit 966d23a006ca7b44ac8cf4d0c96b19785e0c3da0 upstream.
The UEFI 2.7 specification sets expectations that the 'updating' flag is
eventually cleared. To date, the libnvdimm core has never adhered to
that protocol. The policy of the core matches the policy of other
multi-device info-block formats like MD-Software-RAID that expect
administrator intervention on inconsistent info-blocks, not automatic
invalidation.
However, some pre-boot environments may unfortunately attempt to "clean
up" the labels and invalidate a set when it fails to find at least one
"non-updating" label in the set. Clear the updating flag after set
updates to minimize the window of vulnerability to aggressive pre-boot
environments.
Ideally implementations would not write to the label area outside of
creating namespaces.
Note that this only minimizes the window, it does not close it as the
system can still crash while clearing the flag and the set can be
subsequently deleted / invalidated by the pre-boot environment.
Fixes: f524bf271a5c ("libnvdimm: write pmem label set") Cc:
<stable@vger.kernel.org> Cc: Kelly Couch <kelly.j.couch@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/nvdimm/label.c (diff)
Commit 4b9d1f8b61e8a8a5228fd76fddf0e9dfdfb3a797 by gregkh
libnvdimm, pfn: Fix over-trim in trim_pfn_device()
commit f101ada7da6551127d192c2f1742c1e9e0f62799 upstream.
When trying to see whether current nd_region intersects with others,
trim_pfn_device() has already calculated the *size* to be expanded to
SECTION size.
Do not double append 'adjust' to 'size' when calculating whether the end
of a region collides with the next pmem region.
Fixes: ae86cbfef381 "libnvdimm, pfn: Pad pfn namespaces relative to
other regions" Cc: <stable@vger.kernel.org> Signed-off-by: Wei Yang
<richardw.yang@linux.intel.com> Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/nvdimm/pfn_devs.c (diff)
Commit fefd9f16efc31418c2d9de99f5ca6a48b36ce679 by gregkh
libnvdimm/pmem: Honor force_raw for legacy pmem regions
commit fa7d2e639cd90442d868dfc6ca1d4cc9d8bf206e upstream.
For recovery, where non-dax access is needed to a given physical address
range, and testing, allow the 'force_raw' attribute to override the
default establishment of a dev_pagemap.
Otherwise without this capability it is possible to end up with a
namespace that can not be activated due to corrupted info-block, and one
that can not be repaired due to a section collision.
Cc: <stable@vger.kernel.org> Fixes: 004f1afbe199 ("libnvdimm, pmem:
direct map legacy pmem by default") Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/nvdimm/namespace_devs.c (diff)
Commit 2ac714d69197f48fb87208c6994284075dcdb4fd by gregkh
libnvdimm: Fix altmap reservation size calculation
commit 07464e88365e9236febaca9ed1a2e2006d8bc952 upstream.
Libnvdimm reserves the first 8K of pfn and devicedax namespaces to store
a superblock describing the namespace. This 8K reservation is contained
within the altmap area which the kernel uses for the vmemmap backing for
the pages within the namespace. The altmap allows for some pages at the
start of the altmap area to be reserved and that mechanism is used to
protect the superblock from being re-used as vmemmap backing.
The number of PFNs to reserve is calculated using:
PHYS_PFN(SZ_8K)
Which is implemented as:
#define PHYS_PFN(x) ((unsigned long)((x) >> PAGE_SHIFT))
So on systems where PAGE_SIZE is greater than 8K the reservation size is
truncated to zero and the superblock area is re-used as vmemmap backing.
As a result all the namespace information stored in the superblock (i.e.
if it's a PFN or DAX namespace) is lost and the namespace needs to be
re-created to get access to the contents.
This patch fixes this by using PFN_UP() rather than PHYS_PFN() to ensure
that at least one page is reserved. On systems with a 4K pages size this
patch should have no effect.
Cc: stable@vger.kernel.org Cc: Dan Williams <dan.j.williams@intel.com>
Fixes: ac515c084be9 ("libnvdimm, pmem, pfn: move pfn setup to the core")
Signed-off-by: Oliver O'Halloran <oohall@gmail.com> Reviewed-by: Vishal
Verma <vishal.l.verma@intel.com> Signed-off-by: Dan Williams
<dan.j.williams@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/nvdimm/pfn_devs.c (diff)
Commit 781bcac5b19943d4275e5ddc113b468c880e0eb7 by gregkh
fix cgroup_do_mount() handling of failure exits
commit 399504e21a10be16dd1408ba0147367d9d82a10c upstream.
same story as with last May fixes in sysfs (7b745a4e4051
"unfuck sysfs_mount()"); new_sb is left uninitialized in case of early
errors in kernfs_mount_ns() and papering over it by treating any error
from kernfs_mount_ns() as equivalent to !new_ns ends up conflating the
cases when objects had never been transferred to a superblock with ones
when that has happened and resulting new superblock had been dropped.
Easily fixed (same way as in sysfs case).  Additionally, there's a
superblock leak on kernfs_node_dentry() failure *and* a dentry leak
inside kernfs_node_dentry() itself - the latter on probably impossible
errors, but the former not impossible to trigger
(as the matter of fact, injecting allocation failures at that point
*does* trigger it).
Cc: stable@kernel.org Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/cgroup/cgroup.c (diff)
The file was modifiedfs/kernfs/mount.c (diff)
Commit 650b7246d4606306a9b780468e1e9f3a9b262f27 by gregkh
crypto: aead - set CRYPTO_TFM_NEED_KEY if ->setkey() fails
commit 6ebc97006b196aafa9df0497fdfa866cf26f259b upstream.
Some algorithms have a ->setkey() method that is not atomic, in the
sense that setting a key can fail after changes were already made to the
tfm context.  In this case, if a key was already set the tfm can end up
in a state that corresponds to neither the old key nor the new key.
For example, in gcm.c, if the kzalloc() fails due to lack of memory,
then the CTR part of GCM will have the new key but GHASH will not.
It's not feasible to make all ->setkey() methods atomic, especially ones
that have to key multiple sub-tfms.  Therefore, make the crypto API set
CRYPTO_TFM_NEED_KEY if ->setkey() fails, to prevent the tfm from being
used until a new key is set.
[Cc stable mainly because when introducing the NEED_KEY flag I changed
AF_ALG to rely on it; and unlike in-kernel crypto API users, AF_ALG
previously didn't have this problem.  So these "incompletely keyed"
states became theoretically accessible via AF_ALG -- though, the
opportunities for causing real mischief seem pretty limited.]
Fixes: dc26c17f743a ("crypto: aead - prevent using AEADs without setting
key") Cc: <stable@vger.kernel.org> # v4.16+ Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/aead.c (diff)
Commit e414d9bc86a7d71d9dc8b65d5b371cb0971d8394 by gregkh
crypto: aegis - fix handling chunked inputs
commit 0f533e67d26f228ea5dfdacc8a4bdeb487af5208 upstream.
The generic AEGIS implementations all fail the improved AEAD tests
because they produce the wrong result with some data layouts.  The issue
is that they assume that if the skcipher_walk API gives 'nbytes' not
aligned to the walksize (a.k.a. walk.stride), then it is the end of the
data.  In fact, this can happen before the end.  Fix them.
Fixes: f606a88e5823 ("crypto: aegis - Add generic AEGIS AEAD
implementations") Cc: <stable@vger.kernel.org> # v4.18+ Cc: Ondrej
Mosnacek <omosnace@redhat.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Reviewed-by: Ondrej Mosnacek <omosnace@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedcrypto/aegis256.c (diff)
The file was modifiedcrypto/aegis128.c (diff)
The file was modifiedcrypto/aegis128l.c (diff)
Commit 844351fc03b0d8f34ed8ef9426b344d3096b6dc9 by gregkh
crypto: arm/crct10dif - revert to C code for short inputs
commit 62fecf295e3c48be1b5f17c440b93875b9adb4d6 upstream.
The SIMD routine ported from x86 used to have a special code path for
inputs < 16 bytes, which got lost somewhere along the way. Instead, the
current glue code aligns the input pointer to permit the NEON routine to
use special versions of the vld1 instructions that assume 16 byte
alignment, but this could result in inputs of less than 16 bytes to be
passed in. This not only fails the new extended tests that Eric has
implemented, it also results in the code reading past the end of the
input, which could potentially result in crashes when dealing with less
than 16 bytes of input at the end of a page which is followed by an
unmapped page.
So update the glue code to only invoke the NEON routine if the input is
at least 16 bytes.
Reported-by: Eric Biggers <ebiggers@kernel.org> Reviewed-by: Eric
Biggers <ebiggers@kernel.org> Fixes: 1d481f1cd892 ("crypto:
arm/crct10dif - port x86 SSE implementation to ARM") Cc:
<stable@vger.kernel.org> # v4.10+ Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm/crypto/crct10dif-ce-glue.c (diff)
The file was modifiedarch/arm/crypto/crct10dif-ce-core.S (diff)
Commit d78abd635e6c31825737fbc67c631832cc15b92f by gregkh
crypto: arm64/aes-neonbs - fix returning final keystream block
commit 12455e320e19e9cc7ad97f4ab89c280fe297387c upstream.
The arm64 NEON bit-sliced implementation of AES-CTR fails the improved
skcipher tests because it sometimes produces the wrong ciphertext.  The
bug is that the final keystream block isn't returned from the assembly
code when the number of non-final blocks is zero.  This can happen if
the input data ends a few bytes after a page boundary.  In this case the
last bytes get "encrypted" by XOR'ing them with uninitialized memory.
Fix the assembly code to return the final keystream block when needed.
Fixes: 88a3f582bea9 ("crypto: arm64/aes - don't use IV buffer to return
final keystream block") Cc: <stable@vger.kernel.org> # v4.11+
Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by:
Eric Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/crypto/aes-neonbs-core.S (diff)
Commit 7007b2645f6e8be0d236ad293ca6229228d9a7f5 by gregkh
crypto: arm64/crct10dif - revert to C code for short inputs
commit d72b9d4acd548251f55b16843fc7a05dc5c80de8 upstream.
The SIMD routine ported from x86 used to have a special code path for
inputs < 16 bytes, which got lost somewhere along the way. Instead, the
current glue code aligns the input pointer to 16 bytes, which is not
really necessary on this architecture (although it could be beneficial
to performance to expose aligned data to the the NEON routine), but this
could result in inputs of less than 16 bytes to be passed in. This not
only fails the new extended tests that Eric has implemented, it also
results in the code reading past the end of the input, which could
potentially result in crashes when dealing with less than 16 bytes of
input at the end of a page which is followed by an unmapped page.
So update the glue code to only invoke the NEON routine if the input is
at least 16 bytes.
Reported-by: Eric Biggers <ebiggers@kernel.org> Reviewed-by: Eric
Biggers <ebiggers@kernel.org> Fixes: 6ef5737f3931 ("crypto:
arm64/crct10dif - port x86 SSE implementation to arm64") Cc:
<stable@vger.kernel.org> # v4.10+ Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/crypto/crct10dif-ce-glue.c (diff)
Commit c850ff289c4ea283f147157945297a96ed9cdae0 by gregkh
crypto: hash - set CRYPTO_TFM_NEED_KEY if ->setkey() fails
commit ba7d7433a0e998c902132bd47330e355a1eaa894 upstream.
Some algorithms have a ->setkey() method that is not atomic, in the
sense that setting a key can fail after changes were already made to the
tfm context.  In this case, if a key was already set the tfm can end up
in a state that corresponds to neither the old key nor the new key.
It's not feasible to make all ->setkey() methods atomic, especially ones
that have to key multiple sub-tfms.  Therefore, make the crypto API set
CRYPTO_TFM_NEED_KEY if ->setkey() fails and the algorithm requires a
key, to prevent the tfm from being used until a new key is set.
Note: we can't set CRYPTO_TFM_NEED_KEY for OPTIONAL_KEY algorithms, so
->setkey() for those must nevertheless be atomic.  That's fine for now
since only the crc32 and crc32c algorithms set OPTIONAL_KEY, and it's
not intended that OPTIONAL_KEY be used much.
[Cc stable mainly because when introducing the NEED_KEY flag I changed
AF_ALG to rely on it; and unlike in-kernel crypto API users, AF_ALG
previously didn't have this problem.  So these "incompletely keyed"
states became theoretically accessible via AF_ALG -- though, the
opportunities for causing real mischief seem pretty limited.]
Fixes: 9fa68f620041 ("crypto: hash - prevent using keyed hashes without
setting key") Cc: stable@vger.kernel.org Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/ahash.c (diff)
The file was modifiedcrypto/shash.c (diff)
Commit 9cbfb0a8d1afb0b47327fe0e0956c106070abf64 by gregkh
crypto: morus - fix handling chunked inputs
commit d644f1c8746ed24f81075480f9e9cb3777ae8d65 upstream.
The generic MORUS implementations all fail the improved AEAD tests
because they produce the wrong result with some data layouts.  The issue
is that they assume that if the skcipher_walk API gives 'nbytes' not
aligned to the walksize (a.k.a. walk.stride), then it is the end of the
data.  In fact, this can happen before the end.  Fix them.
Fixes: 396be41f16fd ("crypto: morus - Add generic MORUS AEAD
implementations") Cc: <stable@vger.kernel.org> # v4.18+ Cc: Ondrej
Mosnacek <omosnace@redhat.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Reviewed-by: Ondrej Mosnacek <omosnace@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedcrypto/morus640.c (diff)
The file was modifiedcrypto/morus1280.c (diff)
Commit 0173f7ca0e2222f42310a49ad89481b5a877973d by gregkh
crypto: pcbc - remove bogus memcpy()s with src == dest
commit 251b7aea34ba3c4d4fdfa9447695642eb8b8b098 upstream.
The memcpy()s in the PCBC implementation use walk->iv as both the source
and destination, which has undefined behavior.  These memcpy()'s are
actually unneeded, because walk->iv is already used to hold the previous
plaintext block XOR'd with the previous ciphertext block.  Thus,
walk->iv is already updated to its final value.
So remove the broken and unnecessary memcpy()s.
Fixes: 91652be5d1b9 ("[CRYPTO] pcbc: Add Propagated CBC template") Cc:
<stable@vger.kernel.org> # v2.6.21+ Cc: David Howells
<dhowells@redhat.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedcrypto/pcbc.c (diff)
Commit c58580801420cfe5e82c105e71741e31dfe506b6 by gregkh
crypto: skcipher - set CRYPTO_TFM_NEED_KEY if ->setkey() fails
commit b1f6b4bf416b49f00f3abc49c639371cdecaaad1 upstream.
Some algorithms have a ->setkey() method that is not atomic, in the
sense that setting a key can fail after changes were already made to the
tfm context.  In this case, if a key was already set the tfm can end up
in a state that corresponds to neither the old key nor the new key.
For example, in lrw.c, if gf128mul_init_64k_bbe() fails due to lack of
memory, then priv::table will be left NULL.  After that, encryption with
that tfm will cause a NULL pointer dereference.
It's not feasible to make all ->setkey() methods atomic, especially ones
that have to key multiple sub-tfms.  Therefore, make the crypto API set
CRYPTO_TFM_NEED_KEY if ->setkey() fails and the algorithm requires a
key, to prevent the tfm from being used until a new key is set.
[Cc stable mainly because when introducing the NEED_KEY flag I changed
AF_ALG to rely on it; and unlike in-kernel crypto API users, AF_ALG
previously didn't have this problem.  So these "incompletely keyed"
states became theoretically accessible via AF_ALG -- though, the
opportunities for causing real mischief seem pretty limited.]
Fixes: f8d33fac8480 ("crypto: skcipher - prevent using skciphers without
setting key") Cc: <stable@vger.kernel.org> # v4.16+ Signed-off-by: Eric
Biggers <ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/skcipher.c (diff)
Commit c9e34c3c34b928ff35a9ef84be2220ea1a3067e8 by gregkh
crypto: testmgr - skip crc32c context test for ahash algorithms
commit eb5e6730db98fcc4b51148b4a819fa4bf864ae54 upstream.
Instantiating "cryptd(crc32c)" causes a crypto self-test failure because
the crypto_alloc_shash() in alg_test_crc32c() fails.  This is because
cryptd(crc32c) is an ahash algorithm, not a shash algorithm; so it can
only be accessed through the ahash API, unlike shash algorithms which
can be accessed through both the ahash and shash APIs.
As the test is testing the shash descriptor format which is only
applicable to shash algorithms, skip it for ahash algorithms.
(Note that it's still important to fix crypto self-test failures even
for weird algorithm instantiations like cryptd(crc32c) that no one
would really use; in fips_enabled mode unprivileged users can use them
to panic the kernel, and also they prevent treating a crypto self-test
failure as a bug when fuzzing the kernel.)
Fixes: 8e3ee85e68c5 ("crypto: crc32c - Test descriptor context format")
Cc: stable@vger.kernel.org Signed-off-by: Eric Biggers
<ebiggers@google.com> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedcrypto/testmgr.c (diff)
Commit 2e0e52c3d61895944c8250b87d0fff6b8a7fa09c by gregkh
crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP
commit ba6771c0a0bc2fac9d6a8759bab8493bd1cffe3b upstream.
The x86 AEGIS implementations all fail the improved AEAD tests because
they produce the wrong result with some data layouts.  The issue is that
they assume that if the skcipher_walk API gives 'nbytes' not aligned to
the walksize (a.k.a. walk.stride), then it is the end of the data.  In
fact, this can happen before the end.
Also, when the CRYPTO_TFM_REQ_MAY_SLEEP flag is given, they can
incorrectly sleep in the skcipher_walk_*() functions while preemption
has been disabled by kernel_fpu_begin().
Fix these bugs.
Fixes: 1d373d4e8e15 ("crypto: x86 - Add optimized AEGIS
implementations") Cc: <stable@vger.kernel.org> # v4.18+ Cc: Ondrej
Mosnacek <omosnace@redhat.com> Signed-off-by: Eric Biggers
<ebiggers@google.com> Reviewed-by: Ondrej Mosnacek <omosnace@redhat.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/crypto/aegis128l-aesni-glue.c (diff)
The file was modifiedarch/x86/crypto/aegis256-aesni-glue.c (diff)
The file was modifiedarch/x86/crypto/aegis128-aesni-glue.c (diff)
Commit 814ec1461901602180810c0b4fb310c34c9b5d5e by gregkh
crypto: x86/aesni-gcm - fix crash on empty plaintext
commit 3af349639597fea582a93604734d717e59a0e223 upstream.
gcmaes_crypt_by_sg() dereferences the NULL pointer returned by
scatterwalk_ffwd() when encrypting an empty plaintext and the source
scatterlist ends immediately after the associated data.
Fix it by only fast-forwarding to the src/dst data scatterlists if the
data length is nonzero.
This bug is reproduced by the "rfc4543(gcm(aes))" test vectors when run
with the new AEAD test manager.
Fixes: e845520707f8 ("crypto: aesni - Update aesni-intel_glue to use
scatter/gather") Cc: <stable@vger.kernel.org> # v4.17+ Cc: Dave Watson
<davejwatson@fb.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/crypto/aesni-intel_glue.c (diff)
Commit d78c34dfc2882a11ece54f555b8853031def4b08 by gregkh
crypto: x86/morus - fix handling chunked inputs and MAY_SLEEP
commit 2060e284e9595fc3baed6e035903c05b93266555 upstream.
The x86 MORUS implementations all fail the improved AEAD tests because
they produce the wrong result with some data layouts.  The issue is that
they assume that if the skcipher_walk API gives 'nbytes' not aligned to
the walksize (a.k.a. walk.stride), then it is the end of the data.  In
fact, this can happen before the end.
Also, when the CRYPTO_TFM_REQ_MAY_SLEEP flag is given, they can
incorrectly sleep in the skcipher_walk_*() functions while preemption
has been disabled by kernel_fpu_begin().
Fix these bugs.
Fixes: 56e8e57fc3a7 ("crypto: morus - Add common SIMD glue code for
MORUS") Cc: <stable@vger.kernel.org> # v4.18+ Cc: Ondrej Mosnacek
<omosnace@redhat.com> Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Ondrej Mosnacek <omosnace@redhat.com> Signed-off-by:
Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/crypto/morus1280_glue.c (diff)
The file was modifiedarch/x86/crypto/morus640_glue.c (diff)
Commit 741ae3caa62f622123ea91dd785018aeaba0daba by gregkh
crypto: arm64/aes-ccm - fix logical bug in AAD MAC handling
commit eaf46edf6ea89675bd36245369c8de5063a0272c upstream.
The NEON MAC calculation routine fails to handle the case correctly
where there is some data in the buffer, and the input fills it up
exactly. In this case, we enter the loop at the end with w8 == 0, while
a negative value is assumed, and so the loop carries on until the
increment of the 32-bit counter wraps around, which is quite obviously
wrong.
So omit the loop altogether in this case, and exit right away.
Reported-by: Eric Biggers <ebiggers@kernel.org> Fixes: a3fd82105b9d1
("arm64/crypto: AES in CCM mode using ARMv8 Crypto ...") Cc:
stable@vger.kernel.org Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/crypto/aes-ce-ccm-core.S (diff)
Commit afaf9d664b0f2e94110947db89123be1fcc1f5e9 by gregkh
crypto: arm64/aes-ccm - fix bugs in non-NEON fallback routine
commit 969e2f59d589c15f6aaf306e590dde16f12ea4b3 upstream.
Commit 5092fcf34908 ("crypto: arm64/aes-ce-ccm: add non-SIMD generic
fallback") introduced C fallback code to replace the NEON routines when
invoked from a context where the NEON is not available (i.e., from the
context of a softirq taken while the NEON is already being used in
kernel process context)
Fix two logical flaws in the MAC calculation of the associated data.
Reported-by: Eric Biggers <ebiggers@kernel.org> Fixes: 5092fcf34908
("crypto: arm64/aes-ce-ccm: add non-SIMD generic fallback") Cc:
stable@vger.kernel.org Signed-off-by: Ard Biesheuvel
<ard.biesheuvel@linaro.org> Signed-off-by: Herbert Xu
<herbert@gondor.apana.org.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/crypto/aes-ce-ccm-glue.c (diff)
Commit 75bbb83e80c764ddfb4a70270c5b269c92cebd66 by gregkh
CIFS: Fix leaking locked VFS cache pages in writeback retry
commit 165df9a080b6863ae286fa01780c13d87cd81076 upstream.
If we don't find a writable file handle when retrying writepages we
break of the loop and do not unlock and put pages neither from wdata2
nor from the original wdata. Fix this by walking through all the
remaining pages and cleanup them properly.
Cc: <stable@vger.kernel.org> Signed-off-by: Pavel Shilovsky
<pshilov@microsoft.com> Signed-off-by: Steve French
<stfrench@microsoft.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/cifssmb.c (diff)
Commit a992916a9c893116ed106258b16630bd958aaac1 by gregkh
CIFS: Do not reset lease state to NONE on lease break
commit 7b9b9edb49ad377b1e06abf14354c227e9ac4b06 upstream.
Currently on lease break the client sets a caching level twice: when
oplock is detected and when oplock is processed. While the 1st attempt
sets the level to the value provided by the server, the 2nd one resets
the level to None unconditionally. This happens because the oplock/lease
processing code was changed to avoid races between page cache flushes
and oplock breaks. The commit c11f1df5003d534 ("cifs: Wait for
writebacks to complete before attempting write.") fixed the races for
oplocks but didn't apply the same changes for leases resulting in
overwriting the server granted value to None. Fix this by properly
processing lease breaks.
Signed-off-by: Pavel Shilovsky <pshilov@microsoft.com> Signed-off-by:
Steve French <stfrench@microsoft.com> CC: Stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/smb2misc.c (diff)
The file was modifiedfs/cifs/smb2ops.c (diff)
Commit c73a769b63fb86b38fda5a01765c9540b8c9c5a6 by gregkh
CIFS: Do not skip SMB2 message IDs on send failures
commit c781af7e0c1fed9f1d0e0ec31b86f5b21a8dca17 upstream.
When we hit failures during constructing MIDs or sending PDUs through
the network, we end up not using message IDs assigned to the packet. The
next SMB packet will skip those message IDs and continue with the next
one. This behavior may lead to a server not granting us credits until we
use the skipped IDs. Fix this by reverting the current ID to the
original value if any errors occur before we push the packet through the
network stack.
This patch fixes the generic/310 test from the xfs-tests.
Cc: <stable@vger.kernel.org> # 4.19.x Signed-off-by: Pavel Shilovsky
<pshilov@microsoft.com> Signed-off-by: Steve French
<stfrench@microsoft.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/smb2transport.c (diff)
The file was modifiedfs/cifs/cifsglob.h (diff)
The file was modifiedfs/cifs/transport.c (diff)
The file was modifiedfs/cifs/smb2ops.c (diff)
Commit 3eb2412dd9da1c459bcd45ad8f567e489c060ad2 by gregkh
CIFS: Fix read after write for files with read caching
commit 6dfbd84684700cb58b34e8602c01c12f3d2595c8 upstream.
When we have a READ lease for a file and have just issued a write
operation to the server we need to purge the cache and set oplock/lease
level to NONE to avoid reading stale data. Currently we do that only if
a write operation succedeed thus not covering cases when a request was
sent to the server but a negative error code was returned later for some
other reasons (e.g. -EIOCBQUEUED or -EINTR). Fix this by turning off
caching regardless of the error code being returned.
The patches fixes generic tests 075 and 112 from the xfs-tests.
Cc: <stable@vger.kernel.org> Signed-off-by: Pavel Shilovsky
<pshilov@microsoft.com> Signed-off-by: Steve French
<stfrench@microsoft.com> Reviewed-by: Ronnie Sahlberg
<lsahlber@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/file.c (diff)
Commit c892f4ee3db2d45ac78172fd2de4fb5e642d6f7b by gregkh
smb3: make default i/o size for smb3 mounts larger
commit e8506d25f740fd058791cc12a6dfa9386ada6b96 upstream.
We negotiate rsize mounts (and it can be overridden by user) to
typically 4MB, so using larger default I/O sizes from userspace
(changing to 1MB default i/o size returned by stat) the performance is
much better (and not just for long latency network connections) in most
use cases for SMB3 than the default I/O size (which ends up being 128K
for cp and can be even smaller for cp). This can be 4x slower or worse
depending on network latency.
By changing inode->blocksize from 32K (which was perhaps ok for very old
SMB1/CIFS) to a larger value, 1MB (but still less than max size
negotiated with the server which is 4MB, in order to minimize risk) it
significantly increases performance for the noncached case, and slightly
increases it for the cached case. This can be changed by the user on
mount (specifying bsize= values from 16K to 16MB) to tune better for
performance for applications that depend on blocksize.
Signed-off-by: Steve French <stfrench@microsoft.com> Reviewed-by: Ronnie
Sahlberg <lsahlber@redhat.com> CC: Stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/cifs_fs_sb.h (diff)
The file was modifiedfs/cifs/cifsfs.c (diff)
The file was modifiedfs/cifs/connect.c (diff)
The file was modifiedfs/cifs/inode.c (diff)
The file was modifiedfs/cifs/cifsglob.h (diff)
Commit e5cde571ee5fef726d62a013c7aeef53705dfd32 by gregkh
tracing: Use strncpy instead of memcpy for string keys in hist triggers
commit 9f0bbf3115ca9f91f43b7c74e9ac7d79f47fc6c2 upstream.
Because there may be random garbage beyond a string's null terminator,
it's not correct to copy the the complete character array for use as a
hist trigger key.  This results in multiple histogram entries for the
'same' string key.
So, in the case of a string key, use strncpy instead of memcpy to avoid
copying in the extra bytes.
Before, using the gdbus entries in the following hist trigger as an
example:
  # echo 'hist:key=comm' >
/sys/kernel/debug/tracing/events/sched/sched_waking/trigger
# cat /sys/kernel/debug/tracing/events/sched/sched_waking/hist
  ...
  { comm: ImgDecoder #4                      } hitcount:        203
{ comm: gmain                              } hitcount:        213
{ comm: gmain                              } hitcount:        216
{ comm: StreamTrans #73                    } hitcount:        221
{ comm: mozStorage #3                      } hitcount:        230
{ comm: gdbus                              } hitcount:        233
{ comm: StyleThread#5                      } hitcount:        253
{ comm: gdbus                              } hitcount:        256
{ comm: gdbus                              } hitcount:        260
{ comm: StyleThread#4                      } hitcount:        271
  ...
  # cat /sys/kernel/debug/tracing/events/sched/sched_waking/hist | egrep
gdbus | wc -l
51
After:
  # cat /sys/kernel/debug/tracing/events/sched/sched_waking/hist | egrep
gdbus | wc -l
1
Link:
http://lkml.kernel.org/r/50c35ae1267d64eee975b8125e151e600071d4dc.1549309756.git.tom.zanussi@linux.intel.com
Cc: Namhyung Kim <namhyung@kernel.org> Cc: stable@vger.kernel.org Fixes:
79e577cbce4c4 ("tracing: Support string type key properly")
Signed-off-by: Tom Zanussi <tom.zanussi@linux.intel.com> Signed-off-by:
Steven Rostedt (VMware) <rostedt@goodmis.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/trace/trace_events_hist.c (diff)
Commit aca126f4a451b36fc6841d7bf76b3a5f4e5d3b01 by gregkh
tracing: Do not free iter->trace in fail path of tracing_open_pipe()
commit e7f0c424d0806b05d6f47be9f202b037eb701707 upstream.
Commit d716ff71dd12 ("tracing: Remove taking of trace_types_lock in pipe
files") use the current tracer instead of the copy in
tracing_open_pipe(), but it forget to remove the freeing sentence in the
error path.
There's an error path that can call kfree(iter->trace) after the
iter->trace was assigned to tr->current_trace, which would be bad to
free.
Link:
http://lkml.kernel.org/r/1550060946-45984-1-git-send-email-yi.zhang@huawei.com
Cc: stable@vger.kernel.org Fixes: d716ff71dd12 ("tracing: Remove taking
of trace_types_lock in pipe files") Signed-off-by: zhangyi (F)
<yi.zhang@huawei.com> Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedkernel/trace/trace.c (diff)
Commit 020c90c694dc36b345eeecc59ac48eae88faa983 by gregkh
tracing/perf: Use strndup_user() instead of buggy open-coded version
commit 83540fbc8812a580b6ad8f93f4c29e62e417687e upstream.
The first version of this method was missing the check for
`ret == PATH_MAX`; then such a check was added, but it didn't call
kfree() on error, so there was still a small memory leak in the error
case. Fix it by using strndup_user() instead of open-coding it.
Link: http://lkml.kernel.org/r/20190220165443.152385-1-jannh@google.com
Cc: Ingo Molnar <mingo@kernel.org> Cc: stable@vger.kernel.org Fixes:
0eadcc7a7bc0 ("perf/core: Fix perf_uprobe_init()") Reviewed-by: Masami
Hiramatsu <mhiramat@kernel.org> Acked-by: Song Liu
<songliubraving@fb.com> Signed-off-by: Jann Horn <jannh@google.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/trace/trace_event_perf.c (diff)
Commit c0b8e1d95cbf94e53ba991339761d03e523f2e00 by gregkh
vmw_balloon: release lock on error in vmballoon_reset()
commit d04071a5d6413b65f17f7bd6e2bdb22e22e4ace7 upstream.
We added some locking to this function but forgot to drop the lock on
these two error paths.  This bug would lead to an immediate deadlock.
Fixes: c7b3690fb152 ("vmw_balloon: stats rework") Signed-off-by: Dan
Carpenter <dan.carpenter@oracle.com> Cc: stable@vger.kernel.org
Reviewed-by: Nadav Amit <namit@vmware.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/misc/vmw_balloon.c (diff)
Commit 050b87cb66c641b389008b35f1146ec9d70188a8 by gregkh
xen: fix dom0 boot on huge systems
commit 01bd2ac2f55a1916d81dace12fa8d7ae1c79b5ea upstream.
Commit f7c90c2aa40048 ("x86/xen: don't write ptes directly in 32-bit PV
guests") introduced a regression for booting dom0 on huge systems with
lots of RAM (in the TB range).
Reason is that on those hosts the p2m list needs to be moved early in
the boot process and this requires temporary page tables to be created.
Said commit modified xen_set_pte_init() to use a hypercall for writing a
PTE, but this requires the page table being in the direct mapped area,
which is not the case for the temporary page tables used in
xen_relocate_p2m().
As the page tables are completely written before being linked to the
actual address space instead of set_pte() a plain write to memory can be
used in xen_relocate_p2m().
Fixes: f7c90c2aa40048 ("x86/xen: don't write ptes directly in 32-bit PV
guests") Cc: stable@vger.kernel.org Signed-off-by: Juergen Gross
<jgross@suse.com> Reviewed-by: Jan Beulich <jbeulich@suse.com>
Signed-off-by: Juergen Gross <jgross@suse.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/xen/mmu_pv.c (diff)
Commit cb1c7a9d2897b70d44e8e8b88b67c933c52fb11b by gregkh
ACPI / device_sysfs: Avoid OF modalias creation for removed device
commit f16eb8a4b096514ac06fb25bf599dcc792899b3d upstream.
If SSDT overlay is loaded via ConfigFS and then unloaded the device, we
would like to have OF modalias for, already gone. Thus, acpi_get_name()
returns no allocated buffer for such case and kernel crashes afterwards:
ACPI: Host-directed Dynamic ACPI Table Unload
ads7950 spi-PRP0001:00: Dropping the link to regulator.0
BUG: unable to handle kernel NULL pointer dereference at
0000000000000000
#PF error: [normal kernel read fault]
PGD 80000000070d6067 P4D 80000000070d6067 PUD 70d0067 PMD 0
Oops: 0000 [#1] SMP PTI
CPU: 0 PID: 40 Comm: kworker/u4:2 Not tainted 5.0.0+ #96
Hardware name: Intel Corporation Merrifield/BODEGA BAY, BIOS 542
2015.01.21:18.19.48
Workqueue: kacpi_hotplug acpi_device_del_work_fn
RIP: 0010:create_of_modalias.isra.1+0x4c/0x150
Code: 00 00 48 89 44 24 18 31 c0 48 8d 54 24 08 48 c7 44 24 10 00 00 00
00 48 c7 44 24 08 ff ff ff ff e8 7a b0 03 00 48 8b 4c 24 10 <0f> b6 01
84 c0 74 27 48 c7 c7 00 09 f4 a5 0f b6 f0 8d 50 20 f6 04
RSP: 0000:ffffa51040297c10 EFLAGS: 00010246
RAX: 0000000000001001 RBX: 0000000000000785 RCX: 0000000000000000
RDX: 0000000000001001 RSI: 0000000000000286 RDI: ffffa2163dc042e0
RBP: ffffa216062b1196 R08: 0000000000001001 R09: ffffa21639873000
R10: ffffffffa606761d R11: 0000000000000001 R12: ffffa21639873218
R13: ffffa2163deb5060 R14: ffffa216063d1010 R15: 0000000000000000
FS:  0000000000000000(0000) GS:ffffa2163e000000(0000)
knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000007114000 CR4: 00000000001006f0
Call Trace:
__acpi_device_uevent_modalias+0xb0/0x100
spi_uevent+0xd/0x40
...
In order to fix above let create_of_modalias() check the status returned
by acpi_get_name() and bail out in case of failure.
Fixes: 8765c5ba1949 ("ACPI / scan: Rework modalias creation when
"compatible" is present") Link:
https://bugzilla.kernel.org/show_bug.cgi?id=201381 Reported-by: Ferry
Toth <fntoth@gmail.com> Tested-by: Ferry Toth<fntoth@gmail.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Cc: 4.1+
<stable@vger.kernel.org> # 4.1+ Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/acpi/device_sysfs.c (diff)
Commit 351062f08fc1b57f33f29ceeee7dc67a9e39b5c4 by gregkh
mmc: sdhci-esdhc-imx: fix HS400 timing issue
commit de0a0decf2edfc5b0c782915f4120cf990a9bd13 upstream.
Now tuning reset will be done when the timing is MMC_TIMING_LEGACY/
MMC_TIMING_MMC_HS/MMC_TIMING_SD_HS. But for timing MMC_TIMING_MMC_HS, we
can not do tuning reset, otherwise HS400 timing is not right.
Here is the process of init HS400, first finish tuning in HS200 mode,
then switch to HS mode and 8 bit DDR mode, finally switch to HS400 mode.
If we do tuning reset in HS mode, this will cause HS400 mode lost the
tuning setting, which will cause CRC error.
Signed-off-by: Haibo Chen <haibo.chen@nxp.com> Cc:
stable@vger.kernel.org # v4.12+ Acked-by: Adrian Hunter
<adrian.hunter@intel.com> Fixes: d9370424c948 ("mmc: sdhci-esdhc-imx:
reset tuning circuit when power on mmc card") Signed-off-by: Ulf Hansson
<ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/sdhci-esdhc-imx.c (diff)
Commit aaf1e755f8f9c6a4b6cf8514352164940db78cbd by gregkh
mmc: renesas_sdhi: Fix card initialization failure in high speed mode
commit d30ae056adb81e1d2b8b953efa74735a020b8e3b upstream.
This fixes card initialization failure in high speed mode.
If U-Boot uses SDR or HS200/400 mode before starting Linux and Linux DT
does not enable SDR/HS200/HS400 mode, card initialization fails in high
speed mode.
It is necessary to initialize SCC registers during card initialization
phase. HW reset function is registered only for a port with either of
SDR/HS200/HS400 properties in device tree. If SDR/HS200/HS400 properties
are not present in device tree, SCC registers will not be reset. In SoC
that support SCC registers, HW reset function should be registered
regardless of the configuration of device tree.
Reproduction procedure:
- Use U-Boot that support MMC HS200/400 mode.
- Delete HS200/HS400 properties in device tree.
(Delete mmc-hs200-1_8v and mmc-hs400-1_8v)
- MMC port works high speed mode and all commands fail.
Signed-off-by: Takeshi Saito <takeshi.saito.xv@renesas.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com> Cc: Niklas
Söderlund <niklas.soderlund+renesas@ragnatech.se> Cc: Simon Horman
<horms+renesas@verge.net.au> Reviewed-by: Wolfram Sang
<wsa+renesas@sang-engineering.com> Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/renesas_sdhi_core.c (diff)
Commit 4a9932c94626ea4a574a91bfca64423ae8c0695d by gregkh
mmc:fix a bug when max_discard is 0
commit d4721339dcca7def04909a8e60da43c19a24d8bf upstream.
The original purpose of the code I fix is to replace max_discard with
max_trim if max_trim is less than max_discard. When max_discard is 0 we
should replace max_discard with max_trim as well, because max_discard
equals 0 happens only when the max_do_calc_max_discard process is
overflowed, so if mmc_can_trim(card) is true, max_discard should be
replaced by an available max_trim. However, in the original code, there
are two lines of code interfere the right process. 1) if (max_discard &&
mmc_can_trim(card)) when max_discard is 0, it skips the process checking
if max_discard needs to be replaced with max_trim. 2) if (max_trim <
max_discard) the condition is false when max_discard is 0. it also skips
the process that replaces max_discard with max_trim, in fact, we should
replace the 0-valued max_discard with max_trim.
Signed-off-by: Jiong Wu <Lohengrin1024@gmail.com> Fixes: b305882fbc87
(mmc: core: optimize mmc_calc_max_discard) Cc: stable@vger.kernel.org #
v4.17+ Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/core/core.c (diff)
Commit 5d919139baf9d609895425c44fa51779fb558536 by gregkh
spi: ti-qspi: Fix mmap read when more than one CS in use
commit 673c865efbdc5fec3cc525c46d71844d42c60072 upstream.
Commit 4dea6c9b0b64 ("spi: spi-ti-qspi: add mmap mode read support") has
has got order of parameter wrong when calling regmap_update_bits() to
select CS for mmap access. Mask and value arguments are interchanged.
Code will work on a system with single slave, but fails when more than
one CS is in use. Fix this by correcting the order of parameters when
calling regmap_update_bits().
Fixes: 4dea6c9b0b64 ("spi: spi-ti-qspi: add mmap mode read support") Cc:
stable@vger.kernel.org Signed-off-by: Vignesh R <vigneshr@ti.com>
Signed-off-by: Mark Brown <broonie@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/spi/spi-ti-qspi.c (diff)
Commit 7406a055c507313cdd9e0c628127ed4a3c8876c0 by gregkh
spi: pxa2xx: Setup maximum supported DMA transfer length
commit ef070b4e4aa25bb5f8632ad196644026c11903bf upstream.
When the commit b6ced294fb61
   ("spi: pxa2xx: Switch to SPI core DMA mapping functionality")
switches to SPI core provided DMA helpers, it missed to setup maximum
supported DMA transfer length for the controller and thus users
mistakenly try to send more data than supported with the following
warning:
  ili9341 spi-PRP0001:01: DMA disabled for transfer length 153600
greater than 65536
Setup maximum supported DMA transfer length in order to make users know
the limit.
Fixes: b6ced294fb61 ("spi: pxa2xx: Switch to SPI core DMA mapping
functionality") Signed-off-by: Andy Shevchenko
<andriy.shevchenko@linux.intel.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/spi/spi-pxa2xx.c (diff)
Commit 6184910148467a7e7fc9e8036aceda495b28ac78 by gregkh
spi: omap2-mcspi: Fix DMA and FIFO event trigger size mismatch
commit baf8b9f8d260c55a86405f70a384c29cda888476 upstream.
Commit b682cffa3ac6 ("spi: omap2-mcspi: Set FIFO DMA trigger level to
word length") broke SPI transfers where bits_per_word != 8. This is
because of mimsatch between McSPI FIFO level event trigger size (SPI
word length) and DMA request size(word length * maxburst). This leads to
data corruption, lockup and errors like:
spi1.0: EOW timed out
Fix this by setting DMA maxburst size to 1 so that McSPI FIFO level
event trigger size matches DMA request size.
Fixes: b682cffa3ac6 ("spi: omap2-mcspi: Set FIFO DMA trigger level to
word length") Cc: stable@vger.kernel.org Reported-by: David Lechner
<david@lechnology.com> Tested-by: David Lechner <david@lechnology.com>
Signed-off-by: Vignesh R <vigneshr@ti.com> Signed-off-by: Mark Brown
<broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/spi/spi-omap2-mcspi.c (diff)
Commit a34758ac6ad4f33edb99caaecf27f0a76d3142a5 by gregkh
spi: spi-gpio: fix SPI_CS_HIGH capability
commit b89fefda7d4e3a649129584d855be233c7465264 upstream.
spi-gpio is capable of dealing with active-high chip-selects.
Unfortunately, commit 4b859db2c606 ("spi: spi-gpio: add SPI_3WIRE
support") broke this by setting master->mode_bits, which overrides the
setting in the spi-bitbang code.  Fix this.
[Fixed a trivial conflict with SPI_3WIRE_HIZ support -- broonie]
Fixes: 4b859db2c606 ("spi: spi-gpio: add SPI_3WIRE support")
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> Signed-off-by:
Mark Brown <broonie@kernel.org> Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/spi/spi-gpio.c (diff)
Commit 4527a24a8f518edf6ad8f74c0ca4fdf6f027b2ad by gregkh
regulator: s2mps11: Fix steps for buck7, buck8 and LDO35
commit 56b5d4ea778c1b0989c5cdb5406d4a488144c416 upstream.
LDO35 uses 25 mV step, not 50 mV.  Bucks 7 and 8 use 12.5 mV step
instead of 6.25 mV.  Wrong step caused over-voltage (LDO35) or
under-voltage (buck7 and 8) if regulators were used (e.g. on Exynos5420
Arndale Octa board).
Cc: <stable@vger.kernel.org> Fixes: cb74685ecb39 ("regulator: s2mps11:
Add samsung s2mps11 regulator driver") Signed-off-by: Krzysztof
Kozlowski <krzk@kernel.org> Signed-off-by: Mark Brown
<broonie@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/regulator/s2mps11.c (diff)
Commit 60cb8b444fbf641b8ca36be3a6f99e51d3e213f6 by gregkh
regulator: max77620: Initialize values for DT properties
commit 0ab66b3c326ef8f77dae9f528118966365757c0c upstream.
If regulator DT node doesn't exist, its of_parse_cb callback function
isn't called. Then all values for DT properties are filled with zero.
This leads to wrong register update for FPS and POK settings.
Signed-off-by: Jinyoung Park <jinyoungp@nvidia.com> Signed-off-by: Mark
Zhang <markz@nvidia.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Cc: stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/regulator/max77620-regulator.c (diff)
Commit 6b65a01d2dcc6ff096d5db0d9ced5354b5b86a52 by gregkh
regulator: s2mpa01: Fix step values for some LDOs
commit 28c4f730d2a44f2591cb104091da29a38dac49fe upstream.
The step values for some of the LDOs appears to be incorrect, resulting
in incorrect voltages (or at least, ones which are different from the
Samsung 3.4 vendor kernel).
Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Signed-off-by: Mark
Brown <broonie@kernel.org> Cc: stable@vger.kernel.org Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/regulator/s2mpa01.c (diff)
Commit 9d67c5e995dabb1e75740e01e6d4f202d68a285b by gregkh
mt76: fix corrupted software generated tx CCMP PN
commit 906d2d3f874a54183df5a609fda180adf0462428 upstream.
Since ccmp_pn is u8 *, the second half needs to start at array index 4
instead of 0. Fixes a connection stall after a certain amount of traffic
Fixes: 23405236460b9 ("mt76: fix transmission of encrypted management
frames") Cc: stable@vger.kernel.org Signed-off-by: Felix Fietkau
<nbd@nbd.name> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/wireless/mediatek/mt76/mt76x02_mac.c (diff)
Commit de90b88a20de2fbb10811c8505aa493a4620a5f4 by gregkh
clocksource/drivers/exynos_mct: Move one-shot check from tick clear to
ISR
commit a5719a40aef956ba704f2aa1c7b977224d60fa96 upstream.
When a timer tick occurs and the clock is in one-shot mode, the timer
needs to be stopped to prevent it triggering subsequent interrupts.
Currently this code is in exynos4_mct_tick_clear(), but as it is only
needed when an ISR occurs move it into exynos4_mct_tick_isr(), leaving
exynos4_mct_tick_clear() just doing what its name suggests it should.
Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Tested-by: Marek
Szyprowski <m.szyprowski@samsung.com> Cc: stable@vger.kernel.org # v4.3+
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clocksource/exynos_mct.c (diff)
Commit 773b445425d67891fb58c47d7e059a32c0e99c76 by gregkh
clocksource/drivers/exynos_mct: Clear timer interrupt when shutdown
commit d2f276c8d3c224d5b493c42b6cf006ae4e64fb1c upstream.
When shutting down the timer, ensure that after we have stopped the
timer any pending interrupts are cleared. This fixes a problem when
suspending, as interrupts are disabled before the timer is stopped, so
the timer interrupt may still be asserted, preventing the system
entering a low power state when the wfi is executed.
Signed-off-by: Stuart Menefy <stuart.menefy@mathembedded.com>
Reviewed-by: Krzysztof Kozlowski <krzk@kernel.org> Tested-by: Marek
Szyprowski <m.szyprowski@samsung.com> Cc: <stable@vger.kernel.org> #
v4.3+ Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clocksource/exynos_mct.c (diff)
Commit 4b280a0bfc6d977148915dfbe27ef3af68ac6597 by gregkh
clocksource/drivers/arch_timer: Workaround for Allwinner A64 timer
instability
commit c950ca8c35eeb32224a63adc47e12f9e226da241 upstream.
The Allwinner A64 SoC is known[1] to have an unstable architectural
timer, which manifests itself most obviously in the time jumping forward
a multiple of 95 years[2][3]. This coincides with 2^56 cycles at a timer
frequency of 24 MHz, implying that the time went slightly backward
(and this was interpreted by the kernel as it jumping forward and
wrapping around past the epoch).
Investigation revealed instability in the low bits of CNTVCT at the
point a high bit rolls over. This leads to power-of-two cycle forward
and backward jumps. (Testing shows that forward jumps are about twice as
likely as backward jumps.) Since the counter value returns to normal
after an indeterminate read, each "jump" really consists of both a
forward and backward jump from the software perspective.
Unless the kernel is trapping CNTVCT reads, a userspace program is able
to read the register in a loop faster than it changes. A test program
running on all 4 CPU cores that reported jumps larger than 100 ms was
run for 13.6 hours and reported the following:
Count | Event
-------+---------------------------
9940 | jumped backward      699ms
  268 | jumped backward     1398ms
    1 | jumped backward     2097ms
16020 | jumped forward       175ms
6443 | jumped forward       699ms
2976 | jumped forward      1398ms
    9 | jumped forward    356516ms
    9 | jumped forward    357215ms
    4 | jumped forward    714430ms
    1 | jumped forward   3578440ms
This works out to a jump larger than 100 ms about every 5.5 seconds on
each CPU core.
The largest jump (almost an hour!) was the following sequence of reads:
   0x0000007fffffffff → 0x00000093feffffff → 0x0000008000000000
Note that the middle bits don't necessarily all read as all zeroes or
all ones during the anomalous behavior; however the low 10 bits checked
by the function in this patch have never been observed with any other
value.
Also note that smaller jumps are much more common, with backward jumps
of 2048 (2^11) cycles observed over 400 times per second on each core.
(Of course, this is partially explained by lower bits rolling over more
frequently.) Any one of these could have caused the 95 year time skip.
Similar anomalies were observed while reading CNTPCT (after patching the
kernel to allow reads from userspace). However, the CNTPCT jumps are
much less frequent, and only small jumps were observed. The same program
as before (except now reading CNTPCT) observed after 72 hours:
Count | Event
-------+---------------------------
   17 | jumped backward      699ms
   52 | jumped forward       175ms
2831 | jumped forward       699ms
    5 | jumped forward      1398ms
Further investigation showed that the instability in CNTPCT/CNTVCT also
affected the respective timer's TVAL register. The following values were
observed immediately after writing CNVT_TVAL to 0x10000000:
CNTVCT             | CNTV_TVAL  | CNTV_CVAL          | CNTV_TVAL Error
--------------------+------------+--------------------+-----------------
0x000000d4a2d8bfff | 0x10003fff | 0x000000d4b2d8bfff | +0x00004000
0x000000d4a2d94000 | 0x0fffffff | 0x000000d4b2d97fff | -0x00004000
0x000000d4a2d97fff | 0x10003fff | 0x000000d4b2d97fff | +0x00004000
0x000000d4a2d9c000 | 0x0fffffff | 0x000000d4b2d9ffff | -0x00004000
The pattern of errors in CNTV_TVAL seemed to depend on exactly which
value was written to it. For example, after writing 0x10101010:
CNTVCT             | CNTV_TVAL  | CNTV_CVAL          | CNTV_TVAL Error
--------------------+------------+--------------------+-----------------
0x000001ac3effffff | 0x1110100f | 0x000001ac4f10100f | +0x1000000
0x000001ac40000000 | 0x1010100f | 0x000001ac5110100f | -0x1000000
0x000001ac58ffffff | 0x1110100f | 0x000001ac6910100f | +0x1000000
0x000001ac66000000 | 0x1010100f | 0x000001ac7710100f | -0x1000000
0x000001ac6affffff | 0x1110100f | 0x000001ac7b10100f | +0x1000000
0x000001ac6e000000 | 0x1010100f | 0x000001ac7f10100f | -0x1000000
I was also twice able to reproduce the issue covered by Allwinner's
workaround[4], that writing to TVAL sometimes fails, and both CVAL and
TVAL are left with entirely bogus values. One was the following values:
CNTVCT             | CNTV_TVAL  | CNTV_CVAL
--------------------+------------+--------------------------------------
0x000000d4a2d6014c | 0x8fbd5721 | 0x000000d132935fff (615s in the past)
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
========================================================================
Because the CPU can read the CNTPCT/CNTVCT registers faster than they
change, performing two reads of the register and comparing the high bits
(like other workarounds) is not a workable solution. And because the
timer can jump both forward and backward, no pair of reads can
distinguish a good value from a bad one. The only way to guarantee a
good value from consecutive reads would be to read _three_ times, and
take the middle value only if the three values are 1) each unique and 2)
increasing. This takes at minimum 3 counter cycles (125 ns), or more if
an anomaly is detected.
However, since there is a distinct pattern to the bad values, we can
optimize the common case (1022/1024 of the time) to a single read by
simply ignoring values that match the error pattern. This still takes no
more than 3 cycles in the worst case, and requires much less code. As an
additional safety check, we still limit the loop iteration to the number
of max-frequency (1.2 GHz) CPU cycles in three 24 MHz counter periods.
For the TVAL registers, the simple solution is to not use them. Instead,
read or write the CVAL and calculate the TVAL value in software.
Although the manufacturer is aware of at least part of the erratum[4],
there is no official name for it. For now, use the kernel-internal name
"UNKNOWN1".
[1]: https://github.com/armbian/build/commit/a08cd6fe7ae9
[2]: https://forum.armbian.com/topic/3458-a64-datetime-clock-issue/
[3]: https://irclog.whitequark.org/linux-sunxi/2018-01-26
[4]:
https://github.com/Allwinner-Homlet/H6-BSP4.9-linux/blob/master/drivers/clocksource/arm_arch_timer.c#L272
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Tested-by: Andre
Przywara <andre.przywara@arm.com> Signed-off-by: Samuel Holland
<samuel@sholland.org> Cc: stable@vger.kernel.org Signed-off-by: Daniel
Lezcano <daniel.lezcano@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/clocksource/Kconfig (diff)
The file was modifieddrivers/clocksource/arm_arch_timer.c (diff)
The file was modifiedDocumentation/arm64/silicon-errata.txt (diff)
Commit 2aa8ab08c82c68cedc09a9e0d19f568b16ad0fe5 by gregkh
s390: vfio_ap: link the vfio_ap devices to the vfio_ap bus subsystem
commit 36360658eb5a6cf04bb9f2704d1e4ce54037ec99 upstream.
Libudev relies on having a subsystem link for non-root devices. To avoid
libudev (and potentially other userspace tools) choking on the matrix
device let us introduce a matrix bus and with it the matrix bus
subsytem. Also make the matrix device reside within the matrix bus.
Doing this we remove the forced link from the matrix device to the
vfio_ap driver and the device_type we do not need anymore.
Since the associated matrix driver is not the vfio_ap driver any more,
we have to change the search for the devices on the vfio_ap driver in
the function vfio_ap_verify_queue_reserved. Fixes: 1fde573413b5 ("s390:
vfio-ap: base implementation of VFIO AP device driver") Cc:
stable@vger.kernel.org
Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com> Reported-by:
Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Pierre
Morel <pmorel@linux.ibm.com> Tested-by: Christian Borntraeger
<borntraeger@de.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Tony Krowiak <akrowiak@linux.ibm.com> Acked-by: Halil Pasic
<pasic@linux.ibm.com> Signed-off-by: Martin Schwidefsky
<schwidefsky@de.ibm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/s390/crypto/vfio_ap_drv.c (diff)
The file was modifieddrivers/s390/crypto/vfio_ap_private.h (diff)
The file was modifieddrivers/s390/crypto/vfio_ap_ops.c (diff)
Commit 39fdc16138b799d2603d9b18ba4d4059df8f54cc by gregkh
s390/setup: fix early warning messages
commit 8727638426b0aea59d7f904ad8ddf483f9234f88 upstream.
The setup_lowcore() function creates a new prefix page for the boot CPU.
The PSW mask for the system_call, external interrupt, i/o interrupt and
the program check handler have the DAT bit set in this new prefix page.
At the time setup_lowcore is called the system still runs without
virtual address translation, the paging_init() function creates the
kernel page table and loads the CR13 with the kernel ASCE.
Any code between setup_lowcore() and the end of paging_init() that has a
BUG or WARN statement will create a program check that can not be
handled correctly as there is no kernel page table yet.
To allow early WARN statements initially setup the lowcore with DAT off
and set the DAT bit only after paging_init() has completed.
Cc: stable@vger.kernel.org Signed-off-by: Martin Schwidefsky
<schwidefsky@de.ibm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/s390/kernel/setup.c (diff)
Commit ffd4a428a54efe2f6bad6d0e63df605cbc90b3bb by gregkh
s390/virtio: handle find on invalid queue gracefully
commit 3438b2c039b4bf26881786a1f3450f016d66ad11 upstream.
A queue with a capacity of zero is clearly not a valid virtio queue.
Some emulators report zero queue size if queried with an invalid queue
index. Instead of crashing in this case let us just return -ENOENT. To
make that work properly, let us fix the notifier cleanup logic as well.
Cc: stable@vger.kernel.org Signed-off-by: Halil Pasic
<pasic@linux.ibm.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/s390/virtio/virtio_ccw.c (diff)
Commit bd1558978695b42263d2ee7d612e8aee1bf55f59 by gregkh
scsi: virtio_scsi: don't send sc payload with tmfs
commit 3722e6a52174d7c3a00e6f5efd006ca093f346c1 upstream.
The virtio scsi spec defines struct virtio_scsi_ctrl_tmf as a set of
device-readable records and a single device-writable response entry:
    struct virtio_scsi_ctrl_tmf
   {
       // Device-readable part
       le32 type;
       le32 subtype;
       u8 lun[8];
       le64 id;
       // Device-writable part
       u8 response;
   }
The above should be organised as two descriptor entries (or potentially
more if using VIRTIO_F_ANY_LAYOUT), but without any extra data after
"le64 id" or after "u8 response".
The Linux driver doesn't respect that, with virtscsi_abort() and
virtscsi_device_reset() setting cmd->sc before calling virtscsi_tmf().
It results in the original scsi command payload (or writable buffers)
added to the tmf.
This fixes the problem by leaving cmd->sc zeroed out, which makes
virtscsi_kick_cmd() add the tmf to the control vq without any payload.
Cc: stable@vger.kernel.org Signed-off-by: Felipe Franciosi
<felipe@nutanix.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/virtio_scsi.c (diff)
Commit 1ba35e5a3c5ce1bfbb753438349c9151341c558b by gregkh
scsi: aacraid: Fix performance issue on logical drives
commit 0015437cc046e5ec2b57b00ff8312b8d432eac7c upstream.
Fix performance issue where the queue depth for SmartIOC logical volumes
is set to 1, and allow the usual logical volume code to be executed
Fixes: a052865fe287 (aacraid: Set correct Queue Depth for HBA1000 RAW
disks) Cc: stable@vger.kernel.org Signed-off-by: Sagar Biradar
<Sagar.Biradar@microchip.com> Reviewed-by: Dave Carroll
<david.carroll@microsemi.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/aacraid/linit.c (diff)
Commit 6c922faf889a49ef95120ae700398f30941e9466 by gregkh
scsi: sd: Optimal I/O size should be a multiple of physical block size
commit a83da8a4509d3ebfe03bb7fffce022e4d5d4764f upstream.
It was reported that some devices report an OPTIMAL TRANSFER LENGTH of
0xFFFF blocks. That looks bogus, especially for a device with a
4096-byte physical block size.
Ignore OPTIMAL TRANSFER LENGTH if it is not a multiple of the device's
reported physical block size.
To make the sanity checking conditionals more readable--and to
facilitate printing warnings--relocate the checking to a helper
function. No functional change aside from the printks.
Cc: <stable@vger.kernel.org> Bugzilla:
https://bugzilla.kernel.org/show_bug.cgi?id=199759 Reported-by:
Christoph Anton Mitterer <calestyo@scientia.net> Reviewed-by: Christoph
Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/sd.c (diff)
Commit 7d6d14a119c861d349257e3c3f2c84a18580413c by gregkh
scsi: target/iscsi: Avoid iscsit_release_commands_from_conn() deadlock
commit 32e36bfbcf31452a854263e7c7f32fbefc4b44d8 upstream.
When using SCSI passthrough in combination with the iSCSI target driver
then cmd->t_state_lock may be obtained from interrupt context. Hence,
all code that obtains cmd->t_state_lock from thread context must disable
interrupts first. This patch avoids that lockdep reports the following:
WARNING: inconsistent lock state 4.18.0-dbg+ #1 Not tainted
-------------------------------- inconsistent {HARDIRQ-ON-W} ->
{IN-HARDIRQ-W} usage. iscsi_ttx/1800 [HC1[1]:SC0[2]:HE0:SE0] takes:
000000006e7b0ceb (&(&cmd->t_state_lock)->rlock){?...}, at:
target_complete_cmd+0x47/0x2c0 [target_core_mod]
{HARDIRQ-ON-W} state was registered at:
lock_acquire+0xd2/0x260
_raw_spin_lock+0x32/0x50
iscsit_close_connection+0x97e/0x1020 [iscsi_target_mod]
iscsit_take_action_for_connection_exit+0x108/0x200 [iscsi_target_mod]
iscsi_target_rx_thread+0x180/0x190 [iscsi_target_mod]
kthread+0x1cf/0x1f0
ret_from_fork+0x24/0x30 irq event stamp: 1281 hardirqs last  enabled at
(1279): [<ffffffff970ade79>] __local_bh_enable_ip+0xa9/0x160 hardirqs
last disabled at (1281): [<ffffffff97a008a5>] interrupt_entry+0xb5/0xd0
softirqs last  enabled at (1278): [<ffffffff977cd9a1>]
lock_sock_nested+0x51/0xc0 softirqs last disabled at (1280):
[<ffffffffc07a6e04>] ip6_finish_output2+0x124/0xe40 [ipv6]
other info that might help us debug this: Possible unsafe locking
scenario:
      CPU0
     ----
lock(&(&cmd->t_state_lock)->rlock);
<Interrupt>
  lock(&(&cmd->t_state_lock)->rlock);
The file was modifieddrivers/target/iscsi/iscsi_target.c (diff)
Commit 54e834ee7a6eeb1a6c520a3fa28c39c589147a97 by gregkh
scsi: qla2xxx: Fix LUN discovery if loop id is not assigned yet by
firmware
commit ec322937a7f152d68755dc8316523bf6f831b48f upstream.
This patch fixes LUN discovery when loop ID is not yet assigned by the
firmware during driver load/sg_reset operations. Driver will now search
for new loop id before retrying login.
Fixes: 48acad099074 ("scsi: qla2xxx: Fix N2N link re-connect") Cc:
stable@vger.kernel.org #4.19 Signed-off-by: Himanshu Madhani
<hmadhani@marvell.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/qla2xxx/qla_init.c (diff)
Commit f54e2394acf740b8c9efa3755aba0b474fd1b95f by gregkh
scsi: qla2xxx: Avoid PCI IRQ affinity mapping when multiqueue is not
supported
commit f3e026951771bceb17319a4d0d6121ca58746c88 upstream.
This patch fixes warning seen when BLK-MQ is enabled and hardware does
not support MQ. This will result into driver requesting MSIx vectors
which are equal or less than pre_desc via PCI IRQ Affinity
infrastructure.
    [   19.746300] qla2xxx [0000:00:00.0]-0005: : QLogic Fibre Channel
HBA Driver: 10.00.00.12-k.
   [   19.746599] qla2xxx [0000:02:00.0]-001d: : Found an ISP2432 irq 18
iobase 0x(____ptrval____).
   [   20.203186] ------------[ cut here ]------------
   [   20.203306] WARNING: CPU: 8 PID: 268 at drivers/pci/msi.c:1273
pci_irq_get_affinity+0xf4/0x120
   [   20.203481] Modules linked in: tg3 ptp qla2xxx(+) pps_core sg
libphy scsi_transport_fc flash loop autofs4
   [   20.203700] CPU: 8 PID: 268 Comm: systemd-udevd Not tainted
5.0.0-rc5-00358-gdf3865f #113
   [   20.203830] Call Trace:
   [   20.203933]  [0000000000461bb0] __warn+0xb0/0xe0
   [   20.204090]  [00000000006c8f34] pci_irq_get_affinity+0xf4/0x120
   [   20.204219]  [000000000068c764] blk_mq_pci_map_queues+0x24/0x120
   [   20.204396]  [00000000007162f4] scsi_map_queues+0x14/0x40
   [   20.204626]  [0000000000673654] blk_mq_update_queue_map+0x94/0xe0
   [   20.204698]  [0000000000676ce0] blk_mq_alloc_tag_set+0x120/0x300
   [   20.204869]  [000000000071077c] scsi_add_host_with_dma+0x7c/0x300
   [   20.205419]  [00000000100ead54] qla2x00_probe_one+0x19d4/0x2640
[qla2xxx]
   [   20.205621]  [00000000006b3c88] pci_device_probe+0xc8/0x160
   [   20.205697]  [0000000000701c0c] really_probe+0x1ac/0x2e0
   [   20.205770]  [0000000000701f90] driver_probe_device+0x50/0x100
   [   20.205843]  [0000000000702134] __driver_attach+0xf4/0x120
   [   20.205913]  [0000000000700644] bus_for_each_dev+0x44/0x80
   [   20.206081]  [0000000000700c98] bus_add_driver+0x198/0x220
   [   20.206300]  [0000000000702950] driver_register+0x70/0x120
   [   20.206582]  [0000000010248224] qla2x00_module_init+0x224/0x284
[qla2xxx]
   [   20.206857] ---[ end trace b1de7a3f79fab2c2 ]---
The fix is to check if the hardware does not have Multi Queue
capabiltiy, use pci_alloc_irq_vectors() call instead of
pci_alloc_irq_affinity().
Fixes: f664a3cc17b7d ("scsi: kill off the legacy IO path") Cc:
stable@vger.kernel.org #4.19 Signed-off-by: Giridhar Malavali
<gmalavali@marvell.com> Signed-off-by: Himanshu Madhani
<hmadhani@marvell.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/qla2xxx/qla_os.c (diff)
The file was modifieddrivers/scsi/qla2xxx/qla_isr.c (diff)
Commit a15cf4d9a6229cefd0d1a2696f1e51b9bbd20bef by gregkh
scsi: qla2xxx: Use complete switch scan for RSCN events
commit 1560bafdff9ed54857ac3a03c4c8d8f10d791ba6 upstream.
This patch removes unnecessary code to handle RSCN, instead performs
full scan everytime driver receives RSCN
Fixes: d4f7a16aeca6f ("scsi: qla2xxx: Remove ASYNC GIDPN switch
command") Cc: stable@vger.kernel.org #4.19 Signed-off-by: Quinn Tran
<qtran@marvell.com> Signed-off-by: Himanshu Madhani
<hmadhani@marvell.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/qla2xxx/qla_init.c (diff)
Commit 61d06e123502de4443391cc1bb2b6c1c071c9919 by gregkh
fs/devpts: always delete dcache dentry-s in dput()
commit 73052b0daee0b750b39af18460dfec683e4f5887 upstream.
d_delete only unhashes an entry if it is reached with
dentry->d_lockref.count != 1. Prior to commit 8ead9dd54716 ("devpts:
more pty driver interface cleanups"), d_delete was called on a dentry
from devpts_pty_kill with two references held, which would trigger the
unhashing, and the subsequent dputs would release it.
Commit 8ead9dd54716 reworked devpts_pty_kill to stop acquiring the
second reference from d_find_alias, and the d_delete call left the
dentries still on the hashed list without actually ever being dropped
from dcache before explicit cleanup. This causes the number of negative
dentries for devpts to pile up, and an `ls /dev/pts` invocation can take
seconds to return.
Provide always_delete_dentry() from simple_dentry_operations as
.d_delete for devpts, to make the dentry be dropped from dcache.
Without this cleanup, the number of dentries in /dev/pts/ can be grown
arbitrarily as:
`python -c 'import pty; pty.spawn(["ls", "/dev/pts"])'`
A systemtap probe on dcache_readdir to count d_subdirs shows this count
to increase with each pty spawn invocation above:
probe kernel.function("dcache_readdir") {
   subdirs = &@cast($file->f_path->dentry, "dentry")->d_subdirs;
   p = subdirs;
   p = @cast(p, "list_head")->next;
   i = 0
   while (p != subdirs) {
     p = @cast(p, "list_head")->next;
     i = i+1;
   }
   printf("number of dentries: %d\n", i);
}
Fixes: 8ead9dd54716 ("devpts: more pty driver interface cleanups")
Signed-off-by: Varad Gautam <vrd@amazon.de> Reported-by: Zheng Wang
<wanz@amazon.de> Reported-by: Brandon Schwartz <bsschwar@amazon.de>
Root-caused-by: Maximilian Heyne <mheyne@amazon.de> Root-caused-by:
Nicolas Pernas Maradei <npernas@amazon.de> CC: David Woodhouse
<dwmw@amazon.co.uk> CC: Maximilian Heyne <mheyne@amazon.de> CC: Stefan
Nuernberger <snu@amazon.de> CC: Amit Shah <aams@amazon.de> CC: Linus
Torvalds <torvalds@linux-foundation.org> CC: Greg Kroah-Hartman
<gregkh@linuxfoundation.org> CC: Al Viro <viro@ZenIV.linux.org.uk> CC:
Christian Brauner <christian.brauner@ubuntu.com> CC: Eric W. Biederman
<ebiederm@xmission.com> CC: Matthew Wilcox <willy@infradead.org> CC:
Eric Biggers <ebiggers@google.com> CC: <stable@vger.kernel.org> # 4.9+
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/devpts/inode.c (diff)
Commit ef02f9fe514878336f2440d4b0d06d2bd04096ee by gregkh
splice: don't merge into linked buffers
commit a0ce2f0aa6ad97c3d4927bf2ca54bcebdf062d55 upstream.
Before this patch, it was possible for two pipes to affect each other
after data had been transferred between them with tee():
============
$ cat tee_test.c
int main(void) {
int pipe_a[2];
if (pipe(pipe_a)) err(1, "pipe");
int pipe_b[2];
if (pipe(pipe_b)) err(1, "pipe");
if (write(pipe_a[1], "abcd", 4) != 4) err(1, "write");
if (tee(pipe_a[0], pipe_b[1], 2, 0) != 2) err(1, "tee");
if (write(pipe_b[1], "xx", 2) != 2) err(1, "write");
  char buf[5];
if (read(pipe_a[0], buf, 4) != 4) err(1, "read");
buf[4] = 0;
printf("got back: '%s'\n", buf);
}
$ gcc -o tee_test tee_test.c
$ ./tee_test got back: 'abxx'
$
============
As suggested by Al Viro, fix it by creating a separate type for
non-mergeable pipe buffers, then changing the types of buffers in
splice_pipe_to_pipe() and link_pipe().
Cc: <stable@vger.kernel.org> Fixes: 7c77f0b3f920 ("splice: implement
pipe to pipe splicing") Fixes: 70524490ee2e ("[PATCH] splice: add
support for sys_tee()") Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: Al Viro
<viro@zeniv.linux.org.uk> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/pipe.c (diff)
The file was modifiedinclude/linux/pipe_fs_i.h (diff)
The file was modifiedfs/splice.c (diff)
Commit 0fa6688a288281aad8e6352d70ac772ec14db20c by gregkh
ovl: During copy up, first copy up data and then xattrs
commit 5f32879ea35523b9842bdbdc0065e13635caada2 upstream.
If a file with capability set (and hence security.capability xattr) is
written kernel clears security.capability xattr. For overlay, during
file copy up if xattrs are copied up first and then data is, copied up.
This means data copy up will result in clearing of security.capability
xattr file on lower has. And this can result into surprises. If a lower
file has CAP_SETUID, then it should not be cleared over copy up (if
nothing was actually written to file).
This also creates problems with chown logic where it first copies up
file and then tries to clear setuid bit. But by that time
security.capability xattr is already gone (due to data copy up), and
caller gets -ENODATA. This has been reported by Giuseppe here.
https://github.com/containers/libpod/issues/2015#issuecomment-447824842
Fix this by copying up data first and then metadta. This is a regression
which has been introduced by my commit as part of metadata only copy up
patches.
TODO: There will be some corner cases where a file is copied up metadata
only and later data copy up happens and that will clear
security.capability xattr. Something needs to be done about that too.
Fixes: bd64e57586d3 ("ovl: During copy up, first copy up metadata and
then data") Cc: <stable@vger.kernel.org> # v4.19+ Reported-by: Giuseppe
Scrivano <gscrivan@redhat.com> Signed-off-by: Vivek Goyal
<vgoyal@redhat.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/overlayfs/copy_up.c (diff)
Commit 3381b362f74ce0e5ae1af117698fa5ec80534e1c by gregkh
ovl: Do not lose security.capability xattr over metadata file copy-up
commit 993a0b2aec52754f0897b1dab4c453be8217cae5 upstream.
If a file has been copied up metadata only, and later data is copied up,
upper loses any security.capability xattr it has (underlying filesystem
clears it as upon file write).
From a user's point of view, this is just a file copy-up and that should
not result in losing security.capability xattr.  Hence, before data copy
up, save security.capability xattr (if any) and restore it on upper
after data copy up is complete.
Signed-off-by: Vivek Goyal <vgoyal@redhat.com> Reviewed-by: Amir
Goldstein <amir73il@gmail.com> Fixes: 0c2888749363 ("ovl: A new xattr
OVL_XATTR_METACOPY for file on upper") Cc: <stable@vger.kernel.org> #
v4.19+ Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/overlayfs/copy_up.c (diff)
The file was modifiedfs/overlayfs/util.c (diff)
The file was modifiedfs/overlayfs/overlayfs.h (diff)
Commit 98bb142aaff299c44486d4e763c6da58fb913daf by gregkh
m68k: Add -ffreestanding to CFLAGS
commit 28713169d879b67be2ef2f84dcf54905de238294 upstream.
This patch fixes a build failure when using GCC 8.1:
/usr/bin/ld: block/partitions/ldm.o: in function `ldm_parse_tocblock':
block/partitions/ldm.c:153: undefined reference to `strcmp'
This is caused by a new optimization which effectively replaces a
strncmp() call with a strcmp() call. This affects a number of strncmp()
call sites in the kernel.
The entire class of optimizations is avoided with -fno-builtin, which
gets enabled by -ffreestanding. This may avoid possible future build
failures in case new optimizations appear in future compilers.
I haven't done any performance measurements with this patch but I did
count the function calls in a defconfig build. For example, there are
now 23 more sprintf() calls and 39 fewer strcpy() calls. The effect on
the other libc functions is smaller.
If this harms performance we can tackle that regression by optimizing
the call sites, ideally using semantic patches. That way, clang and ICC
builds might benfit too.
Cc: stable@vger.kernel.org Reference:
https://marc.info/?l=linux-m68k&m=154514816222244&w=2 Signed-off-by:
Finn Thain <fthain@telegraphics.com.au> Signed-off-by: Geert
Uytterhoeven <geert@linux-m68k.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/m68k/Makefile (diff)
Commit 80dcd07c27dfe24f79a40897d8ecac4c38b1875d by gregkh
Btrfs: setup a nofs context for memory allocation at btrfs_create_tree()
commit b89f6d1fcb30a8cbdc18ce00c7d93792076af453 upstream.
We are holding a transaction handle when creating a tree, therefore we
can not allocate the root using GFP_KERNEL, as we could deadlock if
reclaim is triggered by the allocation, therefore setup a nofs context.
Fixes: 74e4d82757f74 ("btrfs: let callers of btrfs_alloc_root pass gfp
flags") CC: stable@vger.kernel.org # 4.9+ Reviewed-by: Nikolay Borisov
<nborisov@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba
<dsterba@suse.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/disk-io.c (diff)
Commit 9d7b327affb831572acecd6132cb39d90ace1d6a by gregkh
Btrfs: setup a nofs context for memory allocation at __btrfs_set_acl
commit a0873490660246db587849a9e172f2b7b21fa88a upstream.
We are holding a transaction handle when setting an acl, therefore we
can not allocate the xattr value buffer using GFP_KERNEL, as we could
deadlock if reclaim is triggered by the allocation, therefore setup a
nofs context.
Fixes: 39a27ec1004e8 ("btrfs: use GFP_KERNEL for xattr and acl
allocations") CC: stable@vger.kernel.org # 4.9+ Reviewed-by: Nikolay
Borisov <nborisov@suse.com> Signed-off-by: Filipe Manana
<fdmanana@suse.com> Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/acl.c (diff)
Commit fb9c36acfab1119669a5c6313ebe5da2311539a5 by gregkh
btrfs: scrub: fix circular locking dependency warning
commit 1cec3f27168d7835ff3d23ab371cd548440131bb upstream.
This fixes a longstanding lockdep warning triggered by
fstests/btrfs/011.
Circular locking dependency check reports warning[1], that's because the
btrfs_scrub_dev() calls the stack #0 below with, the fs_info::scrub_lock
held. The test case leading to this warning:
  $ mkfs.btrfs -f /dev/sdb
$ mount /dev/sdb /btrfs
$ btrfs scrub start -B /btrfs
In fact we have fs_info::scrub_workers_refcnt to track if the init and
destroy of the scrub workers are needed. So once we have incremented and
decremented the fs_info::scrub_workers_refcnt value in the thread, its
ok to drop the scrub_lock, and then actually do the
btrfs_destroy_workqueue() part. So this patch drops the scrub_lock
before calling btrfs_destroy_workqueue().
  [359.258534] ======================================================
[359.260305] WARNING: possible circular locking dependency detected
[359.261938] 5.0.0-rc6-default #461 Not tainted
[359.263135] ------------------------------------------------------
[359.264672] btrfs/20975 is trying to acquire lock:
[359.265927] 00000000d4d32bea ((wq_completion)"%s-%s""btrfs",
name){+.+.}, at: flush_workqueue+0x87/0x540
[359.268416]
[359.268416] but task is already holding lock:
[359.270061] 0000000053ea26a6 (&fs_info->scrub_lock){+.+.}, at:
btrfs_scrub_dev+0x322/0x590 [btrfs]
[359.272418]
[359.272418] which lock already depends on the new lock.
[359.272418]
[359.274692]
[359.274692] the existing dependency chain (in reverse order) is:
[359.276671]
[359.276671] -> #3 (&fs_info->scrub_lock){+.+.}:
[359.278187]        __mutex_lock+0x86/0x9c0
[359.279086]        btrfs_scrub_pause+0x31/0x100 [btrfs]
[359.280421]        btrfs_commit_transaction+0x1e4/0x9e0 [btrfs]
[359.281931]        close_ctree+0x30b/0x350 [btrfs]
[359.283208]        generic_shutdown_super+0x64/0x100
[359.284516]        kill_anon_super+0x14/0x30
[359.285658]        btrfs_kill_super+0x12/0xa0 [btrfs]
[359.286964]        deactivate_locked_super+0x29/0x60
[359.288242]        cleanup_mnt+0x3b/0x70
[359.289310]        task_work_run+0x98/0xc0
[359.290428]        exit_to_usermode_loop+0x83/0x90
[359.291445]        do_syscall_64+0x15b/0x180
[359.292598]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
[359.294011]
[359.294011] -> #2 (sb_internal#2){.+.+}:
[359.295432]        __sb_start_write+0x113/0x1d0
[359.296394]        start_transaction+0x369/0x500 [btrfs]
[359.297471]        btrfs_finish_ordered_io+0x2aa/0x7c0 [btrfs]
[359.298629]        normal_work_helper+0xcd/0x530 [btrfs]
[359.299698]        process_one_work+0x246/0x610
[359.300898]        worker_thread+0x3c/0x390
[359.302020]        kthread+0x116/0x130
[359.303053]        ret_from_fork+0x24/0x30
[359.304152]
[359.304152] -> #1 ((work_completion)(&work->normal_work)){+.+.}:
[359.306100]        process_one_work+0x21f/0x610
[359.307302]        worker_thread+0x3c/0x390
[359.308465]        kthread+0x116/0x130
[359.309357]        ret_from_fork+0x24/0x30
[359.310229]
[359.310229] -> #0 ((wq_completion)"%s-%s""btrfs", name){+.+.}:
[359.311812]        lock_acquire+0x90/0x180
[359.312929]        flush_workqueue+0xaa/0x540
[359.313845]        drain_workqueue+0xa1/0x180
[359.314761]        destroy_workqueue+0x17/0x240
[359.315754]        btrfs_destroy_workqueue+0x57/0x200 [btrfs]
[359.317245]        scrub_workers_put+0x2c/0x60 [btrfs]
[359.318585]        btrfs_scrub_dev+0x336/0x590 [btrfs]
[359.319944]        btrfs_dev_replace_by_ioctl.cold.19+0x179/0x1bb
[btrfs]
[359.321622]        btrfs_ioctl+0x28a4/0x2e40 [btrfs]
[359.322908]        do_vfs_ioctl+0xa2/0x6d0
[359.324021]        ksys_ioctl+0x3a/0x70
[359.325066]        __x64_sys_ioctl+0x16/0x20
[359.326236]        do_syscall_64+0x54/0x180
[359.327379]        entry_SYSCALL_64_after_hwframe+0x49/0xbe
[359.328772]
[359.328772] other info that might help us debug this:
[359.328772]
[359.330990] Chain exists of:
[359.330990]   (wq_completion)"%s-%s""btrfs", name --> sb_internal#2
--> &fs_info->scrub_lock
[359.330990]
[359.334376]  Possible unsafe locking scenario:
[359.334376]
[359.336020]        CPU0                    CPU1
[359.337070]        ----                    ----
[359.337821]   lock(&fs_info->scrub_lock);
[359.338506]                                lock(sb_internal#2);
[359.339506]                                lock(&fs_info->scrub_lock);
[359.341461]   lock((wq_completion)"%s-%s""btrfs", name);
[359.342437]
[359.342437]  *** DEADLOCK ***
[359.342437]
[359.343745] 1 lock held by btrfs/20975:
[359.344788]  #0: 0000000053ea26a6 (&fs_info->scrub_lock){+.+.}, at:
btrfs_scrub_dev+0x322/0x590 [btrfs]
[359.346778]
[359.346778] stack backtrace:
[359.347897] CPU: 0 PID: 20975 Comm: btrfs Not tainted
5.0.0-rc6-default #461
[359.348983] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
BIOS rel-1.11.2-0-gf9626cc-prebuilt.qemu-project.org 04/01/2014
[359.350501] Call Trace:
[359.350931]  dump_stack+0x67/0x90
[359.351676]  print_circular_bug.isra.37.cold.56+0x15c/0x195
[359.353569]  check_prev_add.constprop.44+0x4f9/0x750
[359.354849]  ? check_prev_add.constprop.44+0x286/0x750
[359.356505]  __lock_acquire+0xb84/0xf10
[359.357505]  lock_acquire+0x90/0x180
[359.358271]  ? flush_workqueue+0x87/0x540
[359.359098]  flush_workqueue+0xaa/0x540
[359.359912]  ? flush_workqueue+0x87/0x540
[359.360740]  ? drain_workqueue+0x1e/0x180
[359.361565]  ? drain_workqueue+0xa1/0x180
[359.362391]  drain_workqueue+0xa1/0x180
[359.363193]  destroy_workqueue+0x17/0x240
[359.364539]  btrfs_destroy_workqueue+0x57/0x200 [btrfs]
[359.365673]  scrub_workers_put+0x2c/0x60 [btrfs]
[359.366618]  btrfs_scrub_dev+0x336/0x590 [btrfs]
[359.367594]  ? start_transaction+0xa1/0x500 [btrfs]
[359.368679]  btrfs_dev_replace_by_ioctl.cold.19+0x179/0x1bb [btrfs]
[359.369545]  btrfs_ioctl+0x28a4/0x2e40 [btrfs]
[359.370186]  ? __lock_acquire+0x263/0xf10
[359.370777]  ? kvm_clock_read+0x14/0x30
[359.371392]  ? kvm_sched_clock_read+0x5/0x10
[359.372248]  ? sched_clock+0x5/0x10
[359.372786]  ? sched_clock_cpu+0xc/0xc0
[359.373662]  ? do_vfs_ioctl+0xa2/0x6d0
[359.374552]  do_vfs_ioctl+0xa2/0x6d0
[359.375378]  ? do_sigaction+0xff/0x250
[359.376233]  ksys_ioctl+0x3a/0x70
[359.376954]  __x64_sys_ioctl+0x16/0x20
[359.377772]  do_syscall_64+0x54/0x180
[359.378841]  entry_SYSCALL_64_after_hwframe+0x49/0xbe
[359.380422] RIP: 0033:0x7f5429296a97
Backporting to older kernels: scrub_nocow_workers must be freed the same
way as the others.
CC: stable@vger.kernel.org # 4.4+ Signed-off-by: Anand Jain
<anand.jain@oracle.com>
[ update changelog ] Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/scrub.c (diff)
Commit 9c58f2ada4fab31f5bf508185ee8b0e4e83cdcd1 by gregkh
btrfs: drop the lock on error in btrfs_dev_replace_cancel
commit 669e859b5ea7c6f4fce0149d3907c64e550c294b upstream.
We should drop the lock on this error path.  This has been found by a
static tool.
The lock needs to be released, it's there to protect access to the
dev_replace members and is not supposed to be left locked. The value of
state that's being switched would need to be artifically changed to an
invalid value so the default: branch is taken.
Fixes: d189dd70e255 ("btrfs: fix use-after-free due to race between
replace start and cancel") CC: stable@vger.kernel.org # 5.0+
Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Dan
Carpenter <dan.carpenter@oracle.com> Reviewed-by: David Sterba
<dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/dev-replace.c (diff)
Commit 88e610ae4c3af07d964ba792313c1ac9d50ec7b6 by gregkh
btrfs: ensure that a DUP or RAID1 block group has exactly two stripes
commit 349ae63f40638a28c6fce52e8447c2d14b84cc0c upstream.
We recently had a customer issue with a corrupted filesystem. When
trying to mount this image btrfs panicked with a division by zero in
calc_stripe_length().
The corrupt chunk had a 'num_stripes' value of 1. calc_stripe_length()
takes this value and divides it by the number of copies the RAID profile
is expected to have to calculate the amount of data stripes. As a DUP
profile is expected to have 2 copies this division resulted in 1/2 = 0.
Later then the 'data_stripes' variable is used as a divisor in the
stripe length calculation which results in a division by 0 and thus a
kernel panic.
When encountering a filesystem with a DUP block group and a
'num_stripes' value unequal to 2, refuse mounting as the image is
corrupted and will lead to unexpected behaviour.
Code inspection showed a RAID1 block group has the same issues.
Fixes: e06cd3dd7cea ("Btrfs: add validadtion checks for chunk loading")
CC: stable@vger.kernel.org # 4.4+ Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Johannes
Thumshirn <jthumshirn@suse.de> Reviewed-by: David Sterba
<dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/volumes.c (diff)
Commit ebbb48419e8a7933779a5d849d54de47398ba2b1 by gregkh
btrfs: init csum_list before possible free
commit e49be14b8d80e23bb7c53d78c21717a474ade76b upstream.
The scrub_ctx csum_list member must be initialized before scrub_free_ctx
is called. If the csum_list is not initialized beforehand, the
list_empty call in scrub_free_csums will result in a null deref if the
allocation fails in the for loop.
Fixes: a2de733c78fa ("btrfs: scrub") CC: stable@vger.kernel.org # 3.0+
Reviewed-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Dan
Robertson <dan@dlrobertson.com> Reviewed-by: David Sterba
<dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/scrub.c (diff)
Commit 3486142a68e34448cd1f591d82f5eae544862d2d by gregkh
Btrfs: fix corruption reading shared and compressed extents after hole
punching
commit 8e928218780e2f1cf2f5891c7575e8f0b284fcce upstream.
In the past we had data corruption when reading compressed extents that
are shared within the same file and they are consecutive, this got fixed
by commit 005efedf2c7d0 ("Btrfs: fix read corruption of compressed and
shared extents") and by commit 808f80b46790f ("Btrfs: update fix for
read corruption of compressed and shared extents"). However there was a
case that was missing in those fixes, which is when the shared and
compressed extents are referenced with a non-zero offset. The following
shell script creates a reproducer for this issue:
  #!/bin/bash
  mkfs.btrfs -f /dev/sdc &> /dev/null
mount -o compress /dev/sdc /mnt/sdc
  # Create a file with 3 consecutive compressed extents, each has an
# uncompressed size of 128Kb and a compressed size of 4Kb.
for ((i = 1; i <= 3; i++)); do
     head -c 4096 /dev/zero
     for ((j = 1; j <= 31; j++)); do
         head -c 4096 /dev/zero | tr '\0' "\377"
     done
done > /mnt/sdc/foobar
sync
  echo "Digest after file creation:   $(md5sum /mnt/sdc/foobar)"
  # Clone the first extent into offsets 128K and 256K.
xfs_io -c "reflink /mnt/sdc/foobar 0 128K 128K" /mnt/sdc/foobar
xfs_io -c "reflink /mnt/sdc/foobar 0 256K 128K" /mnt/sdc/foobar
sync
  echo "Digest after cloning:         $(md5sum /mnt/sdc/foobar)"
  # Punch holes into the regions that are already full of zeroes.
xfs_io -c "fpunch 0 4K" /mnt/sdc/foobar
xfs_io -c "fpunch 128K 4K" /mnt/sdc/foobar
xfs_io -c "fpunch 256K 4K" /mnt/sdc/foobar
sync
  echo "Digest after hole punching:   $(md5sum /mnt/sdc/foobar)"
  echo "Dropping page cache..."
sysctl -q vm.drop_caches=1
echo "Digest after hole punching:   $(md5sum /mnt/sdc/foobar)"
  umount /dev/sdc
When running the script we get the following output:
  Digest after file creation:   5a0888d80d7ab1fd31c229f83a3bbcc8
/mnt/sdc/foobar
linked 131072/131072 bytes at offset 131072
128 KiB, 1 ops; 0.0033 sec (36.960 MiB/sec and 295.6830 ops/sec)
linked 131072/131072 bytes at offset 262144
128 KiB, 1 ops; 0.0015 sec (78.567 MiB/sec and 628.5355 ops/sec)
Digest after cloning:         5a0888d80d7ab1fd31c229f83a3bbcc8
/mnt/sdc/foobar
Digest after hole punching:   5a0888d80d7ab1fd31c229f83a3bbcc8
/mnt/sdc/foobar
Dropping page cache...
Digest after hole punching:   fba694ae8664ed0c2e9ff8937e7f1484
/mnt/sdc/foobar
This happens because after reading all the pages of the extent in the
range from 128K to 256K for example, we read the hole at offset 256K and
then when reading the page at offset 260K we don't submit the existing
bio, which is responsible for filling all the page in the range 128K to
256K only, therefore adding the pages from range 260K to 384K to the
existing bio and submitting it after iterating over the entire range.
Once the bio completes, the uncompressed data fills only the pages in
the range 128K to 256K because there's no more data read from disk,
leaving the pages in the range 260K to 384K unfilled. It is just a
slightly different variant of what was solved by commit 005efedf2c7d0
("Btrfs: fix read corruption of compressed and shared extents").
Fix this by forcing a bio submit, during readpages(), whenever we find a
compressed extent map for a page that is different from the extent map
for the previous page or has a different starting offset (in case it's
the same compressed extent), instead of the extent map's original start
offset.
A test case for fstests follows soon.
Reported-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org> Fixes:
808f80b46790f ("Btrfs: update fix for read corruption of compressed and
shared extents") Fixes: 005efedf2c7d0 ("Btrfs: fix read corruption of
compressed and shared extents") Cc: stable@vger.kernel.org # 4.3+
Tested-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org> Signed-off-by:
Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba
<dsterba@suse.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/extent_io.c (diff)
Commit 1098803b8cb7cd18d1696cb79fd60cc57977e980 by gregkh
Btrfs: fix deadlock between clone/dedupe and rename
commit 4ea748e1d2c9f8a27332b949e8210dbbf392987e upstream.
Reflinking (clone/dedupe) and rename are operations that operate on two
inodes and therefore need to lock them in the same order to avoid ABBA
deadlocks. It happens that Btrfs' reflink implementation always locked
them in a different order from VFS's lock_two_nondirectories() helper,
which is used by the rename code in VFS, resulting in ABBA type
deadlocks.
Btrfs' locking order:
  static void btrfs_double_inode_lock(struct inode *inode1, struct inode
*inode2)
{
        if (inode1 < inode2)
               swap(inode1, inode2);
         inode_lock_nested(inode1, I_MUTEX_PARENT);
        inode_lock_nested(inode2, I_MUTEX_CHILD);
}
VFS's locking order:
  void lock_two_nondirectories(struct inode *inode1, struct inode
*inode2)
{
       if (inode1 > inode2)
               swap(inode1, inode2);
        if (inode1 && !S_ISDIR(inode1->i_mode))
               inode_lock(inode1);
       if (inode2 && !S_ISDIR(inode2->i_mode) && inode2 != inode1)
               inode_lock_nested(inode2, I_MUTEX_NONDIR2);
}
Fix this by killing the btrfs helper function that does the double inode
locking and replace it with VFS's helper lock_two_nondirectories().
Reported-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org> Fixes:
416161db9b63e3 ("btrfs: offline dedupe") CC: stable@vger.kernel.org #
4.4+ Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by:
David Sterba <dsterba@suse.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/btrfs/ioctl.c (diff)
Commit 028cbca07ab58f77a532b3587ac4ba9d85fd5f55 by gregkh
soc: qcom: rpmh: Avoid accessing freed memory from batch API
commit baef1c90aac7e5bf13f0360a3b334825a23d31a1 upstream.
Using the batch API from the interconnect driver sometimes leads to a
KASAN error due to an access to freed memory. This is easier to trigger
with threadirqs on the kernel commandline.
BUG: KASAN: use-after-free in rpmh_tx_done+0x114/0x12c
Read of size 1 at addr fffffff51414ad84 by task irq/110-apps_rs/57
CPU: 0 PID: 57 Comm: irq/110-apps_rs Tainted: G        W       
4.19.10 #72
Call trace:
dump_backtrace+0x0/0x2f8
show_stack+0x20/0x2c
__dump_stack+0x20/0x28
dump_stack+0xcc/0x10c
print_address_description+0x74/0x240
kasan_report+0x250/0x26c
__asan_report_load1_noabort+0x20/0x2c
rpmh_tx_done+0x114/0x12c
tcs_tx_done+0x450/0x768
irq_forced_thread_fn+0x58/0x9c
irq_thread+0x120/0x1dc
kthread+0x248/0x260
ret_from_fork+0x10/0x18
Allocated by task 385:
kasan_kmalloc+0xac/0x148
__kmalloc+0x170/0x1e4
rpmh_write_batch+0x174/0x540
qcom_icc_set+0x8dc/0x9ac
icc_set+0x288/0x2e8
a6xx_gmu_stop+0x320/0x3c0
a6xx_pm_suspend+0x108/0x124
adreno_suspend+0x50/0x60
pm_generic_runtime_suspend+0x60/0x78
__rpm_callback+0x214/0x32c
rpm_callback+0x54/0x184
rpm_suspend+0x3f8/0xa90
pm_runtime_work+0xb4/0x178
process_one_work+0x544/0xbc0
worker_thread+0x514/0x7d0
kthread+0x248/0x260
ret_from_fork+0x10/0x18
Freed by task 385:
__kasan_slab_free+0x12c/0x1e0
kasan_slab_free+0x10/0x1c
kfree+0x134/0x588
rpmh_write_batch+0x49c/0x540
qcom_icc_set+0x8dc/0x9ac
icc_set+0x288/0x2e8
a6xx_gmu_stop+0x320/0x3c0
a6xx_pm_suspend+0x108/0x124
adreno_suspend+0x50/0x60
cr50_spi spi5.0: SPI transfer timed out
pm_generic_runtime_suspend+0x60/0x78
__rpm_callback+0x214/0x32c
rpm_callback+0x54/0x184
rpm_suspend+0x3f8/0xa90
pm_runtime_work+0xb4/0x178
process_one_work+0x544/0xbc0
worker_thread+0x514/0x7d0
kthread+0x248/0x260
ret_from_fork+0x10/0x18
The buggy address belongs to the object at fffffff51414ac80
which belongs to the cache kmalloc-512 of size 512
The buggy address is located 260 bytes inside of
512-byte region [fffffff51414ac80, fffffff51414ae80)
The buggy address belongs to the page:
page:ffffffbfd4505200 count:1 mapcount:0 mapping:fffffff51e00c680
index:0x0 compound_mapcount: 0
flags: 0x4000000000008100(slab|head)
raw: 4000000000008100 ffffffbfd4529008 ffffffbfd44f9208 fffffff51e00c680
raw: 0000000000000000 0000000000200020 00000001ffffffff 0000000000000000
page dumped because: kasan: bad access detected
Memory state around the buggy address:
fffffff51414ac80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
fffffff51414ad00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
>fffffff51414ad80: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
                   ^
fffffff51414ae00: fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb fb
fffffff51414ae80: fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc fc
The batch API sets the same completion for each rpmh message that's sent
and then loops through all the messages and waits for that single
completion declared on the stack to be completed before returning from
the function and freeing the message structures. Unfortunately, some
messages may still be in process and 'stuck' in the TCS. At some later
point, the tcs_tx_done() interrupt will run and try to process messages
that have already been freed at the end of rpmh_write_batch(). This will
in turn access the 'needs_free' member of the rpmh_request structure and
cause KASAN to complain. Furthermore, if there's a message that's
completed in rpmh_tx_done() and freed immediately after the complete()
call is made we'll be racing with potentially freed memory when
accessing the 'needs_free' member:
CPU0                         CPU1
----                         ----
rpmh_tx_done()
complete(&compl)
                             wait_for_completion(&compl)
                             kfree(rpm_msg)
if (rpm_msg->needs_free)
<KASAN warning splat>
Let's fix this by allocating a chunk of completions for each message and
waiting for all of them to be completed before returning from the batch
API. Alternatively, we could wait for the last message in the batch, but
that may be a more complicated change because it looks like
tcs_tx_done() just iterates through the indices of the queue and
completes each message instead of tracking the last inserted message and
completing that first.
Fixes: c8790cb6da58 ("drivers: qcom: rpmh: add support for batch RPMH
request") Cc: Lina Iyer <ilina@codeaurora.org> Cc: "Raju P.L.S.S.S.N"
<rplsssn@codeaurora.org> Cc: Matthias Kaehlcke <mka@chromium.org> Cc:
Evan Green <evgreen@chromium.org> Cc: stable@vger.kernel.org
Reviewed-by: Lina Iyer <ilina@codeaurora.org> Reviewed-by: Evan Green
<evgreen@chromium.org> Signed-off-by: Stephen Boyd <swboyd@chromium.org>
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: Andy Gross <andy.gross@linaro.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/soc/qcom/rpmh.c (diff)
Commit bd05a30753ebd84004f132bf20aca8c94625bec6 by gregkh
libertas_tf: don't set URB_ZERO_PACKET on IN USB transfer
commit 607076a904c435f2677fadaadd4af546279db68b upstream.
It doesn't make sense and the USB core warns on each submit of such URB,
easily flooding the message buffer with tracebacks.
Analogous issue was fixed in regular libertas driver in commit
6528d8804780
("libertas: don't set URB_ZERO_PACKET on IN USB transfer").
Cc: stable@vger.kernel.org Signed-off-by: Lubomir Rintel
<lkundrak@v3.sk> Reviewed-by: Steve deRosier <derosier@cal-sierra.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/wireless/marvell/libertas_tf/if_usb.c (diff)
Commit 830d66c95e02a425c357835e64e16d3ce686ae05 by gregkh
irqchip/gic-v3-its: Avoid parsing _indirect_ twice for Device table
commit 8d565748b6035eeda18895c213396a4c9fac6a4c upstream.
In current logic, its_parse_indirect_baser() will be invoked twice when
allocating Device tables. Add a *break* to omit the unnecessary and
annoying (might be ...) invoking.
Fixes: 32bd44dc19de ("irqchip/gic-v3-its: Fix the incorrect parsing of
VCPU table size") Cc: stable@vger.kernel.org Signed-off-by: Zenghui Yu
<yuzenghui@huawei.com> Signed-off-by: Marc Zyngier
<marc.zyngier@arm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/irqchip/irq-gic-v3-its.c (diff)
Commit dbbb26db89383723dd2b9fe63165be171d847e1c by gregkh
irqchip/brcmstb-l2: Use _irqsave locking variants in non-interrupt code
commit 33517881ede742107f416533b8c3e4abc56763da upstream.
Using the irq_gc_lock/irq_gc_unlock functions in the suspend and resume
functions creates the opportunity for a deadlock during suspend, resume,
and shutdown. Using the irq_gc_lock_irqsave/ irq_gc_unlock_irqrestore
variants prevents this possible deadlock.
Cc: stable@vger.kernel.org Fixes: 7f646e92766e2 ("irqchip: brcmstb-l2:
Add Broadcom Set Top Box Level-2 interrupt controller") Signed-off-by:
Doug Berger <opendmb@gmail.com> Signed-off-by: Florian Fainelli
<f.fainelli@gmail.com>
[maz: tidied up $SUBJECT] Signed-off-by: Marc Zyngier
<marc.zyngier@arm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/irqchip/irq-brcmstb-l2.c (diff)
Commit 737f4ead9606e748e43260a46dbd9c302abbf8e5 by gregkh
x86/kprobes: Prohibit probing on optprobe template code
commit 0192e6535ebe9af68614198ced4fd6d37b778ebf upstream.
Prohibit probing on optprobe template code, since it is not a code but a
template instruction sequence. If we modify this template, copied
template must be broken.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> Cc: Alexander
Shishkin <alexander.shishkin@linux.intel.com> Cc: Andrea Righi
<righi.andrea@gmail.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Mathieu Desnoyers
<mathieu.desnoyers@efficios.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc:
Thomas Gleixner <tglx@linutronix.de> Cc: stable@vger.kernel.org Fixes:
9326638cbee2 ("kprobes, x86: Use NOKPROBE_SYMBOL() instead of __kprobes
annotation") Link:
http://lkml.kernel.org/r/154998787911.31052.15274376330136234452.stgit@devbox
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/kprobes/opt.c (diff)
Commit 144c3557b1e1e8c3626a698ff3ccd197443fb865 by gregkh
cpufreq: kryo: Release OPP tables on module removal
commit 0334906c06967142c8805fbe88acf787f65d3d26 upstream.
Commit 5ad7346b4ae2 ("cpufreq: kryo: Add module remove and exit") made
it possible to build the kryo cpufreq driver as a module, but it failed
to release all the resources, i.e. OPP tables, when the module is
unloaded.
This patch fixes it by releasing the OPP tables, by calling
dev_pm_opp_put_supported_hw() for them, from the
qcom_cpufreq_kryo_remove() routine. The array of pointers to the OPP
tables is also allocated dynamically now in qcom_cpufreq_kryo_probe(),
as the pointers will be required while releasing the resources.
Compile tested only.
Cc: 4.18+ <stable@vger.kernel.org> # v4.18+ Fixes: 5ad7346b4ae2
("cpufreq: kryo: Add module remove and exit") Reviewed-by: Georgi Djakov
<georgi.djakov@linaro.org> Signed-off-by: Viresh Kumar
<viresh.kumar@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/cpufreq/qcom-cpufreq-kryo.c (diff)
Commit 272b28097c30114e749a66e30ade16a262866953 by gregkh
cpufreq: tegra124: add missing of_node_put()
commit 446fae2bb5395f3028d8e3aae1508737e5a72ea1 upstream.
of_cpu_device_node_get() will increase the refcount of device_node, it
is necessary to call of_node_put() at the end to release the refcount.
Fixes: 9eb15dbbfa1a2 ("cpufreq: Add cpufreq driver for Tegra124") Cc:
<stable@vger.kernel.org> # 4.4+ Signed-off-by: Yangtao Li
<tiny.windzz@gmail.com> Acked-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/cpufreq/tegra124-cpufreq.c (diff)
Commit f9308e46e02bbb6f0f15a880a4fce9e5ba29ab2c by gregkh
cpufreq: pxa2xx: remove incorrect __init annotation
commit 9505b98ccddc454008ca7efff90044e3e857c827 upstream.
pxa_cpufreq_init_voltages() is marked __init but usually inlined into
the non-__init pxa_cpufreq_init() function. When building with clang, it
can stay as a standalone function in a discarded section, and produce
this warning:
WARNING: vmlinux.o(.text+0x616a00): Section mismatch in reference from
the function pxa_cpufreq_init() to the function
.init.text:pxa_cpufreq_init_voltages() The function pxa_cpufreq_init()
references the function __init pxa_cpufreq_init_voltages(). This is
often because pxa_cpufreq_init lacks a __init annotation or the
annotation of pxa_cpufreq_init_voltages is wrong.
Fixes: 50e77fcd790e ("ARM: pxa: remove __init from
cpufreq_driver->init()") Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Reviewed-by: Nathan
Chancellor <natechancellor@gmail.com> Acked-by: Robert Jarzmik
<robert.jarzmik@free.fr> Cc: All applicable <stable@vger.kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/cpufreq/pxa2xx-cpufreq.c (diff)
Commit a0f6f657ac446194c190fab6aca9f6f71c8404f4 by gregkh
ext4: fix check of inode in swap_inode_boot_loader
commit 67a11611e1a5211f6569044fbf8150875764d1d0 upstream.
Before really do swap between inode and boot inode, something need to
check to avoid invalid or not permitted operation, like does this inode
has inline data. But the condition check should be protected by inode
lock to avoid change while swapping. Also some other condition will not
change between swapping, but there has no problem to do this under inode
lock.
Signed-off-by: yangerkun <yangerkun@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ioctl.c (diff)
Commit 7a34997043f1c042ae91d780630445bbf23fa435 by gregkh
ext4: cleanup pagecache before swap i_data
commit a46c68a318b08f819047843abf349aeee5d10ac2 upstream.
While do swap, we should make sure there has no new dirty page since we
should swap i_data between two inode: 1.We should lock i_mmap_sem with
write to avoid new pagecache from mmap read/write; 2.Change
filemap_flush to filemap_write_and_wait and move them to the space
protected by inode lock to avoid new pagecache from buffer read/write.
Signed-off-by: yangerkun <yangerkun@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ioctl.c (diff)
Commit 84fe80428739b7f40763b4d4c1c84c2ce8591fe5 by gregkh
mm: hwpoison: fix thp split handing in soft_offline_in_use_page()
commit 46612b751c4941c5c0472ddf04027e877ae5990f upstream.
When soft_offline_in_use_page() runs on a thp tail page after pmd is
split, we trigger the following VM_BUG_ON_PAGE():
  Memory failure: 0x3755ff: non anonymous thp
__get_any_page: 0x3755ff: unknown zero refcount page type
2fffff80000000
Soft offlining pfn 0x34d805 at process virtual address 0x20fff000
page:ffffea000d360140 count:0 mapcount:0 mapping:0000000000000000
index:0x1
flags: 0x2fffff80000000()
raw: 002fffff80000000 ffffea000d360108 ffffea000d360188
0000000000000000
raw: 0000000000000001 0000000000000000 00000000ffffffff
0000000000000000
page dumped because: VM_BUG_ON_PAGE(page_ref_count(page) == 0)
------------[ cut here ]------------
kernel BUG at ./include/linux/mm.h:519!
soft_offline_in_use_page() passed refcount and page lock from tail page
to head page, which is not needed because we can pass any subpage to
split_huge_page().
Naoya had fixed a similar issue in c3901e722b29 ("mm: hwpoison: fix thp
split handling in memory_failure()").  But he missed fixing soft
offline.
Link:
http://lkml.kernel.org/r/1551452476-24000-1-git-send-email-zhongjiang@huawei.com
Fixes: 61f5d698cc97 ("mm: re-enable THP") Signed-off-by: zhongjiang
<zhongjiang@huawei.com> Acked-by: Naoya Horiguchi
<n-horiguchi@ah.jp.nec.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Hugh
Dickins <hughd@google.com> Cc: Kirill A. Shutemov <kirill@shutemov.name>
Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: <stable@vger.kernel.org>
[4.5+] Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedmm/memory-failure.c (diff)
Commit 8df6ab770e2036e82f3f7ed3004da7aa8740f6c7 by gregkh
mm/vmalloc: fix size check for remap_vmalloc_range_partial()
commit 401592d2e095947344e10ec0623adbcd58934dd4 upstream.
When VM_NO_GUARD is not set area->size includes adjacent guard page,
thus for correct size checking get_vm_area_size() should be used, but
not area->size.
This fixes possible kernel oops when userspace tries to mmap an area on
1 page bigger than was allocated by vmalloc_user() call: the size check
inside remap_vmalloc_range_partial() accounts non-existing guard page
also, so check successfully passes but vmalloc_to_page() returns NULL
(guard page does not physically exist).
The following code pattern example should trigger an oops:
  static int oops_mmap(struct file *file, struct vm_area_struct *vma)
{
       void *mem;
        mem = vmalloc_user(4096);
       BUG_ON(!mem);
       /* Do not care about mem leak */
        return remap_vmalloc_range(vma, mem, 0);
}
And userspace simply mmaps size + PAGE_SIZE:
  mmap(NULL, 8192, PROT_WRITE|PROT_READ, MAP_PRIVATE, fd, 0);
Possible candidates for oops which do not have any explicit size checks:
   *** drivers/media/usb/stkwebcam/stk-webcam.c:
  v4l_stk_mmap[789]   ret = remap_vmalloc_range(vma, sbuf->buffer, 0);
Or the following one:
   *** drivers/video/fbdev/core/fbmem.c
  static int
  fb_mmap(struct file *file, struct vm_area_struct * vma)
       ...
       res = fb->fb_mmap(info, vma);
Where fb_mmap callback calls remap_vmalloc_range() directly without any
explicit checks:
   *** drivers/video/fbdev/vfb.c
  static int vfb_mmap(struct fb_info *info,
            struct vm_area_struct *vma)
  {
      return remap_vmalloc_range(vma, (void *)info->fix.smem_start,
vma->vm_pgoff);
  }
Link: http://lkml.kernel.org/r/20190103145954.16942-2-rpenyaev@suse.de
Signed-off-by: Roman Penyaev <rpenyaev@suse.de> Acked-by: Michal Hocko
<mhocko@suse.com> Cc: Andrey Ryabinin <aryabinin@virtuozzo.com> Cc: Joe
Perches <joe@perches.com> Cc: "Luis R. Rodriguez" <mcgrof@kernel.org>
Cc: <stable@vger.kernel.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedmm/vmalloc.c (diff)
Commit 9a842b43e4b86a77c09cd722e0dfed7782bc274b by gregkh
mm/memory.c: do_fault: avoid usage of stale vm_area_struct
commit fc8efd2ddfed3f343c11b693e87140ff358d7ff5 upstream.
LTP testcase mtest06 [1] can trigger a crash on s390x running 5.0.0-rc8.
This is a stress test, where one thread mmaps/writes/munmaps memory area
and other thread is trying to read from it:
  CPU: 0 PID: 2611 Comm: mmap1 Not tainted 5.0.0-rc8+ #51
Hardware name: IBM 2964 N63 400 (z/VM 6.4.0)
Krnl PSW : 0404e00180000000 00000000001ac8d8 (__lock_acquire+0x7/0x7a8)
Call Trace:
([<0000000000000000>]           (null))
  [<00000000001adae4>] lock_acquire+0xec/0x258
  [<000000000080d1ac>] _raw_spin_lock_bh+0x5c/0x98
  [<000000000012a780>] page_table_free+0x48/0x1a8
  [<00000000002f6e54>] do_fault+0xdc/0x670
  [<00000000002fadae>] __handle_mm_fault+0x416/0x5f0
  [<00000000002fb138>] handle_mm_fault+0x1b0/0x320
  [<00000000001248cc>] do_dat_exception+0x19c/0x2c8
  [<000000000080e5ee>] pgm_check_handler+0x19e/0x200
page_table_free() is called with NULL mm parameter, but because "0" is a
valid address on s390 (see S390_lowcore), it keeps going until it
eventually crashes in lockdep's lock_acquire.  This crash is
reproducible at least since 4.14.
Problem is that "vmf->vma" used in do_fault() can become stale.  Because
mmap_sem may be released, other threads can come in, call munmap() and
cause "vma" be returned to kmem cache, and get zeroed/re-initialized and
re-used:
handle_mm_fault                           |
__handle_mm_fault                       |
   do_fault                              |
     vma = vmf->vma                      |
     do_read_fault                       |
       __do_fault                        |
         vma->vm_ops->fault(vmf);        |
           mmap_sem is released          |
                                         |
                                         | do_munmap()
                                         |   remove_vma_list()
                                         |     remove_vma()
                                         |       vm_area_free()
                                         |         # vma is released
                                         | ...
                                         | # same vma is allocated
                                         | # from kmem cache
                                         | do_mmap()
                                         |   vm_area_alloc()
                                         |     memset(vma, 0, ...)
                                         |
     pte_free(vma->vm_mm, ...);          |
       page_table_free                   |
         spin_lock_bh(&mm->context.lock);|
           <crash>                       |
Cache mm_struct to avoid using potentially stale "vma".
[1]
https://github.com/linux-test-project/ltp/blob/master/testcases/kernel/mem/mtest06/mmap1.c
Link:
http://lkml.kernel.org/r/5b3fdf19e2a5be460a384b936f5b56e13733f1b8.1551595137.git.jstancek@redhat.com
Signed-off-by: Jan Stancek <jstancek@redhat.com> Reviewed-by: Andrea
Arcangeli <aarcange@redhat.com> Reviewed-by: Matthew Wilcox
<willy@infradead.org> Acked-by: Rafael Aquini <aquini@redhat.com>
Reviewed-by: Minchan Kim <minchan@kernel.org> Acked-by: Kirill A.
Shutemov <kirill.shutemov@linux.intel.com> Cc: Rik van Riel
<riel@surriel.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Huang Ying
<ying.huang@intel.com> Cc: Souptick Joarder <jrdr.linux@gmail.com> Cc:
Jerome Glisse <jglisse@redhat.com> Cc: Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> Cc: David Hildenbrand <david@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: David Rientjes
<rientjes@google.com> Cc: Mel Gorman <mgorman@techsingularity.net> Cc:
<stable@vger.kernel.org> Signed-off-by: Andrew Morton
<akpm@linux-foundation.org> Signed-off-by: Linus Torvalds
<torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedmm/memory.c (diff)
Commit d09e7041330bb07ab41d8cfd4bccea3f9b9284c2 by gregkh
kernel/sysctl.c: add missing range check in do_proc_dointvec_minmax_conv
commit 8cf7630b29701d364f8df4a50e4f1f5e752b2778 upstream.
This bug has apparently existed since the introduction of this function
in the pre-git era (4500e91754d3 in Thomas Gleixner's history.git,
"[NET]: Add proc_dointvec_userhz_jiffies, use it for proper handling of
neighbour sysctls.").
As a minimal fix we can simply duplicate the corresponding check in
do_proc_dointvec_conv().
Link:
http://lkml.kernel.org/r/20190207123426.9202-3-zev@bewilderbeest.net
Signed-off-by: Zev Weiss <zev@bewilderbeest.net> Cc: Brendan Higgins
<brendanhiggins@google.com> Cc: Iurii Zaikin <yzaikin@google.com> Cc:
Kees Cook <keescook@chromium.org> Cc: Luis Chamberlain
<mcgrof@kernel.org> Cc: <stable@vger.kernel.org> [2.6.2+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/sysctl.c (diff)
Commit 9a638bb82ff5dbd7efc94640bf7334022e9f5efd by gregkh
nvmem: core: don't check the return value of notifier chain call
commit f4853e1c321edb48af229ad5ac85076790d34968 upstream.
blocking_notifier_call_chain() returns the value returned by the last
registered callback. A positive return value doesn't indicate an error
and an nvmem device should correctly register irrespective of any
notifier callback failures. Drop the retval check.
Fixes: bee1138bea15 ("nvmem: add a notifier chain") Cc:
stable@vger.kernel.org Signed-off-by: Bartosz Golaszewski
<bgolaszewski@baylibre.com> Acked-by: Srinivas Kandagatla
<srinivas.kandagatla@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/nvmem/core.c (diff)
Commit 1a1d6860c5394d08518364303222c848edda266c by gregkh
device property: Fix the length used in PROPERTY_ENTRY_STRING()
commit 2b6e492467c78183bb629bb0a100ea3509b615a5 upstream.
With string type property entries we need to use sizeof(const char *)
instead of the number of characters as the length of the entry.
If the string was shorter then sizeof(const char *), attempts to read it
would have failed with -EOVERFLOW. The problem has been hidden because
all build-in string properties have had a string longer then 8
characters until now.
Fixes: a85f42047533 ("device property: helper macros for property entry
creation") Cc: 4.5+ <stable@vger.kernel.org> # 4.5+ Signed-off-by:
Heikki Krogerus <heikki.krogerus@linux.intel.com> Reviewed-by: Andy
Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Rafael J.
Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/property.h (diff)
Commit d91315e99c550a0facdd01cb461305ed79ba0822 by gregkh
intel_th: Don't reference unassigned outputs
commit 9ed3f22223c33347ed963e7c7019cf2956dd4e37 upstream.
When an output port driver is removed, also remove references to it from
any masters. Failing to do this causes a NULL ptr dereference when
configuring another output port:
> BUG: unable to handle kernel NULL pointer dereference at
000000000000000d
> RIP: 0010:master_attr_store+0x9d/0x160 [intel_th_gth]
> Call Trace:
> dev_attr_store+0x1b/0x30
> sysfs_kf_write+0x3c/0x50
> kernfs_fop_write+0x125/0x1a0
> __vfs_write+0x3a/0x190
> ? __vfs_write+0x5/0x190
> ? _cond_resched+0x1a/0x50
> ? rcu_all_qs+0x5/0xb0
> ? __vfs_write+0x5/0x190
> vfs_write+0xb8/0x1b0
> ksys_write+0x55/0xc0
> __x64_sys_write+0x1a/0x20
> do_syscall_64+0x5a/0x140
> entry_SYSCALL_64_after_hwframe+0x44/0xa9
Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Fixes: b27a6a3f97b9 ("intel_th: Add Global Trace Hub driver") CC:
stable@vger.kernel.org # v4.4+ Reported-by: Ammy Yi <ammy.yi@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/hwtracing/intel_th/gth.c (diff)
Commit 775bd984147eac0b8cee0c46150b0fae4743a61c by gregkh
parport_pc: fix find_superio io compare code, should use equal test.
commit 21698fd57984cd28207d841dbdaa026d6061bceb upstream.
In the original code before 181bf1e815a2 the loop was continuing until
it finds the first matching superios[i].io and p->base. But after
181bf1e815a2 the logic changed and the loop now returns the pointer to
the first mismatched array element which is then used in
get_superio_dma() and get_superio_irq() and thus returning the wrong
value. Fix the condition so that it now returns the correct pointer.
Fixes: 181bf1e815a2 ("parport_pc: clean up the modified while loops
using for") Cc: Alan Cox <alan@linux.intel.com> Cc:
stable@vger.kernel.org Signed-off-by: QiaoChong <qiaochong@loongson.cn>
[rewrite the commit message] Signed-off-by: Sudip Mukherjee
<sudipm.mukherjee@gmail.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/parport/parport_pc.c (diff)
Commit 986d964baaaa37e8f3dd14d93e222ebff1756905 by gregkh
i2c: tegra: fix maximum transfer size
commit f4e3f4ae1d9c9330de355f432b69952e8cef650c upstream.
Tegra186 and prior supports maximum 4K bytes per packet transfer
including 12 bytes of packet header.
This patch fixes max write length limit to account packet header size
for transfers.
Cc: stable@vger.kernel.org # 4.4+
Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Sowjanya
Komatineni <skomatineni@nvidia.com> Signed-off-by: Wolfram Sang
<wsa@the-dreams.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/i2c/busses/i2c-tegra.c (diff)
Commit 8b82d499df877ed7a9c2bcc9456dab83249a534c by gregkh
i2c: tegra: update maximum transfer size
commit b03ff2a23359d0dd6f0a1516c6a9e9c4760ed230 upstream.
Tegra194 supports maximum 64K bytes per packet including 12 bytes of
packet header irrespective of PIO or DMA mode transfer.
This patch updates Tegra194 max write length to account for packet
header size for transfers.
Cc: stable@vger.kernel.org # 4.20+
Reviewed-by: Dmitry Osipenko <digetx@gmail.com> Signed-off-by: Sowjanya
Komatineni <skomatineni@nvidia.com> Signed-off-by: Wolfram Sang
<wsa@the-dreams.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/i2c/busses/i2c-tegra.c (diff)
Commit 13cef9edc45b5d30fbee28d4ed54b18ed016ea76 by gregkh
media: i2c: ov5640: Fix post-reset delay
commit 1d4c41f3d887bcd66e82cb2fda124533dad8808a upstream.
According to the ov5640 specification (2.7 power up sequence), host can
access the sensor's registers 20ms after reset. Trying to access them
before leads to undefined behavior and result in sporadic initialization
errors.
Signed-off-by: Loic Poulain <loic.poulain@linaro.org> Signed-off-by:
Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro
Carvalho Chehab <mchehab+samsung@kernel.org> Cc: Adam Ford
<aford173@gmail.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/media/i2c/ov5640.c (diff)
Commit ef2dfe6f8c82f427531b7556e2ee1b65f1301543 by gregkh
gpio: pca953x: Fix dereference of irq data in shutdown
commit c378b3aa015931a46c91d6ccc2fe04d97801d060 upstream.
If a PCA953x gpio was used as an interrupt and then released, the
shutdown function was trying to extract the pca953x_chip pointer
directly from the irq_data, but in reality was getting the gpio_chip
structure.
The net effect was that the subsequent writes to the data structure
corrupted data in the gpio_chip structure, which wasn't immediately
obvious until attempting to use the GPIO again in the future, at which
point the kernel panics.
This fix correctly extracts the pca953x_chip structure via the gpio_chip
structure, as is correctly done in the other irq functions.
Fixes: 0a70fe00efea ("gpio: pca953x: Clear irq trigger type on irq
shutdown") Cc: stable@vger.kernel.org Signed-off-by: Mark Walton
<mark.walton@serialtek.com> Reviewed-by: Bartosz Golaszewski
<bgolaszewski@baylibre.com> Signed-off-by: Linus Walleij
<linus.walleij@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpio/gpio-pca953x.c (diff)
Commit 7c2cfdf99ae97e13bea5d0919a03a6b9bb2c02f2 by gregkh
ext4: update quota information while swapping boot loader inode
commit aa507b5faf38784defe49f5e64605ac3c4425e26 upstream.
While do swap between two inode, they swap i_data without update quota
information. Also, swap_inode_boot_loader can do "revert" somtimes, so
update the quota while all operations has been finished.
Signed-off-by: yangerkun <yangerkun@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ioctl.c (diff)
Commit edc0bf6532ba167697ce6588d3311b6692bfb3d7 by gregkh
ext4: add mask of ext4 flags to swap
commit abdc644e8cbac2e9b19763680e5a7cf9bab2bee7 upstream.
The reason is that while swapping two inode, we swap the flags too. Some
flags such as EXT4_JOURNAL_DATA_FL can really confuse the things since
we're not resetting the address operations structure.  The simplest way
to keep things sane is to restrict the flags that can be swapped.
Signed-off-by: yangerkun <yangerkun@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ext4.h (diff)
The file was modifiedfs/ext4/ioctl.c (diff)
Commit db8913b46d74dc10fd4a9063b840e695f33e3eb9 by gregkh
ext4: fix crash during online resizing
commit f96c3ac8dfc24b4e38fc4c2eba5fea2107b929d1 upstream.
When computing maximum size of filesystem possible with given number of
group descriptor blocks, we forget to include s_first_data_block into
the number of blocks. Thus for filesystems with non-zero
s_first_data_block it can happen that computed maximum filesystem size
is actually lower than current filesystem size which confuses the code
and eventually leads to a BUG_ON in ext4_alloc_group_tables() hitting on
flex_gd->count == 0. The problem can be reproduced like:
truncate -s 100g /tmp/image mkfs.ext4 -b 1024 -E resize=262144
/tmp/image 32768 mount -t ext4 -o loop /tmp/image /mnt resize2fs
/dev/loop0 262145 resize2fs /dev/loop0 300000
Fix the problem by properly including s_first_data_block into the
computed number of filesystem blocks.
Fixes: 1c6bd7173d66 "ext4: convert file system to meta_bg if needed..."
Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Theodore Ts'o
<tytso@mit.edu> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/resize.c (diff)
Commit 38c3a86a8226ac78b1fd10b4dd7912530bcd3c9c by gregkh
dma: Introduce dma_max_mapping_size()
commit 133d624b1cee16906134e92d5befb843b58bcf31 upstream.
The function returns the maximum size that can be mapped using DMA-API
functions. The patch also adds the implementation for direct DMA and a
new dma_map_ops pointer so that other implementations can expose their
limit.
Cc: stable@vger.kernel.org Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Michael S.
Tsirkin <mst@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/dma-mapping.h (diff)
The file was modifiedkernel/dma/mapping.c (diff)
The file was modifiedDocumentation/DMA-API.txt (diff)
The file was modifiedkernel/dma/direct.c (diff)
Commit a4eeaa9cc9dadd79369e91b9f8220c4aa0d77098 by gregkh
swiotlb: Introduce swiotlb_max_mapping_size()
commit abe420bfae528c92bd8cc5ecb62dc95672b1fd6f upstream.
The function returns the maximum size that can be remapped by the
SWIOTLB implementation. This function will be later exposed to users
through the DMA-API.
Cc: stable@vger.kernel.org Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Michael S.
Tsirkin <mst@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedkernel/dma/swiotlb.c (diff)
The file was modifiedinclude/linux/swiotlb.h (diff)
Commit 4e9f8e86d6c781a5098e46b175355f6109a46d72 by gregkh
swiotlb: Add is_swiotlb_active() function
commit 492366f7b4237257ef50ca9c431a6a0d50225aca upstream.
This function will be used from dma_direct code to determine the maximum
segment size of a dma mapping.
Cc: stable@vger.kernel.org Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Joerg Roedel <jroedel@suse.de> Signed-off-by: Michael S.
Tsirkin <mst@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/swiotlb.h (diff)
The file was modifiedkernel/dma/swiotlb.c (diff)
Commit bae1cf68370d3938f864da041e37cc96c3d7ba2b by gregkh
PCI/ASPM: Use LTR if already enabled by platform
commit 10ecc818ea7319b5d0d2b4e1aa6a77323e776f76 upstream.
RussianNeuroMancer reported that the Intel 7265 wifi on a Dell Venue 11
Pro 7140 table stopped working after wakeup from suspend and bisected
the problem to 9ab105deb60f ("PCI/ASPM: Disable ASPM L1.2 Substate if we
don't have LTR").  David Ward reported the same problem on a Dell
Latitude 7350.
After af8bb9f89838 ("PCI/ACPI: Request LTR control from platform before
using it"), we don't enable LTR unless the platform has granted LTR
control to us.  In addition, we don't notice if the platform had already
enabled LTR itself.
After 9ab105deb60f ("PCI/ASPM: Disable ASPM L1.2 Substate if we don't
have LTR"), we avoid using LTR if we don't think the path to the device
has LTR enabled.
The combination means that if the platform itself enables LTR but
declines to give the OS control over LTR, we unnecessarily avoided using
ASPM L1.2.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=201469 Fixes:
9ab105deb60f ("PCI/ASPM: Disable ASPM L1.2 Substate if we don't have
LTR") Fixes: af8bb9f89838 ("PCI/ACPI: Request LTR control from platform
before using it") Reported-by: RussianNeuroMancer
<russianneuromancer@ya.ru> Reported-by: David Ward
<david.ward@ll.mit.edu> Signed-off-by: Bjorn Helgaas
<bhelgaas@google.com> CC: stable@vger.kernel.org # v4.18+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/probe.c (diff)
Commit eafa704de27bbb428f83d282aabcb5087256aa77 by gregkh
PCI/DPC: Fix print AER status in DPC event handling
commit 9f08a5d896ce43380314c34ed3f264c8e6075b80 upstream.
Previously dpc_handler() called aer_get_device_error_info() without
initializing info->severity, so aer_get_device_error_info() relied on
uninitialized data.
Add dpc_get_aer_uncorrect_severity() to read the port's AER status,
mask, and severity registers and set info->severity.
Also, clear the port's AER fatal error status bits.
Fixes: 8aefa9b0d910 ("PCI/DPC: Print AER status in DPC event handling")
Signed-off-by: Dongdong Liu <liudongdong3@huawei.com>
[bhelgaas: changelog] Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Keith Busch <keith.busch@intel.com> Cc:
stable@vger.kernel.org # v4.19+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/pcie/dpc.c (diff)
Commit 63a9e7ce6624ef0385a1c65bdae0708d3abb7f47 by gregkh
PCI: qcom: Don't deassert reset GPIO during probe
commit 02b485e31d98265189b91f3e69c43df2ed50610c upstream.
Acquiring the reset GPIO low means that reset is being deasserted, this
is followed almost immediately with qcom_pcie_host_init() asserting it,
initializing it and then finally deasserting it again, for the link to
come up.
Some PCIe devices requires a minimum time between the initial deassert
and subsequent reset cycles. In a platform that boots with the reset
GPIO asserted this requirement is being violated by this deassert/assert
pulse.
Acquire the reset GPIO high to prevent this situation by matching the
state to the subsequent asserted state.
Fixes: 82a823833f4e ("PCI: qcom: Add Qualcomm PCIe controller driver")
Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
[lorenzo.pieralisi@arm.com: updated commit log] Signed-off-by: Lorenzo
Pieralisi <lorenzo.pieralisi@arm.com> Acked-by: Stanimir Varbanov
<svarbanov@mm-sol.com> Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/controller/dwc/pcie-qcom.c (diff)
Commit 0d5bc50f524afb84a882cb5f507c4aeeab08aa8a by gregkh
PCI: dwc: skip MSI init if MSIs have been explicitly disabled
commit 3afc8299f39a27b60e1519a28e18878ce878e7dd upstream.
Since 7c5925afbc58 (PCI: dwc: Move MSI IRQs allocation to IRQ domains
hierarchical API) the MSI init claims one of the controller IRQs as a
chained IRQ line for the MSI controller. On some designs, like the
i.MX6, this line is shared with a PCIe legacy IRQ. When the line is
claimed for the MSI domain, any device trying to use this legacy IRQs
will fail to request this IRQ line.
As MSI and legacy IRQs are already mutually exclusive on the DWC core,
as the core won't forward any legacy IRQs once any MSI has been enabled,
users wishing to use legacy IRQs already need to explictly disable MSI
support (usually via the pci=nomsi kernel commandline option). To avoid
any issues with MSI conflicting with legacy IRQs, just skip all of the
DWC MSI initalization, including the IRQ line claim, when MSI is
disabled.
Fixes: 7c5925afbc58 ("PCI: dwc: Move MSI IRQs allocation to IRQ domains
hierarchical API") Tested-by: Tim Harvey <tharvey@gateworks.com>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by:
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Acked-by: Gustavo Pimentel
<gustavo.pimentel@synopsys.com> Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/controller/dwc/pcie-designware-host.c (diff)
Commit ee0bf8d6e7fca46dd8e53a7b97683cb57bb4c3fd by gregkh
PCI: pciehp: Disable Data Link Layer State Changed event on suspend
commit bbe54ea5330d828cc396d451c0e1e5c3f9764c1e upstream.
Commit 0e157e528604 ("PCI/PME: Implement runtime PM callbacks") tried to
solve an issue where the hierarchy immediately wakes up when it is
transitioned into D3cold.  However, it turns out to prevent PME
propagation on some systems that do not support D3cold.
I looked more closely at what might cause the immediate wakeup.  It
happens when the ACPI power resource of the root port is turned off.
The AML code associated with the _OFF() method of the ACPI power
resource starts a PCIe L2/L3 Ready transition and waits for it to
complete.  Right after the L2/L3 Ready transition is started the root
port receives a PME from the downstream port.
The simplest hierarchy where this happens looks like this:
  00:1d.0 PCIe Root Port
   ^
   |
   v
   05:00.0 PCIe switch #1 upstream port
     06:01.0 PCIe switch #1 downstream hotplug port
       ^
       |
       v
       08:00.0 PCIe switch #2 upstream port
It seems that the PCIe link between the two switches, before
PME_Turn_Off/PME_TO_Ack is complete for the whole hierarchy, goes
inactive and triggers PME towards the root port bringing it back to D0.
The L2/L3 Ready sequence is described in PCIe r4.0 spec sections 5.2 and
5.3.3 but unfortunately they do not state what happens if DLLSCE is
enabled during the sequence.
Disabling Data Link Layer State Changed event (DLLSCE) seems to prevent
the issue and still allows the downstream hotplug port to notice when a
device is plugged/unplugged.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=202593 Fixes:
0e157e528604 ("PCI/PME: Implement runtime PM callbacks") Signed-off-by:
Mika Westerberg <mika.westerberg@linux.intel.com> Signed-off-by: Bjorn
Helgaas <bhelgaas@google.com> Reviewed-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> CC: stable@vger.kernel.org # v4.20+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/hotplug/pciehp_hpc.c (diff)
Commit d011c7871d16e81168faaccce9a977499f8a5f97 by gregkh
PCI: pci-bridge-emul: Create per-bridge copy of register behavior
commit 59f81c35e0df840f7112cb296dde48df84a67c79 upstream.
The behavior of the different registers of the PCI-to-PCI bridge is
currently encoded in two global arrays, shared by all instances of
PCI-to-PCI bridge emulation.
However, we will need to tweak the behavior on a per-bridge basis, to
accommodate for different capabilities of the platforms where this code
is used. In preparation for this, create a per-bridge copy of the
register behavior arrays, so that they can later be tweaked on a
per-bridge basis.
Fixes: 1f08673eef123 ("PCI: mvebu: Convert to PCI emulated bridge config
space") Reported-by: Luís Mendes <luis.p.mendes@gmail.com> Reported-by:
Leigh Brown <leigh@solinno.co.uk> Tested-by: Leigh Brown
<leigh@solinno.co.uk> Tested-by: Luis Mendes <luis.p.mendes@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc:
stable@vger.kernel.org Cc: Luís Mendes <luis.p.mendes@gmail.com> Cc:
Leigh Brown <leigh@solinno.co.uk> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/pci-bridge-emul.c (diff)
The file was modifieddrivers/pci/pci-bridge-emul.h (diff)
Commit 2b9ef0bedaac2acc648a03bb519e4609661da6dc by gregkh
PCI: pci-bridge-emul: Extend pci_bridge_emul_init() with flags
commit 33776d059630e5045ea9ccf756c74de8f9cc86de upstream.
Depending on the capabilities of the PCI controller/platform, the
PCI-to-PCI bridge emulation behavior might need to be different. For
example, on platforms that use the pci-mvebu code, we currently don't
support prefetchable memory BARs, so the corresponding fields in the
PCI-to-PCI bridge configuration space should be read-only.
To implement this, extend pci_bridge_emul_init() to take a "flags"
argument, with currently one flag supported:
PCI_BRIDGE_EMUL_NO_PREFETCHABLE_BAR
that will make the prefetchable memory base and limit registers
read-only.
The pci-mvebu and pci-aardvark drivers are updated accordingly.
Fixes: 1f08673eef123 ("PCI: mvebu: Convert to PCI emulated bridge config
space") Reported-by: Luís Mendes <luis.p.mendes@gmail.com> Reported-by:
Leigh Brown <leigh@solinno.co.uk> Tested-by: Leigh Brown
<leigh@solinno.co.uk> Tested-by: Luis Mendes <luis.p.mendes@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc:
stable@vger.kernel.org Cc: Luís Mendes <luis.p.mendes@gmail.com> Cc:
Leigh Brown <leigh@solinno.co.uk> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/pci/pci-bridge-emul.c (diff)
The file was modifieddrivers/pci/controller/pci-aardvark.c (diff)
The file was modifieddrivers/pci/pci-bridge-emul.h (diff)
The file was modifieddrivers/pci/controller/pci-mvebu.c (diff)
Commit c8a23dfeb2d63e79a1cb60640007c04e6c4c39fb by gregkh
IB/hfi1: Close race condition on user context disable and close
commit bc5add09764c123f58942a37c8335247e683d234 upstream.
When disabling and removing a receive context, it is possible for an
asynchronous event (i.e IRQ) to occur.  Because of this, there is a race
between cleaning up the context, and the context being used by the
asynchronous event.
cpu 0  (context cleanup)
   rc->ref_count-- (ref_count == 0)
   hfi1_rcd_free() cpu 1  (IRQ (with rcd index))
rcd_get_by_index()
lock
ref_count+++     <-- reference count race (WARNING)
return rcd
unlock cpu 0
   hfi1_free_ctxtdata() <-- incorrect free location
   lock
   remove rcd from array
   unlock
   free rcd
This race will cause the following WARNING trace:
WARNING: CPU: 0 PID: 175027 at include/linux/kref.h:52
hfi1_rcd_get_by_index+0x84/0xa0 [hfi1] CPU: 0 PID: 175027 Comm: IMB-MPI1
Kdump: loaded Tainted: G OE ------------ 3.10.0-957.el7.x86_64 #1
Hardware name: Intel Corporation S2600KP/S2600KP, BIOS
SE5C610.86B.11.01.0076.C4.111920150602 11/19/2015 Call Trace:
dump_stack+0x19/0x1b
__warn+0xd8/0x100
warn_slowpath_null+0x1d/0x20
hfi1_rcd_get_by_index+0x84/0xa0 [hfi1]
is_rcv_urgent_int+0x24/0x90 [hfi1]
general_interrupt+0x1b6/0x210 [hfi1]
__handle_irq_event_percpu+0x44/0x1c0
handle_irq_event_percpu+0x32/0x80
handle_irq_event+0x3c/0x60
handle_edge_irq+0x7f/0x150
handle_irq+0xe4/0x1a0
do_IRQ+0x4d/0xf0
common_interrupt+0x162/0x162
The race can also lead to a use after free which could be similar to:
general protection fault: 0000 1 SMP CPU: 71 PID: 177147 Comm: IMB-MPI1
Kdump: loaded Tainted: G W OE ------------ 3.10.0-957.el7.x86_64 #1
Hardware name: Intel Corporation S2600KP/S2600KP, BIOS
SE5C610.86B.11.01.0076.C4.111920150602 11/19/2015 task: ffff9962a8098000
ti: ffff99717a508000 task.ti: ffff99717a508000 __kmalloc+0x94/0x230 Call
Trace:
? hfi1_user_sdma_process_request+0x9c8/0x1250 [hfi1]
hfi1_user_sdma_process_request+0x9c8/0x1250 [hfi1]
hfi1_aio_write+0xba/0x110 [hfi1]
do_sync_readv_writev+0x7b/0xd0
do_readv_writev+0xce/0x260
? handle_mm_fault+0x39d/0x9b0
? pick_next_task_fair+0x5f/0x1b0
? sched_clock_cpu+0x85/0xc0
? __schedule+0x13a/0x890
vfs_writev+0x35/0x60
SyS_writev+0x7f/0x110
system_call_fastpath+0x22/0x27
Use the appropriate kref API to verify access.
Reorder context cleanup to ensure context removal before cleanup occurs
correctly.
Cc: stable@vger.kernel.org # v4.14.0+ Fixes: f683c80ca68e ("IB/hfi1:
Resolve kernel panics by reference counting receive contexts")
Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com> Signed-off-by:
Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Jason
Gunthorpe <jgg@mellanox.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/infiniband/hw/hfi1/hfi.h (diff)
The file was modifieddrivers/infiniband/hw/hfi1/init.c (diff)
Commit ada60723d7cd01d811d20144db50da96e633e8c2 by gregkh
IB/rdmavt: Fix loopback send with invalidate ordering
commit 38bbc9f0381550d1d227fc57afa08436e36b32fc upstream.
The IBTA spec notes:
o9-5.2.1: For any HCA which supports SEND with Invalidate, upon
receiving an IETH, the Invalidate operation must not take place until
after the normal transport header validation checks have been
successfully completed.
The rdmavt loopback code does the validation after the invalidate.
Fix by relocating the operation specific logic for all SEND variants
until after the validity checks.
Cc: <stable@vger.kernel.org> #v4.20+ Reviewed-by: Michael J. Ruhl
<michael.j.ruhl@intel.com> Signed-off-by: Mike Marciniszyn
<mike.marciniszyn@intel.com> Signed-off-by: Dennis Dalessandro
<dennis.dalessandro@intel.com> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/infiniband/sw/rdmavt/qp.c (diff)
Commit 25636de95557a95d54ac30be94af3748345a0a90 by gregkh
IB/rdmavt: Fix concurrency panics in QP post_send and modify to error
commit d757c60eca9b22f4d108929a24401e0fdecda0b1 upstream.
The RC/UC code path can go through a software loopback. In this code
path the receive side QP is manipulated.
If two threads are working on the QP receive side (i.e. post_send, and
modify_qp to an error state), QP information can be corrupted.
(post_send via loopback)
set r_sge
loop
    update r_sge
(modify_qp)
    take r_lock
    update r_sge <---- r_sge is now incorrect
(post_send)
    update r_sge <---- crash, etc.
    ...
This can lead to one of the two following crashes:
BUG: unable to handle kernel NULL pointer dereference at (null)
IP:  hfi1_copy_sge+0xf1/0x2e0 [hfi1]
PGD 8000001fe6a57067 PUD 1fd9e0c067 PMD 0
Call Trace:
ruc_loopback+0x49b/0xbc0 [hfi1]
hfi1_do_send+0x38e/0x3e0 [hfi1]
_hfi1_do_send+0x1e/0x20 [hfi1]
process_one_work+0x17f/0x440
worker_thread+0x126/0x3c0
kthread+0xd1/0xe0
ret_from_fork_nospec_begin+0x21/0x21
or:
BUG: unable to handle kernel NULL pointer dereference at
0000000000000048
IP:  rvt_clear_mr_refs+0x45/0x370 [rdmavt]
PGD 80000006ae5eb067 PUD ef15d0067 PMD 0
Call Trace:
rvt_error_qp+0xaa/0x240 [rdmavt]
rvt_modify_qp+0x47f/0xaa0 [rdmavt]
ib_security_modify_qp+0x8f/0x400 [ib_core]
ib_modify_qp_with_udata+0x44/0x70 [ib_core]
modify_qp.isra.23+0x1eb/0x2b0 [ib_uverbs]
ib_uverbs_modify_qp+0xaa/0xf0 [ib_uverbs]
ib_uverbs_write+0x272/0x430 [ib_uverbs]
vfs_write+0xc0/0x1f0
SyS_write+0x7f/0xf0
system_call_fastpath+0x1c/0x21
Fix by using the appropriate locking on the receiving QP.
Fixes: 15703461533a ("IB/{hfi1, qib, rdmavt}: Move ruc_loopback to
rdmavt") Cc: <stable@vger.kernel.org> #v4.9+ Reviewed-by: Mike
Marciniszyn <mike.marciniszyn@intel.com> Signed-off-by: Michael J. Ruhl
<michael.j.ruhl@intel.com> Signed-off-by: Dennis Dalessandro
<dennis.dalessandro@intel.com> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/infiniband/sw/rdmavt/qp.c (diff)
Commit 96728f35572ebe2ce959a820cc981e5eec806139 by gregkh
cxl: Wrap iterations over afu slices inside 'afu_list_lock'
commit edeb304f659792fb5bab90d7d6f3408b4c7301fb upstream.
Within cxl module, iteration over array 'adapter->afu' may be racy at
few points as it might be simultaneously read during an EEH and its
contents being set to NULL while driver is being unloaded or unbound
from the adapter. This might result in a NULL pointer to 'struct afu'
being de-referenced during an EEH thereby causing a kernel oops.
This patch fixes this by making sure that all access to the array
'adapter->afu' is wrapped within the context of spin-lock
'adapter->afu_list_lock'.
Fixes: 9e8df8a21963 ("cxl: EEH support") Cc: stable@vger.kernel.org #
v4.3+ Acked-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Acked-by: Frederic Barrat <fbarrat@linux.ibm.com> Acked-by: Christophe
Lombard <clombard@linux.vnet.ibm.com> Signed-off-by: Vaibhav Jain
<vaibhav@linux.ibm.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/misc/cxl/pci.c (diff)
The file was modifieddrivers/misc/cxl/guest.c (diff)
Commit e1ac0077345670a71613dc8c92da3ae5c8bfd489 by gregkh
ext2: Fix underflow in ext2_max_size()
commit 1c2d14212b15a60300a2d4f6364753e87394c521 upstream.
When ext2 filesystem is created with 64k block size, ext2_max_size()
will return value less than 0. Also, we cannot write any file in this fs
since the sb->maxbytes is less than 0. The core of the problem is that
the size of block index tree for such large block size is more than
i_blocks can carry. So fix the computation to count with this
possibility.
File size limits computed with the new function for the full range of
possible block sizes look like:
bits file_size 10     17247252480 11    275415851008 12   2196873666560
13   2197948973056 14   2198486220800 15   2198754754560 16 
2198888906752
CC: stable@vger.kernel.org Reported-by: yangerkun <yangerkun@huawei.com>
Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/ext2/super.c (diff)
Commit a712a38100b569ddb5a55b421531f48dcd030b4b by gregkh
clk: uniphier: Fix update register for CPU-gear
commit 521282237b9d78b9bff423ec818becd4c95841c2 upstream.
Need to set the update bit in UNIPHIER_CLK_CPUGEAR_UPD to update the
CPU-gear value.
Fixes: d08f1f0d596c ("clk: uniphier: add CPU-gear change (cpufreq)
support") Cc: linux-stable@vger.kernel.org Signed-off-by: Kunihiko
Hayashi <hayashi.kunihiko@socionext.com> Acked-by: Masahiro Yamada
<yamada.masahiro@socionext.com> Signed-off-by: Stephen Boyd
<sboyd@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/uniphier/clk-uniphier-cpugear.c (diff)
Commit d9d7760c1e45ecb9c4c2e6a2d2668ad2bd10f10c by gregkh
clk: clk-twl6040: Fix imprecise external abort for pdmclk
commit 5ae51d67aec95f6f9386aa8dd5db424964895575 upstream.
I noticed that modprobe clk-twl6040 can fail after a cold boot with:
abe_cm:clk:0010:0: failed to enable
... Unhandled fault: imprecise external abort (0x1406) at 0xbe896b20
WARNING: CPU: 1 PID: 29 at drivers/clk/clk.c:828
clk_core_disable_lock+0x18/0x24
...
(clk_core_disable_lock) from [<c0123534>] (_disable_clocks+0x18/0x90)
(_disable_clocks) from [<c0124040>] (_idle+0x17c/0x244)
(_idle) from [<c0125ad4>] (omap_hwmod_idle+0x24/0x44)
(omap_hwmod_idle) from [<c053a038>] (sysc_runtime_suspend+0x48/0x108)
(sysc_runtime_suspend) from [<c06084c4>] (__rpm_callback+0x144/0x1d8)
(__rpm_callback) from [<c0608578>] (rpm_callback+0x20/0x80)
(rpm_callback) from [<c0607034>] (rpm_suspend+0x120/0x694)
(rpm_suspend) from [<c0607a78>] (__pm_runtime_idle+0x60/0x84)
(__pm_runtime_idle) from [<c053aaf0>] (sysc_probe+0x874/0xf2c)
(sysc_probe) from [<c05fecd4>] (platform_drv_probe+0x48/0x98)
After searching around for a similar issue, I came across an earlier fix
that never got merged upstream in the Android tree for glass-omap-xrr02.
There is patch "MFD: twl6040-codec: Implement PDMCLK cold temp errata"
by Misael Lopez Cruz <misael.lopez@ti.com>.
Based on my observations, this fix is also needed when cold booting
devices, and not just for deeper idle modes. Since we now have a clock
driver for pdmclk, let's fix the issue in twl6040_pdmclk_prepare().
Cc: Misael Lopez Cruz <misael.lopez@ti.com> Cc: Peter Ujfalusi
<peter.ujfalusi@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Acked-by: Peter Ujfalusi <peter.ujfalusi@ti.com> Cc:
<stable@vger.kernel.org> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/clk-twl6040.c (diff)
Commit 7da58ad824b10393f15a02375638945cbdde8389 by gregkh
clk: samsung: exynos5: Fix possible NULL pointer exception on
platform_device_alloc() failure
commit 5f0b6216ea381b43c0dff88702d6cc5673d63922 upstream.
During initialization of subdevices if platform_device_alloc() failed,
returned NULL pointer will be later dereferenced.  Add proper error
paths to exynos5_clk_register_subcmu().  The return value of this
function is still ignored because at this stage of init there is nothing
we can do.
Fixes: b06a532bf1fa ("clk: samsung: Add Exynos5 sub-CMU clock driver")
Cc: <stable@vger.kernel.org> Signed-off-by: Krzysztof Kozlowski
<krzk@kernel.org> Reviewed-by: Geert Uytterhoeven
<geert+renesas@glider.be> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/samsung/clk-exynos5-subcmu.c (diff)
Commit 1a29715073a181d6d41b8b6b1a9b7a3b67f4c0b9 by gregkh
clk: samsung: exynos5: Fix kfree() of const memory on setting
driver_override
commit 785c9f411eb2d9a6076d3511c631587d5e676bf3 upstream.
Platform driver driver_override field should not be initialized from
const memory because the core later kfree() it.  If driver_override is
manually set later through sysfs, kfree() of old value leads to:
    $ echo "new_value" > /sys/bus/platform/drivers/.../driver_override
    kernel BUG at ../mm/slub.c:3960!
   Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
   ...
   (kfree) from [<c058e8c0>] (platform_set_driver_override+0x84/0xac)
   (platform_set_driver_override) from [<c058e908>]
(driver_override_store+0x20/0x34)
   (driver_override_store) from [<c031f778>]
(kernfs_fop_write+0x100/0x1dc)
   (kernfs_fop_write) from [<c0296de8>] (__vfs_write+0x2c/0x17c)
   (__vfs_write) from [<c02970c4>] (vfs_write+0xa4/0x188)
   (vfs_write) from [<c02972e8>] (ksys_write+0x4c/0xac)
   (ksys_write) from [<c0101000>] (ret_fast_syscall+0x0/0x28)
The clk-exynos5-subcmu driver uses override only for the purpose of
creating meaningful names for children devices (matching names of power
domains, e.g. DISP, MFC).  The driver_override was not developed for
this purpose so just switch to default names of devices to fix the
issue.
Fixes: b06a532bf1fa ("clk: samsung: Add Exynos5 sub-CMU clock driver")
Cc: <stable@vger.kernel.org> Signed-off-by: Krzysztof Kozlowski
<krzk@kernel.org> Reviewed-by: Geert Uytterhoeven
<geert+renesas@glider.be> Signed-off-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/samsung/clk-exynos5-subcmu.c (diff)
Commit 7d4966247a99b8d549a3301fe06310911db286b8 by gregkh
clk: ingenic: Fix round_rate misbehaving with non-integer dividers
commit bc5d922c93491878c44c9216e9d227c7eeb81d7f upstream.
Take a parent rate of 180 MHz, and a requested rate of 4.285715 MHz.
This results in a theorical divider of 41.999993 which is then rounded
up to 42. The .round_rate function would then return (180 MHz / 42) as
the clock, rounded down, so 4.285714 MHz.
Calling clk_set_rate on 4.285714 MHz would round the rate again, and
give a theorical divider of 42,0000028, now rounded up to 43, and the
rate returned would be (180 MHz / 43) which is 4.186046 MHz, aka. not
what we requested.
Fix this by rounding up the divisions.
Signed-off-by: Paul Cercueil <paul@crapouillou.net> Tested-by: Maarten
ter Huurne <maarten@treewalker.org> Cc: <stable@vger.kernel.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/ingenic/cgu.c (diff)
Commit f11fa22a7a5f9ddfa9fabcf919fad4728ea38acd by gregkh
clk: ingenic: Fix doc of ingenic_cgu_div_info
commit 7ca4c922aad2e3c46767a12f80d01c6b25337b59 upstream.
The 'div' field does not represent a number of bits used to divide
(understand: right-shift) the divider, but a number itself used to
divide the divider.
Signed-off-by: Paul Cercueil <paul@crapouillou.net> Signed-off-by:
Maarten ter Huurne <maarten@treewalker.org> Cc: <stable@vger.kernel.org>
Signed-off-by: Stephen Boyd <sboyd@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clk/ingenic/cgu.h (diff)
Commit 07e326fd07d76449aa89053ef0f92fd6969e7115 by gregkh
usb: chipidea: tegra: Fix missed ci_hdrc_remove_device()
commit 563b9372f7ec57e44e8f9a8600c5107d7ffdd166 upstream.
The ChipIdea's platform device need to be unregistered on Tegra's driver
module removal.
Fixes: dfebb5f43a78827a ("usb: chipidea: Add support for
Tegra20/30/114/124") Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Acked-by: Peter Chen <peter.chen@nxp.com> Cc: stable
<stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/chipidea/ci_hdrc_tegra.c (diff)
Commit 39367147f046bf92eef5a542bc1326d72658db6a by gregkh
usb: typec: tps6598x: handle block writes separately with plain-I2C
adapters
commit 8a863a608d47fa5d9dd15cf841817f73f804cf91 upstream.
Commit 1a2f474d328f handles block _reads_ separately with plain-I2C
adapters, but the problem described with regmap-i2c not handling SMBus
block transfers (i.e. read and writes) correctly also exists with
writes.
As workaround, this patch adds a block write function the same way
1a2f474d328f adds a block read function.
Fixes: 1a2f474d328f ("usb: typec: tps6598x: handle block reads
separately with plain-I2C adapters") Fixes: 0a4c005bd171 ("usb: typec:
driver for TI TPS6598x USB Power Delivery controllers") Signed-off-by:
Nikolaus Voss <nikolaus.voss@loewensteinmedical.de> Cc: stable
<stable@vger.kernel.org> Reviewed-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/usb/typec/tps6598x.c (diff)
Commit 37fe1d56aa2c19dc51022a6a884b7e65b821b3dd by gregkh
dmaengine: usb-dmac: Make DMAC system sleep callbacks explicit
commit d9140a0da4a230a03426d175145989667758aa6a upstream.
This commit fixes the issue that USB-DMAC hangs silently after system
resumes on R-Car Gen3 hence renesas_usbhs will not work correctly when
using USB-DMAC for bulk transfer e.g. ethernet or serial gadgets.
The issue can be reproduced by these steps:
1. modprobe g_serial
2. Suspend and resume system.
3. connect a usb cable to host side
4. Transfer data from Host to Target
5. cat /dev/ttyGS0 (Target side)
6. echo "test" > /dev/ttyACM0 (Host side)
The 'cat' will not result anything. However, system still can work
normally.
Currently, USB-DMAC driver does not have system sleep callbacks hence
this driver relies on the PM core to force runtime suspend/resume to
suspend and reinitialize USB-DMAC during system resume. After the commit
17218e0092f8 ("PM / genpd: Stop/start devices without
pm_runtime_force_suspend/resume()"), PM core will not force runtime
suspend/resume anymore so this issue happens.
To solve this, make system suspend resume explicit by using
pm_runtime_force_{suspend,resume}() as the system sleep callbacks.
SET_NOIRQ_SYSTEM_SLEEP_PM_OPS() is used to make sure USB-DMAC suspended
after and initialized before renesas_usbhs."
Signed-off-by: Phuong Nguyen <phuong.nguyen.xw@renesas.com>
Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com> Cc:
<stable@vger.kernel.org> # v4.16+
[shimoda: revise the commit log and add Cc tag] Signed-off-by: Yoshihiro
Shimoda <yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Vinod Koul
<vkoul@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/dma/sh/usb-dmac.c (diff)
Commit fa4d0361304f844f8536df0f826659e6ff54904d by gregkh
serial: uartps: Fix stuck ISR if RX disabled with non-empty FIFO
commit 7abab1605139bc41442864c18f9573440f7ca105 upstream.
If RX is disabled while there are still unprocessed bytes in RX FIFO,
cdns_uart_handle_rx() called from interrupt handler will get stuck in
the receive loop as read bytes will not get removed from the RX FIFO and
CDNS_UART_SR_RXEMPTY bit will never get set.
Avoid the stuck handler by checking first if RX is disabled. port->lock
protects against race with RX-disabling functions.
This HW behavior was mentioned by Nathan Rossi in 43e98facc4a3 ("tty:
xuartps: Fix RX hang, and TX corruption in termios call") which fixed a
similar issue in cdns_uart_set_termios(). The behavior can also be
easily verified by e.g. setting CDNS_UART_CR_RX_DIS at the beginning of
cdns_uart_handle_rx() - the following loop will then get stuck.
Resetting the FIFO using RXRST would not set RXEMPTY either so simply
issuing a reset after RX-disable would not work.
I observe this frequently on a ZynqMP board during heavy RX load at 1M
baudrate when the reader process exits and thus RX gets disabled.
Fixes: 61ec9016988f ("tty/serial: add support for Xilinx PS UART")
Signed-off-by: Anssi Hannula <anssi.hannula@bitwise.fi> Cc:
stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/xilinx_uartps.c (diff)
Commit c7388ba1090255168aeec594a5b6fc7d7643ac4c by gregkh
serial: 8250_of: assume reg-shift of 2 for mrvl,mmp-uart
commit f4817843e39ce78aace0195a57d4e8500a65a898 upstream.
There are two other drivers that bind to mrvl,mmp-uart and both of them
assume register shift of 2 bits. There are device trees that lack the
property and rely on that assumption.
If this driver wins the race to bind to those devices, it should behave
the same as the older deprecated driver.
Signed-off-by: Lubomir Rintel <lkundrak@v3.sk> Cc:
stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/8250/8250_of.c (diff)
Commit 7271438208b6c7954d8b27364c955c8302f9e8ad by gregkh
serial: 8250_pci: Fix number of ports for ACCES serial cards
commit b896b03bc7fce43a07012cc6bf5e2ab2fddf3364 upstream.
Have the correct number of ports created for ACCES serial cards. Two
port cards show up as four ports, and four port cards show up as eight.
Fixes: c8d192428f52 ("serial: 8250: added acces i/o products quad and
octal serial cards") Signed-off-by: Jay Dolan <jay.dolan@accesio.com>
Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/8250/8250_pci.c (diff)
Commit bb47633ab15e32d5c5de9b4e97ad1f3867c07acc by gregkh
serial: 8250_pci: Have ACCES cards that use the four port Pericom
PI7C9X7954 chip use the pci_pericom_setup()
commit 78d3820b9bd39028727c6aab7297b63c093db343 upstream.
The four port Pericom chips have the fourth port at the wrong address.
Make use of quirk to fix it.
Fixes: c8d192428f52 ("serial: 8250: added acces i/o products quad and
octal serial cards") Cc: stable <stable@vger.kernel.org> Signed-off-by:
Jay Dolan <jay.dolan@accesio.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/serial/8250/8250_pci.c (diff)
Commit 8c343062c8faf4e17c9c38c4bc850f557a6aed43 by gregkh
jbd2: clear dirty flag when revoking a buffer from an older transaction
commit 904cdbd41d749a476863a0ca41f6f396774f26e4 upstream.
Now, we capture a data corruption problem on ext4 while we're truncating
an extent index block. Imaging that if we are revoking a buffer which
has been journaled by the committing transaction, the buffer's jbddirty
flag will not be cleared in jbd2_journal_forget(), so the commit code
will set the buffer dirty flag again after refile the buffer.
fsx                               kjournald2
                                 jbd2_journal_commit_transaction
jbd2_journal_revoke                commit phase 1~5...
jbd2_journal_forget
  belongs to older transaction    commit phase 6
  jbddirty not clear               __jbd2_journal_refile_buffer
                                    __jbd2_journal_unfile_buffer
                                     test_clear_buffer_jbddirty
                                      mark_buffer_dirty
Finally, if the freed extent index block was allocated again as data
block by some other files, it may corrupt the file data after writing
cached pages later, such as during unmount time. (In general,
clean_bdev_aliases() related helpers should be invoked after
re-allocation to prevent the above corruption, but unfortunately we
missed it when zeroout the head of extra extent blocks in
ext4_ext_handle_unwritten_extents()).
This patch mark buffer as freed and set j_next_transaction to the new
transaction when it already belongs to the committing transaction in
jbd2_journal_forget(), so that commit code knows it should clear dirty
bits when it is done with the buffer.
This problem can be reproduced by xfstests generic/455 easily with seeds
(3246 3247 3248 3249).
Signed-off-by: zhangyi (F) <yi.zhang@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Reviewed-by: Jan Kara <jack@suse.cz> Cc:
stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/jbd2/transaction.c (diff)
Commit f9897a30deb7d93670d0bfd15f56a181158ccc41 by gregkh
jbd2: fix compile warning when using JBUFFER_TRACE
commit 01215d3edb0f384ddeaa5e4a22c1ae5ff634149f upstream.
The jh pointer may be used uninitialized in the two cases below and the
compiler complain about it when enabling JBUFFER_TRACE macro, fix them.
In file included from fs/jbd2/transaction.c:19:0: fs/jbd2/transaction.c:
In function ‘jbd2_journal_get_undo_access’:
./include/linux/jbd2.h:1637:38: warning: ‘jh’ is used uninitialized in
this function [-Wuninitialized]
#define JBUFFER_TRACE(jh, info) do { printk("%s: %d\n", __func__,
jh->b_jcount);} while (0)
                                     ^ fs/jbd2/transaction.c:1219:23:
note: ‘jh’ was declared here
struct journal_head *jh;
                      ^ In file included from
fs/jbd2/transaction.c:19:0: fs/jbd2/transaction.c: In function
‘jbd2_journal_dirty_metadata’:
./include/linux/jbd2.h:1637:38: warning: ‘jh’ may be used uninitialized
in this function [-Wmaybe-uninitialized]
#define JBUFFER_TRACE(jh, info) do { printk("%s: %d\n", __func__,
jh->b_jcount);} while (0)
                                     ^ fs/jbd2/transaction.c:1332:23:
note: ‘jh’ was declared here
struct journal_head *jh;
                      ^
Signed-off-by: zhangyi (F) <yi.zhang@huawei.com> Signed-off-by: Theodore
Ts'o <tytso@mit.edu> Cc: stable@vger.kernel.org Reviewed-by: Jan Kara
<jack@suse.cz> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/jbd2/transaction.c (diff)
Commit 7e30471146d2a450df421e2462ae220e8303a167 by gregkh
selinux: add the missing walk_size + len check in
selinux_sctp_bind_connect
commit 292c997a1970f8d1e1dfa354ed770a22f7b5a434 upstream.
As does in __sctp_connect(), when checking addrs in a while loop, after
get the addr len according to sa_family, it's necessary to do the check
walk_size + af->sockaddr_len > addrs_size to make sure it won't access
an out-of-bounds addr.
The same thing is needed in selinux_sctp_bind_connect(), otherwise an
out-of-bounds issue can be triggered:
  [14548.772313] BUG: KASAN: slab-out-of-bounds in
selinux_sctp_bind_connect+0x1aa/0x1f0
[14548.927083] Call Trace:
[14548.938072]  dump_stack+0x9a/0xe9
[14548.953015]  print_address_description+0x65/0x22e
[14548.996524]  kasan_report.cold.6+0x92/0x1a6
[14549.015335]  selinux_sctp_bind_connect+0x1aa/0x1f0
[14549.036947]  security_sctp_bind_connect+0x58/0x90
[14549.058142]  __sctp_setsockopt_connectx+0x5a/0x150 [sctp]
[14549.081650]  sctp_setsockopt.part.24+0x1322/0x3ce0 [sctp]
Cc: stable@vger.kernel.org Fixes: d452930fd3b9 ("selinux: Add SCTP
support") Reported-by: Chunyu Hu <chuhu@redhat.com> Signed-off-by: Xin
Long <lucien.xin@gmail.com> Reviewed-by: Marcelo Ricardo Leitner
<marcelo.leitner@gmail.com> Signed-off-by: Paul Moore
<paul@paul-moore.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsecurity/selinux/hooks.c (diff)
Commit 232aa30f16b95c0a6a5fb6fb1acffa52e8f8bd8f by gregkh
security/selinux: fix SECURITY_LSM_NATIVE_LABELS on reused superblock
commit 3815a245b50124f0865415dcb606a034e97494d4 upstream.
In the case when we're reusing a superblock, selinux_sb_clone_mnt_opts()
fails to set set_kern_flags, with the result that
nfs_clone_sb_security() incorrectly clears NFS_CAP_SECURITY_LABEL.
The result is that if you mount the same NFS filesystem twice, NFS
security labels are turned off, even if they would work fine if you
mounted the filesystem only once.
("fixes" may be not exactly the right tag, it may be more like
"fixed-other-cases-but-missed-this-one".)
Cc: Scott Mayhew <smayhew@redhat.com> Cc: stable@vger.kernel.org Fixes:
0b4d3452b8b4 "security/selinux: allow security_sb_clone_mnt_opts..."
Signed-off-by: J. Bruce Fields <bfields@redhat.com> Acked-by: Stephen
Smalley <sds@tycho.nsa.gov> Signed-off-by: Paul Moore
<paul@paul-moore.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsecurity/selinux/hooks.c (diff)
Commit d0d33e87d1438384461596015a580dc51820d5d1 by gregkh
powerpc/32: Clear on-stack exception marker upon exception return
commit 9580b71b5a7863c24a9bd18bcd2ad759b86b1eff upstream.
Clear the on-stack STACK_FRAME_REGS_MARKER on exception exit in order to
avoid confusing stacktrace like the one below.
  Call Trace:
[c0e9dca0] [c01c42a0] print_address_description+0x64/0x2bc (unreliable)
[c0e9dcd0] [c01c4684] kasan_report+0xfc/0x180
[c0e9dd10] [c0895130] memchr+0x24/0x74
[c0e9dd30] [c00a9e38] msg_print_text+0x124/0x574
[c0e9dde0] [c00ab710] console_unlock+0x114/0x4f8
[c0e9de40] [c00adc60] vprintk_emit+0x188/0x1c4
--- interrupt: c0e9df00 at 0x400f330
     LR = init_stack+0x1f00/0x2000
[c0e9de80] [c00ae3c4] printk+0xa8/0xcc (unreliable)
[c0e9df20] [c0c27e44] early_irq_init+0x38/0x108
[c0e9df50] [c0c15434] start_kernel+0x310/0x488
[c0e9dff0] [00003484] 0x3484
With this patch the trace becomes:
  Call Trace:
[c0e9dca0] [c01c42c0] print_address_description+0x64/0x2bc (unreliable)
[c0e9dcd0] [c01c46a4] kasan_report+0xfc/0x180
[c0e9dd10] [c0895150] memchr+0x24/0x74
[c0e9dd30] [c00a9e58] msg_print_text+0x124/0x574
[c0e9dde0] [c00ab730] console_unlock+0x114/0x4f8
[c0e9de40] [c00adc80] vprintk_emit+0x188/0x1c4
[c0e9de80] [c00ae3e4] printk+0xa8/0xcc
[c0e9df20] [c0c27e44] early_irq_init+0x38/0x108
[c0e9df50] [c0c15434] start_kernel+0x310/0x488
[c0e9dff0] [00003484] 0x3484
Cc: stable@vger.kernel.org Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/entry_32.S (diff)
Commit 8d2cc8c1c4fec1c33376fd2ae01ac393720723ec by gregkh
powerpc/wii: properly disable use of BATs when requested.
commit 6d183ca8baec983dc4208ca45ece3c36763df912 upstream.
'nobats' kernel parameter or some options like CONFIG_DEBUG_PAGEALLOC
deny the use of BATS for mapping memory.
This patch makes sure that the specific wii RAM mapping function takes
it into account as well.
Fixes: de32400dd26e ("wii: use both mem1 and mem2 as ram") Cc:
stable@vger.kernel.org Reviewed-by: Jonathan Neuschafer
<j.neuschaefer@gmx.net> Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/embedded6xx/wii.c (diff)
Commit 16ee62368aaa56bc52793b563f93bf3ba7410c22 by gregkh
powerpc/powernv: Make opal log only readable by root
commit 7b62f9bd2246b7d3d086e571397c14ba52645ef1 upstream.
Currently the opal log is globally readable. It is kernel policy to
limit the visibility of physical addresses / kernel pointers to root.
Given this and the fact the opal log may contain this information it
would be better to limit the readability to root.
Fixes: bfc36894a48b ("powerpc/powernv: Add OPAL message log interface")
Cc: stable@vger.kernel.org # v3.15+ Signed-off-by: Jordan Niethe
<jniethe5@gmail.com> Reviewed-by: Stewart Smith <stewart@linux.ibm.com>
Reviewed-by: Andrew Donnellan <andrew.donnellan@au1.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/powernv/opal-msglog.c (diff)
Commit 3b218d244482379551a1c415c1f9d27f2c71b0b7 by gregkh
powerpc/83xx: Also save/restore SPRG4-7 during suspend
commit 36da5ff0bea2dc67298150ead8d8471575c54c7d upstream.
The 83xx has 8 SPRG registers and uses at least SPRG4 for DTLB handling
LRU.
Fixes: 2319f1239592 ("powerpc/mm: e300c2/c3/c4 TLB errata workaround")
Cc: stable@vger.kernel.org Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/83xx/suspend-asm.S (diff)
Commit f7d68a102ad4685b6c40c398185e585453754601 by gregkh
powerpc/kvm: Save and restore host AMR/IAMR/UAMOR
commit c3c7470c75566a077c8dc71dcf8f1948b8ddfab4 upstream.
When the hash MMU is active the AMR, IAMR and UAMOR are used for pkeys.
The AMR is directly writable by user space, and the UAMOR masks those
writes, meaning both registers are effectively user register state. The
IAMR is used to create an execute only key.
Also we must maintain the value of at least the AMR when running in
process context, so that any memory accesses done by the kernel on
behalf of the process are correctly controlled by the AMR.
Although we are correctly switching all registers when going into a
guest, on returning to the host we just write 0 into all regs, except on
Power9 where we restore the IAMR correctly.
This could be observed by a user process if it writes the AMR, then runs
a guest and we then return immediately to it without rescheduling.
Because we have written 0 to the AMR that would have the effect of
granting read/write permission to pages that the process was trying to
protect.
In addition, when using the Radix MMU, the AMR can prevent inadvertent
kernel access to userspace data, writing 0 to the AMR disables that
protection.
So save and restore AMR, IAMR and UAMOR.
Fixes: cf43d3b26452 ("powerpc: Enable pkey subsystem") Cc:
stable@vger.kernel.org # v4.16+ Signed-off-by: Russell Currey
<ruscur@russell.cc> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Acked-by: Paul Mackerras <paulus@ozlabs.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kvm/book3s_hv_rmhandlers.S (diff)
Commit 702c1ab420ab4265a98fa5a9eae7db20c2de52ff by gregkh
powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit
commit 19f8a5b5be2898573a5e1dc1db93e8d40117606a upstream.
Commit 24be85a23d1f ("powerpc/powernv: Clear PECE1 in LPCR via stop-api
only on Hotplug", 2017-07-21) added two calls to opal_slw_set_reg()
inside pnv_cpu_offline(), with the aim of changing the LPCR value in the
SLW image to disable wakeups from the decrementer while a CPU is
offline.  However, pnv_cpu_offline() gets called each time a secondary
CPU thread is woken up to participate in running a KVM guest, that is,
not just when a CPU is offlined.
Since opal_slw_set_reg() is a very slow operation (with observed
execution times around 20 milliseconds), this means that an offline
secondary CPU can often be busy doing the opal_slw_set_reg() call when
the primary CPU wants to grab all the secondary threads so that it can
run a KVM guest.  This leads to messages like "KVM: couldn't grab CPU n"
being printed and guest execution failing.
There is no need to reprogram the SLW image on every KVM guest entry and
exit.  So that we do it only when a CPU is really transitioning between
online and offline, this moves the calls to
pnv_program_cpu_hotplug_lpcr() into pnv_smp_cpu_kill_self().
Fixes: 24be85a23d1f ("powerpc/powernv: Clear PECE1 in LPCR via stop-api
only on Hotplug") Cc: stable@vger.kernel.org # v4.14+ Signed-off-by:
Paul Mackerras <paulus@ozlabs.org> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/platforms/powernv/smp.c (diff)
The file was modifiedarch/powerpc/include/asm/powernv.h (diff)
The file was modifiedarch/powerpc/platforms/powernv/idle.c (diff)
Commit 651db146179376b543d0ee159da8101c4080d3ad by gregkh
powerpc/64s/hash: Fix assert_slb_presence() use of the slbfee.
instruction
commit 7104dccfd052fde51eecc9972dad9c40bd3e0d11 upstream.
The slbfee. instruction must have bit 24 of RB clear, failure to do so
can result in false negatives that result in incorrect assertions.
This is not obvious from the ISA v3.0B document, which only says:
    The hardware ignores the contents of RB 36:38 40:63 -- p.1032
This patch fixes the bug and also clears all other bits from PPC bit
36-63, which is good practice when dealing with reserved or ignored
bits.
Fixes: e15a4fea4dee ("powerpc/64s/hash: Add some SLB debugging tests")
Cc: stable@vger.kernel.org # v4.20+ Reported-by: Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> Tested-by: Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> Signed-off-by: Nicholas Piggin
<npiggin@gmail.com> Reviewed-by: Aneesh Kumar K.V
<aneesh.kumar@linux.ibm.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/mm/slb.c (diff)
Commit 55b852a06fe18acfb0cb684fbd3f3fbc75aa91a3 by gregkh
powerpc: Fix 32-bit KVM-PR lockup and host crash with MacOS guest
commit fe1ef6bcdb4fca33434256a802a3ed6aacf0bd2f upstream.
Commit 8792468da5e1 "powerpc: Add the ability to save FPU without giving
it up" unexpectedly removed the MSR_FE0 and MSR_FE1 bits from the
bitmask used to update the MSR of the previous thread in
__giveup_fpu() causing a KVM-PR MacOS guest to lockup and panic the host
kernel.
Leaving FE0/1 enabled means unrelated processes might receive FPEs when
they're not expecting them and crash. In particular if this happens to
init the host will then panic.
eg (transcribed):
qemu-system-ppc[837]: unhandled signal 8 at 12cc9ce4 nip 12cc9ce4 lr
12cc9ca4 code 0
systemd[1]: unhandled signal 8 at 202f02e0 nip 202f02e0 lr 001003d4
code 0
Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
Reinstate these bits to the MSR bitmask to enable MacOS guests to run
under 32-bit KVM-PR once again without issue.
Fixes: 8792468da5e1 ("powerpc: Add the ability to save FPU without
giving it up") Cc: stable@vger.kernel.org # v4.6+ Signed-off-by: Mark
Cave-Ayland <mark.cave-ayland@ilande.co.uk> Signed-off-by: Michael
Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/process.c (diff)
Commit 4ca936a493606bea2224c3b3796235fd398f31d0 by gregkh
powerpc/ptrace: Simplify vr_get/set() to avoid GCC warning
commit ca6d5149d2ad0a8d2f9c28cbe379802260a0a5e0 upstream.
GCC 8 warns about the logic in vr_get/set(), which with -Werror breaks
the build:
  In function ‘user_regset_copyin’,
     inlined from ‘vr_set’ at arch/powerpc/kernel/ptrace.c:628:9:
include/linux/regset.h:295:4: error: ‘memcpy’ offset [-527, -529] is
out of the bounds [0, 16] of object ‘vrsave’ with type ‘union
<anonymous>’ [-Werror=array-bounds]
arch/powerpc/kernel/ptrace.c: In function ‘vr_set’:
arch/powerpc/kernel/ptrace.c:623:5: note: ‘vrsave’ declared here
    } vrsave;
This has been identified as a regression in GCC, see GCC bug 88273.
However we can avoid the warning and also simplify the logic and make it
more robust.
Currently we pass -1 as end_pos to user_regset_copyout(). This says
"copy up to the end of the regset".
The definition of the regset is:
[REGSET_VMX] = {
.core_note_type = NT_PPC_VMX, .n = 34,
.size = sizeof(vector128), .align = sizeof(vector128),
.active = vr_active, .get = vr_get, .set = vr_set
},
The end is calculated as (n * size), ie. 34 * sizeof(vector128).
In vr_get/set() we pass start_pos as 33 * sizeof(vector128), meaning we
can copy up to sizeof(vector128) into/out-of vrsave.
The on-stack vrsave is defined as:
union {
  elf_vrreg_t reg;
  u32 word;
} vrsave;
And elf_vrreg_t is:
typedef __vector128 elf_vrreg_t;
So there is no bug, but we rely on all those sizes lining up, otherwise
we would have a kernel stack exposure/overwrite on our hands.
Rather than relying on that we can pass an explict end_pos based on the
sizeof(vrsave). The result should be exactly the same but it's more
obviously not over-reading/writing the stack and it avoids the compiler
warning.
Reported-by: Meelis Roos <mroos@linux.ee> Reported-by: Mathieu Malaterre
<malat@debian.org> Cc: stable@vger.kernel.org Tested-by: Mathieu
Malaterre <malat@debian.org> Tested-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/ptrace.c (diff)
Commit fcf1ca937f59cee7dbaac4aabca45ebd95997aba by gregkh
powerpc/hugetlb: Don't do runtime allocation of 16G pages in LPAR
configuration
commit 35f2806b481f5b9207f25e1886cba5d1c4d12cc7 upstream.
We added runtime allocation of 16G pages in commit 4ae279c2c96a
("powerpc/mm/hugetlb: Allow runtime allocation of 16G.") That was done
to enable 16G allocation on PowerNV and KVM config. In case of KVM
config, we mostly would have the entire guest RAM backed by 16G hugetlb
pages for this to work. PAPR do support partial backing of guest RAM
with hugepages via ibm,expected#pages node of memory node in the device
tree. This means rest of the guest RAM won't be backed by 16G contiguous
pages in the host and hence a hash page table insertion can fail in such
case.
An example error message will look like
  hash-mmu: mm: Hashing failure ! EA=0x7efc00000000
access=0x8000000000000006 current=readback
hash-mmu:     trap=0x300 vsid=0x67af789 ssize=1 base psize=14 psize 14
pte=0xc000000400000386
readback[12260]: unhandled signal 7 at 00007efc00000000 nip
00000000100012d0 lr 000000001000127c code 2
This patch address that by preventing runtime allocation of 16G
hugepages in LPAR config. To allocate 16G hugetlb one need to kernel
command line hugepagesz=16G hugepages=<number of 16G pages>
With radix translation mode we don't run into this issue.
This change will prevent runtime allocation of 16G hugetlb pages on kvm
with hash translation mode. However, with the current upstream it was
observed that 16G hugetlbfs backed guest doesn't boot at all.
We observe boot failure with the below message:
[131354.647546] KVM: map_vrma at 0 failed, ret=-4
That means this patch is not resulting in an observable regression. Once
we fix the boot issue with 16G hugetlb backed memory, we need to use
ibm,expected#pages memory node attribute to indicate 16G page
reservation to the guest. This will also enable partial backing of guest
RAM with 16G pages.
Fixes: 4ae279c2c96a ("powerpc/mm/hugetlb: Allow runtime allocation of
16G.") Cc: stable@vger.kernel.org # v4.14+ Signed-off-by: Aneesh Kumar
K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/include/asm/book3s/64/hugetlb.h (diff)
Commit 850a95bf2a4626745d7a4de59fb08d23a93f305f by gregkh
powerpc/smp: Fix NMI IPI timeout
commit 1b5fc84aba170bdfe3533396ca9662ceea1609b7 upstream.
The NMI IPI timeout logic is broken, if __smp_send_nmi_ipi() times out
on the first condition, delay_us will be zero which will send it into
the second spin loop with no timeout so it will spin forever.
Fixes: 5b73151fff63 ("powerpc: NMI IPI make NMI IPIs fully sychronous")
Cc: stable@vger.kernel.org # v4.19+ Signed-off-by: Nicholas Piggin
<npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/smp.c (diff)
Commit 71bb4d02441620f983e119edae46d2bbe1f459f5 by gregkh
powerpc/smp: Fix NMI IPI xmon timeout
commit 88b9a3d1425a436e95c41f09986fdae2daee437a upstream.
The xmon debugger IPI handler waits in the callback function while xmon
is still active. This means they don't complete the IPI, and the
initiator always times out waiting for them.
Things manage to work after the timeout because there is some fallback
logic to keep NMI IPI state sane in case of the timeout, but this is a
bit ugly.
This patch changes NMI IPI back to half-asynchronous (i.e., wait for
everyone to call in, do not wait for IPI function to complete), but the
complexity is avoided by going one step further and allowing new IPIs to
be issued before the IPI functions to all complete.
If synchronization against that is required, it is left up to the
caller, but current callers don't require that. In fact with the timeout
handling, callers must be able to cope with this already.
Fixes: 5b73151fff63 ("powerpc: NMI IPI make NMI IPIs fully sychronous")
Cc: stable@vger.kernel.org # v4.19+ Signed-off-by: Nicholas Piggin
<npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/smp.c (diff)
Commit 24bf608e74387d8ac6e617302aa1c4f536d12277 by gregkh
powerpc/traps: fix recoverability of machine check handling on book3s/32
commit 0bbea75c476b77fa7d7811d6be911cc7583e640f upstream.
Looks like book3s/32 doesn't set RI on machine check, so checking RI
before calling die() will always be fatal allthought this is not an
issue in most cases.
Fixes: b96672dd840f ("powerpc: Machine check interrupt is a non-maskable
interrupt") Fixes: daf00ae71dad ("powerpc/traps: restore recoverability
of machine_check interrupts") Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr> Cc: stable@vger.kernel.org Signed-off-by:
Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/traps.c (diff)
Commit 6a4c3ab2d53e6e144898a98a9495ae629e75683e by gregkh
powerpc/traps: Fix the message printed when stack overflows
commit 9bf3d3c4e4fd82c7174f4856df372ab2a71005b9 upstream.
Today's message is useless:
  [   42.253267] Kernel stack overflow in process (ptrval), r1=c65500b0
This patch fixes it:
  [   66.905235] Kernel stack overflow in process sh[356], r1=c65560b0
Fixes: ad67b74d2469 ("printk: hash addresses printed with %p") Cc:
stable@vger.kernel.org # v4.15+ Signed-off-by: Christophe Leroy
<christophe.leroy@c-s.fr>
[mpe: Use task_pid_nr()] Signed-off-by: Michael Ellerman
<mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/traps.c (diff)
Commit 8f67dd8570ac05366b06b7de00b5a1cc192b15de by gregkh
ARM: s3c24xx: Fix boolean expressions in osiris_dvs_notify
commit e2477233145f2156434afb799583bccd878f3e9f upstream.
Fix boolean expressions by using logical AND operator '&&' instead of
bitwise operator '&'.
This issue was detected with the help of Coccinelle.
Fixes: 4fa084af28ca ("ARM: OSIRIS: DVS (Dynamic Voltage Scaling)
supoort.") Cc: stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com>
[krzk: Fix -Wparentheses warning] Signed-off-by: Krzysztof Kozlowski
<krzk@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm/mach-s3c24xx/mach-osiris-dvs.c (diff)
Commit 9afab3b6b9c549ea84ad2812559f7ab986808f5a by gregkh
arm64: Fix HCR.TGE status for NMI contexts
commit 5870970b9a828d8693aa6d15742573289d7dbcd0 upstream.
When using VHE, the host needs to clear HCR_EL2.TGE bit in order to
interact with guest TLBs, switching from EL2&0 translation regime to
EL1&0.
However, some non-maskable asynchronous event could happen while TGE is
cleared like SDEI. Because of this address translation operations
relying on EL2&0 translation regime could fail (tlb invalidation,
userspace access, ...).
Fix this by properly setting HCR_EL2.TGE when entering NMI context and
clear it if necessary when returning to the interrupted context.
Signed-off-by: Julien Thierry <julien.thierry@arm.com> Suggested-by:
Marc Zyngier <marc.zyngier@arm.com> Reviewed-by: Marc Zyngier
<marc.zyngier@arm.com> Reviewed-by: James Morse <james.morse@arm.com>
Cc: Arnd Bergmann <arnd@arndb.de> Cc: Will Deacon <will.deacon@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com> Cc: James Morse
<james.morse@arm.com> Cc: linux-arch@vger.kernel.org Cc:
stable@vger.kernel.org Signed-off-by: Catalin Marinas
<catalin.marinas@arm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/include/asm/hardirq.h (diff)
The file was modifiedarch/arm64/kernel/irq.c (diff)
The file was modifiedinclude/linux/hardirq.h (diff)
Commit 4f771d8acc7452b6900a02df3235dd67c064b52d by gregkh
arm64: debug: Don't propagate UNKNOWN FAR into si_code for debug signals
commit b9a4b9d084d978f80eb9210727c81804588b42ff upstream.
FAR_EL1 is UNKNOWN for all debug exceptions other than those caused by
taking a hardware watchpoint. Unfortunately, if a debug handler returns
a non-zero value, then we will propagate the UNKNOWN FAR value to
userspace via the si_addr field of the SIGTRAP siginfo_t.
Instead, let's set si_addr to take on the PC of the faulting
instruction, which we have available in the current pt_regs.
Cc: <stable@vger.kernel.org> Reviewed-by: Mark Rutland
<mark.rutland@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/mm/fault.c (diff)
Commit 4b6d75b38664ab8869e99b80b5ff1911209cbe59 by gregkh
arm64: debug: Ensure debug handlers check triggering exception level
commit 6bd288569b50bc89fa5513031086746968f585cb upstream.
Debug exception handlers may be called for exceptions generated both by
user and kernel code. In many cases, this is checked explicitly, but in
other cases things either happen to work by happy accident or they go
slightly wrong. For example, executing 'brk #4' from userspace will
enter the kprobes code and be ignored, but the instruction will be
retried forever in userspace instead of delivering a SIGTRAP.
Fix this issue in the most stable-friendly fashion by simply adding
explicit checks of the triggering exception level to all of our debug
exception handlers.
Cc: <stable@vger.kernel.org> Reviewed-by: Mark Rutland
<mark.rutland@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/kernel/kgdb.c (diff)
The file was modifiedarch/arm64/kernel/probes/kprobes.c (diff)
Commit bf5615991a915bfce37a6abdd8419325a4ac2f9a by gregkh
arm64: KVM: Fix architecturally invalid reset value for FPEXC32_EL2
commit c88b093693ccbe41991ef2e9b1d251945e6e54ed upstream.
Due to what looks like a typo dating back to the original addition of
FPEXC32_EL2 handling, KVM currently initialises this register to an
architecturally invalid value.
As a result, the VECITR field (RES1) in bits [10:8] is initialised with
0, and the two reserved (RES0) bits [6:5] are initialised with 1.  (In
the Common VFP Subarchitecture as specified by ARMv7-A, these two bits
were IMP DEF.  ARMv8-A removes them.)
This patch changes the reset value from 0x70 to 0x700, which reflects
the architectural constraints and is presumably what was originally
intended.
Cc: <stable@vger.kernel.org> # 4.12.x- Cc: Christoffer Dall
<christoffer.dall@arm.com> Fixes: 62a89c44954f ("arm64: KVM: 32bit
handling of coprocessor traps") Signed-off-by: Dave Martin
<Dave.Martin@arm.com> Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/arm64/kvm/sys_regs.c (diff)
Commit 98ab3b877400c2cbd025c112fb3d2b759f067193 by gregkh
Revert "KVM/MMU: Flush tlb directly in the kvm_zap_gfn_range()"
commit 92da008fa21034c369cdb8ca2b629fe5c196826b upstream.
This reverts commit 71883a62fcd6c70639fa12cda733378b4d997409.
The above commit contains an optimization to kvm_zap_gfn_range which
uses gfn-limited TLB flushes, if enabled. If using these limited
flushes, kvm_zap_gfn_range passes lock_flush_tlb=false to
slot_handle_level_range which creates a race when the function unlocks
to call cond_resched. See an example of this race below:
CPU 0                   CPU 1                           CPU 3
// zap_direct_gfn_range mmu_lock()
// *ptep == pte_1
*ptep = 0 if (lock_flush_tlb)
       flush_tlbs() mmu_unlock()
                       // In invalidate range
                       // MMU notifier
                       mmu_lock()
                       if (pte != 0)
                               *ptep = 0
                               flush = true
                       if (flush)
                               flush_remote_tlbs()
                       mmu_unlock()
                       return
                       // Host MM reallocates
                       // page previously
                       // backing guest memory.
                                                       // Guest accesses
                                                       // invalid page
                                                       // through pte_1
                                                       // in its TLB!!
Tested: Ran all kvm-unit-tests on a Intel Haswell machine with and
without this patch. The patch introduced no new failures.
Signed-off-by: Ben Gardon <bgardon@google.com> Cc:
stable@vger.kernel.org Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/mmu.c (diff)
Commit d3432e5d0831f3dd1cd850ec45b5073eaabece63 by gregkh
ipmi_si: Fix crash when using hard-coded device
commit 41b766d661bf94a364960862cfc248a78313dbd3 upstream.
When excuting a command like:
modprobe ipmi_si ports=0xffc0e3 type=bt The system would get an oops.
The trouble here is that ipmi_si_hardcode_find_bmc() is called before
ipmi_si_platform_init(), but initialization of the hard-coded device
creates an IPMI platform device, which won't be initialized yet.
The real trouble is that hard-coded devices aren't created with any
device, and the fixup is done later.  So do it right, create the
hard-coded devices as normal platform devices.
This required adding some new resource types to the IPMI platform code
for passing information required by the hard-coded device and adding
some code to remove the hard-coded platform devices on module removal.
To enforce the "hard-coded devices passed by the user take priority over
firmware devices" rule, some special code was added to check and see if
a hard-coded device already exists.
Reported-by: Yang Yingliang <yangyingliang@huawei.com> Cc:
stable@vger.kernel.org # v4.15+ Signed-off-by: Corey Minyard
<cminyard@mvista.com> Tested-by: Yang Yingliang
<yangyingliang@huawei.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/char/ipmi/ipmi_si_intf.c (diff)
The file was modifieddrivers/char/ipmi/ipmi_si_platform.c (diff)
The file was modifieddrivers/char/ipmi/ipmi_si.h (diff)
The file was modifieddrivers/char/ipmi/ipmi_si_hardcode.c (diff)
Commit a8964a63780ce3ea4ada492cfe8edef9c1336022 by gregkh
ipmi_si: fix use-after-free of resource->name
commit 401e7e88d4ef80188ffa07095ac00456f901b8c4 upstream.
When we excute the following commands, we got oops rmmod ipmi_si cat
/proc/ioports
[ 1623.482380] Unable to handle kernel paging request at virtual address
ffff00000901d478
[ 1623.482382] Mem abort info:
[ 1623.482383]   ESR = 0x96000007
[ 1623.482385]   Exception class = DABT (current EL), IL = 32 bits
[ 1623.482386]   SET = 0, FnV = 0
[ 1623.482387]   EA = 0, S1PTW = 0
[ 1623.482388] Data abort info:
[ 1623.482389]   ISV = 0, ISS = 0x00000007
[ 1623.482390]   CM = 0, WnR = 0
[ 1623.482393] swapper pgtable: 4k pages, 48-bit VAs, pgdp =
00000000d7d94a66
[ 1623.482395] [ffff00000901d478] pgd=000000dffbfff003,
pud=000000dffbffe003, pmd=0000003f5d06e003, pte=0000000000000000
[ 1623.482399] Internal error: Oops: 96000007 [#1] SMP
[ 1623.487407] Modules linked in: ipmi_si(E) nls_utf8 isofs rpcrdma
ib_iser ib_srpt target_core_mod ib_srp scsi_transport_srp ib_ipoib
rdma_ucm ib_umad rdma_cm ib_cm dm_mirror dm_region_hash dm_log iw_cm
dm_mod aes_ce_blk crypto_simd cryptd aes_ce_cipher ses ghash_ce sha2_ce
enclosure sha256_arm64 sg sha1_ce hisi_sas_v2_hw hibmc_drm sbsa_gwdt
hisi_sas_main ip_tables mlx5_ib ib_uverbs marvell ib_core mlx5_core
ixgbe mdio hns_dsaf ipmi_devintf hns_enet_drv ipmi_msghandler hns_mdio
[last unloaded: ipmi_si]
[ 1623.532410] CPU: 30 PID: 11438 Comm: cat Kdump: loaded Tainted: G   
       E     5.0.0-rc3+ #168
[ 1623.541498] Hardware name: Huawei TaiShan 2280 /BC11SPCD, BIOS 1.37
11/21/2017
[ 1623.548822] pstate: a0000005 (NzCv daif -PAN -UAO)
[ 1623.553684] pc : string+0x28/0x98
[ 1623.557040] lr : vsnprintf+0x368/0x5e8
[ 1623.560837] sp : ffff000013213a80
[ 1623.564191] x29: ffff000013213a80 x28: ffff00001138abb5
[ 1623.569577] x27: ffff000013213c18 x26: ffff805f67d06049
[ 1623.574963] x25: 0000000000000000 x24: ffff00001138abb5
[ 1623.580349] x23: 0000000000000fb7 x22: ffff0000117ed000
[ 1623.585734] x21: ffff000011188fd8 x20: ffff805f67d07000
[ 1623.591119] x19: ffff805f67d06061 x18: ffffffffffffffff
[ 1623.596505] x17: 0000000000000200 x16: 0000000000000000
[ 1623.601890] x15: ffff0000117ed748 x14: ffff805f67d07000
[ 1623.607276] x13: ffff805f67d0605e x12: 0000000000000000
[ 1623.612661] x11: 0000000000000000 x10: 0000000000000000
[ 1623.618046] x9 : 0000000000000000 x8 : 000000000000000f
[ 1623.623432] x7 : ffff805f67d06061 x6 : fffffffffffffffe
[ 1623.628817] x5 : 0000000000000012 x4 : ffff00000901d478
[ 1623.634203] x3 : ffff0a00ffffff04 x2 : ffff805f67d07000
[ 1623.639588] x1 : ffff805f67d07000 x0 : ffffffffffffffff
[ 1623.644974] Process cat (pid: 11438, stack limit =
0x000000008d4cbc10)
[ 1623.651592] Call trace:
[ 1623.654068]  string+0x28/0x98
[ 1623.657071]  vsnprintf+0x368/0x5e8
[ 1623.660517]  seq_vprintf+0x70/0x98
[ 1623.668009]  seq_printf+0x7c/0xa0
[ 1623.675530]  r_show+0xc8/0xf8
[ 1623.682558]  seq_read+0x330/0x440
[ 1623.689877]  proc_reg_read+0x78/0xd0
[ 1623.697346]  __vfs_read+0x60/0x1a0
[ 1623.704564]  vfs_read+0x94/0x150
[ 1623.711339]  ksys_read+0x6c/0xd8
[ 1623.717939]  __arm64_sys_read+0x24/0x30
[ 1623.725077]  el0_svc_common+0x120/0x148
[ 1623.732035]  el0_svc_handler+0x30/0x40
[ 1623.738757]  el0_svc+0x8/0xc
[ 1623.744520] Code: d1000406 aa0103e2 54000149 b4000080 (39400085)
[ 1623.753441] ---[ end trace f91b6a4937de9835 ]---
[ 1623.760871] Kernel panic - not syncing: Fatal exception
[ 1623.768935] SMP: stopping secondary CPUs
[ 1623.775718] Kernel Offset: disabled
[ 1623.781998] CPU features: 0x002,21006008
[ 1623.788777] Memory Limit: none
[ 1623.798329] Starting crashdump kernel...
[ 1623.805202] Bye!
If io_setup is called successful in try_smi_init() but try_smi_init()
goes out_err before calling ipmi_register_smi(), so
ipmi_unregister_smi() will not be called while removing module. It leads
to the resource that allocated in io_setup() can not be freed, but the
name(DEVICE_NAME) of resource is freed while removing the module. It
causes use-after-free when cat /proc/ioports.
Fix this by calling io_cleanup() while try_smi_init() goes to out_err.
and don't call io_cleanup() until io_setup() returns successful to avoid
warning prints.
Fixes: 93c303d2045b ("ipmi_si: Clean up shutdown a bit") Cc:
stable@vger.kernel.org Reported-by: NuoHan Qiao <qiaonuohan@huawei.com>
Suggested-by: Corey Minyard <cminyard@mvista.com> Signed-off-by: Yang
Yingliang <yangyingliang@huawei.com> Signed-off-by: Corey Minyard
<cminyard@mvista.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/char/ipmi/ipmi_si_intf.c (diff)
The file was modifieddrivers/char/ipmi/ipmi_si_port_io.c (diff)
The file was modifieddrivers/char/ipmi/ipmi_si_mem_io.c (diff)
Commit dca22c59e47e2af32943c471aa879fa9ba20baf0 by gregkh
dm: fix to_sector() for 32bit
commit 0bdb50c531f7377a9da80d3ce2d61f389c84cb30 upstream.
A dm-raid array with devices larger than 4GB won't assemble on a 32 bit
host since _check_data_dev_sectors() was added in 4.16. This is because
to_sector() treats its argument as an "unsigned long" which is 32bits
(4GB) on a 32bit host.  Using "unsigned long long" is more correct.
Kernels as early as 4.2 can have other problems due to to_sector() being
used on the size of a device.
Fixes: 0cf4503174c1 ("dm raid: add support for the MD RAID0
personality") cc: stable@vger.kernel.org (v4.2+) Reported-and-tested-by:
Guillaume Perréal <gperreal@free.fr> Signed-off-by: NeilBrown
<neil@brown.name> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/device-mapper.h (diff)
Commit b6246ffae5a0e05878afd0079ff6a9c76df865ec by gregkh
dm integrity: limit the rate of error messages
commit 225557446856448039a9e495da37b72c20071ef2 upstream.
When using dm-integrity underneath md-raid, some tests with raid
auto-correction trigger large amounts of integrity failures - and all
these failures print an error message. These messages can bring the
system to a halt if the system is using serial console.
Fix this by limiting the rate of error messages - it improves the speed
of raid recovery and avoids the hang.
Fixes: 7eada909bfd7a ("dm: add integrity target") Cc:
stable@vger.kernel.org # v4.12+ Signed-off-by: Mikulas Patocka
<mpatocka@redhat.com> Signed-off-by: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/dm-integrity.c (diff)
Commit 83df21c731e632254232ffa980f9244ca10dcfb0 by gregkh
media: cx25840: mark pad sig_types to fix cx231xx init
commit 46c039d06b6ecabb94bd16c3a999b28dc83b79ce upstream.
Without this, we get failures like this when the kernel attempts to
initialize a cx231xx device:
[16046.153653] cx231xx 3-1.2:1.1: New device Hauppauge Hauppauge
Device @ 480 Mbps (2040:c200) with 6 interfaces
[16046.153900] cx231xx 3-1.2:1.1: can't change interface 3 alt no. to 3:
Max. Pkt size = 0
[16046.153907] cx231xx 3-1.2:1.1: Identified as Hauppauge USB Live 2
(card=9)
[16046.154350] i2c i2c-11: Added multiplexed i2c bus 13
[16046.154379] i2c i2c-11: Added multiplexed i2c bus 14
[16046.267194] cx25840 10-0044: cx23102 A/V decoder found @ 0x88
(cx231xx #0-0)
[16048.424551] cx25840 10-0044: loaded v4l-cx231xx-avcore-01.fw firmware
(16382 bytes)
[16048.463224] cx231xx 3-1.2:1.1: v4l2 driver version 0.0.3
[16048.567878] cx231xx 3-1.2:1.1: Registered video device video2 [v4l2]
[16048.568001] cx231xx 3-1.2:1.1: Registered VBI device vbi0
[16048.568419] cx231xx 3-1.2:1.1: audio EndPoint Addr 0x83, Alternate
settings: 3
[16048.568425] cx231xx 3-1.2:1.1: video EndPoint Addr 0x84, Alternate
settings: 5
[16048.568431] cx231xx 3-1.2:1.1: VBI EndPoint Addr 0x85, Alternate
settings: 2
[16048.568436] cx231xx 3-1.2:1.1: sliced CC EndPoint Addr 0x86,
Alternate settings: 2
[16048.568448] usb 3-1.2: couldn't get decoder output pad for V4L I/O
[16048.568453] cx231xx 3-1.2:1.1: V4L2 device vbi0 deregistered
[16048.568579] cx231xx 3-1.2:1.1: V4L2 device video2 deregistered
[16048.569001] cx231xx: probe of 3-1.2:1.1 failed with error -22
Likely a regession since Commit 9d6d20e652c0
("media: v4l2-mc: switch it to use the new approach to setup pipelines")
(v4.19-rc1-100-g9d6d20e652c0), which introduced the use of PAD_SIGNAL_DV
within v4l2_mc_create_media_graph().
This also modifies cx25840 to remove the VBI pad, matching the action
taken in Commit 092a37875a22 ("media: v4l2: remove VBI output pad").
Fixes: 9d6d20e652c0 ("media: v4l2-mc: switch it to use the new approach
to setup pipelines")
Cc: stable@vger.kernel.org Signed-off-by: Cody P Schafer
<dev@codyps.com> Tested-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by:
Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/media/i2c/cx25840/cx25840-core.c (diff)
The file was modifieddrivers/media/i2c/cx25840/cx25840-core.h (diff)
Commit 9cc42d068f57ed5bf15ec626f20d256cfffc5d1c by gregkh
mfd: sm501: Fix potential NULL pointer dereference
commit ae7b8eda27b33b1f688dfdebe4d46f690a8f9162 upstream.
There is a potential NULL pointer dereference in case devm_kzalloc()
fails and returns NULL.
Fix this by adding a NULL check on *lookup*
This bug was detected with the help of Coccinelle.
Fixes: b2e63555592f ("i2c: gpio: Convert to use descriptors") Cc:
stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mfd/sm501.c (diff)
Commit 6eea03f8c368b79f8b8ca0fbe4cbe23ce51cb843 by gregkh
cpcap-charger: generate events for userspace
commit fd10606f93a149a9f3d37574e5385b083b4a7b32 upstream.
The driver doesn't generate uevents on charger connect/disconnect. This
leads to UPower not detecting when AC is on or off... and that is bad.
Reported by Arthur D. on github (
https://github.com/maemo-leste/bugtracker/issues/206 ), thanks to
Merlijn Wajer for suggesting a fix.
Cc: stable@kernel.org Signed-off-by: Pavel Machek <pavel@ucw.cz>
Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian
Reichel <sebastian.reichel@collabora.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/power/supply/cpcap-charger.c (diff)
Commit b41991d86722d6557ca9e4509313d894c9fdc46b by gregkh
cpuidle: governor: Add new governors to cpuidle_governors again
commit 22782b3f9bb8ae21c710e2880db21bc729771e92 upstream.
After commit 61cb5758d3c4 ("cpuidle: Add cpuidle.governor= command line
parameter") new cpuidle governors are not added to the list of available
governors, so governor selection via sysfs doesn't work as expected
(even though it is rarely used anyway).
Fix that by making cpuidle_register_governor() add new governors to
cpuidle_governors again.
Fixes: 61cb5758d3c4 ("cpuidle: Add cpuidle.governor= command line
parameter") Reported-by: Kees Cook <keescook@chromium.org> Cc: 5.0+
<stable@vger.kernel.org> # 5.0+ Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/cpuidle/governor.c (diff)
Commit e83b6ac7deed44e09f45bf13e837cd9e3ce23256 by gregkh
NFS: Fix I/O request leakages
commit f57dcf4c72113c745d83f1c65f7291299f65c14f upstream.
When we fail to add the request to the I/O queue, we currently leave it
to the caller to free the failed request. However since some of the
requests that fail are actually created by nfs_pageio_add_request()
itself, and are not passed back the caller, this leads to a leakage
issue, which can again cause page locks to leak.
This commit addresses the leakage by freeing the created requests on
error, using desc->pg_completion_ops->error_cleanup()
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Fixes:
a7d42ddb30997 ("nfs: add mirroring support to pgio layer") Cc:
stable@vger.kernel.org # v4.0: c18b96a1b862: nfs: clean up rest of reqs
Cc: stable@vger.kernel.org # v4.0: d600ad1f2bdb: NFS41: pop some
layoutget Cc: stable@vger.kernel.org # v4.0+ Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/pagelist.c (diff)
Commit 4fe2a7fda78a7275cd695e0219260d3a5572bc24 by gregkh
NFS: Fix an I/O request leakage in nfs_do_recoalesce
commit 4d91969ed4dbcefd0e78f77494f0cb8fada9048a upstream.
Whether we need to exit early, or just reprocess the list, we must not
lost track of the request which failed to get recoalesced.
Fixes: 03d5eb65b538 ("NFS: Fix a memory leak in nfs_do_recoalesce")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Cc:
stable@vger.kernel.org # v4.0+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/pagelist.c (diff)
Commit 88f786a8e78a091e10a58cb794fb5637feaa82d0 by gregkh
NFS: Don't recoalesce on error in nfs_pageio_complete_mirror()
commit 8127d82705998568b52ac724e28e00941538083d upstream.
If the I/O completion failed with a fatal error, then we should just
exit nfs_pageio_complete_mirror() rather than try to recoalesce.
Fixes: a7d42ddb3099 ("nfs: add mirroring support to pgio layer")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Cc:
stable@vger.kernel.org # v4.0+ Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/pagelist.c (diff)
Commit 2ececa64d67ad8efe1704ec9ecdecb1451ee32a1 by gregkh
nfsd: fix performance-limiting session calculation
commit c54f24e338ed2a35218f117a4a1afb5f9e2b4e64 upstream.
We're unintentionally limiting the number of slots per nfsv4.1 session
to 10.  Often more than 10 simultaneous RPCs are needed for the best
performance.
This calculation was meant to prevent any one client from using up more
than a third of the limit we set for total memory use across all clients
and sessions.  Instead, it's limiting the client to a third of the
maximum for a single session.
Fix this.
Reported-by: Chris Tracy <ctracy@engr.scu.edu> Cc:
stable@vger.kernel.org Fixes: de766e570413 "nfsd: give out fewer session
slots as limit approaches" Signed-off-by: J. Bruce Fields
<bfields@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfsd/nfs4state.c (diff)
Commit f5bed084b482498852a5e6caf4fa2f83c6e55040 by gregkh
nfsd: fix memory corruption caused by readdir
commit b602345da6cbb135ba68cf042df8ec9a73da7981 upstream.
If the result of an NFSv3 readdir{,plus} request results in the
"offset" on one entry having to be split across 2 pages, and is sized so
that the next directory entry doesn't fit in the requested size, then
memory corruption can happen.
When encode_entry() is called after encoding the last entry that fits,
it notices that ->offset and ->offset1 are set, and so stores the offset
value in the two pages as required.  It clears ->offset1 but
*does not* clear ->offset.
Normally this omission doesn't matter as encode_entry_baggage() will be
called, and will set ->offset to a suitable value (not on a page
boundary). But in the case where cd->buflen < elen and nfserr_toosmall
is returned, ->offset is not reset.
This means that nfsd3proc_readdirplus will see ->offset with a value 4
bytes before the end of a page, and ->offset1 set to NULL. It will try
to write 8bytes to ->offset. If we are lucky, the next page will be
read-only, and the system will
BUG: unable to handle kernel paging request at...
If we are unlucky, some innocent page will have the first 4 bytes
corrupted.
nfsd3proc_readdir() doesn't even check for ->offset1, it just blindly
writes 8 bytes to the offset wherever it is.
Fix this by clearing ->offset after it is used, and copying the
->offset handling code from nfsd3_proc_readdirplus into
nfsd3_proc_readdir.
(Note that the commit hash in the Fixes tag is from the 'history'
tree - this bug predates git).
Fixes: 0b1d57cf7654 ("[PATCH] kNFSd: Fix nfs3 dentry encoding")
Fixes-URL:
https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/commit/?id=0b1d57cf7654
Cc: stable@vger.kernel.org (v2.6.12+) Signed-off-by: NeilBrown
<neilb@suse.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/nfsd/nfs3xdr.c (diff)
The file was modifiedfs/nfsd/nfs3proc.c (diff)
Commit 867ae74fb190082a12863a4719c1f6fead35c50a by gregkh
nfsd: fix wrong check in write_v4_end_grace()
commit dd838821f0a29781b185cd8fb8e48d5c177bd838 upstream.
Commit 62a063b8e7d1 "nfsd4: fix crash on writing v4_end_grace before
nfsd startup" is trying to fix a NULL dereference issue, but it
mistakenly checks if the nfsd server is started. So fix it.
Fixes: 62a063b8e7d1 "nfsd4: fix crash on writing v4_end_grace before
nfsd startup" Cc: stable@vger.kernel.org Reviewed-by: Joseph Qi
<joseph.qi@linux.alibaba.com> Signed-off-by: Yihao Wu
<wuyihao@linux.alibaba.com> Signed-off-by: J. Bruce Fields
<bfields@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfsd/nfsctl.c (diff)
Commit 1363f37fbd241c8341816513dfd07b3d9ed3a4ba by gregkh
NFSv4.1: Reinitialise sequence results before retransmitting a request
commit c1dffe0bf7f9c3d57d9f237a7cb2a81e62babd2b upstream.
If we have to retransmit a request, we should ensure that we
reinitialise the sequence results structure, since in the event of a
signal we need to treat the request as if it had not been sent.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Cc:
stable@vger.kernel.org Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/nfs/nfs4proc.c (diff)
Commit f03f5295caf0106820d1dac1fe0e019ee00f05dc by gregkh
svcrpc: fix UDP on servers with lots of threads
commit b7e5034cbecf5a65b7bfdc2b20a8378039577706 upstream.
James Pearson found that an NFS server stopped responding to UDP
requests if started with more than 1017 threads.
sv_max_mesg is about 2^20, so that is probably where the calculation
performed by
svc_sock_setbufsize(svsk->sk_sock,
                           (serv->sv_nrthreads+3) * serv->sv_max_mesg,
                           (serv->sv_nrthreads+3) * serv->sv_max_mesg);
starts to overflow an int.
Reported-by: James Pearson <jcpearson@gmail.com> Tested-by: James
Pearson <jcpearson@gmail.com> Cc: stable@vger.kernel.org Signed-off-by:
J. Bruce Fields <bfields@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sunrpc/svcsock.c (diff)
Commit c9c0e5f01245d6bf6779401a32f9f194e19deb87 by gregkh
PM / wakeup: Rework wakeup source timer cancellation
commit 1fad17fb1bbcd73159c2b992668a6957ecc5af8a upstream.
If wakeup_source_add() is called right after wakeup_source_remove() for
the same wakeup source, timer_setup() may be called for a potentially
scheduled timer which is incorrect.
To avoid that, move the wakeup source timer cancellation from
wakeup_source_drop() to wakeup_source_remove().
Moreover, make wakeup_source_remove() clear the timer function after
canceling the timer to let wakeup_source_not_registered() treat
unregistered wakeup sources in the same way as the ones that have never
been registered.
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Cc: 4.4+
<stable@vger.kernel.org> # 4.4+
[ rjw: Subject, changelog, merged two patches together ] Signed-off-by:
Rafael J. Wysocki <rafael.j.wysocki@intel.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/base/power/wakeup.c (diff)
Commit a8ce88427a9b3932e469e3eeb4853926b8a91b34 by gregkh
PM / OPP: Update performance state when freq == old_freq
commit faef080f6db5320011862f7baf1aa66d0851559f upstream.
At boot up, CPUFreq core performs a sanity check to see if the system is
running at a frequency defined in the frequency table of the CPU. If so,
we try to find a valid frequency (lowest frequency greater than the
currently programmed frequency) from the table and set it. When the call
reaches dev_pm_opp_set_rate(), it calls _find_freq_ceil(opp_table,
&old_freq) to find the previously configured OPP and this call also
updates the old_freq. This eventually sets the old_freq == freq (new
target requested by cpufreq core) and we skip updating the performance
state in this case.
Fix this by also updating the performance state when the old_freq ==
freq.
Fixes: ca1b5d77b1c6 ("OPP: Configure all required OPPs") Cc: v5.0
<stable@vger.kernel.org> # v5.0 Reported-by: Niklas Cassel
<niklas.cassel@linaro.org> Tested-by: Jorge Ramirez-Ortiz
<jorge.ramirez-ortiz@linaro.org> Signed-off-by: Viresh Kumar
<viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki
<rafael.j.wysocki@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/opp/core.c (diff)
Commit 97cf758e172c9ae8b3a1561d1dbb247e2eaf6dca by gregkh
bcache: never writeback a discard operation
commit 9951379b0ca88c95876ad9778b9099e19a95d566 upstream.
Some users see panics like the following when performing fstrim on a
bcached volume:
[  529.803060] BUG: unable to handle kernel NULL pointer dereference at
0000000000000008
[  530.183928] #PF error: [normal kernel read fault]
[  530.412392] PGD 8000001f42163067 P4D 8000001f42163067 PUD 1f42168067
PMD 0
[  530.750887] Oops: 0000 [#1] SMP PTI
[  530.920869] CPU: 10 PID: 4167 Comm: fstrim Kdump: loaded Not tainted
5.0.0-rc1+ #3
[  531.290204] Hardware name: HP ProLiant DL360 Gen9/ProLiant DL360
Gen9, BIOS P89 12/27/2015
[  531.693137] RIP: 0010:blk_queue_split+0x148/0x620
[  531.922205] Code: 60 38 89 55 a0 45 31 db 45 31 f6 45 31 c9 31 ff 89
4d 98 85 db 0f 84 7f 04 00 00 44 8b 6d 98 4c 89 ee 48 c1 e6 04 49 03 70
78 <8b> 46 08 44 8b 56 0c 48 8b 16 44 29 e0 39 d8 48 89 55 a8 0f 47 c3
[  532.838634] RSP: 0018:ffffb9b708df39b0 EFLAGS: 00010246
[  533.093571] RAX: 00000000ffffffff RBX: 0000000000046000 RCX:
0000000000000000
[  533.441865] RDX: 0000000000000200 RSI: 0000000000000000 RDI:
0000000000000000
[  533.789922] RBP: ffffb9b708df3a48 R08: ffff940d3b3fdd20 R09:
0000000000000000
[  534.137512] R10: ffffb9b708df3958 R11: 0000000000000000 R12:
0000000000000000
[  534.485329] R13: 0000000000000000 R14: 0000000000000000 R15:
ffff940d39212020
[  534.833319] FS:  00007efec26e3840(0000) GS:ffff940d1f480000(0000)
knlGS:0000000000000000
[  535.224098] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  535.504318] CR2: 0000000000000008 CR3: 0000001f4e256004 CR4:
00000000001606e0
[  535.851759] Call Trace:
[  535.970308]  ? mempool_alloc_slab+0x15/0x20
[  536.174152]  ? bch_data_insert+0x42/0xd0 [bcache]
[  536.403399]  blk_mq_make_request+0x97/0x4f0
[  536.607036]  generic_make_request+0x1e2/0x410
[  536.819164]  submit_bio+0x73/0x150
[  536.980168]  ? submit_bio+0x73/0x150
[  537.149731]  ? bio_associate_blkg_from_css+0x3b/0x60
[  537.391595]  ? _cond_resched+0x1a/0x50
[  537.573774]  submit_bio_wait+0x59/0x90
[  537.756105]  blkdev_issue_discard+0x80/0xd0
[  537.959590]  ext4_trim_fs+0x4a9/0x9e0
[  538.137636]  ? ext4_trim_fs+0x4a9/0x9e0
[  538.324087]  ext4_ioctl+0xea4/0x1530
[  538.497712]  ? _copy_to_user+0x2a/0x40
[  538.679632]  do_vfs_ioctl+0xa6/0x600
[  538.853127]  ? __do_sys_newfstat+0x44/0x70
[  539.051951]  ksys_ioctl+0x6d/0x80
[  539.212785]  __x64_sys_ioctl+0x1a/0x20
[  539.394918]  do_syscall_64+0x5a/0x110
[  539.568674]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
We have observed it where both: 1) LVM/devmapper is involved (bcache
backing device is LVM volume) and 2) writeback cache is involved (bcache
cache_mode is writeback)
On one machine, we can reliably reproduce it with:
# echo writeback > /sys/block/bcache0/bcache/cache_mode
  (not sure whether above line is required)
# mount /dev/bcache0 /test
# for i in {0..10}; do
file="$(mktemp /test/zero.XXX)"
dd if=/dev/zero of="$file" bs=1M count=256
sync
rm $file
   done
# fstrim -v /test
Observing this with tracepoints on, we see the following writes:
fstrim-18019 [022] .... 91107.302026: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 4260112 + 196352 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302050: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 4456464 + 262144 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302075: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 4718608 + 81920 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302094: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 5324816 + 180224 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302121: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 5505040 + 262144 hit 0
bypass 1 fstrim-18019 [022] .... 91107.302145: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 5767184 + 81920 hit 0
bypass 1 fstrim-18019 [022] .... 91107.308777: bcache_write:
73f95583-561c-408f-a93a-4cbd2498f5c8 inode 0  DS 6373392 + 180224 hit 1
bypass 0
<crash>
Note the final one has different hit/bypass flags.
This is because in should_writeback(), we were hitting a case where the
partial stripe condition was returning true and so should_writeback()
was returning true early.
If that hadn't been the case, it would have hit the would_skip test, and
as would_skip == s->iop.bypass == true, should_writeback() would have
returned false.
Looking at the git history from 'commit 72c270612bd3 ("bcache: Write out
full stripes")', it looks like the idea was to optimise for raid5/6:
       * If a stripe is already dirty, force writes to that stripe to
writeback mode - to help build up full stripes of dirty data
To fix this issue, make sure that should_writeback() on a discard op
never returns true.
More details of debugging:
https://www.spinics.net/lists/linux-bcache/msg06996.html
Previous reports:
- https://bugzilla.kernel.org/show_bug.cgi?id=201051
- https://bugzilla.kernel.org/show_bug.cgi?id=196103
- https://www.spinics.net/lists/linux-bcache/msg06885.html
(Coly Li: minor modification to follow maximum 75 chars per line rule)
Cc: Kent Overstreet <koverstreet@google.com> Cc: stable@vger.kernel.org
Fixes: 72c270612bd3 ("bcache: Write out full stripes") Signed-off-by:
Daniel Axtens <dja@axtens.net> Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/bcache/writeback.h (diff)
Commit dddd539dc3257c8a1bfc66b7c7f4f47ea7f10605 by gregkh
bcache: treat stale && dirty keys as bad keys
commit 58ac323084ebf44f8470eeb8b82660f9d0ee3689 upstream.
Stale && dirty keys can be produced in the follow way: After writeback
in write_dirty_finish(), dirty keys k1 will replace by clean keys k2
==>ret = bch_btree_insert(dc->disk.c, &keys, NULL, &w->key);
==>btree_insert_fn(struct btree_op *b_op, struct btree *b)
==>static int bch_btree_insert_node(struct btree *b,
      struct btree_op *op,
      struct keylist *insert_keys,
      atomic_t *journal_ref, Then two steps: A) update k1 to k2 in btree
node memory;
  bch_btree_insert_keys(b, op, insert_keys, replace_key) B) Write the
bset(contains k2) to cache disk by a 30s delay work
  bch_btree_leaf_dirty(b, journal_ref). But before the 30s delay work
write the bset to cache device, these things happened: A) GC works, and
reclaim the bucket k2 point to; B) Allocator works, and invalidate the
bucket k2 point to,
  and increase the gen of the bucket, and place it into free_inc
  fifo; C) Until now, the 30s delay work still does not finish work,
  so in the disk, the key still is k1, it is dirty and stale
  (its gen is smaller than the gen of the bucket). and then the
  machine power off suddenly happens; D) When the machine power on
again, after the btree reconstruction,
  the stale dirty key appear.
In bch_extent_bad(), when expensive_debug_checks is off, it would treat
the dirty key as good even it is stale keys, and it would cause bellow
probelms: A) In read_dirty() it would cause machine crash:
  BUG_ON(ptr_stale(dc->disk.c, &w->key, 0)); B) It could be worse when
reads hits stale dirty keys, it would
  read old incorrect data.
This patch tolerate the existence of these stale && dirty keys, and
treat them as bad key in bch_extent_bad().
(Coly Li: fix indent which was modified by sender's email client)
Signed-off-by: Tang Junhui <tang.junhui.linux@gmail.com> Cc:
stable@vger.kernel.org Signed-off-by: Coly Li <colyli@suse.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/bcache/extents.c (diff)
Commit 0b60b354b33a6d7740e0da6174594716cf4356a2 by gregkh
bcache: use (REQ_META|REQ_PRIO) to indicate bio for metadata
commit dc7292a5bcb4c878b076fca2ac3fc22f81b8f8df upstream.
In 'commit 752f66a75aba ("bcache: use REQ_PRIO to indicate bio for
metadata")' REQ_META is replaced by REQ_PRIO to indicate metadata bio.
This assumption is not always correct, e.g. XFS uses REQ_META to mark
metadata bio other than REQ_PRIO. This is why Nix noticed that bcache
does not cache metadata for XFS after the above commit.
Thanks to Dave Chinner, he explains the difference between REQ_META and
REQ_PRIO from view of file system developer. Here I quote part of his
explanation from mailing list,
  REQ_META is used for metadata. REQ_PRIO is used to communicate to
  the lower layers that the submitter considers this IO to be more
  important that non REQ_PRIO IO and so dispatch should be expedited.
   IOWs, if the filesystem considers metadata IO to be more important
  that user data IO, then it will use REQ_PRIO | REQ_META rather than
  just REQ_META.
Then it seems bios with REQ_META or REQ_PRIO should both be cached for
performance optimation, because they are all probably low I/O latency
demand by upper layer (e.g. file system).
So in this patch, when we want to decide whether to bypass the cache,
REQ_META and REQ_PRIO are both checked. Then both metadata and high
priority I/O requests will be handled properly.
Reported-by: Nix <nix@esperi.org.uk> Signed-off-by: Coly Li
<colyli@suse.de> Reviewed-by: Andre Noll <maan@tuebingen.mpg.de>
Tested-by: Nix <nix@esperi.org.uk> Cc: stable@vger.kernel.org Cc: Dave
Chinner <david@fromorbit.com> Cc: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/bcache/request.c (diff)
Commit c8d3a581742f36da4047eab4b3ed9c27201aa781 by gregkh
stable-kernel-rules.rst: add link to networking patch queue
commit a41e8f25fa8f8f67360d88eb0eebbabe95a64bdf upstream.
The networking maintainer keeps a public list of the patches being
queued up for the next round of stable releases.  Be sure to check there
before asking for a patch to be applied so that you do not waste
people's time.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Acked-by:
David S. Miller <davem@davemloft.net> Signed-off-by: Jonathan Corbet
<corbet@lwn.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedDocumentation/process/stable-kernel-rules.rst (diff)
Commit 194f1ecd4906396a8638a8e9294bd9255209a439 by gregkh
vt: perform safe console erase in the right order
commit a6dbe442755999960ca54a9b8ecfd9606be0ea75 upstream.
Commit 4b4ecd9cb853 ("vt: Perform safe console erase only once") removed
what appeared to be an extra call to scr_memsetw(). This missed the fact
that set_origin() must be called before clearing the screen otherwise
old screen content gets restored on the screen when using vgacon. Let's
fix that by moving all the scrollback handling to flush_scrollback()
where it logically belongs, and invoking it before the actual screen
clearing in csi_J(), making the code simpler in the end.
Reported-by: Matthew Whitehead <tedheadster@gmail.com> Signed-off-by:
Nicolas Pitre <nico@linaro.org> Tested-by: Matthew Whitehead
<tedheadster@gmail.com> Fixes: 4b4ecd9cb853 ("vt: Perform safe console
erase only once") Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/tty/vt/vt.c (diff)
Commit a0203d4e717ec9939f70a4cc27c5259f5ec31e67 by gregkh
x86/unwind/orc: Fix ORC unwind table alignment
commit f76a16adc485699f95bb71fce114f97c832fe664 upstream.
The .orc_unwind section is a packed array of 6-byte structs.  It's
currently aligned to 6 bytes, which is causing warnings in the LLD
linker.
Six isn't a power of two, so it's not a valid alignment value.  The
actual alignment doesn't matter much because it's an array of packed
structs.  An alignment of two is sufficient.  In reality it always gets
aligned to four bytes because it comes immediately after the
4-byte-aligned .orc_unwind_ip section.
Fixes: ee9f8fce9964 ("x86/unwind: Add the ORC unwinder") Reported-by:
Nick Desaulniers <ndesaulniers@google.com> Reported-by: Dmitry Golovin
<dima@golovin.in> Reported-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Signed-off-by:
Thomas Gleixner <tglx@linutronix.de> Tested-by: Sedat Dilek
<sedat.dilek@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
stable@vger.kernel.org Link:
https://github.com/ClangBuiltLinux/linux/issues/218 Link:
https://lkml.kernel.org/r/d55027ee95fe73e952dcd8be90aebd31b0095c45.1551892041.git.jpoimboe@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedinclude/asm-generic/vmlinux.lds.h (diff)
Commit 99c7a8ec438752b6a29c0449eb3298233d7243cd by gregkh
perf intel-pt: Fix CYC timestamp calculation after OVF
commit 03997612904866abe7cdcc992784ef65cb3a4b81 upstream.
CYC packet timestamp calculation depends upon CBR which was being
cleared upon overflow (OVF). That can cause errors due to failing to
synchronize with sideband events. Even if a CBR change has been lost,
the old CBR is still a better estimate than zero. So remove the clearing
of CBR.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: stable@vger.kernel.org Link:
http://lkml.kernel.org/r/20190206103947.15750-4-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/intel-pt-decoder/intel-pt-decoder.c (diff)
Commit 0f43fd4bdb74714f0ad8b0ee5bd26603b0390adb by gregkh
perf tools: Fix split_kallsyms_for_kcore() for trampoline symbols
commit d6d457451eb94fa747dc202765592eb8885a7352 upstream.
Kallsyms symbols do not have a size, so the size becomes the distance to
the next symbol.
Consequently the recently added trampoline symbols end up with large
sizes because the trampolines are some distance from one another and the
main kernel map.
However, symbols that end outside their map can disrupt the symbol tree
because, after mapping, it can appear incorrectly that they overlap
other symbols.
Add logic to truncate symbol size to the end of the corresponding map.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Acked-by: Jiri
Olsa <jolsa@kernel.org> Cc: stable@vger.kernel.org Fixes: d83212d5dd67
("kallsyms, x86: Export addresses of PTI entry trampolines") Link:
http://lkml.kernel.org/r/20190109091835.5570-2-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/symbol.c (diff)
Commit 2354deae355bd77162676e9e7a23c3c0e9720b4c by gregkh
perf auxtrace: Define auxtrace record alignment
commit c3fcadf0bb765faf45d6d562246e1d08885466df upstream.
Define auxtrace record alignment so that it can be referenced elsewhere.
Note this is preparation for patch "perf intel-pt: Fix overlap
calculation for padding"
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: stable@vger.kernel.org Link:
http://lkml.kernel.org/r/20190206103947.15750-2-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/auxtrace.c (diff)
The file was modifiedtools/perf/util/auxtrace.h (diff)
Commit 6228a6e3516f9fcada4c2eeb45d56eb1638eee3c by gregkh
perf intel-pt: Fix overlap calculation for padding
commit 5a99d99e3310a565b0cf63f785b347be9ee0da45 upstream.
Auxtrace records might have up to 7 bytes of padding appended. Adjust
the overlap accordingly.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: stable@vger.kernel.org Link:
http://lkml.kernel.org/r/20190206103947.15750-3-adrian.hunter@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/intel-pt-decoder/intel-pt-decoder.c (diff)
Commit 85c9f1fb8a81ddd2bbd1c7259b8454b09d51ee09 by gregkh
perf/x86/intel/uncore: Fix client IMC events return huge result
commit 8041ffd36f42d8521d66dd1e236feb58cecd68bc upstream.
The client IMC bandwidth events currently return very large values:
  $ perf stat -e uncore_imc/data_reads/ -e uncore_imc/data_writes/ -I
10000 -a
  10.000117222 34,788.76 MiB uncore_imc/data_reads/
10.000117222 8.26 MiB uncore_imc/data_writes/
20.000374584 34,842.89 MiB uncore_imc/data_reads/
20.000374584 10.45 MiB uncore_imc/data_writes/
30.000633299 37,965.29 MiB uncore_imc/data_reads/
30.000633299 323.62 MiB uncore_imc/data_writes/
40.000891548 41,012.88 MiB uncore_imc/data_reads/
40.000891548 6.98 MiB uncore_imc/data_writes/
50.001142480 1,125,899,906,621,494.75 MiB uncore_imc/data_reads/
50.001142480 6.97 MiB uncore_imc/data_writes/
The client IMC events are freerunning counters. They still use the old
event encoding format (0x1 for data_read and 0x2 for data write). The
counter bit width is calculated by common code, which assume that the
standard encoding format is used for the freerunning counters. Error bit
width information is calculated.
The patch intends to convert the old client IMC event encoding to the
standard encoding format.
Current common code uses event->attr.config which directly copy from
user space. We should not implicitly modify it for a converted event.
The event->hw.config is used to replace the event->attr.config in common
code.
For client IMC events, the event->attr.config is used to calculate a
converted event with standard encoding format in the custom
event_init(). The converted event is stored in event->hw.config. For
other events of freerunning counters, they already use the standard
encoding format. The same value as event->attr.config is assigned to
event->hw.config in common event_init().
Reported-by: Jin Yao <yao.jin@linux.intel.com> Tested-by: Jin Yao
<yao.jin@linux.intel.com> Signed-off-by: Kan Liang
<kan.liang@linux.intel.com> Signed-off-by: Peter Zijlstra (Intel)
<peterz@infradead.org> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Andy Lutomirski
<luto@kernel.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc:
Borislav Petkov <bp@alien8.de> Cc: Dave Hansen
<dave.hansen@linux.intel.com> Cc: H. Peter Anvin <hpa@zytor.com> Cc:
Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: Rik van Riel <riel@surriel.com> Cc: Stephane
Eranian <eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu> Cc: stable@kernel.org #
v4.18+ Fixes: 9aae1780e7e8 ("perf/x86/intel/uncore: Clean up client IMC
uncore") Link:
https://lkml.kernel.org/r/20190227165729.1861-1-kan.liang@linux.intel.com
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/events/intel/uncore.h (diff)
The file was modifiedarch/x86/events/intel/uncore_snb.c (diff)
The file was modifiedarch/x86/events/intel/uncore.c (diff)
Commit 99e5abb7b8958c4bfaa9a155cfa4e3600d336854 by gregkh
perf intel-pt: Fix divide by zero when TSC is not available
commit 076333870c2f5bdd9b6d31e7ca1909cf0c84cbfa upstream.
When TSC is not available, "timeless" decoding is used but a divide by
zero occurs if perf_time_to_tsc() is called.
Ensure the divisor is not zero.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Jiri Olsa
<jolsa@redhat.com> Cc: stable@vger.kernel.org # v4.9+ Link:
https://lkml.kernel.org/n/tip-1i4j0wqoc8vlbkcizqqxpsf4@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/intel-pt.c (diff)
Commit 9b236e3f79d9c26009162d331daa5770320f225d by gregkh
md: Fix failed allocation of md_register_thread
commit e406f12dde1a8375d77ea02d91f313fb1a9c6aec upstream.
mddev->sync_thread can be set to NULL on kzalloc failure downstream. The
patch checks for such a scenario and frees allocated resources.
Committer node:
Added similar fix to raid5.c, as suggested by Guoqing.
Cc: stable@vger.kernel.org # v3.16+ Acked-by: Guoqing Jiang
<gqjiang@suse.com> Signed-off-by: Aditya Pakki <pakki001@umn.edu>
Signed-off-by: Song Liu <songliubraving@fb.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/md/raid5.c (diff)
The file was modifieddrivers/md/raid10.c (diff)
Commit 384dada74d3710d74b673ce5f96294b1375d6963 by gregkh
x86/kvmclock: set offset for kvm unstable clock
commit b5179ec4187251a751832193693d6e474d3445ac upstream.
VMs may show incorrect uptime and dmesg printk offsets on hypervisors
with unstable clock. The problem is produced when VM is rebooted without
exiting from qemu.
The fix is to calculate clock offset not only for stable clock but for
unstable clock as well, and use kvm_sched_clock_read() which substracts
the offset for both clocks.
This is safe, because pvclock_clocksource_read() does the right thing
and makes sure that clock always goes forward, so once offset is
calculated with unstable clock, we won't get new reads that are smaller
than offset, and thus won't get negative results.
Thank you Jon DeVree for helping to reproduce this issue.
Fixes: 857baa87b642 ("sched/clock: Enable sched clock early") Cc:
stable@vger.kernel.org Reported-by: Dominique Martinet
<asmadeus@codewreck.org> Signed-off-by: Pavel Tatashin
<pasha.tatashin@soleen.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/kvmclock.c (diff)
Commit f484e220df1530bed07d0b1e56a127e57f85cd3c by gregkh
x86/ftrace: Fix warning and considate ftrace_jmp_replace() and
ftrace_call_replace()
commit 745cfeaac09ce359130a5451d90cb0bd4094c290 upstream.
Arnd reported the following compiler warning:
arch/x86/kernel/ftrace.c:669:23: error: 'ftrace_jmp_replace' defined but
not used [-Werror=unused-function]
The ftrace_jmp_replace() function now only has a single user and should
be simply moved by that user. But looking at the code, it shows that
ftrace_jmp_replace() is similar to ftrace_call_replace() except that
instead of using the opcode of 0xe8 it uses 0xe9. It makes more sense to
consolidate that function into one implementation that both
ftrace_jmp_replace() and ftrace_call_replace() use by passing in the op
code separate.
The structure in ftrace_code_union is also modified to replace the "e8"
field with the more appropriate name "op".
Cc: stable@vger.kernel.org Reported-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Arnd Bergmann <arnd@arndb.de> Link:
http://lkml.kernel.org/r/20190304200748.1418790-1-arnd@arndb.de Fixes:
d2a68c4effd8 ("x86/ftrace: Do not call function graph from dynamic
trampolines") Signed-off-by: Steven Rostedt (VMware)
<rostedt@goodmis.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/ftrace.c (diff)
Commit 65a2af7599c6f3b9afa4e6b479fcbfa5bb1ec456 by gregkh
tpm/tpm_crb: Avoid unaligned reads in crb_recv()
commit 3d7a850fdc1a2e4d2adbc95cc0fc962974725e88 upstream.
The current approach to read first 6 bytes from the response and then
tail of the response, can cause the 2nd memcpy_fromio() to do an
unaligned read
(e.g. read 32-bit word from address aligned to a 16-bits), depending on
how memcpy_fromio() is implemented. If this happens, the read will fail
and the memory controller will fill the read with 1's.
This was triggered by 170d13ca3a2f, which should be probably refined to
check and react to the address alignment. Before that commit, on x86
memcpy_fromio() turned out to be memcpy(). By a luck GCC has done the
right thing (from tpm_crb's perspective) for us so far, but we should
not rely on that. Thus, it makes sense to fix this also in tpm_crb, not
least because the fix can be then backported to stable kernels and make
them more robust when compiled in differing environments.
Cc: stable@vger.kernel.org Cc: James Morris <jmorris@namei.org> Cc:
Tomas Winkler <tomas.winkler@intel.com> Cc: Jerry Snitselaar
<jsnitsel@redhat.com> Fixes: 30fc8d138e91 ("tpm: TPM 2.0 CRB Interface")
Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Reviewed-by: Jerry Snitselaar <jsnitsel@redhat.com> Acked-by: Tomas
Winkler <tomas.winkler@intel.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/char/tpm/tpm_crb.c (diff)
Commit 5d6f031fa78241c72efecf1c99ff70fa34de0453 by gregkh
tpm: Unify the send callback behaviour
commit f5595f5baa30e009bf54d0d7653a9a0cc465be60 upstream.
The send() callback should never return length as it does not in every
driver except tpm_crb in the success case. The reason is that the main
transmit functionality only cares about whether the transmit was
successful or not and ignores the count completely.
Suggested-by: Stefan Berger <stefanb@linux.ibm.com> Cc:
stable@vger.kernel.org Signed-off-by: Jarkko Sakkinen
<jarkko.sakkinen@linux.intel.com> Reviewed-by: Stefan Berger
<stefanb@linux.ibm.com> Reviewed-by: Jerry Snitselaar
<jsnitsel@redhat.com> Tested-by: Alexander Steffen
<Alexander.Steffen@infineon.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/char/tpm/tpm_atmel.c (diff)
The file was modifieddrivers/char/tpm/tpm_infineon.c (diff)
The file was modifieddrivers/char/tpm/tpm_vtpm_proxy.c (diff)
The file was modifieddrivers/char/tpm/tpm-interface.c (diff)
The file was modifieddrivers/char/tpm/tpm_i2c_nuvoton.c (diff)
The file was modifieddrivers/char/tpm/tpm_ibmvtpm.c (diff)
The file was modifieddrivers/char/tpm/st33zp24/st33zp24.c (diff)
The file was modifieddrivers/char/tpm/tpm_i2c_infineon.c (diff)
The file was modifieddrivers/char/tpm/tpm_tis_core.c (diff)
The file was modifieddrivers/char/tpm/xen-tpmfront.c (diff)
The file was modifieddrivers/char/tpm/tpm_i2c_atmel.c (diff)
The file was modifieddrivers/char/tpm/tpm_nsc.c (diff)
Commit 9d032911a36cb7a3903cae3f96138609fae1bd8d by gregkh
rcu: Do RCU GP kthread self-wakeup from softirq and interrupt
commit 1d1f898df6586c5ea9aeaf349f13089c6fa37903 upstream.
The rcu_gp_kthread_wake() function is invoked when it might be necessary
to wake the RCU grace-period kthread.  Because self-wakeups are normally
a useless waste of CPU cycles, if rcu_gp_kthread_wake() is invoked from
this kthread, it naturally refuses to do the wakeup.
Unfortunately, natural though it might be, this heuristic fails when
rcu_gp_kthread_wake() is invoked from an interrupt or softirq handler
that interrupted the grace-period kthread just after the final check of
the wait-event condition but just before the schedule() call.  In this
case, a wakeup is required, even though the call to
rcu_gp_kthread_wake() is within the RCU grace-period kthread's context.
Failing to provide this wakeup can result in grace periods failing to
start, which in turn results in out-of-memory conditions.
This race window is quite narrow, but it actually did happen during real
testing.  It would of course need to be fixed even if it was strictly
theoretical in nature.
This patch does not Cc stable because it does not apply cleanly to
earlier kernel versions.
Fixes: 48a7639ce80c ("rcu: Make callers awaken grace-period kthread")
Reported-by: "He, Bo" <bo.he@intel.com> Co-developed-by: "Zhang, Jun"
<jun.zhang@intel.com> Co-developed-by: "He, Bo" <bo.he@intel.com>
Co-developed-by: "xiao, jin" <jin.xiao@intel.com> Co-developed-by: Bai,
Jie A <jie.a.bai@intel.com> Signed-off: "Zhang, Jun"
<jun.zhang@intel.com> Signed-off: "He, Bo" <bo.he@intel.com> Signed-off:
"xiao, jin" <jin.xiao@intel.com> Signed-off: Bai, Jie A
<jie.a.bai@intel.com> Signed-off-by: "Zhang, Jun" <jun.zhang@intel.com>
[ paulmck: Switch from !in_softirq() to "!in_interrupt() &&
!in_serving_softirq() to avoid redundant wakeups and to also handle the
interrupt-handler scenario as well as the softirq-handler scenario that
actually occurred in testing. ] Signed-off-by: Paul E. McKenney
<paulmck@linux.ibm.com> Link:
https://lkml.kernel.org/r/CD6925E8781EFD4D8E11882D20FC406D52A11F61@SHSMSX104.ccr.corp.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/rcu/tree.c (diff)
Commit f55d0cb10f5b54fdd586b738fcd36da0576781a3 by gregkh
media: imx: prpencvf: Stop upstream before disabling IDMA channel
commit a19c22677377b87e4354f7306f46ad99bc982a9f upstream.
Upstream must be stopped immediately after receiving the last EOF and
before disabling the IDMA channel. This can be accomplished by moving
upstream stream off to just after receiving the last EOF completion in
prp_stop(). For symmetry also move upstream stream on to end of
prp_start().
This fixes a complete system hard lockup on the SabreAuto when streaming
from the ADV7180, by repeatedly sending a stream off immediately
followed by stream on:
while true; do v4l2-ctl  -d1 --stream-mmap --stream-count=3; done
Eventually this either causes the system lockup or EOF timeouts at all
subsequent stream on, until a system reset.
The lockup occurs when disabling the IDMA channel at stream off.
Stopping the video data stream entering the IDMA channel before
disabling the channel itself appears to be a reliable fix for the hard
lockup.
Fixes: f0d9c8924e2c3 ("[media] media: imx: Add IC subdev drivers")
Reported-by: Gaël PORTAY <gael.portay@collabora.com> Tested-by: Gaël
PORTAY <gael.portay@collabora.com> Signed-off-by: Steve Longerbeam
<slongerbeam@gmail.com> Cc: stable@vger.kernel.org # for 4.13 and up
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by:
Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/media/imx/imx-ic-prpencvf.c (diff)
Commit 1d433d48516e387de7c3cf043b56744606f07c17 by gregkh
media: lgdt330x: fix lock status reporting
commit 1b4fd9de6ec7f3722c2b3e08cc5ad171c11f93be upstream.
A typo in code cleanup commit db9c1007bc07 ("media: lgdt330x: do some
cleanups at status logic") broke the FE_HAS_LOCK reporting for 3303
chips by inadvertently modifying the register mask.
The broken lock status is critial as it prevents video capture cards
from reporting signal strength, scanning for channels, and capturing
video.
Fix regression by reverting mask change.
Cc: stable@vger.kernel.org # Kernel 4.17+ Fixes: db9c1007bc07 ("media:
lgdt330x: do some cleanups at status logic") Signed-off-by: Nick French
<naf@ou.edu> Reviewed-by: Laurent Pinchart
<laurent.pinchart@ideasonboard.com> Tested-by: Adam Stylinski
<kungfujesus06@gmail.com> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/media/dvb-frontends/lgdt330x.c (diff)
Commit 202ed62dea70ce1b87db2007384b6ef2cfc13d47 by gregkh
media: sun6i: Fix CSI regmap's max_register
commit d31b282e2c0de9c7fb113516820340251f03a625 upstream.
max_register is currently set to 0x1000. This is beyond the mapped
address range of the hardware, so attempts to dump the regmap from
debugfs would trigger a kernel exception.
Furthermore, the useful registers only occupy a small section at the
beginning of the full range. Change the value to 0x9c, the last known
register on the V3s and H3.
On the A31, the register range is extended to support additional capture
channels. Since this is not yet supported, ignore it for now.
Fixes: 5cc7522d8965 ("media: sun6i: Add support for Allwinner CSI V3s")
Cc: <stable@vger.kernel.org> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com> Signed-off-by: Hans
Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/media/platform/sunxi/sun6i-csi/sun6i_csi.c (diff)
Commit 6932b9b4e677f6b29fa1f7f54b259ed9b3b6ba8e by gregkh
media: uvcvideo: Avoid NULL pointer dereference at the end of streaming
commit 9dd0627d8d62a7ddb001a75f63942d92b5336561 upstream.
The UVC video driver converts the timestamp from hardware specific unit
to one known by the kernel at the time when the buffer is dequeued. This
is fine in general, but the streamoff operation consists of the
following steps (among other things):
1. uvc_video_clock_cleanup --- the hardware clock sample array is
  released and the pointer to the array is set to NULL,
2. buffers in active state are returned to the user and
3. buf_finish callback is called on buffers that are prepared.
  buf_finish includes calling uvc_video_clock_update that accesses the
  hardware clock sample array.
The above is serialised by a queue specific mutex. Address the problem
by skipping the clock conversion if the hardware clock sample array is
already released.
Fixes: 9c0863b1cc48 ("[media] vb2: call buf_finish from __queue_cancel")
Reported-by: Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
Tested-by: Chiranjeevi Rapolu <chiranjeevi.rapolu@intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Cc:
stable@vger.kernel.org Signed-off-by: Laurent Pinchart
<laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/media/usb/uvc/uvc_video.c (diff)
Commit e7ae48ae47227c0302b9f4b15a5bf45934a55673 by gregkh
media: vimc: Add vimc-streamer for stream control
commit adc589d2a20808fb99d46a78175cd023f2040338 upstream.
Add a linear pipeline logic for the stream control. It's created by
walking backwards on the entity graph. When the stream starts it will
simply loop through the pipeline calling the respective process_frame
function of each entity.
Fixes: f2fe89061d797 ("vimc: Virtual Media Controller core, capture and
sensor")
Cc: stable@vger.kernel.org # for v4.20 Signed-off-by: Lucas A. M.
Magalhães <lucmaga@gmail.com> Acked-by: Helen Koike
<helen.koike@collabora.com> Signed-off-by: Hans Verkuil
<hverkuil-cisco@xs4all.nl>
[hverkuil-cisco@xs4all.nl: fixed small space-after-tab issue in the
patch] Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/media/platform/vimc/vimc-capture.c (diff)
The file was modifieddrivers/media/platform/vimc/vimc-scaler.c (diff)
The file was modifieddrivers/media/platform/vimc/vimc-common.c (diff)
The file was modifieddrivers/media/platform/vimc/vimc-common.h (diff)
The file was addeddrivers/media/platform/vimc/vimc-streamer.c
The file was addeddrivers/media/platform/vimc/vimc-streamer.h
The file was modifieddrivers/media/platform/vimc/vimc-debayer.c (diff)
The file was modifieddrivers/media/platform/vimc/Makefile (diff)
The file was modifieddrivers/media/platform/vimc/vimc-sensor.c (diff)
Commit e7a06193c52cab30335d58cde7dc7e0e6a67045b by gregkh
media: imx-csi: Input connections to CSI should be optional
commit 337e90ed028643c7acdfd0d31e3224d05ca03d66 upstream.
Some imx platforms do not have fwnode connections to all CSI input
ports, and should not be treated as an error. This includes the imx6q
SabreAuto, which has no connections to ipu1_csi1 and ipu2_csi0. Return
-ENOTCONN in imx_csi_parse_endpoint() so that v4l2-fwnode endpoint
parsing will not treat an unconnected CSI input port as an error.
Fixes: c893500a16baf ("media: imx: csi: Register a subdev notifier")
Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com> Reviewed-by:
Philipp Zabel <p.zabel@pengutronix.de> Acked-by: Tim Harvey
<tharvey@gateworks.com> Cc: stable@vger.kernel.org Tested-by: Fabio
Estevam <festevam@gmail.com> Signed-off-by: Hans Verkuil
<hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/media/imx/imx-media-csi.c (diff)
Commit 145cab144d758292570cd2e6a9ad765234debedc by gregkh
media: imx: csi: Disable CSI immediately after last EOF
commit 2e0fe66e0a136252f4d89dbbccdcb26deb867eb8 upstream.
Disable the CSI immediately after receiving the last EOF before stream
off (and thus before disabling the IDMA channel). Do this by moving the
wait for EOF completion into a new function csi_idmac_wait_last_eof().
This fixes a complete system hard lockup on the SabreAuto when streaming
from the ADV7180, by repeatedly sending a stream off immediately
followed by stream on:
while true; do v4l2-ctl  -d4 --stream-mmap --stream-count=3; done
Eventually this either causes the system lockup or EOF timeouts at all
subsequent stream on, until a system reset.
The lockup occurs when disabling the IDMA channel at stream off.
Disabling the CSI before disabling the IDMA channel appears to be a
reliable fix for the hard lockup.
Fixes: 4a34ec8e470cb ("[media] media: imx: Add CSI subdev driver")
Reported-by: Gaël PORTAY <gael.portay@collabora.com> Signed-off-by:
Steve Longerbeam <slongerbeam@gmail.com> Cc: stable@vger.kernel.org #
for 4.13 and up Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/media/imx/imx-media-csi.c (diff)
Commit c7a35a9877b89bca4856fcd06d191335b2d6bf5c by gregkh
media: imx: csi: Stop upstream before disabling IDMA channel
commit 4bc1ab41eee9d02ad2483bf8f51a7b72e3504eba upstream.
Move upstream stream off to just after receiving the last EOF completion
and disabling the CSI (and thus before disabling the IDMA channel) in
csi_stop(). For symmetry also move upstream stream on to beginning of
csi_start().
Doing this makes csi_s_stream() more symmetric with prp_s_stream() which
will require the same change to fix a hard lockup.
Signed-off-by: Steve Longerbeam <slongerbeam@gmail.com> Cc:
stable@vger.kernel.org # for 4.13 and up Signed-off-by: Hans
Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab
<mchehab+samsung@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/staging/media/imx/imx-media-csi.c (diff)
Commit b78ee0965f86be90e514258b60dbf71908e071ee by gregkh
drm/fb-helper: generic: Fix drm_fbdev_client_restore()
commit 78de14c23e031420aa5f61973583635eccd6cd2a upstream.
If fbdev setup has failed, lastclose will give a NULL pointer deref:
[   77.794295] [drm:drm_lastclose]
[   77.794414] [drm:drm_lastclose] driver lastclose completed
[   77.794660] Unable to handle kernel NULL pointer dereference at
virtual address 00000014
[   77.809460] pgd = b376b71b
[   77.818275] [00000014] *pgd=175ba831, *pte=00000000, *ppte=00000000
[   77.830813] Internal error: Oops: 17 [#1] ARM
[   77.840963] Modules linked in: mi0283qt mipi_dbi tinydrm
raspberrypi_hwmon gpio_backlight backlight snd_bcm2835(C) bcm2835_rng
rng_core
[   77.865203] CPU: 0 PID: 527 Comm: lt-modetest Tainted: G         C  
    5.0.0-rc1+ #1
[   77.879525] Hardware name: BCM2835
[   77.889185] PC is at restore_fbdev_mode+0x20/0x164
[   77.900261] LR is at
drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0x9c
[   78.002446] Process lt-modetest (pid: 527, stack limit = 0x7a3d5c14)
[   78.291030] Backtrace:
[   78.300815] [<c04f2d0c>] (restore_fbdev_mode) from [<c04f4708>]
(drm_fb_helper_restore_fbdev_mode_unlocked+0x54/0x9c)
[   78.319095]  r9:d8a8a288 r8:d891acf0 r7:d7697910 r6:00000000
r5:d891ac00 r4:d891ac00
[   78.334432] [<c04f46b4>] (drm_fb_helper_restore_fbdev_mode_unlocked)
from [<c04f47e8>] (drm_fbdev_client_restore+0x18/0x20)
[   78.353296]  r8:d76978c0 r7:d7697910 r6:d7697950 r5:d7697800
r4:d891ac00 r3:c04f47d0
[   78.368689] [<c04f47d0>] (drm_fbdev_client_restore) from [<c051b6b4>]
(drm_client_dev_restore+0x7c/0xc0)
[   78.385982] [<c051b638>] (drm_client_dev_restore) from [<c04f8fd0>]
(drm_lastclose+0xc4/0xd4)
[   78.402332]  r8:d76978c0 r7:d7471080 r6:c0e0c088 r5:d8a85e00
r4:d7697800
[   78.416688] [<c04f8f0c>] (drm_lastclose) from [<c04f9088>]
(drm_release+0xa8/0x10c)
[   78.431929]  r5:d8a85e00 r4:d7697800
[   78.442989] [<c04f8fe0>] (drm_release) from [<c02640c4>]
(__fput+0x104/0x1c8)
[   78.457740]  r8:d5ccea10 r7:d96cfb10 r6:00000008 r5:d74c1b90
r4:d8a8a280
[   78.472043] [<c0263fc0>] (__fput) from [<c02641ec>]
(____fput+0x18/0x1c)
[   78.486363]  r10:00000006 r9:d7722000 r8:c01011c4 r7:00000000
r6:c0ebac6c r5:d892a340
[   78.501869]  r4:d8a8a280
[   78.512002] [<c02641d4>] (____fput) from [<c013ef1c>]
(task_work_run+0x98/0xac)
[   78.527186] [<c013ee84>] (task_work_run) from [<c010cc54>]
(do_work_pending+0x4f8/0x570)
[   78.543238]  r7:d7722030 r6:00000004 r5:d7723fb0 r4:00000000
[   78.556825] [<c010c75c>] (do_work_pending) from [<c0101034>]
(slow_work_pending+0xc/0x20)
[   78.674256] ---[ end trace 70d3a60cf739be3b ]---
Fix by using drm_fb_helper_lastclose() which checks if fbdev is in use.
Fixes: 9060d7f49376 ("drm/fb-helper: Finish the generic fbdev
emulation") Cc: stable@vger.kernel.org Signed-off-by: Noralf Trønnes
<noralf@tronnes.org> Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Link:
https://patchwork.freedesktop.org/patch/msgid/20190125150300.33268-1-noralf@tronnes.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/drm_fb_helper.c (diff)
Commit 3bc65d729765659a7959d4fb99ee53811ecc9cb0 by gregkh
drm/radeon/evergreen_cs: fix missing break in switch statement
commit cc5034a5d293dd620484d1d836aa16c6764a1c8c upstream.
Add missing break statement in order to prevent the code from falling
through to case CB_TARGET_MASK.
This bug was found thanks to the ongoing efforts to enable
-Wimplicit-fallthrough.
Fixes: dd220a00e8bd ("drm/radeon/kms: add support for streamout v7") Cc:
stable@vger.kernel.org Signed-off-by: Gustavo A. R. Silva
<gustavo@embeddedor.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/radeon/evergreen_cs.c (diff)
Commit ea7da9ef23a08f21ccd194d8e86f07f164788820 by gregkh
drm/amd/powerplay: correct power reading on fiji
commit f5742ec36422a39b57f0256e4847f61b3c432f8c upstream.
Set sampling period as 500ms to provide a smooth power reading output.
Also, correct the register for power reading.
Signed-off-by: Evan Quan <evan.quan@amd.com> Reviewed-by: Feifei Xu
<Feifei.Xu@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Cc: stable@vger.kernel.org Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c (diff)
Commit c61d88f39491cb9105a83b770b195cbd1b836c4a by gregkh
drm/amd/display: don't call dm_pp_ function from an fpu block
commit 59d3191f14dc18881fec1172c7096b7863622803 upstream.
Powerplay functions called from dm_pp_* functions tend to do a
mutex_lock which isn't safe to do inside a kernel_fpu_begin/end block as
those will disable/enable preemption.
Rearrange the dm_pp_get_clock_levels_by_type_with_voltage calls to make
sure they happen outside of kernel_fpu_begin/end.
Cc: stable@vger.kernel.org Acked-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Harry Wentland
<harry.wentland@amd.com> Signed-off-by: Alex Deucher
<alexander.deucher@amd.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/amd/display/dc/calcs/dcn_calcs.c (diff)
Commit e1bdcf061b48dafc0755dd2f68fb0e31ed6f2597 by gregkh
KVM: Call kvm_arch_memslots_updated() before updating memslots
commit 152482580a1b0accb60676063a1ac57b2d12daf6 upstream.
kvm_arch_memslots_updated() is at this point in time an x86-specific
hook for handling MMIO generation wraparound.  x86 stashes 19 bits of
the memslots generation number in its MMIO sptes in order to avoid full
page fault walks for repeat faults on emulated MMIO addresses. Because
only 19 bits are used, wrapping the MMIO generation number is possible,
if unlikely.  kvm_arch_memslots_updated() alerts x86 that the generation
has changed so that it can invalidate all MMIO sptes in case the
effective MMIO generation has wrapped so as to avoid using a stale spte,
e.g. a (very) old spte that was created with generation==0.
Given that the purpose of kvm_arch_memslots_updated() is to prevent
consuming stale entries, it needs to be called before the new generation
is propagated to memslots.  Invalidating the MMIO sptes after updating
memslots means that there is a window where a vCPU could dereference the
new memslots generation, e.g. 0, and incorrectly reuse an old MMIO spte
that was created with (pre-wrap) generation==0.
Fixes: e59dbe09f8e6 ("KVM: Introduce kvm_arch_memslots_updated()") Cc:
<stable@vger.kernel.org> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/include/asm/kvm_host.h (diff)
The file was modifiedinclude/linux/kvm_host.h (diff)
The file was modifiedvirt/kvm/arm/mmu.c (diff)
The file was modifiedarch/powerpc/include/asm/kvm_host.h (diff)
The file was modifiedarch/s390/include/asm/kvm_host.h (diff)
The file was modifiedarch/x86/kvm/x86.c (diff)
The file was modifiedarch/x86/kvm/mmu.c (diff)
The file was modifiedvirt/kvm/kvm_main.c (diff)
The file was modifiedarch/mips/include/asm/kvm_host.h (diff)
Commit cf8d03a4fe59ae40a6a8e5b0925425ef975a5597 by gregkh
KVM: VMX: Compare only a single byte for VMCS' "launched" in vCPU-run
commit 61c08aa9606d4e48a8a50639c956448a720174c3 upstream.
The vCPU-run asm blob does a manual comparison of a VMCS' launched
status to execute the correct VM-Enter instruction, i.e. VMLAUNCH vs.
VMRESUME.  The launched flag is a bool, which is a typedef of _Bool. C99
does not define an exact size for _Bool, stating only that is must be
large enough to hold '0' and '1'.  Most, if not all, compilers use a
single byte for _Bool, including gcc[1].
Originally, 'launched' was of type 'int' and so the asm blob used 'cmpl'
to check the launch status.  When 'launched' was moved to be stored on a
per-VMCS basis, struct vcpu_vmx's "temporary" __launched flag was added
in order to avoid having to pass the current VMCS into the asm blob. The
new  '__launched' was defined as a 'bool' and not an 'int', but the
'cmp' instruction was not updated.
This has not caused any known problems, likely due to compilers aligning
variables to 4-byte or 8-byte boundaries and KVM zeroing out struct
vcpu_vmx during allocation.  I.e. vCPU-run accesses "junk" data, it just
happens to always be zero and so doesn't affect the result.
[1] https://gcc.gnu.org/ml/gcc-patches/2000-10/msg01127.html
Fixes: d462b8192368 ("KVM: VMX: Keep list of loaded VMCSs, instead of
vcpus") Cc: <stable@vger.kernel.org> Reviewed-by: Jim Mattson
<jmattson@google.com> Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
Commit 5221117cd414d6365b921ea85d5c14c55c3dfb76 by gregkh
KVM: VMX: Zero out *all* general purpose registers after VM-Exit
commit 0e0ab73c9a0243736bcd779b30b717e23ba9a56d upstream.
...except RSP, which is restored by hardware as part of VM-Exit.
Paolo theorized that restoring registers from the stack after a VM-Exit
in lieu of zeroing them could lead to speculative execution with the
guest's values, e.g. if the stack accesses miss the L1 cache[1]. Zeroing
XORs are dirt cheap, so just be ultra-paranoid.
Note that the scratch register (currently RCX) used to save/restore the
guest state is also zeroed as its host-defined value is loaded via the
stack, just with a MOV instead of a POP.
[1] https://patchwork.kernel.org/patch/10771539/#22441255
Fixes: 0cb5b30698fd ("kvm: vmx: Scrub hardware GPRs at VM-exit") Cc:
<stable@vger.kernel.org> Cc: Jim Mattson <jmattson@google.com>
Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/vmx.c (diff)
Commit c173d5417a11248961b4da79adeb6a70b5b44df3 by gregkh
KVM: x86/mmu: Detect MMIO generation wrap in any address space
commit e1359e2beb8b0a1188abc997273acbaedc8ee791 upstream.
The check to detect a wrap of the MMIO generation explicitly looks for a
generation number of zero.  Now that unique memslots generation numbers
are assigned to each address space, only address space 0 will get a
generation number of exactly zero when wrapping.  E.g. when address
space 1 goes from 0x7fffe to 0x80002, the MMIO generation number will
wrap to 0x2.  Adjust the MMIO generation to strip the address space
modifier prior to checking for a wrap.
Fixes: 4bd518f1598d ("KVM: use separate generations for each address
space") Cc: <stable@vger.kernel.org> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/mmu.c (diff)
Commit 1e42327adb8da50e3a0fb68848a6a07d18c158ec by gregkh
KVM: x86/mmu: Do not cache MMIO accesses while memslots are in flux
commit ddfd1730fd829743e41213e32ccc8b4aa6dc8325 upstream.
When installing new memslots, KVM sets bit 0 of the generation number to
indicate that an update is in-progress.  Until the update is complete,
there are no guarantees as to whether a vCPU will see the old or the new
memslots.  Explicity prevent caching MMIO accesses so as to avoid using
an access cached from the old memslots after the new memslots have been
installed.
Note that it is unclear whether or not disabling caching during the
update window is strictly necessary as there is no definitive
documentation as to what ordering guarantees KVM provides with respect
to updating memslots.  That being said, the MMIO spte code does not
allow reusing sptes created while an update is in-progress, and the
associated documentation explicitly states:
    We do not want to use an MMIO sptes created with an odd generation
   number, ...  If KVM is unlucky and creates an MMIO spte while the
   low bit is 1, the next access to the spte will always be a cache
miss.
At the very least, disabling the per-vCPU MMIO cache during updates will
make its behavior consistent with the MMIO spte behavior and
documentation.
Fixes: 56f17dd3fbc4 ("kvm: x86: fix stale mmio cache bug") Cc:
<stable@vger.kernel.org> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/x86.h (diff)
Commit 64d259a7064214e8b6cc4f807a71987ee73235d2 by gregkh
KVM: nVMX: Sign extend displacements of VMX instr's mem operands
commit 946c522b603f281195af1df91837a1d4d1eb3bc9 upstream.
The VMCS.EXIT_QUALIFCATION field reports the displacements of memory
operands for various instructions, including VMX instructions, as a
naturally sized unsigned value, but masks the value by the addr size,
e.g. given a ModRM encoded as -0x28(%ebp), the -0x28 displacement is
reported as 0xffffffd8 for a 32-bit address size.  Despite some weird
wording regarding sign extension, the SDM explicitly states that bits
beyond the instructions address size are undefined:
    In all cases, bits of this field beyond the instruction’s address
   size are undefined.
Failure to sign extend the displacement results in KVM incorrectly
treating a negative displacement as a large positive displacement when
the address size of the VMX instruction is smaller than KVM's native
size, e.g. a 32-bit address size on a 64-bit KVM.
The very original decoding, added by commit 064aea774768 ("KVM: nVMX:
Decoding memory operands of VMX instructions"), sort of modeled sign
extension by truncating the final virtual/linear address for a 32-bit
address size.  I.e. it messed up the effective address but made it work
by adjusting the final address.
When segmentation checks were added, the truncation logic was kept as-is
and no sign extension logic was introduced.  In other words, it kept
calculating the wrong effective address while mostly generating the
correct virtual/linear address.  As the effective address is what's used
in the segment limit checks, this results in KVM incorreclty injecting
#GP/#SS faults due to non-existent segment violations when a nested VMM
uses negative displacements with an address size smaller than KVM's
native address size.
Using the -0x28(%ebp) example, an EBP value of 0x1000 will result in KVM
using 0x100000fd8 as the effective address when checking for a segment
limit violation.  This causes a 100% failure rate when running a 32-bit
KVM build as L1 on top of a 64-bit KVM L0.
Fixes: f9eb4af67c9d ("KVM: nVMX: VMX instructions: add checks for
#GP/#SS exceptions") Cc: stable@vger.kernel.org Signed-off-by: Sean
Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit f88f29f81d5921b03f60bb9d707b2a377e0875c4 by gregkh
KVM: nVMX: Apply addr size mask to effective address for VMX
instructions
commit 8570f9e881e3fde98801bb3a47eef84dd934d405 upstream.
The address size of an instruction affects the effective address, not
the virtual/linear address.  The final address may still be truncated,
e.g. to 32-bits outside of long mode, but that happens irrespective of
the address size, e.g. a 32-bit address size can yield a 64-bit virtual
address when using FS/GS with a non-zero base.
Fixes: 064aea774768 ("KVM: nVMX: Decoding memory operands of VMX
instructions") Cc: stable@vger.kernel.org Signed-off-by: Sean
Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit 5de7f6cd6aebe0a6b58cd975c22f9472ec30ef33 by gregkh
KVM: nVMX: Ignore limit checks on VMX instructions using flat segments
commit 34333cc6c2cb021662fd32e24e618d1b86de95bf upstream.
Regarding segments with a limit==0xffffffff, the SDM officially states:
    When the effective limit is FFFFFFFFH (4 GBytes), these accesses may
   or may not cause the indicated exceptions.  Behavior is
   implementation-specific and may vary from one execution to another.
In practice, all CPUs that support VMX ignore limit checks for "flat
segments", i.e. an expand-up data or code segment with base=0 and
limit=0xffffffff.  This is subtly different than wrapping the effective
address calculation based on the address size, as the flat segment
behavior also applies to accesses that would wrap the 4g boundary, e.g.
a 4-byte access starting at 0xffffffff will access linear addresses
0xffffffff, 0x0, 0x1 and 0x2.
Fixes: f9eb4af67c9d ("KVM: nVMX: VMX instructions: add checks for
#GP/#SS exceptions") Cc: stable@vger.kernel.org Signed-off-by: Sean
Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo
Bonzini <pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit 4e126cbd4f0613a1975056b9f2978151b25ecd39 by gregkh
KVM: nVMX: Check a single byte for VMCS "launched" in nested early
checks
commit 1ce072cbfd8dba46f117804850398e0b3040a541 upstream.
Nested early checks does a manual comparison of a VMCS' launched status
in its asm blob to execute the correct VM-Enter instruction, i.e.
VMLAUNCH vs. VMRESUME.  The launched flag is a bool, which is a typedef
of _Bool.  C99 does not define an exact size for _Bool, stating only
that is must be large enough to hold '0' and '1'.  Most, if not all,
compilers use a single byte for _Bool, including gcc[1].
The use of 'cmpl' instead of 'cmpb' was not deliberate, but rather the
result of a copy-paste as the asm blob was directly derived from the asm
blob for vCPU-run.
This has not caused any known problems, likely due to compilers aligning
variables to 4-byte or 8-byte boundaries and KVM zeroing out struct
vcpu_vmx during allocation.  I.e. vCPU-run accesses "junk" data, it just
happens to always be zero and so doesn't affect the result.
[1] https://gcc.gnu.org/ml/gcc-patches/2000-10/msg01127.html
Fixes: 52017608da33 ("KVM: nVMX: add option to perform early consistency
checks via H/W") Cc: <stable@vger.kernel.org> Reviewed-by: Jim Mattson
<jmattson@google.com> Reviewed-by: Konrad Rzeszutek Wilk
<konrad.wilk@oracle.com> Signed-off-by: Sean Christopherson
<sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini
<pbonzini@redhat.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kvm/vmx/nested.c (diff)
Commit 8d244127d25f403d285ab69ff16c194dc44327be by gregkh
net: dsa: lantiq_gswip: fix use-after-free on failed probe
commit aed13f2e00ce278f039b76e7ac84d419aff48ef6 upstream.
Make sure to disable and deregister the switch on late probe errors to
avoid use-after-free when the device-resource-managed switch is freed.
Fixes: 14fceff4771e ("net: dsa: Add Lantiq / Intel DSA driver for
vrx200") Cc: stable <stable@vger.kernel.org> # 4.20 Cc: Hauke
Mehrtens <hauke@hauke-m.de> Signed-off-by: Johan Hovold
<johan@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Acked-by:
Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/lantiq_gswip.c (diff)
Commit 09bfb45ed842f4b53683c3bc28a386997e47c719 by gregkh
net: dsa: lantiq_gswip: fix OF child-node lookups
commit c8cbcb0d8bd72d44fad1a5ddc348ac10e0fb1b37 upstream.
Use the new of_get_compatible_child() helper to look up child nodes to
avoid ever matching non-child nodes elsewhere in the tree.
Also fix up the related struct device_node leaks.
Fixes: 14fceff4771e ("net: dsa: Add Lantiq / Intel DSA driver for
vrx200") Cc: stable <stable@vger.kernel.org> # 4.20 Cc: Hauke
Mehrtens <hauke@hauke-m.de> Signed-off-by: Johan Hovold
<johan@kernel.org> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Acked-by:
Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: David S. Miller
<davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/net/dsa/lantiq_gswip.c (diff)
Commit 1b2f5d715bbc21c548c834647084c4ad7952696f by gregkh
s390/setup: fix boot crash for machine without EDAT-1
commit 86a86804e4f18fc3880541b3d5a07f4df0fe29cb upstream.
The fix to make WARN work in the early boot code created a problem on
older machines without EDAT-1. The setup_lowcore_dat_on function uses
the pointer from lowcore_ptr[0] to set the DAT bit in the new PSWs. That
does not work if the kernel page table is set up with 4K pages as the
prefix address maps to absolute zero.
To make this work the PSWs need to be changed with via address 0 in form
of the S390_lowcore definition.
Reported-by: Guenter Roeck <linux@roeck-us.net> Tested-by: Cornelia Huck
<cohuck@redhat.com> Fixes: 94f85ed3e2f8 ("s390/setup: fix early warning
messages") Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/s390/kernel/setup.c (diff)
Commit aed54941cf9e67876456513b490fdf72e0367aed by gregkh
SUNRPC: Prevent thundering herd when the socket is not connected
commit ed7dc973bd91da234d93aff6d033a5206a6c9885 upstream.
If the socket is not connected, then we want to initiate a reconnect
rather that trying to transmit requests. If there is a large number of
requests queued and waiting for the lock in call_transmit(), then it can
take a while for one of the to loop back and retake the lock in
call_connect.
Fixes: 89f90fe1ad8b ("SUNRPC: Allow calls to xprt_transmit() to
drain...") Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sunrpc/clnt.c (diff)
Commit f6716abfd12b90c10a6e234edd41bfab4387c3b8 by gregkh
SUNRPC: Fix up RPC back channel transmission
commit 477687e1116ad16180caf8633dd830b296a5ce73 upstream.
Now that transmissions happen through a queue, we require the RPC tasks
to handle error conditions that may have been set while they were
sleeping. The back channel does not currently do this, but assumes that
any error condition happens during its own call to xprt_transmit().
The solution is to ensure that the back channel splits out the error
handling just like the forward channel does.
Fixes: 89f90fe1ad8b ("SUNRPC: Allow calls to xprt_transmit() to
drain...") Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sunrpc/clnt.c (diff)
Commit 87e728e85559749608073c447141dab26663d0bb by gregkh
SUNRPC: Respect RPC call timeouts when retrying transmission
commit 7b3fef8e4157ed424bcde039a60a730aa0dfb0eb upstream.
Fix a regression where soft and softconn requests are not timing out as
expected.
Fixes: 89f90fe1ad8b ("SUNRPC: Allow calls to xprt_transmit() to
drain...") Signed-off-by: Trond Myklebust
<trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/sunrpc/clnt.c (diff)
The file was modifiedMakefile (diff)
Commit 3c09233b5dee8b1d9503b9c1399fca2fac4b1ff8 by gregkh
ALSA: hda - add Lenovo IdeaCentre B550 to the power_save_blacklist
commit 721f1e6c1fd137e7e2053d8e103b666faaa2d50c upstream.
Another machine which does not like the power saving (noise):
https://bugzilla.redhat.com/show_bug.cgi?id=1689623
Also, reorder the Lenovo C50 entry to keep the table sorted.
Reported-by: hs.guimaraes@outlook.com Signed-off-by: Jaroslav Kysela
<perex@perex.cz> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi
Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/hda_intel.c (diff)
Commit ae833c3eefaf9b1e08978048d460bb9ae406acad by gregkh
ALSA: firewire-motu: use 'version' field of unit directory to identify
model
commit 2d012c65a9ca26a0ef87ea0a42f1653dd37155f5 upstream.
Current ALSA firewire-motu driver uses the value of 'model' field of
unit directory in configuration ROM for modalias for MOTU FireWire
models. However, as long as I checked, Pre8 and 828mk3(Hybrid) have the
same value for the field (=0x100800).
unit            | version   | model
--------------- | --------- | ---------- 828mkII         | 0x000003  |
0x101800 Traveler        | 0x000009  | 0x107800 Pre8            |
0x00000f  | 0x100800 <- 828mk3(FW)      | 0x000015  | 0x106800
AudioExpress    | 0x000033  | 0x104800 828mk3(Hybrid)  | 0x000035  |
0x100800 <-
When updating firmware for MOTU 8pre FireWire from v1.0.0 to v1.0.3, I
got change of the value from 0x100800 to 0x103800. On the other hand,
the value of 'version' field is fixed to 0x00000f. As a quick glance,
the higher 12 bits of the value of 'version' field represent firmware
version, while the lower 12 bits is unknown.
By induction, the value of 'version' field represents actual model.
This commit changes modalias to match the value of 'version' field,
instead of 'model' field. For degug, long name of added sound card
includes hexadecimal value of 'model' field.
Fixes: 6c5e1ac0e144 ("ALSA: firewire-motu: add support for Motu
Traveler") Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Cc:
<stable@vger.kernel.org> # v4.19+ Signed-off-by: Takashi Iwai
<tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/firewire/motu/motu.c (diff)
Commit cc8cd197411baebacec3a31c319d86c2ace4bfdd by gregkh
mmc: pxamci: fix enum type confusion
commit e60a582bcde01158a64ff948fb799f21f5d31a11 upstream.
clang points out several instances of mismatched types in this drivers,
all coming from a single declaration:
drivers/mmc/host/pxamci.c:193:15: error: implicit conversion from
enumeration type 'enum dma_transfer_direction' to
     different enumeration type 'enum dma_data_direction'
[-Werror,-Wenum-conversion]
               direction = DMA_DEV_TO_MEM;
                         ~ ^~~~~~~~~~~~~~
drivers/mmc/host/pxamci.c:212:62: error: implicit conversion from
enumeration type 'enum dma_data_direction' to
     different enumeration type 'enum dma_transfer_direction'
[-Werror,-Wenum-conversion]
       tx = dmaengine_prep_slave_sg(chan, data->sg, host->dma_len,
direction,
The behavior is correct, so this must be a simply typo from
dma_data_direction and dma_transfer_direction being similarly named
types with a similar purpose.
Fixes: 6464b7140951 ("mmc: pxamci: switch over to dmaengine use")
Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Nathan
Chancellor <natechancellor@gmail.com> Acked-by: Robert Jarzmik
<robert.jarzmik@free.fr> Cc: stable@vger.kernel.org Signed-off-by: Ulf
Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/pxamci.c (diff)
Commit 7e682a01b11110f0193c5808930149d7ac2826c9 by gregkh
mmc: alcor: fix DMA reads
commit 5ea47691bd99e1100707ec63364aff72324e2af4 upstream.
Setting max_blk_count to 1 here was causing the mmc block layer to
always use the MMC_READ_SINGLE_BLOCK command here, which the driver does
not DMA-accelerate.
Drop the max_blk_ settings here. The mmc host defaults suffice, along
with the max_segs and max_seg_size settings, which I have now documented
in more detail.
Now each MMC command reads 4 512-byte blocks, using DMA instead of PIO.
On my SD card, this increases read performance (measured with dd) from
167kb/sec to 4.6mb/sec.
Link:
http://lkml.kernel.org/r/CAD8Lp47L5T3jnAjBiPs1cQ+yFA3L6LJtgFvMETnBrY63-Zdi2g@mail.gmail.com
Signed-off-by: Daniel Drake <drake@endlessm.com> Reviewed-by: Oleksij
Rempel <linux@rempel-privat.de> Fixes: c5413ad815a6 ("mmc: add new Alcor
Micro Cardreader SD/MMC driver") Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/alcor.c (diff)
Commit 1494408bf8638fdfeb4cdce923ae0645c62ca0a9 by gregkh
mmc: mxcmmc: "Revert mmc: mxcmmc: handle highmem pages"
commit 2b77158ffa92b820a0c5da9a3c6ead7aa069c71c upstream.
This reverts commit b189e7589f6d3411e85c6b7ae6eef158f08f388f.
Unable to handle kernel paging request at virtual address c8358000 pgd =
efa405c3
[c8358000] *pgd=00000000 Internal error: Oops: 805 [#1] PREEMPT ARM CPU:
0 PID: 711 Comm: kworker/0:2 Not tainted 4.20.0+ #30 Hardware name:
Freescale i.MX27 (Device Tree Support) Workqueue: events mxcmci_datawork
PC is at mxcmci_datawork+0xbc/0x2ac LR is at mxcmci_datawork+0xac/0x2ac
pc : [<c04e33c8>]    lr : [<c04e33b8>]    psr: 60000013 sp : c6c93f08
ip : 24004180  fp : 00000008 r10: c8358000  r9 : c78b3e24  r8 : c6c92000
r7 : 00000000  r6 : c7bb8680  r5 : c7bb86d4  r4 : c78b3de0 r3 : 00002502
r2 : c090b2e0  r1 : 00000880  r0 : 00000000 Flags: nZCv  IRQs on  FIQs
on  Mode SVC_32  ISA ARM  Segment user Control: 0005317f  Table:
a68a8000  DAC: 00000055 Process kworker/0:2 (pid: 711, stack limit =
0x389543bc) Stack: (0xc6c93f08 to 0xc6c94000) 3f00:                 
c7bb86d4 00000000 00000000 c6cbfde0 c7bb86d4 c7ee4200 3f20: 00000000
c0907ea8 00000000 c7bb86d8 c0907ea8 c012077c c6cbfde0 c7bb86d4 3f40:
c6cbfde0 c6c92000 c6cbfdf4 c09280ba c0907ea8 c090b2e0 c0907ebc c0120c18
3f60: c6cbfde0 00000000 00000000 c6cbb580 c7ba7c40 c7837edc c6cbb598
00000000 3f80: c6cbfde0 c01208f8 00000000 c01254fc c7ba7c40 c0125400
00000000 00000000 3fa0: 00000000 00000000 00000000 c01010d0 00000000
00000000 00000000 00000000 3fc0: 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 3fe0: 00000000 00000000 00000000
00000000 00000013 00000000 00000000 00000000
[<c04e33c8>] (mxcmci_datawork) from [<c012077c>]
(process_one_work+0x1f0/0x338)
[<c012077c>] (process_one_work) from [<c0120c18>]
(worker_thread+0x320/0x474)
[<c0120c18>] (worker_thread) from [<c01254fc>] (kthread+0xfc/0x118)
[<c01254fc>] (kthread) from [<c01010d0>] (ret_from_fork+0x14/0x24)
Exception stack(0xc6c93fb0 to 0xc6c93ff8) 3fa0:                        
           00000000 00000000 00000000 00000000 3fc0: 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 3fe0: 00000000
00000000 00000000 00000000 00000013 00000000 Code: e3500000 1a000059
e5153050 e5933038 (e48a3004)
---[ end trace 54ca629b75f0e737 ]--- note: kworker/0:2[711] exited with
preempt_count 1
Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Fixes: b189e7589f6d
("mmc: mxcmmc: handle highmem pages") Cc: stable@vger.kernel.org
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/mxcmmc.c (diff)
Commit cdb57f82a4bc54d3de2108eec8f855b46ead6934 by gregkh
mmc: renesas_sdhi: limit block count to 16 bit for old revisions
commit c9a9497ccef205ed4ed2e247011382627876d831 upstream.
R-Car Gen2 has two different SDHI incarnations in the same chip. The
older one does not support the recently introduced 32 bit register
access to the block count register. Make sure we use this feature only
after the first known version.
Thanks to the Renesas Testing team for this bug report!
Fixes: 5603731a15ef ("mmc: tmio: fix access width of Block Count
Register") Reported-by: Yoshihiro Shimoda
<yoshihiro.shimoda.uh@renesas.com> Signed-off-by: Wolfram Sang
<wsa+renesas@sang-engineering.com> Reviewed-by: Simon Horman
<horms+renesas@verge.net.au> Tested-by: Phong Hoang
<phong.hoang.wz@renesas.com> Cc: stable@vger.kernel.org Signed-off-by:
Ulf Hansson <ulf.hansson@linaro.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/mmc/host/renesas_sdhi_core.c (diff)
Commit 109f5f9dff14a5a9d28a48218d04cdf81c370d6b by gregkh
drm/amdgpu: fix invalid use of change_bit
commit 72464382fc2d3673eb51f21a57f2c0a320c1552f upstream.
We only need to clear the bit in a 32bit integer.
This fixes a crah on ARM64 and PPC64LE caused by
"drm/amdgpu: update the vm invalidation engine layout V2"
Signed-off-by: Christian König <christian.koenig@amd.com> Acked-by: Alex
Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/amd/amdgpu/gmc_v9_0.c (diff)
Commit 5618b16763ce38b53aa3677744771f971c145322 by gregkh
drm/vmwgfx: Don't double-free the mode stored in par->set_mode
commit c2d311553855395764e2e5bf401d987ba65c2056 upstream.
When calling vmw_fb_set_par(), the mode stored in par->set_mode gets
free'd twice. The first free is in vmw_fb_kms_detach(), the second is
near the end of vmw_fb_set_par() under the name of 'old_mode'. The
mode-setting code only works correctly if the mode doesn't actually
change. Removing
'old_mode' in favor of using par->set_mode directly fixes the problem.
Cc: <stable@vger.kernel.org> Fixes: a278724aa23c ("drm/vmwgfx: Implement
fbdev on kms v2") Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Deepak Rawat <drawat@vmware.com> Signed-off-by: Thomas
Hellstrom <thellstrom@vmware.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/vmwgfx/vmwgfx_fb.c (diff)
Commit 0c113ec08d71ad237ea87d3d6b55f20d0ab1a42c by gregkh
drm/vmwgfx: Return 0 when gmrid::get_node runs out of ID's
commit 4b9ce3a651a37c60527101db4451a315a8b9588f upstream.
If it's not a system error and get_node implementation accommodate the
buffer object then it should return 0 with memm::mm_node set to NULL.
v2: Test for id != -ENOMEM instead of id == -ENOSPC.
Cc: <stable@vger.kernel.org> Fixes: 4eb085e42fde ("drm/vmwgfx: Convert
to new IDA API") Signed-off-by: Deepak Rawat <drawat@vmware.com>
Reviewed-by: Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by:
Thomas Hellstrom <thellstrom@vmware.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c (diff)
Commit 98e2c51c1ac3d1599c221944c5aecb5868c1605d by gregkh
iommu/amd: fix sg->dma_address for sg->offset bigger than PAGE_SIZE
commit 4e50ce03976fbc8ae995a000c4b10c737467beaa upstream.
Take into account that sg->offset can be bigger than PAGE_SIZE when
setting segment sg->dma_address. Otherwise sg->dma_address will point at
diffrent page, what makes DMA not possible with erros like this:
xhci_hcd 0000:38:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0000
address=0x00000000fdaa70c0 flags=0x0020] xhci_hcd 0000:38:00.3: AMD-Vi:
Event logged [IO_PAGE_FAULT domain=0x0000 address=0x00000000fdaa7040
flags=0x0020] xhci_hcd 0000:38:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT
domain=0x0000 address=0x00000000fdaa7080 flags=0x0020] xhci_hcd
0000:38:00.3: AMD-Vi: Event logged [IO_PAGE_FAULT domain=0x0000
address=0x00000000fdaa7100 flags=0x0020] xhci_hcd 0000:38:00.3: AMD-Vi:
Event logged [IO_PAGE_FAULT domain=0x0000 address=0x00000000fdaa7000
flags=0x0020]
Additinally with wrong sg->dma_address unmap_sg will free wrong pages,
what what can cause crashes like this:
Feb 28 19:27:45 kernel: BUG: Bad page state in process cinnamon
pfn:39e8b1 Feb 28 19:27:45 kernel: Disabling lock debugging due to
kernel taint Feb 28 19:27:45 kernel: flags: 0x2ffff0000000000() Feb 28
19:27:45 kernel: raw: 02ffff0000000000 0000000000000000 ffffffff00000301
0000000000000000 Feb 28 19:27:45 kernel: raw: 0000000000000000
0000000000000000 00000001ffffffff 0000000000000000 Feb 28 19:27:45
kernel: page dumped because: nonzero _refcount Feb 28 19:27:45 kernel:
Modules linked in: ccm fuse arc4 nct6775 hwmon_vid amdgpu nls_iso8859_1
nls_cp437 edac_mce_amd vfat fat kvm_amd ccp rng_core kvm mt76x0u
mt76x0_common mt76x02_usb irqbypass mt76_usb mt76x02_lib mt76
crct10dif_pclmul crc32_pclmul chash mac80211 amd_iommu_v2
ghash_clmulni_intel gpu_sched i2c_algo_bit ttm wmi_bmof
snd_hda_codec_realtek snd_hda_codec_generic drm_kms_helper
snd_hda_codec_hdmi snd_hda_intel drm snd_hda_codec aesni_intel
snd_hda_core snd_hwdep aes_x86_64 crypto_simd snd_pcm cfg80211 cryptd
mousedev snd_timer glue_helper pcspkr r8169 input_leds realtek agpgart
libphy rfkill snd syscopyarea sysfillrect sysimgblt fb_sys_fops
soundcore sp5100_tco k10temp i2c_piix4 wmi evdev gpio_amdpt pinctrl_amd
mac_hid pcc_cpufreq acpi_cpufreq sg ip_tables x_tables ext4(E)
crc32c_generic(E) crc16(E) mbcache(E) jbd2(E) fscrypto(E) sd_mod(E)
hid_generic(E) usbhid(E) hid(E) dm_mod(E) serio_raw(E) atkbd(E)
libps2(E) crc32c_intel(E) ahci(E) libahci(E) libata(E) xhci_pci(E)
xhci_hcd(E) Feb 28 19:27:45 kernel:  scsi_mod(E) i8042(E) serio(E)
bcache(E) crc64(E) Feb 28 19:27:45 kernel: CPU: 2 PID: 896 Comm:
cinnamon Tainted: G    B   W   E     4.20.12-arch1-1-custom #1 Feb 28
19:27:45 kernel: Hardware name: To Be Filled By O.E.M. To Be Filled By
O.E.M./B450M Pro4, BIOS P1.20 06/26/2018 Feb 28 19:27:45 kernel: Call
Trace: Feb 28 19:27:45 kernel:  dump_stack+0x5c/0x80 Feb 28 19:27:45
kernel:  bad_page.cold.29+0x7f/0xb2 Feb 28 19:27:45 kernel:
__free_pages_ok+0x2c0/0x2d0 Feb 28 19:27:45 kernel:
skb_release_data+0x96/0x180 Feb 28 19:27:45 kernel:
__kfree_skb+0xe/0x20 Feb 28 19:27:45 kernel:  tcp_recvmsg+0x894/0xc60
Feb 28 19:27:45 kernel:  ? reuse_swap_page+0x120/0x340 Feb 28 19:27:45
kernel:  ? ptep_set_access_flags+0x23/0x30 Feb 28 19:27:45 kernel:
inet_recvmsg+0x5b/0x100 Feb 28 19:27:45 kernel:
__sys_recvfrom+0xc3/0x180 Feb 28 19:27:45 kernel:  ?
handle_mm_fault+0x10a/0x250 Feb 28 19:27:45 kernel:  ?
syscall_trace_enter+0x1d3/0x2d0 Feb 28 19:27:45 kernel:  ?
__audit_syscall_exit+0x22a/0x290 Feb 28 19:27:45 kernel:
__x64_sys_recvfrom+0x24/0x30 Feb 28 19:27:45 kernel:
do_syscall_64+0x5b/0x170 Feb 28 19:27:45 kernel:
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Cc: stable@vger.kernel.org Reported-and-tested-by: Jan Viktorin
<jan.viktorin@gmail.com> Reviewed-by: Alexander Duyck
<alexander.h.duyck@linux.intel.com> Signed-off-by: Stanislaw Gruszka
<sgruszka@redhat.com> Fixes: 80187fd39dcb ('iommu/amd: Optimize map_sg
and unmap_sg') Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/iommu/amd_iommu.c (diff)
Commit 027584c8ef01eececbb4eca218ebcf301ab1231d by gregkh
iommu/iova: Fix tracking of recently failed iova address
commit 80ef4464d5e27408685e609d389663aad46644b9 upstream.
If a 32 bit allocation request is too big to possibly succeed, it early
exits with a failure and then should never update max32_alloc_ size.
This patch fixes current code, now the size is only updated if the slow
path failed while walking the tree. Without the fix the allocation may
enter the slow path again even if there was a failure before of a
request with the same or a smaller size.
Cc: <stable@vger.kernel.org> # 4.20+ Fixes: bee60e94a1e2 ("iommu/iova:
Optimise attempts to allocate iova from 32bit address range")
Reviewed-by: Robin Murphy <robin.murphy@arm.com> Signed-off-by: Robert
Richter <rrichter@marvell.com> Signed-off-by: Joerg Roedel
<jroedel@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/iommu/iova.c (diff)
Commit 48cce130d485275c0b04e4031629d3c9d62326be by gregkh
libceph: wait for latest osdmap in ceph_monc_blacklist_add()
commit bb229bbb3bf63d23128e851a1f3b85c083178fa1 upstream.
Because map updates are distributed lazily, an OSD may not know about
the new blacklist for quite some time after "osd blacklist add" command
is completed.  This makes it possible for a blacklisted but still alive
client to overwrite a post-blacklist update, resulting in data
corruption.
Waiting for latest osdmap in ceph_monc_blacklist_add() and thus using
the post-blacklist epoch for all post-blacklist requests ensures that
all such requests "wait" for the blacklist to come into force on their
respective OSDs.
Cc: stable@vger.kernel.org Fixes: 6305a3b41515 ("libceph: support for
blacklisting clients") Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Jason Dillaman <dillaman@redhat.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/ceph/libceph.h (diff)
The file was modifiednet/ceph/ceph_common.c (diff)
The file was modifiednet/ceph/mon_client.c (diff)
Commit e88f693e6e8d43678c1af5d7305755098ea4d26b by gregkh
udf: Fix crash on IO error during truncate
commit d3ca4651d05c0ff7259d087d8c949bcf3e14fb46 upstream.
When truncate(2) hits IO error when reading indirect extent block the
code just bugs with:
kernel BUG at linux-4.15.0/fs/udf/truncate.c:249!
...
Fix the problem by bailing out cleanly in case of IO error.
CC: stable@vger.kernel.org Reported-by: jean-luc malet
<jeanluc.malet@gmail.com> Signed-off-by: Jan Kara <jack@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/udf/truncate.c (diff)
Commit 63703e8fd2af25f5b946eff504d7e74fc19fe16d by gregkh
mips: loongson64: lemote-2f: Add IRQF_NO_SUSPEND to "cascade" irqaction.
commit 5f5f67da9781770df0403269bc57d7aae608fecd upstream.
Timekeeping IRQs from CS5536 MFGPT are routed to i8259, which then
triggers the "cascade" IRQ on MIPS CPU. Without IRQF_NO_SUSPEND in
cascade_irqaction, MFGPT interrupts will be masked in suspend mode, and
the machine would be unable to resume once suspended.
Previously, MIPS IRQs were not disabled properly, so the original code
appeared to work. Commit a3e6c1eff5 ("MIPS: IRQ: Fix disable_irq on CPU
IRQs") uncovers the bug. To fix it, add IRQF_NO_SUSPEND to
cascade_irqaction.
This commit is functionally identical to 0add9c2f1cff ("MIPS:
Loongson-3: Add IRQF_NO_SUSPEND to Cascade irqaction"), but it forgot to
apply the same fix to Loongson2.
Signed-off-by: Yifeng Li <tomli@tomli.me> Signed-off-by: Paul Burton
<paul.burton@mips.com> Cc: linux-mips@vger.kernel.org Cc: Jiaxun Yang
<jiaxun.yang@flygoat.com> Cc: Huacai Chen <chenhc@lemote.com> Cc: Ralf
Baechle <ralf@linux-mips.org> Cc: James Hogan <jhogan@kernel.org> Cc:
linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org # v3.19+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/mips/loongson64/lemote-2f/irq.c (diff)
Commit de21552cc84833d72598d54a552ca3b291cc6ca3 by gregkh
MIPS: Ensure ELF appended dtb is relocated
commit 3f0a53bc6482fb09770982a8447981260ea258dc upstream.
This fixes booting with the combination of CONFIG_RELOCATABLE=y and
CONFIG_MIPS_ELF_APPENDED_DTB=y.
Sections that appear after the relocation table are not relocated on
system boot (except .bss, which has special handling).
With CONFIG_MIPS_ELF_APPENDED_DTB, the dtb is part of the vmlinux ELF,
so it must be relocated together with everything else.
Fixes: 069fd766271d ("MIPS: Reserve space for relocation table")
Signed-off-by: Yasha Cherikovsky <yasha.che3@gmail.com> Signed-off-by:
Paul Burton <paul.burton@mips.com> Cc: Ralf Baechle
<ralf@linux-mips.org> Cc: Paul Burton <paul.burton@mips.com> Cc: James
Hogan <jhogan@kernel.org> Cc: linux-mips@linux-mips.org Cc:
linux-kernel@vger.kernel.org Cc: stable@vger.kernel.org # v4.7+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/mips/kernel/vmlinux.lds.S (diff)
Commit 9e063d979422bced2e0783f66943e70055e2540b by gregkh
MIPS: Fix kernel crash for R6 in jump label branch function
commit 47c25036b60f27b86ab44b66a8861bcf81cde39b upstream.
Insert Branch instruction instead of NOP to make sure assembler don't
patch code in forbidden slot. In jump label function, it might be
possible to patch Control Transfer Instructions(CTIs) into forbidden
slot, which will generate Reserved Instruction exception in MIPS release
6.
Signed-off-by: Archer Yan <ayan@wavecomp.com> Reviewed-by: Paul Burton
<paul.burton@mips.com>
[paul.burton@mips.com:
- Add MIPS prefix to subject.
- Mark for stable from v4.0, which introduced r6 support, onwards.]
Signed-off-by: Paul Burton <paul.burton@mips.com> Cc:
linux-mips@vger.kernel.org Cc: stable@vger.kernel.org # v4.0+
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/mips/include/asm/jump_label.h (diff)
Commit 7f5ffb4c7a710c1f441817cbeca7ca5aecc5f4ef by gregkh
powerpc/vdso64: Fix CLOCK_MONOTONIC inconsistencies across Y2038
commit b5b4453e7912f056da1ca7572574cada32ecb60c upstream.
Jakub Drnec reported:
Setting the realtime clock can sometimes make the monotonic clock go
back by over a hundred years. Decreasing the realtime clock across
the y2k38 threshold is one reliable way to reproduce. Allegedly this
can also happen just by running ntpd, I have not managed to
reproduce that other than booting with rtc at >2038 and then running
ntp. When this happens, anything with timers (e.g. openjdk) breaks
rather badly.
And included a test case (slightly edited for brevity):
#define _POSIX_C_SOURCE 199309L
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
  long get_time(void) {
   struct timespec tp;
   clock_gettime(CLOCK_MONOTONIC, &tp);
   return tp.tv_sec + tp.tv_nsec / 1000000000;
}
  int main(void) {
   long last = get_time();
   while(1) {
     long now = get_time();
     if (now < last) {
       printf("clock went backwards by %ld seconds!\n", last - now);
     }
     last = now;
     sleep(1);
   }
   return 0;
}
Which when run concurrently with:
# date -s 2040-1-1
# date -s 2037-1-1
Will detect the clock going backward.
The root cause is that wtom_clock_sec in struct vdso_data is only a
32-bit signed value, even though we set its value to be equal to
tk->wall_to_monotonic.tv_sec which is 64-bits.
Because the monotonic clock starts at zero when the system boots the
wall_to_montonic.tv_sec offset is negative for current and future dates.
Currently on a freshly booted system the offset will be in the vicinity
of negative 1.5 billion seconds.
However if the wall clock is set past the Y2038 boundary, the offset
from wall to monotonic becomes less than negative 2^31, and no longer
fits in 32-bits. When that value is assigned to wtom_clock_sec it is
truncated and becomes positive, causing the VDSO assembly code to
calculate CLOCK_MONOTONIC incorrectly.
That causes CLOCK_MONOTONIC to jump ahead by ~4 billion seconds which it
is not meant to do. Worse, if the time is then set back before the Y2038
boundary CLOCK_MONOTONIC will jump backward.
We can fix it simply by storing the full 64-bit offset in the vdso_data,
and using that in the VDSO assembly code. We also shuffle some of the
fields in vdso_data to avoid creating a hole.
The original commit that added the CLOCK_MONOTONIC support to the VDSO
did actually use a 64-bit value for wtom_clock_sec, see commit
a7f290dad32e ("[PATCH] powerpc: Merge vdso's and add vdso support to 32
bits kernel") (Nov 2005). However just 3 days later it was converted to
32-bits in commit 0c37ec2aa88b ("[PATCH] powerpc: vdso fixes (take
#2)"), and the bug has existed since then AFAICS.
Fixes: 0c37ec2aa88b ("[PATCH] powerpc: vdso fixes (take #2)") Cc:
stable@vger.kernel.org # v2.6.15+ Link:
http://lkml.kernel.org/r/HaC.ZfES.62bwlnvAvMP.1STMMj@seznam.cz
Reported-by: Jakub Drnec <jaydee@email.cz> Signed-off-by: Michael
Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/vdso64/gettimeofday.S (diff)
The file was modifiedarch/powerpc/include/asm/vdso_datapage.h (diff)
Commit 62362ccdd45c741ac82c1a9cb033669b4e591154 by gregkh
powerpc/security: Fix spectre_v2 reporting
commit 92edf8df0ff2ae86cc632eeca0e651fd8431d40d upstream.
When I updated the spectre_v2 reporting to handle software count cache
flush I got the logic wrong when there's no software count cache enabled
at all.
The result is that on systems with the software count cache flush
disabled we print:
  Mitigation: Indirect branch cache disabled, Software count cache flush
Which correctly indicates that the count cache is disabled, but
incorrectly says the software count cache flush is enabled.
The root of the problem is that we are trying to handle all combinations
of options. But we know now that we only expect to see the software
count cache flush enabled if the other options are false.
So split the two cases, which simplifies the logic and fixes the bug. We
were also missing a space before "(hardware accelerated)".
The result is we see one of:
  Mitigation: Indirect branch serialisation (kernel only)
Mitigation: Indirect branch cache disabled
Mitigation: Software count cache flush
Mitigation: Software count cache flush (hardware accelerated)
Fixes: ee13cb249fab ("powerpc/64s: Add support for software count cache
flush") Cc: stable@vger.kernel.org # v4.19+ Signed-off-by: Michael
Ellerman <mpe@ellerman.id.au> Reviewed-by: Michael Neuling
<mikey@neuling.org> Reviewed-by: Diana Craciun <diana.craciun@nxp.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/powerpc/kernel/security.c (diff)
Commit e846d79bc1ba095482c3a2472c1a7cd2ef962e19 by gregkh
net/mlx5: Fix DCT creation bad flow
commit f84b66b9cce78e8f9d38204fdaa75f07c75f4911 upstream.
In case the DCT creation command has succeeded a DRAIN must be issued
before calling DESTROY.
In addition, the original code used the wrong parameter for the DESTROY
command, 'in' instead of 'din', which caused another creation try
instead of destroying.
Cc: <stable@vger.kernel.org> # 4.15 Fixes: 57cda166bbe0 ("net/mlx5: Add
DCT command interface") Signed-off-by: Yishai Hadas
<yishaih@mellanox.com> Reviewed-by: Artemy Kovalyov
<artemyko@mellanox.com> Signed-off-by: Leon Romanovsky
<leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/net/ethernet/mellanox/mlx5/core/qp.c (diff)
Commit abe481cfe98329a4bed82f3d7d910c8c638a4e77 by gregkh
scsi: core: Avoid that a kernel warning appears during system resume
commit 17605afaae825b0291f80c62a7f6565879edaa8a upstream.
Since scsi_device_quiesce() skips SCSI devices that have another state
than RUNNING, OFFLINE or TRANSPORT_OFFLINE, scsi_device_resume() should
not complain about SCSI devices that have been skipped. Hence this
patch.  This patch avoids that the following warning appears during
resume:
WARNING: CPU: 3 PID: 1039 at blk_clear_pm_only+0x2a/0x30 CPU: 3 PID:
1039 Comm: kworker/u8:49 Not tainted 5.0.0+ #1 Hardware name: LENOVO
4180F42/4180F42, BIOS 83ET75WW (1.45 ) 05/10/2013 Workqueue:
events_unbound async_run_entry_fn RIP: 0010:blk_clear_pm_only+0x2a/0x30
Call Trace:
? scsi_device_resume+0x28/0x50
? scsi_dev_type_resume+0x2b/0x80
? async_run_entry_fn+0x2c/0xd0
? process_one_work+0x1f0/0x3f0
? worker_thread+0x28/0x3c0
? process_one_work+0x3f0/0x3f0
? kthread+0x10c/0x130
? __kthread_create_on_node+0x150/0x150
? ret_from_fork+0x1f/0x30
Cc: Christoph Hellwig <hch@lst.de> Cc: Hannes Reinecke <hare@suse.com>
Cc: Ming Lei <ming.lei@redhat.com> Cc: Johannes Thumshirn
<jthumshirn@suse.de> Cc: Oleksandr Natalenko <oleksandr@natalenko.name>
Cc: Martin Steigerwald <martin@lichtvoll.de> Cc:
<stable@vger.kernel.org> Reported-by: Jisheng Zhang
<Jisheng.Zhang@synaptics.com> Tested-by: Jisheng Zhang
<Jisheng.Zhang@synaptics.com> Fixes: 3a0a529971ec ("block, scsi: Make
SCSI quiesce and resume work reliably") # v4.15 Signed-off-by: Bart Van
Assche <bvanassche@acm.org> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/scsi_lib.c (diff)
Commit e109bf21f4c61a869237a107249687d3c0f7e9ea by gregkh
scsi: qla2xxx: Fix FC-AL connection target discovery
commit 4705f10e82c63924bd84a9b31d15839ec9ba3d06 upstream.
Commit 7f147f9bfd44 ("scsi: qla2xxx: Fix N2N target discovery with Local
loop") fixed N2N target discovery for local loop.  However, same code is
used for FC-AL discovery as well. Added check to make sure we are
bypassing area and domain check only in N2N topology for target
discovery.
Fixes: 7f147f9bfd44 ("scsi: qla2xxx: Fix N2N target discovery with Local
loop") Cc: stable@vger.kernel.org # 5.0+ Signed-off-by: Quinn Tran
<qtran@marvell.com> Signed-off-by: Himanshu Madhani
<hmadhani@marvell.com> Reviewed-by: Ewan D. Milne <emilne@redhat.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/qla2xxx/qla_init.c (diff)
Commit bc1bf16d7defec622e3d9a13b841d079e73063eb by gregkh
scsi: ibmvscsi: Protect ibmvscsi_head from concurrent modificaiton
commit 7205981e045e752ccf96cf6ddd703a98c59d4339 upstream.
For each ibmvscsi host created during a probe or destroyed during a
remove we either add or remove that host to/from the global
ibmvscsi_head list. This runs the risk of concurrent modification.
This patch adds a simple spinlock around the list modification calls to
prevent concurrent updates as is done similarly in the ibmvfc driver and
ipr driver.
Fixes: 32d6e4b6e4ea ("scsi: ibmvscsi: add vscsi hosts to global
list_head") Cc: <stable@vger.kernel.org> # v4.10+ Signed-off-by: Tyrel
Datwyler <tyreld@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/ibmvscsi/ibmvscsi.c (diff)
Commit 72b8c5492f48c8bdee1dddef1c0ef4020a31dd4c by gregkh
scsi: ibmvscsi: Fix empty event pool access during host removal
commit 7f5203c13ba8a7b7f9f6ecfe5a4d5567188d7835 upstream.
The event pool used for queueing commands is destroyed fairly early in
the ibmvscsi_remove() code path. Since, this happens prior to the call
so scsi_remove_host() it is possible for further calls to queuecommand
to be processed which manifest as a panic due to a NULL pointer
dereference as seen here:
PANIC: "Unable to handle kernel paging request for data at address
0x00000000"
Context process backtrace:
DSISR: 0000000042000000 ????Syscall Result: 0000000000000000 4
[c000000002cb3820] memcpy_power7 at c000000000064204
[Link Register] [c000000002cb3820] ibmvscsi_send_srp_event at
d000000003ed14a4 5 [c000000002cb3920] ibmvscsi_send_srp_event at
d000000003ed14a4 [ibmvscsi] ?(unreliable) 6 [c000000002cb39c0]
ibmvscsi_queuecommand at d000000003ed2388 [ibmvscsi] 7
[c000000002cb3a70] scsi_dispatch_cmd at d00000000395c2d8 [scsi_mod] 8
[c000000002cb3af0] scsi_request_fn at d00000000395ef88 [scsi_mod] 9
[c000000002cb3be0] __blk_run_queue at c000000000429860 10
[c000000002cb3c10] blk_delay_work at c00000000042a0ec 11
[c000000002cb3c40] process_one_work at c0000000000dac30 12
[c000000002cb3cd0] worker_thread at c0000000000db110 13
[c000000002cb3d80] kthread at c0000000000e3378 14 [c000000002cb3e30]
ret_from_kernel_thread at c00000000000982c
The kernel buffer log is overfilled with this log:
[11261.952732] ibmvscsi: found no event struct in pool!
This patch reorders the operations during host teardown. Start by
calling the SRP transport and Scsi_Host remove functions to flush any
outstanding work and set the host offline. LLDD teardown follows
including destruction of the event pool, freeing the Command Response
Queue (CRQ), and unmapping any persistent buffers. The event pool
destruction is protected by the scsi_host lock, and the pool is purged
prior of any requests for which we never received a response. Finally,
move the removal of the scsi host from our global list to the end so
that the host is easily locatable for debugging purposes during
teardown.
Cc: <stable@vger.kernel.org> # v2.6.12+ Signed-off-by: Tyrel Datwyler
<tyreld@linux.vnet.ibm.com> Signed-off-by: Martin K. Petersen
<martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/scsi/ibmvscsi/ibmvscsi.c (diff)
Commit 8dfb1e702caa46124669964fac5ebdab040137f3 by gregkh
futex: Ensure that futex address is aligned in handle_futex_death()
commit 5a07168d8d89b00fe1760120714378175b3ef992 upstream.
The futex code requires that the user space addresses of futexes are
32bit aligned. sys_futex() checks this in futex_get_keys() but the
robust list code has no alignment check in place.
As a consequence the kernel crashes on architectures with strict
alignment requirements in handle_futex_death() when trying to cmpxchg()
on an unaligned futex address which was retrieved from the robust list.
[ tglx: Rewrote changelog, proper sizeof() based alignement check and
add
comment ]
Fixes: 0771dfefc9e5 ("[PATCH] lightweight robust futexes: core")
Signed-off-by: Chen Jie <chenjie6@huawei.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Cc: <dvhart@infradead.org> Cc:
<peterz@infradead.org> Cc: <zengweilin@huawei.com> Cc:
stable@vger.kernel.org Link:
https://lkml.kernel.org/r/1552621478-119787-1-git-send-email-chenjie6@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/futex.c (diff)
Commit 3bff3aabd58634b437a1dd7a7c099c4f270abf89 by gregkh
cifs: allow guest mounts to work for smb3.11
commit e71ab2aa06f731a944993120b0eef1556c63b81c upstream.
Fix Guest/Anonymous sessions so that they work with SMB 3.11.
The commit noted below tightened the conditions and forced signing for
the SMB2-TreeConnect commands as per MS-SMB2. However, this should only
apply to normal user sessions and not for Guest/Anonumous sessions.
Fixes: 6188f28bf608 ("Tree connect for SMB3.1.1 must be signed for
non-encrypted shares")
Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com> CC: Stable
<stable@vger.kernel.org> Signed-off-by: Steve French
<stfrench@microsoft.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/smb2pdu.c (diff)
Commit 198092b82db30f959e4999153d7a99f80b31f6f8 by gregkh
perf probe: Fix getting the kernel map
commit eaeffeb9838a7c0dec981d258666bfcc0fa6a947 upstream.
Since commit 4d99e4136580 ("perf machine: Workaround missing maps for
x86 PTI entry trampolines"), perf tools has been creating more than one
kernel map, however 'perf probe' assumed there could be only one.
Fix by using machine__kernel_map() to get the main kernel map.
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Tested-by: Joseph
Qi <joseph.qi@linux.alibaba.com> Acked-by: Masami Hiramatsu
<mhiramat@kernel.org> Cc: Alexander Shishkin
<alexander.shishkin@linux.intel.com> Cc: Andy Lutomirski
<luto@kernel.org> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Jiufei Xue <jiufei.xue@linux.alibaba.com> Cc: Peter Zijlstra
<peterz@infradead.org> Cc: stable@vger.kernel.org Cc: Xu Yu
<xuyu@linux.alibaba.com> Fixes: 4d99e4136580 ("perf machine: Workaround
missing maps for x86 PTI entry trampolines") Fixes: d83212d5dd67
("kallsyms, x86: Export addresses of PTI entry trampolines") Link:
http://lkml.kernel.org/r/2ed432de-e904-85d2-5c36-5897ddc5b23b@intel.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/perf/util/probe-event.c (diff)
Commit dfa011546d27afb6c189261b5fb78db0bf9f44f3 by gregkh
objtool: Move objtool_file struct off the stack
commit 0c671812f152b628bd87c0af49da032cc2a2c319 upstream.
Objtool uses over 512k of stack, thanks to the hash table embedded in
the objtool_file struct.  This causes an unnecessarily large stack
allocation and breaks users with low stack limits.
Move the struct off the stack.
Fixes: 042ba73fe7eb ("objtool: Add several performance improvements")
Reported-by: Vassili Karpov <moosotc@gmail.com> Signed-off-by: Josh
Poimboeuf <jpoimboe@redhat.com> Signed-off-by: Thomas Gleixner
<tglx@linutronix.de> Cc: Peter Zijlstra <peterz@infradead.org> Cc:
stable@vger.kernel.org Link:
https://lkml.kernel.org/r/df92dcbc4b84b02ffa252f46876df125fb56e2d7.1552954176.git.jpoimboe@redhat.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedtools/objtool/check.c (diff)
Commit 70c1b15faf8b1885a89072d959869cd22a7bfafb by gregkh
irqchip/gic-v3-its: Fix comparison logic in lpi_range_cmp
commit 89dc891792c2e046b030f87600109c22209da32e upstream.
The lpi_range_list is supposed to be sorted in ascending order of
->base_id (at least if the range merging is to work), but the current
comparison function returns a positive value if rb->base_id >
ra->base_id, which means that list_sort() will put A after B in that
case - and vice versa, of course.
Fixes: 880cb3cddd16 (irqchip/gic-v3-its: Refactor LPI allocator) Cc:
stable@vger.kernel.org (v4.19+) Signed-off-by: Rasmus Villemoes
<linux@rasmusvillemoes.dk> Signed-off-by: Marc Zyngier
<marc.zyngier@arm.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/irqchip/irq-gic-v3-its.c (diff)
Commit 809ecabb6d418d0f711d0cb0d58743c41d4be9f4 by gregkh
clocksource/drivers/riscv: Fix clocksource mask
commit 32d0be018f6f5ee2d5d19c4795304613560814cf upstream.
For all riscv architectures (RV32, RV64 and RV128), the clocksource is a
64 bit incrementing counter.
Fix the clock source mask accordingly.
Tested on both 64bit and 32 bit virt machine in QEMU.
Fixes: 62b019436814 ("clocksource: new RISC-V SBI timer driver")
Signed-off-by: Atish Patra <atish.patra@wdc.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Reviewed-by: Anup Patel
<anup@brainfault.org> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Daniel
Lezcano <daniel.lezcano@linaro.org> Cc: linux-riscv@lists.infradead.org
Cc: Palmer Dabbelt <palmer@sifive.com> Cc: Anup Patel
<Anup.Patel@wdc.com> Cc: Damien Le Moal <Damien.LeMoal@wdc.com> Cc:
stable@vger.kernel.org Link:
https://lkml.kernel.org/r/20190322215411.19362-1-atish.patra@wdc.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/clocksource/timer-riscv.c (diff)
Commit 2b1cf1a17a41c356981f25d31bb658df53d970dc by gregkh
SMB3: Fix SMB3.1.1 guest mounts to Samba
commit 8c11a607d1d9cd6e7f01fd6b03923597fb0ef95a upstream.
Workaround problem with Samba responses to SMB3.1.1 null user (guest)
mounts.  The server doesn't set the expected flag in the session setup
response so we have to do a similar check to what is done in
smb3_validate_negotiate where we also check if the user is a null user
(but not sec=krb5 since username might not be passed in on mount for
Kerberos case).
Note that the commit below tightened the conditions and forced signing
for the SMB2-TreeConnect commands as per MS-SMB2. However, this should
only apply to normal user sessions and not for cases where there is no
user (even if server forgets to set the flag in the response) since we
don't have anything useful to sign with. This is especially important
now that the more secure SMB3.1.1 protocol is in the default dialect
list.
An earlier patch ("cifs: allow guest mounts to work for smb3.11") fixed
the guest mounts to Windows.
    Fixes: 6188f28bf608 ("Tree connect for SMB3.1.1 must be signed for
non-encrypted shares")
Reviewed-by: Ronnie Sahlberg <lsahlber@redhat.com> Reviewed-by: Paulo
Alcantara <palcantara@suse.de> CC: Stable <stable@vger.kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/cifs/smb2pdu.c (diff)
Commit 1fa1bfef5f4c526ab707101f900cc09587f1dd9a by gregkh
ALSA: hda - Don't trigger jackpoll_work in azx_resume
commit 744c67ffeb06f2d2493f4049ba0bd19698ce0adf upstream.
The commit 3baffc4a84d7 (ALSA: hda/intel: Refactoring PM code) changed
the behaviour of azx_resume(), it triggers the jackpoll_work after
applying this commit.
This change introduced a new issue, all codecs are runtime active after
S3, and will not call runtime_suspend() automatically.
The root cause is the jackpoll_work calls snd_hda_power_up/down_pm, and
it calls up_pm before snd_hdac_enter_pm is called, while calls the
down_pm in the middle of enter_pm and leave_pm is called. This makes the
dev->power.usage_count unbalanced after S3.
To fix it, let azx_resume() don't trigger jackpoll_work as before it
did.
Fixes: 3baffc4a84d7 ("ALSA: hda/intel: Refactoring PM code")
Signed-off-by: Hui Wang <hui.wang@canonical.com> Signed-off-by: Takashi
Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/hda_intel.c (diff)
Commit 5b099547f29d0e21c2982a4697ababd2f9dd55ea by gregkh
ALSA: ac97: Fix of-node refcount unbalance
commit 31d2350d602511efc9ef626b848fe521233b0387 upstream.
ac97_of_get_child_device() take the refcount of the node explicitly via
of_node_get(), but this leads to an unbalance.  The
for_each_child_of_node() loop itself takes the refcount for each
iteration node, hence you don't need to take the extra refcount again.
Fixes: 2225a3e6af78 ("ALSA: ac97: add codecs devicetree binding")
Reviewed-by: Robert Jarzmik <robert.jarzmik@free.fr> Signed-off-by:
Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedsound/ac97/bus.c (diff)
Commit 635218fee409e6f02f220d12a86b3ef79a9c9170 by gregkh
ext4: fix NULL pointer dereference while journal is aborted
commit fa30dde38aa8628c73a6dded7cb0bba38c27b576 upstream.
We see the following NULL pointer dereference while running xfstests
generic/475: BUG: unable to handle kernel NULL pointer dereference at
0000000000000008 PGD 8000000c84bad067 P4D 8000000c84bad067 PUD c84e62067
PMD 0 Oops: 0000 [#1] SMP PTI CPU: 7 PID: 9886 Comm: fsstress Kdump:
loaded Not tainted 5.0.0-rc8 #10 RIP:
0010:ext4_do_update_inode+0x4ec/0x760
... Call Trace:
? jbd2_journal_get_write_access+0x42/0x50
? __ext4_journal_get_write_access+0x2c/0x70
? ext4_truncate+0x186/0x3f0 ext4_mark_iloc_dirty+0x61/0x80
ext4_mark_inode_dirty+0x62/0x1b0 ext4_truncate+0x186/0x3f0
? unmap_mapping_pages+0x56/0x100 ext4_setattr+0x817/0x8b0
notify_change+0x1df/0x430 do_truncate+0x5e/0x90
? generic_permission+0x12b/0x1a0
This is triggered because the NULL pointer handle->h_transaction was
dereferenced in function ext4_update_inode_fsync_trans(). I found that
the h_transaction was set to NULL in jbd2__journal_restart but failed to
attached to a new transaction while the journal is aborted.
Fix this by checking the handle before updating the inode.
Fixes: b436b9bef84d ("ext4: Wait for proper transaction commit on
fsync") Signed-off-by: Jiufei Xue <jiufei.xue@linux.alibaba.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reviewed-by: Joseph Qi
<joseph.qi@linux.alibaba.com> Cc: stable@kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/ext4_jbd2.h (diff)
Commit f1902fd02d56a912b56a5eaa43d51221d8d3224b by gregkh
ext4: fix data corruption caused by unaligned direct AIO
commit 372a03e01853f860560eade508794dd274e9b390 upstream.
Ext4 needs to serialize unaligned direct AIO because the zeroing of
partial blocks of two competing unaligned AIOs can result in data
corruption.
However it decides not to serialize if the potentially unaligned aio is
past i_size with the rationale that no pending writes are possible past
i_size. Unfortunately if the i_size is not block aligned and the second
unaligned write lands past i_size, but still into the same block, it has
the potential of corrupting the previous unaligned write to the same
block.
This is (very simplified) reproducer from Frank
    // 41472 = (10 * 4096) + 512
   // 37376 = 41472 - 4096
    ftruncate(fd, 41472);
   io_prep_pwrite(iocbs[0], fd, buf[0], 4096, 37376);
   io_prep_pwrite(iocbs[1], fd, buf[1], 4096, 41472);
    io_submit(io_ctx, 1, &iocbs[1]);
   io_submit(io_ctx, 1, &iocbs[2]);
    io_getevents(io_ctx, 2, 2, events, NULL);
Without this patch the 512B range from 40960 up to the start of the
second unaligned write (41472) is going to be zeroed overwriting the
data written by the first write. This is a data corruption.
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
* 00009200  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30
* 0000a000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
* 0000a200  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31
With this patch the data corruption is avoided because we will recognize
the unaligned_aio and wait for the unwritten extent conversion.
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
* 00009200  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30
* 0000a200  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 31
* 0000b200
Reported-by: Frank Sorenson <fsorenso@redhat.com> Signed-off-by: Lukas
Czerner <lczerner@redhat.com> Signed-off-by: Theodore Ts'o
<tytso@mit.edu> Fixes: e9e3bcecf44c ("ext4: serialize unaligned
asynchronous DIO") Cc: stable@vger.kernel.org Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/file.c (diff)
Commit c29313c07f2d956c4c6c34ce998beabeddc1f5ff by gregkh
ext4: brelse all indirect buffer in ext4_ind_remove_space()
commit 674a2b27234d1b7afcb0a9162e81b2e53aeef217 upstream.
All indirect buffers get by ext4_find_shared() should be released no
mater the branch should be freed or not. But now, we forget to release
the lower depth indirect buffers when removing space from the same
higher depth indirect block. It will lead to buffer leak and futher
more, it may lead to quota information corruption when using old quota,
consider the following case.
- Create and mount an empty ext4 filesystem without extent and quota
  features,
- quotacheck and enable the user & group quota,
- Create some files and write some data to them, and then punch hole
  to some files of them, it may trigger the buffer leak problem
  mentioned above.
- Disable quota and run quotacheck again, it will create two new
  aquota files and write the checked quota information to them, which
  probably may reuse the freed indirect block(the buffer and page
  cache was not freed) as data block.
- Enable quota again, it will invoke
  vfs_load_quota_inode()->invalidate_bdev() to try to clean unused
  buffers and pagecache. Unfortunately, because of the buffer of quota
  data block is still referenced, quota code cannot read the up to date
  quota info from the device and lead to quota information corruption.
This problem can be reproduced by xfstests generic/231 on ext3 file
system or ext4 file system without extent and quota features.
This patch fix this problem by releasing the missing indirect buffers,
in ext4_ind_remove_space().
Reported-by: Hulk Robot <hulkci@huawei.com> Signed-off-by: zhangyi (F)
<yi.zhang@huawei.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Reviewed-by: Jan Kara <jack@suse.cz> Cc: stable@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedfs/ext4/indirect.c (diff)
Commit c35a32eb2339531f0ecd502c397f9cc2b87c4c54 by gregkh
media: v4l2-ctrls.c/uvc: zero v4l2_event
commit f45f3f753b0a3d739acda8e311b4f744d82dc52a upstream.
Control events can leak kernel memory since they do not fully zero the
event. The same code is present in both v4l2-ctrls.c and uvc_ctrl.c, so
fix both.
It appears that all other event code is properly zeroing the structure,
it's these two places.
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Reported-by:
syzbot+4f021cf3697781dbd9fb@syzkaller.appspotmail.com Reviewed-by:
Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by:
Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/media/usb/uvc/uvc_ctrl.c (diff)
The file was modifieddrivers/media/v4l2-core/v4l2-ctrls.c (diff)
Commit 572ae5c7646b36b06d8431682ebfca66229b2ff4 by gregkh
Bluetooth: hci_uart: Check if socket buffer is ERR_PTR in h4_recv_buf()
commit 1dc2d785156cbdc80806c32e8d2c7c735d0b4721 upstream.
h4_recv_buf() callers store the return value to socket buffer and
recursively pass the buffer to h4_recv_buf() without protection. So,
ERR_PTR returned from h4_recv_buf() can be dereferenced, if called again
before setting the socket buffer to NULL from previous error. Check if
skb is ERR_PTR in h4_recv_buf().
Reported-by: syzbot+017a32f149406df32703@syzkaller.appspotmail.com
Signed-off-by: Myungho Jung <mhjungk@gmail.com> Signed-off-by: Marcel
Holtmann <marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/bluetooth/hci_h4.c (diff)
The file was modifieddrivers/bluetooth/h4_recv.h (diff)
Commit 4d18023ade55906b1e1f4983f59082f747499778 by gregkh
Bluetooth: Fix decrementing reference count twice in releasing socket
commit e20a2e9c42c9e4002d9e338d74e7819e88d77162 upstream.
When releasing socket, it is possible to enter hci_sock_release() and
hci_sock_dev_event(HCI_DEV_UNREG) at the same time in different thread.
The reference count of hdev should be decremented only once from one of
them but if storing hdev to local variable in hci_sock_release() before
detached from socket and setting to NULL in hci_sock_dev_event(),
hci_dev_put(hdev) is unexpectedly called twice. This is resolved by
referencing hdev from socket after bt_sock_unlink() in
hci_sock_release().
Reported-by: syzbot+fdc00003f4efff43bc5b@syzkaller.appspotmail.com
Signed-off-by: Myungho Jung <mhjungk@gmail.com> Signed-off-by: Marcel
Holtmann <marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/bluetooth/hci_sock.c (diff)
Commit c8d311117c3e45b55794ace66e098f6b622c356e by gregkh
Bluetooth: hci_ldisc: Initialize hci_dev before open()
commit 32a7b4cbe93b0a0ef7e63d31ca69ce54736c4412 upstream.
The hci_dev struct hdev is referenced in work queues and timers started
by open() in some protocols. This creates a race between the
initialization function and the work or timer which can result hdev
being dereferenced while it is still null.
The syzbot report contains a reliable reproducer which causes a null
pointer dereference of hdev in hci_uart_write_work() by making the
memory allocation for hdev fail.
To fix this, ensure hdev is valid from before calling a protocol's
open() until after calling a protocol's close().
Reported-by: syzbot+257790c15bcdef6fe00c@syzkaller.appspotmail.com
Signed-off-by: Jeremy Cline <jcline@redhat.com> Signed-off-by: Marcel
Holtmann <marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/bluetooth/hci_ldisc.c (diff)
Commit 35228ce61a8160199d1ea4ced956116bba686192 by gregkh
Bluetooth: hci_ldisc: Postpone HCI_UART_PROTO_READY bit set in
hci_uart_set_proto()
commit 56897b217a1d0a91c9920cb418d6b3fe922f590a upstream.
task A:                                task B: hci_uart_set_proto      
             flush_to_ldisc
- p->open(hu) -> h5_open  //alloc h5  - receive_buf
- set_bit HCI_UART_PROTO_READY         - tty_port_default_receive_buf
- hci_uart_register_dev                 - tty_ldisc_receive_buf
                                         - hci_uart_tty_receive
           - test_bit HCI_UART_PROTO_READY
            - h5_recv
- clear_bit HCI_UART_PROTO_READY             while() {
- p->open(hu) -> h5_close //free h5
              - h5_rx_3wire_hdr
               - h5_reset()  //use-after-free
                                             }
It could use ioctl to set hci uart proto, but there is a use-after-free
issue when hci_uart_register_dev() fail in hci_uart_set_proto(), see
stack above, fix this by setting HCI_UART_PROTO_READY bit only when
hci_uart_register_dev() return success.
Reported-by: syzbot+899a33dc0fa0dbaf06a6@syzkaller.appspotmail.com
Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com> Reviewed-by:
Jeremy Cline <jcline@redhat.com> Signed-off-by: Marcel Holtmann
<marcel@holtmann.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/bluetooth/hci_ldisc.c (diff)
Commit 244594c5f5c80c6505b4dd6a94bd1b847d24f38e by gregkh
drm/vkms: Fix flush_work() without INIT_WORK().
commit b30b61ff6b1dc37f276cf56a8328b80086a3ffca upstream.
syzbot is hitting a lockdep warning [1] because flush_work() is called
without INIT_WORK() after kzalloc() at vkms_atomic_crtc_reset().
Commit 6c234fe37c57627a ("drm/vkms: Implement CRC debugfs API") added
INIT_WORK() to only vkms_atomic_crtc_duplicate_state() side. Assuming
that lifecycle of crc_work is appropriately managed, fix this problem by
adding INIT_WORK() to vkms_atomic_crtc_reset() side.
[1]
https://syzkaller.appspot.com/bug?id=a5954455fcfa51c29ca2ab55b203076337e1c770
Reported-and-tested-by: syzbot
<syzbot+12f1b031b6da017e34f8@syzkaller.appspotmail.com> Signed-off-by:
Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> Reviewed-by: Shayenne
Moura <shayenneluzmoura@gmail.com> Signed-off-by: Daniel Vetter
<daniel.vetter@ffwll.ch> Link:
https://patchwork.freedesktop.org/patch/msgid/1547829823-9877-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/gpu/drm/vkms/vkms_crtc.c (diff)
Commit 648562c0a9583ec4927c7d5eba5259fe7785d314 by gregkh
RDMA/cma: Rollback source IP address if failing to acquire device
commit 5fc01fb846bce8fa6d5f95e2625b8ce0f8e86810 upstream.
If cma_acquire_dev_by_src_ip() returns error in addr_handler(), the
device state changes back to RDMA_CM_ADDR_BOUND but the resolved source
IP address is still left. After that, if rdma_destroy_id() is called
after rdma_listen(), the device is freed without removed from
listen_any_list in cma_cancel_operation(). Revert to the previous IP
address if acquiring device fails.
Reported-by: syzbot+f3ce716af730c8f96637@syzkaller.appspotmail.com
Signed-off-by: Myungho Jung <mhjungk@gmail.com> Reviewed-by: Parav
Pandit <parav@mellanox.com> Signed-off-by: Jason Gunthorpe
<jgg@mellanox.com> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifieddrivers/infiniband/core/cma.c (diff)
Commit 1c0fc5e9cb408b41ff7c5f3c1ed102c94ce98f50 by gregkh
f2fs: fix to avoid deadlock of atomic file operations
commit 48432984d718c95cf13e26d487c2d1b697c3c01f upstream.
Thread A Thread B
- __fput
- f2fs_release_file
- drop_inmem_pages
  - mutex_lock(&fi->inmem_lock)
  - __revoke_inmem_pages
   - lock_page(page)
- open
- f2fs_setattr
- truncate_setsize
- truncate_inode_pages_range
  - lock_page(page)
  - truncate_cleanup_page
   - f2fs_invalidate_page
    - drop_inmem_page
    - mutex_lock(&fi->inmem_lock);
We may encounter above ABBA deadlock as reported by Kyungtae Kim:
I'm reporting a bug in linux-4.17.19: "INFO: task hung in
drop_inmem_page" (no reproducer)
I think this might be somehow related to the following:
https://groups.google.com/forum/#!searchin/syzkaller-bugs/INFO$3A$20task$20hung$20in$20%7Csort:date/syzkaller-bugs/c6soBTrdaIo/AjAzPeIzCgAJ
========================================= INFO: task syz-executor7:10822
blocked for more than 120 seconds.
     Not tainted 4.17.19 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
message. syz-executor7   D27024 10822   6346 0x00000004 Call Trace:
context_switch kernel/sched/core.c:2867 [inline]
__schedule+0x721/0x1e60 kernel/sched/core.c:3515
schedule+0x88/0x1c0 kernel/sched/core.c:3559
schedule_preempt_disabled+0x18/0x30 kernel/sched/core.c:3617
__mutex_lock_common kernel/locking/mutex.c:833 [inline]
__mutex_lock+0x5bd/0x1410 kernel/locking/mutex.c:893
mutex_lock_nested+0x1b/0x20 kernel/locking/mutex.c:908
drop_inmem_page+0xcb/0x810 fs/f2fs/segment.c:327
f2fs_invalidate_page+0x337/0x5e0 fs/f2fs/data.c:2401
do_invalidatepage mm/truncate.c:165 [inline]
truncate_cleanup_page+0x261/0x330 mm/truncate.c:187
truncate_inode_pages_range+0x552/0x1610 mm/truncate.c:367
truncate_inode_pages mm/truncate.c:478 [inline]
truncate_pagecache+0x6d/0x90 mm/truncate.c:801
truncate_setsize+0x81/0xa0 mm/truncate.c:826
f2fs_setattr+0x44f/0x1270 fs/f2fs/file.c:781
notify_change+0xa62/0xe80 fs/attr.c:313
do_truncate+0x12e/0x1e0 fs/open.c:63
do_last fs/namei.c:2955 [inline]
path_openat+0x2042/0x29f0 fs/namei.c:3505
do_filp_open+0x1bd/0x2c0 fs/namei.c:3540
do_sys_open+0x35e/0x4e0 fs/open.c:1101
__do_sys_open fs/open.c:1119 [inline]
__se_sys_open fs/open.c:1114 [inline]
__x64_sys_open+0x89/0xc0 fs/open.c:1114
do_syscall_64+0xc4/0x4e0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x4497b9 RSP:
002b:00007f734e459c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000002 RAX:
ffffffffffffffda RBX: 00007f734e45a6cc RCX: 00000000004497b9 RDX:
0000000000000104 RSI: 00000000000a8280 RDI: 0000000020000080 RBP:
000000000071bea0 R08: 0000000000000000 R09: 0000000000000000 R10:
0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff R13:
0000000000007230 R14: 00000000006f02d0 R15: 00007f734e45a700 INFO: task
syz-executor7:10858 blocked for more than 120 seconds.
     Not tainted 4.17.19 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
message. syz-executor7   D28880 10858   6346 0x00000004 Call Trace:
context_switch kernel/sched/core.c:2867 [inline]
__schedule+0x721/0x1e60 kernel/sched/core.c:3515
schedule+0x88/0x1c0 kernel/sched/core.c:3559
__rwsem_down_write_failed_common kernel/locking/rwsem-xadd.c:565
[inline]
rwsem_down_write_failed+0x5e6/0xc90 kernel/locking/rwsem-xadd.c:594
call_rwsem_down_write_failed+0x17/0x30 arch/x86/lib/rwsem.S:117
__down_write arch/x86/include/asm/rwsem.h:142 [inline]
down_write+0x58/0xa0 kernel/locking/rwsem.c:72
inode_lock include/linux/fs.h:713 [inline]
do_truncate+0x120/0x1e0 fs/open.c:61
do_last fs/namei.c:2955 [inline]
path_openat+0x2042/0x29f0 fs/namei.c:3505
do_filp_open+0x1bd/0x2c0 fs/namei.c:3540
do_sys_open+0x35e/0x4e0 fs/open.c:1101
__do_sys_open fs/open.c:1119 [inline]
__se_sys_open fs/open.c:1114 [inline]
__x64_sys_open+0x89/0xc0 fs/open.c:1114
do_syscall_64+0xc4/0x4e0 arch/x86/entry/common.c:287
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x4497b9 RSP:
002b:00007f734e3b4c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000002 RAX:
ffffffffffffffda RBX: 00007f734e3b56cc RCX: 00000000004497b9 RDX:
0000000000000104 RSI: 00000000000a8280 RDI: 0000000020000080 RBP:
000000000071c238 R08: 0000000000000000 R09: 0000000000000000 R10:
0000000000000000 R11: 0000000000000246 R12: 00000000ffffffff R13:
0000000000007230 R14: 00000000006f02d0 R15: 00007f734e3b5700 INFO: task
syz-executor5:10829 blocked for more than 120 seconds.
     Not tainted 4.17.19 #1
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
message. syz-executor5   D28760 10829   6308 0x80000002 Call Trace:
context_switch kernel/sched/core.c:2867 [inline]
__schedule+0x721/0x1e60 kernel/sched/core.c:3515
schedule+0x88/0x1c0 kernel/sched/core.c:3559
io_schedule+0x21/0x80 kernel/sched/core.c:5179
wait_on_page_bit_common mm/filemap.c:1100 [inline]
__lock_page+0x2b5/0x390 mm/filemap.c:1273
lock_page include/linux/pagemap.h:483 [inline]
__revoke_inmem_pages+0xb35/0x11c0 fs/f2fs/segment.c:231
drop_inmem_pages+0xa3/0x3e0 fs/f2fs/segment.c:306
f2fs_release_file+0x2c7/0x330 fs/f2fs/file.c:1556
__fput+0x2c7/0x780 fs/file_table.c:209
____fput+0x1a/0x20 fs/file_table.c:243
task_work_run+0x151/0x1d0 kernel/task_work.c:113
exit_task_work include/linux/task_work.h:22 [inline]
do_exit+0x8ba/0x30a0 kernel/exit.c:865
do_group_exit+0x13b/0x3a0 kernel/exit.c:968
get_signal+0x6bb/0x1650 kernel/signal.c:2482
do_signal+0x84/0x1b70 arch/x86/kernel/signal.c:810
exit_to_usermode_loop+0x155/0x190 arch/x86/entry/common.c:162
prepare_exit_to_usermode arch/x86/entry/common.c:196 [inline]
syscall_return_slowpath arch/x86/entry/common.c:265 [inline]
do_syscall_64+0x445/0x4e0 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe RIP: 0033:0x4497b9 RSP:
002b:00007f1c68e74ce8 EFLAGS: 00000246 ORIG_RAX: 00000000000000ca RAX:
fffffffffffffe00 RBX: 000000000071bf80 RCX: 00000000004497b9 RDX:
0000000000000000 RSI: 0000000000000000 RDI: 000000000071bf80 RBP:
000000000071bf80 R08: 0000000000000000 R09: 000000000071bf58 R10:
0000000000000000 R11: 0000000000000246 R12: 0000000000000000 R13:
0000000000000000 R14: 00007f1c68e759c0 R15: 00007f1c68e75700
This patch tries to use trylock_page to mitigate such deadlock condition
for fix.
Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim
<jaegeuk@kernel.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiedfs/f2fs/segment.c (diff)
Commit a179695eddd9f94e89ede2cbbf2b27cf748d5070 by gregkh
aio: simplify - and fix - fget/fput for io_submit()
commit 84c4e1f89fefe70554da0ab33be72c9be7994379 upstream.
Al Viro root-caused a race where the IOCB_CMD_POLL handling of
fget/fput() could cause us to access the file pointer after it had
already been freed:
"In more details - normally IOCB_CMD_POLL handling looks so:
   1) io_submit(2) allocates aio_kiocb instance and passes it to
     aio_poll()
   2) aio_poll() resolves the descriptor to struct file by req->file =
     fget(iocb->aio_fildes)
   3) aio_poll() sets ->woken to false and raises ->ki_refcnt of that
     aio_kiocb to 2 (bumps by 1, that is).
   4) aio_poll() calls vfs_poll(). After sanity checks (basically,
     "poll_wait() had been called and only once") it locks the queue.
     That's what the extra reference to iocb had been for - we know we
     can safely access it.
   5) With queue locked, we check if ->woken has already been set to
     true (by aio_poll_wake()) and, if it had been, we unlock the
     queue, drop a reference to aio_kiocb and bugger off - at that
     point it's a responsibility to aio_poll_wake() and the stuff
     called/scheduled by it. That code will drop the reference to file
     in req->file, along with the other reference to our aio_kiocb.
   6) otherwise, we see whether we need to wait. If we do, we unlock the
     queue, drop one reference to aio_kiocb and go away - eventual
     wakeup (or cancel) will deal with the reference to file and with
     the other reference to aio_kiocb
   7) otherwise we remove ourselves from waitqueue (still under the
     queue lock), so that wakeup won't get us. No async activity will
     be happening, so we can safely drop req->file and iocb ourselves.
  If wakeup happens while we are in vfs_poll(), we are fine - aio_kiocb
won't get freed under us, so we can do all the checks and locking
safely. And we don't touch ->file if we detect that case.
  However, vfs_poll() most certainly *does* touch the file it had been
given. So wakeup coming while we are still in ->poll() might end up
doing fput() on that file. That case is not too rare, and usually we
are saved by the still present reference from descriptor table - that
fput() is not the final one.
  But if another thread closes that descriptor right after our fget()
and wakeup does happen before ->poll() returns, we are in trouble -
final fput() done while we are in the middle of a method:
Al also wrote a patch to take an extra reference to the file descriptor
to fix this, but I instead suggested we just streamline the whole file
pointer handling by submit_io() so that the generic aio submission code
simply keeps the file pointer around until the aio has completed.
Fixes: bfe4037e722e ("aio: implement IOCB_CMD_POLL") Acked-by: Al Viro
<viro@zeniv.linux.org.uk> Reported-by:
syzbot+503d4cc169fcec1cb18c@syzkaller.appspotmail.com Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedinclude/linux/fs.h (diff)
The file was modifiedfs/aio.c (diff)
Commit da75d37754011753db79d5d93fb9a2517446c3e6 by gregkh
netfilter: ebtables: remove BUGPRINT messages
commit d824548dae220820bdf69b2d1561b7c4b072783f upstream.
They are however frequently triggered by syzkaller, so remove them.
ebtables userspace should never trigger any of these, so there is little
value in making them pr_debug (or ratelimited).
Signed-off-by: Florian Westphal <fw@strlen.de> Signed-off-by: Pablo
Neira Ayuso <pablo@netfilter.org> Signed-off-by: Greg Kroah-Hartman
<gregkh@linuxfoundation.org>
The file was modifiednet/bridge/netfilter/ebtables.c (diff)
Commit 1e641e63fe0c969ae21f46d739bc5b181911f1ba by gregkh
loop: access lo_backing_file only when the loop device is Lo_bound
commit f7c8a4120eedf24c36090b7542b179ff7a649219 upstream.
Commit 758a58d0bc67 ("loop: set GENHD_FL_NO_PART_SCAN after
blkdev_reread_part()") separates "lo->lo_backing_file = NULL" and
"lo->lo_state = Lo_unbound" into different critical regions protected by
loop_ctl_mutex.
However, there is below race that the NULL lo->lo_backing_file would be
accessed when the backend of a loop is another loop device, e.g.,
loop0's backend is a file, while loop1's backend is loop0.
loop0's backend is file            loop1's backend is loop0
__loop_clr_fd()
mutex_lock(&loop_ctl_mutex);
lo->lo_backing_file = NULL; --> set to NULL
mutex_unlock(&loop_ctl_mutex);
                                  loop_set_fd()
                                  
mutex_lock_killable(&loop_ctl_mutex);
                                    loop_validate_file()
                                      f = l->lo_backing_file; --> NULL
                                        access if loop0 is not
Lo_unbound
mutex_lock(&loop_ctl_mutex);
lo->lo_state = Lo_unbound;
mutex_unlock(&loop_ctl_mutex);
lo->lo_backing_file should be accessed only when the loop device is
Lo_bound.
In fact, the problem has been introduced already in commit 7ccd0791d985
("loop: Push loop_ctl_mutex down into loop_clr_fd()") after which
loop_validate_file() could see devices in Lo_rundown state with which it
did not count. It was harmless at that point but still.
Fixes: 7ccd0791d985 ("loop: Push loop_ctl_mutex down into
loop_clr_fd()") Reported-by:
syzbot+9bdc1adc1c55e7fe765b@syzkaller.appspotmail.com Signed-off-by:
Dongli Zhang <dongli.zhang@oracle.com> Reviewed-by: Jan Kara
<jack@suse.cz> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifieddrivers/block/loop.c (diff)
Commit 0312f3032e35670043fd14f5773f450ae13bd09c by gregkh
x86/unwind: Handle NULL pointer calls better in frame unwinder
commit f4f34e1b82eb4219d8eaa1c7e2e17ca219a6a2b5 upstream.
When the frame unwinder is invoked for an oops caused by a call to NULL,
it currently skips the parent function because BP still points to the
parent's stack frame; the (nonexistent) current function only has the
first half of a stack frame, and BP doesn't point to it yet.
Add a special case for IP==0 that calculates a fake BP from SP, then
uses the real BP for the next frame.
Note that this handles first_frame specially: Return information about
the parent function as long as the saved IP is >=first_frame, even if
the fake BP points below it.
With an artificially-added NULL call in prctl_set_seccomp(), before this
patch, the trace is:
Call Trace:
? prctl_set_seccomp+0x3a/0x50
__x64_sys_prctl+0x457/0x6f0
? __ia32_sys_prctl+0x750/0x750
do_syscall_64+0x72/0x160
entry_SYSCALL_64_after_hwframe+0x44/0xa9
After this patch, the trace is:
Call Trace:
prctl_set_seccomp+0x3a/0x50
__x64_sys_prctl+0x457/0x6f0
? __ia32_sys_prctl+0x750/0x750
do_syscall_64+0x72/0x160
entry_SYSCALL_64_after_hwframe+0x44/0xa9
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Acked-by: Josh Poimboeuf
<jpoimboe@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Andrew
Morton <akpm@linux-foundation.org> Cc: syzbot
<syzbot+ca95b2b7aef9e7cbd6ab@syzkaller.appspotmail.com> Cc: "H. Peter
Anvin" <hpa@zytor.com> Cc: Masahiro Yamada
<yamada.masahiro@socionext.com> Cc: Michal Marek
<michal.lkml@markovi.net> Cc: linux-kbuild@vger.kernel.org Link:
https://lkml.kernel.org/r/20190301031201.7416-1-jannh@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/unwind_frame.c (diff)
The file was modifiedarch/x86/include/asm/unwind.h (diff)
Commit 0830cf62f5290b2f878faacc2b6f32e77bc2ea12 by gregkh
x86/unwind: Add hardcoded ORC entry for NULL
commit ac5ceccce5501e43d217c596e4ee859f2a3fef79 upstream.
When the ORC unwinder is invoked for an oops caused by IP==0, it
currently has no idea what to do because there is no debug information
for the stack frame of NULL.
But if RIP is NULL, it is very likely that the last successfully
executed instruction was an indirect CALL/JMP, and it is possible to
unwind out in the same way as for the first instruction of a normal
function. Hardcode a corresponding ORC entry.
With an artificially-added NULL call in prctl_set_seccomp(), before this
patch, the trace is:
Call Trace:
? __x64_sys_prctl+0x402/0x680
? __ia32_sys_prctl+0x6e0/0x6e0
? __do_page_fault+0x457/0x620
? do_syscall_64+0x6d/0x160
? entry_SYSCALL_64_after_hwframe+0x44/0xa9
After this patch, the trace looks like this:
Call Trace:
__x64_sys_prctl+0x402/0x680
? __ia32_sys_prctl+0x6e0/0x6e0
? __do_page_fault+0x457/0x620
do_syscall_64+0x6d/0x160
entry_SYSCALL_64_after_hwframe+0x44/0xa9
prctl_set_seccomp() still doesn't show up in the trace because for some
reason, tail call optimization is only disabled in builds that use the
frame pointer unwinder.
Signed-off-by: Jann Horn <jannh@google.com> Signed-off-by: Thomas
Gleixner <tglx@linutronix.de> Acked-by: Josh Poimboeuf
<jpoimboe@redhat.com> Cc: Borislav Petkov <bp@alien8.de> Cc: Andrew
Morton <akpm@linux-foundation.org> Cc: syzbot
<syzbot+ca95b2b7aef9e7cbd6ab@syzkaller.appspotmail.com> Cc: "H. Peter
Anvin" <hpa@zytor.com> Cc: Masahiro Yamada
<yamada.masahiro@socionext.com> Cc: Michal Marek
<michal.lkml@markovi.net> Cc: linux-kbuild@vger.kernel.org Link:
https://lkml.kernel.org/r/20190301031201.7416-2-jannh@google.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedarch/x86/kernel/unwind_orc.c (diff)
Commit 8bc3816d65668a4ce2b7347fdecc95bebdce6ff6 by gregkh
locking/lockdep: Add debug_locks check in __lock_downgrade()
commit 71492580571467fb7177aade19c18ce7486267f5 upstream.
Tetsuo Handa had reported he saw an incorrect "downgrading a read lock"
warning right after a previous lockdep warning. It is likely that the
previous warning turned off lock debugging causing the lockdep to have
inconsistency states leading to the lock downgrade warning.
Fix that by add a check for debug_locks at the beginning of
__lock_downgrade().
Debugged-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Reported-by: Tetsuo Handa <penguin-kernel@i-love.sakura.ne.jp>
Reported-by: syzbot+53383ae265fb161ef488@syzkaller.appspotmail.com
Signed-off-by: Waiman Long <longman@redhat.com> Signed-off-by: Peter
Zijlstra (Intel) <peterz@infradead.org> Cc: Andrew Morton
<akpm@linux-foundation.org> Cc: Linus Torvalds
<torvalds@linux-foundation.org> Cc: Paul E. McKenney
<paulmck@linux.vnet.ibm.com> Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Will Deacon
<will.deacon@arm.com> Link:
https://lkml.kernel.org/r/1547093005-26085-1-git-send-email-longman@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedkernel/locking/lockdep.c (diff)
Commit 6c77789fb46e9ef076fb688383fcc6766e44d288 by gregkh
ALSA: hda - Record the current power state before suspend/resume calls
commit 98081ca62cbac31fb0f7efaf90b2e7384ce22257 upstream.
Currently we deal with single codec and suspend codec callbacks for all
S3, S4 and runtime PM handling.  But it turned out that we want
distinguish the call patterns sometimes, e.g. for applying some init
sequence only at probing and restoring from hibernate.
This patch slightly modifies the common PM callbacks for HD-audio codec
and stores the currently processed PM event in power_state of the
codec's device.power field, which is currently unused.  The codec
callback can take a look at this event value and judges which purpose
it's being called.
Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/hda_codec.c (diff)
Commit a57af6d07512716b78f1a32d9426bcdf6aafc50c by gregkh
ALSA: hda - Enforces runtime_resume after S3 and S4 for each codec
commit b5a236c175b0d984552a5f7c9d35141024c2b261 upstream.
Recently we found the audio jack detection stop working after suspend on
many machines with Realtek codec. Sometimes the audio selection dialogue
didn't show up after users plugged headhphone/headset into the headset
jack, sometimes after uses plugged headphone/headset, then click the
sound icon on the upper-right corner of gnome-desktop, it also showed
the speaker rather than the headphone.
The root cause is that before suspend, the codec already call the
runtime_suspend since this codec is not used by any apps, then in
resume, it will not call runtime_resume for this codec. But for some
realtek codec (so far, alc236, alc255 and alc891) with the specific
BIOS, if it doesn't run runtime_resume after suspend, all codec
functions including jack detection stop working anymore.
This problem existed for a long time, but it was not exposed, that is
because when problem happens, if users play sound or open sound-setting
to check audio device, this will trigger calling to runtime_resume (via
snd_hda_power_up), then the codec starts working again before users
notice this problem.
Since we don't know how many codec and BIOS combinations have this
problem, to fix it, let the driver call runtime_resume for all codecs in
pm_resume, maybe for some codecs, this is not needed, but it is
harmless. After a codec is runtime resumed, if it is not used by any
apps, it will be runtime suspended soon and furthermore we don't run
suspend frequently, this change will not add much power consumption.
Fixes: cc72da7d4d06 ("ALSA: hda - Use standard runtime PM for codec
power-save control") Signed-off-by: Hui Wang <hui.wang@canonical.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Greg
Kroah-Hartman <gregkh@linuxfoundation.org>
The file was modifiedsound/pci/hda/hda_codec.c (diff)
The file was modifiedMakefile (diff)
Commit a32b4ad625cdfb2bdf031ed4a2c4c7bb35e25c7a 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/tools/linuxsrv.h
The file was addeddrivers/gpu/pvr/tools/hostfunc.h
The file was addeddrivers/gpu/pvr/img_defs.h
The file was addeddrivers/gpu/pvr/sgxinfokm.h
The file was addeddrivers/gpu/pvr/mmap.c
The file was addeddrivers/gpu/pvr/tools/hostfunc.c
The file was addeddrivers/gpu/pvr/pvr_bridge_km.h
The file was addeddrivers/gpu/pvr/pvr_bridge.h
The file was addeddrivers/gpu/pvr/private_data.h
The file was addeddrivers/gpu/pvr/Kconfig
The file was addeddrivers/gpu/pvr/lock.h
The file was addeddrivers/gpu/pvr/handle.h
The file was addeddrivers/gpu/pvr/sgxtransfer.c
The file was addeddrivers/gpu/pvr/bufferclass_example.h
The file was addeddrivers/gpu/pvr/srvkm.h
The file was addeddrivers/gpu/pvr/sgxcoretypes.h
The file was addeddrivers/gpu/pvr/mmu.h
The file was addedinclude/video/sgx-util.h
The file was addeddrivers/gpu/pvr/buffer_manager.c
The file was addeddrivers/gpu/pvr/perproc.c
The file was addeddrivers/gpu/pvr/pvrmmap.h
The file was addeddrivers/gpu/pvr/sgxreset.c
The file was addeddrivers/gpu/pvr/pdump_common.c
The file was addeddrivers/gpu/pvr/ocpdefs.h
The file was addeddrivers/gpu/pvr/services_headers.h
The file was addeddrivers/gpu/pvr/sysutils.c
The file was addeddrivers/gpu/pvr/proc.h
The file was addeddrivers/gpu/pvr/mm.c
The file was addeddrivers/gpu/pvr/sgxkick.c
The file was addeddrivers/gpu/pvr/ra.c
The file was addeddrivers/gpu/pvr/omaplfb_linux.c
The file was addeddrivers/gpu/pvr/services.h
The file was addeddrivers/gpu/pvr/sgxinit.c
The file was addeddrivers/gpu/pvr/tools/dbgdriv.c
The file was addeddrivers/gpu/pvr/queue.h
The file was addeddrivers/gpu/pvr/servicesint.h
The file was addeddrivers/gpu/pvr/syslocal.h
The file was addeddrivers/gpu/pvr/sgxfeaturedefs.h
The file was addeddrivers/gpu/pvr/sgxinfo.h
The file was addeddrivers/gpu/pvr/bridged_sgx_bridge.h
The file was addeddrivers/gpu/pvr/COPYING
The file was addeddrivers/gpu/pvr/resman.c
The file was addeddrivers/gpu/pvr/tools/hotkey.c
The file was addeddrivers/gpu/pvr/pvrsrv.c
The file was addeddrivers/gpu/pvr/event.c
The file was addeddrivers/gpu/pvr/tools/dbgdriv.h
The file was addeddrivers/gpu/pvr/pvr_debug.h
The file was addeddrivers/gpu/pvr/sgxscript.h
The file was addeddrivers/gpu/pvr/tools/main.c
The file was addeddrivers/gpu/pvr/dbgdrvif.h
The file was addeddrivers/gpu/pvr/ioctldef.h
The file was addeddrivers/gpu/pvr/servicesext.h
The file was modifieddrivers/gpu/Makefile (diff)
The file was addeddrivers/gpu/pvr/pvr_bridge_k.c
The file was addeddrivers/gpu/pvr/kerneldisplay.h
The file was addeddrivers/gpu/pvr/ra.h
The file was addeddrivers/gpu/pvr/omaplfb.h
The file was addeddrivers/gpu/pvr/sgxpower.c
The file was addeddrivers/gpu/pvr/bufferclass_example_linux.h
The file was addeddrivers/gpu/pvr/pvrversion.h
The file was addeddrivers/gpu/pvr/sysconfig.h
The file was addeddrivers/gpu/pvr/osfunc.c
The file was addeddrivers/gpu/pvr/sgxmmu.h
The file was addeddrivers/gpu/pvr/mem.c
The file was addeddrivers/gpu/pvr/sgx_options.h
The file was addeddrivers/gpu/pvr/device.h
The file was addeddrivers/gpu/pvr/bufferclass_example.c
The file was addeddrivers/gpu/pvr/mutils.h
The file was addeddrivers/gpu/pvr/devicemem.c
The file was addeddrivers/gpu/pvr/Makefile
The file was modifieddrivers/video/Kconfig (diff)
The file was addeddrivers/gpu/pvr/sysinfo.h
The file was addeddrivers/gpu/pvr/pvr_debug.c
The file was addeddrivers/gpu/pvr/mm.h
The file was addeddrivers/gpu/pvr/pdumpdefs.h
The file was addeddrivers/gpu/pvr/bridged_support.h
The file was addeddrivers/gpu/pvr/pb.c
The file was addeddrivers/gpu/pvr/sgxconfig.h
The file was addeddrivers/gpu/pvr/power.c
The file was addeddrivers/gpu/pvr/mutex.h
The file was addeddrivers/gpu/pvr/sgxerrata.h
The file was addeddrivers/gpu/pvr/bridged_sgx_bridge.c
The file was addeddrivers/gpu/pvr/bridged_pvr_bridge.h
The file was addeddrivers/gpu/pvr/bufferclass_example_linux.c
The file was addeddrivers/gpu/pvr/proc.c
The file was addeddrivers/gpu/pvr/omaplfb_displayclass.c
The file was addeddrivers/gpu/pvr/tools/ioctl.c
The file was addeddrivers/gpu/pvr/sgxutils.c
The file was addeddrivers/gpu/pvr/sgx530defs.h
The file was addeddrivers/gpu/pvr/pdump_km.h
The file was addeddrivers/gpu/pvr/hash.c
The file was addeddrivers/gpu/pvr/oemfuncs.h
The file was addeddrivers/gpu/pvr/pvrmodule.h
The file was addeddrivers/gpu/pvr/bridged_pvr_bridge.c
The file was addeddrivers/gpu/pvr/sysconfig.c
The file was addeddrivers/gpu/pvr/kernelbuffer.h
The file was addeddrivers/gpu/pvr/hash.h
The file was addeddrivers/gpu/pvr/queue.c
The file was addeddrivers/gpu/pvr/sgxutils.h
The file was addeddrivers/gpu/pvr/sgxapi_km.h
The file was addeddrivers/gpu/pvr/bufferclass_example_private.h
The file was addeddrivers/gpu/pvr/osfunc.h
The file was addeddrivers/gpu/pvr/README
The file was addeddrivers/gpu/pvr/deviceclass.c
The file was addeddrivers/gpu/pvr/mmap.h
The file was addeddrivers/gpu/pvr/bufferclass_example_private.c
The file was addeddrivers/gpu/pvr/mmu.c
The file was addeddrivers/gpu/pvr/module.c
The file was addeddrivers/gpu/pvr/tools/Makefile
The file was addeddrivers/gpu/pvr/bridged_support.c
The file was addeddrivers/gpu/pvr/perproc.h
The file was addeddrivers/gpu/pvr/pvrconfig.h
The file was addeddrivers/gpu/pvr/resman.h
The file was addeddrivers/gpu/pvr/env_data.h
The file was addeddrivers/gpu/pvr/tools/ioctl.h
The file was addeddrivers/gpu/pvr/sgxdefs.h
The file was addeddrivers/gpu/pvr/buffer_manager.h
The file was addeddrivers/gpu/pvr/sgx_bridge.h
The file was addeddrivers/gpu/pvr/pdump.c
The file was addeddrivers/gpu/pvr/handle.c
The file was addeddrivers/gpu/pvr/osperproc.h
The file was addeddrivers/gpu/pvr/power.h
The file was addeddrivers/gpu/pvr/event.h
The file was addeddrivers/gpu/pvr/osperproc.c
The file was addeddrivers/gpu/pvr/sgx_bridge_km.h
The file was addeddrivers/gpu/pvr/syscommon.h
The file was addeddrivers/gpu/pvr/env_perproc.h
The file was addeddrivers/gpu/pvr/img_types.h
The file was addeddrivers/gpu/pvr/tools/hotkey.h
Commit 8cc8c90580aa2b3d903fb963bb7c09bca9af3bf2 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/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/resman.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/mm.c (diff)
Commit 540496a204d170c2f806b65e618ec3e6560be7f5 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 cfaa9a6bd8fefd582c6eaa3995240357d5521a67 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 addedinclude/linux/pvr.h
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
The file was modifieddrivers/gpu/pvr/syslocal.h (diff)
Commit 8e282bd28b5657ba7e4204311e499f0b7ee467c3 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 removeddrivers/gpu/pvr/lock.h
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/event.c (diff)
The file was removeddrivers/gpu/pvr/mutex.h
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/mm.c (diff)
Commit 343d348e49df18d08e98803056ef2f2c2b57eb55 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 22d81857f0c3eaf8a613cfc0cbc2af481173c256 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/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 716c1ee72e38442743649c247c951a5f4b7f3425 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 1c85479378d032e85efa5299a0a5e2ee2794fc99 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 3c79972718bb6701924c6c2acb2661e04070b11f 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 1169bcb134dd7561e263f8d2b905479b30c30432 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 24daa42308329f931415e35ba693895fbf4da241 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 c3a233d1478e0d02d643c091151324c64fadd7f8 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 ed2a2f3c17504a10a015b8e8c4f9e049002f9c82 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/buffer_manager.h (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.h (diff)
Commit 1e15b7353b4e48bb52947791cfd28d4cb382b267 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 e6bc9777ad1e3dc7177d4654be41ef6bcee7016b 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 c3c5996d9fe115cbea3be7b58cf11fb179278cd2 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 715d7fd962229439237c7b7a162b2f39f78f1c90 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/resman.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (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/Kconfig (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/syslocal.h (diff)
The file was modifieddrivers/gpu/pvr/handle.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/ra.c (diff)
The file was modifieddrivers/gpu/pvr/omaplfb.h (diff)
The file was modifieddrivers/gpu/pvr/bufferclass_example_linux.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/sgx_options.h (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/pvrconfig.h (diff)
The file was modifieddrivers/gpu/pvr/mm.h (diff)
The file was modifieddrivers/gpu/pvr/proc.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 0e23bcb91fb4cf3a5c4b60c4d1e875f4f1bcbef6 by Arthur D.
gpu: pvr: enable debug trace for basic debug build
Enable debug messages for basic debug type builds.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/resman.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/handle.c (diff)
Commit 9fc065ca6f18db3bc8f7fd94faedfe404a3070a2 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 348601ae7cc30eabd2e2eb7d36e6a0c089f4a761 by Arthur D.
gpu: pvr: fix locking on the DVFS path
The HW state is protected by pvr_lock(), so acquire it for the duration
of clock rate changes. We can also remove PVRSRVDvfsLock() that thus
becomes unneded.
Signed-off-by: Imre Deak <imre.deak@nokia.com> CC: Mark Underwood
<mark.underwood@imgtec.com> CC: Mark Riding <mark.riding@imgtec.com>
Reviewed-by: Topi Pohjolainen <topi.pohjolainen@nokia.com> Reviewed-by:
Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
The file was modifieddrivers/gpu/pvr/power.h (diff)
Commit e0b633661d25944f302e678a6188b04885c8f242 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/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/power.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/power.c (diff)
Commit 50ad911cc4597e300ff64ebb01b72913a29745ff 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/syscommon.h (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit 77372747695af1b231b57b0c5661288dad163e54 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/osfunc.h (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
The file was modifieddrivers/gpu/pvr/queue.c (diff)
Commit f7bc0be7cd8a510f745ed583bd91081f3b0b1281 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/power.h (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.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/sgxinit.c (diff)
Commit 4853ba7b6f44a44d6f31f1569cd5264be35dbe30 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/queue.h (diff)
The file was modifieddrivers/gpu/pvr/deviceclass.c (diff)
The file was modifieddrivers/gpu/pvr/queue.c (diff)
Commit fb2e33b46aa7bea36491d90ca25f544de79bfe0b 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 fde406341ee817315effd8165f4f7a1751c1e36d 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/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 72322ad6ae103c810ed370dbe1a6901b5cd468ea 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 e63895cdd5c7d76f30eb91c02ce2ca4c31de4dad 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 03f5f1e52477c1f40ff5ceee5e59e91867c3085b 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 7e9e62c6f7510849685cab0883301b11cb71ef20 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 0a4ed9ff661f64cdcd020515ba7ba40b62dd50da 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 73e6d9f44933195b31205a0fdbd8ff81cebd4f64 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
Commit 49249fed8112141301b8fab2438fb997336777f3 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/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit c5a6a27a694f85c6602f84323320efe076baa171 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 975ceffc0791e30af940da57c85b9c443e6ab4ca 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 fa6f029ae37210c6398f7e578d427565dfcb4407 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 e9c3d10cda4aef113e430a30b7aae14afd4f4018 by Arthur D.
gpu: pvr: replace boolean by flags in blits complete query
In preparation for adding third mode of query. In DRM one has a specific
IOCTL for requesting the DRM kernel driver to issue events when a
particular vertical blanking period passes. Here one aims to introduce
similar IOCTL for requesting PVR kernel driver to issue events whenever
a particular frame gets rendered in full. And instead of introducing
entirely new IOCTL, one instead aims to extend an existing call with a
new mode. This is accomplished by replacing the boolean selector with an
integer.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
Commit 229300767aaff0bca2116eabb3ee54e662563e12 by Arthur D.
gpu: pvr: support for events
In DRM vertical blank event style, introduce support for the driver to
issue and for the userspace to read events. Driver file node is extended
with a list holding unread events and with a wait queue representing
processes interested receiving events.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was addeddrivers/gpu/pvr/pvr_events.h
The file was addeddrivers/gpu/pvr/pvr_events.c
The file was modifieddrivers/gpu/pvr/private_data.h (diff)
Commit 12adab6666f30f5a110db19eea1008d45bc9f2a3 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 461d548ef9c403888da908a7e4a754bfb360b1ef 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 0a76d4b5267b1a25277e7ca78cf13ab743cd2319 by Arthur D.
gpu: pvr: enable render complete events
In DRM style events are associated with the driver private part of the
driver file descriptor. In order for the poll and read methods to access
the event list one needs to pass the file private through the IOCTL
stack.
Signed-off-by: Topi Pohjolainen <topi.pohjolainen@nokia.com>
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.h (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/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit 497684978bf0cae484eb46f62ed1ef73c28a869d 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 e20829e3dab999a21aea287771fb271222219613 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 72e805439ea8974bad709adbcf8bc2ceb1461518 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_k.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
Commit 7dd0cd51fda856ccd5158db41ee31c76ba782395 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 6cbccc37fe74afa70c1c7510a132f1a6504f16bf 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 ec0cd269d33ee0995edb34a6948f28f8207c71ac 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/module.c (diff)
The file was modifieddrivers/gpu/pvr/event.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/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 0e83264f308450ec0f7df3e92f896d3d7532887f 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/devicemem.c (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/device.h (diff)
Commit 25cae31e5b84821cee0ef3505eda31c375a8fb5e 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 a00ebfe684e9b17a2a708a1142cc2d4a192d7b9b 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/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
Commit 2f5035f5f6b3aff7ec4930b0fbc95fe6a03e6d0d 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 0f2b5dd09f853bb464206f01e72682f05aafd341 by Arthur D.
gpu: pvr: Use DSS notifier to signal flip complete events
Utilize to the DSS GO notifier to get callbacks when the flip has
completed.
Signed-off-by: Ville Syrjälä <ville.syrjala@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_events.h (diff)
Commit 8b37b8841a0c014d110265e02771d28a81604b05 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 1d31ca71fe8f427550dbeb792a00939665203f25 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 717fcc2a90443cfa23a0b976ab9ccefbe05f1f87 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/sgxutils.c (diff)
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/pvr_bridge_k.c (diff)
Commit 0859201341032de206bc318d494c434846940071 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/sysutils.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/sgxinit.c (diff)
Commit 4cb9a1559b691c1a2f9ba8774e6c17d454b30c23 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 464001669c4ff5e01c62122f9d35717cd354cfbc 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 df139a3a614ff084d00bcb4fd035d7d84290484c 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 f5d1621e435d698ad819d1a2b2be02c93a6d5137 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 32fa5ba16b948db2509d84a4c569b64a06616b02 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 909e3129346d66b8c486ea39c8fbcc73342cd5e2 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 aa9735e20587cd0db2a785cb80b8d929d4038b57 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 8f769c6dcedfdece335ded7058903184e447043a 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 da762e2d68422b9ce30e3cd2bd8d8a3387c9059e 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 329191a9773a7a8eed639ed52df0891ff7fa2a12 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 a9d3f075dd15ff352882ef0310a9b6e4a96abc94 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 8cd28da80348ec9f6a5a478c96cf0da8969cdc7c 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 8a2c1f60ed76b6cdcc7bea4e0d6654107ea96ac5 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 61c70c13d473f4837dfce9bbf99a5ba7620fe999 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 622d736ad952c331b2b7e2d5dbe985bcac045c15 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 7e38219cc86c96aad52e63da86863cc410628a53 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 9bc2e356d22019e5f3b26b0b779630d129ef9c1d 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 72bd526c80005f0826acc234316112572f63bfd0 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 425c365276ba0f3b598353afce080076d79e6819 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_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit a098a91b33912089a16c378a76255f5482878114 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/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxapi_km.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfo.h (diff)
Commit 2d86e0ad009cc025d2262265cd817db4e66e3f98 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 4bac46f6298f9db956b011d8f8dc7012fb363d2f 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 9b39a61380818f3a32586cd7b43d53a3c47a9931 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 979cd3df64338ca82ca219947b55d9e9fe0b5455 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 dc03a4f82a0fe169cf768e2bccf275286a0eef3e by Arthur D.
gpu: pvr: split out setting power down delay into its own function
This will be needed by an upcoming patch setting the power-down delay
dynamically.
No functional change.
Signed-off-by: Imre Deak <imre.deak@nokia.com> Reviewed-by: Luc
Verhaegen <Luc.Verhaegen@basyskom.de>
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
Commit dce8a478b2c1c96d0fd1e1ba55e8d610659ac568 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 cb2155c9fd3e48f9109a563617487cb6615056e2 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/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
Commit de68ae0688259f269b75e1ce9b17871783cbca84 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/sgxpower.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/sgxtransfer.c (diff)
Commit d4035f5deeca89f65ed0a711e8ddd9e0426cfa61 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 57e92b33a511b4ed8da58a2113ce8b7def75d11a 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 0bb29b2f61dbb424dd16ebdab690772d8625dd5d by Arthur D.
gpu: pvr: remove build time ABI dependency on the EDM trace option
So that we can build user / kernel space independently on the EDM
tracing option being configured or not.
Signed-off-by: Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/sgx_options.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfo.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
Commit 29982e199531c054dfbbff2ad0ecd059eda4b646 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/perproc.h (diff)
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/bridged_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit fa7dc920a8e45eb8100f660e974eb188b8570d0c 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 b320ab2035a7bab85440ac9bc39e327f0fc67fbd 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 b097e760f22fd78117138a5dd3bf53935cb1f86e 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 876fd7a19537cd12cb73ec0cef7ce7b26d17b36d 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/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
Commit 7c1aabde70a561108a07eb9d8411be36b63f6d1e 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
Commit bcab34b8234f19ebb0bf2ed8b2ceffcfdfeb28cf 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 48afe800b1c6ec5972d3e745b6702590e2479001 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 3ae0f198f38bdc03d9812709270253a0c3f1d49d 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/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (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_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.h (diff)
Commit 510f68bac3f2b2106a758364be66ca4a15b9b977 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/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxapi_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfo.h (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
Commit 8cdf37943e1f3ec873ab01a983bbde55ddc94e73 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 db73536ac3b2ead9978f52da3750f8466d55ca45 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/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinfo.h (diff)
The file was modifieddrivers/gpu/pvr/sgxapi_km.h (diff)
Commit 2ab1abc76d430c1eb68f50ed6aeb59ee7885763b 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 1ce58cc2a771fd653aa7aec3db3e3ef17c8dc7de 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/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 408529a79d28a02743626eb0b37b0979ad97ada4 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 037da744fe9173ba43a90f64c522b56b0b091897 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.c
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
The file was addeddrivers/gpu/pvr/pvr_debugfs.h
Commit b2fcc9b7b6c527fdbeb5ee15d03fb9a73fa607c0 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 232d7611a639cba93ca471971fa1029ddf9c4e10 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/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
Commit 0a86343abfb2ac3a0e9135aad519c0ca32469744 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/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.h (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
Commit 66fe3344656c7e246c05d2c33689d334e4865775 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/sgxinfokm.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit fc62c601786dd80fe71030df7d53e2f7959de4b8 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
The file was modifieddrivers/gpu/pvr/sgxinfokm.h (diff)
Commit 0c4748bfed24e51f132b3ba28d4bde3425b0635d 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/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/syscommon.h (diff)
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
Commit f2ea240eb86cc5ee0fa09c5dad0d11356b8e5627 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/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
Commit 88559eae200421ec4d789418b756fb5e3d551008 by Arthur D.
gpu: pvr: pdump: remove unused bridge calls
Userspace never calls _PDUMP_DRIVERINFO, _PDUMP_DUMPREADREG,
_PDUMP_STARTINITPHASE, or _PDUMP_STOPINITPHASE. So remove the respective
handlers and the pdump code.
No functional change.
Signed-off-by: Luc Verhaegen <Luc.Verhaegen@basyskom.de> Signed-off-by:
Imre Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
Commit 19782277441e294fd5d8b265d377fcc8c09c0a9c 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.c (diff)
The file was modifieddrivers/gpu/pvr/dbgdrvif.h (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
Commit dbbe2030ab7a0f59818be6e689ee2494d5136beb 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/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
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/sgxpower.c (diff)
Commit 4680be5f5041bc0af933f51e628d211f831683dd 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 b52712037c4943125deb135a2b0f62edc66f39a2 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/linuxsrv.h
The file was removeddrivers/gpu/pvr/tools/dbgdriv.h
The file was removeddrivers/gpu/pvr/tools/Makefile
The file was modifieddrivers/gpu/pvr/Makefile (diff)
The file was removeddrivers/gpu/pvr/ioctldef.h
The file was removeddrivers/gpu/pvr/tools/hostfunc.h
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
The file was removeddrivers/gpu/pvr/tools/ioctl.h
The file was modifieddrivers/gpu/pvr/pvrconfig.h (diff)
The file was removeddrivers/gpu/pvr/dbgdrvif.h
The file was removeddrivers/gpu/pvr/tools/main.c
The file was removeddrivers/gpu/pvr/tools/hostfunc.c
The file was removeddrivers/gpu/pvr/tools/dbgdriv.c
The file was removeddrivers/gpu/pvr/tools/ioctl.c
The file was removeddrivers/gpu/pvr/tools/hotkey.h
The file was removeddrivers/gpu/pvr/tools/hotkey.c
Commit ac3e194d97f77fad9c4789870cd3b81c5041fedf 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 7969380c194667596cc19c1a67dcf2f1f4ef39bb 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 3f47b3f6b2e1e320d75549c8b5e1676359fd13f0 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 6ecf7181c3257b1db1c4617c7d6149dd96082159 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_common.c (diff)
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)
Commit 02d374394006c73e780ade8d5b8a90a801986e2e 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 64e1db7a05a57ca2caca0142cafbf83cab3f896b 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 a0adbd99d2ba5d55e2df1b72399d79b947073bf7 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 1ffe6275b23eaedd4c100b68a65e4b61e46082ec 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 f3f236aa70b503d833da2b38012e5e0f4506af29 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_km.h (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
Commit 4acfd4d66e07a7ac74b757240da87d03b393aa86 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 9e6aef9ba425ba1a19a9bf760ff9b0e47fb4634c 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/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
Commit a1bcc30521951868186349665f0ecc0eb3dcc1e8 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 8ce19f0df451e2b08a512c7c6185971fe7a49f1f by Arthur D.
gpu: pvr: pdump: rewrite PDumpMemUM()
Now that we have cleared up the streams, we can delay the
copy_from_user() until copying into the streams. This makes PDumpMemUM
highly similar to PDumpMemKM.
So, split out the printing part from PDumpMemKM, and handle parameter
stream dumping separately for PDumpMemKM and PDumpMemUM.
In turn, this allows the removal of the separate buffer which was the
heart of pdump_common.c, which is removed as well.
No functional change.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pdump_km.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was removeddrivers/gpu/pvr/pdump_common.c
The file was modifieddrivers/gpu/pvr/pdump.c (diff)
The file was modifieddrivers/gpu/pvr/Makefile (diff)
Commit 96bd1cef7dba1acebb92830a13397c11453d2e3b 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/Makefile (diff)
The file was modifieddrivers/gpu/pvr/pb.c (diff)
The file was addeddrivers/gpu/pvr/pvr_pdump.h
The file was modifieddrivers/gpu/pvr/pvrsrv.c (diff)
The file was removeddrivers/gpu/pvr/pdump_km.h
The file was modifieddrivers/gpu/pvr/devicemem.c (diff)
The file was modifieddrivers/gpu/pvr/sgxtransfer.c (diff)
The file was modifieddrivers/gpu/pvr/sgxutils.c (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/sgxreset.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sysconfig.c (diff)
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.c
The file was modifieddrivers/gpu/pvr/power.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
Commit 637515f2d6dabd14169cb68d53257e96752b4db4 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/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.h (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/sgxreset.c (diff)
Commit df76a5415bf3b18c647df94a2f1ab79c71f89496 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/pvr_pdump.h (diff)
The file was modifieddrivers/gpu/pvr/mmu.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
Commit aa7fbf983d5b3ddd7e74e0971cf40391f79e6dc0 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 e0ffdb9facb66967bec72429b6262c7251cc6386 by Arthur D.
gpu: pvr: pdump: move empty back-end into pvr_pdumpfs.[ch]
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was addeddrivers/gpu/pvr/pvr_pdumpfs.c
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was addeddrivers/gpu/pvr/pvr_pdumpfs.h
The file was modifieddrivers/gpu/pvr/Makefile (diff)
Commit f7109ad5ee4801e48d1b8f366ca246c997c97caf 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.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.h (diff)
Commit d2bda152381e9e5263ab3222c42a14037e93d35d 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_debugfs.c (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_debug.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.h (diff)
Commit b3f646a388c975180df076b76e3b953f1ec060dc 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.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_pdump.h (diff)
Commit 9fde9839744fc5995241f9335a2a911ad1d5aa0a by Arthur D.
gpu: pvr: pdumpfs: make frame_count_max configurable
Both through a Kconfig option and through debugfs.
Signed-off-by: Luc Verhaegen <libv@codethink.co.uk> Signed-off-by: Imre
Deak <imre.deak@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
The file was modifieddrivers/gpu/pvr/Kconfig (diff)
Commit 843793c332236e32d3a85940cd145e90a82fc7df 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 541ea596cd8cd085a68bdf1ff4006089f77b966f 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 8064628ba26c1e0483889e71072509f7844c3d4c 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 fc8026841ff6ccbb63ee33527216018066f16022 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 6ec32a6c693d7fc7020fd1e38c15842e17c5dfe7 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 46e55f37cce4c741c60d80c417fd0bc20a6909e8 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 45943389d83e7e75067389c8f24a1ad9f46e1c27 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 81b0a38dc9ee78eee7a0eeeb2425334580dd1d15 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/Makefile (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/sgxinit.c (diff)
Commit 57ee1cef2fc01b5c4c76ed575f750ffe315fd7ee 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 60e64815e846839f0318411583895141d1d866ba 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 00feb86517c963d8ab95a19eac5bcf9999fceba7 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 ccd91b95db89395fff8fa79de5cb12ebb7464d58 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 cf887cdc0cf743ca0d20e81ca6a78edeacedcf8e 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 2adf14d96028f995a031710e215276db159feade 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 dc513f364c04eabc1201a305dfc43bcaec9e0dab 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 29abdebadfabc23078e4f2175617b298a161e3f1 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 b985e15c2c4dc81099d34bd96c708a36ac4610b3 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 db920b76ae1f7ef757dedbc11d7b4b2045b92ae2 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 dc80385ef0c158451a7469218dcfe23cf68e63f3 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 e07560b5b558d7f47383e465d84241284aed1365 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 2a0436a68da777668ea2beac612e6d2ae5496164 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/pvrsrv.c (diff)
The file was modifieddrivers/gpu/pvr/buffer_manager.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
Commit 1896c82c17fbcd184e93e546ff65eb20ec7d23f2 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/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/module.c (diff)
Commit 2ee56490f6a924596279d1b6cc9c40d632ba0c7b 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 77deebe07a75e16f052ea776150db36f4e7541b8 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/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/perproc.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.h (diff)
Commit 175161805696837b13dfe83a89cd4530ff23be52 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 edfc141b92c46aa2a09d2a99ddc20d2804701670 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 modifieddrivers/gpu/pvr/Makefile (diff)
The file was addeddrivers/gpu/pvr/pvr_trace_cmd.h
The file was addeddrivers/gpu/pvr/pvr_trace_cmd.c
Commit ac39de36e762849d994eeb6b21e63b5f24b9c3c5 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/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/sgx_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
The file was modifieddrivers/gpu/pvr/sgxtransfer.c (diff)
Commit 1b4e9bfcbea52315890af52d393656e68d519fb9 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/sgxtransfer.c (diff)
The file was modifieddrivers/gpu/pvr/sgxkick.c (diff)
Commit 8c338aa64e295b7bb78d5a48870a881c959928af 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 4a867666860b16cc6cd59278f0264a32e3d78456 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 7edf625e6ae3983af9037e572223cdc58039505d 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 fa542f521c6515a95e7c3324701e04184c7eb37b 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 b79d4f906ef3f62c07ee0477591c7b0357c68b58 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/buffer_manager.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_km.h (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 562a77537ab12b011d2413da8e681b1f319a51d7 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 a4345f1f7aa1bcfa509652749f06cf055cf9d5ef 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_sgx_bridge.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.h (diff)
Commit 1bbba961b869ef904920badaef29be0a5dac9f84 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 297af61bdb9417de4706b51b6fadba98d8397e8c 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 92d4b3d640a5a9800d1cc631c9bb96e8b5986104 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 464f16bc0f4f791f66046f7fcb420a15d58b1eca 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 2709198bf8eb80ee62108d0d94675bafdccb0e07 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 2e7304a912afd4cdf265612617005a32d2f82efa 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 b14f8bc05b4a6036295db7b9839ab74b2e5dc1cb 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 d94560374ba1fd7851ca012c741a0c484b041293 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 c6f421a2fef458ea8709764fd25ccf6b716d7a1a 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 a2621e4afc7d5fc7d12c02721baa4a8a8ed7d876 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 995ac7c7b164c9973e39d9b5538a33db0972d963 by Arthur D.
SGX: display.h -> omapdss.h
Fix SGX PVR driver to use correct include with linux 3.0.
Signed-off-by: Kimmo Jukarainen <ext-kimmo.jukarainen@nokia.com>
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/omaplfb_linux.c (diff)
Commit 77b7e4f953090bd8d7eb4f6f98e2d8fd53dde2fc 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 1302bf4084919f4577903bc73746d29c97aef37b 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 a933ee32aca91e8286676b7bb3beb8c749a89dca 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 cfdf90a2b8b29992482cca02f79f67667bf11d25 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 f3443d9a72ae89f226455b27430a544f03666e8a 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 557c287e3cced83a9c48449b5d30b90bd05f2ca8 by Arthur D.
gpu: pvr: use video/omapfb_dss.h header file
The header file name was changed after splitting omapdss to omapfb and
omapdrm. This driver uses omapfb.
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
The file was modifieddrivers/gpu/pvr/omaplfb_linux.c (diff)
Commit 954cbde20150a996853718abf9ed525bbfbe2a8e 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/event.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
Commit 24c5bd9afb116cd409ec2a6eefd01421e1c4d861 by Arthur D.
gpu: pvr: convert file permissions to numeric
See https://lwn.net/Articles/696227/
The file was modifieddrivers/gpu/pvr/pvr_pdumpfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/proc.c (diff)
Commit 0d2254a1e1487b3814610261cc5f298782bf5797 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/proc.c (diff)
The file was modifieddrivers/gpu/pvr/queue.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/queue.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.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/mm.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
Commit ab48c1862436af413dbcdfa59945427af8d38f13 by Arthur D.
gpu: pvr: proc: use file_inode() macro
The file was modifieddrivers/gpu/pvr/proc.c (diff)
Commit 50d625f89fd68d01862b5182343a8f3d07f98acd by Arthur D.
gpu: pvr: update write handlers for proc files
The file was modifieddrivers/gpu/pvr/proc.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_debug.c (diff)
Commit 0531df837d35ba869fcee15b063c8c7fd4562d36 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 c3682c9acf076e7e314bc1cdab987ca87a5adaad 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/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
Commit 9bcaf61c84658443ae15b9810fe777dc195e8634 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/bridged_sgx_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_bridge_k.c (diff)
The file was modifieddrivers/gpu/pvr/osfunc.h (diff)
Commit 5a2b01f47634e9871f6e1caf83272ba76c30bb07 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 5006f2f753827ef260d5413e2174ec21bfa4b8dc 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 3d406cf9de7cad2a58bec73ca3f62d97c245f1d2 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 f92f55dc25f789b69e8967aa0b4fbc44905d7f68 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 97d40c02dd7b31059fd23c9a5d4170f8e083bfd1 by Arthur D.
gpu: pvr: proc: rename variables
The file was modifieddrivers/gpu/pvr/proc.c (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
Commit 2dbef553d87a76d915f186992a834a49bb9d9645 by Arthur D.
gpu: pvr: rewrite proc files write handling
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/pvr_debug.h (diff)
The file was modifieddrivers/gpu/pvr/proc.h (diff)
Commit e066aafbd6a5bec71974d98a6ab686c9d0029f17 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 7877ff9aa59d4a1f5fe2493736f21bf14b3c23e3 by Arthur D.
gpu: pvr: include dma.h for dmac_map_area()
The file was addeddrivers/gpu/pvr/dma.h
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
Commit 66409f997c9efdb0416ef00786bf93a76ef740b1 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 e53ca2aef2d3644f1c1140f48fe8b1a86d8d222d 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 5607ef4cc2a7120d527ad314fd39bc2d99ae2cec 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 7fcdc0abb2bc9dc5a335e4dde2814e2da45263c0 by Arthur D.
gpu: pvr: add header for cpu_clock()
The file was modifieddrivers/gpu/pvr/sgxpower.c (diff)
Commit 47776a785cfdf0455a6da52c13a80b4d20dd90be by Arthur D.
gpu: pvr: events: remove unused do_gettimeofday()
The file was modifieddrivers/gpu/pvr/pvr_events.c (diff)
Commit f9a28ff2de5ad1233dcd2489de8c8313fcaa7fe6 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 4d481990873c5c94bdec8f461346a6af15a926df 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 37a18c3f2c08096b7ba514cb0a4367fb11cdc25a 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 21da4b4137f1fdb432edf6aca657b2e18ac7c7c3 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 6ef3fea0094781b9563a8d5bc4b6c9985aee5056 by Arthur D.
ARM: dts: omap34xx: add GPU entry
The file was modifiedarch/arm/boot/dts/omap34xx.dtsi (diff)
Commit 5b4c2a88a7e4a734810e68a22a650596086ce1f1 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 fd953276920652eda584afcaf6f44366573f2ec7 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 2691bb846a21ea0ca92b2591d2ddff202f2c240f 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 2941c39f9c4ab9178193bb27f86372b2962f4587 by Arthur D.
gpu: pvr: remove line wraps
The file was modifieddrivers/gpu/pvr/bridged_pvr_bridge.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
The file was modifieddrivers/gpu/pvr/power.c (diff)
Commit 8d17aa47d6787667e2a9985eb57d2a2d5beb9420 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 dc6db0b768b7d069d2dd23ba2457f899cad2142e by Arthur D.
gpu: pvr: debug: show memory stats in /proc/slabinfo
Separate constructors prevent cache merging.
That's how it works:
   kmem_cache_create() ->
-> kmem_cache_create_usercopy() ->
-> __kmem_cache_alias() ->
-> find_mergeable()
If constructor is NULL, find_mergeable() can return already registered
cache for merging. New cache is not created, therefore it's not
represented in /proc/slabinfo.
The file was modifieddrivers/gpu/pvr/mm.c (diff)
The file was modifieddrivers/gpu/pvr/mmap.c (diff)
Commit ee3c95ab58003c38e2bf45b3a10db4af5efca424 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/resman.c (diff)
The file was modifieddrivers/gpu/pvr/sgxpower.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/sgxreset.c (diff)
The file was modifieddrivers/gpu/pvr/sysutils.c (diff)
Commit 4a10460423fa76427b827b462b88deb83083622c by Arthur D.
gpu: pvr: fix CONFIG_PVR_TRACE_CMD=y compilation
The file was modifieddrivers/gpu/pvr/pvr_trace_cmd.c (diff)
Commit d70a49833770faaf7699abdb21afd02ff49ca97c 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 3afdaf16d05024fb59a968ef645621eaebccf1f9 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/sgxinit.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_debugfs.c (diff)
The file was modifieddrivers/gpu/pvr/pvr_trace_cmd.h (diff)
The file was modifieddrivers/gpu/pvr/pvr_trace_cmd.c (diff)
Commit 0ecdc224c109681b0032c1cf903a96f600d3a86c 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 modifiedinclude/video/omapfb_dss.h (diff)
The file was modifieddrivers/video/fbdev/omap2/omapfb/dss/dss.h (diff)
The file was modifieddrivers/video/fbdev/omap2/omapfb/dss/apply.c (diff)
Commit a1df4e514fe187f52be9b269a760c12a7ef2a7f0 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 0dfc1fda1de6c7a383ed524bb9109a8ba98025ee 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 0f513c231d7ad3ef016db346b6e712efcfe8fb9b 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 a5425f95b6f67c75f2724eaad0a198aa36ff39eb 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 1cc326824bf011ecb963cb31661258c5c3c2b3fe by Arthur D.
bq27x00: use cached flags
The flags were just read by bq27xxx_battery_update(), no need to read
them again.
Signed-off-by: Arthur Demchenkov <spinal.by@gmail.com>
The file was modifieddrivers/power/supply/bq27xxx_battery.c (diff)
Commit ea86baca15c5d99dc4803f2145afee4e0403cb04 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 11f0ff2b40df0d2c256b97d520ae50481ff1822f by Arthur D.
ARM: n900_defconfig: rename omap2plus_defconfig
The file was removedarch/arm/configs/omap2plus_defconfig
The file was addedarch/arm/configs/n900_defconfig
Commit cacc9ef1c7b34080581b0ea24ae9c279d9642ff2 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 7b7b0b8de27f63ddd9f910693980a631b8f8b4f2 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 87912d4df8f6d6df2f5a5d7c71a993ac4de12cb7 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 50d56438dd99873bf0e1ff1f6ff1862aa8ced3f0 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 00163b228c8ea947d82f68d1be14da8c0663f055 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 1e0bde5aa9d88530f7eb8ef619b1213253084342 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 e22a8b50ba382f3fe16e68fd0491326d18bdd75c 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 2aed2e55588b2efbfe89fc39c293c9a57faca884 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 7e83d10ffbcef7d3ba36c45ae8979a452617e90e 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 89ae0c6c990c625226882983165875fe9f9073cf 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 1cc4b478db1ccda422110d09f6300320a40a5cf8 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 98269cf7f35751b634d2ecfacd9557af7c0638f9 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 2349e4c200ed9669657f19877e296d96869bc842 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 71b43a3f3fa8290d952d42f2044234c18b2aa270 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 67dfaf6dcacd3e8cd9a7b9fc9f81befd2f845f7a 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 bb5d00232715a80302afc38f0c6f3ac6e3c8cd59 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 bc7ddf1d8f2476019692f47d73d081c7be22295e 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 b1214197b4874e1b40e5052dd72385a2b2a9a697 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 b28bbb328eeeab17260e5c4b652a40b6e7209235 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 27f9d82c1db7e1badfa2837c5f27031b9d8bddb3 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 86dbdacb614d2a2be7e35b21fbf9ec2151893ba7 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 9dc1c16594f4b0ff053cc518c7a0e7b4dfe6a0bc 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 636fdafab09c8413c42b68ec2fcf82bbd1107b45 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 a65b9f4f640cb8c14e4b6fc95e9f5ecb0bfe2717 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 03eaddb041dacd572ee7120ff49f113f0a304c7d 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 41b204109b4ed0950e6d3401c562c19446361660 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 7e55f08864138ce19657a4f4ed1490ee4fb5b2d6 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 67d5bfa3663ae8f013fc27c2aff8abc588ef45a2 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 43e2f48166b0bf71946a392eb0b36eb07c959b7e 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]
  < > 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 04c648ee291772c30719b44569f05ef1a4ecd641 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 2c71baf5cb719a412ef87613d108793ba58936e2 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 3724c38ad1ab154319ab79a720dea3224c9c183e 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 743a5317c0a731fa994fcc6fd10b099f3022cda4 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 f7ba66214af599dde63c15db6d0ae0a1527d85ef 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 08d28ea35e092f3fb4c8275fa3dcfd20d91e8b1f 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 0b3ff1937535dc387ec2f927c9a85aa7b0595740 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 d3a4ebf01a579b2806eabb52360f1bb14a004a14 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 b01198e97bce82ea138a6bd1bc16ca1acbc2518f 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 d97f3cdc40785f8bf811b96cfd0e250c6a0fa520 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 8927e1d1bf5b06ce2a9ad16f92682aab308017d6 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 8e98a57eede481966ce36ef25d67eef3d1f68929 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 201576d64dc32b505dc6e4bf8b6e7bbaa83010ea 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 b22de16732ad4174a2cc1e89c998e5c477000d25 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 acd3651dea3849bc311f7127d795f0ee4880052b 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 20697e7439a4f51f98d952c5750d8988cb7070f8 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 9955a8a33d912ccee4fec585b5349215b4ec3276 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 cd207faa2aadcfdbdd4eb7ca0f17bf6359740313 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 f97bbf1d7a6051e12b625dacd4e7e61b246f9894 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 5c7d3cf79bc0062fd7af73bde32922b06deecb83 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 93b8f8d939f416aad9ab98fb6f7c9cc998a77c7b 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 027ed165496ea532f857cb3892470c5d346e6f11 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 4dbf458c24c6ccd7fafd65d29402530146548a1c 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 ad03c765704522ec9a8cd58bb17c53527f54eba4 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 5ed0627b738a1343136081725a979f62f6402012 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 7fa99dccfd364b25909426b5561fc727979e2602 by Arthur D.
ARM: n900_defconfig: enable cameras
Device Drivers  --->
Multimedia support  --->
  I2C Encoders, decoders, sensors and other helper chips  --->
   <M> AD5820 lens voice coil support  [CONFIG_VIDEO_AD5820]
   <M> SMIA++/SMIA sensor support      [CONFIG_VIDEO_SMIAPP]
   <M> ET8EK8 camera sensor support    [CONFIG_VIDEO_ET8EK8]
The file was modifiedarch/arm/configs/n900_defconfig (diff)
Commit f154ba7e8d34874bd08fcf72e28770a76933f94b 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 5c467a693bc2e3c97e90490c87803dee0b890a34 by Arthur D.
debian: preserve /debian/ on 'make clean'
The file was modifiedscripts/package/Makefile (diff)
Commit c7a30963cef8c56fc29cccb32612ed7c8767a366 by Arthur D.
debian: remove /debian/ from .gitignore
The file was modified.gitignore (diff)
Commit 5e10fad4905039fbc28cf66c7e596c411ad171e7 by Arthur D.
debian: fill /debian/ directory with content
The file was addeddebian/postinst.in
The file was addeddebian/README
The file was addeddebian/rules
The file was addeddebian/clean
The file was addeddebian/control
The file was addeddebian/copyright
The file was addeddebian/compat
The file was addeddebian/source/format
The file was addeddebian/changelog
Commit 67220867a89e12780460da1a31aa4e164ac7f9a9 by Arthur D.
debian: use linux native scripts for packaging
Packages added:
- linux-image-n900-dbg
- linux-headers-n900
This should allow to build kernel modules out of tree.
The file was modifieddebian/control (diff)
The file was modifieddebian/rules (diff)
The file was removeddebian/postinst.in
The file was modifiedscripts/package/builddeb (diff)
Commit f8d9a07ba964df192a12c9279612fcbf896b6cd8 by Arthur D.
Update debian/changelog (5.0.5-1)
The file was modifieddebian/changelog (diff)
Commit 8d4ed6d1246bec8c23a97a4404bb308c98534bfc by Arthur D.
debian: fix linux-headers-n900 when crossbuilding
Build kernel related binaries in target architecture format after cross
building. This allows to run DKMS on target device successfully.
The file was modifieddebian/control (diff)
The file was modifieddebian/rules (diff)
Commit 6e5edda92470f269b1b33a00c51adf9c3f983d11 by Arthur D.
debian: add gbp.conf needed by jenkins-debian-glue
The file was addeddebian/gbp.conf
Commit 97552c59ec6b572abae80e3b066a2f680414f014 by Arthur D.
Update debian/changelog (5.0.5-2)
The file was modifieddebian/changelog (diff)
Commit 384bfbc5a8cec361e9d7d98034e13a8e61b37f7a by Arthur D.
debian: update README for default config management
The file was modifieddebian/README (diff)