From: Adrian McMenamin <adrian@newgolddream.dyndns.info>
To: lkmL <linux-kernel@vger.kernel.org>,
linux-input <linux-input@vger.kernel.org>,
linux-sh <linux-sh@vger.kernel.org>
Cc: Paul Mundt <lethal@linux-sh.org>,
Matt Fleming <matt@console-pimps.org>,
Andrew Morton <akpm@osdl.org>
Subject: [PATCH] sh: maple: Robust checking for errors on maple keyboard initialisation
Date: Sat, 20 Dec 2008 18:25:27 +0000 [thread overview]
Message-ID: <1229797527.6502.18.camel@localhost.localdomain> (raw)
As was pointed out in response to http://lkml.org/lkml/2008/12/19/373
maple drivers were not properly checking for NULL pointers.
This patch fixes this for the keyboard driver already in mainline.
Robust checking for errors on maple keyboard initialisation
Reported-by: Matt Fleming <matt@console-pimps.org>
Signed-off-by: Adrian McMenamin <adrian@mcmen.demon.co.uk>
---
diff --git a/drivers/input/keyboard/maple_keyb.c b/drivers/input/keyboard/maple_keyb.c
index 22f17a5..9133af8 100644
--- a/drivers/input/keyboard/maple_keyb.c
+++ b/drivers/input/keyboard/maple_keyb.c
@@ -159,22 +159,41 @@ static void dc_kbd_callback(struct mapleq *mq)
static int probe_maple_kbd(struct device *dev)
{
- struct maple_device *mdev = to_maple_dev(dev);
- struct maple_driver *mdrv = to_maple_driver(dev->driver);
+ struct maple_device *mdev;
+ struct maple_driver *mdrv;
int i, error;
struct dc_kbd *kbd;
struct input_dev *idev;
- if (!(mdev->function & MAPLE_FUNC_KEYBOARD))
- return -EINVAL;
+ mdev = to_maple_dev(dev);
+ if (!mdev) {
+ error = EINVAL;
+ goto fail;
+ }
+
+ mdrv = to_maple_driver(dev->driver);
+ if (!mdrv) {
+ error = EINVAL;
+ goto fail;
+ }
+
+ if (!(mdev->function & MAPLE_FUNC_KEYBOARD)) {
+ error = EINVAL;
+ goto fail;
+ }
kbd = kzalloc(sizeof(struct dc_kbd), GFP_KERNEL);
- idev = input_allocate_device();
- if (!kbd || !idev) {
- error = -ENOMEM;
+ if (!kbd) {
+ error = ENOMEM;
goto fail;
}
+ idev = input_allocate_device();
+ if (!idev) {
+ error = ENOMEM;
+ goto fail_idev_alloc;
+ }
+
kbd->dev = idev;
memcpy(kbd->keycode, dc_kbd_keycode, sizeof(kbd->keycode));
@@ -195,7 +214,7 @@ static int probe_maple_kbd(struct device *dev)
error = input_register_device(idev);
if (error)
- goto fail;
+ goto fail_register;
/* Maple polling is locked to VBLANK - which may be just 50/s */
maple_getcond_callback(mdev, dc_kbd_callback, HZ/50,
@@ -207,11 +226,13 @@ static int probe_maple_kbd(struct device *dev)
return error;
-fail:
+fail_register:
+ maple_set_drvdata(mdev, NULL);
input_free_device(idev);
+fail_idev_alloc:
kfree(kbd);
- maple_set_drvdata(mdev, NULL);
- return error;
+fail:
+ return -error;
}
static int remove_maple_kbd(struct device *dev)
WARNING: multiple messages have this Message-ID (diff)
From: Adrian McMenamin <adrian@newgolddream.dyndns.info>
To: lkmL <linux-kernel@vger.kernel.org>,
linux-input <linux-input@vger.kernel.org>,
linux-sh <linux-sh@vger.kernel.org>
Cc: Paul Mundt <lethal@linux-sh.org>,
Matt Fleming <matt@console-pimps.org>,
Andrew Morton <akpm@osdl.org>
Subject: [PATCH] sh: maple: Robust checking for errors on maple keyboard
Date: Sat, 20 Dec 2008 18:25:27 +0000 [thread overview]
Message-ID: <1229797527.6502.18.camel@localhost.localdomain> (raw)
As was pointed out in response to http://lkml.org/lkml/2008/12/19/373
maple drivers were not properly checking for NULL pointers.
This patch fixes this for the keyboard driver already in mainline.
Robust checking for errors on maple keyboard initialisation
Reported-by: Matt Fleming <matt@console-pimps.org>
Signed-off-by: Adrian McMenamin <adrian@mcmen.demon.co.uk>
---
diff --git a/drivers/input/keyboard/maple_keyb.c b/drivers/input/keyboard/maple_keyb.c
index 22f17a5..9133af8 100644
--- a/drivers/input/keyboard/maple_keyb.c
+++ b/drivers/input/keyboard/maple_keyb.c
@@ -159,22 +159,41 @@ static void dc_kbd_callback(struct mapleq *mq)
static int probe_maple_kbd(struct device *dev)
{
- struct maple_device *mdev = to_maple_dev(dev);
- struct maple_driver *mdrv = to_maple_driver(dev->driver);
+ struct maple_device *mdev;
+ struct maple_driver *mdrv;
int i, error;
struct dc_kbd *kbd;
struct input_dev *idev;
- if (!(mdev->function & MAPLE_FUNC_KEYBOARD))
- return -EINVAL;
+ mdev = to_maple_dev(dev);
+ if (!mdev) {
+ error = EINVAL;
+ goto fail;
+ }
+
+ mdrv = to_maple_driver(dev->driver);
+ if (!mdrv) {
+ error = EINVAL;
+ goto fail;
+ }
+
+ if (!(mdev->function & MAPLE_FUNC_KEYBOARD)) {
+ error = EINVAL;
+ goto fail;
+ }
kbd = kzalloc(sizeof(struct dc_kbd), GFP_KERNEL);
- idev = input_allocate_device();
- if (!kbd || !idev) {
- error = -ENOMEM;
+ if (!kbd) {
+ error = ENOMEM;
goto fail;
}
+ idev = input_allocate_device();
+ if (!idev) {
+ error = ENOMEM;
+ goto fail_idev_alloc;
+ }
+
kbd->dev = idev;
memcpy(kbd->keycode, dc_kbd_keycode, sizeof(kbd->keycode));
@@ -195,7 +214,7 @@ static int probe_maple_kbd(struct device *dev)
error = input_register_device(idev);
if (error)
- goto fail;
+ goto fail_register;
/* Maple polling is locked to VBLANK - which may be just 50/s */
maple_getcond_callback(mdev, dc_kbd_callback, HZ/50,
@@ -207,11 +226,13 @@ static int probe_maple_kbd(struct device *dev)
return error;
-fail:
+fail_register:
+ maple_set_drvdata(mdev, NULL);
input_free_device(idev);
+fail_idev_alloc:
kfree(kbd);
- maple_set_drvdata(mdev, NULL);
- return error;
+fail:
+ return -error;
}
static int remove_maple_kbd(struct device *dev)
next reply other threads:[~2008-12-20 18:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-20 18:25 Adrian McMenamin [this message]
2008-12-20 18:25 ` [PATCH] sh: maple: Robust checking for errors on maple keyboard Adrian McMenamin
2008-12-21 6:17 ` [PATCH] sh: maple: Robust checking for errors on maple keyboard initialisation Dmitry Torokhov
2008-12-21 6:17 ` Dmitry Torokhov
2008-12-24 16:14 ` Mike Frysinger
2008-12-24 16:59 ` Mike Frysinger
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=1229797527.6502.18.camel@localhost.localdomain \
--to=adrian@newgolddream.dyndns.info \
--cc=akpm@osdl.org \
--cc=lethal@linux-sh.org \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sh@vger.kernel.org \
--cc=matt@console-pimps.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.