All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk,
	Jason Wessel <jason.wessel@windriver.com>
Subject: [ 34/59] kgdbts: Fix kernel oops with CONFIG_DEBUG_RODATA
Date: Wed, 11 Apr 2012 16:11:09 -0700	[thread overview]
Message-ID: <20120411231041.194484204@linuxfoundation.org> (raw)
In-Reply-To: <20120411231213.GA13124@kroah.com>

3.2-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Jason Wessel <jason.wessel@windriver.com>

commit 456ca7ff24841bf2d2a2dfd690fe7d42ef70d932 upstream.

On x86 the kgdb test suite will oops when the kernel is compiled with
CONFIG_DEBUG_RODATA and you run the tests after boot time. This is
regression has existed since 2.6.26 by commit: b33cb815 (kgdbts: Use
HW breakpoints with CONFIG_DEBUG_RODATA).

The test suite can use hw breakpoints for all the tests, but it has to
execute the hardware breakpoint specific tests first in order to
determine that the hw breakpoints actually work.  Specifically the
very first test causes an oops:

# echo V1I1 > /sys/module/kgdbts/parameters/kgdbts
kgdb: Registered I/O driver kgdbts.
kgdbts:RUN plant and detach test

Entering kdb (current=0xffff880017aa9320, pid 1078) on processor 0 due to Keyboard Entry
[0]kdb> kgdbts: ERROR PUT: end of test buffer on 'plant_and_detach_test' line 1 expected OK got $E14#aa
WARNING: at drivers/misc/kgdbts.c:730 run_simple_test+0x151/0x2c0()
[...oops clipped...]

This commit re-orders the running of the tests and puts the RODATA
check into its own function so as to correctly avoid the kernel oops
by detecting and using the hw breakpoints.

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/misc/kgdbts.c |   52 ++++++++++++++++++++++++++------------------------
 1 file changed, 28 insertions(+), 24 deletions(-)

--- a/drivers/misc/kgdbts.c
+++ b/drivers/misc/kgdbts.c
@@ -885,6 +885,22 @@ static void run_singlestep_break_test(vo
 	kgdbts_break_test();
 }
 
