stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Wolfgang Grandegger <wg@grandegger.com>,
	Oliver Hartkopp <socketcan@hartkopp.net>,
	Marc Kleine-Budde <mkl@pengutronix.de>
Subject: [PATCH 3.12 27/62] can: sja1000: fix {pre,post}_irq() handling and IRQ handler return value
Date: Tue, 10 Dec 2013 00:00:58 -0800	[thread overview]
Message-ID: <20131210080059.342079757@linuxfoundation.org> (raw)
In-Reply-To: <20131210080057.415644748@linuxfoundation.org>

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

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

From: Oliver Hartkopp <socketcan@hartkopp.net>

commit 2fea6cd303c0d0cd9067da31d873b6a6d5bd75e7 upstream.

This patch fixes the issue that the sja1000_interrupt() function may have
returned IRQ_NONE without processing the optional pre_irq() and post_irq()
function before. Further the irq processing counter 'n' is moved to the end of
the while statement to return correct IRQ_[NONE|HANDLED] values at error
conditions.

Reported-by: Wolfgang Grandegger <wg@grandegger.com>
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/net/can/sja1000/sja1000.c |   17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

--- a/drivers/net/can/sja1000/sja1000.c
+++ b/drivers/net/can/sja1000/sja1000.c
@@ -494,20 +494,20 @@ irqreturn_t sja1000_interrupt(int irq, v
 	uint8_t isrc, status;
 	int n = 0;
 
-	/* Shared interrupts and IRQ off? */
-	if (priv->read_reg(priv, SJA1000_IER) == IRQ_OFF)
-		return IRQ_NONE;
-
 	if (priv->pre_irq)
 		priv->pre_irq(priv);
 
+	/* Shared interrupts and IRQ off? */
+	if (priv->read_reg(priv, SJA1000_IER) == IRQ_OFF)
+		goto out;
+
 	while ((isrc = priv->read_reg(priv, SJA1000_IR)) &&
 	       (n < SJA1000_MAX_IRQ)) {
-		n++;
+
 		status = priv->read_reg(priv, SJA1000_SR);
 		/* check for absent controller due to hw unplug */
 		if (status == 0xFF && sja1000_is_absent(priv))
-			return IRQ_NONE;
+			goto out;
 
 		if (isrc & IRQ_WUI)
 			netdev_warn(dev, "wakeup interrupt\n");
@@ -535,7 +535,7 @@ irqreturn_t sja1000_interrupt(int irq, v
 				status = priv->read_reg(priv, SJA1000_SR);
 				/* check for absent controller */
 				if (status == 0xFF && sja1000_is_absent(priv))
-					return IRQ_NONE;
+					goto out;
 			}
 		}
 		if (isrc & (IRQ_DOI | IRQ_EI | IRQ_BEI | IRQ_EPI | IRQ_ALI)) {
@@ -543,8 +543,9 @@ irqreturn_t sja1000_interrupt(int irq, v
 			if (sja1000_err(dev, isrc, status))
 				break;
 		}
+		n++;
 	}
-
+out:
 	if (priv->post_irq)
 		priv->post_irq(priv);
 



  parent reply	other threads:[~2013-12-10  8:00 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-10  8:00 [PATCH 3.12 00/62] 3.12.5-stable review Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 01/62] ALSA: hda - Fix silent output on ASUS W7J laptop Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 02/62] ALSA: hda - Another fixup for ASUS laptop with ALC660 codec Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 03/62] ALSA: hda - Use always amps for auto-mute on AD1986A codec Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 04/62] ALSA: hda - Fix headset mic input after muted internal mic (Dell/Realtek) Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 05/62] ALSA: hda - Fix bad EAPD setup for HP machines with AD1984A Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 06/62] ALSA: hda - Fix silent output on MacBook Air 2,1 Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 07/62] ALSA: hda - Add mono speaker quirk for Dell Inspiron 5439 Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 08/62] crypto: s390 - Fix aes-xts parameter corruption Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 09/62] crypto: scatterwalk - Set the chain pointer indication bit Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 10/62] crypto: ccm - Fix handling of zero plaintext when computing mac Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 11/62] crypto: authenc - Find proper IV address in ablkcipher callback Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 12/62] ARM: fix booting low-vectors machines Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 13/62] ARM: footbridge: fix VGA initialisation Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 14/62] ARM: footbridge: fix EBSA285 LEDs Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 15/62] ARM: multi_v7_defconfig: enable SDHCI_BCM_KONA and MMC_BLOCK_MINORS=16 Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 16/62] ARM: dts: omap4-panda-common: Fix pin muxing for wl12xx Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 17/62] ARM: OMAPFB: panel-sony-acx565akm: fix bad unlock balance Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 18/62] ARM: at91: sama5d3: reduce TWI internal clock frequency Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 19/62] ARM: mvebu: second PCIe unit of Armada XP mv78230 is only x1 capable Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 20/62] ARM: mvebu: fix second and third PCIe unit of Armada XP mv78260 Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 21/62] ARM: mvebu: use the virtual CPU registers to access coherency registers Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 22/62] ARM: mvebu: re-enable PCIe on Armada 370 DB Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 23/62] ASoC: wm8990: Mark the register map as dirty when powering down Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 24/62] ASoC: dapm: Use SND_SOC_DAPM_INIT_REG_VAL in SND_SOC_DAPM_MUX Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 25/62] ASoC: wm8731: fix dsp mode configuration Greg Kroah-Hartman
