Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1565558 > unrolled thread
| Started by | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| First post | 2017-01-24 09:10 +0100 |
| Last post | 2017-01-25 12:10 +0100 |
| Articles | 20 on this page of 117 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH 4.9 000/130] 4.9.6-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 113/130] mtd: spi-nor: Off by one in cqspi_setup_flash() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 057/130] x86/ioapic: Restore IO-APIC irq_chip retrigger callback Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 102/130] libceph: make sure ceph_aes_crypt() IV is aligned Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 120/130] [media] st-hva: fix some error handling in hva_hw_probe() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 004/130] IB/mlx5: Avoid system crash when enabling many VFs Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 062/130] svcrdma: avoid duplicate dma unmapping during error recovery Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 086/130] ARM: dts: dm816x: Add an empty chosen node to top level DTSI Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 040/130] PCI: designware: Check for iATU unroll only on platforms that use ATU Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 090/130] ARM: dts: omap5: Add an empty chosen node to top level DTSI Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 059/130] mac80211: implement multicast forwarding on fast-RX path Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 068/130] ARM: dts: da850-evm: fix read access to SPI flash Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 122/130] [media] s5p-mfc: Fix clock management in s5p_mfc_release() function Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 050/130] KVM: s390: do not expose random data via facility bitmap Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 006/130] IB/mlx5: Assign SRQ type earlier Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 104/130] xprtrdma: Squelch "max send, max recv" messages at connect time Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 056/130] powerpc: Ignore reserved field in DCSR and PVR reads and writes Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 084/130] libceph: remove now unused ceph_*{en,de}crypt*() functions Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 096/130] ARM: ux500: fix prcmu_is_cpu_in_wfi() calculation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 064/130] ibmvscsis: Fix sleeping in interrupt context Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 034/130] sunrpc: dont call sleeping functions from the notifier block callbacks Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 118/130] [media] gs1662: drop kfree for memory allocated with devm_kzalloc Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 058/130] qla2xxx: Fix crash due to null pointer access Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 103/130] xprtrdma: Make FRWR send queue entry accounting more accurate Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 091/130] ARM: dts: am4372: Add an empty chosen node to top level DTSI Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 117/130] [media] platform: pxa_camera: add VIDEO_V4L2 dependency Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 125/130] spi: pxa2xx: add missed break Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 060/130] ubifs: Fix journal replay wrt. xattr nodes Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 126/130] soc: ti: wkup_m3_ipc: Fix error return code in wkup_m3_ipc_probe() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 129/130] libceph: uninline ceph_crypto_key_destroy() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 106/130] arm64: Fix swiotlb fallback allocation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 127/130] selftest/powerpc: Wrong PMC initialized in pmc56_overflow test Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 124/130] dmaengine: pl330: Fix runtime PM support for terminated transfers Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 047/130] mtd: nand: lpc32xx: fix invalid error handling of a requested irq Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 054/130] powerpc/ptrace: Preserve previous fprs/vsrs on short regset write Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 031/130] x86/PCI: Ignore _CRS on Supermicro X8DTH-i/6/iF/6F Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 130/130] libceph: stop allocating a new cipher on every crypto request Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 089/130] ARM: dts: omap4: Add an empty chosen node to top level DTSI Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 094/130] ARM: dts: imx6qdl-nitrogen6_max: fix sgtl5000 pinctrl init Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 065/130] ibmvscsis: Fix max transfer length Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 052/130] powerpc/icp-opal: Fix missing KVM case and harden replay Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 114/130] mtd: spi-nor: Fix some error codes in cqspi_setup_flash() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 053/130] powerpc/perf: Fix PM_BRU_CMPL event code for power9 Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 032/130] rcu: Remove cond_resched() from Tiny synchronize_sched() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 066/130] ceph: fix bad endianness handling in parse_reply_info_extra Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 109/130] scsi: ses: Fix SAS device detection in enclosure Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 107/130] swiotlb: Convert swiotlb_force from int to enum Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 044/130] mmc: sdhci-acpi: Only powered up enabled acpi child devices Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 116/130] [media] blackfin: check devm_pinctrl_get() for errors Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 039/130] fuse: fix time_to_jiffies nsec sanity check Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 128/130] tools/virtio/ringtest: fix run-on-all.sh for offline cpus Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 119/130] [media] ite-cir: initialize use_demodulator before using it Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 036/130] libnvdimm, namespace: fix pmem namespace leak, delete when size set to zero Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 009/130] IB/mlx4: Fix out-of-range array index in destroy qp flow Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:10 +0100
[PATCH 4.9 083/130] libceph: switch ceph_x_decrypt() to ceph_crypt() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 101/130] ceph: fix endianness bug in frag_tree_split_cmp Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 067/130] ARM: dts: OMAP5 / DRA7: indicate that SATA port 0 is available. Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 081/130] libceph: tweak calcu_signature() a little Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 100/130] ceph: fix endianness of getattr mask in ceph_d_revalidate Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 110/130] scsi: mpt3sas: fix hang on ata passthrough commands Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 080/130] libceph: rename and align ceph_x_authorizer::reply_buf Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 085/130] ARM: dts: dra7: Add an empty chosen node to top level DTSI Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 046/130] ieee802154: atusb: do not use the stack for buffers to make them DMA able Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 087/130] ARM: dts: dm814x: Add an empty chosen node to top level DTSI Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 105/130] arm64: mm: avoid name clash in __page_to_voff() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 099/130] ceph: fix ceph_get_caps() interruption Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 045/130] mmc: mxs-mmc: Fix additional cycles after transmission stop Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 093/130] ARM: dts: omap2: Add an empty chosen node to top level DTSI Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 115/130] rpmsg: virtio_rpmsg_bus: fix channel creation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 063/130] ARM: 8634/1: hw_breakpoint: blacklist Scorpion CPUs Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 095/130] ARM: dts: omap3: Fix Card Detect and Write Protect on Logic PD SOM-LV Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 112/130] PM / devfreq: Fix the bug of devfreq_add_device when governor is NULL Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 088/130] ARM: dts: am33xx: Add an empty chosen node to top level DTSI Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 098/130] ceph: fix scheduler warning due to nested blocking Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 092/130] ARM: dts: omap3: Add an empty chosen node to top level DTSI Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 043/130] HID: corsair: fix control-transfer error handling Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 111/130] PM / devfreq: exynos-bus: Fix the wrong return value Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:20 +0100
[PATCH 4.9 041/130] PCI: Enumerate switches below PCI-to-PCIe bridges Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 070/130] arm64/ptrace: Preserve previous registers for short regset write Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 008/130] IB/mlx4: Set traffic class in AH Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 030/130] tmpfs: clear S_ISGID when setting posix ACLs Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 042/130] HID: corsair: fix DMA buffers on stack Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 007/130] IB/mlx5: Wait for all async command completions to complete Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 048/130] mtd: nand: xway: disable module support Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 076/130] libceph: ceph_x_encrypt_buflen() takes in_len Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 055/130] powerpc/ptrace: Preserve previous TM fprs/vsrs on short regset write Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 071/130] arm64/ptrace: Preserve previous registers for short regset write - 2 Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 077/130] libceph: old_key in process_one_ticket() is redundant Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 020/130] perf scripting: Avoid leaking the scripting_context variable Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 073/130] arm64/ptrace: Avoid uninitialised struct padding in fpr_set() Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 016/130] perf mem: Fix --all-user/--all-kernel options Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 029/130] ARM: dts: omap3: Add DTS for Logic PD SOM-LV 37xx Dev Kit Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 072/130] arm64/ptrace: Preserve previous registers for short regset write - 3 Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 079/130] libceph: introduce ceph_crypt() for in-place en/decryption Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 074/130] arm64/ptrace: Reject attempts to set incomplete hardware breakpoint fields Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 019/130] perf callchain: Fixup help/config for no-unwinding Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 025/130] ARM: dts: imx6q-cm-fx6: fix fec pinctrl Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 069/130] arm64: avoid returning from bad_mode Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 049/130] mtd: nand: xway: fix build because of module functions Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 033/130] rcu: Narrow early boot window of illegal synchronous grace periods Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 038/130] fuse: clear FR_PENDING flag when moving requests out of pending queue Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 051/130] KVM: arm/arm64: vgic: Fix deadlock on error handling Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 003/130] IB/rxe: avoid putting a large struct rxe_qp on stack Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 037/130] ARC: module: Fix !CONFIG_ARC_DW2_UNWIND builds Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 005/130] IB/mlx5: Fix reported max SGE calculation Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 035/130] svcrpc: dont leak contexts on PROC_DESTROY Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:30 +0100
[PATCH 4.9 024/130] ARM: dts: r8a7794: remove Z clock Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:40 +0100
[PATCH 4.9 021/130] perf jit: Enable jitdump support without dwarf Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:40 +0100
[PATCH 4.9 014/130] IB/IPoIB: Remove cant use GFP_NOIO warning Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:40 +0100
[PATCH 4.9 012/130] IB/mlx4: When no DMFS for IPoIB, dont allow NET_IF QPs Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:40 +0100
[PATCH 4.9 026/130] ARM: dts: imx31: fix clock control module interrupts description Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:40 +0100
[PATCH 4.9 013/130] IB/mlx4: Check if GRH is available before using it Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:40 +0100
[PATCH 4.9 023/130] ARM: dts: r8a7794: Use SYSC "always-on" PM Domain for sound Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-24 09:40 +0100
Re: [PATCH 4.9 000/130] 4.9.6-stable review Shuah Khan <shuah.kh@samsung.com> - 2017-01-24 19:30 +0100
Re: [PATCH 4.9 000/130] 4.9.6-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-25 12:10 +0100
Re: [PATCH 4.9 000/130] 4.9.6-stable review Guenter Roeck <linux@roeck-us.net> - 2017-01-24 20:10 +0100
Re: [PATCH 4.9 000/130] 4.9.6-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-01-25 12:10 +0100
Page 5 of 6 — ← Prev page 1 2 3 4 [5] 6 Next page →
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 030/130] tmpfs: clear S_ISGID when setting posix ACLs |
| Message-ID | <t34Eh-1TK-9@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Gu Zheng <guzheng1@huawei.com>
commit 497de07d89c1410d76a15bec2bb41f24a2a89f31 upstream.
This change was missed the tmpfs modification in In CVE-2016-7097
commit 073931017b49 ("posix_acl: Clear SGID bit when setting
file permissions")
It can test by xfstest generic/375, which failed to clear
setgid bit in the following test case on tmpfs:
touch $testfile
chown 100:100 $testfile
chmod 2755 $testfile
_runas -u 100 -g 101 -- setfacl -m u::rwx,g::rwx,o::rwx $testfile
Signed-off-by: Gu Zheng <guzheng1@huawei.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Cc: Brad Spengler <spender@grsecurity.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/posix_acl.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
--- a/fs/posix_acl.c
+++ b/fs/posix_acl.c
@@ -922,11 +922,10 @@ int simple_set_acl(struct inode *inode,
int error;
if (type == ACL_TYPE_ACCESS) {
- error = posix_acl_equiv_mode(acl, &inode->i_mode);
- if (error < 0)
- return 0;
- if (error == 0)
- acl = NULL;
+ error = posix_acl_update_mode(inode,
+ &inode->i_mode, &acl);
+ if (error)
+ return error;
}
inode->i_ctime = current_time(inode);
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 042/130] HID: corsair: fix DMA buffers on stack |
| Message-ID | <t34Ei-1TK-21@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Johan Hovold <johan@kernel.org>
commit 6d104af38b570d37aa32a5803b04c354f8ed513d upstream.
Not all platforms support DMA to the stack, and specifically since v4.9
this is no longer supported on x86 with VMAP_STACK either.
Note that the macro-mode buffer was larger than necessary.
Fixes: 6f78193ee9ea ("HID: corsair: Add Corsair Vengeance K90 driver")
Signed-off-by: Johan Hovold <johan@kernel.org>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/hid/hid-corsair.c | 54 +++++++++++++++++++++++++++++++++++-----------
1 file changed, 42 insertions(+), 12 deletions(-)
--- a/drivers/hid/hid-corsair.c
+++ b/drivers/hid/hid-corsair.c
@@ -148,7 +148,11 @@ static enum led_brightness k90_backlight
struct usb_interface *usbif = to_usb_interface(dev->parent);
struct usb_device *usbdev = interface_to_usbdev(usbif);
int brightness;
- char data[8];
+ char *data;
+
+ data = kmalloc(8, GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0),
K90_REQUEST_STATUS,
@@ -158,16 +162,22 @@ static enum led_brightness k90_backlight
if (ret < 0) {
dev_warn(dev, "Failed to get K90 initial state (error %d).\n",
ret);
- return -EIO;
+ ret = -EIO;
+ goto out;
}
brightness = data[4];
if (brightness < 0 || brightness > 3) {
dev_warn(dev,
"Read invalid backlight brightness: %02hhx.\n",
data[4]);
- return -EIO;
+ ret = -EIO;
+ goto out;
}
- return brightness;
+ ret = brightness;
+out:
+ kfree(data);
+
+ return ret;
}
static enum led_brightness k90_record_led_get(struct led_classdev *led_cdev)
@@ -253,7 +263,11 @@ static ssize_t k90_show_macro_mode(struc
struct usb_interface *usbif = to_usb_interface(dev->parent);
struct usb_device *usbdev = interface_to_usbdev(usbif);
const char *macro_mode;
- char data[8];
+ char *data;
+
+ data = kmalloc(2, GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0),
K90_REQUEST_GET_MODE,
@@ -263,7 +277,8 @@ static ssize_t k90_show_macro_mode(struc
if (ret < 0) {
dev_warn(dev, "Failed to get K90 initial mode (error %d).\n",
ret);
- return -EIO;
+ ret = -EIO;
+ goto out;
}
switch (data[0]) {
@@ -277,10 +292,15 @@ static ssize_t k90_show_macro_mode(struc
default:
dev_warn(dev, "K90 in unknown mode: %02hhx.\n",
data[0]);
- return -EIO;
+ ret = -EIO;
+ goto out;
}
- return snprintf(buf, PAGE_SIZE, "%s\n", macro_mode);
+ ret = snprintf(buf, PAGE_SIZE, "%s\n", macro_mode);
+out:
+ kfree(data);
+
+ return ret;
}
static ssize_t k90_store_macro_mode(struct device *dev,
@@ -320,7 +340,11 @@ static ssize_t k90_show_current_profile(
struct usb_interface *usbif = to_usb_interface(dev->parent);
struct usb_device *usbdev = interface_to_usbdev(usbif);
int current_profile;
- char data[8];
+ char *data;
+
+ data = kmalloc(8, GFP_KERNEL);
+ if (!data)
+ return -ENOMEM;
ret = usb_control_msg(usbdev, usb_rcvctrlpipe(usbdev, 0),
K90_REQUEST_STATUS,
@@ -330,16 +354,22 @@ static ssize_t k90_show_current_profile(
if (ret < 0) {
dev_warn(dev, "Failed to get K90 initial state (error %d).\n",
ret);
- return -EIO;
+ ret = -EIO;
+ goto out;
}
current_profile = data[7];
if (current_profile < 1 || current_profile > 3) {
dev_warn(dev, "Read invalid current profile: %02hhx.\n",
data[7]);
- return -EIO;
+ ret = -EIO;
+ goto out;
}
- return snprintf(buf, PAGE_SIZE, "%d\n", current_profile);
+ ret = snprintf(buf, PAGE_SIZE, "%d\n", current_profile);
+out:
+ kfree(data);
+
+ return ret;
}
static ssize_t k90_store_current_profile(struct device *dev,
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 007/130] IB/mlx5: Wait for all async command completions to complete |
| Message-ID | <t34Ei-1TK-13@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eli Cohen <eli@mellanox.com>
commit acbda523884dcf45613bf6818d8ead5180df35c2 upstream.
Wait before continuing unload till all pending mkey async creation requests
are done.
Fixes: e126ba97dba9 ('mlx5: Add driver for Mellanox Connect-IB adapters')
Signed-off-by: Eli Cohen <eli@mellanox.com>
Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/infiniband/hw/mlx5/mr.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -647,6 +647,33 @@ int mlx5_mr_cache_init(struct mlx5_ib_de
return 0;
}
+static void wait_for_async_commands(struct mlx5_ib_dev *dev)
+{
+ struct mlx5_mr_cache *cache = &dev->cache;
+ struct mlx5_cache_ent *ent;
+ int total = 0;
+ int i;
+ int j;
+
+ for (i = 0; i < MAX_MR_CACHE_ENTRIES; i++) {
+ ent = &cache->ent[i];
+ for (j = 0 ; j < 1000; j++) {
+ if (!ent->pending)
+ break;
+ msleep(50);
+ }
+ }
+ for (i = 0; i < MAX_MR_CACHE_ENTRIES; i++) {
+ ent = &cache->ent[i];
+ total += ent->pending;
+ }
+
+ if (total)
+ mlx5_ib_warn(dev, "aborted while there are %d pending mr requests\n", total);
+ else
+ mlx5_ib_warn(dev, "done with all pending requests\n");
+}
+
int mlx5_mr_cache_cleanup(struct mlx5_ib_dev *dev)
{
int i;
@@ -660,6 +687,7 @@ int mlx5_mr_cache_cleanup(struct mlx5_ib
clean_keys(dev, i);
destroy_workqueue(dev->cache.wq);
+ wait_for_async_commands(dev);
del_timer_sync(&dev->delay_timer);
return 0;
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 048/130] mtd: nand: xway: disable module support |
| Message-ID | <t34Ei-1TK-25@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hauke Mehrtens <hauke@hauke-m.de>
commit 73529c872a189c747bdb528ce9b85b67b0e28dec upstream.
The xway_nand driver accesses the ltq_ebu_membase symbol which is not
exported. This also should not get exported and we should handle the
EBU interface in a better way later. This quick fix just deactivated
support for building as module.
Fixes: 99f2b107924c ("mtd: lantiq: Add NAND support on Lantiq XWAY SoC.")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/mtd/nand/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -537,7 +537,7 @@ config MTD_NAND_FSMC
Flexible Static Memory Controller (FSMC)
config MTD_NAND_XWAY
- tristate "Support for NAND on Lantiq XWAY SoC"
+ bool "Support for NAND on Lantiq XWAY SoC"
depends on LANTIQ && SOC_TYPE_XWAY
help
Enables support for NAND Flash chips on Lantiq XWAY SoCs. NAND is attached
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 076/130] libceph: ceph_x_encrypt_buflen() takes in_len |
| Message-ID | <t34Ei-1TK-19@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilya Dryomov <idryomov@gmail.com>
commit 36721ece1e84a25130c4befb930509b3f96de020 upstream.
Pass what's going to be encrypted - that's msg_b, not ticket_blob.
ceph_x_encrypt_buflen() returns the upper bound, so this doesn't change
the maxlen calculation, but makes it a bit clearer.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/ceph/auth_x.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
--- a/net/ceph/auth_x.c
+++ b/net/ceph/auth_x.c
@@ -308,8 +308,8 @@ static int ceph_x_build_authorizer(struc
if (ret)
goto out_au;
- maxlen = sizeof(*msg_a) + sizeof(msg_b) +
- ceph_x_encrypt_buflen(ticket_blob_len);
+ maxlen = sizeof(*msg_a) + ticket_blob_len +
+ ceph_x_encrypt_buflen(sizeof(msg_b));
dout(" need len %d\n", maxlen);
if (au->buf && au->buf->alloc_len < maxlen) {
ceph_buffer_put(au->buf);
@@ -350,11 +350,12 @@ static int ceph_x_build_authorizer(struc
p, end - p);
if (ret < 0)
goto out_au;
+
p += ret;
+ WARN_ON(p > end);
au->buf->vec.iov_len = p - au->buf->vec.iov_base;
dout(" built authorizer nonce %llx len %d\n", au->nonce,
(int)au->buf->vec.iov_len);
- BUG_ON(au->buf->vec.iov_len > maxlen);
return 0;
out_au:
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 055/130] powerpc/ptrace: Preserve previous TM fprs/vsrs on short regset write |
| Message-ID | <t34Ei-1TK-29@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Martin <Dave.Martin@arm.com>
commit b34ca60148c53971d373643195cc5c4d5d20be78 upstream.
Ensure that if userspace supplies insufficient data to PTRACE_SETREGSET
to fill all the check pointed registers, the thread's old check pointed
registers are preserved.
Fixes: 9d3918f7c0e5 ("powerpc/ptrace: Enable support for NT_PPC_CVSX")
Fixes: 19cbcbf75a0c ("powerpc/ptrace: Enable support for NT_PPC_CFPR")
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/powerpc/kernel/ptrace.c | 7 +++++++
1 file changed, 7 insertions(+)
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -1026,6 +1026,10 @@ static int tm_cfpr_set(struct task_struc
flush_fp_to_thread(target);
flush_altivec_to_thread(target);
+ for (i = 0; i < 32; i++)
+ buf[i] = target->thread.TS_CKFPR(i);
+ buf[32] = target->thread.ckfp_state.fpscr;
+
/* copy to local buffer then write that out */
i = user_regset_copyin(&pos, &count, &kbuf, &ubuf, buf, 0, -1);
if (i)
@@ -1290,6 +1294,9 @@ static int tm_cvsx_set(struct task_struc
flush_altivec_to_thread(target);
flush_vsx_to_thread(target);
+ for (i = 0; i < 32 ; i++)
+ buf[i] = target->thread.ckfp_state.fpr[i][TS_VSRLOWOFFSET];
+
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
buf, 0, 32 * sizeof(double));
if (!ret)
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 071/130] arm64/ptrace: Preserve previous registers for short regset write - 2 |
| Message-ID | <t34Ei-1TK-23@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Martin <Dave.Martin@arm.com>
commit 9dd73f72f218320c6c90da5f834996e7360dc227 upstream.
Ensure that if userspace supplies insufficient data to
PTRACE_SETREGSET to fill all the registers, the thread's old
registers are preserved.
Fixes: 766a85d7bc5d ("arm64: ptrace: add NT_ARM_SYSTEM_CALL regset")
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Acked-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>
---
arch/arm64/kernel/ptrace.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -676,7 +676,8 @@ static int system_call_set(struct task_s
unsigned int pos, unsigned int count,
const void *kbuf, const void __user *ubuf)
{
- int syscallno, ret;
+ int syscallno = task_pt_regs(target)->syscallno;
+ int ret;
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &syscallno, 0, -1);
if (ret)
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 077/130] libceph: old_key in process_one_ticket() is redundant |
| Message-ID | <t34Ej-1TK-33@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilya Dryomov <idryomov@gmail.com>
commit 462e650451c577d15eeb4d883d70fa9e4e529fad upstream.
Since commit 0a990e709356 ("ceph: clean up service ticket decoding"),
th->session_key isn't assigned until everything is decoded.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/ceph/auth_x.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
--- a/net/ceph/auth_x.c
+++ b/net/ceph/auth_x.c
@@ -148,7 +148,6 @@ static int process_one_ticket(struct cep
int dlen;
char is_enc;
struct timespec validity;
- struct ceph_crypto_key old_key;
void *ticket_buf = NULL;
void *tp, *tpend;
void **ptp;
@@ -187,7 +186,6 @@ static int process_one_ticket(struct cep
if (tkt_struct_v != 1)
goto bad;
- memcpy(&old_key, &th->session_key, sizeof(old_key));
ret = ceph_crypto_key_decode(&new_session_key, &dp, dend);
if (ret)
goto out;
@@ -204,7 +202,7 @@ static int process_one_ticket(struct cep
if (is_enc) {
/* encrypted */
dout(" encrypted ticket\n");
- dlen = ceph_x_decrypt(&old_key, p, end, &ticket_buf, 0);
+ dlen = ceph_x_decrypt(&th->session_key, p, end, &ticket_buf, 0);
if (dlen < 0) {
ret = dlen;
goto out;
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 020/130] perf scripting: Avoid leaking the scripting_context variable |
| Message-ID | <t34Ei-1TK-27@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Arnaldo Carvalho de Melo <acme@redhat.com>
commit cf346d5bd4b9d61656df2f72565c9b354ef3ca0d upstream.
Both register_perl_scripting() and register_python_scripting() allocate
this variable, fix it by checking if it already was.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Tom Zanussi <tzanussi@gmail.com>
Cc: Wang Nan <wangnan0@huawei.com>
Fixes: 7e4b21b84c43 ("perf/scripts: Add Python scripting engine")
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/perf/util/trace-event-scripting.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
--- a/tools/perf/util/trace-event-scripting.c
+++ b/tools/perf/util/trace-event-scripting.c
@@ -95,7 +95,8 @@ static void register_python_scripting(st
if (err)
die("error registering py script extension");
- scripting_context = malloc(sizeof(struct scripting_context));
+ if (scripting_context == NULL)
+ scripting_context = malloc(sizeof(*scripting_context));
}
#ifdef NO_LIBPYTHON
@@ -159,7 +160,8 @@ static void register_perl_scripting(stru
if (err)
die("error registering pl script extension");
- scripting_context = malloc(sizeof(struct scripting_context));
+ if (scripting_context == NULL)
+ scripting_context = malloc(sizeof(*scripting_context));
}
#ifdef NO_LIBPERL
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 073/130] arm64/ptrace: Avoid uninitialised struct padding in fpr_set() |
| Message-ID | <t34Ej-1TK-35@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Martin <Dave.Martin@arm.com>
commit aeb1f39d814b2e21e5e5706a48834bfd553d0059 upstream.
This patch adds an explicit __reserved[] field to user_fpsimd_state
to replace what was previously unnamed padding.
This ensures that data in this region are propagated across
assignment rather than being left possibly uninitialised at the
destination.
Fixes: 60ffc30d5652 ("arm64: Exception handling")
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Acked-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>
---
arch/arm64/include/uapi/asm/ptrace.h | 1 +
1 file changed, 1 insertion(+)
--- a/arch/arm64/include/uapi/asm/ptrace.h
+++ b/arch/arm64/include/uapi/asm/ptrace.h
@@ -77,6 +77,7 @@ struct user_fpsimd_state {
__uint128_t vregs[32];
__u32 fpsr;
__u32 fpcr;
+ __u32 __reserved[2];
};
struct user_hwdebug_state {
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 016/130] perf mem: Fix --all-user/--all-kernel options |
| Message-ID | <t34Ei-1TK-31@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Jiri Olsa <jolsa@kernel.org>
commit 631ac41b46d293fb3ee43a809776c1663de8d9c6 upstream.
Removing extra '--' prefix.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Fixes: ad16511b0e40 ("perf mem: Add -U/-K (--all-user/--all-kernel) options")
Link: http://lkml.kernel.org/r/1481538943-21874-2-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/perf/builtin-mem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
--- a/tools/perf/builtin-mem.c
+++ b/tools/perf/builtin-mem.c
@@ -70,8 +70,8 @@ static int __cmd_record(int argc, const
OPT_UINTEGER(0, "ldlat", &perf_mem_events__loads_ldlat, "mem-loads latency"),
OPT_INCR('v', "verbose", &verbose,
"be more verbose (show counter open errors, etc)"),
- OPT_BOOLEAN('U', "--all-user", &all_user, "collect only user level data"),
- OPT_BOOLEAN('K', "--all-kernel", &all_kernel, "collect only kernel level data"),
+ OPT_BOOLEAN('U', "all-user", &all_user, "collect only user level data"),
+ OPT_BOOLEAN('K', "all-kernel", &all_kernel, "collect only kernel level data"),
OPT_END()
};
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 029/130] ARM: dts: omap3: Add DTS for Logic PD SOM-LV 37xx Dev Kit |
| Message-ID | <t34Ej-1TK-43@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Adam Ford <aford173@gmail.com>
commit 7245f67f86e847769f41dacad26bb8f5b5d74bf4 upstream.
Fixes: ("ab8dd3aed011 ARM: DTS: Add minimal Support for Logic PD
DM3730 SOM-LV")
This adds the dts file into the Makefile. This should have been included in
the original patch.
V2: Update patch description - same source code
V1: Original patch
Reviewed-by: Javier Martinez Canillas <javier@osg.samsung.com>
Signed-off-by: Adam Ford <aford173@gmail.com>
Signed-off-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/arm/boot/dts/Makefile | 1 +
1 file changed, 1 insertion(+)
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -485,6 +485,7 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
am3517-evm.dtb \
am3517_mt_ventoux.dtb \
logicpd-torpedo-37xx-devkit.dtb \
+ logicpd-som-lv-37xx-devkit.dtb \
omap3430-sdp.dtb \
omap3-beagle.dtb \
omap3-beagle-xm.dtb \
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 072/130] arm64/ptrace: Preserve previous registers for short regset write - 3 |
| Message-ID | <t34Ej-1TK-45@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Martin <Dave.Martin@arm.com>
commit a672401c00f82e4e19704aff361d9bad18003714 upstream.
Ensure that if userspace supplies insufficient data to
PTRACE_SETREGSET to fill all the registers, the thread's old
registers are preserved.
Fixes: 5d220ff9420f ("arm64: Better native ptrace support for compat tasks")
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Acked-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>
---
arch/arm64/kernel/ptrace.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -949,7 +949,7 @@ static int compat_tls_set(struct task_st
const void __user *ubuf)
{
int ret;
- compat_ulong_t tls;
+ compat_ulong_t tls = target->thread.tp_value;
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &tls, 0, -1);
if (ret)
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 079/130] libceph: introduce ceph_crypt() for in-place en/decryption |
| Message-ID | <t34Ej-1TK-47@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Ilya Dryomov <idryomov@gmail.com>
commit a45f795c65b479b4ba107b6ccde29b896d51ee98 upstream.
Starting with 4.9, kernel stacks may be vmalloced and therefore not
guaranteed to be physically contiguous; the new CONFIG_VMAP_STACK
option is enabled by default on x86. This makes it invalid to use
on-stack buffers with the crypto scatterlist API, as sg_set_buf()
expects a logical address and won't work with vmalloced addresses.
There isn't a different (e.g. kvec-based) crypto API we could switch
net/ceph/crypto.c to and the current scatterlist.h API isn't getting
updated to accommodate this use case. Allocating a new header and
padding for each operation is a non-starter, so do the en/decryption
in-place on a single pre-assembled (header + data + padding) heap
buffer. This is explicitly supported by the crypto API:
"... the caller may provide the same scatter/gather list for the
plaintext and cipher text. After the completion of the cipher
operation, the plaintext data is replaced with the ciphertext data
in case of an encryption and vice versa for a decryption."
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
net/ceph/crypto.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
net/ceph/crypto.h | 2 +
2 files changed, 89 insertions(+)
--- a/net/ceph/crypto.c
+++ b/net/ceph/crypto.c
@@ -526,6 +526,93 @@ int ceph_encrypt2(struct ceph_crypto_key
}
}
+static int ceph_aes_crypt(const struct ceph_crypto_key *key, bool encrypt,
+ void *buf, int buf_len, int in_len, int *pout_len)
+{
+ struct crypto_skcipher *tfm = ceph_crypto_alloc_cipher();
+ SKCIPHER_REQUEST_ON_STACK(req, tfm);
+ struct sg_table sgt;
+ struct scatterlist prealloc_sg;
+ char iv[AES_BLOCK_SIZE];
+ int pad_byte = AES_BLOCK_SIZE - (in_len & (AES_BLOCK_SIZE - 1));
+ int crypt_len = encrypt ? in_len + pad_byte : in_len;
+ int ret;
+
+ if (IS_ERR(tfm))
+ return PTR_ERR(tfm);
+
+ WARN_ON(crypt_len > buf_len);
+ if (encrypt)
+ memset(buf + in_len, pad_byte, pad_byte);
+ ret = setup_sgtable(&sgt, &prealloc_sg, buf, crypt_len);
+ if (ret)
+ goto out_tfm;
+
+ crypto_skcipher_setkey((void *)tfm, key->key, key->len);
+ memcpy(iv, aes_iv, AES_BLOCK_SIZE);
+
+ skcipher_request_set_tfm(req, tfm);
+ skcipher_request_set_callback(req, 0, NULL, NULL);
+ skcipher_request_set_crypt(req, sgt.sgl, sgt.sgl, crypt_len, iv);
+
+ /*
+ print_hex_dump(KERN_ERR, "key: ", DUMP_PREFIX_NONE, 16, 1,
+ key->key, key->len, 1);
+ print_hex_dump(KERN_ERR, " in: ", DUMP_PREFIX_NONE, 16, 1,
+ buf, crypt_len, 1);
+ */
+ if (encrypt)
+ ret = crypto_skcipher_encrypt(req);
+ else
+ ret = crypto_skcipher_decrypt(req);
+ skcipher_request_zero(req);
+ if (ret) {
+ pr_err("%s %scrypt failed: %d\n", __func__,
+ encrypt ? "en" : "de", ret);
+ goto out_sgt;
+ }
+ /*
+ print_hex_dump(KERN_ERR, "out: ", DUMP_PREFIX_NONE, 16, 1,
+ buf, crypt_len, 1);
+ */
+
+ if (encrypt) {
+ *pout_len = crypt_len;
+ } else {
+ pad_byte = *(char *)(buf + in_len - 1);
+ if (pad_byte > 0 && pad_byte <= AES_BLOCK_SIZE &&
+ in_len >= pad_byte) {
+ *pout_len = in_len - pad_byte;
+ } else {
+ pr_err("%s got bad padding %d on in_len %d\n",
+ __func__, pad_byte, in_len);
+ ret = -EPERM;
+ goto out_sgt;
+ }
+ }
+
+out_sgt:
+ teardown_sgtable(&sgt);
+out_tfm:
+ crypto_free_skcipher(tfm);
+ return ret;
+}
+
+int ceph_crypt(const struct ceph_crypto_key *key, bool encrypt,
+ void *buf, int buf_len, int in_len, int *pout_len)
+{
+ switch (key->type) {
+ case CEPH_CRYPTO_NONE:
+ *pout_len = in_len;
+ return 0;
+ case CEPH_CRYPTO_AES:
+ return ceph_aes_crypt(key, encrypt, buf, buf_len, in_len,
+ pout_len);
+ default:
+ return -ENOTSUPP;
+ }
+}
+
static int ceph_key_preparse(struct key_preparsed_payload *prep)
{
struct ceph_crypto_key *ckey;
--- a/net/ceph/crypto.h
+++ b/net/ceph/crypto.h
@@ -43,6 +43,8 @@ int ceph_encrypt2(struct ceph_crypto_key
void *dst, size_t *dst_len,
const void *src1, size_t src1_len,
const void *src2, size_t src2_len);
+int ceph_crypt(const struct ceph_crypto_key *key, bool encrypt,
+ void *buf, int buf_len, int in_len, int *pout_len);
int ceph_crypto_init(void);
void ceph_crypto_shutdown(void);
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 074/130] arm64/ptrace: Reject attempts to set incomplete hardware breakpoint fields |
| Message-ID | <t34Ej-1TK-41@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Dave Martin <Dave.Martin@arm.com>
commit ad9e202aa1ce571b1d7fed969d06f66067f8a086 upstream.
We cannot preserve partial fields for hardware breakpoints, because
the values written by userspace to the hardware breakpoint
registers can't subsequently be recovered intact from the hardware.
So, just reject attempts to write incomplete fields with -EINVAL.
Fixes: 478fcb2cdb23 ("arm64: Debugging support")
Signed-off-by: Dave Martin <Dave.Martin@arm.com>
Acked-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>
---
arch/arm64/kernel/ptrace.c | 4 ++++
1 file changed, 4 insertions(+)
--- a/arch/arm64/kernel/ptrace.c
+++ b/arch/arm64/kernel/ptrace.c
@@ -550,6 +550,8 @@ static int hw_break_set(struct task_stru
/* (address, ctrl) registers */
limit = regset->n * regset->size;
while (count && offset < limit) {
+ if (count < PTRACE_HBP_ADDR_SZ)
+ return -EINVAL;
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &addr,
offset, offset + PTRACE_HBP_ADDR_SZ);
if (ret)
@@ -559,6 +561,8 @@ static int hw_break_set(struct task_stru
return ret;
offset += PTRACE_HBP_ADDR_SZ;
+ if (!count)
+ break;
ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &ctrl,
offset, offset + PTRACE_HBP_CTRL_SZ);
if (ret)
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 019/130] perf callchain: Fixup help/config for no-unwinding |
| Message-ID | <t34Ej-1TK-53@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Rabin Vincent <rabinv@axis.com>
commit c56cb33b56c13493eeb95612f80e4dd6e35cd109 upstream.
Since 841e3558b2d ("perf callchain: Recording 'dwarf' callchains do not
need DWARF unwinding support"), --call-graph dwarf is allowed in 'perf
record' even without unwind support. A couple of other places don't
reflect this yet though: the help text should list dwarf as a valid
record mode and the dump_size config should be respected too.
Signed-off-by: Rabin Vincent <rabinv@axis.com>
Cc: He Kuang <hekuang@huawei.com>
Fixes: 841e3558b2de ("perf callchain: Recording 'dwarf' callchains do not need DWARF unwinding support")
Link: http://lkml.kernel.org/r/1470837148-7642-1-git-send-email-rabin.vincent@axis.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
tools/perf/util/callchain.c | 2 --
tools/perf/util/callchain.h | 4 ----
2 files changed, 6 deletions(-)
--- a/tools/perf/util/callchain.c
+++ b/tools/perf/util/callchain.c
@@ -193,7 +193,6 @@ int perf_callchain_config(const char *va
if (!strcmp(var, "record-mode"))
return parse_callchain_record_opt(value, &callchain_param);
-#ifdef HAVE_DWARF_UNWIND_SUPPORT
if (!strcmp(var, "dump-size")) {
unsigned long size = 0;
int ret;
@@ -203,7 +202,6 @@ int perf_callchain_config(const char *va
return ret;
}
-#endif
if (!strcmp(var, "print-type"))
return parse_callchain_mode(value);
if (!strcmp(var, "order"))
--- a/tools/perf/util/callchain.h
+++ b/tools/perf/util/callchain.h
@@ -11,11 +11,7 @@
#define CALLCHAIN_HELP "setup and enables call-graph (stack chain/backtrace):\n\n"
-#ifdef HAVE_DWARF_UNWIND_SUPPORT
# define RECORD_MODE_HELP HELP_PAD "record_mode:\tcall graph recording mode (fp|dwarf|lbr)\n"
-#else
-# define RECORD_MODE_HELP HELP_PAD "record_mode:\tcall graph recording mode (fp|lbr)\n"
-#endif
#define RECORD_SIZE_HELP \
HELP_PAD "record_size:\tif record_mode is 'dwarf', max size of stack recording (<bytes>)\n" \
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 025/130] ARM: dts: imx6q-cm-fx6: fix fec pinctrl |
| Message-ID | <t34Ej-1TK-57@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Christopher Spinrath <christopher.spinrath@rwth-aachen.de>
commit 72649a46067903d00f46e2ebef6543768224f1a0 upstream.
According to the schematics of CompuLab's sbc-fx6 baseboard and the
vendor devicetree GPIO_16 is *not* muxed to ENET_REF_CLK but to SPDIF_IN.
Remove the wrong pinctrl setting.
Fixes: 682d055e6ac5 ("ARM: dts: Add initial support for cm-fx6.")
Signed-off-by: Christopher Spinrath <christopher.spinrath@rwth-aachen.de>
Signed-off-by: Shawn Guo <shawnguo@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/arm/boot/dts/imx6q-cm-fx6.dts | 1 -
1 file changed, 1 deletion(-)
--- a/arch/arm/boot/dts/imx6q-cm-fx6.dts
+++ b/arch/arm/boot/dts/imx6q-cm-fx6.dts
@@ -183,7 +183,6 @@
MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b0b0
MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b0b0
MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
- MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
>;
};
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 069/130] arm64: avoid returning from bad_mode |
| Message-ID | <t34Ek-1TK-59@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Mark Rutland <mark.rutland@arm.com>
commit 7d9e8f71b989230bc613d121ca38507d34ada849 upstream.
Generally, taking an unexpected exception should be a fatal event, and
bad_mode is intended to cater for this. However, it should be possible
to contain unexpected synchronous exceptions from EL0 without bringing
the kernel down, by sending a SIGILL to the task.
We tried to apply this approach in commit 9955ac47f4ba1c95 ("arm64:
don't kill the kernel on a bad esr from el0"), by sending a signal for
any bad_mode call resulting from an EL0 exception.
However, this also applies to other unexpected exceptions, such as
SError and FIQ. The entry paths for these exceptions branch to bad_mode
without configuring the link register, and have no kernel_exit. Thus, if
we take one of these exceptions from EL0, bad_mode will eventually
return to the original user link register value.
This patch fixes this by introducing a new bad_el0_sync handler to cater
for the recoverable case, and restoring bad_mode to its original state,
whereby it calls panic() and never returns. The recoverable case
branches to bad_el0_sync with a bl, and returns to userspace via the
usual ret_to_user mechanism.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Fixes: 9955ac47f4ba1c95 ("arm64: don't kill the kernel on a bad esr from el0")
Reported-by: Mark Salter <msalter@redhat.com>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
arch/arm64/kernel/entry.S | 2 +-
arch/arm64/kernel/traps.c | 28 ++++++++++++++++++++++++----
2 files changed, 25 insertions(+), 5 deletions(-)
--- a/arch/arm64/kernel/entry.S
+++ b/arch/arm64/kernel/entry.S
@@ -624,7 +624,7 @@ el0_inv:
mov x0, sp
mov x1, #BAD_SYNC
mov x2, x25
- bl bad_mode
+ bl bad_el0_sync
b ret_to_user
ENDPROC(el0_sync)
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -596,17 +596,34 @@ const char *esr_get_class_string(u32 esr
}
/*
- * bad_mode handles the impossible case in the exception vector.
+ * bad_mode handles the impossible case in the exception vector. This is always
+ * fatal.
*/
asmlinkage void bad_mode(struct pt_regs *regs, int reason, unsigned int esr)
{
- siginfo_t info;
- void __user *pc = (void __user *)instruction_pointer(regs);
console_verbose();
pr_crit("Bad mode in %s handler detected on CPU%d, code 0x%08x -- %s\n",
handler[reason], smp_processor_id(), esr,
esr_get_class_string(esr));
+
+ die("Oops - bad mode", regs, 0);
+ local_irq_disable();
+ panic("bad mode");
+}
+
+/*
+ * bad_el0_sync handles unexpected, but potentially recoverable synchronous
+ * exceptions taken from EL0. Unlike bad_mode, this returns.
+ */
+asmlinkage void bad_el0_sync(struct pt_regs *regs, int reason, unsigned int esr)
+{
+ siginfo_t info;
+ void __user *pc = (void __user *)instruction_pointer(regs);
+ console_verbose();
+
+ pr_crit("Bad EL0 synchronous exception detected on CPU%d, code 0x%08x -- %s\n",
+ smp_processor_id(), esr, esr_get_class_string(esr));
__show_regs(regs);
info.si_signo = SIGILL;
@@ -614,7 +631,10 @@ asmlinkage void bad_mode(struct pt_regs
info.si_code = ILL_ILLOPC;
info.si_addr = pc;
- arm64_notify_die("Oops - bad mode", regs, &info, 0);
+ current->thread.fault_address = 0;
+ current->thread.fault_code = 0;
+
+ force_sig_info(info.si_signo, &info, current);
}
void __pte_error(const char *file, int line, unsigned long val)
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 049/130] mtd: nand: xway: fix build because of module functions |
| Message-ID | <t34Ek-1TK-61@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Hauke Mehrtens <hauke@hauke-m.de>
commit a2724663494f7313f53da10d8c0a729c5e3c4dea upstream.
Remove the usage of modules functions to make this driver compile
again. Otherwise an include of linux/modules.h would be needed.
Fixes: 024366750c2e ("mtd: nand: xway: convert to normal platform driver")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/mtd/nand/xway_nand.c | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
--- a/drivers/mtd/nand/xway_nand.c
+++ b/drivers/mtd/nand/xway_nand.c
@@ -232,7 +232,6 @@ static const struct of_device_id xway_na
{ .compatible = "lantiq,nand-xway" },
{},
};
-MODULE_DEVICE_TABLE(of, xway_nand_match);
static struct platform_driver xway_nand_driver = {
.probe = xway_nand_probe,
@@ -243,6 +242,4 @@ static struct platform_driver xway_nand_
},
};
-module_platform_driver(xway_nand_driver);
-
-MODULE_LICENSE("GPL");
+builtin_platform_driver(xway_nand_driver);
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-01-24 09:30 +0100 |
| Subject | [PATCH 4.9 033/130] rcu: Narrow early boot window of illegal synchronous grace periods |
| Message-ID | <t34Ej-1TK-49@gated-at.bofh.it> |
| In reply to | #1565558 |
4.9-stable review patch. If anyone has any objections, please let me know.
------------------
From: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
commit 52d7e48b86fc108e45a656d8e53e4237993c481d upstream.
The current preemptible RCU implementation goes through three phases
during bootup. In the first phase, there is only one CPU that is running
with preemption disabled, so that a no-op is a synchronous grace period.
In the second mid-boot phase, the scheduler is running, but RCU has
not yet gotten its kthreads spawned (and, for expedited grace periods,
workqueues are not yet running. During this time, any attempt to do
a synchronous grace period will hang the system (or complain bitterly,
depending). In the third and final phase, RCU is fully operational and
everything works normally.
This has been OK for some time, but there has recently been some
synchronous grace periods showing up during the second mid-boot phase.
This code worked "by accident" for awhile, but started failing as soon
as expedited RCU grace periods switched over to workqueues in commit
8b355e3bc140 ("rcu: Drive expedited grace periods from workqueue").
Note that the code was buggy even before this commit, as it was subject
to failure on real-time systems that forced all expedited grace periods
to run as normal grace periods (for example, using the rcu_normal ksysfs
parameter). The callchain from the failure case is as follows:
early_amd_iommu_init()
|-> acpi_put_table(ivrs_base);
|-> acpi_tb_put_table(table_desc);
|-> acpi_tb_invalidate_table(table_desc);
|-> acpi_tb_release_table(...)
|-> acpi_os_unmap_memory
|-> acpi_os_unmap_iomem
|-> acpi_os_map_cleanup
|-> synchronize_rcu_expedited
The kernel showing this callchain was built with CONFIG_PREEMPT_RCU=y,
which caused the code to try using workqueues before they were
initialized, which did not go well.
This commit therefore reworks RCU to permit synchronous grace periods
to proceed during this mid-boot phase. This commit is therefore a
fix to a regression introduced in v4.9, and is therefore being put
forward post-merge-window in v4.10.
This commit sets a flag from the existing rcu_scheduler_starting()
function which causes all synchronous grace periods to take the expedited
path. The expedited path now checks this flag, using the requesting task
to drive the expedited grace period forward during the mid-boot phase.
Finally, this flag is updated by a core_initcall() function named
rcu_exp_runtime_mode(), which causes the runtime codepaths to be used.
Note that this arrangement assumes that tasks are not sent POSIX signals
(or anything similar) from the time that the first task is spawned
through core_initcall() time.
Fixes: 8b355e3bc140 ("rcu: Drive expedited grace periods from workqueue")
Reported-by: "Zheng, Lv" <lv.zheng@intel.com>
Reported-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Tested-by: Stan Kain <stan.kain@gmail.com>
Tested-by: Ivan <waffolz@hotmail.com>
Tested-by: Emanuel Castelo <emanuel.castelo@gmail.com>
Tested-by: Bruno Pesavento <bpesavento@infinito.it>
Tested-by: Borislav Petkov <bp@suse.de>
Tested-by: Frederic Bezies <fredbezies@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
include/linux/rcupdate.h | 4 +++
kernel/rcu/rcu.h | 1
kernel/rcu/tiny_plugin.h | 9 ++++++--
kernel/rcu/tree.c | 33 ++++++++++++++++++-----------
kernel/rcu/tree_exp.h | 52 +++++++++++++++++++++++++++++++++++++----------
kernel/rcu/tree_plugin.h | 2 -
kernel/rcu/update.c | 38 +++++++++++++++++++++++++++-------
7 files changed, 104 insertions(+), 35 deletions(-)
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -444,6 +444,10 @@ bool __rcu_is_watching(void);
#error "Unknown RCU implementation specified to kernel configuration"
#endif
+#define RCU_SCHEDULER_INACTIVE 0
+#define RCU_SCHEDULER_INIT 1
+#define RCU_SCHEDULER_RUNNING 2
+
/*
* init_rcu_head_on_stack()/destroy_rcu_head_on_stack() are needed for dynamic
* initialization and destruction of rcu_head on the stack. rcu_head structures
--- a/kernel/rcu/rcu.h
+++ b/kernel/rcu/rcu.h
@@ -136,6 +136,7 @@ int rcu_jiffies_till_stall_check(void);
#define TPS(x) tracepoint_string(x)
void rcu_early_boot_tests(void);
+void rcu_test_sync_prims(void);
/*
* This function really isn't for public consumption, but RCU is special in
--- a/kernel/rcu/tiny_plugin.h
+++ b/kernel/rcu/tiny_plugin.h
@@ -60,12 +60,17 @@ EXPORT_SYMBOL_GPL(rcu_scheduler_active);
/*
* During boot, we forgive RCU lockdep issues. After this function is
- * invoked, we start taking RCU lockdep issues seriously.
+ * invoked, we start taking RCU lockdep issues seriously. Note that unlike
+ * Tree RCU, Tiny RCU transitions directly from RCU_SCHEDULER_INACTIVE
+ * to RCU_SCHEDULER_RUNNING, skipping the RCU_SCHEDULER_INIT stage.
+ * The reason for this is that Tiny RCU does not need kthreads, so does
+ * not have to care about the fact that the scheduler is half-initialized
+ * at a certain phase of the boot process.
*/
void __init rcu_scheduler_starting(void)
{
WARN_ON(nr_context_switches() > 0);
- rcu_scheduler_active = 1;
+ rcu_scheduler_active = RCU_SCHEDULER_RUNNING;
}
#endif /* #ifdef CONFIG_DEBUG_LOCK_ALLOC */
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -127,13 +127,16 @@ int rcu_num_nodes __read_mostly = NUM_RC
int sysctl_panic_on_rcu_stall __read_mostly;
/*
- * The rcu_scheduler_active variable transitions from zero to one just
- * before the first task is spawned. So when this variable is zero, RCU
- * can assume that there is but one task, allowing RCU to (for example)
+ * The rcu_scheduler_active variable is initialized to the value
+ * RCU_SCHEDULER_INACTIVE and transitions RCU_SCHEDULER_INIT just before the
+ * first task is spawned. So when this variable is RCU_SCHEDULER_INACTIVE,
+ * RCU can assume that there is but one task, allowing RCU to (for example)
* optimize synchronize_rcu() to a simple barrier(). When this variable
- * is one, RCU must actually do all the hard work required to detect real
- * grace periods. This variable is also used to suppress boot-time false
- * positives from lockdep-RCU error checking.
+ * is RCU_SCHEDULER_INIT, RCU must actually do all the hard work required
+ * to detect real grace periods. This variable is also used to suppress
+ * boot-time false positives from lockdep-RCU error checking. Finally, it
+ * transitions from RCU_SCHEDULER_INIT to RCU_SCHEDULER_RUNNING after RCU
+ * is fully initialized, including all of its kthreads having been spawned.
*/
int rcu_scheduler_active __read_mostly;
EXPORT_SYMBOL_GPL(rcu_scheduler_active);
@@ -3985,18 +3988,22 @@ static int __init rcu_spawn_gp_kthread(v
early_initcall(rcu_spawn_gp_kthread);
/*
- * This function is invoked towards the end of the scheduler's initialization
- * process. Before this is called, the idle task might contain
- * RCU read-side critical sections (during which time, this idle
- * task is booting the system). After this function is called, the
- * idle tasks are prohibited from containing RCU read-side critical
- * sections. This function also enables RCU lockdep checking.
+ * This function is invoked towards the end of the scheduler's
+ * initialization process. Before this is called, the idle task might
+ * contain synchronous grace-period primitives (during which time, this idle
+ * task is booting the system, and such primitives are no-ops). After this
+ * function is called, any synchronous grace-period primitives are run as
+ * expedited, with the requesting task driving the grace period forward.
+ * A later core_initcall() rcu_exp_runtime_mode() will switch to full
+ * runtime RCU functionality.
*/
void rcu_scheduler_starting(void)
{
WARN_ON(num_online_cpus() != 1);
WARN_ON(nr_context_switches() > 0);
- rcu_scheduler_active = 1;
+ rcu_test_sync_prims();
+ rcu_scheduler_active = RCU_SCHEDULER_INIT;
+ rcu_test_sync_prims();
}
/*
--- a/kernel/rcu/tree_exp.h
+++ b/kernel/rcu/tree_exp.h
@@ -522,18 +522,28 @@ struct rcu_exp_work {
};
/*
+ * Common code to drive an expedited grace period forward, used by
+ * workqueues and mid-boot-time tasks.
+ */
+static void rcu_exp_sel_wait_wake(struct rcu_state *rsp,
+ smp_call_func_t func, unsigned long s)
+{
+ /* Initialize the rcu_node tree in preparation for the wait. */
+ sync_rcu_exp_select_cpus(rsp, func);
+
+ /* Wait and clean up, including waking everyone. */
+ rcu_exp_wait_wake(rsp, s);
+}
+
+/*
* Work-queue handler to drive an expedited grace period forward.
*/
static void wait_rcu_exp_gp(struct work_struct *wp)
{
struct rcu_exp_work *rewp;
- /* Initialize the rcu_node tree in preparation for the wait. */
rewp = container_of(wp, struct rcu_exp_work, rew_work);
- sync_rcu_exp_select_cpus(rewp->rew_rsp, rewp->rew_func);
-
- /* Wait and clean up, including waking everyone. */
- rcu_exp_wait_wake(rewp->rew_rsp, rewp->rew_s);
+ rcu_exp_sel_wait_wake(rewp->rew_rsp, rewp->rew_func, rewp->rew_s);
}
/*
@@ -559,12 +569,18 @@ static void _synchronize_rcu_expedited(s
if (exp_funnel_lock(rsp, s))
return; /* Someone else did our work for us. */
- /* Marshall arguments and schedule the expedited grace period. */
- rew.rew_func = func;
- rew.rew_rsp = rsp;
- rew.rew_s = s;
- INIT_WORK_ONSTACK(&rew.rew_work, wait_rcu_exp_gp);
- schedule_work(&rew.rew_work);
+ /* Ensure that load happens before action based on it. */
+ if (unlikely(rcu_scheduler_active == RCU_SCHEDULER_INIT)) {
+ /* Direct call during scheduler init and early_initcalls(). */
+ rcu_exp_sel_wait_wake(rsp, func, s);
+ } else {
+ /* Marshall arguments & schedule the expedited grace period. */
+ rew.rew_func = func;
+ rew.rew_rsp = rsp;
+ rew.rew_s = s;
+ INIT_WORK_ONSTACK(&rew.rew_work, wait_rcu_exp_gp);
+ schedule_work(&rew.rew_work);
+ }
/* Wait for expedited grace period to complete. */
rdp = per_cpu_ptr(rsp->rda, raw_smp_processor_id());
@@ -666,6 +682,8 @@ void synchronize_rcu_expedited(void)
{
struct rcu_state *rsp = rcu_state_p;
+ if (rcu_scheduler_active == RCU_SCHEDULER_INACTIVE)
+ return;
_synchronize_rcu_expedited(rsp, sync_rcu_exp_handler);
}
EXPORT_SYMBOL_GPL(synchronize_rcu_expedited);
@@ -683,3 +701,15 @@ void synchronize_rcu_expedited(void)
EXPORT_SYMBOL_GPL(synchronize_rcu_expedited);
#endif /* #else #ifdef CONFIG_PREEMPT_RCU */
+
+/*
+ * Switch to run-time mode once Tree RCU has fully initialized.
+ */
+static int __init rcu_exp_runtime_mode(void)
+{
+ rcu_test_sync_prims();
+ rcu_scheduler_active = RCU_SCHEDULER_RUNNING;
+ rcu_test_sync_prims();
+ return 0;
+}
+core_initcall(rcu_exp_runtime_mode);
--- a/kernel/rcu/tree_plugin.h
+++ b/kernel/rcu/tree_plugin.h
@@ -670,7 +670,7 @@ void synchronize_rcu(void)
lock_is_held(&rcu_lock_map) ||
lock_is_held(&rcu_sched_lock_map),
"Illegal synchronize_rcu() in RCU read-side critical section");
- if (!rcu_scheduler_active)
+ if (rcu_scheduler_active == RCU_SCHEDULER_INACTIVE)
return;
if (rcu_gp_is_expedited())
synchronize_rcu_expedited();
--- a/kernel/rcu/update.c
+++ b/kernel/rcu/update.c
@@ -121,11 +121,14 @@ EXPORT_SYMBOL(rcu_read_lock_sched_held);
* Should expedited grace-period primitives always fall back to their
* non-expedited counterparts? Intended for use within RCU. Note
* that if the user specifies both rcu_expedited and rcu_normal, then
- * rcu_normal wins.
+ * rcu_normal wins. (Except during the time period during boot from
+ * when the first task is spawned until the rcu_exp_runtime_mode()
+ * core_initcall() is invoked, at which point everything is expedited.)
*/
bool rcu_gp_is_normal(void)
{
- return READ_ONCE(rcu_normal);
+ return READ_ONCE(rcu_normal) &&
+ rcu_scheduler_active != RCU_SCHEDULER_INIT;
}
EXPORT_SYMBOL_GPL(rcu_gp_is_normal);
@@ -135,13 +138,14 @@ static atomic_t rcu_expedited_nesting =
/*
* Should normal grace-period primitives be expedited? Intended for
* use within RCU. Note that this function takes the rcu_expedited
- * sysfs/boot variable into account as well as the rcu_expedite_gp()
- * nesting. So looping on rcu_unexpedite_gp() until rcu_gp_is_expedited()
- * returns false is a -really- bad idea.
+ * sysfs/boot variable and rcu_scheduler_active into account as well
+ * as the rcu_expedite_gp() nesting. So looping on rcu_unexpedite_gp()
+ * until rcu_gp_is_expedited() returns false is a -really- bad idea.
*/
bool rcu_gp_is_expedited(void)
{
- return rcu_expedited || atomic_read(&rcu_expedited_nesting);
+ return rcu_expedited || atomic_read(&rcu_expedited_nesting) ||
+ rcu_scheduler_active == RCU_SCHEDULER_INIT;
}
EXPORT_SYMBOL_GPL(rcu_gp_is_expedited);
@@ -257,7 +261,7 @@ EXPORT_SYMBOL_GPL(rcu_callback_map);
int notrace debug_lockdep_rcu_enabled(void)
{
- return rcu_scheduler_active && debug_locks &&
+ return rcu_scheduler_active != RCU_SCHEDULER_INACTIVE && debug_locks &&
current->lockdep_recursion == 0;
}
EXPORT_SYMBOL_GPL(debug_lockdep_rcu_enabled);
@@ -591,7 +595,7 @@ EXPORT_SYMBOL_GPL(call_rcu_tasks);
void synchronize_rcu_tasks(void)
{
/* Complain if the scheduler has not started. */
- RCU_LOCKDEP_WARN(!rcu_scheduler_active,
+ RCU_LOCKDEP_WARN(rcu_scheduler_active == RCU_SCHEDULER_INACTIVE,
"synchronize_rcu_tasks called too soon");
/* Wait for the grace period. */
@@ -813,6 +817,23 @@ static void rcu_spawn_tasks_kthread(void
#endif /* #ifdef CONFIG_TASKS_RCU */
+/*
+ * Test each non-SRCU synchronous grace-period wait API. This is
+ * useful just after a change in mode for these primitives, and
+ * during early boot.
+ */
+void rcu_test_sync_prims(void)
+{
+ if (!IS_ENABLED(CONFIG_PROVE_RCU))
+ return;
+ synchronize_rcu();
+ synchronize_rcu_bh();
+ synchronize_sched();
+ synchronize_rcu_expedited();
+ synchronize_rcu_bh_expedited();
+ synchronize_sched_expedited();
+}
+
#ifdef CONFIG_PROVE_RCU
/*
@@ -865,6 +886,7 @@ void rcu_early_boot_tests(void)
early_boot_test_call_rcu_bh();
if (rcu_self_test_sched)
early_boot_test_call_rcu_sched();
+ rcu_test_sync_prims();
}
static int rcu_verify_early_boot_tests(void)
[toc] | [prev] | [next] | [standalone]
Page 5 of 6 — ← Prev page 1 2 3 4 [5] 6 Next page →
Back to top | Article view | linux.kernel
csiph-web