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, Kirill Tkhai <tkhai@yandex.ru>,
	David Miller <davem@davemloft.net>
Subject: [ 02/72] sunsu: Fix panic in case of nonexistent port at "console=ttySY" cmdline option
Date: Tue, 26 Mar 2013 15:50:45 -0700	[thread overview]
Message-ID: <20130326224919.933089686@linuxfoundation.org> (raw)
In-Reply-To: <20130326224919.675227837@linuxfoundation.org>

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

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


From: Tkhai Kirill <tkhai@yandex.ru>

[ Upstream commit cb29529ea0030e60ef1bbbf8399a43d397a51526 ]

If a machine has X (X < 4) sunsu ports and cmdline
option "console=ttySY" is passed, where X < Y <= 4,
than the following panic happens:

Unable to handle kernel NULL pointer dereference
TPC: <sunsu_console_setup+0x78/0xe0>
RPC: <sunsu_console_setup+0x74/0xe0>
I7: <register_console+0x378/0x3e0>
Call Trace:
 [0000000000453a38] register_console+0x378/0x3e0
 [0000000000576fa0] uart_add_one_port+0x2e0/0x340
 [000000000057af40] su_probe+0x160/0x2e0
 [00000000005b8a4c] platform_drv_probe+0xc/0x20
 [00000000005b6c2c] driver_probe_device+0x12c/0x220
 [00000000005b6da8] __driver_attach+0x88/0xa0
 [00000000005b4df4] bus_for_each_dev+0x54/0xa0
 [00000000005b5a54] bus_add_driver+0x154/0x260
 [00000000005b7190] driver_register+0x50/0x180
 [00000000006d250c] sunsu_init+0x18c/0x1e0
 [00000000006c2668] do_one_initcall+0xe8/0x160
 [00000000006c282c] kernel_init_freeable+0x12c/0x1e0
 [0000000000603764] kernel_init+0x4/0x100
 [0000000000405f64] ret_from_syscall+0x1c/0x2c
 [0000000000000000]           (null)

1)Fix the panic;
2)Increment registered port number every successful
probe.

Signed-off-by: Kirill Tkhai <tkhai@yandex.ru>
CC: David Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/tty/serial/sunsu.c |   21 +++++++++------------
 1 file changed, 9 insertions(+), 12 deletions(-)

