diff options
Diffstat (limited to 'drivers/target/target_core_rd.c')
-rw-r--r-- | drivers/target/target_core_rd.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/drivers/target/target_core_rd.c b/drivers/target/target_core_rd.c index 20253d04103f..a6e8106abd6f 100644 --- a/drivers/target/target_core_rd.c +++ b/drivers/target/target_core_rd.c | |||
@@ -339,10 +339,14 @@ static void rd_dev_call_rcu(struct rcu_head *p) | |||
339 | 339 | ||
340 | static void rd_free_device(struct se_device *dev) | 340 | static void rd_free_device(struct se_device *dev) |
341 | { | 341 | { |
342 | call_rcu(&dev->rcu_head, rd_dev_call_rcu); | ||
343 | } | ||
344 | |||
345 | static void rd_destroy_device(struct se_device *dev) | ||
346 | { | ||
342 | struct rd_dev *rd_dev = RD_DEV(dev); | 347 | struct rd_dev *rd_dev = RD_DEV(dev); |
343 | 348 | ||
344 | rd_release_device_space(rd_dev); | 349 | rd_release_device_space(rd_dev); |
345 | call_rcu(&dev->rcu_head, rd_dev_call_rcu); | ||
346 | } | 350 | } |
347 | 351 | ||
348 | static struct rd_dev_sg_table *rd_get_sg_table(struct rd_dev *rd_dev, u32 page) | 352 | static struct rd_dev_sg_table *rd_get_sg_table(struct rd_dev *rd_dev, u32 page) |
@@ -554,7 +558,7 @@ static ssize_t rd_set_configfs_dev_params(struct se_device *dev, | |||
554 | struct rd_dev *rd_dev = RD_DEV(dev); | 558 | struct rd_dev *rd_dev = RD_DEV(dev); |
555 | char *orig, *ptr, *opts; | 559 | char *orig, *ptr, *opts; |
556 | substring_t args[MAX_OPT_ARGS]; | 560 | substring_t args[MAX_OPT_ARGS]; |
557 | int ret = 0, arg, token; | 561 | int arg, token; |
558 | 562 | ||
559 | opts = kstrdup(page, GFP_KERNEL); | 563 | opts = kstrdup(page, GFP_KERNEL); |
560 | if (!opts) | 564 | if (!opts) |
@@ -589,7 +593,7 @@ static ssize_t rd_set_configfs_dev_params(struct se_device *dev, | |||
589 | } | 593 | } |
590 | 594 | ||
591 | kfree(orig); | 595 | kfree(orig); |
592 | return (!ret) ? count : ret; | 596 | return count; |
593 | } | 597 | } |
594 | 598 | ||
595 | static ssize_t rd_show_configfs_dev_params(struct se_device *dev, char *b) | 599 | static ssize_t rd_show_configfs_dev_params(struct se_device *dev, char *b) |
@@ -651,6 +655,7 @@ static const struct target_backend_ops rd_mcp_ops = { | |||
651 | .detach_hba = rd_detach_hba, | 655 | .detach_hba = rd_detach_hba, |
652 | .alloc_device = rd_alloc_device, | 656 | .alloc_device = rd_alloc_device, |
653 | .configure_device = rd_configure_device, | 657 | .configure_device = rd_configure_device, |
658 | .destroy_device = rd_destroy_device, | ||
654 | .free_device = rd_free_device, | 659 | .free_device = rd_free_device, |
655 | .parse_cdb = rd_parse_cdb, | 660 | .parse_cdb = rd_parse_cdb, |
656 | .set_configfs_dev_params = rd_set_configfs_dev_params, | 661 | .set_configfs_dev_params = rd_set_configfs_dev_params, |