From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753064Ab0IWF6g (ORCPT ); Thu, 23 Sep 2010 01:58:36 -0400 Received: from cantor2.suse.de ([195.135.220.15]:44878 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751365Ab0IWF6f (ORCPT ); Thu, 23 Sep 2010 01:58:35 -0400 Date: Thu, 23 Sep 2010 07:58:33 +0200 Message-ID: From: Takashi Iwai To: Andrew Morton Cc: Samu Onkalo , =?UTF-8?B?w4lyaWM=?= Piel , Guenter Roeck , linux-kernel@vger.kernel.org, lm-sensors@lm-sensors.org Subject: [PATCH v2] lis3: Fix Oops with NULL platform data User-Agent: Wanderlust/2.15.6 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.7 Emacs/23.1 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The recent addition of threaded irq handler causes a NULL dereference when used with hp_accel driver, which has NULL pdata. Acked-by: Samu Onkalo Acked-by: Acked-by: Guenter Roeck Cc: Signed-off-by: Takashi Iwai --- For 2.6.35/36 kernel v1->v2 NULL-check in caller of request_threaded_irq() instead of checking in threaded irq handler drivers/hwmon/lis3lv02d.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/hwmon/lis3lv02d.c b/drivers/hwmon/lis3lv02d.c index 5e15967..0a24177 100644 --- a/drivers/hwmon/lis3lv02d.c +++ b/drivers/hwmon/lis3lv02d.c @@ -301,7 +301,7 @@ static irqreturn_t lis302dl_interrupt(int irq, void *dummy) wake_up_interruptible(&lis3_dev.misc_wait); kill_fasync(&lis3_dev.async_queue, SIGIO, POLL_IN); out: - if (lis3_dev.whoami == WAI_8B && lis3_dev.idev && + if (lis3_dev.pdata && lis3_dev.whoami == WAI_8B && lis3_dev.idev && lis3_dev.idev->input->users) return IRQ_WAKE_THREAD; return IRQ_HANDLED; @@ -742,7 +742,7 @@ int lis3lv02d_init_device(struct lis3lv02d *dev) * io-apic is not configurable (and generates a warning) but I keep it * in case of support for other hardware. */ - if (dev->whoami == WAI_8B) + if (dev->pdata && dev->whoami == WAI_8B) thread_fn = lis302dl_interrupt_thread1_8b; else thread_fn = NULL; -- 1.7.2.2