summaryrefslogtreecommitdiffstats
path: root/drivers/platform/goldfish
diff options
context:
space:
mode:
authorJun Tian <jun.j.tian@intel.com>2014-05-12 17:54:57 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-05-15 22:19:00 +0200
commit25c72c786cb571cfdf39a31f9f64d143d8623a7a (patch)
treed8f77674c5d8f6bb12cbf6a8e9615b3d0e756379 /drivers/platform/goldfish
parentgoldfish: 64-bit pipe driver for goldfish platform (diff)
downloadlinux-25c72c786cb571cfdf39a31f9f64d143d8623a7a.tar.xz
linux-25c72c786cb571cfdf39a31f9f64d143d8623a7a.zip
goldfish: fix kernel panic when using multiple adb connection
When using multiple adb on 64 bit kernel to transfer data, the goldfish pipe interrupt will crash the kernel. Signed-off-by: Jun Tian <jun.j.tian@intel.com> Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/platform/goldfish')
-rw-r--r--drivers/platform/goldfish/goldfish_pipe.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/platform/goldfish/goldfish_pipe.c b/drivers/platform/goldfish/goldfish_pipe.c
index f33c6e0e7fb0..670b9b94f74b 100644
--- a/drivers/platform/goldfish/goldfish_pipe.c
+++ b/drivers/platform/goldfish/goldfish_pipe.c
@@ -469,6 +469,9 @@ static irqreturn_t goldfish_pipe_interrupt(int irq, void *dev_id)
#ifdef CONFIG_64BIT
channel = (u64)readl(dev->base + PIPE_REG_CHANNEL_HIGH) << 32;
+
+ if (channel == 0)
+ break;
#endif
channel |= readl(dev->base + PIPE_REG_CHANNEL);