+static void test_debug_rodata(void)
+{
+#ifdef CONFIG_DEBUG_RODATA
+	/* Until there is an api to write to read-only text segments, use
+	 * HW breakpoints for the remainder of any tests, else print a
+	 * failure message if hw breakpoints do not work.
+	 */
+	if (!(arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT && hwbreaks_ok)) {
+		eprintk("kgdbts: HW breakpoints BROKEN, ending tests\n");
+		return;
+	}
+	force_hwbrks = 1;
+	v1printk("kgdbts:Using HW breakpoints for SW breakpoint tests\n");
+#endif /* CONFIG_DEBUG_RODATA */
+}
+
 static void kgdbts_run_tests(void)
 {
 	char *ptr;
@@ -907,6 +923,18 @@ static void kgdbts_run_tests(void)
 	if (ptr)
 		sstep_test = simple_strtol(ptr+1, NULL, 10);
 
+	/* All HW break point tests */
+	if (arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT) {
+		hwbreaks_ok = 1;
+		v1printk("kgdbts:RUN hw breakpoint test\n");
+		run_breakpoint_test(1);
+		v1printk("kgdbts:RUN hw write breakpoint test\n");
+		run_hw_break_test(1);
+		v1printk("kgdbts:RUN access write breakpoint test\n");
+		run_hw_break_test(0);
+	}
+	test_debug_rodata();
+
 	/* required internal KGDB tests */
 	v1printk("kgdbts:RUN plant and detach test\n");
 	run_plant_and_detach_test(0);
@@ -924,35 +952,11 @@ static void kgdbts_run_tests(void)
 
 	/* ===Optional tests=== */
 
-	/* All HW break point tests */
-	if (arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT) {
-		hwbreaks_ok = 1;
-		v1printk("kgdbts:RUN hw breakpoint test\n");
-		run_breakpoint_test(1);
-		v1printk("kgdbts:RUN hw write breakpoint test\n");
-		run_hw_break_test(1);
-		v1printk("kgdbts:RUN access write breakpoint test\n");
-		run_hw_break_test(0);
-	}
-
 	if (nmi_sleep) {
 		v1printk("kgdbts:RUN NMI sleep %i seconds test\n", nmi_sleep);
 		run_nmi_sleep_test(nmi_sleep);
 	}
 
-#ifdef CONFIG_DEBUG_RODATA
-	/* Until there is an api to write to read-only text segments, use
-	 * HW breakpoints for the remainder of any tests, else print a
-	 * failure message if hw breakpoints do not work.
-	 */
-	if (!(arch_kgdb_ops.flags & KGDB_HW_BREAKPOINT && hwbreaks_ok)) {
-		eprintk("kgdbts: HW breakpoints do not work,"
-			"skipping remaining tests\n");
-		return;
-	}
-	force_hwbrks = 1;
-#endif /* CONFIG_DEBUG_RODATA */
-
 	/* If the do_fork test is run it will be the last test that is
 	 * executed because a kernel thread will be spawned at the very
 	 * end to unregister the debug hooks.



  parent reply	other threads:[~2012-04-11 23:41 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-11 23:12 [ 00/59] 3.2.15-stable review Greg KH
2012-04-11 23:10 ` [ 01/59] x86 bpf_jit: fix a bug in emitting the 16-bit immediate operand of AND Greg KH
2012-04-11 23:10 ` [ 02/59] tg3: Fix 5717 serdes powerdown problem Greg KH
2012-04-11 23:10 ` [ 03/59] sky2: dont overwrite settings for PHY Quick link Greg KH
2012-04-11 23:10 ` [ 04/59] rose_dev: fix memcpy-bug in rose_set_mac_address Greg KH
2012-04-11 23:10 ` [ 05/59] net: usb: cdc_eem: fix mtu Greg KH
2012-04-11 23:10 ` [ 06/59] Fix non TBI PHY access; a bad merge undid bug fix in a previous commit Greg KH
2012-04-12  4:55   ` Ben Hutchings
     [not found]     ` <OFFBE17A27.42E05B7A-ONC12579DE.00262282-C12579DE.0026AD98@transmode.se>
2012-04-12 15:02       ` Ben Hutchings
2012-04-16  0:16     ` Paul Gortmaker
2012-04-16  0:16       ` Paul Gortmaker
2012-04-16  0:32       ` Ben Hutchings
2012-04-11 23:10 ` [ 07/59] ASoC: wm8994: Update WM8994 DCS calibration Greg KH
2012-04-11 23:10 ` [ 08/59] mtd: ixp4xx: oops in ixp4xx_flash_probe Greg KH
2012-04-11 23:10 ` [ 09/59] mtd: mips: lantiq: reintroduce support for cmdline partitions Greg KH
2012-04-11 23:10 ` [ 10/59] mtd: nand: gpmi: use correct member for checking NAND_BBT_USE_FLASH Greg KH
2012-04-11 23:10 ` [ 11/59] mtd: sst25l: initialize writebufsize Greg KH
2012-04-11 23:10 ` [ 12/59] mtd: block2mtd: " Greg KH
2012-04-11 23:10 ` [ 13/59] mtd: lart: " Greg KH
2012-04-11 23:10 ` [ 14/59] mtd: m25p80: set writebufsize Greg KH
2012-04-11 23:10 ` [ 15/59] ACPI: Do cpufreq clamping for throttling per package v2 Greg KH
2012-04-11 23:10 ` [ 16/59] PNPACPI: Fix device ref leaking in acpi_pnp_match Greg KH
2012-04-11 23:10 ` [ 17/59] ACPICA: Fix regression in FADT revision checks Greg KH
2012-04-11 23:10 ` [ 18/59] modpost: fix ALL_INIT_DATA_SECTIONS Greg KH
2012-04-11 23:10 ` [ 19/59] genirq: Adjust irq thread affinity on IRQ_SET_MASK_OK_NOCOPY return value Greg KH
2012-04-11 23:10 ` [ 20/59] tracing: Fix ftrace stack trace entries Greg KH
2012-04-11 23:10 ` [ 21/59] tracing: Fix ent_size in trace output Greg KH
2012-04-11 23:10 ` [ 22/59] m68k/mac: Add missing platform check before registering platform devices Greg KH
2012-04-11 23:10 ` [ 23/59] mac80211: fix possible tid_rx->reorder_timer use after free Greg KH
2012-04-11 23:10 ` [ 24/59] rtlwifi: rtl8192ce: rtl8192cu: rtl8192de: Fix low-gain setting when scanning Greg KH
2012-04-11 23:11 ` [ 25/59] drm: Validate requested virtual size against allocated fb size Greg KH
2012-04-11 23:11 ` [ 26/59] drm/radeon/kms: fix fans after resume Greg KH
2012-04-11 23:11 ` [ 27/59] drm/i915: no-lvds quirk on MSI DC500 Greg KH
2012-04-11 23:11 ` [ 28/59] drm/i915: Sanitize BIOS debugging bits from PIPECONF Greg KH
2012-04-11 23:11 ` [ 29/59] drm/i915: Add lock on drm_helper_resume_force_mode Greg KH
2012-04-11 23:11 ` [ 30/59] drm/i915: quirk away broken OpRegion VBT Greg KH
2012-04-11 23:11 ` [ 31/59] r8169: runtime resume before shutdown Greg KH
2012-04-11 23:11 ` [ 32/59] target: Fix unsupported WRITE_SAME sense payload Greg KH
2012-04-11 23:11 ` [ 33/59] kgdb,debug_core: pass the breakpoint struct instead of address and memory Greg KH
2012-04-11 23:11 ` Greg KH [this message]
2012-04-11 23:11 ` [ 35/59] kgdbts: (1 of 2) fix single step awareness to work correctly with SMP Greg KH
2012-04-11 23:11 ` [ 36/59] kgdbts: (2 " Greg KH
2012-04-11 23:11 ` [ 37/59] x86,kgdb: Fix DEBUG_RODATA limitation using text_poke() Greg KH
2012-04-11 23:11 ` [ 38/59] CIFS: Fix VFS lock usage for oplocked files Greg KH
2012-04-11 23:11 ` [ 39/59] [PATCH] ARM: tegra: remove Tegra30 errata from MACH_TEGRA_DT Greg KH
2012-04-11 23:11 ` [ 40/59] mmc: sdhci-dove: Fix compile error by including module.h Greg KH
2012-04-11 23:11 ` [ 41/59] mmc: atmel-mci: correct data timeout computation Greg KH
2012-04-11 23:11 ` [ 42/59] tcm_fc: Add abort flag for gracefully handling exchange timeout Greg KH
2012-04-11 23:11 ` [ 43/59] tcm_fc: Do not free tpg structure during wq allocation failure Greg KH
2012-04-11 23:11 ` [ 44/59] sysctl: fix write access to dmesg_restrict/kptr_restrict Greg KH
2012-04-11 23:11 ` [ 45/59] modpost: Fix modpost license checking of vmlinux.o Greg KH
2012-04-11 23:11 ` [ 46/59] x86/PCI: use host bridge _CRS info on MSI MS-7253 Greg KH
2012-04-11 23:11 ` [ 47/59] x86/PCI: do not tie MSI MS-7253 use_crs quirk to BIOS version Greg KH
2012-04-11 23:11 ` [ 48/59] TOMOYO: Fix mount flags checking order Greg KH
2012-04-11 23:11 ` [ 49/59] Revert "x86/ioapic: Add register level checks to detect bogus io-apic entries" Greg KH
2012-04-11 23:11 ` [ 50/59] acer-wmi: No wifi rfkill on Sony machines Greg KH
2012-04-11 23:11 ` [ 51/59] Fix length of buffer copied in __nfs4_get_acl_uncached Greg KH
2012-04-11 23:11 ` [ 52/59] sched/x86: Fix overflow in cyc2ns_offset Greg KH
2012-04-11 23:11 ` [ 53/59] mfd: Clear twl6030 IRQ status register only once Greg KH
2012-04-11 23:11 ` [ 54/59] USB: Add Motorola Rokr E6 Id to the USBNet driver "zaurus" Greg KH
2012-04-11 23:11 ` [ 55/59] ioat: fix size of completion for Xen Greg KH
2012-04-11 23:11 ` [ 56/59] ASoC: ak4642: fixup: mute needs +1 step Greg KH
2012-04-11 23:11 ` [ 57/59] cred: copy_process() should clear child->replacement_session_keyring Greg KH
2012-04-11 23:11 ` [ 58/59] iommu/amd: Make sure IOMMU interrupts are re-enabled on resume Greg KH
2012-04-11 23:11 ` [ 59/59] Bluetooth: Fix l2cap conn failures for ssp devices Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20120411231041.194484204@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=jason.wessel@windriver.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.