diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2014-12-20 14:38:10 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2014-12-20 14:38:10 +0000 |
commit | 15a8be5cc01c497595e5d4cbac95e402e8730421 (patch) | |
tree | 38a0a2c3d830e2db90666a0dd203f0d7e22b9895 /freed-ora/current | |
parent | a53d3c0e9e21b27820d455eccf588c81c8f88d6e (diff) | |
download | linux-libre-raptor-15a8be5cc01c497595e5d4cbac95e402e8730421.tar.gz linux-libre-raptor-15a8be5cc01c497595e5d4cbac95e402e8730421.zip |
3.17.7-300.fc21.gnu
Diffstat (limited to 'freed-ora/current')
69 files changed, 1406 insertions, 65 deletions
diff --git a/freed-ora/current/f21/ACPI-Limit-access-to-custom_method.patch b/freed-ora/current/f21/ACPI-Limit-access-to-custom_method.patch index 636c25b4c..21257b8ce 100644 --- a/freed-ora/current/f21/ACPI-Limit-access-to-custom_method.patch +++ b/freed-ora/current/f21/ACPI-Limit-access-to-custom_method.patch @@ -26,5 +26,5 @@ index c68e72414a67..4277938af700 100644 /* parse the table header to get the table length */ if (count <= sizeof(struct acpi_table_header)) -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/ARM-tegra-usb-no-reset.patch b/freed-ora/current/f21/ARM-tegra-usb-no-reset.patch index 795f3a379..f67d5038e 100644 --- a/freed-ora/current/f21/ARM-tegra-usb-no-reset.patch +++ b/freed-ora/current/f21/ARM-tegra-usb-no-reset.patch @@ -27,5 +27,5 @@ index 674c262907d9..d3e4c73d56a2 100644 * disconnected while waiting for the lock to succeed. */ usb_lock_device(hdev); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/Add-EFI-signature-data-types.patch b/freed-ora/current/f21/Add-EFI-signature-data-types.patch index b6df877a9..49417b042 100644 --- a/freed-ora/current/f21/Add-EFI-signature-data-types.patch +++ b/freed-ora/current/f21/Add-EFI-signature-data-types.patch @@ -52,5 +52,5 @@ index ebe6a24cc1e1..5ce40e215f15 100644 * All runtime access to EFI goes through this structure: */ -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/Add-an-EFI-signature-blob-parser-and-key-loader.patch b/freed-ora/current/f21/Add-an-EFI-signature-blob-parser-and-key-loader.patch index e78b065cd..0a121de2b 100644 --- a/freed-ora/current/f21/Add-an-EFI-signature-blob-parser-and-key-loader.patch +++ b/freed-ora/current/f21/Add-an-EFI-signature-blob-parser-and-key-loader.patch @@ -174,5 +174,5 @@ index 5ce40e215f15..41359e548bcb 100644 * efi_range_is_wc - check the WC bit on an address range * @start: starting kvirt address -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/Add-option-to-automatically-enforce-module-signature.patch b/freed-ora/current/f21/Add-option-to-automatically-enforce-module-signature.patch index 1b8e887f6..e89f2df57 100644 --- a/freed-ora/current/f21/Add-option-to-automatically-enforce-module-signature.patch +++ b/freed-ora/current/f21/Add-option-to-automatically-enforce-module-signature.patch @@ -181,5 +181,5 @@ index f1d78afbe29f..ec12c156ea61 100644 { #ifdef CONFIG_MODULE_SIG -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/Add-secure_modules-call.patch b/freed-ora/current/f21/Add-secure_modules-call.patch index 18c8c8252..d39399e76 100644 --- a/freed-ora/current/f21/Add-secure_modules-call.patch +++ b/freed-ora/current/f21/Add-secure_modules-call.patch @@ -59,5 +59,5 @@ index 1c47139d161c..f1d78afbe29f 100644 +} +EXPORT_SYMBOL(secure_modules); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/Add-sysrq-option-to-disable-secure-boot-mode.patch b/freed-ora/current/f21/Add-sysrq-option-to-disable-secure-boot-mode.patch index ca29c5c8a..6c35c2f79 100644 --- a/freed-ora/current/f21/Add-sysrq-option-to-disable-secure-boot-mode.patch +++ b/freed-ora/current/f21/Add-sysrq-option-to-disable-secure-boot-mode.patch @@ -244,5 +244,5 @@ index ec12c156ea61..1db033284ad3 100644 static int param_set_bool_enable_only(const char *val, const struct kernel_param *kp) -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch b/freed-ora/current/f21/HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch index 8d12cf3d6..87bd4f226 100644 --- a/freed-ora/current/f21/HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch +++ b/freed-ora/current/f21/HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch @@ -80,5 +80,5 @@ index 5014bb567b29..cebfaf288bd3 100644 { USB_VENDOR_ID_NEXIO, USB_DEVICE_ID_NEXIO_MULTITOUCH_PTI0750, HID_QUIRK_NO_INIT_REPORTS }, { USB_VENDOR_ID_NOVATEK, USB_DEVICE_ID_NOVATEK_MOUSE, HID_QUIRK_NO_INIT_REPORTS }, -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/HID-wacom-Add-support-for-the-Cintiq-Companion.patch b/freed-ora/current/f21/HID-wacom-Add-support-for-the-Cintiq-Companion.patch index 276fa103f..3a09a56b1 100644 --- a/freed-ora/current/f21/HID-wacom-Add-support-for-the-Cintiq-Companion.patch +++ b/freed-ora/current/f21/HID-wacom-Add-support-for-the-Cintiq-Companion.patch @@ -42,5 +42,5 @@ index aa6a08eb7ad6..c3cbbfb5811f 100644 { USB_DEVICE_WACOM(0x314) }, { USB_DEVICE_WACOM(0x315) }, -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/KEYS-Add-a-system-blacklist-keyring.patch b/freed-ora/current/f21/KEYS-Add-a-system-blacklist-keyring.patch index 17ef25bf1..0a17f6c4e 100644 --- a/freed-ora/current/f21/KEYS-Add-a-system-blacklist-keyring.patch +++ b/freed-ora/current/f21/KEYS-Add-a-system-blacklist-keyring.patch @@ -107,5 +107,5 @@ index 875f64e8935b..c15e93f5a418 100644 } -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/Kbuild-Add-an-option-to-enable-GCC-VTA.patch b/freed-ora/current/f21/Kbuild-Add-an-option-to-enable-GCC-VTA.patch new file mode 100644 index 000000000..6a33a6fc9 --- /dev/null +++ b/freed-ora/current/f21/Kbuild-Add-an-option-to-enable-GCC-VTA.patch @@ -0,0 +1,92 @@ +From: Josh Stone <jistone@redhat.com> +Date: Fri, 21 Nov 2014 10:40:00 -0800 +Subject: [PATCH] Kbuild: Add an option to enable GCC VTA +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Due to recent codegen issues, gcc -fvar-tracking-assignments was +unconditionally disabled in commit 2062afb4f804a ("Fix gcc-4.9.0 +miscompilation of load_balance() in scheduler"). However, this reduces +the debuginfo coverage for variable locations, especially in inline +functions. VTA is certainly not perfect either in those cases, but it +is much better than without. With compiler versions that have fixed the +codegen bugs, we would prefer to have the better details for SystemTap, +and surely other debuginfo consumers like perf will benefit as well. + +This patch simply makes CONFIG_DEBUG_INFO_VTA an option. I considered +Frank and Linus's discussion of a cc-option-like -fcompare-debug test, +but I'm convinced that a narrow test of an arch-specific codegen issue +is not really useful. GCC has their own regression tests for this, so +I'd suggest GCC_COMPARE_DEBUG=-fvar-tracking-assignments-toggle is more +useful for kernel developers to test confidence. + +In fact, I ran into a couple more issues when testing for this patch[1], +although neither of those had any codegen impact. + [1] https://bugzilla.redhat.com/show_bug.cgi?id=1140872 + +With gcc-4.9.2-1.fc22, I can now build v3.18-rc5 with Fedora's i686 and +x86_64 configs, and this is completely clean with GCC_COMPARE_DEBUG. + +Cc: Frank Ch. Eigler <fche@redhat.com> +Cc: Jakub Jelinek <jakub@redhat.com> +Cc: Josh Boyer <jwboyer@fedoraproject.org> +Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +Cc: Linus Torvalds <torvalds@linux-foundation.org> +Cc: Andrew Morton <akpm@linux-foundation.org> +Cc: Markus Trippelsdorf <markus@trippelsdorf.de> +Cc: Michel Dänzer <michel@daenzer.net> +Signed-off-by: Josh Stone <jistone@redhat.com> +--- + Makefile | 4 ++++ + lib/Kconfig.debug | 18 +++++++++++++++++- + 2 files changed, 21 insertions(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 267f8936ff69..452a6738969b 100644 +--- a/Makefile ++++ b/Makefile +@@ -709,7 +709,11 @@ KBUILD_CFLAGS += -fomit-frame-pointer + endif + endif + ++ifdef CONFIG_DEBUG_INFO_VTA ++KBUILD_CFLAGS += $(call cc-option, -fvar-tracking-assignments) ++else + KBUILD_CFLAGS += $(call cc-option, -fno-var-tracking-assignments) ++endif + + ifdef CONFIG_DEBUG_INFO + ifdef CONFIG_DEBUG_INFO_SPLIT +diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug +index a28590083622..ce1107439d7d 100644 +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug +@@ -165,7 +165,23 @@ config DEBUG_INFO_DWARF4 + Generate dwarf4 debug info. This requires recent versions + of gcc and gdb. It makes the debug information larger. + But it significantly improves the success of resolving +- variables in gdb on optimized code. ++ variables in gdb on optimized code. The gcc docs also ++ recommend enabling -fvar-tracking-assignments for maximum ++ benefit. (see DEBUG_INFO_VTA) ++ ++config DEBUG_INFO_VTA ++ bool "Enable var-tracking-assignments for debuginfo" ++ depends on DEBUG_INFO ++ help ++ Enable gcc -fvar-tracking-assignments for improved debug ++ information on variable locations in optimized code. Per ++ gcc, DEBUG_INFO_DWARF4 is recommended for best use of VTA. ++ ++ VTA has been implicated in codegen bugs (gcc PR61801, ++ PR61904), so this may deserve some caution. One can set ++ GCC_COMPARE_DEBUG=-fvar-tracking-assignments-toggle in the ++ environment to automatically compile everything both ways, ++ generating an error if anything differs. + + config ENABLE_WARN_DEPRECATED + bool "Enable __deprecated logic" +-- +2.1.0 + diff --git a/freed-ora/current/f21/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch b/freed-ora/current/f21/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch index a23a15cd3..3e02ef2bc 100644 --- a/freed-ora/current/f21/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch +++ b/freed-ora/current/f21/MODSIGN-Import-certificates-from-UEFI-Secure-Boot.patch @@ -181,5 +181,5 @@ index 000000000000..94b0eb38a284 +} +late_initcall(load_uefi_certs); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/MODSIGN-Support-not-importing-certs-from-db.patch b/freed-ora/current/f21/MODSIGN-Support-not-importing-certs-from-db.patch index 6ed99e627..60c090b2b 100644 --- a/freed-ora/current/f21/MODSIGN-Support-not-importing-certs-from-db.patch +++ b/freed-ora/current/f21/MODSIGN-Support-not-importing-certs-from-db.patch @@ -79,5 +79,5 @@ index 94b0eb38a284..ae28b974d49a 100644 mok = get_cert_list(L"MokListRT", &mok_var, &moksize); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/PCI-Lock-down-BAR-access-when-module-security-is-ena.patch b/freed-ora/current/f21/PCI-Lock-down-BAR-access-when-module-security-is-ena.patch index 46f7261b6..691e5e8d2 100644 --- a/freed-ora/current/f21/PCI-Lock-down-BAR-access-when-module-security-is-ena.patch +++ b/freed-ora/current/f21/PCI-Lock-down-BAR-access-when-module-security-is-ena.patch @@ -112,5 +112,5 @@ index b91c4da68365..98f5637304d1 100644 dev = pci_get_bus_and_slot(bus, dfn); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch b/freed-ora/current/f21/Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch index 003bfec72..812a50bae 100644 --- a/freed-ora/current/f21/Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch +++ b/freed-ora/current/f21/Restrict-dev-mem-and-dev-kmem-when-module-loading-is.patch @@ -37,5 +37,5 @@ index cdf839f9defe..c63cf93b00eb 100644 unsigned long to_write = min_t(unsigned long, count, (unsigned long)high_memory - p); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/Revert-Revert-ACPI-video-change-acpi-video-brightnes.patch b/freed-ora/current/f21/Revert-Revert-ACPI-video-change-acpi-video-brightnes.patch index a733945f5..16d28b706 100644 --- a/freed-ora/current/f21/Revert-Revert-ACPI-video-change-acpi-video-brightnes.patch +++ b/freed-ora/current/f21/Revert-Revert-ACPI-video-change-acpi-video-brightnes.patch @@ -41,5 +41,5 @@ index 8e7e18567ae6..a3d293806f96 100644 /* -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/acpi-Ignore-acpi_rsdp-kernel-parameter-when-module-l.patch b/freed-ora/current/f21/acpi-Ignore-acpi_rsdp-kernel-parameter-when-module-l.patch index cea06c30f..74477a51b 100644 --- a/freed-ora/current/f21/acpi-Ignore-acpi_rsdp-kernel-parameter-when-module-l.patch +++ b/freed-ora/current/f21/acpi-Ignore-acpi_rsdp-kernel-parameter-when-module-l.patch @@ -34,5 +34,5 @@ index 3abe9b223ba7..ee8f11cf65da 100644 #endif -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch b/freed-ora/current/f21/arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch index e95955deb..0c01d8a92 100644 --- a/freed-ora/current/f21/arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch +++ b/freed-ora/current/f21/arm-dts-am335x-bone-common-add-uart2_pins-uart4_pins.patch @@ -41,5 +41,5 @@ index 86cdb52dbf8a..db4518ef755d 100644 pinctrl-single,pins = < 0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr1.clkout2 */ -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/arm-dts-am335x-bone-common-enable-and-use-i2c2.patch b/freed-ora/current/f21/arm-dts-am335x-bone-common-enable-and-use-i2c2.patch index 04efe225a..dd40d2806 100644 --- a/freed-ora/current/f21/arm-dts-am335x-bone-common-enable-and-use-i2c2.patch +++ b/freed-ora/current/f21/arm-dts-am335x-bone-common-enable-and-use-i2c2.patch @@ -65,5 +65,5 @@ index bde1777b62be..c7357bcc7d5c 100644 /include/ "tps65217.dtsi" -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/arm-dts-am335x-bone-common-setup-default-pinmux-http.patch b/freed-ora/current/f21/arm-dts-am335x-bone-common-setup-default-pinmux-http.patch index 180055d44..5ffb64ba4 100644 --- a/freed-ora/current/f21/arm-dts-am335x-bone-common-setup-default-pinmux-http.patch +++ b/freed-ora/current/f21/arm-dts-am335x-bone-common-setup-default-pinmux-http.patch @@ -175,5 +175,5 @@ index c7357bcc7d5c..86cdb52dbf8a 100644 + }; +}; -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/arm-dts-am335x-boneblack-add-cpu0-opp-points.patch b/freed-ora/current/f21/arm-dts-am335x-boneblack-add-cpu0-opp-points.patch index 2c10bfa4f..8b2e49ee8 100644 --- a/freed-ora/current/f21/arm-dts-am335x-boneblack-add-cpu0-opp-points.patch +++ b/freed-ora/current/f21/arm-dts-am335x-boneblack-add-cpu0-opp-points.patch @@ -37,5 +37,5 @@ index bf5349165542..acfff3befff5 100644 compatible = "ti,tilcdc,slave"; i2c = <&i2c0>; -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/arm-dts-am335x-boneblack-lcdc-add-panel-info.patch b/freed-ora/current/f21/arm-dts-am335x-boneblack-lcdc-add-panel-info.patch index 00511f50e..630af37ea 100644 --- a/freed-ora/current/f21/arm-dts-am335x-boneblack-lcdc-add-panel-info.patch +++ b/freed-ora/current/f21/arm-dts-am335x-boneblack-lcdc-add-panel-info.patch @@ -34,5 +34,5 @@ index 305975d3f531..bf5349165542 100644 }; }; -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/arm-dts-sun7i-bananapi.patch b/freed-ora/current/f21/arm-dts-sun7i-bananapi.patch index 0628096b9..ca0d72718 100644 --- a/freed-ora/current/f21/arm-dts-sun7i-bananapi.patch +++ b/freed-ora/current/f21/arm-dts-sun7i-bananapi.patch @@ -209,5 +209,5 @@ index 000000000000..7214475a3c36 + }; +}; -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/arm-highbank-l2-reverts.patch b/freed-ora/current/f21/arm-highbank-l2-reverts.patch index f1e6d45d3..e93025543 100644 --- a/freed-ora/current/f21/arm-highbank-l2-reverts.patch +++ b/freed-ora/current/f21/arm-highbank-l2-reverts.patch @@ -56,5 +56,5 @@ index 8c35ae4ff176..38e1dc3b4c6e 100644 .init_machine = highbank_init, .dt_compat = highbank_match, -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/arm-i.MX6-Utilite-device-dtb.patch b/freed-ora/current/f21/arm-i.MX6-Utilite-device-dtb.patch index 0354f7547..826967fca 100644 --- a/freed-ora/current/f21/arm-i.MX6-Utilite-device-dtb.patch +++ b/freed-ora/current/f21/arm-i.MX6-Utilite-device-dtb.patch @@ -61,5 +61,5 @@ index 99b46f8030ad..8b6ddd16dcc5 100644 + status = "okay"; +}; -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/asus-wmi-Restrict-debugfs-interface-when-module-load.patch b/freed-ora/current/f21/asus-wmi-Restrict-debugfs-interface-when-module-load.patch index babfe87ef..01d2c9386 100644 --- a/freed-ora/current/f21/asus-wmi-Restrict-debugfs-interface-when-module-load.patch +++ b/freed-ora/current/f21/asus-wmi-Restrict-debugfs-interface-when-module-load.patch @@ -49,5 +49,5 @@ index 21fc932da3a1..c6d42ad95c08 100644 1, asus->debug.method_id, &input, &output); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/ath9k-rx-dma-stop-check.patch b/freed-ora/current/f21/ath9k-rx-dma-stop-check.patch index 32884eb65..c1034a057 100644 --- a/freed-ora/current/f21/ath9k-rx-dma-stop-check.patch +++ b/freed-ora/current/f21/ath9k-rx-dma-stop-check.patch @@ -37,5 +37,5 @@ index 275205ab5f15..bb842623bdf6 100644 "DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x DMADBG_7=0x%08x\n", AH_RX_STOP_DMA_TIMEOUT / 1000, -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch b/freed-ora/current/f21/cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch new file mode 100644 index 000000000..fb87d7810 --- /dev/null +++ b/freed-ora/current/f21/cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch @@ -0,0 +1,41 @@ +From: Emmanuel Grumbach <emmanuel.grumbach@intel.com> +Date: Tue, 2 Dec 2014 09:53:25 +0200 +Subject: [PATCH] cfg80211: don't WARN about two consecutive Country IE hint + +This can happen and there is no point in added more +detection code lower in the stack. Catching these in one +single point (cfg80211) is enough. Stop WARNING about this +case. + +This fixes: +https://bugzilla.kernel.org/show_bug.cgi?id=89001 + +Cc: <stable@vger.kernel.org> +Fixes: 2f1c6c572d7b ("cfg80211: process non country IE conflicting first") +Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> +Acked-by: Luis R. Rodriguez <mcgrof@suse.com> +--- + net/wireless/reg.c | 7 ++----- + 1 file changed, 2 insertions(+), 5 deletions(-) + +diff --git a/net/wireless/reg.c b/net/wireless/reg.c +index 1afdf45db38f..e676723e29e2 100644 +--- a/net/wireless/reg.c ++++ b/net/wireless/reg.c +@@ -1799,11 +1799,8 @@ __reg_process_hint_country_ie(struct wiphy *wiphy, + return REG_REQ_IGNORE; + return REG_REQ_ALREADY_SET; + } +- /* +- * Two consecutive Country IE hints on the same wiphy. +- * This should be picked up early by the driver/stack +- */ +- if (WARN_ON(regdom_changes(country_ie_request->alpha2))) ++ ++ if (regdom_changes(country_ie_request->alpha2)) + return REG_REQ_OK; + return REG_REQ_ALREADY_SET; + } +-- +2.1.0 + diff --git a/freed-ora/current/f21/config-arm64 b/freed-ora/current/f21/config-arm64 index dcc10155c..37b4d3ad7 100644 --- a/freed-ora/current/f21/config-arm64 +++ b/freed-ora/current/f21/config-arm64 @@ -136,3 +136,5 @@ CONFIG_ACPI_CUSTOM_METHOD=m CONFIG_AMD_XGBE=y CONFIG_AMD_XGBE_PHY=y # CONFIG_AMD_XGBE_DCB is not set + +CONFIG_SATA_AHCI_PLATFORM=y diff --git a/freed-ora/current/f21/config-generic b/freed-ora/current/f21/config-generic index 4a04a386f..69d3e6be4 100644 --- a/freed-ora/current/f21/config-generic +++ b/freed-ora/current/f21/config-generic @@ -4334,6 +4334,7 @@ CONFIG_FRAME_WARN=1024 CONFIG_MAGIC_SYSRQ=y CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x0 CONFIG_DEBUG_INFO=y +CONFIG_DEBUG_INFO_VTA=y # Revisit both of these options # CONFIG_DEBUG_INFO_SPLIT is not set # CONFIG_DEBUG_INFO_DWARF4 is not set @@ -5069,7 +5070,7 @@ CONFIG_PTP_1588_CLOCK_PCH=m CONFIG_CLEANCACHE=y CONFIG_FRONTSWAP=y CONFIG_ZSWAP=y -# CONFIG_ZBUD is not set +CONFIG_ZBUD=y CONFIG_ZSMALLOC=y # CONFIG_PGTABLE_MAPPING is not set diff --git a/freed-ora/current/f21/crash-driver.patch b/freed-ora/current/f21/crash-driver.patch index 9ec016d50..3515471e8 100644 --- a/freed-ora/current/f21/crash-driver.patch +++ b/freed-ora/current/f21/crash-driver.patch @@ -505,5 +505,5 @@ index 000000000000..25ab9869d566 + +#endif /* __CRASH_H__ */ -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/criu-no-expert.patch b/freed-ora/current/f21/criu-no-expert.patch index 2ac9eb04c..19e1ad28c 100644 --- a/freed-ora/current/f21/criu-no-expert.patch +++ b/freed-ora/current/f21/criu-no-expert.patch @@ -31,5 +31,5 @@ index 3c866db603a7..bfb3c54d5286 100644 help Provides the way to make tasks work with different objects using -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/deal-with-deadlock-in-d_walk.patch b/freed-ora/current/f21/deal-with-deadlock-in-d_walk.patch new file mode 100644 index 000000000..5f9087b42 --- /dev/null +++ b/freed-ora/current/f21/deal-with-deadlock-in-d_walk.patch @@ -0,0 +1,86 @@ +From: Al Viro <viro@zeniv.linux.org.uk> +Date: Sun, 26 Oct 2014 19:31:10 -0400 +Subject: [PATCH] deal with deadlock in d_walk() + +... by not hitting rename_retry for reasons other than rename having +happened. In other words, do _not_ restart when finding that +between unlocking the child and locking the parent the former got +into __dentry_kill(). Skip the killed siblings instead... + +Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> +--- + fs/dcache.c | 31 ++++++++++++++++--------------- + 1 file changed, 16 insertions(+), 15 deletions(-) + +diff --git a/fs/dcache.c b/fs/dcache.c +index 8d7c2b34cb3f..e6c207134a14 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -465,7 +465,7 @@ static void __dentry_kill(struct dentry *dentry) + } + /* if it was on the hash then remove it */ + __d_drop(dentry); +- list_del(&dentry->d_child); ++ __list_del_entry(&dentry->d_child); + /* + * Inform d_walk() that we are no longer attached to the + * dentry tree +@@ -1113,33 +1113,31 @@ resume: + /* + * All done at this level ... ascend and resume the search. + */ ++ rcu_read_lock(); ++ascend: + if (this_parent != parent) { + struct dentry *child = this_parent; + this_parent = child->d_parent; + +- rcu_read_lock(); + spin_unlock(&child->d_lock); + spin_lock(&this_parent->d_lock); + +- /* +- * might go back up the wrong parent if we have had a rename +- * or deletion +- */ +- if (this_parent != child->d_parent || +- (child->d_flags & DCACHE_DENTRY_KILLED) || +- need_seqretry(&rename_lock, seq)) { +- spin_unlock(&this_parent->d_lock); +- rcu_read_unlock(); ++ /* might go back up the wrong parent if we have had a rename. */ ++ if (need_seqretry(&rename_lock, seq)) + goto rename_retry; ++ next = child->d_child.next; ++ while (unlikely(child->d_flags & DCACHE_DENTRY_KILLED)) { ++ if (next == &this_parent->d_subdirs) ++ goto ascend; ++ child = list_entry(next, struct dentry, d_child); ++ next = next->next; + } + rcu_read_unlock(); +- next = child->d_child.next; + goto resume; + } +- if (need_seqretry(&rename_lock, seq)) { +- spin_unlock(&this_parent->d_lock); ++ if (need_seqretry(&rename_lock, seq)) + goto rename_retry; +- } ++ rcu_read_unlock(); + if (finish) + finish(data); + +@@ -1149,6 +1147,9 @@ out_unlock: + return; + + rename_retry: ++ spin_unlock(&this_parent->d_lock); ++ rcu_read_unlock(); ++ BUG_ON(seq & 1); + if (!retry) + return; + seq = 1; +-- +2.1.0 + diff --git a/freed-ora/current/f21/die-floppy-die.patch b/freed-ora/current/f21/die-floppy-die.patch index b77c37a97..bba3e579f 100644 --- a/freed-ora/current/f21/die-floppy-die.patch +++ b/freed-ora/current/f21/die-floppy-die.patch @@ -28,5 +28,5 @@ index 56d46ffb08e1..1c8db250df88 100644 #else -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/disable-i8042-check-on-apple-mac.patch b/freed-ora/current/f21/disable-i8042-check-on-apple-mac.patch index 73d8037f1..8516532a8 100644 --- a/freed-ora/current/f21/disable-i8042-check-on-apple-mac.patch +++ b/freed-ora/current/f21/disable-i8042-check-on-apple-mac.patch @@ -57,5 +57,5 @@ index 9bb95eab6926..4b5015f27f9e 100644 if (err) return err; -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/disable-libdw-unwind-on-non-x86.patch b/freed-ora/current/f21/disable-libdw-unwind-on-non-x86.patch index a57c70608..e2388091e 100644 --- a/freed-ora/current/f21/disable-libdw-unwind-on-non-x86.patch +++ b/freed-ora/current/f21/disable-libdw-unwind-on-non-x86.patch @@ -24,5 +24,5 @@ index 1f67aa02d240..86c21a24da46 100644 NO_LIBUNWIND := 1 else -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/drm-i915-Don-t-WARN-in-edp_panel_vdd_off.patch b/freed-ora/current/f21/drm-i915-Don-t-WARN-in-edp_panel_vdd_off.patch index 34011bfa1..12c9ce275 100644 --- a/freed-ora/current/f21/drm-i915-Don-t-WARN-in-edp_panel_vdd_off.patch +++ b/freed-ora/current/f21/drm-i915-Don-t-WARN-in-edp_panel_vdd_off.patch @@ -12,7 +12,7 @@ Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org> 1 file changed, 2 deletions(-) diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c -index 4b3c09636990..cff7f2e04de2 100644 +index 1b7375efc670..a6fb06cc6cf0 100644 --- a/drivers/gpu/drm/i915/intel_dp.c +++ b/drivers/gpu/drm/i915/intel_dp.c @@ -1303,8 +1303,6 @@ static void edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync) @@ -25,5 +25,5 @@ index 4b3c09636990..cff7f2e04de2 100644 if (sync) -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/drm-i915-hush-check-crtc-state.patch b/freed-ora/current/f21/drm-i915-hush-check-crtc-state.patch index 0ba147cad..a2a10e199 100644 --- a/freed-ora/current/f21/drm-i915-hush-check-crtc-state.patch +++ b/freed-ora/current/f21/drm-i915-hush-check-crtc-state.patch @@ -14,10 +14,10 @@ Upstream-status: http://lists.freedesktop.org/archives/intel-gfx/2013-November/0 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c -index b71a02663bae..c27b94be0a95 100644 +index 8663c21093d1..361373cde02c 100644 --- a/drivers/gpu/drm/i915/intel_display.c +++ b/drivers/gpu/drm/i915/intel_display.c -@@ -10656,7 +10656,7 @@ check_crtc_state(struct drm_device *dev) +@@ -10658,7 +10658,7 @@ check_crtc_state(struct drm_device *dev) if (active && !intel_pipe_config_compare(dev, &crtc->config, &pipe_config)) { @@ -27,5 +27,5 @@ index b71a02663bae..c27b94be0a95 100644 "[hw state]"); intel_dump_pipe_config(crtc, &crtc->config, -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/efi-Add-EFI_SECURE_BOOT-bit.patch b/freed-ora/current/f21/efi-Add-EFI_SECURE_BOOT-bit.patch index 8f49e006a..5f8fd3a5c 100644 --- a/freed-ora/current/f21/efi-Add-EFI_SECURE_BOOT-bit.patch +++ b/freed-ora/current/f21/efi-Add-EFI_SECURE_BOOT-bit.patch @@ -38,5 +38,5 @@ index 45cb4ffdea62..ebe6a24cc1e1 100644 #ifdef CONFIG_EFI /* -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch b/freed-ora/current/f21/efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch index 928e1457c..bb46ee26d 100644 --- a/freed-ora/current/f21/efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch +++ b/freed-ora/current/f21/efi-Disable-secure-boot-if-shim-is-in-insecure-mode.patch @@ -53,5 +53,5 @@ index 975d11bfaf5b..94bf7819857a 100644 } -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/efi-Make-EFI_SECURE_BOOT_SIG_ENFORCE-depend-on-EFI.patch b/freed-ora/current/f21/efi-Make-EFI_SECURE_BOOT_SIG_ENFORCE-depend-on-EFI.patch index 18d269488..c142176af 100644 --- a/freed-ora/current/f21/efi-Make-EFI_SECURE_BOOT_SIG_ENFORCE-depend-on-EFI.patch +++ b/freed-ora/current/f21/efi-Make-EFI_SECURE_BOOT_SIG_ENFORCE-depend-on-EFI.patch @@ -25,5 +25,5 @@ index 61542c282e70..e5ee669e87b6 100644 ---help--- UEFI Secure Boot provides a mechanism for ensuring that the -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/hibernate-Disable-in-a-signed-modules-environment.patch b/freed-ora/current/f21/hibernate-Disable-in-a-signed-modules-environment.patch index 6c89536a7..fa1d53a51 100644 --- a/freed-ora/current/f21/hibernate-Disable-in-a-signed-modules-environment.patch +++ b/freed-ora/current/f21/hibernate-Disable-in-a-signed-modules-environment.patch @@ -34,5 +34,5 @@ index 1f35a3478f3c..5e2472fc3dda 100644 /** -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/input-kill-stupid-messages.patch b/freed-ora/current/f21/input-kill-stupid-messages.patch index 65a3cd688..5b9c3d923 100644 --- a/freed-ora/current/f21/input-kill-stupid-messages.patch +++ b/freed-ora/current/f21/input-kill-stupid-messages.patch @@ -29,5 +29,5 @@ index 6f5d79569136..95469f6ecfa5 100644 case ATKBD_RET_ERR: atkbd->err_count++; -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/input-silence-i8042-noise.patch b/freed-ora/current/f21/input-silence-i8042-noise.patch index 8852a8e28..68e94c1ed 100644 --- a/freed-ora/current/f21/input-silence-i8042-noise.patch +++ b/freed-ora/current/f21/input-silence-i8042-noise.patch @@ -61,5 +61,5 @@ index ce82337521f6..a3fee4becc93 100644 cp = can_get_proto(protocol); } -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/kbuild-AFTER_LINK.patch b/freed-ora/current/f21/kbuild-AFTER_LINK.patch index 603e0e053..3afe0b07a 100644 --- a/freed-ora/current/f21/kbuild-AFTER_LINK.patch +++ b/freed-ora/current/f21/kbuild-AFTER_LINK.patch @@ -121,5 +121,5 @@ index 86a4fe75f453..161637ed5611 100644 -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/kernel.spec b/freed-ora/current/f21/kernel.spec index 7cb297987..12655dbff 100644 --- a/freed-ora/current/f21/kernel.spec +++ b/freed-ora/current/f21/kernel.spec @@ -92,7 +92,7 @@ Summary: The Linux kernel %if 0%{?released_kernel} # Do we have a -stable update to apply? -%define stable_update 6 +%define stable_update 7 # Set rpm version accordingly %if 0%{?stable_update} %define stablerev %{stable_update} @@ -567,6 +567,9 @@ Patch530: silence-fbcon-logo.patch Patch600: lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch +#rhbz 1126580 +Patch601: Kbuild-Add-an-option-to-enable-GCC-VTA.patch + Patch800: crash-driver.patch # crypto/ @@ -672,6 +675,27 @@ Patch26058: asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch #rhbz 1135338 Patch26090: HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch +#CVE-2014-8134 rhbz 1172765 1172769 +Patch26091: x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch + +#rhbz 1164945 +Patch26092: xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch +Patch26093: uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch +Patch26094: uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch + +#rhbz 1172543 +Patch26096: cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch + +#CVE-2014-8133 rhbz 1172797 1174374 +Patch26100: x86-tls-Validate-TLS-entries-to-protect-espfix.patch + +#rhbz 1173806 +Patch26101: powerpc-powernv-force-all-CPUs-to-be-bootable.patch + +#CVE-2014-8559 rhbz 1159313 1173814 +Patch26098: move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch +Patch26099: deal-with-deadlock-in-d_walk.patch + # git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel Patch30000: kernel-arm64.patch @@ -1402,6 +1426,8 @@ ApplyPatch input-silence-i8042-noise.patch ApplyPatch silence-fbcon-logo.patch # Changes to upstream defaults. +#rhbz 1126580 +ApplyPatch Kbuild-Add-an-option-to-enable-GCC-VTA.patch # /dev/crash driver. ApplyPatch crash-driver.patch @@ -1487,6 +1513,27 @@ ApplyPatch asus-nb-wmi-Add-wapf4-quirk-for-the-X550VB.patch #rhbz 1135338 ApplyPatch HID-add-support-for-MS-Surface-Pro-3-Type-Cover.patch +#CVE-2014-8134 rhbz 1172765 1172769 +ApplyPatch x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch + +#rhbz 1164945 +ApplyPatch xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch +ApplyPatch uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch +ApplyPatch uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch + +#rhbz 1172543 +ApplyPatch cfg80211-don-t-WARN-about-two-consecutive-Country-IE.patch + +#CVE-2014-8133 rhbz 1172797 1174374 +ApplyPatch x86-tls-Validate-TLS-entries-to-protect-espfix.patch + +#rhbz 1173806 +ApplyPatch powerpc-powernv-force-all-CPUs-to-be-bootable.patch + +#CVE-2014-8559 rhbz 1159313 1173814 +ApplyPatch move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch +ApplyPatch deal-with-deadlock-in-d_walk.patch + %if 0%{?aarch64patches} ApplyPatch kernel-arm64.patch %ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does. @@ -2374,6 +2421,29 @@ fi # ||----w | # || || %changelog +* Wed Dec 17 2014 Alexandre Oliva <lxoliva@fsfla.org> -libre +- GNU Linux-libre 3.17.7-gnu. + +* Tue Dec 16 2014 Josh Boyer <jwboyer@fedoraproject.org> +- Linux v3.17.7 +- CVE-2014-8559 deadlock due to incorrect usage of rename_lock (rhbz 1159313 1173814) +- Add patch from Josh Stone to restore var-tracking via Kconfig (rhbz 1126580) + +* Mon Dec 15 2014 Josh Boyer <jwboyer@fedoraproject.org> +- Fix ppc64 boot with smt-enabled=off (rhbz 1173806) +- CVE-2014-8133 x86: espfix(64) bypass via set_thread_area and CLONE_SETTLS (rhbz 1172797 1174374) + +* Fri Dec 12 2014 Kyle McMartin <kyle@fedoraproject.org> +- build in ahci_platform on aarch64 temporarily. + +* Fri Dec 12 2014 Josh Boyer <jwboyer@fedoraproject.org> +- Remove pointless warning in cfg80211 (rhbz 1172543) + +* Wed Dec 10 2014 Josh Boyer <jwboyer@fedoraproject.org> +- Fix MSI issues on another Samsung pci-e SSD (rhbz 1084928) +- Fix UAS crashes with Seagate and Fresco Logic drives (rhbz 1164945) +- CVE-2014-8134 fix espfix for 32-bit KVM paravirt guests (rhbz 1172765 1172769) + * Mon Dec 8 2014 Alexandre Oliva <lxoliva@fsfla.org> -libre - GNU Linux-libre 3.17.6-gnu. diff --git a/freed-ora/current/f21/kexec-Disable-at-runtime-if-the-kernel-enforces-modu.patch b/freed-ora/current/f21/kexec-Disable-at-runtime-if-the-kernel-enforces-modu.patch index b33213738..2fb2b9063 100644 --- a/freed-ora/current/f21/kexec-Disable-at-runtime-if-the-kernel-enforces-modu.patch +++ b/freed-ora/current/f21/kexec-Disable-at-runtime-if-the-kernel-enforces-modu.patch @@ -39,5 +39,5 @@ index 2bee072268d9..891477dbfee0 100644 * This leaves us room for future extensions. */ -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch b/freed-ora/current/f21/lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch index 73eb34320..cfb347835 100644 --- a/freed-ora/current/f21/lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch +++ b/freed-ora/current/f21/lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch @@ -33,5 +33,5 @@ index 54cf309a92a5..64f8bb4882fb 100644 Use dynamic allocation for cpumask_var_t, instead of putting them on the stack. This is a bit more expensive, but avoids -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/lis3-improve-handling-of-null-rate.patch b/freed-ora/current/f21/lis3-improve-handling-of-null-rate.patch index e3d3f4ee2..5d25039bb 100644 --- a/freed-ora/current/f21/lis3-improve-handling-of-null-rate.patch +++ b/freed-ora/current/f21/lis3-improve-handling-of-null-rate.patch @@ -74,5 +74,5 @@ index 3ef4627f9cb1..2b2d2e8e5eeb 100644 return err; -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch b/freed-ora/current/f21/move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch new file mode 100644 index 000000000..62f7a6866 --- /dev/null +++ b/freed-ora/current/f21/move-d_rcu-from-overlapping-d_child-to-overlapping-d.patch @@ -0,0 +1,736 @@ +From: Al Viro <viro@zeniv.linux.org.uk> +Date: Sun, 26 Oct 2014 19:19:16 -0400 +Subject: [PATCH] move d_rcu from overlapping d_child to overlapping d_alias + +Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> +--- + arch/powerpc/platforms/cell/spufs/inode.c | 2 +- + drivers/staging/lustre/lustre/llite/dcache.c | 2 +- + drivers/staging/lustre/lustre/llite/llite_lib.c | 2 +- + drivers/staging/lustre/lustre/llite/namei.c | 8 ++-- + fs/affs/amigaffs.c | 2 +- + fs/autofs4/expire.c | 12 +++--- + fs/autofs4/root.c | 2 +- + fs/ceph/dir.c | 8 ++-- + fs/ceph/inode.c | 2 +- + fs/cifs/inode.c | 2 +- + fs/coda/cache.c | 2 +- + fs/dcache.c | 52 ++++++++++++------------- + fs/debugfs/inode.c | 2 +- + fs/exportfs/expfs.c | 2 +- + fs/libfs.c | 12 +++--- + fs/ncpfs/dir.c | 2 +- + fs/ncpfs/ncplib_kernel.h | 4 +- + fs/nfs/getroot.c | 2 +- + fs/notify/fsnotify.c | 4 +- + fs/ocfs2/dcache.c | 2 +- + include/linux/dcache.h | 8 ++-- + kernel/trace/trace.c | 4 +- + kernel/trace/trace_events.c | 2 +- + security/selinux/selinuxfs.c | 6 +-- + 24 files changed, 73 insertions(+), 73 deletions(-) + +diff --git a/arch/powerpc/platforms/cell/spufs/inode.c b/arch/powerpc/platforms/cell/spufs/inode.c +index 87ba7cf99cd7..65d633f20d37 100644 +--- a/arch/powerpc/platforms/cell/spufs/inode.c ++++ b/arch/powerpc/platforms/cell/spufs/inode.c +@@ -164,7 +164,7 @@ static void spufs_prune_dir(struct dentry *dir) + struct dentry *dentry, *tmp; + + mutex_lock(&dir->d_inode->i_mutex); +- list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_u.d_child) { ++ list_for_each_entry_safe(dentry, tmp, &dir->d_subdirs, d_child) { + spin_lock(&dentry->d_lock); + if (!(d_unhashed(dentry)) && dentry->d_inode) { + dget_dlock(dentry); +diff --git a/drivers/staging/lustre/lustre/llite/dcache.c b/drivers/staging/lustre/lustre/llite/dcache.c +index 49ae207ad425..e2add5fde0fe 100644 +--- a/drivers/staging/lustre/lustre/llite/dcache.c ++++ b/drivers/staging/lustre/lustre/llite/dcache.c +@@ -258,7 +258,7 @@ void ll_invalidate_aliases(struct inode *inode) + inode->i_ino, inode->i_generation, inode); + + ll_lock_dcache(inode); +- ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_alias) { ++ ll_d_hlist_for_each_entry(dentry, p, &inode->i_dentry, d_u.d_alias) { + CDEBUG(D_DENTRY, "dentry in drop %.*s (%p) parent %p " + "inode %p flags %d\n", dentry->d_name.len, + dentry->d_name.name, dentry, dentry->d_parent, +diff --git a/drivers/staging/lustre/lustre/llite/llite_lib.c b/drivers/staging/lustre/lustre/llite/llite_lib.c +index 0c59e26c0805..36e62524a37b 100644 +--- a/drivers/staging/lustre/lustre/llite/llite_lib.c ++++ b/drivers/staging/lustre/lustre/llite/llite_lib.c +@@ -704,7 +704,7 @@ void lustre_dump_dentry(struct dentry *dentry, int recur) + return; + + list_for_each(tmp, &dentry->d_subdirs) { +- struct dentry *d = list_entry(tmp, struct dentry, d_u.d_child); ++ struct dentry *d = list_entry(tmp, struct dentry, d_child); + lustre_dump_dentry(d, recur - 1); + } + } +diff --git a/drivers/staging/lustre/lustre/llite/namei.c b/drivers/staging/lustre/lustre/llite/namei.c +index 0dc7173bbd41..9de0d51e33a2 100644 +--- a/drivers/staging/lustre/lustre/llite/namei.c ++++ b/drivers/staging/lustre/lustre/llite/namei.c +@@ -167,14 +167,14 @@ static void ll_invalidate_negative_children(struct inode *dir) + struct ll_d_hlist_node *p; + + ll_lock_dcache(dir); +- ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_alias) { ++ ll_d_hlist_for_each_entry(dentry, p, &dir->i_dentry, d_u.d_alias) { + spin_lock(&dentry->d_lock); + if (!list_empty(&dentry->d_subdirs)) { + struct dentry *child; + + list_for_each_entry_safe(child, tmp_subdir, + &dentry->d_subdirs, +- d_u.d_child) { ++ d_child) { + if (child->d_inode == NULL) + d_lustre_invalidate(child, 1); + } +@@ -362,7 +362,7 @@ static struct dentry *ll_find_alias(struct inode *inode, struct dentry *dentry) + discon_alias = invalid_alias = NULL; + + ll_lock_dcache(inode); +- ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_alias) { ++ ll_d_hlist_for_each_entry(alias, p, &inode->i_dentry, d_u.d_alias) { + LASSERT(alias != dentry); + + spin_lock(&alias->d_lock); +@@ -943,7 +943,7 @@ static void ll_get_child_fid(struct inode * dir, struct qstr *name, + { + struct dentry *parent, *child; + +- parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_alias); ++ parent = ll_d_hlist_entry(dir->i_dentry, struct dentry, d_u.d_alias); + child = d_lookup(parent, name); + if (child) { + if (child->d_inode) +diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c +index 406b29836b19..a674c114fd8e 100644 +--- a/fs/affs/amigaffs.c ++++ b/fs/affs/amigaffs.c +@@ -127,7 +127,7 @@ affs_fix_dcache(struct inode *inode, u32 entry_ino) + { + struct dentry *dentry; + spin_lock(&inode->i_lock); +- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) { ++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { + if (entry_ino == (u32)(long)dentry->d_fsdata) { + dentry->d_fsdata = (void *)inode->i_ino; + break; +diff --git a/fs/autofs4/expire.c b/fs/autofs4/expire.c +index a7be57e39be7..11c6cddff1b9 100644 +--- a/fs/autofs4/expire.c ++++ b/fs/autofs4/expire.c +@@ -91,7 +91,7 @@ static struct dentry *get_next_positive_subdir(struct dentry *prev, + spin_lock(&root->d_lock); + + if (prev) +- next = prev->d_u.d_child.next; ++ next = prev->d_child.next; + else { + prev = dget_dlock(root); + next = prev->d_subdirs.next; +@@ -105,13 +105,13 @@ cont: + return NULL; + } + +- q = list_entry(next, struct dentry, d_u.d_child); ++ q = list_entry(next, struct dentry, d_child); + + spin_lock_nested(&q->d_lock, DENTRY_D_LOCK_NESTED); + /* Already gone or negative dentry (under construction) - try next */ + if (!d_count(q) || !simple_positive(q)) { + spin_unlock(&q->d_lock); +- next = q->d_u.d_child.next; ++ next = q->d_child.next; + goto cont; + } + dget_dlock(q); +@@ -161,13 +161,13 @@ again: + goto relock; + } + spin_unlock(&p->d_lock); +- next = p->d_u.d_child.next; ++ next = p->d_child.next; + p = parent; + if (next != &parent->d_subdirs) + break; + } + } +- ret = list_entry(next, struct dentry, d_u.d_child); ++ ret = list_entry(next, struct dentry, d_child); + + spin_lock_nested(&ret->d_lock, DENTRY_D_LOCK_NESTED); + /* Negative dentry - try next */ +@@ -460,7 +460,7 @@ found: + spin_lock(&sbi->lookup_lock); + spin_lock(&expired->d_parent->d_lock); + spin_lock_nested(&expired->d_lock, DENTRY_D_LOCK_NESTED); +- list_move(&expired->d_parent->d_subdirs, &expired->d_u.d_child); ++ list_move(&expired->d_parent->d_subdirs, &expired->d_child); + spin_unlock(&expired->d_lock); + spin_unlock(&expired->d_parent->d_lock); + spin_unlock(&sbi->lookup_lock); +diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c +index cdb25ebccc4c..38a9e0fa5177 100644 +--- a/fs/autofs4/root.c ++++ b/fs/autofs4/root.c +@@ -659,7 +659,7 @@ static void autofs_clear_leaf_automount_flags(struct dentry *dentry) + /* only consider parents below dentrys in the root */ + if (IS_ROOT(parent->d_parent)) + return; +- d_child = &dentry->d_u.d_child; ++ d_child = &dentry->d_child; + /* Set parent managed if it's becoming empty */ + if (d_child->next == &parent->d_subdirs && + d_child->prev == &parent->d_subdirs) +diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c +index c29d6ae68874..51ea03313df9 100644 +--- a/fs/ceph/dir.c ++++ b/fs/ceph/dir.c +@@ -111,7 +111,7 @@ static int fpos_cmp(loff_t l, loff_t r) + /* + * When possible, we try to satisfy a readdir by peeking at the + * dcache. We make this work by carefully ordering dentries on +- * d_u.d_child when we initially get results back from the MDS, and ++ * d_child when we initially get results back from the MDS, and + * falling back to a "normal" sync readdir if any dentries in the dir + * are dropped. + * +@@ -147,11 +147,11 @@ static int __dcache_readdir(struct file *file, struct dir_context *ctx, + p = parent->d_subdirs.prev; + dout(" initial p %p/%p\n", p->prev, p->next); + } else { +- p = last->d_u.d_child.prev; ++ p = last->d_child.prev; + } + + more: +- dentry = list_entry(p, struct dentry, d_u.d_child); ++ dentry = list_entry(p, struct dentry, d_child); + di = ceph_dentry(dentry); + while (1) { + dout(" p %p/%p %s d_subdirs %p/%p\n", p->prev, p->next, +@@ -174,7 +174,7 @@ more: + !dentry->d_inode ? " null" : ""); + spin_unlock(&dentry->d_lock); + p = p->prev; +- dentry = list_entry(p, struct dentry, d_u.d_child); ++ dentry = list_entry(p, struct dentry, d_child); + di = ceph_dentry(dentry); + } + +diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c +index 04c89c266cec..c3e103ff18bd 100644 +--- a/fs/ceph/inode.c ++++ b/fs/ceph/inode.c +@@ -1399,7 +1399,7 @@ retry_lookup: + /* reorder parent's d_subdirs */ + spin_lock(&parent->d_lock); + spin_lock_nested(&dn->d_lock, DENTRY_D_LOCK_NESTED); +- list_move(&dn->d_u.d_child, &parent->d_subdirs); ++ list_move(&dn->d_child, &parent->d_subdirs); + spin_unlock(&dn->d_lock); + spin_unlock(&parent->d_lock); + } +diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c +index 7899a40465b3..6d1dd0942937 100644 +--- a/fs/cifs/inode.c ++++ b/fs/cifs/inode.c +@@ -887,7 +887,7 @@ inode_has_hashed_dentries(struct inode *inode) + struct dentry *dentry; + + spin_lock(&inode->i_lock); +- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) { ++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { + if (!d_unhashed(dentry) || IS_ROOT(dentry)) { + spin_unlock(&inode->i_lock); + return true; +diff --git a/fs/coda/cache.c b/fs/coda/cache.c +index 278f8fdeb9ef..46ee6f238985 100644 +--- a/fs/coda/cache.c ++++ b/fs/coda/cache.c +@@ -92,7 +92,7 @@ static void coda_flag_children(struct dentry *parent, int flag) + struct dentry *de; + + spin_lock(&parent->d_lock); +- list_for_each_entry(de, &parent->d_subdirs, d_u.d_child) { ++ list_for_each_entry(de, &parent->d_subdirs, d_child) { + /* don't know what to do with negative dentries */ + if (de->d_inode ) + coda_flag_inode(de->d_inode, flag); +diff --git a/fs/dcache.c b/fs/dcache.c +index 34b40be8af11..8d7c2b34cb3f 100644 +--- a/fs/dcache.c ++++ b/fs/dcache.c +@@ -44,7 +44,7 @@ + /* + * Usage: + * dcache->d_inode->i_lock protects: +- * - i_dentry, d_alias, d_inode of aliases ++ * - i_dentry, d_u.d_alias, d_inode of aliases + * dcache_hash_bucket lock protects: + * - the dcache hash table + * s_anon bl list spinlock protects: +@@ -59,7 +59,7 @@ + * - d_unhashed() + * - d_parent and d_subdirs + * - childrens' d_child and d_parent +- * - d_alias, d_inode ++ * - d_u.d_alias, d_inode + * + * Ordering: + * dentry->d_inode->i_lock +@@ -239,7 +239,6 @@ static void __d_free(struct rcu_head *head) + { + struct dentry *dentry = container_of(head, struct dentry, d_u.d_rcu); + +- WARN_ON(!hlist_unhashed(&dentry->d_alias)); + if (dname_external(dentry)) + kfree(dentry->d_name.name); + kmem_cache_free(dentry_cache, dentry); +@@ -247,6 +246,7 @@ static void __d_free(struct rcu_head *head) + + static void dentry_free(struct dentry *dentry) + { ++ WARN_ON(!hlist_unhashed(&dentry->d_u.d_alias)); + /* if dentry was never visible to RCU, immediate free is OK */ + if (!(dentry->d_flags & DCACHE_RCUACCESS)) + __d_free(&dentry->d_u.d_rcu); +@@ -280,7 +280,7 @@ static void dentry_iput(struct dentry * dentry) + struct inode *inode = dentry->d_inode; + if (inode) { + dentry->d_inode = NULL; +- hlist_del_init(&dentry->d_alias); ++ hlist_del_init(&dentry->d_u.d_alias); + spin_unlock(&dentry->d_lock); + spin_unlock(&inode->i_lock); + if (!inode->i_nlink) +@@ -305,7 +305,7 @@ static void dentry_unlink_inode(struct dentry * dentry) + struct inode *inode = dentry->d_inode; + __d_clear_type(dentry); + dentry->d_inode = NULL; +- hlist_del_init(&dentry->d_alias); ++ hlist_del_init(&dentry->d_u.d_alias); + dentry_rcuwalk_barrier(dentry); + spin_unlock(&dentry->d_lock); + spin_unlock(&inode->i_lock); +@@ -465,7 +465,7 @@ static void __dentry_kill(struct dentry *dentry) + } + /* if it was on the hash then remove it */ + __d_drop(dentry); +- list_del(&dentry->d_u.d_child); ++ list_del(&dentry->d_child); + /* + * Inform d_walk() that we are no longer attached to the + * dentry tree +@@ -746,7 +746,7 @@ static struct dentry *__d_find_alias(struct inode *inode) + + again: + discon_alias = NULL; +- hlist_for_each_entry(alias, &inode->i_dentry, d_alias) { ++ hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) { + spin_lock(&alias->d_lock); + if (S_ISDIR(inode->i_mode) || !d_unhashed(alias)) { + if (IS_ROOT(alias) && +@@ -796,7 +796,7 @@ void d_prune_aliases(struct inode *inode) + struct dentry *dentry; + restart: + spin_lock(&inode->i_lock); +- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) { ++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { + spin_lock(&dentry->d_lock); + if (!dentry->d_lockref.count) { + /* +@@ -1081,7 +1081,7 @@ repeat: + resume: + while (next != &this_parent->d_subdirs) { + struct list_head *tmp = next; +- struct dentry *dentry = list_entry(tmp, struct dentry, d_u.d_child); ++ struct dentry *dentry = list_entry(tmp, struct dentry, d_child); + next = tmp->next; + + spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); +@@ -1133,7 +1133,7 @@ resume: + goto rename_retry; + } + rcu_read_unlock(); +- next = child->d_u.d_child.next; ++ next = child->d_child.next; + goto resume; + } + if (need_seqretry(&rename_lock, seq)) { +@@ -1468,8 +1468,8 @@ struct dentry *__d_alloc(struct super_block *sb, const struct qstr *name) + INIT_HLIST_BL_NODE(&dentry->d_hash); + INIT_LIST_HEAD(&dentry->d_lru); + INIT_LIST_HEAD(&dentry->d_subdirs); +- INIT_HLIST_NODE(&dentry->d_alias); +- INIT_LIST_HEAD(&dentry->d_u.d_child); ++ INIT_HLIST_NODE(&dentry->d_u.d_alias); ++ INIT_LIST_HEAD(&dentry->d_child); + d_set_d_op(dentry, dentry->d_sb->s_d_op); + + this_cpu_inc(nr_dentry); +@@ -1499,7 +1499,7 @@ struct dentry *d_alloc(struct dentry * parent, const struct qstr *name) + */ + __dget_dlock(parent); + dentry->d_parent = parent; +- list_add(&dentry->d_u.d_child, &parent->d_subdirs); ++ list_add(&dentry->d_child, &parent->d_subdirs); + spin_unlock(&parent->d_lock); + + return dentry; +@@ -1592,7 +1592,7 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode) + spin_lock(&dentry->d_lock); + __d_set_type(dentry, add_flags); + if (inode) +- hlist_add_head(&dentry->d_alias, &inode->i_dentry); ++ hlist_add_head(&dentry->d_u.d_alias, &inode->i_dentry); + dentry->d_inode = inode; + dentry_rcuwalk_barrier(dentry); + spin_unlock(&dentry->d_lock); +@@ -1616,7 +1616,7 @@ static void __d_instantiate(struct dentry *dentry, struct inode *inode) + + void d_instantiate(struct dentry *entry, struct inode * inode) + { +- BUG_ON(!hlist_unhashed(&entry->d_alias)); ++ BUG_ON(!hlist_unhashed(&entry->d_u.d_alias)); + if (inode) + spin_lock(&inode->i_lock); + __d_instantiate(entry, inode); +@@ -1655,7 +1655,7 @@ static struct dentry *__d_instantiate_unique(struct dentry *entry, + return NULL; + } + +- hlist_for_each_entry(alias, &inode->i_dentry, d_alias) { ++ hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) { + /* + * Don't need alias->d_lock here, because aliases with + * d_parent == entry->d_parent are not subject to name or +@@ -1681,7 +1681,7 @@ struct dentry *d_instantiate_unique(struct dentry *entry, struct inode *inode) + { + struct dentry *result; + +- BUG_ON(!hlist_unhashed(&entry->d_alias)); ++ BUG_ON(!hlist_unhashed(&entry->d_u.d_alias)); + + if (inode) + spin_lock(&inode->i_lock); +@@ -1712,7 +1712,7 @@ EXPORT_SYMBOL(d_instantiate_unique); + */ + int d_instantiate_no_diralias(struct dentry *entry, struct inode *inode) + { +- BUG_ON(!hlist_unhashed(&entry->d_alias)); ++ BUG_ON(!hlist_unhashed(&entry->d_u.d_alias)); + + spin_lock(&inode->i_lock); + if (S_ISDIR(inode->i_mode) && !hlist_empty(&inode->i_dentry)) { +@@ -1751,7 +1751,7 @@ static struct dentry * __d_find_any_alias(struct inode *inode) + + if (hlist_empty(&inode->i_dentry)) + return NULL; +- alias = hlist_entry(inode->i_dentry.first, struct dentry, d_alias); ++ alias = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias); + __dget(alias); + return alias; + } +@@ -1813,7 +1813,7 @@ static struct dentry *__d_obtain_alias(struct inode *inode, int disconnected) + spin_lock(&tmp->d_lock); + tmp->d_inode = inode; + tmp->d_flags |= add_flags; +- hlist_add_head(&tmp->d_alias, &inode->i_dentry); ++ hlist_add_head(&tmp->d_u.d_alias, &inode->i_dentry); + hlist_bl_lock(&tmp->d_sb->s_anon); + hlist_bl_add_head(&tmp->d_hash, &tmp->d_sb->s_anon); + hlist_bl_unlock(&tmp->d_sb->s_anon); +@@ -2248,7 +2248,7 @@ int d_validate(struct dentry *dentry, struct dentry *dparent) + struct dentry *child; + + spin_lock(&dparent->d_lock); +- list_for_each_entry(child, &dparent->d_subdirs, d_u.d_child) { ++ list_for_each_entry(child, &dparent->d_subdirs, d_child) { + if (dentry == child) { + spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); + __dget_dlock(dentry); +@@ -2525,13 +2525,13 @@ static void __d_move(struct dentry *dentry, struct dentry *target, + /* splicing a tree */ + dentry->d_parent = target->d_parent; + target->d_parent = target; +- list_del_init(&target->d_u.d_child); +- list_move(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs); ++ list_del_init(&target->d_child); ++ list_move(&dentry->d_child, &dentry->d_parent->d_subdirs); + } else { + /* swapping two dentries */ + swap(dentry->d_parent, target->d_parent); +- list_move(&target->d_u.d_child, &target->d_parent->d_subdirs); +- list_move(&dentry->d_u.d_child, &dentry->d_parent->d_subdirs); ++ list_move(&target->d_child, &target->d_parent->d_subdirs); ++ list_move(&dentry->d_child, &dentry->d_parent->d_subdirs); + if (exchange) + fsnotify_d_move(target); + fsnotify_d_move(dentry); +@@ -3322,7 +3322,7 @@ void d_tmpfile(struct dentry *dentry, struct inode *inode) + { + inode_dec_link_count(inode); + BUG_ON(dentry->d_name.name != dentry->d_iname || +- !hlist_unhashed(&dentry->d_alias) || ++ !hlist_unhashed(&dentry->d_u.d_alias) || + !d_unlinked(dentry)); + spin_lock(&dentry->d_parent->d_lock); + spin_lock_nested(&dentry->d_lock, DENTRY_D_LOCK_NESTED); +diff --git a/fs/debugfs/inode.c b/fs/debugfs/inode.c +index 1e3b99d3db0d..05f2960ed7c3 100644 +--- a/fs/debugfs/inode.c ++++ b/fs/debugfs/inode.c +@@ -553,7 +553,7 @@ void debugfs_remove_recursive(struct dentry *dentry) + * use the d_u.d_child as the rcu head and corrupt this list. + */ + spin_lock(&parent->d_lock); +- list_for_each_entry(child, &parent->d_subdirs, d_u.d_child) { ++ list_for_each_entry(child, &parent->d_subdirs, d_child) { + if (!debugfs_positive(child)) + continue; + +diff --git a/fs/exportfs/expfs.c b/fs/exportfs/expfs.c +index b01fbfb51f43..a3aa6baad1a1 100644 +--- a/fs/exportfs/expfs.c ++++ b/fs/exportfs/expfs.c +@@ -50,7 +50,7 @@ find_acceptable_alias(struct dentry *result, + + inode = result->d_inode; + spin_lock(&inode->i_lock); +- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) { ++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { + dget(dentry); + spin_unlock(&inode->i_lock); + if (toput) +diff --git a/fs/libfs.c b/fs/libfs.c +index 88e3e00e2eca..e801b983b46b 100644 +--- a/fs/libfs.c ++++ b/fs/libfs.c +@@ -114,18 +114,18 @@ loff_t dcache_dir_lseek(struct file *file, loff_t offset, int whence) + + spin_lock(&dentry->d_lock); + /* d_lock not required for cursor */ +- list_del(&cursor->d_u.d_child); ++ list_del(&cursor->d_child); + p = dentry->d_subdirs.next; + while (n && p != &dentry->d_subdirs) { + struct dentry *next; +- next = list_entry(p, struct dentry, d_u.d_child); ++ next = list_entry(p, struct dentry, d_child); + spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED); + if (simple_positive(next)) + n--; + spin_unlock(&next->d_lock); + p = p->next; + } +- list_add_tail(&cursor->d_u.d_child, p); ++ list_add_tail(&cursor->d_child, p); + spin_unlock(&dentry->d_lock); + } + } +@@ -150,7 +150,7 @@ int dcache_readdir(struct file *file, struct dir_context *ctx) + { + struct dentry *dentry = file->f_path.dentry; + struct dentry *cursor = file->private_data; +- struct list_head *p, *q = &cursor->d_u.d_child; ++ struct list_head *p, *q = &cursor->d_child; + + if (!dir_emit_dots(file, ctx)) + return 0; +@@ -159,7 +159,7 @@ int dcache_readdir(struct file *file, struct dir_context *ctx) + list_move(q, &dentry->d_subdirs); + + for (p = q->next; p != &dentry->d_subdirs; p = p->next) { +- struct dentry *next = list_entry(p, struct dentry, d_u.d_child); ++ struct dentry *next = list_entry(p, struct dentry, d_child); + spin_lock_nested(&next->d_lock, DENTRY_D_LOCK_NESTED); + if (!simple_positive(next)) { + spin_unlock(&next->d_lock); +@@ -287,7 +287,7 @@ int simple_empty(struct dentry *dentry) + int ret = 0; + + spin_lock(&dentry->d_lock); +- list_for_each_entry(child, &dentry->d_subdirs, d_u.d_child) { ++ list_for_each_entry(child, &dentry->d_subdirs, d_child) { + spin_lock_nested(&child->d_lock, DENTRY_D_LOCK_NESTED); + if (simple_positive(child)) { + spin_unlock(&child->d_lock); +diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c +index 08b8ea8c353e..3a8ed0fb07be 100644 +--- a/fs/ncpfs/dir.c ++++ b/fs/ncpfs/dir.c +@@ -406,7 +406,7 @@ ncp_dget_fpos(struct dentry *dentry, struct dentry *parent, unsigned long fpos) + spin_lock(&parent->d_lock); + next = parent->d_subdirs.next; + while (next != &parent->d_subdirs) { +- dent = list_entry(next, struct dentry, d_u.d_child); ++ dent = list_entry(next, struct dentry, d_child); + if ((unsigned long)dent->d_fsdata == fpos) { + if (dent->d_inode) + dget(dent); +diff --git a/fs/ncpfs/ncplib_kernel.h b/fs/ncpfs/ncplib_kernel.h +index 32c06587351a..6d5e7c56c79d 100644 +--- a/fs/ncpfs/ncplib_kernel.h ++++ b/fs/ncpfs/ncplib_kernel.h +@@ -194,7 +194,7 @@ ncp_renew_dentries(struct dentry *parent) + spin_lock(&parent->d_lock); + next = parent->d_subdirs.next; + while (next != &parent->d_subdirs) { +- dentry = list_entry(next, struct dentry, d_u.d_child); ++ dentry = list_entry(next, struct dentry, d_child); + + if (dentry->d_fsdata == NULL) + ncp_age_dentry(server, dentry); +@@ -216,7 +216,7 @@ ncp_invalidate_dircache_entries(struct dentry *parent) + spin_lock(&parent->d_lock); + next = parent->d_subdirs.next; + while (next != &parent->d_subdirs) { +- dentry = list_entry(next, struct dentry, d_u.d_child); ++ dentry = list_entry(next, struct dentry, d_child); + dentry->d_fsdata = NULL; + ncp_age_dentry(server, dentry); + next = next->next; +diff --git a/fs/nfs/getroot.c b/fs/nfs/getroot.c +index 880618a8b048..ebc6a0add5ae 100644 +--- a/fs/nfs/getroot.c ++++ b/fs/nfs/getroot.c +@@ -58,7 +58,7 @@ static int nfs_superblock_set_dummy_root(struct super_block *sb, struct inode *i + */ + spin_lock(&sb->s_root->d_inode->i_lock); + spin_lock(&sb->s_root->d_lock); +- hlist_del_init(&sb->s_root->d_alias); ++ hlist_del_init(&sb->s_root->d_u.d_alias); + spin_unlock(&sb->s_root->d_lock); + spin_unlock(&sb->s_root->d_inode->i_lock); + } +diff --git a/fs/notify/fsnotify.c b/fs/notify/fsnotify.c +index 9d3e9c50066a..700129940c6e 100644 +--- a/fs/notify/fsnotify.c ++++ b/fs/notify/fsnotify.c +@@ -63,14 +63,14 @@ void __fsnotify_update_child_dentry_flags(struct inode *inode) + spin_lock(&inode->i_lock); + /* run all of the dentries associated with this inode. Since this is a + * directory, there damn well better only be one item on this list */ +- hlist_for_each_entry(alias, &inode->i_dentry, d_alias) { ++ hlist_for_each_entry(alias, &inode->i_dentry, d_u.d_alias) { + struct dentry *child; + + /* run all of the children of the original inode and fix their + * d_flags to indicate parental interest (their parent is the + * original inode) */ + spin_lock(&alias->d_lock); +- list_for_each_entry(child, &alias->d_subdirs, d_u.d_child) { ++ list_for_each_entry(child, &alias->d_subdirs, d_child) { + if (!child->d_inode) + continue; + +diff --git a/fs/ocfs2/dcache.c b/fs/ocfs2/dcache.c +index e2e05a106beb..92edcfc23c1c 100644 +--- a/fs/ocfs2/dcache.c ++++ b/fs/ocfs2/dcache.c +@@ -172,7 +172,7 @@ struct dentry *ocfs2_find_local_alias(struct inode *inode, + struct dentry *dentry; + + spin_lock(&inode->i_lock); +- hlist_for_each_entry(dentry, &inode->i_dentry, d_alias) { ++ hlist_for_each_entry(dentry, &inode->i_dentry, d_u.d_alias) { + spin_lock(&dentry->d_lock); + if (ocfs2_match_dentry(dentry, parent_blkno, skip_unhashed)) { + trace_ocfs2_find_local_alias(dentry->d_name.len, +diff --git a/include/linux/dcache.h b/include/linux/dcache.h +index 75a227cc7ce2..82b5d1c2b856 100644 +--- a/include/linux/dcache.h ++++ b/include/linux/dcache.h +@@ -125,15 +125,15 @@ struct dentry { + void *d_fsdata; /* fs-specific data */ + + struct list_head d_lru; /* LRU list */ ++ struct list_head d_child; /* child of parent list */ ++ struct list_head d_subdirs; /* our children */ + /* +- * d_child and d_rcu can share memory ++ * d_alias and d_rcu can share memory + */ + union { +- struct list_head d_child; /* child of parent list */ ++ struct hlist_node d_alias; /* inode alias list */ + struct rcu_head d_rcu; + } d_u; +- struct list_head d_subdirs; /* our children */ +- struct hlist_node d_alias; /* inode alias list */ + }; + + /* +diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c +index 15209335888d..09acba6e908a 100644 +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -6411,7 +6411,7 @@ static int instance_mkdir (struct inode *inode, struct dentry *dentry, umode_t m + int ret; + + /* Paranoid: Make sure the parent is the "instances" directory */ +- parent = hlist_entry(inode->i_dentry.first, struct dentry, d_alias); ++ parent = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias); + if (WARN_ON_ONCE(parent != trace_instance_dir)) + return -ENOENT; + +@@ -6438,7 +6438,7 @@ static int instance_rmdir(struct inode *inode, struct dentry *dentry) + int ret; + + /* Paranoid: Make sure the parent is the "instances" directory */ +- parent = hlist_entry(inode->i_dentry.first, struct dentry, d_alias); ++ parent = hlist_entry(inode->i_dentry.first, struct dentry, d_u.d_alias); + if (WARN_ON_ONCE(parent != trace_instance_dir)) + return -ENOENT; + +diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c +index ef06ce7e9cf8..85f9d33b4ad8 100644 +--- a/kernel/trace/trace_events.c ++++ b/kernel/trace/trace_events.c +@@ -461,7 +461,7 @@ static void remove_event_file_dir(struct ftrace_event_file *file) + + if (dir) { + spin_lock(&dir->d_lock); /* probably unneeded */ +- list_for_each_entry(child, &dir->d_subdirs, d_u.d_child) { ++ list_for_each_entry(child, &dir->d_subdirs, d_child) { + if (child->d_inode) /* probably unneeded */ + child->d_inode->i_private = NULL; + } +diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c +index c71737f6d1cc..33db1ad4fd10 100644 +--- a/security/selinux/selinuxfs.c ++++ b/security/selinux/selinuxfs.c +@@ -1200,7 +1200,7 @@ static void sel_remove_entries(struct dentry *de) + spin_lock(&de->d_lock); + node = de->d_subdirs.next; + while (node != &de->d_subdirs) { +- struct dentry *d = list_entry(node, struct dentry, d_u.d_child); ++ struct dentry *d = list_entry(node, struct dentry, d_child); + + spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED); + list_del_init(node); +@@ -1674,12 +1674,12 @@ static void sel_remove_classes(void) + + list_for_each(class_node, &class_dir->d_subdirs) { + struct dentry *class_subdir = list_entry(class_node, +- struct dentry, d_u.d_child); ++ struct dentry, d_child); + struct list_head *class_subdir_node; + + list_for_each(class_subdir_node, &class_subdir->d_subdirs) { + struct dentry *d = list_entry(class_subdir_node, +- struct dentry, d_u.d_child); ++ struct dentry, d_child); + + if (d->d_inode) + if (d->d_inode->i_mode & S_IFDIR) +-- +2.1.0 + diff --git a/freed-ora/current/f21/no-pcspkr-modalias.patch b/freed-ora/current/f21/no-pcspkr-modalias.patch index 15bbe14d3..a258676c3 100644 --- a/freed-ora/current/f21/no-pcspkr-modalias.patch +++ b/freed-ora/current/f21/no-pcspkr-modalias.patch @@ -21,5 +21,5 @@ index 674a2cfc3c0e..9a2807227c69 100644 static int pcspkr_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) { -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/perf-install-trace-event-plugins.patch b/freed-ora/current/f21/perf-install-trace-event-plugins.patch index 9a7ad3aa3..d33fd1550 100644 --- a/freed-ora/current/f21/perf-install-trace-event-plugins.patch +++ b/freed-ora/current/f21/perf-install-trace-event-plugins.patch @@ -26,5 +26,5 @@ index 86c21a24da46..bf0fe97bd358 100644 # Shell quote (do not use $(call) to accommodate ancient setups); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/pinctrl-pinctrl-single-must-be-initialized-early.patch b/freed-ora/current/f21/pinctrl-pinctrl-single-must-be-initialized-early.patch index d19b75f50..0e1ea2f1e 100644 --- a/freed-ora/current/f21/pinctrl-pinctrl-single-must-be-initialized-early.patch +++ b/freed-ora/current/f21/pinctrl-pinctrl-single-must-be-initialized-early.patch @@ -33,5 +33,5 @@ index 95dd9cf55cb3..800fc34d7ea9 100644 MODULE_AUTHOR("Tony Lindgren <tony@atomide.com>"); MODULE_DESCRIPTION("One-register-per-pin type device tree based pinctrl driver"); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/powerpc-powernv-force-all-CPUs-to-be-bootable.patch b/freed-ora/current/f21/powerpc-powernv-force-all-CPUs-to-be-bootable.patch new file mode 100644 index 000000000..1c0b62339 --- /dev/null +++ b/freed-ora/current/f21/powerpc-powernv-force-all-CPUs-to-be-bootable.patch @@ -0,0 +1,46 @@ +From: Greg Kurz <gkurz@linux.vnet.ibm.com> +Date: Fri, 12 Dec 2014 12:37:40 +0100 +Subject: [PATCH] powerpc/powernv: force all CPUs to be bootable + +The subcore logic needs all the CPUs declared in the DT to be bootable, +otherwise the kernel hangs at boot time. Since subcore support starts +with POWER8, we can keep the current behaviour for older CPUs. + +Signed-off-by: Greg Kurz <gkurz@linux.vnet.ibm.com> +--- + arch/powerpc/platforms/powernv/smp.c | 13 ++++++++++++- + 1 file changed, 12 insertions(+), 1 deletion(-) + +diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c +index 5fcfcf44e3a9..52552e60df36 100644 +--- a/arch/powerpc/platforms/powernv/smp.c ++++ b/arch/powerpc/platforms/powernv/smp.c +@@ -185,13 +185,24 @@ static void pnv_smp_cpu_kill_self(void) + + #endif /* CONFIG_HOTPLUG_CPU */ + ++static int pnv_cpu_bootable(unsigned int nr) ++{ ++ /* Starting with POWER8, all CPUs need to be booted to avoid hangs ++ * during subcore init. ++ */ ++ if (cpu_has_feature(CPU_FTR_ARCH_207S)) ++ return 1; ++ ++ return smp_generic_cpu_bootable(nr); ++} ++ + static struct smp_ops_t pnv_smp_ops = { + .message_pass = smp_muxed_ipi_message_pass, + .cause_ipi = NULL, /* Filled at runtime by xics_smp_probe() */ + .probe = xics_smp_probe, + .kick_cpu = pnv_smp_kick_cpu, + .setup_cpu = pnv_smp_setup_cpu, +- .cpu_bootable = smp_generic_cpu_bootable, ++ .cpu_bootable = pnv_cpu_bootable, + #ifdef CONFIG_HOTPLUG_CPU + .cpu_disable = pnv_smp_cpu_disable, + .cpu_die = generic_cpu_die, +-- +2.1.0 + diff --git a/freed-ora/current/f21/ppc64-fixtools.patch b/freed-ora/current/f21/ppc64-fixtools.patch index f8c934ba2..89e0b6334 100644 --- a/freed-ora/current/f21/ppc64-fixtools.patch +++ b/freed-ora/current/f21/ppc64-fixtools.patch @@ -20,5 +20,5 @@ index a7c23a4b3778..d73ef8bb08c7 100644 /* * When saving the callchain on Power, the kernel conservatively saves -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/psmouse-Add-psmouse_matches_pnp_id-helper-function.patch b/freed-ora/current/f21/psmouse-Add-psmouse_matches_pnp_id-helper-function.patch index 6af7c5395..68dbffbd2 100644 --- a/freed-ora/current/f21/psmouse-Add-psmouse_matches_pnp_id-helper-function.patch +++ b/freed-ora/current/f21/psmouse-Add-psmouse_matches_pnp_id-helper-function.patch @@ -53,10 +53,10 @@ index 2f0b39d59a9b..f4cf664c7db3 100644 struct psmouse_attribute { struct device_attribute dattr; diff --git a/drivers/input/mouse/synaptics.c b/drivers/input/mouse/synaptics.c -index 2e8f3ba7b2bd..2a7a9174c702 100644 +index 3ebfb0386300..f9472920d986 100644 --- a/drivers/input/mouse/synaptics.c +++ b/drivers/input/mouse/synaptics.c -@@ -186,18 +186,6 @@ static const char * const topbuttonpad_pnp_ids[] = { +@@ -190,18 +190,6 @@ static const char * const topbuttonpad_pnp_ids[] = { NULL }; @@ -75,7 +75,7 @@ index 2e8f3ba7b2bd..2a7a9174c702 100644 /***************************************************************************** * Synaptics communications functions ****************************************************************************/ -@@ -363,7 +351,8 @@ static int synaptics_resolution(struct psmouse *psmouse) +@@ -367,7 +355,8 @@ static int synaptics_resolution(struct psmouse *psmouse) } for (i = 0; min_max_pnpid_table[i].pnp_ids; i++) { @@ -85,7 +85,7 @@ index 2e8f3ba7b2bd..2a7a9174c702 100644 priv->x_min = min_max_pnpid_table[i].x_min; priv->x_max = min_max_pnpid_table[i].x_max; priv->y_min = min_max_pnpid_table[i].y_min; -@@ -1495,7 +1484,7 @@ static void set_input_params(struct psmouse *psmouse, +@@ -1499,7 +1488,7 @@ static void set_input_params(struct psmouse *psmouse, if (SYN_CAP_CLICKPAD(priv->ext_cap_0c)) { __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); @@ -95,5 +95,5 @@ index 2e8f3ba7b2bd..2a7a9174c702 100644 /* Clickpads report only left button */ __clear_bit(BTN_RIGHT, dev->keybit); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/psmouse-Add-support-for-detecting-FocalTech-PS-2-tou.patch b/freed-ora/current/f21/psmouse-Add-support-for-detecting-FocalTech-PS-2-tou.patch index 0d0583d5f..3cd8911ee 100644 --- a/freed-ora/current/f21/psmouse-Add-support-for-detecting-FocalTech-PS-2-tou.patch +++ b/freed-ora/current/f21/psmouse-Add-support-for-detecting-FocalTech-PS-2-tou.patch @@ -153,5 +153,5 @@ index 02e68c3008a3..2c8c8e2172a2 100644 * Reset to defaults in case the device got confused by extended * protocol probes. Note that we follow up with full reset because -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch b/freed-ora/current/f21/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch index 4c12bd76b..86870bb41 100644 --- a/freed-ora/current/f21/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch +++ b/freed-ora/current/f21/samsung-laptop-Add-broken-acpi-video-quirk-for-NC210.patch @@ -35,5 +35,5 @@ index ff765d8e1a09..864290243e46 100644 }; MODULE_DEVICE_TABLE(dmi, samsung_dmi_table); -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch b/freed-ora/current/f21/scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch index 9dad35ce2..0a2c7fbad 100644 --- a/freed-ora/current/f21/scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch +++ b/freed-ora/current/f21/scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch @@ -33,5 +33,5 @@ index 2c2041ca4b70..e10812d985af 100644 * If the device is offline, don't try and read capacity or any * of the other niceties. -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/silence-fbcon-logo.patch b/freed-ora/current/f21/silence-fbcon-logo.patch index 2b907f90b..ae4c118af 100644 --- a/freed-ora/current/f21/silence-fbcon-logo.patch +++ b/freed-ora/current/f21/silence-fbcon-logo.patch @@ -51,5 +51,5 @@ index 57b1d44acbfe..31048a85713d 100644 #ifdef MODULE -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/sources b/freed-ora/current/f21/sources index 85e6f2fda..30b5ea916 100644 --- a/freed-ora/current/f21/sources +++ b/freed-ora/current/f21/sources @@ -1,3 +1,3 @@ 61aaf05e9ccb9be9bcf9135993e9ee3e linux-libre-3.17-gnu.tar.xz 159e969cbc27201d8e2fa0f609dc722f perf-man-3.17.tar.gz -a249818fc3c167a067b1508d86855efa patch-3.17.6.xz +96d5959bdc223fa6aa0ed132c93cf814 patch-3.17.7.xz diff --git a/freed-ora/current/f21/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch b/freed-ora/current/f21/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch new file mode 100644 index 000000000..66e28232a --- /dev/null +++ b/freed-ora/current/f21/uas-Add-US_FL_NO_ATA_1X-for-Seagate-devices-with-usb.patch @@ -0,0 +1,38 @@ +From: Hans de Goede <hdegoede@redhat.com> +Date: Fri, 5 Dec 2014 11:06:36 +0100 +Subject: [PATCH] uas: Add US_FL_NO_ATA_1X for Seagate devices with usb-id + 0bc2:a013 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is yet another Seagate device which needs the US_FL_NO_ATA_1X quirk + +Reported-by: Marcin Zajączkowski <mszpak@wp.pl> +Cc: stable@vger.kernel.org # 3.16 +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +--- + drivers/usb/storage/unusual_uas.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h +index 18a283d6de1c..2918376a1979 100644 +--- a/drivers/usb/storage/unusual_uas.h ++++ b/drivers/usb/storage/unusual_uas.h +@@ -68,6 +68,13 @@ UNUSUAL_DEV(0x0bc2, 0xa003, 0x0000, 0x9999, + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_NO_ATA_1X), + ++/* Reported-by: Marcin Zajączkowski <mszpak@wp.pl> */ ++UNUSUAL_DEV(0x0bc2, 0xa013, 0x0000, 0x9999, ++ "Seagate", ++ "Backup Plus", ++ USB_SC_DEVICE, USB_PR_DEVICE, NULL, ++ US_FL_NO_ATA_1X), ++ + /* https://bbs.archlinux.org/viewtopic.php?id=183190 */ + UNUSUAL_DEV(0x0bc2, 0xab20, 0x0000, 0x9999, + "Seagate", +-- +2.1.0 + diff --git a/freed-ora/current/f21/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch b/freed-ora/current/f21/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch new file mode 100644 index 000000000..e95a5c736 --- /dev/null +++ b/freed-ora/current/f21/uas-Add-US_FL_NO_REPORT_OPCODES-for-JMicron-JMS566-w.patch @@ -0,0 +1,36 @@ +From: Hans de Goede <hdegoede@redhat.com> +Date: Mon, 8 Dec 2014 09:46:36 +0100 +Subject: [PATCH] uas: Add US_FL_NO_REPORT_OPCODES for JMicron JMS566 with + usb-id 0bc2:a013 + +Like the JMicron JMS567 enclosures with the JMS566 choke on report-opcodes, +so avoid it. + +Tested-and-reported-by: Takeo Nakayama <javhera@gmx.com> +Cc: stable@vger.kernel.org # 3.16 +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +--- + drivers/usb/storage/unusual_uas.h | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h +index 2918376a1979..2f0a3d35269a 100644 +--- a/drivers/usb/storage/unusual_uas.h ++++ b/drivers/usb/storage/unusual_uas.h +@@ -111,6 +111,13 @@ UNUSUAL_DEV(0x2109, 0x0711, 0x0000, 0x9999, + USB_SC_DEVICE, USB_PR_DEVICE, NULL, + US_FL_NO_ATA_1X), + ++/* Reported-by: Takeo Nakayama <javhera@gmx.com> */ ++UNUSUAL_DEV(0x357d, 0x7788, 0x0000, 0x9999, ++ "JMicron", ++ "JMS566", ++ USB_SC_DEVICE, USB_PR_DEVICE, NULL, ++ US_FL_NO_REPORT_OPCODES), ++ + /* Reported-by: Hans de Goede <hdegoede@redhat.com> */ + UNUSUAL_DEV(0x4971, 0x1012, 0x0000, 0x9999, + "Hitachi", +-- +2.1.0 + diff --git a/freed-ora/current/f21/watchdog-Disable-watchdog-on-virtual-machines.patch b/freed-ora/current/f21/watchdog-Disable-watchdog-on-virtual-machines.patch index 23a17c054..ea7debcba 100644 --- a/freed-ora/current/f21/watchdog-Disable-watchdog-on-virtual-machines.patch +++ b/freed-ora/current/f21/watchdog-Disable-watchdog-on-virtual-machines.patch @@ -74,5 +74,5 @@ index a8d6914030fe..d0a8c308170d 100644 if (watchdog_user_enabled) -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/x86-Lock-down-IO-port-access-when-module-security-is.patch b/freed-ora/current/f21/x86-Lock-down-IO-port-access-when-module-security-is.patch index 327c65ef6..fc1cfd566 100644 --- a/freed-ora/current/f21/x86-Lock-down-IO-port-access-when-module-security-is.patch +++ b/freed-ora/current/f21/x86-Lock-down-IO-port-access-when-module-security-is.patch @@ -66,5 +66,5 @@ index 917403fe10da..cdf839f9defe 100644 return -EFAULT; while (count-- > 0 && i < 65536) { -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/x86-Restrict-MSR-access-when-module-loading-is-restr.patch b/freed-ora/current/f21/x86-Restrict-MSR-access-when-module-loading-is-restr.patch index f21c93821..12eedc931 100644 --- a/freed-ora/current/f21/x86-Restrict-MSR-access-when-module-loading-is-restr.patch +++ b/freed-ora/current/f21/x86-Restrict-MSR-access-when-module-loading-is-restr.patch @@ -38,5 +38,5 @@ index c9603ac80de5..8bef43fc3f40 100644 err = -EFAULT; break; -- -1.9.3 +2.1.0 diff --git a/freed-ora/current/f21/x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch b/freed-ora/current/f21/x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch new file mode 100644 index 000000000..cae153cbb --- /dev/null +++ b/freed-ora/current/f21/x86-kvm-Clear-paravirt_enabled-on-KVM-guests-for-esp.patch @@ -0,0 +1,72 @@ +From: Andy Lutomirski <luto@amacapital.net> +Date: Fri, 5 Dec 2014 19:03:28 -0800 +Subject: [PATCH] x86, kvm: Clear paravirt_enabled on KVM guests for espfix32's + benefit + +paravirt_enabled has the following effects: + + - Disables the F00F bug workaround warning. There is no F00F bug + workaround any more because Linux's standard IDT handling already + works around the F00F bug, but the warning still exists. This + is only cosmetic, and, in any event, there is no such thing as + KVM on a CPU with the F00F bug. + + - Disables 32-bit APM BIOS detection. On a KVM paravirt system, + there should be no APM BIOS anyway. + + - Disables tboot. I think that the tboot code should check the + CPUID hypervisor bit directly if it matters. + + - paravirt_enabled disables espfix32. espfix32 should *not* be + disabled under KVM paravirt. + +The last point is the purpose of this patch. It fixes a leak of the +high 16 bits of the kernel stack address on 32-bit KVM paravirt +guests. + +While I'm at it, this removes pv_info setup from kvmclock. That +code seems to serve no purpose. + +Cc: stable@vger.kernel.org +Signed-off-by: Andy Lutomirski <luto@amacapital.net> +--- + arch/x86/kernel/kvm.c | 9 ++++++++- + arch/x86/kernel/kvmclock.c | 2 -- + 2 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c +index 3dd8e2c4d74a..07de51f66deb 100644 +--- a/arch/x86/kernel/kvm.c ++++ b/arch/x86/kernel/kvm.c +@@ -282,7 +282,14 @@ NOKPROBE_SYMBOL(do_async_page_fault); + static void __init paravirt_ops_setup(void) + { + pv_info.name = "KVM"; +- pv_info.paravirt_enabled = 1; ++ ++ /* ++ * KVM isn't paravirt in the sense of paravirt_enabled. A KVM ++ * guest kernel works like a bare metal kernel with additional ++ * features, and paravirt_enabled is about features that are ++ * missing. ++ */ ++ pv_info.paravirt_enabled = 0; + + if (kvm_para_has_feature(KVM_FEATURE_NOP_IO_DELAY)) + pv_cpu_ops.io_delay = kvm_io_delay; +diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c +index d9156ceecdff..d4d9a8ad7893 100644 +--- a/arch/x86/kernel/kvmclock.c ++++ b/arch/x86/kernel/kvmclock.c +@@ -263,8 +263,6 @@ void __init kvmclock_init(void) + #endif + kvm_get_preset_lpj(); + clocksource_register_hz(&kvm_clock, NSEC_PER_SEC); +- pv_info.paravirt_enabled = 1; +- pv_info.name = "KVM"; + + if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE_STABLE_BIT)) + pvclock_set_flags(PVCLOCK_TSC_STABLE_BIT); +-- +2.1.0 + diff --git a/freed-ora/current/f21/x86-tls-Validate-TLS-entries-to-protect-espfix.patch b/freed-ora/current/f21/x86-tls-Validate-TLS-entries-to-protect-espfix.patch new file mode 100644 index 000000000..52c049767 --- /dev/null +++ b/freed-ora/current/f21/x86-tls-Validate-TLS-entries-to-protect-espfix.patch @@ -0,0 +1,77 @@ +From: Andy Lutomirski <luto@amacapital.net> +Date: Thu, 4 Dec 2014 16:48:16 -0800 +Subject: [PATCH] x86/tls: Validate TLS entries to protect espfix + +Installing a 16-bit RW data segment into the GDT defeats espfix. +AFAICT this will not affect glibc, Wine, or dosemu at all. + +Signed-off-by: Andy Lutomirski <luto@amacapital.net> +Acked-by: H. Peter Anvin <hpa@zytor.com> +Cc: stable@vger.kernel.org +Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> +Cc: Linus Torvalds <torvalds@linux-foundation.org> +Cc: security@kernel.org <security@kernel.org> +Cc: Willy Tarreau <w@1wt.eu> +Signed-off-by: Ingo Molnar <mingo@kernel.org> +--- + arch/x86/kernel/tls.c | 23 +++++++++++++++++++++++ + 1 file changed, 23 insertions(+) + +diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c +index f7fec09e3e3a..e7650bd71109 100644 +--- a/arch/x86/kernel/tls.c ++++ b/arch/x86/kernel/tls.c +@@ -27,6 +27,21 @@ static int get_free_idx(void) + return -ESRCH; + } + ++static bool tls_desc_okay(const struct user_desc *info) ++{ ++ if (LDT_empty(info)) ++ return true; ++ ++ /* ++ * espfix is required for 16-bit data segments, but espfix ++ * only works for LDT segments. ++ */ ++ if (!info->seg_32bit) ++ return false; ++ ++ return true; ++} ++ + static void set_tls_desc(struct task_struct *p, int idx, + const struct user_desc *info, int n) + { +@@ -66,6 +81,9 @@ int do_set_thread_area(struct task_struct *p, int idx, + if (copy_from_user(&info, u_info, sizeof(info))) + return -EFAULT; + ++ if (!tls_desc_okay(&info)) ++ return -EINVAL; ++ + if (idx == -1) + idx = info.entry_number; + +@@ -192,6 +210,7 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset, + { + struct user_desc infobuf[GDT_ENTRY_TLS_ENTRIES]; + const struct user_desc *info; ++ int i; + + if (pos >= GDT_ENTRY_TLS_ENTRIES * sizeof(struct user_desc) || + (pos % sizeof(struct user_desc)) != 0 || +@@ -205,6 +224,10 @@ int regset_tls_set(struct task_struct *target, const struct user_regset *regset, + else + info = infobuf; + ++ for (i = 0; i < count / sizeof(struct user_desc); i++) ++ if (!tls_desc_okay(info + i)) ++ return -EINVAL; ++ + set_tls_desc(target, + GDT_ENTRY_TLS_MIN + (pos / sizeof(struct user_desc)), + info, count / sizeof(struct user_desc)); +-- +2.1.0 + diff --git a/freed-ora/current/f21/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch b/freed-ora/current/f21/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch new file mode 100644 index 000000000..e54425e29 --- /dev/null +++ b/freed-ora/current/f21/xhci-Add-broken-streams-quirk-for-Fresco-Logic-FL100.patch @@ -0,0 +1,44 @@ +From: Hans de Goede <hdegoede@redhat.com> +Date: Fri, 5 Dec 2014 11:01:00 +0100 +Subject: [PATCH] xhci: Add broken-streams quirk for Fresco Logic FL1000G xhci + controllers +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Streams do not work reliabe on Fresco Logic FL1000G xhci controllers, +trying to use them results in errors like this: + +21:37:33 kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for disabled endpoint or incorrect stream ring +21:37:33 kernel: xhci_hcd 0000:04:00.0: @00000000368b3570 9067b000 00000000 05000000 01078001 +21:37:33 kernel: xhci_hcd 0000:04:00.0: ERROR Transfer event for disabled endpoint or incorrect stream ring +21:37:33 kernel: xhci_hcd 0000:04:00.0: @00000000368b3580 9067b400 00000000 05000000 01038001 + +As always I've ordered a pci-e addon card with a Fresco Logic controller for +myself to see if I can come up with a better fix then the big hammer, in +the mean time this will make uas devices work again (in usb-storage mode) +for FL1000G users. + +Reported-by: Marcin Zajączkowski <mszpak@wp.pl> +Cc: stable@vger.kernel.org # 3.15 +Signed-off-by: Hans de Goede <hdegoede@redhat.com> +--- + drivers/usb/host/xhci-pci.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c +index d41ce7aaa97d..63f79aa82673 100644 +--- a/drivers/usb/host/xhci-pci.c ++++ b/drivers/usb/host/xhci-pci.c +@@ -80,6 +80,8 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) + "must be suspended extra slowly", + pdev->revision); + } ++ if (pdev->device == PCI_DEVICE_ID_FRESCO_LOGIC_PDK) ++ xhci->quirks |= XHCI_BROKEN_STREAMS; + /* Fresco Logic confirms: all revisions of this chip do not + * support MSI, even though some of them claim to in their PCI + * capabilities. +-- +2.1.0 + |