stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	alan@lxorguk.ukuu.org.uk, Anton Blanchard <anton@samba.org>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Haren Myneni <haren@us.ibm.com>
Subject: [ 22/22] powerpc: Keep thread.dscr and thread.dscr_inherit in sync
Date: Fri, 14 Dec 2012 14:26:07 -0800	[thread overview]
Message-ID: <20121214222254.945238804@linuxfoundation.org> (raw)
In-Reply-To: <20121214222249.889051473@linuxfoundation.org>

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

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

From: Anton Blanchard <anton@samba.org>

commit 00ca0de02f80924dfff6b4f630e1dff3db005e35 upstream.

When we update the DSCR either via emulation of mtspr(DSCR) or via
a change to dscr_default in sysfs we don't update thread.dscr.
We will eventually update it at context switch time but there is
a period where thread.dscr is incorrect.

If we fork at this point we will copy the old value of thread.dscr
into the child. To avoid this, always keep thread.dscr in sync with
reality.

This issue was found with the following testcase:

http://ozlabs.org/~anton/junkcode/dscr_inherit_test.c

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Haren Myneni <haren@us.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 arch/powerpc/kernel/sysfs.c |    4 +++-
 arch/powerpc/kernel/traps.c |    3 ++-
 2 files changed, 5 insertions(+), 2 deletions(-)

--- a/arch/powerpc/kernel/sysfs.c
+++ b/arch/powerpc/kernel/sysfs.c
@@ -194,8 +194,10 @@ static ssize_t show_dscr_default(struct
 
 static void update_dscr(void *dummy)
 {
-	if (!current->thread.dscr_inherit)
+	if (!current->thread.dscr_inherit) {
+		current->thread.dscr = dscr_default;
 		mtspr(SPRN_DSCR, dscr_default);
+	}
 }
 
 static ssize_t __used store_dscr_default(struct sysdev_class *class,
--- a/arch/powerpc/kernel/traps.c
+++ b/arch/powerpc/kernel/traps.c
@@ -935,8 +935,9 @@ static int emulate_instruction(struct pt
 			cpu_has_feature(CPU_FTR_DSCR)) {
 		PPC_WARN_EMULATED(mtdscr, regs);
 		rd = (instword >> 21) & 0x1f;
-		mtspr(SPRN_DSCR, regs->gpr[rd]);
+		current->thread.dscr = regs->gpr[rd];
 		current->thread.dscr_inherit = 1;
+		mtspr(SPRN_DSCR, current->thread.dscr);
 		return 0;
 	}
 #endif



  parent reply	other threads:[~2012-12-14 22:26 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-12-14 22:25 [ 00/22] 3.0.57-stable review Greg Kroah-Hartman
2012-12-14 22:25 ` [ 01/22] ARM: 7566/1: vfp: fix save and restore when running on pre-VFPv3 and CONFIG_VFPv3 set Greg Kroah-Hartman
2012-12-14 22:25 ` [ 02/22] powerpc/ptrace: Fix build with gcc 4.6 Greg Kroah-Hartman
2012-12-14 22:25 ` [ 03/22] workqueue: convert BUG_ON()s in __queue_delayed_work() to WARN_ON_ONCE()s Greg Kroah-Hartman
2012-12-14 22:25 ` [ 04/22] mm: dmapool: use provided gfp flags for all dma_alloc_coherent() calls Greg Kroah-Hartman
2012-12-14 22:25 ` [ 05/22] x86,AMD: Power driver support for AMDs family 16h processors Greg Kroah-Hartman
2012-12-14 22:25 ` [ 06/22] telephony: ijx: buffer overflow in ixj_write_cid() Greg Kroah-Hartman
2012-12-14 22:25 ` [ 07/22] tmpfs: fix shared mempolicy leak Greg Kroah-Hartman
2012-12-14 22:25 ` [ 08/22] x86: hpet: Fix masking of MSI interrupts Greg Kroah-Hartman
2012-12-14 22:25 ` [ 09/22] USB: add new zte 3g-dongles pid to option.c Greg Kroah-Hartman
2012-12-14 22:25 ` [ 10/22] USB: option: blacklist network interface on Huawei E173 Greg Kroah-Hartman
2012-12-14 22:25 ` [ 11/22] USB: ftdi_sio: Add support for Newport AGILIS motor drivers Greg Kroah-Hartman
2012-12-14 22:25 ` [ 12/22] usb: ftdi_sio: fixup BeagleBone A5+ quirk Greg Kroah-Hartman
2012-12-14 22:25 ` [ 13/22] USB: cp210x: add Virtenio Preon32 device id Greg Kroah-Hartman
2012-12-14 22:25 ` [ 14/22] USB: mark uas driver as BROKEN Greg Kroah-Hartman
2012-12-14 22:26 ` [ 15/22] ACPI / battery: Correct battery capacity values on Thinkpads Greg Kroah-Hartman
2012-12-14 22:26 ` [ 16/22] ACPI / PNP: Do not crash due to stale pointer use during system resume Greg Kroah-Hartman
2012-12-14 22:26 ` [ 17/22] ACPI / video: ignore BIOS initial backlight value for HP Folio 13-2000 Greg Kroah-Hartman
2012-12-14 22:26 ` [ 18/22] USB: OHCI: workaround for hardware bug: retired TDs not added to the Done Queue Greg Kroah-Hartman
2012-12-14 22:26 ` [ 19/22] xhci: Extend Fresco Logic MSI quirk Greg Kroah-Hartman
2012-12-14 22:26 ` [ 20/22] ftrace: Clear bits properly in reset_iter_read() Greg Kroah-Hartman
2012-12-14 22:26 ` [ 21/22] powerpc: Update DSCR on all CPUs when writing sysfs dscr_default Greg Kroah-Hartman
2012-12-14 22:26 ` Greg Kroah-Hartman [this message]
2012-12-15 14:25 ` [ 00/22] 3.0.57-stable review Shuah Khan
2012-12-15 20:49   ` Shuah Khan
2012-12-16  8:32 ` Nikola Ciprich
2012-12-16 13:52 ` Satoru Takeuchi

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=20121214222254.945238804@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=anton@samba.org \
    --cc=benh@kernel.crashing.org \
    --cc=haren@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).