2013-12-10  8:00 ` [PATCH 3.12 26/62] vfs: fix subtle use-after-free of pipe_inode_info Greg Kroah-Hartman
2013-12-10  8:00 ` Greg Kroah-Hartman [this message]
2013-12-10  8:00 ` [PATCH 3.12 28/62] can: flexcan: use correct clock as base for bit rate calculation Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 29/62] can: c_can: dont call pm_runtime_get_sync() from interrupt context Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 30/62] efivars, efi-pstore: Hold off deletion of sysfs entry until the scan is completed Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 31/62] efi-pstore: Make efi-pstore return a unique id Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 32/62] SCSI: bfa: Fix crash when symb name set for offline vport Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 33/62] SCSI: enclosure: fix WARN_ON in dual path device removing Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 34/62] SCSI: libsas: fix usage of ata_tf_to_fis Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 35/62] SCSI: hpsa: do not discard scsi status on aborted commands Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 36/62] SCSI: hpsa: return 0 from driver probe function on success, not 1 Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 37/62] NFSv4: Update list of irrecoverable errors on DELEGRETURN Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 38/62] PNP: fix restoring devices after hibernation Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 39/62] time: Fix 1ns/tick drift w/ GENERIC_TIME_VSYSCALL_OLD Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 40/62] powerpc/gpio: Fix the wrong GPIO input data on MPC8572/MPC8536 Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 41/62] parisc: fix mmap(MAP_FIXED|MAP_SHARED) to already mmapped address Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 42/62] xen/gnttab: leave lazy MMU mode in the case of a m2p override failure Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 43/62] spi/pxa2xx: add new ACPI IDs Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 44/62] cpuidle: Check for dev before deregistering it Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 45/62] Update of blkg_stat and blkg_rwstat may happen in bh context. While u64_stats_fetch_retry is only preempt_disable on 32bit UP system. This is not enough to avoid preemption by bh and may read strange 64 bit value Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 46/62] irq: Enable all irqs unconditionally in irq_resume Greg Kroah-Hartman
2013-12-10  9:01   ` Pavel Machek
2013-12-10  9:08     ` Greg Kroah-Hartman
2013-12-10 12:52       ` Heiko Stübner
2013-12-10 19:27         ` Greg Kroah-Hartman
2013-12-10 21:46           ` Heiko Stübner
2013-12-11  1:16             ` Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 47/62] net: update consumers of MSG_MORE to recognize MSG_SENDPAGE_NOTLAST Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 48/62] x86-64, build: Always pass in -mno-sse Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 49/62] SCSI: Disable WRITE SAME for RAID and virtual host adapter drivers Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 50/62] iwlwifi: dvm: dont override mac80211s queue setting Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 51/62] tg3: avoid double-freeing of rx data memory Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 52/62] Input: allow deselecting serio drivers even without CONFIG_EXPERT Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 53/62] Input: mousedev - allow disabling " Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 54/62] mei: me: add Lynx Point Wellsburg work station device id Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 55/62] mei: add 9 series PCH mei device ids Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 56/62] n_tty: Fix missing newline echo Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 57/62] USB: pl2303: fixed handling of CS5 setting Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 58/62] USB: ftdi_sio: fixed handling of unsupported CSIZE setting Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 59/62] USB: mos7840: correct handling of CS5 setting Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 60/62] USB: spcp8x5: " Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 61/62] USB: cdc-acm: Added support for the Lenovo RD02-D400 USB Modem Greg Kroah-Hartman
2013-12-10  8:01 ` [PATCH 3.12 62/62] drivers/char/i8k.c: add Dell XPLS L421X Greg Kroah-Hartman
2013-12-10 17:04 ` [PATCH 3.12 00/62] 3.12.5-stable review Guenter Roeck
2013-12-11  1:17   ` Greg Kroah-Hartman
2013-12-11  1:49 ` Shuah Khan
2013-12-11  2:00   ` Greg Kroah-Hartman
2013-12-11 21:26 ` Satoru Takeuchi
2013-12-11 23:31   ` Greg Kroah-Hartman

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=20131210080059.342079757@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=socketcan@hartkopp.net \
    --cc=stable@vger.kernel.org \
    --cc=wg@grandegger.com \
    /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).