next boot: 179 boots: 37 failed, 136 passed with 4 offline, 2 conflicts (next-20150825)
Full Boot Summary: http://kernelci.org/boot/all/job/next/kernel/next-20150825/ Full Build Summary: http://kernelci.org/build/next/kernel/next-20150825/
Tree: next Branch: local/master Git Describe: next-20150825 Git Commit: 512450361ea46ed5a8c5d81f507fef094181ab91 Git URL: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git Tested: 56 unique boards, 15 SoC families, 22 builds out of 132
Boot Failures Detected: http://kernelci.org/boot/?next-20150825&fail
arm:
multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y: am335x-boneblack: 1 failed lab at91-sama5d3_xplained: 1 failed lab exynos4412-odroidx2: 1 failed lab exynos5250-arndale: 1 failed lab exynos5250-snow: 1 failed lab exynos5420-arndale-octa: 1 failed lab exynos5422-odroidxu3: 2 failed labs exynos5800-peach-pi: 1 failed lab hip04-d01: 1 failed lab imx6q-cm-fx6: 1 failed lab imx6q-sabrelite: 1 failed lab imx6q-wandboard: 1 failed lab omap3-beagle-xm: 1 failed lab omap4-panda: 1 failed lab omap4-panda-es: 1 failed lab qcom-apq8064-ifc6410: 1 failed lab qcom-apq8084-ifc6540: 1 failed lab sun7i-a20-bananapi: 1 failed lab sun7i-a20-cubietruck: 1 failed lab sun9i-a80-cubieboard4: 1 failed lab sun9i-a80-optimus: 1 failed lab tegra124-jetson-tk1: 2 failed labs vexpress-v2p-ca15-tc1: 1 failed lab vexpress-v2p-ca15_a7: 1 failed lab vexpress-v2p-ca9: 1 failed lab zynq-parallella: 1 failed lab
multi_v7_defconfig+CONFIG_ARM_LPAE=y: tegra124-jetson-tk1: 1 failed lab
exynos_defconfig: exynos4412-odroidu3: 1 failed lab exynos4412-odroidx2: 1 failed lab exynos5250-arndale: 1 failed lab exynos5420-arndale-octa: 1 failed lab exynos5420-arndale-octa_rootfs:nfs: 1 failed lab
versatile_defconfig+CONFIG_OF_UNITTEST=y: versatilepb,legacy: 1 failed lab
omap2plus_defconfig: omap3-beagle-xm: 1 failed lab
versatile_defconfig: versatilepb,legacy: 1 failed lab
Offline Platforms:
arm64:
defconfig: hi6220-hikey: 1 offline lab
defconfig+CONFIG_OF_UNITTEST=y: hi6220-hikey: 1 offline lab
arm:
multi_v7_defconfig: ste-snowball_rootfs:nfs: 1 offline lab
multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y: ste-snowball: 1 offline lab
Conflicting Boot Failures Detected: (These likely are not failures as other labs are reporting PASS. Needs review.)
arm:
multi_v7_defconfig: tegra124-jetson-tk1: lab-collabora: PASS lab-tbaker: FAIL
multi_v7_defconfig+CONFIG_PROVE_LOCKING=y: tegra124-jetson-tk1: lab-collabora: PASS lab-tbaker: FAIL
--- For more info write to info@kernelci.org
Hi,
On 25 August 2015 at 05:55, kernelci.org bot bot@kernelci.org wrote:
*next boot: 179 boots: 37 failed, 136 passed with 4 offline, 2 conflicts (next-20150825)* Full Boot Summary: http://kernelci.org/boot/all/job/next/kernel/next-20150825/ Full Build Summary: http://kernelci.org/build/next/kernel/next-20150825/ Tree: next Branch: local/master Git Describe: next-20150825 Git Commit: 512450361ea46ed5a8c5d81f507fef094181ab91 Git URL: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=512450361ea46ed5a8c5d81f507fef094181ab91 Tested: 56 unique boards, 15 SoC families, 22 builds out of 132 *Boot Failures Detected: http://kernelci.org/boot/?next-20150825&fail http://kernelci.org/boot/?next-20150825&fail* arm: multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y: am335x-boneblack http://kernelci.org/boot/am335x-boneblack/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab at91-sama5d3_xplained http://kernelci.org/boot/at91-sama5d3_xplained/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos4412-odroidx2 http://kernelci.org/boot/exynos4412-odroidx2/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5250-arndale http://kernelci.org/boot/exynos5250-arndale/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5250-snow http://kernelci.org/boot/exynos5250-snow/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5420-arndale-octa http://kernelci.org/boot/exynos5420-arndale-octa/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5422-odroidxu3 http://kernelci.org/boot/exynos5422-odroidxu3/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 2 failed labs exynos5800-peach-pi http://kernelci.org/boot/exynos5800-peach-pi/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab hip04-d01 http://kernelci.org/boot/hip04-d01/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab imx6q-cm-fx6 http://kernelci.org/boot/imx6q-cm-fx6/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab imx6q-sabrelite http://kernelci.org/boot/imx6q-sabrelite/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab imx6q-wandboard http://kernelci.org/boot/imx6q-wandboard/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab omap3-beagle-xm http://kernelci.org/boot/omap3-beagle-xm/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab omap4-panda http://kernelci.org/boot/omap4-panda/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab omap4-panda-es http://kernelci.org/boot/omap4-panda-es/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab qcom-apq8064-ifc6410 http://kernelci.org/boot/qcom-apq8064-ifc6410/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab qcom-apq8084-ifc6540 http://kernelci.org/boot/qcom-apq8084-ifc6540/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun7i-a20-bananapi http://kernelci.org/boot/sun7i-a20-bananapi/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun7i-a20-cubietruck http://kernelci.org/boot/sun7i-a20-cubietruck/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun9i-a80-cubieboard4 http://kernelci.org/boot/sun9i-a80-cubieboard4/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun9i-a80-optimus http://kernelci.org/boot/sun9i-a80-optimus/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab tegra124-jetson-tk1 http://kernelci.org/boot/tegra124-jetson-tk1/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 2 failed labs vexpress-v2p-ca15-tc1 http://kernelci.org/boot/vexpress-v2p-ca15-tc1/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab vexpress-v2p-ca15_a7 http://kernelci.org/boot/vexpress-v2p-ca15_a7/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab vexpress-v2p-ca9 http://kernelci.org/boot/vexpress-v2p-ca9/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab zynq-parallella http://kernelci.org/boot/zynq-parallella/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab
I bisected these CONFIG_THUMB2_KERNEL boot failures:
0db805aa8c96f0eac0cb5bc6688999212fb5f5d3 is the first bad commit commit 0db805aa8c96f0eac0cb5bc6688999212fb5f5d3 Author: Russell King rmk+kernel@arm.linux.org.uk Date: Wed Aug 19 20:40:41 2015 +0100
ARM: software-based priviledged-no-access support
Provide a software-based implementation of the priviledged no access support found in ARMv8.1.
Userspace pages are mapped using a different domain number from the kernel and IO mappings. If we switch the user domain to "no access" when we enter the kernel, we can prevent the kernel from touching userspace.
However, the kernel needs to be able to access userspace via the various user accessor functions. With the wrapping in the previous patch, we can temporarily enable access when the kernel needs user access, and re-disable it afterwards.
This allows us to trap non-intended accesses to userspace, eg, caused by an inadvertent dereference of the LIST_POISON* values, which, with appropriate user mappings setup, can be made to succeed. This in turn can allow use-after-free bugs to be further exploited than would otherwise be possible.
Signed-off-by: Russell King rmk+kernel@arm.linux.org.uk
:040000 040000 3ba2c3c3777b2d1ea6f68002a79eb9bc8162d64a 0bfc56928dfe41e4fd1d1180d1969a4ecb12b33b M arch bisect run success git bisect start # bad: [512450361ea46ed5a8c5d81f507fef094181ab91] Add linux-next specific files for 20150825 git bisect bad 512450361ea46ed5a8c5d81f507fef094181ab91 # good: [c13dcf9f2d6f5f06ef1bf79ec456df614c5e058b] Linux 4.2-rc8 git bisect good c13dcf9f2d6f5f06ef1bf79ec456df614c5e058b # bad: [ad445f1d179a661c51bb345704399ca57ebb1824] Merge remote-tracking branch 'drm/drm-next' git bisect bad ad445f1d179a661c51bb345704399ca57ebb1824 # bad: [c41e15b28185d930f98a4b66c3f9397555d06d64] Merge remote-tracking branch 'kbuild/for-next' git bisect bad c41e15b28185d930f98a4b66c3f9397555d06d64 # bad: [707f9e14767d7a323bb51f3b92bb0c670288b3dd] Merge remote-tracking branch 'mips/mips-for-linux-next' git bisect bad 707f9e14767d7a323bb51f3b92bb0c670288b3dd # good: [2ee33987978459a8e3c9572c69d34195367a2995] Merge branch 'next/dt' into for-next git bisect good 2ee33987978459a8e3c9572c69d34195367a2995 # bad: [b423c2b274ac4ec9bcbdcd6f33ea2e7d798eb700] Merge remote-tracking branch 'samsung/for-next' git bisect bad b423c2b274ac4ec9bcbdcd6f33ea2e7d798eb700 # good: [332d55b295f72be7b7b91bf119719c6b61f4777c] arm-soc: document merges git bisect good 332d55b295f72be7b7b91bf119719c6b61f4777c # bad: [537ad7e742dea3440925cbee2d3743e72b25b192] Merge remote-tracking branch 'at91/at91-next' git bisect bad 537ad7e742dea3440925cbee2d3743e72b25b192 # bad: [555d3b763e4bd9a87eb4e6817cf40b4591cd3cc5] Merge branch 'devel-stable' into for-next git bisect bad 555d3b763e4bd9a87eb4e6817cf40b4591cd3cc5 # good: [96231b2686b53f71838a335bdc404cb5285d1a01] ARM: 8419/1: dma-mapping: harmonize definition of DMA_ERROR_CODE git bisect good 96231b2686b53f71838a335bdc404cb5285d1a01 # bad: [8909f06cf8634947a48caa651f77620f6345a751] Merge branches 'cleanup', 'fixes', 'fiq' (early part), 'misc', 'omap-barrier', 'pcmcia' and 'uaccess' into for-next git bisect bad 8909f06cf8634947a48caa651f77620f6345a751 # bad: [0db805aa8c96f0eac0cb5bc6688999212fb5f5d3] ARM: software-based priviledged-no-access support git bisect bad 0db805aa8c96f0eac0cb5bc6688999212fb5f5d3 # good: [3c2aed5b28819564e1a07b4686bd89802bcc4d6b] ARM: domains: get rid of manager mode for user domain git bisect good 3c2aed5b28819564e1a07b4686bd89802bcc4d6b # good: [1fb6755f16872ad256c18cce2830f9087502dffd] ARM: domains: remove DOMAIN_TABLE git bisect good 1fb6755f16872ad256c18cce2830f9087502dffd # good: [85f3dc0c51564aa13d6fef06226ceb00058f208e] ARM: entry: provide uaccess assembly macro hooks git bisect good 85f3dc0c51564aa13d6fef06226ceb00058f208e # first bad commit: [0db805aa8c96f0eac0cb5bc6688999212fb5f5d3] ARM: software-based priviledged-no-access support
Cheers,
Tyler
On Tue, Aug 25, 2015 at 9:15 AM, Tyler Baker tyler.baker@linaro.org wrote:
Hi,
On 25 August 2015 at 05:55, kernelci.org bot bot@kernelci.org wrote:
*next boot: 179 boots: 37 failed, 136 passed with 4 offline, 2 conflicts (next-20150825)* Full Boot Summary: http://kernelci.org/boot/all/job/next/kernel/next-20150825/ Full Build Summary: http://kernelci.org/build/next/kernel/next-20150825/ Tree: next Branch: local/master Git Describe: next-20150825 Git Commit: 512450361ea46ed5a8c5d81f507fef094181ab91 Git URL: git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=512450361ea46ed5a8c5d81f507fef094181ab91 Tested: 56 unique boards, 15 SoC families, 22 builds out of 132 *Boot Failures Detected: http://kernelci.org/boot/?next-20150825&fail http://kernelci.org/boot/?next-20150825&fail* arm: multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y: am335x-boneblack http://kernelci.org/boot/am335x-boneblack/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab at91-sama5d3_xplained http://kernelci.org/boot/at91-sama5d3_xplained/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos4412-odroidx2 http://kernelci.org/boot/exynos4412-odroidx2/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5250-arndale http://kernelci.org/boot/exynos5250-arndale/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5250-snow http://kernelci.org/boot/exynos5250-snow/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5420-arndale-octa http://kernelci.org/boot/exynos5420-arndale-octa/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5422-odroidxu3 http://kernelci.org/boot/exynos5422-odroidxu3/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 2 failed labs exynos5800-peach-pi http://kernelci.org/boot/exynos5800-peach-pi/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab hip04-d01 http://kernelci.org/boot/hip04-d01/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab imx6q-cm-fx6 http://kernelci.org/boot/imx6q-cm-fx6/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab imx6q-sabrelite http://kernelci.org/boot/imx6q-sabrelite/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab imx6q-wandboard http://kernelci.org/boot/imx6q-wandboard/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab omap3-beagle-xm http://kernelci.org/boot/omap3-beagle-xm/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab omap4-panda http://kernelci.org/boot/omap4-panda/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab omap4-panda-es http://kernelci.org/boot/omap4-panda-es/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab qcom-apq8064-ifc6410 http://kernelci.org/boot/qcom-apq8064-ifc6410/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab qcom-apq8084-ifc6540 http://kernelci.org/boot/qcom-apq8084-ifc6540/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun7i-a20-bananapi http://kernelci.org/boot/sun7i-a20-bananapi/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun7i-a20-cubietruck http://kernelci.org/boot/sun7i-a20-cubietruck/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun9i-a80-cubieboard4 http://kernelci.org/boot/sun9i-a80-cubieboard4/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun9i-a80-optimus http://kernelci.org/boot/sun9i-a80-optimus/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab tegra124-jetson-tk1 http://kernelci.org/boot/tegra124-jetson-tk1/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 2 failed labs vexpress-v2p-ca15-tc1 http://kernelci.org/boot/vexpress-v2p-ca15-tc1/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab vexpress-v2p-ca15_a7 http://kernelci.org/boot/vexpress-v2p-ca15_a7/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab vexpress-v2p-ca9 http://kernelci.org/boot/vexpress-v2p-ca9/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab zynq-parallella http://kernelci.org/boot/zynq-parallella/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab
I bisected these CONFIG_THUMB2_KERNEL boot failures:
0db805aa8c96f0eac0cb5bc6688999212fb5f5d3 is the first bad commit commit 0db805aa8c96f0eac0cb5bc6688999212fb5f5d3 Author: Russell King rmk+kernel@arm.linux.org.uk Date: Wed Aug 19 20:40:41 2015 +0100
ARM: software-based priviledged-no-access support Provide a software-based implementation of the priviledged no access support found in ARMv8.1. Userspace pages are mapped using a different domain number from the kernel and IO mappings. If we switch the user domain to "no access" when we enter the kernel, we can prevent the kernel from touching userspace. However, the kernel needs to be able to access userspace via the various user accessor functions. With the wrapping in the previous patch, we can temporarily enable access when the kernel needs user access, and re-disable it afterwards. This allows us to trap non-intended accesses to userspace, eg, caused by an inadvertent dereference of the LIST_POISON* values, which, with appropriate user mappings setup, can be made to succeed. This in turn can allow use-after-free bugs to be further exploited than would otherwise be possible. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
FYI... The davinci_defconfig fails (on da850-evm and dm365) also bisected to this commit.
Kevin
On Tue, Aug 25, 2015 at 09:15:10AM -0700, Tyler Baker wrote:
git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git/commit/?id=512450361ea46ed5a8c5d81f507fef094181ab91 Tested: 56 unique boards, 15 SoC families, 22 builds out of 132 *Boot Failures Detected: http://kernelci.org/boot/?next-20150825&fail http://kernelci.org/boot/?next-20150825&fail* arm: multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y: am335x-boneblack http://kernelci.org/boot/am335x-boneblack/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab at91-sama5d3_xplained http://kernelci.org/boot/at91-sama5d3_xplained/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos4412-odroidx2 http://kernelci.org/boot/exynos4412-odroidx2/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5250-arndale http://kernelci.org/boot/exynos5250-arndale/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5250-snow http://kernelci.org/boot/exynos5250-snow/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5420-arndale-octa http://kernelci.org/boot/exynos5420-arndale-octa/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab exynos5422-odroidxu3 http://kernelci.org/boot/exynos5422-odroidxu3/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 2 failed labs exynos5800-peach-pi http://kernelci.org/boot/exynos5800-peach-pi/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab hip04-d01 http://kernelci.org/boot/hip04-d01/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab imx6q-cm-fx6 http://kernelci.org/boot/imx6q-cm-fx6/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab imx6q-sabrelite http://kernelci.org/boot/imx6q-sabrelite/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab imx6q-wandboard http://kernelci.org/boot/imx6q-wandboard/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab omap3-beagle-xm http://kernelci.org/boot/omap3-beagle-xm/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab omap4-panda http://kernelci.org/boot/omap4-panda/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab omap4-panda-es http://kernelci.org/boot/omap4-panda-es/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab qcom-apq8064-ifc6410 http://kernelci.org/boot/qcom-apq8064-ifc6410/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab qcom-apq8084-ifc6540 http://kernelci.org/boot/qcom-apq8084-ifc6540/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun7i-a20-bananapi http://kernelci.org/boot/sun7i-a20-bananapi/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun7i-a20-cubietruck http://kernelci.org/boot/sun7i-a20-cubietruck/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun9i-a80-cubieboard4 http://kernelci.org/boot/sun9i-a80-cubieboard4/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab sun9i-a80-optimus http://kernelci.org/boot/sun9i-a80-optimus/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab tegra124-jetson-tk1 http://kernelci.org/boot/tegra124-jetson-tk1/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 2 failed labs vexpress-v2p-ca15-tc1 http://kernelci.org/boot/vexpress-v2p-ca15-tc1/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab vexpress-v2p-ca15_a7 http://kernelci.org/boot/vexpress-v2p-ca15_a7/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab vexpress-v2p-ca9 http://kernelci.org/boot/vexpress-v2p-ca9/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab zynq-parallella http://kernelci.org/boot/zynq-parallella/job/next/kernel/next-20150825/defconfig/multi_v7_defconfig+CONFIG_THUMB2_KERNEL=y/: 1 failed lab
I bisected these CONFIG_THUMB2_KERNEL boot failures:
Thanks for the report - I'm guessing these are all the same failure. Not yet sure what's causing it, and I don't think the updates that I've pushed out so far will address this yet.
Looking at the oops dumps you have, it's really quite annoying that they do not contain a proper backtrace. I also have to ask why your logs seem to screw up on the PC/LR values in the oops dumps - they seem to be completely missing.
From what I can tell from the oops dumps you have, the failure is in
padzero calling clear_user, which then calls __clear_user_std. That path already changes the domain register to make userspace accessible; we can see that in the register values in the oops dump, where r4 is 0x15 and r3 is 0x55. This follows the assembly I have here, where r3 will be written to the DACR, followed by an ISB, then a call to __clear_user_std before restoring it to the state saved in r4.
I wonder whether we need something stronger there, maybe a DSB to prevent the accesses trying to occur before the DACR update. I'll need to read the ARM or talk to Will about that.
In any case, let me know how tonights fair, and whether things improve.
I must admit that I don't normally look at kernelci stuff very often because I'm normally using a non-javascript enabled browser (elinks) and moving to the desktop just to look at kernelci stuff tends to be annoying. In fact, tonight is probably the first time I've looked at any kernelci results.
On Wed, Aug 26, 2015 at 12:30:51AM +0100, Russell King - ARM Linux wrote:
From what I can tell from the oops dumps you have, the failure is in padzero calling clear_user, which then calls __clear_user_std. That path already changes the domain register to make userspace accessible; we can see that in the register values in the oops dump, where r4 is 0x15 and r3 is 0x55. This follows the assembly I have here, where r3 will be written to the DACR, followed by an ISB, then a call to __clear_user_std before restoring it to the state saved in r4.
I wonder whether we need something stronger there, maybe a DSB to prevent the accesses trying to occur before the DACR update. I'll need to read the ARM or talk to Will about that.
I finally found the cause of it - it comes down to the crappy idea that assembler macros which depend on a config option should be done like this:
#ifdef CONFIG_symbol .macro foo ... .endm .macro bar ... .endm #else .macro foo ... .endm .macro bar ... .endm #endif
On the face of it, it looks like a good idea, but it _really_ isn't, especially when we end up with it getting to:
#ifdef CONFIG_symbol .macro foo ... .endm .macro bar ... .endm .macro baz ... .endm #else .macro foo ... .endm .macro bar ... .endm #ifdef CONFIG_symbol2 .macro baz ... .endm #else .macro baz ... .endm #endif #endif
which is exactly what we have for the svc_exit, svc_exit_with_fiq and restore_user macros in entry-header.S.
It's no wonder, therefore, that the Thumb2 SVC exit paths totally missed out on being updated with the DACR restore. So, what was happening in these failure cases was:
- CPU sets DACR to allow userspace access in padzero - CPU drops into arm_clear_user - CPU writes to userspace, but page is not present. - CPU triggers data abort, saves state (including DACR), disables user access, and processes the exception - CPU returns from data abort processing, but _omits_ to restore the DACR. - CPU retries the write to userspace, and hits a domain fault because the DACR is now set to deny access to userspace.
To prevent this kind of oversight in the future, the only sane way to handle this is to ensure locality of definition. The best way to ensure that is not by the above crappy structure, but by:
.macro foo ... common bits ... #ifdef CONFIG_symbol ... #else ... #endif .endm .macro bar #ifdef CONFIG_symbol ... #else ... #endif .endm .macro baz #ifdef CONFIG_symbol ... #elif defined(CONFIG_symbol2) ... #else ... #endif .endm
which (a) has the effect of keeping multiple definitions of the same macro in close proximity, and (b) allows common code (such as in the case of svc_exit) to be kept in exactly one place and not spread across multiple definitions - which is exactly what leads to stuff being missed when it comes to update it.
Now, if I can stop silly git commit from deleting the above preprocessor lines in my commit message which illustrate the problem, I'll push out the updates. (# is such a wonderful comment prefix, except when you want to quote some C preprocessor in the commit message.)
Add unwinding annotations so that unwinding from this function works properly.
Signed-off-by: Stephen Boyd sboyd@codeaurora.org ---
On 08/26, Russell King - ARM Linux wrote:
Looking at the oops dumps you have, it's really quite annoying that they do not contain a proper backtrace. I also have to ask why your logs seem to screw up on the PC/LR values in the oops dumps - they seem to be completely missing.
This fixes the stacktrace for me so that it's actually readable.
CPU: 1 PID: 1 Comm: init Not tainted 4.2.0-rc8-next-20150825-00012-g7b30062de23c-dirty #170 Hardware name: Qualcomm (Flattened Device Tree) task: ee0a8000 ti: ee0b0000 task.ti: ee0b0000 PC is at __clear_user_std+0x16/0x78 LR is at padzero+0x47/0x54 pc : [<c03df522>] lr : [<c02f103b>] psr: 60000033 sp : ee0b1ea8 ip : 00000002 fp : 00000000 r10: 001de22e r9 : 00000000 r8 : ee122300 r7 : ee0b1eb8 r6 : ed8d0300 r5 : 00000000 r4 : 00000051 r3 : 00000055 r2 : 00000000 r1 : 00000dd2 r0 : 001de22e Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA Thumb Segment none Control: 50c5787d Table: 2d8d806a DAC: 00000051 Process init (pid: 1, stack limit = 0xee0b0210) Stack: (0xee0b1ea8 to 0xee0b2000) 1ea0: 00000dd2 c02f103b ee124200 c02f175b 00001812 000001cd 1ec0: 001e2a20 00000000 ee122300 00000000 00000000 001e2a20 001de22e 00000001 1ee0: 00000000 00008000 00008000 001dd870 001de22e 001d5870 00000051 00000055 1f00: 00000000 ee0b1eb8 beffffde ed8d0300 ef7f7160 c02c1cfb 00000001 c0865324 1f20: ed8d0300 c0862ca4 fffffff8 00000001 c0852fe0 ed8d0300 00000000 c02c1e7f 1f40: ee0a8000 ee033000 ee126000 ee0b1f58 00000001 c02c2f1f 00000001 ed8d6038 1f60: 00000000 ee0a8280 c0851118 00000000 c0852f50 00000000 00000000 00000000 1f80: 00000000 00000000 00000000 c02c3039 00000000 c02094f5 00000000 c08da000 1fa0: c059f2b5 c059f2d7 00000000 c020e4d5 00000000 00000000 00000000 00000000 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 00000000 [<c03df522>] (__clear_user_std) from [<c02f103b>] (padzero+0x47/0x54) [<c02f103b>] (padzero) from [<c02f175b>] (load_elf_binary+0x573/0xe74) [<c02f175b>] (load_elf_binary) from [<c02c1e7f>] (search_binary_handler+0x4f/0x124) [<c02c1e7f>] (search_binary_handler) from [<c02c2f1f>] (do_execveat_common+0x3df/0x4e0) [<c02c2f1f>] (do_execveat_common) from [<c02c3039>] (do_execve+0x19/0x1c) [<c02c3039>] (do_execve) from [<c059f2d7>] (kernel_init+0x23/0x9c) [<c059f2d7>] (kernel_init) from [<c020e4d5>] (ret_from_fork+0x11/0x3c) Code: 0c03 d011 f1bc 0f02 (f880) 2000
diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S index 970d6c043774..e936352ccb00 100644 --- a/arch/arm/lib/clear_user.S +++ b/arch/arm/lib/clear_user.S @@ -9,6 +9,7 @@ */ #include <linux/linkage.h> #include <asm/assembler.h> +#include <asm/unwind.h>
.text
@@ -20,6 +21,8 @@ */ ENTRY(__clear_user_std) WEAK(arm_clear_user) +UNWIND(.fnstart) +UNWIND(.save {r1, lr}) stmfd sp!, {r1, lr} mov r2, #0 cmp r1, #4 @@ -44,6 +47,7 @@ WEAK(arm_clear_user) USER( strnebt r2, [r0]) mov r0, #0 ldmfd sp!, {r1, pc} +UNWIND(.fnend) ENDPROC(arm_clear_user) ENDPROC(__clear_user_std)
kernel-build-reports@lists.linaro.org