summaryrefslogtreecommitdiffstats
path: root/arch/powerpc
diff options
context:
space:
mode:
authorMichael Ellerman <michael@ellerman.id.au>2010-01-12 21:10:56 +0000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2010-01-15 13:26:14 +1100
commitb0ff153cd6228b2502e1c3ce5e226b82ae4e0679 (patch)
treef555a751bcb94a1c5a4d1761966a9fa36c7fedde /arch/powerpc
parentaa8b83cb0b48e3cac58a3b75ad9c556564c5fe9d (diff)
downloadlinux-b0ff153cd6228b2502e1c3ce5e226b82ae4e0679.tar.gz
linux-b0ff153cd6228b2502e1c3ce5e226b82ae4e0679.tar.xz
powerpc/iseries: Initialise on-stack completion
get_viotape_info() declares a vio_waitevent on the stack, which contains a completion, but never initialises the completion. I have no idea how this ever worked, and on recent kernels it causes an oops in handle_tape_event() when we access the non-initialised completion. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Acked-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc')
-rw-r--r--arch/powerpc/platforms/iseries/vio.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/iseries/vio.c b/arch/powerpc/platforms/iseries/vio.c
index 657b72f68493..2aa8b5631beb 100644
--- a/arch/powerpc/platforms/iseries/vio.c
+++ b/arch/powerpc/platforms/iseries/vio.c
@@ -474,6 +474,8 @@ static void __init get_viotape_info(struct device_node *vio_root)
struct vio_waitevent we;
int ret;
+ init_completion(&we.com);
+
ret = viopath_open(viopath_hostLp, viomajorsubtype_tape, 2);
if (ret) {
printk(KERN_WARNING "get_viotape_info: "