--- a/drivers/tty/serial/sunsu.c
+++ b/drivers/tty/serial/sunsu.c
@@ -968,6 +968,7 @@ static struct uart_ops sunsu_pops = {
 #define UART_NR	4
 
 static struct uart_sunsu_port sunsu_ports[UART_NR];
+static int nr_inst; /* Number of already registered ports */
 
 #ifdef CONFIG_SERIO
 
@@ -1337,13 +1338,8 @@ static int __init sunsu_console_setup(st
 	printk("Console: ttyS%d (SU)\n",
 	       (sunsu_reg.minor - 64) + co->index);
 
-	/*
-	 * Check whether an invalid uart number has been specified, and
-	 * if so, search for the first available port that does have
-	 * console support.
-	 */
-	if (co->index >= UART_NR)
-		co->index = 0;
+	if (co->index > nr_inst)
+		return -ENODEV;
 	port = &sunsu_ports[co->index].port;
 
 	/*
@@ -1408,7 +1404,6 @@ static enum su_type __devinit su_get_typ
 
 static int __devinit su_probe(struct platform_device *op)
 {
-	static int inst;
 	struct device_node *dp = op->dev.of_node;
 	struct uart_sunsu_port *up;
 	struct resource *rp;
@@ -1418,16 +1413,16 @@ static int __devinit su_probe(struct pla
 
 	type = su_get_type(dp);
 	if (type == SU_PORT_PORT) {
-		if (inst >= UART_NR)
+		if (nr_inst >= UART_NR)
 			return -EINVAL;
-		up = &sunsu_ports[inst];
+		up = &sunsu_ports[nr_inst];
 	} else {
 		up = kzalloc(sizeof(*up), GFP_KERNEL);
 		if (!up)
 			return -ENOMEM;
 	}
 
-	up->port.line = inst;
+	up->port.line = nr_inst;
 
 	spin_lock_init(&up->port.lock);
 
@@ -1461,6 +1456,8 @@ static int __devinit su_probe(struct pla
 		}
 		dev_set_drvdata(&op->dev, up);
 
+		nr_inst++;
+
 		return 0;
 	}
 
@@ -1488,7 +1485,7 @@ static int __devinit su_probe(struct pla
 
 	dev_set_drvdata(&op->dev, up);
 
-	inst++;
+	nr_inst++;
 
 	return 0;
 



  parent reply	other threads:[~2013-03-26 22:50 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-26 22:50 [ 00/72] 3.4.38-stable review Greg Kroah-Hartman
2013-03-26 22:50 ` [ 01/72] Revert "USB: EHCI: dont check DMA values in QH overlays" Greg Kroah-Hartman
2013-03-26 22:50 ` Greg Kroah-Hartman [this message]
2013-03-26 22:50 ` [ 03/72] net/ipv4: Ensure that location of timestamp option is stored Greg Kroah-Hartman
2013-03-26 22:50 ` [ 04/72] netconsole: dont call __netpoll_cleanup() while atomic Greg Kroah-Hartman
2013-03-26 22:50 ` [ 05/72] bonding: dont call update_speed_duplex() under spinlocks Greg Kroah-Hartman
2013-03-26 22:50 ` [ 06/72] tg3: 5715 does not link up when autoneg off Greg Kroah-Hartman
2013-03-26 22:50 ` [ 07/72] sctp: Use correct sideffect command in duplicate cookie handling Greg Kroah-Hartman
2013-03-26 22:50 ` [ 08/72] sctp: dont break the loop while meeting the active_path so as to find the matched transport Greg Kroah-Hartman
2013-03-26 22:50 ` [ 09/72] ipv4: fix definition of FIB_TABLE_HASHSZ Greg Kroah-Hartman
2013-03-26 22:50 ` [ 10/72] tcp: fix skb_availroom() Greg Kroah-Hartman
2013-03-26 22:50 ` [ 11/72] rtnetlink: Mask the rta_type when range checking Greg Kroah-Hartman
2013-03-26 22:50 ` [ 12/72] vhost/net: fix heads usage of ubuf_info Greg Kroah-Hartman
2013-03-26 22:50 ` [ 13/72] bnx2x: fix occasional statistics off-by-4GB error Greg Kroah-Hartman
2013-03-26 22:50 ` [ 14/72] inet: limit length of fragment queue hash table bucket lists Greg Kroah-Hartman
2013-03-26 22:50 ` [ 15/72] sfc: Do not attempt to flush queues if DMA is disabled Greg Kroah-Hartman
2013-03-26 22:50 ` [ 16/72] sfc: Convert firmware subtypes to native byte order in efx_mcdi_get_board_cfg() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 17/72] sfc: Add parentheses around use of bitfield macro arguments Greg Kroah-Hartman
2013-03-26 22:51 ` [ 18/72] sfc: Fix MCDI structure field lookup Greg Kroah-Hartman
2013-03-26 22:51 ` [ 19/72] sfc: Really disable flow control while flushing Greg Kroah-Hartman
2013-03-26 22:51 ` [ 20/72] sfc: Work-around flush timeout when flushes have completed Greg Kroah-Hartman
2013-03-26 22:51 ` [ 21/72] sfc: lock TX queues when calling netif_device_detach() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 22/72] sfc: Fix timekeeping in efx_mcdi_poll() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 23/72] sfc: Disable VF queues during register self-test Greg Kroah-Hartman
2013-03-26 22:51 ` [ 24/72] sfc: Avoid generating over-length MC_CMD_FLUSH_RX_QUEUES request Greg Kroah-Hartman
2013-03-26 22:51 ` [ 25/72] sfc: Correctly initialise reset_method in siena_test_chip() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 26/72] sfc: Properly sync RX DMA buffer when it is not the last in the page Greg Kroah-Hartman
2013-03-26 22:51 ` [ 27/72] sfc: Fix efx_rx_buf_offset() in the presence of swiotlb Greg Kroah-Hartman
2013-03-26 22:51 ` [ 28/72] sfc: Detach net device when stopping queues for reconfiguration Greg Kroah-Hartman
2013-03-26 22:51 ` [ 29/72] sfc: Disable soft interrupt handling during efx_device_detach_sync() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 30/72] sfc: Only use TX push if a single descriptor is to be written Greg Kroah-Hartman
2013-03-26 22:51 ` [ 31/72] ALSA: hda/cirrus - Fix the digital beep registration Greg Kroah-Hartman
2013-03-26 22:51 ` [ 32/72] ALSA: hda - Fix typo in checking IEC958 emphasis bit Greg Kroah-Hartman
2013-03-26 22:51 ` [ 33/72] ALSA: snd-usb: mixer: propagate errors up the call chain Greg Kroah-Hartman
2013-03-26 22:51 ` [ 34/72] ALSA: snd-usb: mixer: ignore -EINVAL in snd_usb_mixer_controls() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 35/72] drm/i915: restrict kernel address leak in debugfs Greg Kroah-Hartman
2013-03-26 22:51 ` [ 36/72] tracing: Fix race in snapshot swapping Greg Kroah-Hartman
2013-03-26 22:51 ` [ 37/72] tracing: Fix free of probe entry by calling call_rcu_sched() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 38/72] rtlwifi: rtl8192cu: Fix schedule while atomic bug splat Greg Kroah-Hartman
2013-03-26 22:51 ` [ 39/72] rtlwifi: rtl8192cu: Fix problem that prevents reassociation Greg Kroah-Hartman
2013-03-26 22:51 ` [ 40/72] mwifiex: fix potential out-of-boundary access to ibss rate table Greg Kroah-Hartman
2013-03-26 22:51 ` [ 41/72] drm/i915: bounds check execbuffer relocation count Greg Kroah-Hartman
2013-03-26 22:51 ` [ 42/72] KMS: fix EDID detailed timing vsync parsing Greg Kroah-Hartman
2013-03-26 22:51 ` [ 43/72] KMS: fix EDID detailed timing frame rate Greg Kroah-Hartman
2013-03-26 22:51 ` [ 44/72] mm/hugetlb: fix total hugetlbfs pages count when using memory overcommit accouting Greg Kroah-Hartman
2013-03-26 22:51 ` [ 45/72] target/iscsi: Fix mutual CHAP auth on big-endian arches Greg Kroah-Hartman
2013-03-26 22:51 ` [ 46/72] drm/radeon: add Richland pci ids Greg Kroah-Hartman
2013-03-26 22:51 ` [ 47/72] drm/radeon: add support for Richland APUs Greg Kroah-Hartman
2013-03-26 22:51 ` [ 48/72] drm/radeon/benchmark: make sure bo blit copy exists before using it Greg Kroah-Hartman
2013-03-26 22:51 ` [ 49/72] cifs: ignore everything in SPNEGO blob after mechTypes Greg Kroah-Hartman
2013-03-26 22:51 ` [ 50/72] jbd2: fix use after free in jbd2_journal_dirty_metadata() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 51/72] ext4: fix the wrong number of the allocated blocks in ext4_split_extent() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 52/72] usb-storage: add unusual_devs entry for Samsung YP-Z3 mp3 player Greg Kroah-Hartman
2013-03-26 22:51 ` [ 53/72] ext4: fix data=journal fast mount/umount hang Greg Kroah-Hartman
2013-03-26 22:51 ` [ 54/72] IPoIB: Fix send lockup due to missed TX completion Greg Kroah-Hartman
2013-03-26 22:51 ` [ 55/72] clockevents: Dont allow dummy broadcast timers Greg Kroah-Hartman
2013-03-26 22:51 ` [ 56/72] x86-64: Fix the failure case in copy_user_handle_tail() Greg Kroah-Hartman
2013-03-26 22:51 ` [ 57/72] USB: xhci - fix bit definitions for IMAN register Greg Kroah-Hartman
2013-03-26 22:51 ` [ 58/72] USB: xhci: correctly enable interrupts Greg Kroah-Hartman
2013-03-26 22:51 ` [ 59/72] USB: cdc-acm: fix device unregistration Greg Kroah-Hartman
2013-03-26 22:51 ` [ 60/72] USB: serial: fix interface refcounting Greg Kroah-Hartman
2013-03-26 22:51 ` [ 61/72] nohz: Make tick_nohz_irq_exit() irq safe Greg Kroah-Hartman
2013-03-26 22:51 ` [ 62/72] udf: Fix bitmap overflow on large filesystems with small block size Greg Kroah-Hartman
2013-03-26 22:51 ` [ 63/72] USB: garmin_gps: fix memory leak on disconnect Greg Kroah-Hartman
2013-03-26 22:51 ` [ 64/72] USB: io_ti: fix get_icount for two port adapters Greg Kroah-Hartman
2013-03-26 22:51 ` [ 65/72] key: Fix resource leak Greg Kroah-Hartman
2013-03-26 22:51 ` [ 66/72] isofs: avoid info leak on export Greg Kroah-Hartman
2013-03-26 22:51 ` [ 67/72] udf: " Greg Kroah-Hartman
2013-03-26 22:51 ` [ 68/72] tools: hv: Netlink source address validation allows DoS Greg Kroah-Hartman
2013-03-26 22:51 ` [ 69/72] i915: initialize CADL in opregion Greg Kroah-Hartman
2013-03-26 22:51 ` [ 70/72] exec: use -ELOOP for max recursion depth Greg Kroah-Hartman
2013-03-26 22:51 ` [ 71/72] rt2x00: error in configurations with mesh support disabled Greg Kroah-Hartman
2013-03-26 22:51 ` [ 72/72] asus-laptop: Do not call HWRS on init Greg Kroah-Hartman
2013-03-27 18:33 ` [ 00/72] 3.4.38-stable review Shuah Khan
2013-03-28 14:17 ` 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=20130326224919.933089686@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tkhai@yandex.ru \
    /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).