Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f36d83a8 authored by Larry Finger's avatar Larry Finger Committed by Greg Kroah-Hartman
Browse files

staging: rtl8187se: Change panic to warn when RF switch turned off

This driver issues a kernel panic over conditions that do not
justify such drastic action. Change these to log entries with
a stack dump.

This patch fixes the system crash reported in
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/674285

.

Signed-off-by: default avatarLarry Finger <Larry.Finger@lwfinger.net>
Reported-and-Tested-by: default avatarRobie Basik <rb-oss-3@justgohome.co.uk>
Cc: Stable <stable@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 61838261
Loading
Loading
Loading
Loading
+22 −8
Original line number Diff line number Diff line
@@ -264,8 +264,12 @@ HwHSSIThreeWire(

			udelay(10);
		}
		if (TryCnt == TC_3W_POLL_MAX_TRY_CNT)
			panic("HwThreeWire(): CmdReg: %#X RE|WE bits are not clear!!\n", u1bTmp);
		if (TryCnt == TC_3W_POLL_MAX_TRY_CNT) {
			printk(KERN_ERR "rtl8187se: HwThreeWire(): CmdReg:"
			       " %#X RE|WE bits are not clear!!\n", u1bTmp);
			dump_stack();
			return 0;
		}

		/* RTL8187S HSSI Read/Write Function */
		u1bTmp = read_nic_byte(dev, RF_SW_CONFIG);
@@ -298,13 +302,23 @@ HwHSSIThreeWire(
				int idx;
				int ByteCnt = nDataBufBitCnt / 8;
								/* printk("%d\n",nDataBufBitCnt); */
				if ((nDataBufBitCnt % 8) != 0)
				panic("HwThreeWire(): nDataBufBitCnt(%d) should be multiple of 8!!!\n",
				if ((nDataBufBitCnt % 8) != 0) {
					printk(KERN_ERR "rtl8187se: "
					       "HwThreeWire(): nDataBufBitCnt(%d)"
					       " should be multiple of 8!!!\n",
					       nDataBufBitCnt);
					dump_stack();
					nDataBufBitCnt += 8;
					nDataBufBitCnt &= ~7;
				}

			       if (nDataBufBitCnt > 64)
				panic("HwThreeWire(): nDataBufBitCnt(%d) should <= 64!!!\n",
			       if (nDataBufBitCnt > 64) {
					printk(KERN_ERR "rtl8187se: HwThreeWire():"
					       " nDataBufBitCnt(%d) should <= 64!!!\n",
					       nDataBufBitCnt);
					dump_stack();
					nDataBufBitCnt = 64;
				}

				for (idx = 0; idx < ByteCnt; idx++)
					write_nic_byte(dev, (SW_3W_DB0+idx), *(pDataBuf+idx));