summaryrefslogtreecommitdiff
path: root/drivers/input/gameport/ns558.c
diff options
context:
space:
mode:
authorAlexander Nyberg <alexn@telia.com>2005-08-10 17:11:36 (GMT)
committerLinus Torvalds <torvalds@g5.osdl.org>2005-08-10 18:03:02 (GMT)
commit22d0def9d09111513f5a8d38583210620f97d710 (patch)
treeb17c0fd6d98afc0af6920d18e096e7ab814189de /drivers/input/gameport/ns558.c
parentc0438174e8272d23fe43a5d3f23d777f5b412e87 (diff)
downloadlinux-fsl-qoriq-22d0def9d09111513f5a8d38583210620f97d710.tar.xz
[PATCH] ns558 list handling fix
Need to use list_for_entry_safe(), as we're removing items during the traversal. list_for_each_entry() uses the first ptr also as an iterator, if you kfree() it slab takes it, might poison it and then you try to use it to iterate to the next object in list. Cc: Vojtech Pavlik <vojtech@suse.cz> Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/input/gameport/ns558.c')
-rw-r--r--drivers/input/gameport/ns558.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/input/gameport/ns558.c b/drivers/input/gameport/ns558.c
index 1ab5f2d..70f0518 100644
--- a/drivers/input/gameport/ns558.c
+++ b/drivers/input/gameport/ns558.c
@@ -275,9 +275,9 @@ static int __init ns558_init(void)
static void __exit ns558_exit(void)
{
- struct ns558 *ns558;
+ struct ns558 *ns558, *safe;
- list_for_each_entry(ns558, &ns558_list, node) {
+ list_for_each_entry_safe(ns558, safe, &ns558_list, node) {
gameport_unregister_port(ns558->gameport);
release_region(ns558->io & ~(ns558->size - 1), ns558->size);
kfree(ns558);