diff options
Diffstat (limited to 'drivers/message/i2o/exec-osm.c')
-rw-r--r-- | drivers/message/i2o/exec-osm.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/drivers/message/i2o/exec-osm.c b/drivers/message/i2o/exec-osm.c index 7bd4d85d0b42..a2350640384b 100644 --- a/drivers/message/i2o/exec-osm.c +++ b/drivers/message/i2o/exec-osm.c | |||
@@ -124,10 +124,10 @@ static void i2o_exec_wait_free(struct i2o_exec_wait *wait) | |||
124 | int i2o_msg_post_wait_mem(struct i2o_controller *c, struct i2o_message *msg, | 124 | int i2o_msg_post_wait_mem(struct i2o_controller *c, struct i2o_message *msg, |
125 | unsigned long timeout, struct i2o_dma *dma) | 125 | unsigned long timeout, struct i2o_dma *dma) |
126 | { | 126 | { |
127 | DECLARE_WAIT_QUEUE_HEAD(wq); | 127 | DECLARE_WAIT_QUEUE_HEAD_ONSTACK(wq); |
128 | struct i2o_exec_wait *wait; | 128 | struct i2o_exec_wait *wait; |
129 | static u32 tcntxt = 0x80000000; | 129 | static u32 tcntxt = 0x80000000; |
130 | long flags; | 130 | unsigned long flags; |
131 | int rc = 0; | 131 | int rc = 0; |
132 | 132 | ||
133 | wait = i2o_exec_wait_alloc(); | 133 | wait = i2o_exec_wait_alloc(); |
@@ -325,13 +325,24 @@ static DEVICE_ATTR(product_id, S_IRUGO, i2o_exec_show_product_id, NULL); | |||
325 | static int i2o_exec_probe(struct device *dev) | 325 | static int i2o_exec_probe(struct device *dev) |
326 | { | 326 | { |
327 | struct i2o_device *i2o_dev = to_i2o_device(dev); | 327 | struct i2o_device *i2o_dev = to_i2o_device(dev); |
328 | int rc; | ||
328 | 329 | ||
329 | i2o_event_register(i2o_dev, &i2o_exec_driver, 0, 0xffffffff); | 330 | rc = i2o_event_register(i2o_dev, &i2o_exec_driver, 0, 0xffffffff); |
331 | if (rc) goto err_out; | ||
330 | 332 | ||
331 | device_create_file(dev, &dev_attr_vendor_id); | 333 | rc = device_create_file(dev, &dev_attr_vendor_id); |
332 | device_create_file(dev, &dev_attr_product_id); | 334 | if (rc) goto err_evtreg; |
335 | rc = device_create_file(dev, &dev_attr_product_id); | ||
336 | if (rc) goto err_vid; | ||
333 | 337 | ||
334 | return 0; | 338 | return 0; |
339 | |||
340 | err_vid: | ||
341 | device_remove_file(dev, &dev_attr_vendor_id); | ||
342 | err_evtreg: | ||
343 | i2o_event_register(to_i2o_device(dev), &i2o_exec_driver, 0, 0); | ||
344 | err_out: | ||
345 | return rc; | ||
335 | }; | 346 | }; |
336 | 347 | ||
337 | /** | 348 | /** |