X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fmessage%2Fi2o%2Fexec-osm.c;fp=drivers%2Fmessage%2Fi2o%2Fexec-osm.c;h=04e0357443e3472e1a09104ae6399de682ac8672;hb=64ba3f394c830ec48a1c31b53dcae312c56f1604;hp=7bd4d85d0b42db6af28def4072cbd11fbadbec86;hpb=be1e6109ac94a859551f8e1774eb9a8469fe055c;p=linux-2.6.git diff --git a/drivers/message/i2o/exec-osm.c b/drivers/message/i2o/exec-osm.c index 7bd4d85d0..04e035744 100644 --- a/drivers/message/i2o/exec-osm.c +++ b/drivers/message/i2o/exec-osm.c @@ -58,13 +58,6 @@ struct i2o_exec_wait { spinlock_t lock; /* lock before modifying */ }; -/* Work struct needed to handle LCT NOTIFY replies */ -struct i2o_exec_lct_notify_work { - struct work_struct work; /* work struct */ - struct i2o_controller *c; /* controller on which the LCT NOTIFY - was received */ -}; - /* Exec OSM class handling definition */ static struct i2o_class_id i2o_exec_class_id[] = { {I2O_CLASS_EXECUTIVE}, @@ -360,12 +353,9 @@ static int i2o_exec_remove(struct device *dev) * new LCT and if the buffer for the LCT was to small sends a LCT NOTIFY * again, otherwise send LCT NOTIFY to get informed on next LCT change. */ -static void i2o_exec_lct_modified(struct i2o_exec_lct_notify_work *work) +static void i2o_exec_lct_modified(struct i2o_controller *c) { u32 change_ind = 0; - struct i2o_controller *c = work->c; - - kfree(work); if (i2o_device_parse_lct(c) != -EAGAIN) change_ind = c->lct->change_ind + 1; @@ -418,7 +408,7 @@ static int i2o_exec_reply(struct i2o_controller *c, u32 m, return i2o_msg_post_wait_complete(c, m, msg, context); if ((le32_to_cpu(msg->u.head[1]) >> 24) == I2O_CMD_LCT_NOTIFY) { - struct i2o_exec_lct_notify_work *work; + struct work_struct *work; pr_debug("%s: LCT notify received\n", c->name); @@ -426,11 +416,8 @@ static int i2o_exec_reply(struct i2o_controller *c, u32 m, if (!work) return -ENOMEM; - work->c = c; - - INIT_WORK(&work->work, (void (*)(void *))i2o_exec_lct_modified, - work); - queue_work(i2o_exec_driver.event_queue, &work->work); + INIT_WORK(work, (void (*)(void *))i2o_exec_lct_modified, c); + queue_work(i2o_exec_driver.event_queue, work); return 1; }