lkml.org 
[lkml]   [2010]   [Nov]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patches in this message
/
Date
Subject[PATCH 1/2] uml: Safely iterate list of winch handlers in line driver.
From
unregister_winch should use list_for_each_safe, as it can
potentially delete from the list.

Signed-off-by: Will Newton <will.newton@gmail.com>
---
arch/um/drivers/line.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 7f7338c..5f12fef 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -820,12 +820,12 @@ void register_winch_irq(int fd, int tty_fd, int
pid, struct tty_struct *tty,

static void unregister_winch(struct tty_struct *tty)
{
- struct list_head *ele;
+ struct list_head *ele, *next;
struct winch *winch;

spin_lock(&winch_handler_lock);

- list_for_each(ele, &winch_handlers) {
+ list_for_each_safe(ele, next, &winch_handlers) {
winch = list_entry(ele, struct winch, list);
if (winch->tty == tty) {
free_winch(winch, 1);
--
1.7.0.4From e579eb5835a0730177388545520f21d9fbc0de1e Mon Sep 17 00:00:00 2001
From: Will Newton <will.newton@gmail.com>
Date: Sat, 13 Nov 2010 16:30:58 +0000
Subject: [PATCH 1/2] uml: Safely iterate list of winch handlers in line driver.

unregister_winch should use list_for_each_safe, as it can
potentially delete from the list.

Signed-off-by: Will Newton <will.newton@gmail.com>
---
arch/um/drivers/line.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/um/drivers/line.c b/arch/um/drivers/line.c
index 7f7338c..5f12fef 100644
--- a/arch/um/drivers/line.c
+++ b/arch/um/drivers/line.c
@@ -820,12 +820,12 @@ void register_winch_irq(int fd, int tty_fd, int pid, struct tty_struct *tty,

static void unregister_winch(struct tty_struct *tty)
{
- struct list_head *ele;
+ struct list_head *ele, *next;
struct winch *winch;

spin_lock(&winch_handler_lock);

- list_for_each(ele, &winch_handlers) {
+ list_for_each_safe(ele, next, &winch_handlers) {
winch = list_entry(ele, struct winch, list);
if (winch->tty == tty) {
free_winch(winch, 1);
--
1.7.0.4
\
 
 \ /
  Last update: 2010-11-13 18:47    [W:0.017 / U:0.228 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site